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>
pull/362/head
James Almer 4 years ago
parent 8b83a4a885
commit fb5e2d7112
  1. 7
      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 */

Loading…
Cancel
Save