[FFmpeg-devel] [PATCH 2/3] lavc/mjpegdec: honor skip_frame option

Matthieu Bouron matthieu.bouron at gmail.com
Wed Oct 28 15:10:00 CET 2015


On Wed, Oct 28, 2015 at 12:58:53PM +0100, Michael Niedermayer wrote:
> On Wed, Oct 28, 2015 at 02:57:14AM +0100, Michael Niedermayer wrote:
> > On Tue, Oct 27, 2015 at 11:15:29PM +0100, Matthieu Bouron wrote:
> > > On Sun, Oct 18, 2015 at 11:06:50AM +0200, Matthieu Bouron wrote:
> > > [...]
> > > > 
> > > > Patch updated, the markers are now properly skipped (which also fixes a
> > > > crash).
> > > 
> > > Patch updated. It fixes an issue with mjpeg streams (and in particular with
> > > the fate sample ffmpeg-issue-897.avi) due to the EOI marker not handled when
> > > skip_frame is set to AVDISCARD_ALL.
> > > 
> > > Matthieu
> > 
> > >  mjpegdec.c |   26 ++++++++++++++++++++++++++
> > >  1 file changed, 26 insertions(+)
> > > 36d41f1bded2f864394843c6a49d8cc24933688c  0002-lavc-mjpegdec-honor-skip_frame-option.patch
> > > From 7325810d812c4182cd42946687a1f4abc04999d1 Mon Sep 17 00:00:00 2001
> > > From: Matthieu Bouron <matthieu.bouron at stupeflix.com>
> > > Date: Fri, 9 Oct 2015 15:15:15 +0200
> > > Subject: [PATCH 2/3] lavc/mjpegdec: honor skip_frame option
> > > 
> > > ---
> > >  libavcodec/mjpegdec.c | 26 ++++++++++++++++++++++++++
> > >  1 file changed, 26 insertions(+)
> > > 
> > > diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c
> > > index 1a86b7b..b4ff83c 100644
> > > --- a/libavcodec/mjpegdec.c
> > > +++ b/libavcodec/mjpegdec.c
> > > @@ -2038,6 +2038,22 @@ int ff_mjpeg_decode_frame(AVCodecContext *avctx, void *data, int *got_frame,
> > >              return AVERROR(ENOSYS);
> > >          }
> > >  
> > > +        if (avctx->skip_frame == AVDISCARD_ALL) {
> > > +            int i, found = 0;
> > > +            static const int start_codes[] = { SOF0,
> > > +                SOF1, SOF2, SOF3, SOF48, SOI, EOI };
> > > +
> > > +            for (i = 0; i < FF_ARRAY_ELEMS(start_codes); i++) {
> > > +                if (start_code == start_codes[i]) {
> > > +                    found = 1;
> > > +                    break;
> > > +                }
> > > +            }
> > > +            if (!found) {
> > > +                goto skip;
> > > +            }
> 
> i think this would be simpler and shorter if implemented as a
> switch(start_code)/case
> 

Patch updated using a switch/case to implement the skip logic.

[...]
-------------- next part --------------
A non-text attachment was scrubbed...
Name: 0002-lavc-mjpegdec-honor-skip_frame-option.patch
Type: text/x-diff
Size: 2364 bytes
Desc: not available
URL: <http://ffmpeg.org/pipermail/ffmpeg-devel/attachments/20151028/4d4685b0/attachment.patch>


More information about the ffmpeg-devel mailing list