1*4882a593SmuzhiyunFrom 25eecfea63e8151fb472edcacabe1b979accc45d Mon Sep 17 00:00:00 2001
2*4882a593SmuzhiyunFrom: Jiajian Wu <jair.wu@rock-chips.com>
3*4882a593SmuzhiyunDate: Mon, 12 Jun 2023 17:07:55 +0800
4*4882a593SmuzhiyunSubject: [PATCH] gst-libs: Support NV16_10LE40
5*4882a593Smuzhiyun
6*4882a593SmuzhiyunSigned-off-by: Jiajian Wu <jair.wu@rock-chips.com>
7*4882a593Smuzhiyun---
8*4882a593Smuzhiyun gst-libs/gst/video/video-converter.c |   3 +
9*4882a593Smuzhiyun gst-libs/gst/video/video-format.c    | 161 +++++++++++++++++++++++++++
10*4882a593Smuzhiyun gst-libs/gst/video/video-format.h    |   6 +-
11*4882a593Smuzhiyun gst-libs/gst/video/video-info.c      |   7 ++
12*4882a593Smuzhiyun tests/check/libs/video.c             |   1 +
13*4882a593Smuzhiyun 5 files changed, 176 insertions(+), 2 deletions(-)
14*4882a593Smuzhiyun
15*4882a593Smuzhiyundiff --git a/gst-libs/gst/video/video-converter.c b/gst-libs/gst/video/video-converter.c
16*4882a593Smuzhiyunindex c49d9a0..5a5fc6e 100644
17*4882a593Smuzhiyun--- a/gst-libs/gst/video/video-converter.c
18*4882a593Smuzhiyun+++ b/gst-libs/gst/video/video-converter.c
19*4882a593Smuzhiyun@@ -2781,6 +2781,8 @@ get_rga_format (GstVideoFormat format)
20*4882a593Smuzhiyun       return RK_FORMAT_YCbCr_422_P;
21*4882a593Smuzhiyun     case GST_VIDEO_FORMAT_NV12_10LE40:
22*4882a593Smuzhiyun       return RK_FORMAT_YCbCr_420_SP_10B;
23*4882a593Smuzhiyun+    case GST_VIDEO_FORMAT_NV16_10LE40:
24*4882a593Smuzhiyun+      return RK_FORMAT_YCbCr_422_SP_10B;
25*4882a593Smuzhiyun     default:
26*4882a593Smuzhiyun       return RK_FORMAT_UNKNOWN;
27*4882a593Smuzhiyun   }
28*4882a593Smuzhiyun@@ -7524,6 +7526,7 @@ get_scale_format (GstVideoFormat format, gint plane)
29*4882a593Smuzhiyun     case GST_VIDEO_FORMAT_NV12_10LE32:
30*4882a593Smuzhiyun     case GST_VIDEO_FORMAT_NV16_10LE32:
31*4882a593Smuzhiyun     case GST_VIDEO_FORMAT_NV12_10LE40:
32*4882a593Smuzhiyun+    case GST_VIDEO_FORMAT_NV16_10LE40:
33*4882a593Smuzhiyun     case GST_VIDEO_FORMAT_BGR10A2_LE:
34*4882a593Smuzhiyun     case GST_VIDEO_FORMAT_RGB10A2_LE:
35*4882a593Smuzhiyun     case GST_VIDEO_FORMAT_Y444_16BE:
36*4882a593Smuzhiyundiff --git a/gst-libs/gst/video/video-format.c b/gst-libs/gst/video/video-format.c
37*4882a593Smuzhiyunindex d869f9a..fcebf74 100644
38*4882a593Smuzhiyun--- a/gst-libs/gst/video/video-format.c
39*4882a593Smuzhiyun+++ b/gst-libs/gst/video/video-format.c
40*4882a593Smuzhiyun@@ -5663,6 +5663,162 @@ pack_NV12_10LE40 (const GstVideoFormatInfo * info, GstVideoPackFlags flags,
41*4882a593Smuzhiyun   }
42*4882a593Smuzhiyun }
43*4882a593Smuzhiyun
44*4882a593Smuzhiyun+#define PACK_NV16_10LE40 GST_VIDEO_FORMAT_AYUV64, unpack_NV16_10LE40, 1, pack_NV16_10LE40
45*4882a593Smuzhiyun+static void
46*4882a593Smuzhiyun+unpack_NV16_10LE40 (const GstVideoFormatInfo * info, GstVideoPackFlags flags,
47*4882a593Smuzhiyun+    gpointer dest, const gpointer data[GST_VIDEO_MAX_PLANES],
48*4882a593Smuzhiyun+    const gint stride[GST_VIDEO_MAX_PLANES], gint x, gint y, gint width)
49*4882a593Smuzhiyun+{
50*4882a593Smuzhiyun+  gint i;
51*4882a593Smuzhiyun+  guint16 *restrict d = dest;
52*4882a593Smuzhiyun+  const guint8 *restrict sy = GET_PLANE_LINE (0, y);
53*4882a593Smuzhiyun+  const guint8 *restrict suv = GET_PLANE_LINE (1, y);
54*4882a593Smuzhiyun+  guint16 Y0 = 0, Y1 = 0, Yn = 0, Un = 0, Vn = 0;
55*4882a593Smuzhiyun+  guint32 UV = 0;
56*4882a593Smuzhiyun+
57*4882a593Smuzhiyun+  for (i = 0; i < width; i++) {
58*4882a593Smuzhiyun+    gboolean update_c = FALSE;
59*4882a593Smuzhiyun+
60*4882a593Smuzhiyun+    switch (i & 3) {
61*4882a593Smuzhiyun+      case 0:
62*4882a593Smuzhiyun+        Y0 = GST_READ_UINT16_LE (sy);
63*4882a593Smuzhiyun+        Yn = Y0 & 0x3ff;
64*4882a593Smuzhiyun+        sy += 2;
65*4882a593Smuzhiyun+
66*4882a593Smuzhiyun+        UV = GST_READ_UINT32_LE (suv);
67*4882a593Smuzhiyun+        Un = UV & 0x3ff;
68*4882a593Smuzhiyun+        Vn = (UV >> 10) & 0x3ff;
69*4882a593Smuzhiyun+        suv += 4;
70*4882a593Smuzhiyun+
71*4882a593Smuzhiyun+        Yn <<= 6;
72*4882a593Smuzhiyun+        Un <<= 6;
73*4882a593Smuzhiyun+        Vn <<= 6;
74*4882a593Smuzhiyun+        update_c = TRUE;
75*4882a593Smuzhiyun+        break;
76*4882a593Smuzhiyun+      case 1:
77*4882a593Smuzhiyun+        Y1 = GST_READ_UINT16_LE (sy);
78*4882a593Smuzhiyun+        Yn = (Y0 >> 10) | ((Y1 & 0xf) << 6);
79*4882a593Smuzhiyun+        sy += 2;
80*4882a593Smuzhiyun+
81*4882a593Smuzhiyun+        Yn <<= 6;
82*4882a593Smuzhiyun+        break;
83*4882a593Smuzhiyun+      case 2:
84*4882a593Smuzhiyun+        Yn = (Y1 >> 4) & 0x3ff;
85*4882a593Smuzhiyun+
86*4882a593Smuzhiyun+        Un = (UV >> 20) & 0x3ff;
87*4882a593Smuzhiyun+        Vn = (UV >> 30);
88*4882a593Smuzhiyun+        UV = GST_READ_UINT8 (suv);
89*4882a593Smuzhiyun+        Vn |= (UV << 2);
90*4882a593Smuzhiyun+        suv++;
91*4882a593Smuzhiyun+
92*4882a593Smuzhiyun+        Yn <<= 6;
93*4882a593Smuzhiyun+        Un <<= 6;
94*4882a593Smuzhiyun+        Vn <<= 6;
95*4882a593Smuzhiyun+        update_c = TRUE;
96*4882a593Smuzhiyun+        break;
97*4882a593Smuzhiyun+      case 3:
98*4882a593Smuzhiyun+        Y0 = GST_READ_UINT8 (sy);
99*4882a593Smuzhiyun+        Yn = (Y1 >> 14) | (Y0 << 2);
100*4882a593Smuzhiyun+        sy++;
101*4882a593Smuzhiyun+
102*4882a593Smuzhiyun+        Yn <<= 6;
103*4882a593Smuzhiyun+        break;
104*4882a593Smuzhiyun+    }
105*4882a593Smuzhiyun+
106*4882a593Smuzhiyun+    if (!(flags & GST_VIDEO_PACK_FLAG_TRUNCATE_RANGE)) {
107*4882a593Smuzhiyun+      Yn |= Yn >> 10;
108*4882a593Smuzhiyun+      if (update_c) {
109*4882a593Smuzhiyun+        Un |= Un >> 10;
110*4882a593Smuzhiyun+        Vn |= Vn >> 10;
111*4882a593Smuzhiyun+      }
112*4882a593Smuzhiyun+    }
113*4882a593Smuzhiyun+
114*4882a593Smuzhiyun+    d[i * 4 + 0] = 0xffff;
115*4882a593Smuzhiyun+    d[i * 4 + 1] = Yn;
116*4882a593Smuzhiyun+    d[i * 4 + 2] = Un;
117*4882a593Smuzhiyun+    d[i * 4 + 3] = Vn;
118*4882a593Smuzhiyun+  }
119*4882a593Smuzhiyun+}
120*4882a593Smuzhiyun+
121*4882a593Smuzhiyun+static void
122*4882a593Smuzhiyun+pack_NV16_10LE40 (const GstVideoFormatInfo * info, GstVideoPackFlags flags,
123*4882a593Smuzhiyun+    const gpointer src, gint sstride, gpointer data[GST_VIDEO_MAX_PLANES],
124*4882a593Smuzhiyun+    const gint stride[GST_VIDEO_MAX_PLANES], GstVideoChromaSite chroma_site,
125*4882a593Smuzhiyun+    gint y, gint width)
126*4882a593Smuzhiyun+{
127*4882a593Smuzhiyun+  gint i;
128*4882a593Smuzhiyun+  guint8 *restrict dy = GET_PLANE_LINE (0, y);
129*4882a593Smuzhiyun+  guint8 *restrict duv = GET_PLANE_LINE (1, y);
130*4882a593Smuzhiyun+  guint16 Y0 = 0, Y1 = 0, Y2 = 0, Y3 = 0;
131*4882a593Smuzhiyun+  guint16 U0 = 0, V0 = 0, U1 = 0, V1 = 0;
132*4882a593Smuzhiyun+  const guint16 *restrict s = src;
133*4882a593Smuzhiyun+
134*4882a593Smuzhiyun+  for (i = 0; i < width; i++) {
135*4882a593Smuzhiyun+    switch (i & 3) {
136*4882a593Smuzhiyun+      case 0:
137*4882a593Smuzhiyun+        Y0 = s[i * 4 + 1] >> 6;
138*4882a593Smuzhiyun+        GST_WRITE_UINT8 (dy, Y0 & 0xff);
139*4882a593Smuzhiyun+        dy++;
140*4882a593Smuzhiyun+
141*4882a593Smuzhiyun+        U0 = s[i * 4 + 2] >> 6;
142*4882a593Smuzhiyun+        V0 = s[i * 4 + 3] >> 6;
143*4882a593Smuzhiyun+
144*4882a593Smuzhiyun+        GST_WRITE_UINT8 (duv, U0 & 0xff);
145*4882a593Smuzhiyun+        duv++;
146*4882a593Smuzhiyun+
147*4882a593Smuzhiyun+        GST_WRITE_UINT8 (duv, (U0 >> 8) | ((V0 & 0x3f) << 2));
148*4882a593Smuzhiyun+        duv++;
149*4882a593Smuzhiyun+
150*4882a593Smuzhiyun+        break;
151*4882a593Smuzhiyun+      case 1:
152*4882a593Smuzhiyun+        Y1 = s[i * 4 + 1] >> 6;
153*4882a593Smuzhiyun+        GST_WRITE_UINT8 (dy, (Y0 >> 8) | ((Y1 & 0x3f) << 2));
154*4882a593Smuzhiyun+        dy++;
155*4882a593Smuzhiyun+        break;
156*4882a593Smuzhiyun+      case 2:
157*4882a593Smuzhiyun+        Y2 = s[i * 4 + 1] >> 6;
158*4882a593Smuzhiyun+        GST_WRITE_UINT8 (dy, (Y1 >> 6) | ((Y2 & 0xf) << 4));
159*4882a593Smuzhiyun+        dy++;
160*4882a593Smuzhiyun+
161*4882a593Smuzhiyun+        U1 = s[i * 4 + 2] >> 6;
162*4882a593Smuzhiyun+        V1 = s[i * 4 + 3] >> 6;
163*4882a593Smuzhiyun+
164*4882a593Smuzhiyun+        GST_WRITE_UINT8 (duv, (V0 >> 6) | ((U1 & 0xf) << 4));
165*4882a593Smuzhiyun+        duv++;
166*4882a593Smuzhiyun+
167*4882a593Smuzhiyun+        GST_WRITE_UINT8 (duv, (U1 >> 4) | ((V1 & 0x3) << 6));
168*4882a593Smuzhiyun+        duv++;
169*4882a593Smuzhiyun+
170*4882a593Smuzhiyun+        GST_WRITE_UINT8 (duv, V1 >> 2);
171*4882a593Smuzhiyun+        duv++;
172*4882a593Smuzhiyun+        break;
173*4882a593Smuzhiyun+      case 3:
174*4882a593Smuzhiyun+        Y3 = s[i * 4 + 1] >> 6;
175*4882a593Smuzhiyun+        GST_WRITE_UINT8 (dy, (Y2 >> 4) | ((Y3 & 0x3) << 6));
176*4882a593Smuzhiyun+        dy++;
177*4882a593Smuzhiyun+        GST_WRITE_UINT8 (dy, (Y3 >> 2));
178*4882a593Smuzhiyun+        dy++;
179*4882a593Smuzhiyun+        break;
180*4882a593Smuzhiyun+    }
181*4882a593Smuzhiyun+  }
182*4882a593Smuzhiyun+
183*4882a593Smuzhiyun+  switch (width & 3) {
184*4882a593Smuzhiyun+    case 0:
185*4882a593Smuzhiyun+      break;
186*4882a593Smuzhiyun+    case 1:
187*4882a593Smuzhiyun+      GST_WRITE_UINT8 (dy, Y0 >> 8);
188*4882a593Smuzhiyun+      GST_WRITE_UINT8 (duv, V0 >> 6);
189*4882a593Smuzhiyun+      break;
190*4882a593Smuzhiyun+    case 2:
191*4882a593Smuzhiyun+      GST_WRITE_UINT8 (dy, Y1 >> 6);
192*4882a593Smuzhiyun+      GST_WRITE_UINT8 (duv, V0 >> 6);
193*4882a593Smuzhiyun+      break;
194*4882a593Smuzhiyun+    case 3:
195*4882a593Smuzhiyun+      GST_WRITE_UINT8 (dy, Y2 >> 4);
196*4882a593Smuzhiyun+      break;
197*4882a593Smuzhiyun+  }
198*4882a593Smuzhiyun+}
199*4882a593Smuzhiyun+
200*4882a593Smuzhiyun #define PACK_VUYA GST_VIDEO_FORMAT_AYUV, unpack_VUYA, 1, pack_VUYA
201*4882a593Smuzhiyun static void
202*4882a593Smuzhiyun unpack_VUYA (const GstVideoFormatInfo * info, GstVideoPackFlags flags,
203*4882a593Smuzhiyun@@ -7225,6 +7381,9 @@ static const VideoFormat formats[] = {
204*4882a593Smuzhiyun   MAKE_YUV_C_LE_FORMAT (NV12_10LE40, "raw video",
205*4882a593Smuzhiyun       GST_MAKE_FOURCC ('R', 'K', '2', '0'), DPTH10_10_10, PSTR0, PLANE011,
206*4882a593Smuzhiyun       OFFS0, SUB420, PACK_NV12_10LE40),
207*4882a593Smuzhiyun+  MAKE_YUV_C_LE_FORMAT (NV16_10LE40, "raw video",
208*4882a593Smuzhiyun+      GST_MAKE_FOURCC ('R', 'K', '6', '0'), DPTH10_10_10, PSTR0, PLANE011,
209*4882a593Smuzhiyun+      OFFS0, SUB422, PACK_NV16_10LE40),
210*4882a593Smuzhiyun   MAKE_YUV_FORMAT (Y210, "raw video", GST_MAKE_FOURCC ('Y', '2', '1', '0'),
211*4882a593Smuzhiyun       DPTH10_10_10, PSTR488, PLANE0, OFFS0, SUB422, PACK_Y210),
212*4882a593Smuzhiyun   MAKE_YUV_FORMAT (Y410, "raw video", GST_MAKE_FOURCC ('Y', '4', '1', '0'),
213*4882a593Smuzhiyun@@ -7547,6 +7706,8 @@ gst_video_format_from_fourcc (guint32 fourcc)
214*4882a593Smuzhiyun       return GST_VIDEO_FORMAT_NV16_10LE32;
215*4882a593Smuzhiyun     case GST_MAKE_FOURCC ('R', 'K', '2', '0'):
216*4882a593Smuzhiyun       return GST_VIDEO_FORMAT_NV12_10LE40;
217*4882a593Smuzhiyun+    case GST_MAKE_FOURCC ('R', 'K', '6', '0'):
218*4882a593Smuzhiyun+      return GST_VIDEO_FORMAT_NV16_10LE40;
219*4882a593Smuzhiyun     case GST_MAKE_FOURCC ('Y', '4', '1', '0'):
220*4882a593Smuzhiyun       return GST_VIDEO_FORMAT_Y410;
221*4882a593Smuzhiyun     case GST_MAKE_FOURCC ('V', 'U', 'Y', 'A'):
222*4882a593Smuzhiyundiff --git a/gst-libs/gst/video/video-format.h b/gst-libs/gst/video/video-format.h
223*4882a593Smuzhiyunindex 7a645cc..fb35ed6 100644
224*4882a593Smuzhiyun--- a/gst-libs/gst/video/video-format.h
225*4882a593Smuzhiyun+++ b/gst-libs/gst/video/video-format.h
226*4882a593Smuzhiyun@@ -145,6 +145,7 @@ G_BEGIN_DECLS
227*4882a593Smuzhiyun  * @GST_VIDEO_FORMAT_NV12_16L32S: NV12 with 16x32 Y tiles and 16x16 UV tiles. (Since: 1.22)
228*4882a593Smuzhiyun  * @GST_VIDEO_FORMAT_NV12_8L128 : NV12 with 8x128 tiles in linear order (Since: 1.22)
229*4882a593Smuzhiyun  * @GST_VIDEO_FORMAT_NV12_10BE_8L128 : NV12 10bit big endian with 8x128 tiles in linear order (Since: 1.22)
230*4882a593Smuzhiyun+ * @GST_VIDEO_FORMAT_NV16_10LE40: Fully packed variant of NV16_10LE32 (Since: 1.22)
231*4882a593Smuzhiyun  *
232*4882a593Smuzhiyun  * Enum value describing the most common video formats.
233*4882a593Smuzhiyun  *
234*4882a593Smuzhiyun@@ -234,6 +235,7 @@ typedef enum {
235*4882a593Smuzhiyun   GST_VIDEO_FORMAT_NV12_10LE32,
236*4882a593Smuzhiyun   GST_VIDEO_FORMAT_NV16_10LE32,
237*4882a593Smuzhiyun   GST_VIDEO_FORMAT_NV12_10LE40,
238*4882a593Smuzhiyun+  GST_VIDEO_FORMAT_NV16_10LE40,
239*4882a593Smuzhiyun   GST_VIDEO_FORMAT_Y210,
240*4882a593Smuzhiyun   GST_VIDEO_FORMAT_Y410,
241*4882a593Smuzhiyun   GST_VIDEO_FORMAT_VUYA,
242*4882a593Smuzhiyun@@ -874,7 +876,7 @@ gconstpointer  gst_video_format_get_palette          (GstVideoFormat format, gsi
243*4882a593Smuzhiyun     "GBR_12BE, Y444_12LE, GBR_12LE, I422_12BE, I422_12LE, Y212_BE, Y212_LE, I420_12BE, " \
244*4882a593Smuzhiyun     "I420_12LE, P012_BE, P012_LE, Y444_10BE, GBR_10BE, Y444_10LE, GBR_10LE, r210, " \
245*4882a593Smuzhiyun     "I422_10BE, I422_10LE, NV16_10LE32, Y210, v210, UYVP, I420_10BE, I420_10LE, " \
246*4882a593Smuzhiyun-    "P010_10BE, P010_10LE, NV12_10LE32, NV12_10LE40, NV12_10BE_8L128, Y444, RGBP, GBR, BGRP, NV24, xBGR, BGRx, " \
247*4882a593Smuzhiyun+    "P010_10BE, P010_10LE, NV12_10LE32, NV12_10LE40, NV16_10LE40, NV12_10BE_8L128, Y444, RGBP, GBR, BGRP, NV24, xBGR, BGRx, " \
248*4882a593Smuzhiyun     "xRGB, RGBx, BGR, IYU2, v308, RGB, Y42B, NV61, NV16, VYUY, UYVY, YVYU, YUY2, I420, " \
249*4882a593Smuzhiyun     "YV12, NV21, NV12, NV12_8L128, NV12_64Z32, NV12_4L4, NV12_32L32, NV12_16L32S, Y41B, IYU1, YVU9, YUV9, RGB16, " \
250*4882a593Smuzhiyun     "BGR16, RGB15, BGR15, RGB8P, GRAY16_BE, GRAY16_LE, GRAY10_LE32, GRAY8 }"
251*4882a593Smuzhiyun@@ -887,7 +889,7 @@ gconstpointer  gst_video_format_get_palette          (GstVideoFormat format, gsi
252*4882a593Smuzhiyun     "GBR_12LE, Y444_12BE, GBR_12BE, I422_12LE, I422_12BE, Y212_LE, Y212_BE, I420_12LE, " \
253*4882a593Smuzhiyun     "I420_12BE, P012_LE, P012_BE, Y444_10LE, GBR_10LE, Y444_10BE, GBR_10BE, r210, " \
254*4882a593Smuzhiyun     "I422_10LE, I422_10BE, NV16_10LE32, Y210, v210, UYVP, I420_10LE, I420_10BE, " \
255*4882a593Smuzhiyun-    "P010_10LE, NV12_10LE32, NV12_10LE40, P010_10BE, NV12_10BE_8L128, Y444, RGBP, GBR, BGRP, NV24, xBGR, BGRx, " \
256*4882a593Smuzhiyun+    "P010_10LE, NV12_10LE32, NV12_10LE40, NV16_10LE40, P010_10BE, NV12_10BE_8L128, Y444, RGBP, GBR, BGRP, NV24, xBGR, BGRx, " \
257*4882a593Smuzhiyun     "xRGB, RGBx, BGR, IYU2, v308, RGB, Y42B, NV61, NV16, VYUY, UYVY, YVYU, YUY2, I420, " \
258*4882a593Smuzhiyun     "YV12, NV21, NV12, NV12_8L128, NV12_64Z32, NV12_4L4, NV12_32L32, NV12_16L32S, Y41B, IYU1, YVU9, YUV9, RGB16, " \
259*4882a593Smuzhiyun     "BGR16, RGB15, BGR15, RGB8P, GRAY16_LE, GRAY16_BE, GRAY10_LE32, GRAY8 }"
260*4882a593Smuzhiyundiff --git a/gst-libs/gst/video/video-info.c b/gst-libs/gst/video/video-info.c
261*4882a593Smuzhiyunindex d543e31..6eabc07 100644
262*4882a593Smuzhiyun--- a/gst-libs/gst/video/video-info.c
263*4882a593Smuzhiyun+++ b/gst-libs/gst/video/video-info.c
264*4882a593Smuzhiyun@@ -1219,6 +1219,13 @@ fill_planes (GstVideoInfo * info, gsize plane_size[GST_VIDEO_MAX_PLANES])
265*4882a593Smuzhiyun         cr_h = GST_ROUND_UP_2 (cr_h);
266*4882a593Smuzhiyun       info->size = info->offset[1] + info->stride[0] * cr_h;
267*4882a593Smuzhiyun       break;
268*4882a593Smuzhiyun+    case GST_VIDEO_FORMAT_NV16_10LE40:
269*4882a593Smuzhiyun+      info->stride[0] = ((width * 5 >> 2) + 4) / 5 * 5;
270*4882a593Smuzhiyun+      info->stride[1] = info->stride[0];
271*4882a593Smuzhiyun+      info->offset[0] = 0;
272*4882a593Smuzhiyun+      info->offset[1] = info->stride[0] * height;
273*4882a593Smuzhiyun+      info->size = info->offset[1] + info->stride[0] * height;
274*4882a593Smuzhiyun+      break;
275*4882a593Smuzhiyun     case GST_VIDEO_FORMAT_NV12_8L128:
276*4882a593Smuzhiyun     {
277*4882a593Smuzhiyun       gint tile_size = GST_VIDEO_FORMAT_INFO_TILE_SIZE (info->finfo, 0);
278*4882a593Smuzhiyundiff --git a/tests/check/libs/video.c b/tests/check/libs/video.c
279*4882a593Smuzhiyunindex 875f322..90c159a 100644
280*4882a593Smuzhiyun--- a/tests/check/libs/video.c
281*4882a593Smuzhiyun+++ b/tests/check/libs/video.c
282*4882a593Smuzhiyun@@ -3212,6 +3212,7 @@ GST_START_TEST (test_video_formats_pstrides)
283*4882a593Smuzhiyun         || fmt == GST_VIDEO_FORMAT_NV12_10LE32
284*4882a593Smuzhiyun         || fmt == GST_VIDEO_FORMAT_NV16_10LE32
285*4882a593Smuzhiyun         || fmt == GST_VIDEO_FORMAT_NV12_10LE40
286*4882a593Smuzhiyun+        || fmt == GST_VIDEO_FORMAT_NV16_10LE40
287*4882a593Smuzhiyun         || fmt == GST_VIDEO_FORMAT_Y410
288*4882a593Smuzhiyun         || fmt == GST_VIDEO_FORMAT_NV12_8L128
289*4882a593Smuzhiyun         || fmt == GST_VIDEO_FORMAT_NV12_10BE_8L128) {
290*4882a593Smuzhiyun--
291*4882a593Smuzhiyun2.25.1
292*4882a593Smuzhiyun
293