On 06/07/08 12:43, Udo Richter wrote: > Hi list, > > Is there a proper way to attach another stream receiver to the currently > receiving channel, and - more important - disconnect it properly on > channel change? > > The problem arises from difficulties with the osdteletext plugin. (see > http://www.vdr-portal.de/board/thread.php?threadid=70372 ) > > The problem of the current implementation is that on channel change the > teletext receiving stream is disconnected on > cStatus::ChannelSwitch(dev,0), which is _after_ GetDevice picked the > device for the next channel. And since the teletext stream is still > being received, the primary receiving device (FF card) is 'in use' and > has NeedsDetachReceiver set - so a budget card is preferred for live > viewing. (FF cards normally use no cReceivers at all for live view, so > the device is automatically 'free' on channel switch.) > > (Btw: On 2x budget only systems, it seems as if the live view will > constantly switch between the devices for the same reason, or?) > > Taking a look at the subtitles receiver shows that the subtitles stream > is disconnected at the beginning of cDevice::SetChannel, which is right > before the GetDevice call, thus a FF card is 'free' again at the > GetDevice call. > > If there's no proper way to solve this right now, I could imagine a few > VDR changes that would: > > - Find a way to mark a receiver as being 'live related' and disconnect > it before live channel switching. > > - Find a way to mark a receiver as being 'extremely unimportant', and > don't count them as NeedsDetachReceiver or as Receiving() in that case, > maybe by using -1 as priority. Using a negative priority would be the right way: cReceiver(tChannelID ChannelID, int Priority, int Pid, const int *Pids1 = NULL, const int *Pids2 = NULL, const int *Pids3 = NULL); ///< ... ///< Priority may be any value in the range -99..99. Negative values indicate ///< that this cReceiver may be detached at any time (without blocking the ///< cDevice it is attached to). Why does the osdteletext plugin use a non-negative priority at all? > - Extend GetDevice to ignore some receivers that will be disconnected > afterwards anyway - maybe define 'related' receivers that will > disconnect together. > > - Notify plugins about the upcoming channel switch _before_ the > GetDevice call, so live receivers can be disconnected. Klaus _______________________________________________ vdr mailing list vdr@xxxxxxxxxxx http://www.linuxtv.org/cgi-bin/mailman/listinfo/vdr