[mythtv] Adding PLP support (DTV_STREAM_ID)
Torbjorn Jansson
torbjorn.jansson at mbox200.swipnet.se
Sat Feb 3 15:55:55 UTC 2018
On 2018-01-29 19:39, David Matthews wrote:
> On 28/01/2018 17:49, Torbjorn Jansson wrote:
>> On 2018-01-28 16:42, Peter Bennett wrote:
>>>
>>>
>>> On 01/28/2018 08:12 AM, Torbjorn Jansson wrote:
>>>> Hello.
>>>>
>>>> i have a few questions but first some background.
>>>>
>>>> several years ago i bought a usb based dvbt2 tuner with the intention to
>>>> replace my pcie card.
>>>> i picked a TT CT2-4650 since it was supposed to have linux support already.
>>>> turned out that was not true since i got a newer version of it with no
>>>> linux support, so with a bit of hacking on the drivers i was able to get it
>>>> working due to the similarities with other cards.
>>>>
>>>> but i quickly realized i could not tune to any dvb-t2 mux, after a lot of
>>>> troubleshooting i gave up and forgot about it.
>>>>
>>>> then a year or so later my dvb tv box broke down and i bought a new one
>>>> (vu+ solo4k) and to my surprise it had the exact same issue.
>>>> after even more troubleshooting i found out i need to set PLP ID to 1 for
>>>> tuning to work on dvb-t2 muxes.
>>>>
>>>> so then i realized that must be the same problem with my ct2-4650 and it was.
>>>> yesterday i got tvheadend working on the usb tuner successfully and thats
>>>> the first time i got the usb tuner to do something useful.
>>>>
>>>> BUT channel scanning is not working, so mux must be setup manualy, that
>>>> includes PLP ID and other paramters.
>>>> so i think the drivers don't do auto detect like my pcie card does.
>>>> and the downside of missing autodetect of plp is that most software dont
>>>> know how to handle plp and this applies to mythtv too.
>>>>
>>>>
>>>>
>>>> so for mythtv to work with this card i need to convince the backend to
>>>> specify plp when tuning.
>>>> so a new mux paramter need to be added to database and then used during
>>>> tuning.
>>>> as i understand it this is done with a property called: DTV_STREAM_ID and i
>>>> need to try to understand better how
>>>> libs/libmythtv/recorders/dvbchannel.cpp works.
>>>>
>>>> can someone give me any pointers about this?
>>>> to start with i'm happy with a proof of concept hack that sets
>>>> DTV_STREAM_ID to 1 on all dvb-t2 tuning attempts, then if it works i can
>>>> try and get a proper patch for it.
>>>>
>>>> i probably wont be able to get the mux editor or settings working since i'm
>>>> not familiar with how the setup gui works.
>>>> but if i get a new optional mux setting for plp in place then i'm happy.
>>>>
>
> I wrote the original patch to add support for DVB-T2
> https://code.mythtv.org/trac/ticket/12342 . In the UK we don't use PLP or it
> may have been that the tuner I had auto-detected but either way there was no
> need to add PLP support at the time. If you follow that link it should
> indicate roughly where to add the DTV_STREAM_ID property. It's a long time
> since I looked at this but let me know if I can help.
>
> David
thanks.
see below for a quick proof of concept patch that's mostly a hack to check that
it works.
with this i can get the hd channels to work.
now i need to make this into a proper patch by adding a new column to
dtv_multiplext table and reading that value in.
plus make sure it defaults to off, for example by using -1 to indicate it
should not be used.
---
diff --git a/mythtv/libs/libmythtv/recorders/dvbchannel.cpp
b/mythtv/libs/libmythtv/recorders/dvbchannel.cpp
index dbdf7adc11..f327cc3750 100644
--- a/mythtv/libs/libmythtv/recorders/dvbchannel.cpp
+++ b/mythtv/libs/libmythtv/recorders/dvbchannel.cpp
@@ -553,7 +553,7 @@ static struct dtv_properties *dtvmultiplex_to_dtvproperties(
if (!cmdseq)
return NULL;
- cmdseq->props = (struct dtv_property*) calloc(12, sizeof(*(cmdseq->props)));
+ cmdseq->props = (struct dtv_property*) calloc(13, sizeof(*(cmdseq->props)));
if (!(cmdseq->props))
{
free(cmdseq);
@@ -609,6 +609,12 @@ static struct dtv_properties *dtvmultiplex_to_dtvproperties(
cmdseq->props[c].cmd = DTV_HIERARCHY;
cmdseq->props[c++].u.data = tuning.hierarchy;
}
+ //PLP test
+ if (tuner_type == DTVTunerType::kTunerTypeDVBT2)
+ {
+ cmdseq->props[c].cmd = DTV_STREAM_ID;
+ cmdseq->props[c++].u.data = 1;
+ }
if (tuning.mod_sys == DTVModulationSystem::kModulationSystem_DVBS2)
{
--
More information about the mythtv-dev
mailing list