aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJames Almer <jamrial@gmail.com>2021-04-28 11:01:57 -0300
committerJames Almer <jamrial@gmail.com>2021-04-30 10:09:30 -0300
commitfb5e2d71127ccae19c3f80ec363bb67d1871cb74 (patch)
tree915d3c99b9db6faa76603ac98cfef012253b0c73
parent8b83a4a885e3b92bd09354d6cb182fca47f80973 (diff)
downloadffmpeg-fb5e2d71127ccae19c3f80ec363bb67d1871cb74.tar.gz
avcodec/mjpegdec: fix SOF check in EOI
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>
-rw-r--r--libavcodec/mjpegdec.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/libavcodec/mjpegdec.c b/libavcodec/mjpegdec.c
index 16aed078f6..c829172200 100644
--- a/libavcodec/mjpegdec.c
+++ b/libavcodec/mjpegdec.c
@@ -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 */