Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
* [FFmpeg-devel] [PATCH] avcodec/vvc/ctu: should use the width and height of the start component (PR #20161)
@ 2025-08-07 16:57 jianhuaw
  0 siblings, 0 replies; only message in thread
From: jianhuaw @ 2025-08-07 16:57 UTC (permalink / raw)
  To: ffmpeg-devel

PR #20161 opened by jianhuaw
URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20161
Patch URL: https://code.ffmpeg.org/FFmpeg/FFmpeg/pulls/20161.patch


From a696d128bdda018802fd86ba34702564a73daa9f Mon Sep 17 00:00:00 2001
From: Wu Jianhua <toqsxw@outlook.com>
Date: Wed, 4 Jun 2025 01:07:17 +0800
Subject: [PATCH 1/6] avcodec/vvc/ctu: should use the width and height of the
 start component

This commit fixed decoding the DUAL_TREE_CHROMA palette coding unit

Signed-off-by: Wu Jianhua <toqsxw@outlook.com>
---
 libavcodec/vvc/ctu.c | 29 ++++++++++++++++++-----------
 1 file changed, 18 insertions(+), 11 deletions(-)

diff --git a/libavcodec/vvc/ctu.c b/libavcodec/vvc/ctu.c
index fd7d07f438..18cbe0fe0f 100644
--- a/libavcodec/vvc/ctu.c
+++ b/libavcodec/vvc/ctu.c
@@ -1966,7 +1966,7 @@ static void palette_qp(VVCLocalContext *lc, VVCTreeType tree_type, const bool es
             u16[off] = pix;                                         \
     } while (0)
 
-#define PALETTE_INDEX(x, y) index[(y) * cu->cb_width + (x)]
+#define PALETTE_INDEX(x, y) index[(y) * width + (x)]
 
 // 6.5.3 Horizontal and vertical traverse scan order array initialization process
 // The hTravScan and vTravScan tables require approximately 576 KB of memory.
@@ -1984,12 +1984,15 @@ static int palette_subblock_data(VVCLocalContext *lc,
     const CodingUnit *cu = lc->cu;
     TransformUnit *tu    = cu->tus.head;
     const VVCSPS *sps    = lc->fc->ps.sps;
+    const int width      = tu->tbs[0].tb_width;
+    const int height     = tu->tbs[0].tb_height;
     const int min_pos    = subset_id << 4;
-    const int max_pos    = FFMIN(min_pos + 16, cu->cb_width * cu->cb_height);
-    const int wmask      = cu->cb_width  - 1;
-    const int hmask      = cu->cb_height - 1;
-    const int wlog2      = av_log2(cu->cb_width);
-    const int hlog2      = av_log2(cu->cb_height);
+    const int max_pos    = FFMIN(min_pos + 16, width * height);
+    const int wmask      = width  - 1;
+    const int hmask      = height - 1;
+    const int wlog2      = av_log2(width);
+    const int hlog2      = av_log2(height);
+    const int start_idx  = tu->tbs[0].c_idx;
     const uint8_t esc    = cu->plt[tu->tbs[0].c_idx].size;
     uint8_t run_copy[16] = { 0 };
 
@@ -2040,10 +2043,11 @@ static int palette_subblock_data(VVCLocalContext *lc,
 
     for (int c = 0; c < tu->nb_tbs; c++) {
         TransformBlock *tb = &tu->tbs[c];
-        const Palette *plt = cu->plt + tb->c_idx;
+        const int c_idx    = tb->c_idx;
+        const Palette *plt = &cu->plt[c_idx];
         const int scale    = ff_vvc_palette_derive_scale(lc, tu, tb);
-        const int hs       = sps->hshift[c];
-        const int vs       = sps->vshift[c];
+        const int hs       = sps->hshift[c_idx] - sps->hshift[start_idx];
+        const int vs       = sps->vshift[c_idx] - sps->vshift[start_idx];
         uint8_t *u8        = (uint8_t *)tb->coeffs;
         uint16_t *u16      = (uint16_t *)tb->coeffs;
 
@@ -2089,9 +2093,12 @@ static int hls_palette_coding(VVCLocalContext *lc, const VVCTreeType tree_type)
     uint8_t run_type[MAX_PALETTE_CU_SIZE * MAX_PALETTE_CU_SIZE];
     uint8_t index[MAX_PALETTE_CU_SIZE * MAX_PALETTE_CU_SIZE];
 
+    TransformUnit *tu;
+
     ff_vvc_channel_range(&start, &end, tree_type, sps->r->sps_chroma_format_idc);
 
-    if (!palette_add_tu(lc, start, end, tree_type))
+    tu = palette_add_tu(lc, start, end, tree_type);
+    if (!tu)
         return AVERROR(ENOMEM);
 
     predictor_size = pp[start].size;
@@ -2119,7 +2126,7 @@ static int hls_palette_coding(VVCLocalContext *lc, const VVCTreeType tree_type)
     palette_qp(lc, tree_type, escape_present);
 
     index[0] = 0;
-    for (int i = 0; i <= (cu->cb_width * cu->cb_height - 1) >> 4; i++) {
+    for (int i = 0; i <= (tu->tbs[0].tb_width * tu->tbs[0].tb_height - 1) >> 4; i++) {
         ret = palette_subblock_data(lc, max_index, i, transpose,
             run_type, index, &prev_run_pos, &adjust);
         if (ret < 0)
-- 
2.49.1


From 6f5ce94319a120429e9a5f4617efc96daebe2393 Mon Sep 17 00:00:00 2001
From: Wu Jianhua <toqsxw@outlook.com>
Date: Wed, 4 Jun 2025 02:35:41 +0800
Subject: [PATCH 2/6] avcodec/h274: fix hash verification on BE

Signed-off-by: Wu Jianhua <toqsxw@outlook.com>
---
 libavcodec/h274.c | 72 +++++++++++++++++++++++++++++++++++++----------
 1 file changed, 57 insertions(+), 15 deletions(-)

diff --git a/libavcodec/h274.c b/libavcodec/h274.c
index 248af8119b..332d0c2c52 100644
--- a/libavcodec/h274.c
+++ b/libavcodec/h274.c
@@ -27,6 +27,7 @@
 
 #include "libavutil/avassert.h"
 #include "libavutil/bswap.h"
+#include "libavcodec/bswapdsp.h"
 #include "libavutil/crc.h"
 #include "libavutil/imgutils.h"
 #include "libavutil/md5.h"
@@ -795,15 +796,41 @@ static const int8_t R64T[64][64] = {
     }
 };
 
-static int verify_plane_md5(struct AVMD5 *ctx,
-    const uint8_t *src, const int w, const int h, const int stride,
-    const uint8_t *expected)
+struct H274HashContext {
+    int type;
+    struct AVMD5 *ctx;
+
+#if HAVE_BIGENDIAN
+    BswapDSPContext bdsp;
+    uint8_t *buf;
+    int      buf_size;
+#endif
+};
+
+static av_always_inline void bswap16_buf_if_be(H274HashContext *s, const int ps, const uint8_t **src, const int w)
+{
+#if HAVE_BIGENDIAN
+    if (ps) {
+        s->bdsp.bswap16_buf((uint16_t *)s->buf,
+            (const uint16_t *)*src, w);
+        *src = s->buf;
+    }
+#endif
+}
+
+static int verify_plane_md5(H274HashContext *s,
+    const uint8_t *_src, const int w, const int h, const int stride,
+    const int ps, const uint8_t *expected)
 {
 #define MD5_SIZE 16
+    struct AVMD5 *ctx = s->ctx;
     uint8_t md5[MD5_SIZE];
+
     av_md5_init(ctx);
     for (int j = 0; j < h; j++) {
-        av_md5_update(ctx, src, w);
+        const uint8_t *src = &_src[j * stride];
+        bswap16_buf_if_be(s, ps, &src, w);
+        av_md5_update(ctx, src, w << ps);
         src += stride;
     }
     av_md5_final(ctx, md5);
@@ -814,15 +841,16 @@ static int verify_plane_md5(struct AVMD5 *ctx,
     return 0;
 }
 
-static int verify_plane_crc(const uint8_t *src, const int w, const int h, const int stride,
-    uint16_t expected)
+static int verify_plane_crc(H274HashContext *s, const uint8_t *_src, const int w, const int h, const int stride,
+    const int ps, uint16_t expected)
 {
     uint32_t crc = 0x0F1D;     // CRC-16-CCITT-AUG
     const AVCRC *ctx = av_crc_get_table(AV_CRC_16_CCITT);
 
-    expected = av_le2ne32(expected);
     for (int j = 0; j < h; j++) {
-        crc = av_crc(ctx, crc, src, w);
+        const uint8_t *src = &_src[j * stride];
+        bswap16_buf_if_be(s, ps, &src, w);
+        crc = av_crc(ctx, crc, src, w << ps);
         src += stride;
     }
     crc = av_bswap16(crc);
@@ -863,11 +891,6 @@ enum {
     HASH_LAST = HASH_CHECKSUM,
 };
 
-struct H274HashContext {
-    int type;
-    struct AVMD5 *ctx;
-};
-
 void ff_h274_hash_freep(H274HashContext **ctx)
 {
     if (*ctx) {
@@ -875,6 +898,9 @@ void ff_h274_hash_freep(H274HashContext **ctx)
         if (c->ctx)
             av_free(c->ctx);
         av_freep(ctx);
+#if HAVE_BIGENDIAN
+        av_freep(&c->buf);
+#endif
     }
 }
 
@@ -906,6 +932,10 @@ int ff_h274_hash_init(H274HashContext **ctx, const int type)
             return AVERROR(ENOMEM);
     }
 
+#if HAVE_BIGENDIAN
+    ff_bswapdsp_init(&c->bdsp);
+#endif
+
     return 0;
 }
 
@@ -932,10 +962,22 @@ int ff_h274_hash_verify(H274HashContext *c, const H274SEIPictureHash *hash,
         const uint8_t *src = frame->data[i];
         const int stride   = frame->linesize[i];
 
+#if HAVE_BIGENDIAN
+        if (c->type != HASH_CHECKSUM) {
+            if (ps) {
+                av_fast_malloc(&c->buf, &c->buf_size,
+                    FFMAX3(frame->linesize[0], frame->linesize[1],
+                        frame->linesize[2]));
+                if (!c->buf)
+                    return AVERROR(ENOMEM);
+            }
+        }
+#endif
+
         if (c->type == HASH_MD5SUM)
-            err = verify_plane_md5(c->ctx, src, w << ps, h, stride, hash->md5[i]);
+            err = verify_plane_md5(c, src, w, h, stride, ps, hash->md5[i]);
         else if (c->type == HASH_CRC)
-            err = verify_plane_crc(src, w << ps, h, stride, hash->crc[i]);
+            err = verify_plane_crc(c, src, w, h, stride, ps, hash->crc[i]);
         else if (c->type == HASH_CHECKSUM)
             err = verify_plane_checksum(src, w, h, stride, ps, hash->checksum[i]);
         if (err < 0)
-- 
2.49.1


From a153af23e37ae46a6fafa8754ea1584d8697e438 Mon Sep 17 00:00:00 2001
From: Wu Jianhua <toqsxw@outlook.com>
Date: Sun, 8 Jun 2025 23:15:24 +0800
Subject: [PATCH 3/6] avcodec/vvc/dec: fix typo and also output log when the
 checksum is correct

It's helpful for developers and the same as the hevcdec.

Signed-off-by: Wu Jianhua <toqsxw@outlook.com>
---
 libavcodec/vvc/dec.c | 12 +++++-------
 1 file changed, 5 insertions(+), 7 deletions(-)

diff --git a/libavcodec/vvc/dec.c b/libavcodec/vvc/dec.c
index 90fff3a03f..6f52306080 100644
--- a/libavcodec/vvc/dec.c
+++ b/libavcodec/vvc/dec.c
@@ -1112,13 +1112,11 @@ static int frame_end(VVCContext *s, VVCFrameContext *fc)
                 return ret;
 
             ret = ff_h274_hash_verify(s->hash_ctx, &sei->picture_hash, fc->ref->frame, fc->ps.pps->width, fc->ps.pps->height);
-            if (ret < 0) {
-                av_log(s->avctx, AV_LOG_ERROR,
-                    "Verifying checksum for frame with decoder_order %d: failed\n",
-                    (int)fc->decode_order);
-                if (s->avctx->err_recognition & AV_EF_EXPLODE)
-                    return ret;
-            }
+            av_log(s->avctx, ret < 0 ? AV_LOG_ERROR : AV_LOG_DEBUG,
+                "Verifying checksum for frame with decode_order %d: %s\n",
+                (int)fc->decode_order, ret < 0 ? "incorrect": "correct");
+            if (ret < 0 && (s->avctx->err_recognition & AV_EF_EXPLODE))
+                return ret;
         }
     }
 
-- 
2.49.1


From a1ce18fba1be80ca68f1568c22c3bcadbffb9a02 Mon Sep 17 00:00:00 2001
From: Wu Jianhua <toqsxw@outlook.com>
Date: Wed, 4 Jun 2025 01:50:28 +0800
Subject: [PATCH 4/6] fate/vvc: add vvc-conformance-10b422_L_5

This commit added 10b422_L_5 for testing palette mode.

Signed-off-by: Wu Jianhua <toqsxw@outlook.com>
---
 tests/fate/vvc.mak                        |  7 ++++++-
 tests/ref/fate/vvc-conformance-10b422_L_5 | 22 ++++++++++++++++++++++
 2 files changed, 28 insertions(+), 1 deletion(-)
 create mode 100644 tests/ref/fate/vvc-conformance-10b422_L_5

diff --git a/tests/fate/vvc.mak b/tests/fate/vvc.mak
index c882010713..0d8b5015e0 100644
--- a/tests/fate/vvc.mak
+++ b/tests/fate/vvc.mak
@@ -27,6 +27,9 @@ VVC_SAMPLES_10BIT =       \
     WPP_A_3               \
     WRAP_A_4              \
 
+VVC_SAMPLES_422_10BIT =   \
+    10b422_L_5            \
+
 VVC_SAMPLES_444_10BIT =   \
     CROP_B_4              \
 
@@ -35,11 +38,12 @@ VVC_SAMPLES_444_10BIT =   \
 # OPI_B_3 (Inter layer ref support needed)
 # VPS_A_3 (Inter layer ref support needed)
 
-FATE_VVC_VARS := 8BIT 10BIT 444_10BIT
+FATE_VVC_VARS := 8BIT 10BIT 422_10BIT 444_10BIT
 $(foreach VAR,$(FATE_VVC_VARS), $(eval VVC_TESTS_$(VAR) := $(addprefix fate-vvc-conformance-, $(VVC_SAMPLES_$(VAR)))))
 
 $(VVC_TESTS_8BIT): SCALE_OPTS := -pix_fmt yuv420p
 $(VVC_TESTS_10BIT): SCALE_OPTS := -pix_fmt yuv420p10le -vf scale
+$(VVC_TESTS_422_10BIT): SCALE_OPTS := -pix_fmt yuv422p10le -vf scale
 $(VVC_TESTS_444_10BIT): SCALE_OPTS := -pix_fmt yuv444p10le -vf scale
 fate-vvc-conformance-%: CMD = framecrc -c:v vvc -i $(TARGET_SAMPLES)/vvc-conformance/$(subst fate-vvc-conformance-,,$(@)).bit $(SCALE_OPTS)
 fate-vvc-output-ref: CMD = framecrc -c:v vvc -i $(TARGET_SAMPLES)/vvc/Hierarchical.bit $(SCALE_OPTS)
@@ -49,6 +53,7 @@ fate-vvc-wpp-single-slice-pic: CMD = framecrc -c:v vvc -i $(TARGET_SAMPLES)/vvc/
 FATE_VVC-$(call FRAMECRC, VVC, VVC, VVC_PARSER) += $(VVC_TESTS_8BIT) fate-vvc-output-ref
 FATE_VVC-$(call FRAMECRC, VVC, VVC, VVC_PARSER SCALE_FILTER) +=                   \
                                                     $(VVC_TESTS_10BIT)            \
+                                                    $(VVC_TESTS_422_10BIT)        \
                                                     $(VVC_TESTS_444_10BIT)        \
                                                     fate-vvc-frames-with-ltr      \
                                                     fate-vvc-wpp-single-slice-pic \
diff --git a/tests/ref/fate/vvc-conformance-10b422_L_5 b/tests/ref/fate/vvc-conformance-10b422_L_5
new file mode 100644
index 0000000000..373c550b1f
--- /dev/null
+++ b/tests/ref/fate/vvc-conformance-10b422_L_5
@@ -0,0 +1,22 @@
+#tb 0: 1/25
+#media_type 0: video
+#codec_id 0: rawvideo
+#dimensions 0: 1920x1080
+#sar 0: 0/1
+0,          0,          0,        1,  8294400, 0x4c24b4d8
+0,          1,          1,        1,  8294400, 0xfcaa4734
+0,          2,          2,        1,  8294400, 0xc9a32414
+0,          3,          3,        1,  8294400, 0x7a42ba51
+0,          4,          4,        1,  8294400, 0xcf8b2dd5
+0,          5,          5,        1,  8294400, 0x2f0701ec
+0,          6,          6,        1,  8294400, 0x863f665f
+0,          7,          7,        1,  8294400, 0xef2e70bd
+0,          8,          8,        1,  8294400, 0xeb221c2b
+0,          9,          9,        1,  8294400, 0x3c074b8f
+0,         10,         10,        1,  8294400, 0xb246c65a
+0,         11,         11,        1,  8294400, 0x94ede8e8
+0,         12,         12,        1,  8294400, 0x2143a40b
+0,         13,         13,        1,  8294400, 0xc04eb9e3
+0,         14,         14,        1,  8294400, 0x00f3a419
+0,         15,         15,        1,  8294400, 0x6ae90b65
+0,         16,         16,        1,  8294400, 0x36375084
-- 
2.49.1


From 311d16cc56c8eee45bb4babf28ade4ace41626ba Mon Sep 17 00:00:00 2001
From: Wu Jianhua <toqsxw@outlook.com>
Date: Wed, 4 Jun 2025 01:55:14 +0800
Subject: [PATCH 5/6] fate/vvc: add vvc-conformance-ACT_A_3

Signed-off-by: Wu Jianhua <toqsxw@outlook.com>
---
 tests/fate/vvc.mak                     |  1 +
 tests/ref/fate/vvc-conformance-ACT_A_3 | 70 ++++++++++++++++++++++++++
 2 files changed, 71 insertions(+)
 create mode 100644 tests/ref/fate/vvc-conformance-ACT_A_3

diff --git a/tests/fate/vvc.mak b/tests/fate/vvc.mak
index 0d8b5015e0..60bc390d66 100644
--- a/tests/fate/vvc.mak
+++ b/tests/fate/vvc.mak
@@ -32,6 +32,7 @@ VVC_SAMPLES_422_10BIT =   \
 
 VVC_SAMPLES_444_10BIT =   \
     CROP_B_4              \
+    ACT_A_3               \
 
 # not tested:
 # BOUNDARY_A_3 (too big)
diff --git a/tests/ref/fate/vvc-conformance-ACT_A_3 b/tests/ref/fate/vvc-conformance-ACT_A_3
new file mode 100644
index 0000000000..e145aeb67f
--- /dev/null
+++ b/tests/ref/fate/vvc-conformance-ACT_A_3
@@ -0,0 +1,70 @@
+#tb 0: 1/25
+#media_type 0: video
+#codec_id 0: rawvideo
+#dimensions 0: 1280x720
+#sar 0: 0/1
+0,          0,          0,        1,  5529600, 0xdb9b6d0d
+0,          1,          1,        1,  5529600, 0x960e474e
+0,          2,          2,        1,  5529600, 0xf1cb1670
+0,          3,          3,        1,  5529600, 0xc4fa3d5e
+0,          4,          4,        1,  5529600, 0x2912fa02
+0,          5,          5,        1,  5529600, 0xb9acfc3e
+0,          6,          6,        1,  5529600, 0xea39f561
+0,          7,          7,        1,  5529600, 0xeff704c9
+0,          8,          8,        1,  5529600, 0xb972e1d6
+0,          9,          9,        1,  5529600, 0x0cf45b11
+0,         10,         10,        1,  5529600, 0xee7b876f
+0,         11,         11,        1,  5529600, 0xbe7d6952
+0,         12,         12,        1,  5529600, 0x809d6cd4
+0,         13,         13,        1,  5529600, 0x5b4502e1
+0,         14,         14,        1,  5529600, 0xf23878bd
+0,         15,         15,        1,  5529600, 0x25eb4d6d
+0,         16,         16,        1,  5529600, 0x7fcfaeed
+0,         17,         17,        1,  5529600, 0x4e2c9003
+0,         18,         18,        1,  5529600, 0x69e6385b
+0,         19,         19,        1,  5529600, 0xb8681116
+0,         20,         20,        1,  5529600, 0x90b890ca
+0,         21,         21,        1,  5529600, 0x94ec15bb
+0,         22,         22,        1,  5529600, 0x0dcaf2e5
+0,         23,         23,        1,  5529600, 0x52897d14
+0,         24,         24,        1,  5529600, 0x578f7356
+0,         25,         25,        1,  5529600, 0x90113d89
+0,         26,         26,        1,  5529600, 0x2b09a1de
+0,         27,         27,        1,  5529600, 0xc3036365
+0,         28,         28,        1,  5529600, 0xb13cb584
+0,         29,         29,        1,  5529600, 0x1ea6ae1a
+0,         30,         30,        1,  5529600, 0xfd408ed8
+0,         31,         31,        1,  5529600, 0x36d1bdae
+0,         32,         32,        1,  5529600, 0xe7dc95a4
+0,         33,         33,        1,  5529600, 0x8f9ac8b9
+0,         34,         34,        1,  5529600, 0x6af3a821
+0,         35,         35,        1,  5529600, 0xc72ac000
+0,         36,         36,        1,  5529600, 0x0fab2899
+0,         37,         37,        1,  5529600, 0x3ea41597
+0,         38,         38,        1,  5529600, 0x5535be74
+0,         39,         39,        1,  5529600, 0x02ba563e
+0,         40,         40,        1,  5529600, 0xdfbfa9a5
+0,         41,         41,        1,  5529600, 0x9bed96fa
+0,         42,         42,        1,  5529600, 0x3a9df1e9
+0,         43,         43,        1,  5529600, 0x3c84b16d
+0,         44,         44,        1,  5529600, 0xb10a26c8
+0,         45,         45,        1,  5529600, 0x5a30baee
+0,         46,         46,        1,  5529600, 0xaa55eba4
+0,         47,         47,        1,  5529600, 0x1873de87
+0,         48,         48,        1,  5529600, 0x3ad98e8e
+0,         49,         49,        1,  5529600, 0xf1a58485
+0,         50,         50,        1,  5529600, 0x43e678df
+0,         51,         51,        1,  5529600, 0xf6f10a9e
+0,         52,         52,        1,  5529600, 0xe89bd6c0
+0,         53,         53,        1,  5529600, 0x0b793b1b
+0,         54,         54,        1,  5529600, 0xef4898d3
+0,         55,         55,        1,  5529600, 0x5b0f10d0
+0,         56,         56,        1,  5529600, 0xec2cc417
+0,         57,         57,        1,  5529600, 0x887759fe
+0,         58,         58,        1,  5529600, 0x47a45789
+0,         59,         59,        1,  5529600, 0xa0f6933b
+0,         60,         60,        1,  5529600, 0x77290b7a
+0,         61,         61,        1,  5529600, 0xbfa5a26d
+0,         62,         62,        1,  5529600, 0xee99b0d5
+0,         63,         63,        1,  5529600, 0x0fdd7e97
+0,         64,         64,        1,  5529600, 0x3173af66
-- 
2.49.1


From bf7bfe24a53d1345d741129328a58561d68ce93f Mon Sep 17 00:00:00 2001
From: Wu Jianhua <toqsxw@outlook.com>
Date: Wed, 4 Jun 2025 02:00:07 +0800
Subject: [PATCH 6/6] fate/vvc: add vvc-conformance-FIELD_A_4

Signed-off-by: Wu Jianhua <toqsxw@outlook.com>
---
 tests/fate/vvc.mak                       |  1 +
 tests/ref/fate/vvc-conformance-FIELD_A_4 | 25 ++++++++++++++++++++++++
 2 files changed, 26 insertions(+)
 create mode 100644 tests/ref/fate/vvc-conformance-FIELD_A_4

diff --git a/tests/fate/vvc.mak b/tests/fate/vvc.mak
index 60bc390d66..6d7873f6e4 100644
--- a/tests/fate/vvc.mak
+++ b/tests/fate/vvc.mak
@@ -26,6 +26,7 @@ VVC_SAMPLES_10BIT =       \
     WP_A_3                \
     WPP_A_3               \
     WRAP_A_4              \
+    FIELD_A_4             \
 
 VVC_SAMPLES_422_10BIT =   \
     10b422_L_5            \
diff --git a/tests/ref/fate/vvc-conformance-FIELD_A_4 b/tests/ref/fate/vvc-conformance-FIELD_A_4
new file mode 100644
index 0000000000..bd36624eb4
--- /dev/null
+++ b/tests/ref/fate/vvc-conformance-FIELD_A_4
@@ -0,0 +1,25 @@
+#tb 0: 1/25
+#media_type 0: video
+#codec_id 0: rawvideo
+#dimensions 0: 720x240
+#sar 0: 1/1
+0,          0,          0,        1,   518400, 0xc9a6c44a
+0,          1,          1,        1,   518400, 0x69aebed0
+0,          2,          2,        1,   518400, 0x579c56eb
+0,          3,          3,        1,   518400, 0xa362c795
+0,          4,          4,        1,   518400, 0xaa91f040
+0,          5,          5,        1,   518400, 0x23fbd4bf
+0,          6,          6,        1,   518400, 0x1964b60f
+0,          7,          7,        1,   518400, 0xfe1c25d5
+0,          8,          8,        1,   518400, 0x959474f6
+0,          9,          9,        1,   518400, 0xa39557ac
+0,         10,         10,        1,   518400, 0x04ad1eaa
+0,         11,         11,        1,   518400, 0x8b290745
+0,         12,         12,        1,   518400, 0x2de33aab
+0,         13,         13,        1,   518400, 0xaada1b0a
+0,         14,         14,        1,   518400, 0xf7d23ea4
+0,         15,         15,        1,   518400, 0xdbd0d590
+0,         16,         16,        1,   518400, 0x457c8b65
+0,         17,         17,        1,   518400, 0x1963514d
+0,         18,         18,        1,   518400, 0x2774fa12
+0,         19,         19,        1,   518400, 0xd56b3113
-- 
2.49.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-request@ffmpeg.org with subject "unsubscribe".

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2025-08-07 16:57 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-08-07 16:57 [FFmpeg-devel] [PATCH] avcodec/vvc/ctu: should use the width and height of the start component (PR #20161) jianhuaw

Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \
		ffmpegdev@gitmailbox.com
	public-inbox-index ffmpegdev

Example config snippet for mirrors.


AGPL code for this site: git clone https://public-inbox.org/public-inbox.git