[FFmpeg-devel] [PATCH 2/2] Do not fail DVB sub decoding because of a few padding bytes
Måns Rullgård
mans
Thu Feb 10 20:32:39 CET 2011
Reimar D?ffinger <Reimar.Doeffinger at gmx.de> writes:
> On Wed, Feb 09, 2011 at 09:40:04PM +0100, Janne Grunau wrote:
>> On Wed, Feb 09, 2011 at 07:32:07PM +0100, Reimar D?ffinger wrote:
>> > Instead of returning an error when bytes are left over, just return
>> > the number of actually used bytes as other decoders do.
>> > Instead add a special case so an error will be returned when none
>> > of the data looks valid to avoid making debugging a pain.
>> > ---
>> > libavcodec/dvbsubdec.c | 9 ++-------
>> > 1 files changed, 2 insertions(+), 7 deletions(-)
>> >
>> > diff --git a/libavcodec/dvbsubdec.c b/libavcodec/dvbsubdec.c
>> > index 8cc8d4f..401144f 100644
>> > --- a/libavcodec/dvbsubdec.c
>> > +++ b/libavcodec/dvbsubdec.c
>> > @@ -1423,7 +1423,7 @@ static int dvbsub_decode(AVCodecContext *avctx,
>> >
>> > #endif
>> >
>> > - if (buf_size <= 2)
>> > + if (buf_size <= 2 || *buf != 0x0f)
>> > return -1;
>> >
>> > p = buf;
>> > @@ -1467,12 +1467,7 @@ static int dvbsub_decode(AVCodecContext *avctx,
>> > p += segment_length;
>> > }
>> >
>> > - if (p != p_end) {
>> > - av_dlog(avctx, "Junk at end of packet\n");
>> > - return -1;
>> > - }
>> > -
>> > - return buf_size;
>> > + return p - buf;
>> > }
>> >
>> >
>>
>> still ok, but an answer to my questions would be nice.
>
> Sorry, I missed it.
> No, I do not have any sample.
> I came over this while fiddling with MPlayer's TS demuxer.
> It ends up outputting an extra 0xff byte.
> (and please not comments about what the right solution to
> that is, the reason I am proposing the patch is that I
> consider this the right behaviour. No other codec (AFAIK) fails
> just because of an extra byte).
Agreed. Your patch followed by Janne's look fine to me.
--
M?ns Rullg?rd
mans at mansr.com
More information about the ffmpeg-devel
mailing list