[FFmpeg-devel] [PATCH] lavc/vaapi_encode_av1: Fix ref_order_hint value for second slot (PR #20157)

nowrep code at ffmpeg.org
Thu Aug 7 17:08:53 EEST 2025


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

We always use two slots, even when only one L0 reference is supported
by the driver. However we still need to set the correct value for the
ref_order_hint of the second slot.

Fixes regression from bf9f921ef7 ("avcodec/hw_base_encode: restrict size of next_prev")


From cc0aae7d2c34e6283b454efbc02daaebcc9633f8 Mon Sep 17 00:00:00 2001
From: David Rosca <nowrep at gmail.com>
Date: Wed, 15 Jan 2025 22:34:05 +0100
Subject: [PATCH] lavc/vaapi_encode_av1: Fix ref_order_hint value for second
 slot

We always use two slots, even when only one L0 reference is supported
by the driver. However we still need to set the correct value for the
ref_order_hint of the second slot.

Fixes regression from bf9f921ef7 ("avcodec/hw_base_encode: restrict size of next_prev")
---
 libavcodec/vaapi_encode_av1.c | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/libavcodec/vaapi_encode_av1.c b/libavcodec/vaapi_encode_av1.c
index f3df5baddc..3d8f29d599 100644
--- a/libavcodec/vaapi_encode_av1.c
+++ b/libavcodec/vaapi_encode_av1.c
@@ -476,6 +476,7 @@ static int vaapi_encode_av1_init_picture_params(AVCodecContext *avctx,
     AV1RawFrameHeader                *fh = &fh_obu->obu.frame.header;
     VAEncPictureParameterBufferAV1 *vpic = vaapi_pic->codec_picture_params;
     CodedBitstreamFragment          *obu = &priv->current_obu;
+    CodedBitstreamAV1Context      *cbctx = priv->cbc->priv_data;
     FFHWBaseEncodePicture *ref;
     VAAPIEncodeAV1Picture *href;
     int slot, i;
@@ -523,6 +524,8 @@ static int vaapi_encode_av1_init_picture_params(AVCodecContext *avctx,
             fh->ref_frame_idx[3] = href->slot;
             fh->ref_order_hint[href->slot] = ref->display_order - href->last_idr_frame;
             vpic->ref_frame_ctrl_l0.fields.search_idx1 = AV1_REF_FRAME_GOLDEN;
+        } else {
+            fh->ref_order_hint[!href->slot] = cbctx->ref[!href->slot].order_hint;
         }
         break;
     case FF_HW_PICTURE_TYPE_B:
-- 
2.49.1



More information about the ffmpeg-devel mailing list