From d720dcbe3da223f7f228a4525e5b9fc3b114ebc6 Mon Sep 17 00:00:00 2001 From: Lynne Date: Fri, 2 Feb 2024 03:54:06 +0100 Subject: [PATCH v2 1/2] lavc/cbs_av1: fill in ref_frame_sign_bias Needed for AV1. --- libavcodec/cbs_av1.h | 1 + libavcodec/cbs_av1_syntax_template.c | 10 ++++++++++ 2 files changed, 11 insertions(+) diff --git a/libavcodec/cbs_av1.h b/libavcodec/cbs_av1.h index a5402f069d..bf3047fc42 100644 --- a/libavcodec/cbs_av1.h +++ b/libavcodec/cbs_av1.h @@ -465,6 +465,7 @@ typedef struct CodedBitstreamAV1Context { int tile_num; AV1ReferenceFrameState ref[AV1_NUM_REF_FRAMES]; + uint8_t ref_frame_sign_bias[AV1_NUM_REF_FRAMES]; // AVOptions int operating_point; diff --git a/libavcodec/cbs_av1_syntax_template.c b/libavcodec/cbs_av1_syntax_template.c index 3be1f2d30f..e6fd7f8a93 100644 --- a/libavcodec/cbs_av1_syntax_template.c +++ b/libavcodec/cbs_av1_syntax_template.c @@ -1572,6 +1572,16 @@ static int FUNC(uncompressed_header)(CodedBitstreamContext *ctx, RWContext *rw, } if (!frame_is_intra) { + for (i = 0; i < AV1_REFS_PER_FRAME; i++) { + if (seq->enable_order_hint) { + int idx = current->ref_frame_idx[i]; + int hint = current->ref_order_hint[idx]; + priv->ref_frame_sign_bias[i] = cbs_av1_get_relative_dist(seq, hint, + priv->order_hint) > 0; + } else { + priv->ref_frame_sign_bias[i] = 0; + } + } // Derive reference frame sign biases. } -- 2.43.0.381.gb435a96ce8