Mailing List archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[vdr] [PATCH] Channel switch



Hi,

in recent VDR version I experienced problem when recording on a
secondary card. Very often VDR does a restart right at the
beginning of the recording and after this, the rest of the
recording is fine (as described in another thread).

In recent versions, VDR leaves the secondary card tuned to a
channel, but doesn't starts the decoder (means you don't see a
picture on a connected tv). It seems to me, that the card looks
up in some way, if left in this state for some time.

The patch changes the behaviour in this way, that the decoder on
the secondary card is started when tunning to a new channel. This
fixes the restart problem for me.

The patch also fixes a small bug, when recording on the primary
interface. For recordings on the prim. card VDR has to start
transfer mode to allow channel switches during recording. This
only works if the prim. interface is already tuned to the
correct channel. If the card has to tune to another channel for
recording, no transfer mode is started (black screen).

--- vdr-1.1.21-orig/dvbdevice.c	2003-01-06 15:44:27.000000000 +0100
+++ vdr-1.1.x-current/dvbdevice.c	2003-01-16 13:06:50.000000000 +0100
@@ -604,19 +604,20 @@
   bool TurnOffLivePIDs = HasDecoder()
                          && (DoTune
                             || IsEncrypted && pidHandles[ptVideo].pid != Channel->Vpid() // CA channels can only be decrypted in "live" mode
-                            || !IsPrimaryDevice()
                             || LiveView // for a new live view the old PIDs need to be turned off
                             || pidHandles[ptVideo].pid == Channel->Vpid() // for recording the PIDs must be shifted from DMX_PES_AUDIO/VIDEO to DMX_PES_OTHER
                             );
 
-  bool StartTransferMode = IsPrimaryDevice() && !IsEncrypted && !DoTune
+  bool StartTransferMode = IsPrimaryDevice() && !IsEncrypted
                            && (LiveView && HasPid(Channel->Vpid()) && pidHandles[ptVideo].pid != Channel->Vpid() // the PID is already set as DMX_PES_OTHER
                               || !LiveView && pidHandles[ptVideo].pid == Channel->Vpid() // a recording is going to shift the PIDs from DMX_PES_AUDIO/VIDEO to DMX_PES_OTHER
+                              || !LiveView && DoTune
                               );
 
   bool TurnOnLivePIDs = HasDecoder() && !StartTransferMode
                         && (IsEncrypted // CA channels can only be decrypted in "live" mode
                            || LiveView
+                           || (DoTune && !IsPrimaryDevice())
                            );
 
 #ifndef DO_MULTIPLE_RECORDINGS


-- 
Stefan Huelswitt
huels@iname.com  | http://home.pages.de/~nathan


-- 
Info:
To unsubscribe send a mail to listar@linuxtv.org with "unsubscribe vdr" as subject.



Home | Main Index | Thread Index