[FFmpeg-devel] [PATCH] 04: dtsdec: fix attempts to decode incomplete frames
Benjamin Larsson
banan
Thu May 17 15:49:17 CEST 2007
Michael Niedermayer wrote:
> Hi
>
> On Thu, May 17, 2007 at 02:01:22PM +0400, Pavlov Konstantin wrote:
>> Hello.
>>
>> When (!len) is checked in the buffer fill loop in dts_decode_frame(),
>> the buffer does not contain a complete frame, therefore executing
>> "break" when there is no more input data is not correct (subsequent
>> code will try to decode the buffer, which then will lead to garbage
>> output and sync loss). The proper action is to return the number of
>> consumed bytes and wait for more data.
>>
>> The problematic case can be triggered by mplayer - apparently it
>> passes the stream to decoder without caring about frame boundaries,
>> and sometimes the data block happens to contain just the frame header;
>> in this case the first pass through the loop will consume HEADER_SIZE
>> bytes from the input data, and the second pass would trigger the bug.
>
> libavcodec decoders must always be feeded with complete frames
> patch rejected
>
> an exception to this is possible _only_ if CODEC_FLAG_TRUNCATED AND
> CODEC_CAP_TRUNCATED is set AND the decoder needs 1 pass less over the
> data than parser+decoder (=its faster to not split the stream into frames)
>
> [...]
>
How about we just svn remove the file instead.
MvH
Benjamin Larsson
More information about the ffmpeg-devel
mailing list