mirror of
https://github.com/VDR4Arch/vdr.git
synced 2023-10-10 13:36:52 +02:00
Fixed setting additional audio PIDs in CAMs
This commit is contained in:
parent
dc32738b27
commit
e68171626e
@ -1980,3 +1980,7 @@ Frank Schmirler <vdr@schmirler.de>
|
||||
Jörn Reder <joern@zyn.de>
|
||||
for reporting that a recording may unnecessarily block a device with a CAM, while
|
||||
it could record on the primary device as well
|
||||
|
||||
Tomas Berglund <tomber@telia.com>
|
||||
for reporting a problem with sticky PIDs in CAMs when switching between encrypted
|
||||
channels on the same transponder
|
||||
|
8
HISTORY
8
HISTORY
@ -4874,3 +4874,11 @@ Video Disk Recorder Revision History
|
||||
Oliver Endriss).
|
||||
- Added a log error message to cPlugin::ConfigDirectory() in case a plugin calls it
|
||||
from a separate thread (reported by Udo Richter).
|
||||
|
||||
2006-08-14: Version 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).
|
||||
|
4
config.h
4
config.h
@ -4,7 +4,7 @@
|
||||
* See the main source file 'vdr.c' for copyright information and
|
||||
* how to reach the author.
|
||||
*
|
||||
* $Id: config.h 1.265 2006/08/12 09:10:11 kls Exp $
|
||||
* $Id: config.h 1.266 2006/08/14 09:49:22 kls Exp $
|
||||
*/
|
||||
|
||||
#ifndef __CONFIG_H
|
||||
@ -21,7 +21,7 @@
|
||||
|
||||
// VDR's own version number:
|
||||
|
||||
#define VDRVERSION "1.4.1-4"
|
||||
#define VDRVERSION "1.4.1-5"
|
||||
#define VDRVERSNUM 10401 // Version * 10000 + Major * 100 + Minor
|
||||
|
||||
// The plugin API's version number:
|
||||
|
13
dvbdevice.c
13
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)) {
|
||||
|
Loading…
Reference in New Issue
Block a user