Bug #9

osdteletext forces FF cards into transfer mode

Added by urig over 5 years ago. Updated about 2 years ago.

Status:Closed Start date:12/06/2008
Priority:Normal Due date:
Assignee:- % Done:

100%

Category:- Spent time: -
Target version:-

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

Associated revisions

Revision e9367b3f
Added by urig about 2 years ago

Avoid FF card transfer mode on channel switch with VDR >= 1.7.25 (Closes: #9).

History

Updated by etobi over 5 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 about 2 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 about 2 years ago

  • Status changed from New to Closed
  • % Done changed from 0 to 100

Updated by urig about 2 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 scop about 2 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 about 2 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.

Also available in: Atom PDF