[vdr] How to properly attach stream to live view?

Udo Richter udo_richter at gmx.de
Sat Jun 7 12:43:34 CEST 2008

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.

- 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.



More information about the vdr mailing list