From: Wu Jianhua <toq...@outlook.com>

See 8.7.4.6 Residual modification process for blocks using colour space 
conversion

Signed-off-by: Wu Jianhua <toq...@outlook.com>
---
 libavcodec/vvc/dsp.h          |  2 ++
 libavcodec/vvc/dsp_template.c | 20 ++++++++++++++++++++
 2 files changed, 22 insertions(+)

diff --git a/libavcodec/vvc/dsp.h b/libavcodec/vvc/dsp.h
index 25b7755109..e9ef9f5b25 100644
--- a/libavcodec/vvc/dsp.h
+++ b/libavcodec/vvc/dsp.h
@@ -127,6 +127,8 @@ typedef struct VVCItxDSPContext {
 
     void (*itx[VVC_N_TX_TYPE][VVC_N_TX_SIZE])(int *coeffs, ptrdiff_t step, 
size_t nz);
     void (*transform_bdpcm)(int *coeffs, int width, int height, int vertical, 
int log2_transform_range);
+
+    void (*adaptive_color_transform)(int *y, int *u, int *v, int width, int 
height);
 } VVCItxDSPContext;
 
 typedef struct VVCLMCSDSPContext {
diff --git a/libavcodec/vvc/dsp_template.c b/libavcodec/vvc/dsp_template.c
index c6dc6e22a7..218a600cce 100644
--- a/libavcodec/vvc/dsp_template.c
+++ b/libavcodec/vvc/dsp_template.c
@@ -91,6 +91,24 @@ static void FUNC(transform_bdpcm)(int *coeffs, const int 
width, const int height
     }
 }
 
+// 8.7.4.6 Residual modification process for blocks using colour space 
conversion
+static void FUNC(adaptive_color_transform)(int *y, int *u, int *v, const int 
width, const int height)
+{
+    const int size = width * height;
+    const int bits = BIT_DEPTH + 1;
+
+    for (int i = 0; i < size; i++) {
+        const int y0 = av_clip_intp2(y[i], bits);
+        const int cg = av_clip_intp2(u[i], bits);
+        const int co = av_clip_intp2(v[i], bits);
+        const int t  = y0 - (cg >> 1);
+
+        y[i] = cg + t;
+        u[i] = t - (co >> 1);
+        v[i] = co + u[i];
+    }
+}
+
 static void FUNC(ff_vvc_itx_dsp_init)(VVCItxDSPContext *const itx)
 {
 #define VVC_ITX(TYPE, type, s)                                                 
 \
@@ -112,6 +130,8 @@ static void FUNC(ff_vvc_itx_dsp_init)(VVCItxDSPContext 
*const itx)
     VVC_ITX_COMMON(DCT8, dct8)
     VVC_ITX_COMMON(DST7, dst7)
 
+    itx->adaptive_color_transform = FUNC(adaptive_color_transform);
+
 #undef VVC_ITX
 #undef VVC_ITX_COMMON
 }
-- 
2.44.0.windows.1

_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

To unsubscribe, visit link above, or email
ffmpeg-devel-requ...@ffmpeg.org with subject "unsubscribe".

Reply via email to