Luca Olivetti wrote:
Thomas Bergwinkl wrote:
When you try to scan these transponders with the scan
utility of the dvb
driver, you can see filter timeouts. For example 12034V: WARNING: filter timeout pid 0x0458 WARNING: filter timeout pid 0x0453 WARNING: filter timeout pid 0x044f WARNING: filter timeout pid 0x0459 WARNING: filter timeout pid 0x045a WARNING: filter timeout pid 0x045b WARNING: filter timeout pid 0x0452
does it mean the broadcaster is doing something wrong or is it the driver?
I'm not absolutely sure. But I think the problem is that a pid for pmt is assigned in pat, but this pmt is not in the stream. So I think it's the broadcaster's fault.
Of course you can count this timeouts in pat.c so that numPmtEntries reaches num, but every timeout lasts 10 seconds
(PMT_SCAN_TIMEOUT 10).
So scanning 12034V lasts more than 70 seconds!
BTW, since I added the debug printf, I noticed that while the dish is moving it's getting the pmt data from a different satellite, so in that case it will get more than num ;-) It doesn't matter for the channel scan function (the dish is not moving) but is one more thing to take care of to make vdr behave with a steerable dish. Perhaps instead of fiddling with Setup.UpdateChannels in my plugin when the dish is moving I should call sectionHandler->SetStatus(false) ... bummer, it's private :-(
I think to speed up the channel scan it would be better if
the plugin
set the filters by itself.
But that wouldn't solve the filter timeout problem, would it? And it means that the plugin should duplicate most of the scanning functions already presents in vdr. I hate to do that ;-)
Yes, in this case the plugin has to duplicate parts of vdr. (Copy and Paste :-) ) But I think it can solve the problem with the timeout. vdr sets in pat.c the filter for pmts one by one (always only one filter for pmt is set). In the plugin I can set e.g 10 filters simultaneous.
I tried to extend the channelscan plugin to do this. Scanning transponders is really fast, but there is still a problem
that on some
transponders many newly found channels get no pids.
So that's no really different from using only the sdt data :-( (channel scan was really fast too)
I think I found the problem, now there are pids for almost all channels and scanning is still fast :-)
But I think it is a promising attempt and I hope I can figure out where the remaining problems are.
Well, if you find a good solution it should be possible to apply it also in pat.c, shouldn't it?
I think pat.c is allright. When scanning in the backround there is time enough to set one filter by another.
I attached a modified version of the channelscan plugin (most of filter.c is copied from sdt.c and pat.c). Perhaps you want to try it out. It works quite well, I just scanned the entire hotbird satellite in about 5 minutes (found 1358 channels).
Thomas