On 4/28/2021 11:53 AM, James Almer wrote:
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 */

Will apply.
_______________________________________________
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".

Reply via email to