Mailing List archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[vdr] Re: DVD-AC3-Playback
Hi Klaus,
that completely did the trick.
Again, I did: watch "Dogma" (Cinedom DL recording)
then I played ST FC RC1 in all languages (AC3 2.0 english, 5.1 english, 2.0
french)
then (because I heard it's a problem DVD) I tried Episode1 RC2 in 5.1
english, 5.1 german and the 2.0 audio commentary.
After that I replayed "Supernova" (Premiere Movie 1 recording).
Everything works flawlessly. Congratulations. And thank you VERY much.
(I'm not a great C programmer, but your hack doesn't look *that* dirty to me
;-))
Cheers
Stephan
P.S.:
That first part
> @@ -710,6 +710,7 @@
> int readIndex, writeIndex;
> bool canDoTrickMode;
> bool canToggleAudioTrack;
> + bool skipAC3bytes;
> uchar audioTrack;
> void TrickSpeed(int Increment);
> virtual void Empty(bool Block = false);
belongs to dvbapi.h (not .c?).
>
> Well, then just to make sure I don't break anything else, can you please
> try this modification:
>
> --- dvbapi.c 2001/11/24 14:45:58
> +++ dvbapi.c 2001/11/25 16:38:09
> @@ -710,6 +710,7 @@
> int readIndex, writeIndex;
> bool canDoTrickMode;
> bool canToggleAudioTrack;
> + bool skipAC3bytes;
> uchar audioTrack;
> void TrickSpeed(int Increment);
> virtual void Empty(bool Block = false);
> @@ -752,6 +753,7 @@
> readIndex = writeIndex = -1;
> canDoTrickMode = false;
> canToggleAudioTrack = false;
> + skipAC3bytes = false;
> audioTrack = 0xC0;
> if (cDvbApi::AudioCommand()) {
> if (!dolbyDev.Open(cDvbApi::AudioCommand(), "w"))
> @@ -769,7 +771,7 @@
> if (b[0] == 0x00 && b[1] == 0x00 && b[2] == 0x01) {
> if (b[3] == 0xBD) { // dolby
> int l = b[4] * 256 + b[5] + 6;
> - int written = b[8] + 9; // skips the PES header
> + int written = b[8] + (skipAC3bytes ? 13 : 9); //
> skips the PES header
> int n = min(l - written, MaxLength);
> while (n > 0) {
> int w = fwrite(&b[written], 1, n, dolbyDev);
> @@ -1545,6 +1547,7 @@
> canToggleAudioTrack = true;//XXX determine from cDVD!
> data = new uchar[1024 * DVD_VIDEO_LB_LEN];
> canDoTrickMode = true;
> + skipAC3bytes = true;
> dvbApi->SetModeReplay();
> Start();
> }
>
>
> Maybe the line numbers don't match exactly, but this is such a small
> modification that you should even be able to do it manually.
>
> Can you confirm that this now replays DVD _and_ DVB external AC3 sound
> correctly?
>
> Klaus
> --
> _______________________________________________________________
>
> Klaus Schmidinger Phone: +49-8635-6989-10
> CadSoft Computer GmbH Fax: +49-8635-6989-40
> Hofmark 2 Email: kls@cadsoft.de
> D-84568 Pleiskirchen, Germany URL: www.cadsoft.de
> _______________________________________________________________
>
>
Home |
Main Index |
Thread Index