[FFmpeg-cvslog] avcodec/vvcdec: do not zero frame cpm table

Nuo Mi git at videolan.org
Thu Aug 15 15:44:00 EEST 2024


ffmpeg | branch: master | Nuo Mi <nuomi2021 at gmail.com> | Sun Jul 28 11:18:04 2024 +0800| [0c7106f618f75461386e485db814c3e8c761b0c4] | committer: Nuo Mi

avcodec/vvcdec: do not zero frame cpm table

> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=0c7106f618f75461386e485db814c3e8c761b0c4
---

 libavcodec/vvc/ctu.c | 15 ++++++++-------
 libavcodec/vvc/dec.c |  5 ++---
 2 files changed, 10 insertions(+), 10 deletions(-)

diff --git a/libavcodec/vvc/ctu.c b/libavcodec/vvc/ctu.c
index d39dd579ae..579337759f 100644
--- a/libavcodec/vvc/ctu.c
+++ b/libavcodec/vvc/ctu.c
@@ -1080,10 +1080,15 @@ static PredMode pred_mode_decode(VVCLocalContext *lc,
         }
         if (pred_mode_ibc_flag)
             pred_mode = MODE_IBC;
-        return pred_mode;
     } else {
-        return MODE_INTRA;
+        pred_mode = MODE_INTRA;
     }
+
+    set_cb_tab(lc, fc->tab.cpm[cu->ch_type], pred_mode);
+    if (tree_type == SINGLE_TREE)
+        set_cb_tab(lc, fc->tab.cpm[CHROMA], pred_mode);
+
+    return pred_mode;
 }
 
 static void sbt_info(VVCLocalContext *lc, const VVCSPS *sps)
@@ -1232,12 +1237,8 @@ static void set_cu_tabs(const VVCLocalContext *lc, const CodingUnit *cu)
     const VVCFrameContext *fc   = lc->fc;
     const TransformUnit *tu     = cu->tus.head;
 
-    if (cu->tree_type != DUAL_TREE_CHROMA) {
-        set_cb_tab(lc, fc->tab.cpm[LUMA], cu->pred_mode);
+    if (cu->tree_type != DUAL_TREE_CHROMA)
         set_cb_tab(lc, fc->tab.skip, cu->skip_flag);
-    }
-    if (fc->ps.sps->r->sps_chroma_format_idc && cu->tree_type != DUAL_TREE_LUMA)
-        set_cb_tab(lc, fc->tab.cpm[CHROMA], cu->pred_mode);
 
     while (tu) {
           for (int j = 0; j < tu->nb_tbs; j++) {
diff --git a/libavcodec/vvc/dec.c b/libavcodec/vvc/dec.c
index be23f2bd54..e078f9387b 100644
--- a/libavcodec/vvc/dec.c
+++ b/libavcodec/vvc/dec.c
@@ -121,10 +121,8 @@ static void min_cb_tl_init(TabList *l, VVCFrameContext *fc)
     TL_ADD(imf,  pic_size_in_min_cb);
     TL_ADD(imm,  pic_size_in_min_cb);
 
-    for (int i = LUMA; i <= CHROMA; i++) {
+    for (int i = LUMA; i <= CHROMA; i++)
         TL_ADD(cb_width[i],  pic_size_in_min_cb);   //is_a0_available requires this
-        TL_ADD(cpm[i],       pic_size_in_min_cb);
-    };
 }
 
 static void min_cb_nz_tl_init(TabList *l, VVCFrameContext *fc)
@@ -145,6 +143,7 @@ static void min_cb_nz_tl_init(TabList *l, VVCFrameContext *fc)
         TL_ADD(cb_pos_y[i],  pic_size_in_min_cb);
         TL_ADD(cb_height[i], pic_size_in_min_cb);
         TL_ADD(cp_mv[i],     pic_size_in_min_cb * MAX_CONTROL_POINTS);
+        TL_ADD(cpm[i],       pic_size_in_min_cb);
     }
 }
 



More information about the ffmpeg-cvslog mailing list