On 5/27/06, Klaus Schmidinger <Klaus.Schmidinger@xxxxxxxxxx> wrote: > Klaus Schmidinger wrote: > > Anssi Hannula wrote: > >> ... > >> Okay, attached is a patch for nit.c that checks for all the frequencies > >> in frequency_list_descriptor for the channel's frequency and if found, > >> use it so that channel's frequency is not changed. > >> > >> Also in the detection of new transponders all frequencies are added for > >> the EITscanner. > >> > >> I tested it by removing a transponder from channels.conf, and VDR found > >> it again (though it took a while, as there are *many* frequencies in the > >> frequency_list_descriptor). This too hasn't been working before on the > >> DVB-T network of Finland. > >> ... > > Please test whether the attached version of the patch still works. > Since none of the satellites I can receive uses the FrequencyListDescriptor, > and I don't have cable or terrestrial signals, I can't test it myself. > > If it's ok like this for you, I would include it in tomorrow's > maintenance patch. > > Note that I had to make a small change to libsi/si.h in order to > avoid a compiler warning. Okay, I'll be able to test in few hours. But I can see few issues in the patch: > + if (fld) { > + int n = 1; > + for (SI::Loop::Iterator it3; fld->frequencies.hasNext(it3); ) { > + int f = fld->frequencies.getNext(it3); > + int ct = fld->getCodingType(); This can be moved above the loop, as the descriptor has a common coding_type. > + if (ct < 3) > + f = BCD2INT(f) / (ct == 1 ? 100 : 10); > + Frequencies[n++] = f; You miss two ct cases: - when ct == 3, frequency should be multiplied with 10. - when ct == 0, coding_type is undefined, so I guess we should disregard the frequency_list_descriptor then. > + } > + }