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

Janne Grunau janne-ffmpeg
Thu Feb 10 01:08:01 CET 2011


On Wed, Feb 09, 2011 at 11:47:01PM +0000, M?ns Rullg?rd wrote:
> Janne Grunau <janne-ffmpeg at jannau.net> writes:
> 
> > On Wed, Feb 09, 2011 at 11:11:29PM +0000, M?ns Rullg?rd wrote:
> >> Janne Grunau <janne-ffmpeg at jannau.net> writes:
> >> 
> >> > On Wed, Feb 09, 2011 at 09:01:37PM +0000, M?ns Rullg?rd wrote:
> >> >> Janne Grunau <janne-ffmpeg at jannau.net> writes:
> >> >> 
> >> >> > 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)
> >> 
> >> What is the point in checking *buf here and again in the loop below?
> >> One of them should be enough.
> >
> > We don't want to return an error after already decoding something but
> > still have to return an error somewhere so that the caller can discard
> > the garbage.
> 
> Where is the garbage coming from?  Is it not an error for it to be there?

I haven't seen it with a dvbsub sample and I can't remember a related
MythTV bugreport. I assume it happens only with transmissions errors.
Reimer might know and hopefully has a sample triggering this.

Janne



More information about the ffmpeg-devel mailing list