diff mbox series

[FFmpeg-devel,v2,1/2] lavc/cbs_av1: fill in ref_frame_sign_bias

Message ID Nq0mOLv--3-9@lynne.ee
State New
Headers show
Series [FFmpeg-devel,v2,1/2] lavc/cbs_av1: fill in ref_frame_sign_bias | expand

Checks

Context Check Description
yinshiyou/make_loongarch64 success Make finished
yinshiyou/make_fate_loongarch64 success Make fate finished
andriy/make_x86 success Make finished
andriy/make_fate_x86 success Make fate finished

Commit Message

Lynne Feb. 7, 2024, 4:18 a.m. UTC
Needed for AV1.

v2 changes: moved ref_frame_sign_bias to the CodedBitstreamAV1Context structure

Patch attached.
diff mbox series

Patch

From d720dcbe3da223f7f228a4525e5b9fc3b114ebc6 Mon Sep 17 00:00:00 2001
From: Lynne <dev@lynne.ee>
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