Mailing List archive

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

[vdr] Re: DVD-AC3-Playback




Hello

>From: "Andreas Schultz" Sent: Saturday, November 24, 2001 7:18 PM
>
> 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.
>

Fine, the handle of all AC3 tracks is correctly.

MFG ... Uwe

>
> 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