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