Mailing List archive

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

[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