Mailing List archive

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

[vdr] Re: DVD-AC3-Playback




Hello Klaus, hello Andreas,

I just tried the latter patch.
DVDs work very well (AC3 2.0 and 5.1 tested with ST First Contact RC1).
Unfortunately, VDR recordings don't (at least not very well).
I get many drop outs and stutterings, and my receiver switches back to PCM
every few seconds.
I guess some VDR AC3 packets match the "if" criterion...

Yours
Stephan


> -----Original Message-----
> From: vdr-bounce@linuxtv.org [mailto:vdr-bounce@linuxtv.org]On Behalf Of
> Andreas Schultz
> Sent: Saturday, November 24, 2001 7:19 PM
> To: vdr@linuxtv.org
> Cc: Klaus.Schmidinger@cadsoft.de
> Subject: [vdr] Re: DVD-AC3-Playback
>
>
>
> Hi all,
>
> small improvement for Klaus' original patch, try:
>
>             int written = b[8] + 9; // skips the PES header
>             if ((b[written] &0xf0) == 0x80)
>               written += 4;
>
> This should allow it, to handle all AC3 tracks correctly.
>
> Andreas
>
>
> Klaus Schmidinger wrote:
>
> > Uwe wrote:
> >
> >>Hello Klaus
> >>
> >>
> >>>From: "Klaus Schmidinger" Sent: Saturday, November 24, 2001 4:54 PM
> >>>
> >>>Andreas Schultz wrote:
> >>>
> >>>>Hi all,
> >>>>
> >>>>There have been to much complaints about DVD AC3 playback. So i had
> >>>>quick look at it.
> >>>>There appears indeed to be a problem with the way how DVD AC3
> frames are
> >>>>sent to external decoders.
> >>>>
> >>>>Everyone with problems, could you please try to modify line 772
> >>>>(cPlayBuffer::PlayExternalDolby()) in dvbapi.c.
> >>>>
> >>>>orignal:
> >>>>
> >>>>int written = b[8] + 9; // skips the PES header
> >>>>
> >>>>should be changed to:
> >>>>
> >>>>int written = b[8] + 13; // skips the PES header
> >>>>
> >>>>This will most likely break AC3-out for DVB streams.
> >>>>
> >>>>Please report your findings ASAP especialy wether this change indeed
> >>>>breaks DVB AC3 or not.
> >>>>
> >>>I don't have any detailed information on this AC3 (header) format,
> >>>but from what I have observed there might be a chance to dynamically
> >>>detect whether these four bytes should be skipped or not.
> >>>
> >>>Please try this instead of the above change
> >>>
> >>>           int written = b[8] + 9; // skips the PES header
> >>>           if (b[written] == 0x80)
> >>>              written += 4;
> >>>
> >>>and test if this can play AC3 sound from DVDs as well as DVB
> >>>recordings made with VDR.
> >>>
> >>>Note that this is just a wild guess - if anybody can come up with
> >>>information on how one can correctly detect whether these four header
> >>>
> >>bytes
> >>
> >>>are present or not, please let me know.
> >>>
> >>>
> >>>
> >>I can  play DVD with first AC3-Language (Englisch). The second Language
> >>break the AC3 with ** CRC failed - skipping frame **.(testet
> with StarWars
> >>EP1)
> >>VDR-Files with AC3 play become good AC3-Sound.
> >>( 2min --> 9 skipping frame (**CRC failed - skipping frame **) )
> >>
> >
> > Hmmm, not very encouraging...
> >
> > I you play the DVDs with
> >
> >    int written = b[8] + 13; // skips the PES header
> >
> > as originally suggested by Andreas, do they play correct AC3 sound?
> > Especially the second language you mentioned.
> >
> > Also, of you play the VDR recordings with the original
> >
> >    int written = b[8] + 9; // skips the PES header
> >
> > do you also get the "9 skipping frame" errors?
> >
> > If DVDs play correctly with 'b[8] + 13' and VDR recordings play with
> > 'b[8] + 9', I guess we could simply introduce a flag in cPlayBuffer
> > which tells PlayExternalDolby() whether to skip the additional 4 bytes
> > or not. But to make sure this is the way to go I'd appreciate if you
> > could verify that Andreas' original suggestions works for DVDs, and that
> > the original VDR 0.98 plays its own recordings correctly.
> >
> > Klaus
> >
>
>
>
>
>




Home | Main Index | Thread Index