PR #20720 opened by cgutman
URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20720
Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20720.patch

194414f introduced a regression by skipping the call to ff_get_format()
if pix_fmt was already set by the user. In this scenario, critical
hwaccel init code in ff_get_format() is never called, which causes
ff_thread_get_buffer() to fail.

Signed-off-by: Cameron Gutman <[email protected]>


>From 9860d4b28cde307b892da817015623233a31d7b1 Mon Sep 17 00:00:00 2001
From: Cameron Gutman <[email protected]>
Date: Sun, 19 Oct 2025 16:48:28 -0500
Subject: [PATCH] avcodec/av1dec: fix decoding with pix_fmt set

194414f introduced a regression by skipping the call to ff_get_format()
if pix_fmt was already set by the user. In this scenario, critical
hwaccel init code in ff_get_format() is never called, which causes
ff_thread_get_buffer() to fail.

Signed-off-by: Cameron Gutman <[email protected]>
---
 libavcodec/av1dec.c | 11 ++++++-----
 1 file changed, 6 insertions(+), 5 deletions(-)

diff --git a/libavcodec/av1dec.c b/libavcodec/av1dec.c
index d4ceb5ef09..29e03e879d 100644
--- a/libavcodec/av1dec.c
+++ b/libavcodec/av1dec.c
@@ -656,11 +656,12 @@ static int get_pixel_format(AVCodecContext *avctx)
     *fmtp++ = pix_fmt;
     *fmtp = AV_PIX_FMT_NONE;
 
-    for (int i = 0; pix_fmts[i] != pix_fmt; i++)
-        if (pix_fmts[i] == avctx->pix_fmt) {
-            s->pix_fmt = pix_fmt;
-            return 1;
-        }
+    if (s->pix_fmt != AV_PIX_FMT_NONE)
+        for (int i = 0; pix_fmts[i] != pix_fmt; i++)
+            if (pix_fmts[i] == avctx->pix_fmt) {
+                s->pix_fmt = pix_fmt;
+                return 1;
+            }
 
     ret = ff_get_format(avctx, pix_fmts);
 
-- 
2.49.1

_______________________________________________
ffmpeg-devel mailing list -- [email protected]
To unsubscribe send an email to [email protected]

Reply via email to