]> git.sesse.net Git - ffmpeg/commitdiff
avcodec/mjpegdec: fix SOF check in EOI
authorJames Almer <jamrial@gmail.com>
Wed, 28 Apr 2021 14:01:57 +0000 (11:01 -0300)
committerJames Almer <jamrial@gmail.com>
Fri, 30 Apr 2021 13:09:30 +0000 (10:09 -0300)
For frames decoded with skip_frame == AVDISCARD_ALL, a picture is not allocated
and got_picture is never set to 1 even if a SOF and SOS were parsed.
The existing check in EOI only cares if a SOF was parsed, not if a picture
allocated, so change it and add a new check to explicitly ensure a picture was
allocated when skip_frame != AVDISCARD_ALL.

Fixes probing and decoding when skip_frame is AVDISCARD_ALL.

Signed-off-by: James Almer <jamrial@gmail.com>
libavcodec/mjpegdec.c

index 16aed078f66b3d2fd7acc9f2de310e2d95e4ca83..c8291722001345120b6401397ea43dbdffc98c78 100644 (file)
@@ -2560,11 +2560,16 @@ eoi_parser:
                 s->progressive && s->cur_scan && s->got_picture)
                 mjpeg_idct_scan_progressive_ac(s);
             s->cur_scan = 0;
-            if (!s->got_picture) {
+            if (!s->seen_sof) {
                 av_log(avctx, AV_LOG_WARNING,
                        "Found EOI before any SOF, ignoring\n");
                 break;
             }
+            if (!s->got_picture && avctx->skip_frame != AVDISCARD_ALL) {
+                av_log(avctx, AV_LOG_WARNING,
+                       "Found EOI before any SOS, ignoring\n");
+                break;
+            }
             if (s->interlaced) {
                 s->bottom_field ^= 1;
                 /* if not bottom field, do not output image yet */