[FFmpeg-soc] SOC Qualifiction tasks

Justin Ruggles justinruggles at bellsouth.net
Thu Mar 20 23:34:49 CET 2008


Michael Niedermayer wrote:
> On Sat, Mar 15, 2008 at 08:30:40PM +0100, Bartlomiej Wolowiec wrote:
>> On sobota, 15 marca 2008, Justin Ruggles wrote:
> [...]
>>> 7. Error conclealment. Simple error concealment is fairly trivial. For
>>> more robust detection and concealment, Michael made some great
>>> suggestions for guidelines.  It would require some reworking of the AC3
>>> parser.
>> Can you give me some more explanations on this topic, because I think I don't 
>> understand what do you mean properly
> 
> Now if i would remember what i said in that mail or could find that mail ...
> 

>From what I remember, the original email was basically me being paranoid
and you offering some good solutions.  But I was aiming for a more fully
robust decoder that would eliminate a/v sync issues as much as possible.
 So that involved determining when to trust the various header values,
specifically the sync word, frame size, and number of channels.  This is
a good goal, but not an immediate requirement.

> Anyway
> E-AC3 says:
> E3.2 Error Detection and Concealment
> Enhanced AC-3 decoders are required to implement error detection based on the bit stream CRC
> word. Enhanced AC-3 bit streams contain only one CRC word, which covers the entire frame.
> When decoding bit streams that use the Enhanced AC-3 bit stream syntax, Enhanced AC-3
> decoders must verify the CRC word prior to decoding any of the blocks in the frame.
>     If the CRC word for an Enhanced AC-3 bit stream is found to be invalid, all blocks in the
> frame must be substituted with an appropriate error concealment signal. For most applications,
> this can be easily accomplished by simply repeating the last known-good block (before the
> overlap-add window process).
> ----

The first item to address is error robustness.  For typical streams with
moderate damage, the CRC check will catch pretty close to everything.

> And thats a good goal ...
> Besides this it would be nice if we could detect errors faster than checking
> crcs (wrong vlc, too long/ short bitstream), but i do not know if this can be
> done. If not forget about it and just implement error concealment per CRCs.

Adding the bitstream condition checks is what takes care of the damaged
frames that happen to make it through the CRC.  Each condition check
should be evaluated to see if it is really necessary.  For example, an
invalid exponent value will very likely trigger another error further
along in the bitstream, but if it doesn't the worst you'll get is a blip
of noise.  A wrong mantissa value will never generate another error, and
may or may not be audible.  So you have to take each one and weigh the
benefits vs. slowdown.

> Thats IMHO as i dont remember what i said about E-AC3 EC and maybe justin has
> some comments as well, i just replied as it seems justin didnt exactly reply.

Yeah...I forgot that I had said I would explain it better.  I hope this
email helps.  I was going to go into the nitty-gritty of catching errors
at the parser level that would affect sync, but I don't think that's
really necessary at this point.

-Justin



More information about the FFmpeg-soc mailing list