LinuxTV Patchwork French DVB-T Channel IDs vs. EIT Channel IDs

login
register
mail settings
Submitter Klaus Schmidinger
Date Feb. 28, 2018, 10:01 a.m.
Message ID <31220933-dda2-5e51-7e61-c3655197dddb@tvdr.de>
Download mbox | patch
Permalink /patch/47490/
State New
Headers show

Comments

Klaus Schmidinger - Feb. 28, 2018, 10:01 a.m.
On 27.02.2018 17:58, Patrick Boettcher wrote:
> On Tue, 27 Feb 2018 16:54:35 +0100
> Klaus Schmidinger <Klaus.Schmidinger@tvdr.de> wrote:
> 
>> Hello Patrick,
>> 
>> your scan doesn't contain the NIT, which is where the transponder
>> innformation is broadcast. Can you scan that, too, please?
> 
> Hi Klaus,
> 
> NIT attached (from another multiplex with the same symptoms).


     Transport_stream_ID: 1 (0x0001)
     Original_network_ID: 8442 (0x20fa)  [= >>ERROR: not (yet) defined... Report!<<]
     reserved_1: 15 (0x0f)
     Transport_descriptor_length: 205 (0x00cd)

             DVB-DescriptorTag: 90 (0x5a)  [= terrestrial_delivery_system_descriptor]
             descriptor_length: 11 (0x0b)
             Center frequency: 0xffffffff (= 42949672.095 kHz)

I assume this is the problem: the NIT doesn't contain a proper frequency entry.
To avoid problems with NITs that are broadcast on other transponders, VDR checks
whether the frequency contained in the NIT is the same as the transponder that
is currently broadcast. This check will always fail in your case.

For a quick test whether my assumtion is correct, please try the following
patch:


Klaus
Patrick Boettcher - March 1, 2018, 9:22 a.m.
On Wed, 28 Feb 2018 11:01:23 +0100
Klaus Schmidinger <Klaus.Schmidinger@tvdr.de> wrote:

> On 27.02.2018 17:58, Patrick Boettcher wrote:
> > On Tue, 27 Feb 2018 16:54:35 +0100
> > Klaus Schmidinger <Klaus.Schmidinger@tvdr.de> wrote:
> >   
> >> Hello Patrick,
> >> 
> >> your scan doesn't contain the NIT, which is where the transponder
> >> innformation is broadcast. Can you scan that, too, please?  
> > 
> > Hi Klaus,
> > 
> > NIT attached (from another multiplex with the same symptoms).  
> 
>              DVB-DescriptorTag: 90 (0x5a)  [=
> terrestrial_delivery_system_descriptor] descriptor_length: 11 (0x0b)
>              Center frequency: 0xffffffff (= 42949672.095 kHz)
> 
> @@ -219,6 +219,8 @@
>                    cDvbTransponderParameters dtp;
>                    int Source = cSource::FromData(cSource::stTerr);
>                    int Frequency = Frequencies[0] =
> sd->getFrequency() * 10;
> +                 Frequency = Transponder() * 1000000;//XXX
> +                 dsyslog("Frequency = %08X, Transponder = %d",
> sd->getFrequency(), Transponder());//XXX static int Bandwidths[] =
> { 8000000, 7000000, 6000000, 5000000, 0, 0, 0, 0 };
> dtp.SetBandwidth(Bandwidths[sd->getBandwidth()]); static int
> Constellations[] = { QPSK, QAM_16, QAM_64, QAM_AUTO };

It works. I had to have VDR recreate the channels because it was mixing
things up with the already existing ones.

As to why the frequency is set to "-10" I don't know (yet), but I
remember it has always been like this since 2005. 

Initial tuning files have always contained all active frequencies for
their region, because the NIT did not set the center frequencies
correctly.

It might be because the multiplexed transport streams are generated
centrally and then distributed to all the base-stations where they are
emitted as-is but on different frequencies depending on the region.

What can we do to get this upstream?

