[FFmpeg-devel] [PATCH] MJPEG: emulate EOI also on two consecutive SOI.

Reimar Döffinger Reimar.Doeffinger at gmx.de
Sat Aug 27 21:43:58 CEST 2011


On Sat, Aug 27, 2011 at 09:16:45PM +0200, Michael Niedermayer wrote:
> On Sat, Aug 27, 2011 at 07:40:40PM +0200, Reimar Döffinger wrote:
> > On Sat, Aug 27, 2011 at 06:52:21PM +0200, Michael Niedermayer wrote:
> > > On Sat, Aug 27, 2011 at 02:43:04PM +0200, Reimar Döffinger wrote:
> > > > Fixes issue #362.
> > > > 
> > > > Signed-off-by: Reimar Döffinger <Reimar.Doeffinger at gmx.de>
> > > > ---
> > > >  libavcodec/mjpegdec.c |    4 ++++
> > > >  1 files changed, 4 insertions(+), 0 deletions(-)
> > > > 
> > > > diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c
> > > > index 6331e3d..57ce821 100644
> > > > --- a/libavcodec/mjpegdec.c
> > > > +++ b/libavcodec/mjpegdec.c
> > > > @@ -1430,6 +1430,10 @@ int ff_mjpeg_decode_frame(AVCodecContext *avctx,
> > > >  
> > > >                      s->restart_count = 0;
> > > >                      /* nothing to do on SOI */
> > > > +                    if (s->got_picture) {
> > > > +                        av_log(avctx, AV_LOG_WARNING, "EOI missing, emulating\n");
> > > > +                        goto eoi_parser;
> > > 
> > > should that not jump to 3 lines earlier to emulate EOI fully ?
> > 
> > No idea, should it?
> > The existing code to emulate EOI at the end of a buffer jumps to exactly
> > that location.
> > restart_interval is 0 anyway after SOI, so that break will not trigger
> > in the normal case, and neither should it I think.
> 
> > Should the buggy_avid case skip the cur_scan = 0 code?
> 
> I dont think it should skip it

What is it supposed to do anyway?
The comment says
/* if restart period is over process EOI */
However the comment is:
if ((s->buggy_avid && !s->interlaced) || s->restart_interval)
Which will go to EOI when the restart feature is enabled,
not when the restart period is over.


More information about the ffmpeg-devel mailing list