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.bou...@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; > + } > + } > + > switch (start_code) { > case SOI: > s->restart_interval = 0; > @@ -2103,6 +2119,10 @@ eoi_parser: > if (s->bottom_field == !s->interlace_polarity) > break; > } > + if (avctx->skip_frame == AVDISCARD_ALL) { > + s->got_picture = 0; > + goto the_end; this would jump to all kinds of post scale and convert code that should probably be skiped over just to be sure it doesnt run otherwise patch LGTM and seems not breaking anything i tested thanks [...] -- Michael GnuPG fingerprint: 9FF2128B147EF6730BADF133611EC787040B0FAB Rewriting code that is poorly written but fully understood is good. Rewriting code that one doesnt understand is a sign that one is less smart then the original author, trying to rewrite it will not make it better.
signature.asc
Description: Digital signature
_______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel