diff mbox series

[FFmpeg-devel,07/11] avcodec/vvcdec: ff_vvc_set_intra_mvf, refact to support dmvr tab

Message ID TYSPR06MB64336E770A2028886FEFD0C0AA562@TYSPR06MB6433.apcprd06.prod.outlook.com
State Accepted
Commit c503c0b33e2c5a7c6e47995cf21e7d247d459ce1
Headers show
Series Add Intra Block Copy support to the vvc decoder | 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

Nuo Mi Feb. 22, 2024, 7:14 a.m. UTC
---
 libavcodec/vvc/vvc_ctu.c | 2 +-
 libavcodec/vvc/vvc_mvs.c | 4 ++--
 libavcodec/vvc/vvc_mvs.h | 2 +-
 3 files changed, 4 insertions(+), 4 deletions(-)
diff mbox series

Patch

diff --git a/libavcodec/vvc/vvc_ctu.c b/libavcodec/vvc/vvc_ctu.c
index b78a1417c7..00476c81e4 100644
--- a/libavcodec/vvc/vvc_ctu.c
+++ b/libavcodec/vvc/vvc_ctu.c
@@ -1776,7 +1776,7 @@  static int hls_coding_unit(VVCLocalContext *lc, int x0, int y0, int cb_width, in
             } else {
                 intra_luma_pred_modes(lc);
             }
-            ff_vvc_set_intra_mvf(lc);
+            ff_vvc_set_intra_mvf(lc, 0);
         }
         if ((tree_type == SINGLE_TREE || tree_type == DUAL_TREE_CHROMA) && sps->r->sps_chroma_format_idc) {
             if (pred_mode_plt_flag && tree_type == DUAL_TREE_CHROMA) {
diff --git a/libavcodec/vvc/vvc_mvs.c b/libavcodec/vvc/vvc_mvs.c
index 8af57e8ed3..8fdbb00a41 100644
--- a/libavcodec/vvc/vvc_mvs.c
+++ b/libavcodec/vvc/vvc_mvs.c
@@ -262,11 +262,11 @@  void ff_vvc_set_mvf(const VVCLocalContext *lc, const int x0, const int y0, const
     }
 }
 
-void ff_vvc_set_intra_mvf(const VVCLocalContext *lc)
+void ff_vvc_set_intra_mvf(const VVCLocalContext *lc, const int dmvr)
 {
     const VVCFrameContext *fc   = lc->fc;
     const CodingUnit *cu        = lc->cu;
-    MvField *tab_mvf            = fc->tab.mvf;
+    MvField *tab_mvf            = dmvr ? fc->ref->tab_dmvr_mvf : fc->tab.mvf;
     const int min_pu_width      = fc->ps.pps->min_pu_width;
     const int min_pu_size       = 1 << MIN_PU_LOG2;
     for (int dy = 0; dy < cu->cb_height; dy += min_pu_size) {
diff --git a/libavcodec/vvc/vvc_mvs.h b/libavcodec/vvc/vvc_mvs.h
index 6c46f9fdb2..358de5ec45 100644
--- a/libavcodec/vvc/vvc_mvs.h
+++ b/libavcodec/vvc/vvc_mvs.h
@@ -41,6 +41,6 @@  void ff_vvc_update_hmvp(VVCLocalContext *lc, const MotionInfo *mi);
 int ff_vvc_no_backward_pred_flag(const VVCLocalContext *lc);
 MvField* ff_vvc_get_mvf(const VVCFrameContext *fc, const int x0, const int y0);
 void ff_vvc_set_mvf(const VVCLocalContext *lc, const int x0, const int y0, const int w, const int h, const MvField *mvf);
-void ff_vvc_set_intra_mvf(const VVCLocalContext *lc);
+void ff_vvc_set_intra_mvf(const VVCLocalContext *lc, int dmvr);
 
 #endif //AVCODEC_VVC_VVC_MVS_H