[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