Thanks for your help,
--
Patrick.
Patrick Boettcher - March 1, 2018, 10:32 a.m.
On Thu, 1 Mar 2018 10:22:10 +0100
Patrick Boettcher <patrick.boettcher@posteo.de> wrote:

> On Wed, 28 Feb 2018 11:01:23 +0100
> Klaus Schmidinger <Klaus.Schmidinger@tvdr.de> wrote:
> 
> > On 27.02.2018 17:58, Patrick Boettcher wrote:  
> > > On Tue, 27 Feb 2018 16:54:35 +0100
> > > Klaus Schmidinger <Klaus.Schmidinger@tvdr.de> wrote:
> > >     
> > >> Hello Patrick,
> > >> 
> > >> your scan doesn't contain the NIT, which is where the transponder
> > >> innformation is broadcast. Can you scan that, too, please?    
> > > 
> > > Hi Klaus,
> > > 
> > > NIT attached (from another multiplex with the same symptoms).    
> > 
> >              DVB-DescriptorTag: 90 (0x5a)  [=
> > terrestrial_delivery_system_descriptor] descriptor_length: 11 (0x0b)
> >              Center frequency: 0xffffffff (= 42949672.095 kHz)
> > 
> > @@ -219,6 +219,8 @@
> >                    cDvbTransponderParameters dtp;
> >                    int Source = cSource::FromData(cSource::stTerr);
> >                    int Frequency = Frequencies[0] =
> > sd->getFrequency() * 10;
> > +                 Frequency = Transponder() * 1000000;//XXX
> > +                 dsyslog("Frequency = %08X, Transponder = %d",
> > sd->getFrequency(), Transponder());//XXX static int Bandwidths[] =
> > { 8000000, 7000000, 6000000, 5000000, 0, 0, 0, 0 };
> > dtp.SetBandwidth(Bandwidths[sd->getBandwidth()]); static int
> > Constellations[] = { QPSK, QAM_16, QAM_64, QAM_AUTO };  
> 
> It works. I had to have VDR recreate the channels because it was
> mixing things up with the already existing ones.

I called victory too early: something (channel-updates?) is overwriting
the frequencies and modulation-data for all DVB-T-channels.

Please see the attached log-file.

--
Patrick.
Klaus Schmidinger - March 1, 2018, 10:38 a.m.
On 01.03.2018 10:22, Patrick Boettcher wrote:
> On Wed, 28 Feb 2018 11:01:23 +0100
> Klaus Schmidinger <Klaus.Schmidinger@tvdr.de> wrote:
> 
>> On 27.02.2018 17:58, Patrick Boettcher wrote:
>> > On Tue, 27 Feb 2018 16:54:35 +0100
>> > Klaus Schmidinger <Klaus.Schmidinger@tvdr.de> wrote:
>> >   
>> >> Hello Patrick,
>> >> 
>> >> your scan doesn't contain the NIT, which is where the transponder
>> >> innformation is broadcast. Can you scan that, too, please?  
>> > 
>> > Hi Klaus,
>> > 
>> > NIT attached (from another multiplex with the same symptoms).  
>> 
>>              DVB-DescriptorTag: 90 (0x5a)  [=
>> terrestrial_delivery_system_descriptor] descriptor_length: 11 (0x0b)
>>              Center frequency: 0xffffffff (= 42949672.095 kHz)
>> 
>> @@ -219,6 +219,8 @@
>>                    cDvbTransponderParameters dtp;
>>                    int Source = cSource::FromData(cSource::stTerr);
>>                    int Frequency = Frequencies[0] =
>> sd->getFrequency() * 10;
>> +                 Frequency = Transponder() * 1000000;//XXX
>> +                 dsyslog("Frequency = %08X, Transponder = %d",
>> sd->getFrequency(), Transponder());//XXX static int Bandwidths[] =
>> { 8000000, 7000000, 6000000, 5000000, 0, 0, 0, 0 };
>> dtp.SetBandwidth(Bandwidths[sd->getBandwidth()]); static int
>> Constellations[] = { QPSK, QAM_16, QAM_64, QAM_AUTO };
> 
> It works. I had to have VDR recreate the channels because it was mixing
> things up with the already existing ones.
> 
> As to why the frequency is set to "-10" I don't know (yet), but I
> remember it has always been like this since 2005.

Can you please send me the log line that was generated by the added dsyslog() statement?

> Initial tuning files have always contained all active frequencies for
> their region, because the NIT did not set the center frequencies
> correctly.
> 
> It might be because the multiplexed transport streams are generated
> centrally and then distributed to all the base-stations where they are
> emitted as-is but on different frequencies depending on the region.
> 
> What can we do to get this upstream?

I suggest checking sd->getFrequency() against 0xFFFFFFFF and if it has that value,
use Transponder() * 1000000 instead. I'd just like to see whether the log really
confirms this.

Klaus
Patrick Boettcher - March 1, 2018, 10:39 a.m.
On Thu, 1 Mar 2018 10:22:10 +0100
Patrick Boettcher <patrick.boettcher@posteo.de> wrote:

> On Wed, 28 Feb 2018 11:01:23 +0100
> Klaus Schmidinger <Klaus.Schmidinger@tvdr.de> wrote:
> 
> > On 27.02.2018 17:58, Patrick Boettcher wrote:  
> > > On Tue, 27 Feb 2018 16:54:35 +0100
> > > Klaus Schmidinger <Klaus.Schmidinger@tvdr.de> wrote:
> > >     
> > >> Hello Patrick,
> > >> 
> > >> your scan doesn't contain the NIT, which is where the transponder
> > >> innformation is broadcast. Can you scan that, too, please?    
> > > 
> > > Hi Klaus,
> > > 
> > > NIT attached (from another multiplex with the same symptoms).    
> > 
> >              DVB-DescriptorTag: 90 (0x5a)  [=
> > terrestrial_delivery_system_descriptor] descriptor_length: 11 (0x0b)
> >              Center frequency: 0xffffffff (= 42949672.095 kHz)
> > 
> > @@ -219,6 +219,8 @@
> >                    cDvbTransponderParameters dtp;
> >                    int Source = cSource::FromData(cSource::stTerr);
> >                    int Frequency = Frequencies[0] =
> > sd->getFrequency() * 10;
> > +                 Frequency = Transponder() * 1000000;//XXX
> > +                 dsyslog("Frequency = %08X, Transponder = %d",
> > sd->getFrequency(), Transponder());//XXX static int Bandwidths[] =
> > { 8000000, 7000000, 6000000, 5000000, 0, 0, 0, 0 };
> > dtp.SetBandwidth(Bandwidths[sd->getBandwidth()]); static int
> > Constellations[] = { QPSK, QAM_16, QAM_64, QAM_AUTO };  
> 
> It works. I had to have VDR recreate the channels because it was
> mixing things up with the already existing ones.
> 
> As to why the frequency is set to "-10" I don't know (yet), but I
> remember it has always been like this since 2005. 

Here is the explanation why the frequency field in French DVB-T shall
not be used, (cf. CSA-Profil-de-signalisationv3.4.pdf, page 30,
terrestrial_delivery_system_descriptor):

  le terrestrial delivery_system_descriptor diffusés dans la NIT
  correspond au cas général. En effet, la NIT ne décrit pas de façon
  exhaustive le réseau actuel d’émetteurs, mais l’organisation des
  services des multiplex diffusés : ainsi les fréquences des multiplex
  renseignées par le paramètre centre_frequency ont une valeur fixée à
  0xFFFFFFFF. Ces fréquences ne sont pas à prendre en compte

It says, grosso modo, that the NIT does not describe the network in an
exhaustive manner, but it does for services. Le field centre_frequency
contains the value 0xFFFFFFFF and is not to be taken into consideration.

