[vdr] NIT handling change in 1.4.3-4
Klaus Schmidinger
Klaus.Schmidinger at cadsoft.de
Thu Jan 4 15:03:42 CET 2007
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?
Klaus
More information about the vdr
mailing list