From: Matthieu Bouron <matthieu.bou...@stupeflix.com> --- libavcodec/mjpegdec.c | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+)
diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c index 1a86b7b..8a90e94 100644 --- a/libavcodec/mjpegdec.c +++ b/libavcodec/mjpegdec.c @@ -2038,6 +2038,21 @@ 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 sofs[] = { SOF0, SOF1, SOF2, SOF3, SOF48 }; + + for (i = 0; i < FF_ARRAY_ELEMS(sofs); i++) { + if (start_code == sofs[i]) { + found = 1; + break; + } + } + if (!found) { + continue; + } + } + switch (start_code) { case SOI: s->restart_interval = 0; @@ -2158,6 +2173,11 @@ eoi_parser: av_log(avctx, AV_LOG_WARNING, "EOI missing, emulating\n"); goto eoi_parser; } + + if (avctx->skip_frame == AVDISCARD_ALL) { + return buf_ptr - buf; + } + av_log(avctx, AV_LOG_FATAL, "No JPEG data found in image\n"); return AVERROR_INVALIDDATA; fail: -- 2.6.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org http://ffmpeg.org/mailman/listinfo/ffmpeg-devel