--
Patrick.
Klaus Schmidinger - March 1, 2018, 10:41 a.m.
On 01.03.2018 11:39, Patrick Boettcher wrote:
> On Thu, 1 Mar 2018 10:22:10 +0100
> Patrick Boettcher <patrick.boettcher@posteo.de> wrote:
> 
>> On Wed, 28 Feb 2018 11:01:23 +0100
>> Klaus Schmidinger <Klaus.Schmidinger@tvdr.de> wrote:
>> 
>> > On 27.02.2018 17:58, Patrick Boettcher wrote:  
>> > > On Tue, 27 Feb 2018 16:54:35 +0100
>> > > Klaus Schmidinger <Klaus.Schmidinger@tvdr.de> wrote:
>> > >     
>> > >> Hello Patrick,
>> > >> 
>> > >> your scan doesn't contain the NIT, which is where the transponder
>> > >> innformation is broadcast. Can you scan that, too, please?    
>> > > 
>> > > Hi Klaus,
>> > > 
>> > > NIT attached (from another multiplex with the same symptoms).    
>> > 
>> >              DVB-DescriptorTag: 90 (0x5a)  [=
>> > terrestrial_delivery_system_descriptor] descriptor_length: 11 (0x0b)
>> >              Center frequency: 0xffffffff (= 42949672.095 kHz)
>> > 
>> > @@ -219,6 +219,8 @@
>> >                    cDvbTransponderParameters dtp;
>> >                    int Source = cSource::FromData(cSource::stTerr);
>> >                    int Frequency = Frequencies[0] =
>> > sd->getFrequency() * 10;
>> > +                 Frequency = Transponder() * 1000000;//XXX
>> > +                 dsyslog("Frequency = %08X, Transponder = %d",
>> > sd->getFrequency(), Transponder());//XXX static int Bandwidths[] =
>> > { 8000000, 7000000, 6000000, 5000000, 0, 0, 0, 0 };
>> > dtp.SetBandwidth(Bandwidths[sd->getBandwidth()]); static int
>> > Constellations[] = { QPSK, QAM_16, QAM_64, QAM_AUTO };  
>> 
>> It works. I had to have VDR recreate the channels because it was
>> mixing things up with the already existing ones.
>> 
>> As to why the frequency is set to "-10" I don't know (yet), but I
>> remember it has always been like this since 2005. 
> 
> Here is the explanation why the frequency field in French DVB-T shall
> not be used, (cf. CSA-Profil-de-signalisationv3.4.pdf, page 30,
> terrestrial_delivery_system_descriptor):
> 
>    le terrestrial delivery_system_descriptor diffusés dans la NIT
>    correspond au cas général. En effet, la NIT ne décrit pas de façon
>    exhaustive le réseau actuel d’émetteurs, mais l’organisation des
>    services des multiplex diffusés : ainsi les fréquences des multiplex
>    renseignées par le paramètre centre_frequency ont une valeur fixée à
>    0xFFFFFFFF. Ces fréquences ne sont pas à prendre en compte
> 
> It says, grosso modo, that the NIT does not describe the network in an
> exhaustive manner, but it does for services. Le field centre_frequency
> contains the value 0xFFFFFFFF and is not to be taken into consideration.

My last message was sent before I received your log.
I'll take a further look...

