Bug #9
closedosdteletext forces FF cards into transfer mode
100%
Description
On a system with a FF card and a budget card, osdteletext may force VDR to use transfer mode from the budget card on channel switch.
Reason: The teletext stream gets disconnected after deciding which device to use for live viewing. While deciding in cDevice::GetDevice, the primary device reports NeedsDetachReceivers, and by that blocks the re-use of the primary device.
Solution: None known that works without modifying VDR code.
Solutions that require VDR changes:
- Notify plugins before switching the live view channel so they can detach before the GetDevice call.
- Mark receivers to be 'live-related' and don't count them as NeedsDetachReceivers.
- Don't consider receivers with low priority (-1 ?) as relevant for NeedsDetachReceivers, and lower the priority that osdteletext uses.
Cheers,
Udo
Updated by etobi almost 16 years ago
I don't see a solution outside of VDR either. It makes sense, to track such issues here for VDR as well, so I created bug #10 and related to this one.
Have you already informed Klaus about this issue?
Updated by anbr over 12 years ago
Suggest from ML:
http://www.linuxtv.org/pipermail/vdr/2012-March/025895.html
To actually make use of the new MsgChannelSwitch behavior of VDR 1.7.25,
I've quickly hacked an experimental patch to use this to detach the old
receiver before VDR attempts to switch channel. With this, channel
switching should not jump between receivers for FF cards, avoiding
transfer mode whenever possible. Please test.
--- osdteletext/txtrecv.c.bak 2012-03-03 15:11:53.000000000 +0100 +++ osdteletext/txtrecv.c 2012-03-03 15:19:27.000000000 +0100 @@ -485,6 +485,15 @@ void cTxtStatus::ChannelSwitch(const cDevice *Device, int ChannelNumber) { +#if VDRVERSNUM >= 10725 + // Disconnect receiver if channel is 0, will reconnect to new + // receiver after channel change. + if (ChannelNumber == 0 && Device->IsPrimaryDevice()) { + delete receiver; + receiver = NULL; + } +#endif + // ignore if channel is 0 if (ChannelNumber == 0) return;
Updated by urig over 12 years ago
- Status changed from New to Closed
- % Done changed from 0 to 100
Applied in changeset e9367b3f702bf04bea0585e2b27962d63aebda1d.
Updated by urig over 12 years ago
Huh, seems I suffer from dissociative identity disorder. Looks like I've checked in the patch an hour ago, but already can't remember it. ;)
Anyway, the patch is running on my production system for a week now, no issues noticed. Sorry for not uploading it here.
Updated by SPAM over 12 years ago
Yeah, I wondered why redmine said you closed it - I did via a git commit message (maybe it picked it from the patch author, dunno).
Updated by etobi over 12 years ago
Yes, Redmine uses the commit author instead of the commiter when closing bugs.
Thanks to both of you! I'll probably make a new release of the plugin soon.