Am 14.12.2010 21:20, schrieb Luca Olivetti:
Right now I have a recording going on. If I press the "up" channel past the last channel on the same transponder, vdr is unresponsive for ~30 seconds. I guess that sqlite, with a well formulated query and the right indexes, would take a fraction of a second to realize that there are no more channels in the same transponder.
Actually, what VDR here does is to tune to each and every channel in your channels.conf after the current, until there's a channel that successfully tunes. Doing an additional sql query for each and every channel in your channels.conf wouldn't improve that, I guess.
Two things make this a slow thing: First, the channel list is a linked list, and if you switch from 1000 to 1001, VDR runs through the list starting at 1 until 1001. If 1001 doesn't tune, VDR runs again from 1 to 1002. A C++ map would speed things up a lot, a persistent channel iterator even more.
The second thing is the tuning. "Get next channel on this transponder" sounds simple, but actually deciding whether a channel is tuneable involves 17 different rules that get checked against each device, plus probing the CAM whether the channel can be decoded by the CAM. I think that part is even slower than the whole channel list.
But after all, there are more important things that need work, than speeding up such special cases.
Cheers,
Udo