[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