NIT handling change in 1.4.3-4

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Klaus Schmidinger wrote:
> Anssi Hannula wrote:
>> NIT handling was changed in 1.4.3-4 by adding an additional check if
>> we're actually receiving this transponder. See the current code:
>>
>>>                  for (cChannel *Channel = Channels.First(); Channel; Channel = Channels.Next(Channel)) {
>>>                      if (!Channel->GroupSep() && Channel->Source() == Source && Channel->Nid() == ts.getOriginalNetworkId() && Channel->Tid() == ts.getTransportStreamId()) {
>>>                         if (Setup.UpdateChannels >= 5) {
>>>                            if (ISTRANSPONDER(Frequency / 1000, Transponder())) { // only modify channels if we're actually receiving this transponder
>> The above check was added. However, the variable 'Frequency' may not
>> always be the current transponder frequency. The current transponder
>> could also be in the Frequencies[] array. This causes the channel update
>> to be always disabled.
>>
>> Below we search the array if the transponder of the 'Channel' is there:
>>
>>>                               if (!ISTRANSPONDER(Frequency / 1000, Channel->Transponder())) {
>>>                                  for (int n = 0; n < NumFrequencies; n++) {
>>>                                      if (ISTRANSPONDER(Frequencies[n] / 1000, Channel->Transponder())) {
>>>                                         Frequency = Frequencies[n];
>>>                                         break;
>>>                                         }
>>>                                      }
>>>                                  }
>> Maybe the new check should be moved here, so that it uses the new
>> correct 'Frequency' that was found from Frequencies[] in the loop above?
>>
>>>                               Channel->SetCableTransponderData(Source, Frequency, Modulation, SymbolRate, CodeRate);
>>>                               }
>>>                            }
>>>                         found = true;
>>>                         }
>>>                      }
> 
> Can you please provide a (tested) patch?

Attached.

I tested by messing up transponder parameters of one channel. Without
the patch, the channel was not fixed by VDR. With the patch, the
transponder data was correctly updated back to the correct one.

-- 
Anssi Hannula

-------------- next part --------------
A non-text attachment was scrubbed...
Name: vdr-1.4.6-nit.diff
Type: text/x-patch
Size: 6477 bytes
Desc: not available
Url : http://www.linuxtv.org/pipermail/vdr/attachments/20070421/e8063859/vdr-1.4.6-nit.bin

[Index of Archives]     [Linux Media]     [Asterisk]     [DCCP]     [Netdev]     [Xorg]     [Util Linux NG]     [Xfree86]     [Big List of Linux Books]     [Fedora Users]     [Fedora Women]     [ALSA Devel]     [Linux USB]

  Powered by Linux