[FFmpeg-devel] [PATCH] avcodec/av1dec: attempt to set SAR even if no hardware decoding is available

James Almer jamrial at gmail.com
Wed Jan 10 00:17:41 EET 2024


Should fix fate failures in avif tests when no external decoder is
available.

Signed-off-by: James Almer <jamrial at gmail.com>
---
 libavcodec/av1dec.c | 12 +++++++++++-
 1 file changed, 11 insertions(+), 1 deletion(-)

diff --git a/libavcodec/av1dec.c b/libavcodec/av1dec.c
index da05a0f039..43b5aef687 100644
--- a/libavcodec/av1dec.c
+++ b/libavcodec/av1dec.c
@@ -1227,7 +1227,7 @@ static int av1_receive_frame_internal(AVCodecContext *avctx, AVFrame *frame)
                     av_log(avctx, AV_LOG_ERROR,
                            "Failed to get pixel format.\n");
                     s->raw_seq = NULL;
-                    goto end;
+                    continue;
                 }
             }
 
@@ -1248,6 +1248,16 @@ static int av1_receive_frame_internal(AVCodecContext *avctx, AVFrame *frame)
         case AV1_OBU_FRAME:
         case AV1_OBU_FRAME_HEADER:
             if (!s->raw_seq) {
+                // Attempt to set dimensions in all cases
+                if (s->pix_fmt == AV_PIX_FMT_NONE) {
+                    ret = update_context_with_frame_header(avctx, &obu->obu.frame.header);
+                    if (ret < 0) {
+                        av_log(avctx, AV_LOG_ERROR, "Failed to update context with frame header\n");
+                        return ret;
+                    }
+                    ret = AVERROR(ENOSYS);
+                    goto end;
+                }
                 av_log(avctx, AV_LOG_ERROR, "Missing Sequence Header.\n");
                 ret = AVERROR_INVALIDDATA;
                 goto end;
-- 
2.43.0



More information about the ffmpeg-devel mailing list