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 <jamr...@gmail.com> --- libavcodec/mjpegdec.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) 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 */ -- 2.31.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".