[FFmpeg-devel] [PATCH 2/3] lavc/mjpegdec: honor skip_frame option
Matthieu Bouron
matthieu.bouron at gmail.com
Sat Oct 17 22:34:23 CEST 2015
From: Matthieu Bouron <matthieu.bouron at 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
More information about the ffmpeg-devel
mailing list