[FFmpeg-cvslog] lavc/vvc: Fix scaling matrix DC coef derivation

Frank Plowman git at videolan.org
Tue Dec 10 14:30:01 EET 2024


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

lavc/vvc: Fix scaling matrix DC coef derivation

In 7.4.3.20 of H.266 (V3), there are two similarly-named variables:
scalingMatrixDcPred and ScalingMatrixDcRec.  The old code set
ScalingMatrixDcRec, rather than scalingMatrixDcPred, in the first two
branches of the conditions on scaling_list_copy_mode_flag[id] and
aps->scaling_list_pred_mode_flag[id].  This could lead to decode
mismatches in sequences with explicitly-signalled scaling lists.

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

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

 libavcodec/vvc/ps.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

diff --git a/libavcodec/vvc/ps.c b/libavcodec/vvc/ps.c
index 2dfa680884..283a7440b7 100644
--- a/libavcodec/vvc/ps.c
+++ b/libavcodec/vvc/ps.c
@@ -1113,17 +1113,17 @@ static void scaling_derive(VVCScalingList *sl, const H266RawAPS *aps)
         //dc
         if (id >= SL_START_16x16) {
             if (!aps->scaling_list_copy_mode_flag[id] && !aps->scaling_list_pred_mode_flag[id]) {
-                sl->scaling_matrix_dc_rec[id - SL_START_16x16] = 8;
+                dc += 8;
             } else if (!aps->scaling_list_pred_id_delta[id]) {
-                sl->scaling_matrix_dc_rec[id - SL_START_16x16] = 16;
+                dc += 16;
             } else {
                 const int ref_id = id - aps->scaling_list_pred_id_delta[id];
                 if (ref_id >= SL_START_16x16)
                     dc += sl->scaling_matrix_dc_rec[ref_id - SL_START_16x16];
                 else
                     dc += sl->scaling_matrix_rec[ref_id][0];
-                sl->scaling_matrix_dc_rec[id - SL_START_16x16] = dc & 255;
             }
+            sl->scaling_matrix_dc_rec[id - SL_START_16x16] = dc & 255;
         }
 
         //ac



More information about the ffmpeg-cvslog mailing list