Klaus
Patrick Boettcher - March 1, 2018, 10:44 a.m.
On Thu, 1 Mar 2018 11:38:24 +0100
Klaus Schmidinger <Klaus.Schmidinger@tvdr.de> wrote:
> >>              DVB-DescriptorTag: 90 (0x5a)  [=
> >> terrestrial_delivery_system_descriptor] descriptor_length: 11
> >> (0x0b) Center frequency: 0xffffffff (= 42949672.095 kHz)
> >> 
> >> @@ -219,6 +219,8 @@
> >>                    cDvbTransponderParameters dtp;
> >>                    int Source = cSource::FromData(cSource::stTerr);
> >>                    int Frequency = Frequencies[0] =
> >> sd->getFrequency() * 10;
> >> +                 Frequency = Transponder() * 1000000;//XXX
> >> +                 dsyslog("Frequency = %08X, Transponder = %d",
> >> sd->getFrequency(), Transponder());//XXX static int Bandwidths[] =
> >> { 8000000, 7000000, 6000000, 5000000, 0, 0, 0, 0 };
> >> dtp.SetBandwidth(Bandwidths[sd->getBandwidth()]); static int
> >> Constellations[] = { QPSK, QAM_16, QAM_64, QAM_AUTO };  
> > 
> > It works. I had to have VDR recreate the channels because it was
> > mixing things up with the already existing ones.
> > 
> > As to why the frequency is set to "-10" I don't know (yet), but I
> > remember it has always been like this since 2005.  
> 
> Can you please send me the log line that was generated by the added
> dsyslog() statement?

It does:

Mar  1 11:28:43 vdr vdr: [4096] Frequency = FFFFFFFF, Transponder = 586

--
Patrick.
Klaus Schmidinger - March 9, 2018, 10:30 a.m.
On 01.03.2018 10:22, Patrick Boettcher wrote:
> On Wed, 28 Feb 2018 11:01:23 +0100
> Klaus Schmidinger <Klaus.Schmidinger@tvdr.de> wrote:
> 
>> On 27.02.2018 17:58, Patrick Boettcher wrote:
>> > On Tue, 27 Feb 2018 16:54:35 +0100
>> > Klaus Schmidinger <Klaus.Schmidinger@tvdr.de> wrote:
>> >   
>> >> Hello Patrick,
>> >> 
>> >> your scan doesn't contain the NIT, which is where the transponder
>> >> innformation is broadcast. Can you scan that, too, please?  
>> > 
>> > Hi Klaus,
>> > 
>> > NIT attached (from another multiplex with the same symptoms).  
>> 
>>              DVB-DescriptorTag: 90 (0x5a)  [=
>> terrestrial_delivery_system_descriptor] descriptor_length: 11 (0x0b)
>>              Center frequency: 0xffffffff (= 42949672.095 kHz)
>> 
>> @@ -219,6 +219,8 @@
>>                    cDvbTransponderParameters dtp;
>>                    int Source = cSource::FromData(cSource::stTerr);
>>                    int Frequency = Frequencies[0] =
>> sd->getFrequency() * 10;
>> +                 Frequency = Transponder() * 1000000;//XXX
>> +                 dsyslog("Frequency = %08X, Transponder = %d",
>> sd->getFrequency(), Transponder());//XXX static int Bandwidths[] =
>> { 8000000, 7000000, 6000000, 5000000, 0, 0, 0, 0 };
>> dtp.SetBandwidth(Bandwidths[sd->getBandwidth()]); static int
>> Constellations[] = { QPSK, QAM_16, QAM_64, QAM_AUTO };
> 
> It works. I had to have VDR recreate the channels because it was mixing
> things up with the already existing ones.
> 
> As to why the frequency is set to "-10" I don't know (yet), but I
> remember it has always been like this since 2005.
> 
> Initial tuning files have always contained all active frequencies for
> their region, because the NIT did not set the center frequencies
> correctly.
> 
> It might be because the multiplexed transport streams are generated
> centrally and then distributed to all the base-stations where they are
> emitted as-is but on different frequencies depending on the region.
> 
> What can we do to get this upstream?

I'm afraid I don't see how this case can be handled correctly.

Maybe somebody else has an idea?

Klaus
Patrick Boettcher - March 9, 2018, 10:51 a.m.
On Fri, 9 Mar 2018 11:30:36 +0100
Klaus Schmidinger <Klaus.Schmidinger@tvdr.de> wrote:

