summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CONTRIBUTORS4
-rw-r--r--HISTORY3
-rw-r--r--dvbdevice.c9
3 files changed, 14 insertions, 2 deletions
diff --git a/CONTRIBUTORS b/CONTRIBUTORS
index 289e4a94..d087b876 100644
--- a/CONTRIBUTORS
+++ b/CONTRIBUTORS
@@ -155,6 +155,7 @@ Stefan Huelswitt <huels@iname.com>
for adding a missing StripAudioPackets() to cDvbPlayer::Action()
for improving skipping channels that are (currently) not available
for fixing checking the Ca() status of a cDevice
+ for helping to fix switching audio tracks in 'Transfer Mode' on the primary DVB device
Ulrich Röder <roeder@efr-net.de>
for pointing out that there are channels that have a symbol rate higher than
@@ -444,3 +445,6 @@ Jaakko Hyvätti <jaakko@hyvatti.iki.fi>
Dennis Noordsij <dennis.noordsij@wiral.com>
for reporting a small glitch when switching channels
+
+Steffen Barszus <st_barszus@gmx.de>
+ for reporting a bug in switching audio tracks in 'Transfer Mode' on the primary DVB device
diff --git a/HISTORY b/HISTORY
index 48db9a18..01f082ac 100644
--- a/HISTORY
+++ b/HISTORY
@@ -1634,3 +1634,6 @@ Video Disk Recorder Revision History
by 1000 until it is larger than 1000000.
- Fixed skipping unavailable channels when zapping downwards.
- Fixed checking the Ca() status of a cDevice (thanks to Stefan Huelswitt).
+- Fixed switching audio tracks in 'Transfer Mode' on the primary DVB device
+ (thanks to Steffen Barszus and Stefan Huelswitt for reporting this one and
+ helping to fix it).
diff --git a/dvbdevice.c b/dvbdevice.c
index 184720a1..b68c16e3 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.26 2002/10/20 14:10:49 kls Exp $
+ * $Id: dvbdevice.c 1.27 2002/10/26 09:44:49 kls Exp $
*/
#include "dvbdevice.h"
@@ -742,7 +742,7 @@ bool cDvbDevice::SetChannelDevice(const cChannel *Channel, bool LiveView)
CHECK(ioctl(fd_audio, AUDIO_SET_AV_SYNC, true));
}
else if (StartTransferMode)
- cControl::Launch(new cTransferControl(this, Channel->Vpid(), Channel->Apid1(), 0, 0, 0));
+ cControl::Launch(new cTransferControl(this, Channel->Vpid(), Channel->Apid1(), Channel->Apid2(), Channel->Dpid1(), Channel->Dpid2()));
// Start setting system time:
@@ -777,6 +777,8 @@ int cDvbDevice::NumAudioTracksDevice(void) const
const char **cDvbDevice::GetAudioTracksDevice(int *CurrentTrack) const
{
+ if (Ca())
+ return NULL; // a Ca recording session blocks switching live audio tracks
if (NumAudioTracks()) {
if (CurrentTrack)
*CurrentTrack = (pidHandles[ptAudio].pid == aPid1) ? 0 : 1;
@@ -790,8 +792,11 @@ const char **cDvbDevice::GetAudioTracksDevice(int *CurrentTrack) const
void cDvbDevice::SetAudioTrackDevice(int Index)
{
if (0 <= Index && Index < NumAudioTracks()) {
+ int vpid = pidHandles[ptVideo].pid; // need to turn video PID off/on to restart demux
+ DelPid(vpid);
DelPid(pidHandles[ptAudio].pid);
AddPid(Index ? aPid2 : aPid1, ptAudio);
+ AddPid(vpid, ptVideo);
}
}