[FFmpeg-devel] [PATCH 2/2] Do not fail DVB sub decoding because of a few padding bytes

Reimar Döffinger Reimar.Doeffinger
Thu Feb 10 20:24:07 CET 2011


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).



More information about the ffmpeg-devel mailing list