[FFmpeg-cvslog] lavc/vvc: Store MIP information over entire CU area

Frank Plowman git at videolan.org
Tue Dec 3 11:04:53 EET 2024


ffmpeg | branch: master | Frank Plowman <post at frankplowman.com> | Thu Nov 28 22:17:25 2024 +0000| [699322519c9dd62a00177a518c0cdfa238ca3fcd] | committer: Nuo Mi

lavc/vvc: Store MIP information over entire CU area

Previously, the code only stored the MIP mode and transpose flag in the
relevant tables at the top-left corner of the CU.  This information ends
up being retrieved in ff_vvc_intra_pred_* not based on the CU position
but instead the transform unit position (specifically, using the x0 and
y0 from get_luma_predict_unit).  There might be multiple transform units
in a CU, hence the top-left corner of the transform unit might not
coincide with the top-left corner of the CU.  Consequently, we need to
store the MIP information at all positions in the CU, not only its
top-left corner, as we already do for the MIP flag.

Signed-off-by: Frank Plowman <post at frankplowman.com>

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

 libavcodec/vvc/ctu.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/libavcodec/vvc/ctu.c b/libavcodec/vvc/ctu.c
index a32abdeb62..b2c0babe9d 100644
--- a/libavcodec/vvc/ctu.c
+++ b/libavcodec/vvc/ctu.c
@@ -975,8 +975,8 @@ static void intra_luma_pred_modes(VVCLocalContext *lc)
             for (int y = 0; y < (cb_height>>log2_min_cb_size); y++) {
                 int width = cb_width>>log2_min_cb_size;
                 memset(&fc->tab.imf[x],  cu->intra_mip_flag, width);
-                fc->tab.imtf[x] = intra_mip_transposed_flag;
-                fc->tab.imm[x]  = intra_mip_mode;
+                memset(&fc->tab.imtf[x], intra_mip_transposed_flag, width);
+                memset(&fc->tab.imm[x], intra_mip_mode, width);
                 x += pps->min_cb_width;
             }
             cu->intra_pred_mode_y = intra_mip_mode;



More information about the ffmpeg-cvslog mailing list