> On 01.03.2018 10:22, Patrick Boettcher wrote:
> > On Wed, 28 Feb 2018 11:01:23 +0100
> > Klaus Schmidinger <Klaus.Schmidinger@tvdr.de> wrote:
> >   
> >> On 27.02.2018 17:58, Patrick Boettcher wrote:  
> >> > On Tue, 27 Feb 2018 16:54:35 +0100
> >> > Klaus Schmidinger <Klaus.Schmidinger@tvdr.de> wrote:
> >> >     
> >> >> Hello Patrick,
> >> >> 
> >> >> your scan doesn't contain the NIT, which is where the
> >> >> transponder innformation is broadcast. Can you scan that, too,
> >> >> please?    
> >> > 
> >> > Hi Klaus,
> >> > 
> >> > NIT attached (from another multiplex with the same symptoms).    
> >> 
> >>              DVB-DescriptorTag: 90 (0x5a)  [=
> >> terrestrial_delivery_system_descriptor] descriptor_length: 11
> >> (0x0b) Center frequency: 0xffffffff (= 42949672.095 kHz)
> >> 
> >> @@ -219,6 +219,8 @@
> >>                    cDvbTransponderParameters dtp;
> >>                    int Source = cSource::FromData(cSource::stTerr);
> >>                    int Frequency = Frequencies[0] =
> >> sd->getFrequency() * 10;
> >> +                 Frequency = Transponder() * 1000000;//XXX
> >> +                 dsyslog("Frequency = %08X, Transponder = %d",
> >> sd->getFrequency(), Transponder());//XXX static int Bandwidths[] =
> >> { 8000000, 7000000, 6000000, 5000000, 0, 0, 0, 0 };
> >> dtp.SetBandwidth(Bandwidths[sd->getBandwidth()]); static int
> >> Constellations[] = { QPSK, QAM_16, QAM_64, QAM_AUTO };  
> > 
> > It works. I had to have VDR recreate the channels because it was
> > mixing things up with the already existing ones.
> > 
> > As to why the frequency is set to "-10" I don't know (yet), but I
> > remember it has always been like this since 2005.
> > 
> > Initial tuning files have always contained all active frequencies
> > for their region, because the NIT did not set the center frequencies
> > correctly.
> > 
> > It might be because the multiplexed transport streams are generated
> > centrally and then distributed to all the base-stations where they
> > are emitted as-is but on different frequencies depending on the
> > region.
> > 
> > What can we do to get this upstream?  
> 
> I'm afraid I don't see how this case can be handled correctly.
> 
> Maybe somebody else has an idea?

One approach might be to ignore frequencies for DVB-T channels update
during NIT parsing (in France only?).

From my experiences with DVB-T SetTopBoxes using the NIT for
new channel-discovery is rarely done. No customer of my ex-employer was
using it - scanning was entirely based on continuous frequency-band
scanning with a spare demod. 

That would be my idea. But I don't know whether this can be easily
applied to VDR.

--
Patrick.

Patch

--- nit.c       2016-12-23 15:16:59.000000000 +0100
+++ nit.c       2018-02-28 10:58:38.595483737 +0100
@@ -22,7 +22,7 @@ 
  #define MAXNETWORKNAME Utf8BufSize(256)

  // Set to 'true' for debug output:
-static bool DebugNit = false;
+static bool DebugNit = true;//XXX false;

  #define dbgnit(a...) if (DebugNit) fprintf(stderr, a)

@@ -219,6 +219,8 @@ 
                   cDvbTransponderParameters dtp;
                   int Source = cSource::FromData(cSource::stTerr);
                   int Frequency = Frequencies[0] = sd->getFrequency() * 10;
+                 Frequency = Transponder() * 1000000;//XXX
+                 dsyslog("Frequency = %08X, Transponder = %d", sd->getFrequency(), Transponder());//XXX
                   static int Bandwidths[] = { 8000000, 7000000, 6000000, 5000000, 0, 0, 0, 0 };
                   dtp.SetBandwidth(Bandwidths[sd->getBandwidth()]);
                   static int Constellations[] = { QPSK, QAM_16, QAM_64, QAM_AUTO };

Privacy Policy