Project

General

Profile

Actions

Bug #9

closed

osdteletext forces FF cards into transfer mode

Added by urig over 15 years ago. Updated about 12 years ago.

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

100%

Estimated time:

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

Actions #1

Updated by etobi over 15 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?

Actions #2

Updated by anbr about 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;
Actions #3

Updated by urig about 12 years ago

  • Status changed from New to Closed
  • % Done changed from 0 to 100
Actions #4

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

Actions #5

Updated by SPAM about 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).

Actions #6

Updated by etobi about 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.

Actions

Also available in: Atom PDF