Mailing List archive

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

[vdr] AC3overDVB and multiple mp2 audio streams



Hi,

yesterday i tried to play a self-burned dvd with a converted vdr movie,
this movie has as first audio a DD stream, one german (second) and one
englisch (third) stream. When i disable ac3overdvb in the setup of vdr,
i could here a downsampled DD stream and the other two can't be heared,
if ac3overdvb is enabled i could only hear the DD audio and not the two
mp2 audio streams.

I found the problem is in the ac3overdvb patch. With the following patch
you can hear all 3 audio streams, if ac3overdvb is disabled. If
ac3overdvb is enabled you also hear only the first DD stream, i didn't
find where the problem is :(

The patch also work if ac3overdvb is enabled and you have a dvd with two
mp2 audios and no DD audio.
I toggle between the audio-streams by pressing key number 1 on keyboard
or remote.

following SW is tested:
linux-dvb.2003-11-08
vdr-1.2.6
ac3overdvbpatch
aio-patch
vdr-dvd-0.3.4-rc6 and rc10
and some other plugins


Gerald
diff -uN vdr-1.2.6-ac3-elchi-unpatched-alt/dvbdevice.c vdr-1.2.6-ac3-elchi-unpatched/dvbdevice.c
--- vdr-1.2.6-ac3-elchi-unpatched-alt/dvbdevice.c	2003-11-21 22:55:34.000000000 +0100
+++ vdr-1.2.6-ac3-elchi-unpatched/dvbdevice.c	2003-11-22 00:14:05.000000000 +0100
@@ -778,10 +778,10 @@
      }
 }
 
-static uchar trackId[]      = { 0xC0, 0xC1, 0xBD };
-static bool  trackDigital[] = { false,false,true };
-static const char *trackNames[] = { "Audio 1","Audio 2","Digital Audio" };
-static const char *tracks[4];
+static uchar trackId[]      = { 0xC0, 0xC1, 0xC2, 0xBD };
+static bool  trackDigital[] = { false,false,false,true };
+static const char *trackNames[] = { "Audio 1","Audio 2","Audio 3","Digital Audio" };
+static const char *tracks[5];
 
 int cDvbDevice::ReplayNumAudioTracks(void) const
 {
@@ -1234,7 +1234,7 @@
   audioTrack=0xC0; trackSelected=false; skipMode=true; delayedUnmute=0;
   // we use ruleset 0 for normal replay
   SetRuleR(0xE0,0xEF,prPass,0); // pass all video streams
-  SetRule (0xC0,     prPass,0); // pass first audio stream
+  SetRuleR(0xC0,0xC2,prPass,0); // pass mp2 audio stream
   SetRule (0xBD,     prAct1,0); // snoop for digital audio
   SetRule (0xBE,     prPass,0); // pass padding stream
   // we use ruleset 1 for trickmodes

Home | Main Index | Thread Index