summaryrefslogtreecommitdiff
path: root/dvbdevice.c
diff options
context:
space:
mode:
authorKlaus Schmidinger <kls (at) cadsoft (dot) de>2006-08-20 18:00:00 +0200
committerKlaus Schmidinger <kls (at) cadsoft (dot) de>2006-08-20 18:00:00 +0200
commit0e310c57a4af9e3b3bc87816a60b01790e2c6b89 (patch)
treeb2a129d6049c49f836fb180f4fb6569f3ae5f421 /dvbdevice.c
parentf5ad8fc5d7679433faf6a7465b5cfd54a7c10f8b (diff)
downloadvdr-patch-lnbsharing-0e310c57a4af9e3b3bc87816a60b01790e2c6b89.tar.gz
vdr-patch-lnbsharing-0e310c57a4af9e3b3bc87816a60b01790e2c6b89.tar.bz2
Version 1.4.1-5vdr-1.4.1-5
- Replaced the "quick workaround for additional live audio PIDs" in cDvbDevice::SetChannelDevice() with an actual solution in cDvbDevice::SetAudioTrackDevice() in order to prevent sticky PIDs in CAMs, which caused long switching times or completely blank screens when switching between encrypted channels on the same transponder (reported by Tomas Berglund). - Adapted cThread::ThreadId() to recent kernels (thanks to Ville Skyttä). - Added --remove-destination to the 'cp' command for binaries in the Makefile to avoid a crash in case a new version is installed on a running system (suggested by Petri Hintukainen). - Fixed handling "Ca Info" in case the CAM sends this again if the smart card is replaced with a different one.
Diffstat (limited to 'dvbdevice.c')
-rw-r--r--dvbdevice.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/dvbdevice.c b/dvbdevice.c
index 9ae8dfa..fb8ec93 100644
--- a/dvbdevice.c
+++ b/dvbdevice.c
@@ -4,7 +4,7 @@
* See the main source file 'vdr.c' for copyright information and
* how to reach the author.
*
- * $Id: dvbdevice.c 1.159 2006/06/11 09:03:55 kls Exp $
+ * $Id: dvbdevice.c 1.160 2006/08/14 09:38:32 kls Exp $
*/
#include "dvbdevice.h"
@@ -853,11 +853,6 @@ bool cDvbDevice::SetChannelDevice(const cChannel *Channel, bool LiveView)
esyslog("ERROR: failed to set PIDs for channel %d on device %d", Channel->Number(), CardIndex() + 1);
return false;
}
- //XXX quick workaround for additional live audio PIDs:
- if (ciHandler) {
- ciHandler->SetPid(Channel->Apid(1), true);
- ciHandler->SetPid(Channel->Dpid(0), true);
- }
if (IsPrimaryDevice())
AddPid(Channel->Tpid(), ptTeletext);
CHECK(ioctl(fd_audio, AUDIO_SET_MUTE, true)); // actually one would expect 'false' here, but according to Marco Schlüßler <marco@lordzodiac.de> this works
@@ -927,8 +922,14 @@ void cDvbDevice::SetAudioTrackDevice(eTrackType Type)
if (IS_AUDIO_TRACK(Type) || (IS_DOLBY_TRACK(Type) && SetAudioBypass(true))) {
if (pidHandles[ptAudio].pid && pidHandles[ptAudio].pid != TrackId->id) {
DetachAll(pidHandles[ptAudio].pid);
+ if (ciHandler)
+ ciHandler->SetPid(pidHandles[ptAudio].pid, false);
pidHandles[ptAudio].pid = TrackId->id;
SetPid(&pidHandles[ptAudio], ptAudio, true);
+ if (ciHandler) {
+ ciHandler->SetPid(pidHandles[ptAudio].pid, true);
+ ciHandler->StartDecrypting();
+ }
}
}
else if (IS_DOLBY_TRACK(Type)) {