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