diff --git a/girs/GstVideo-1.0.gir b/girs/GstVideo-1.0.gir
index 6d627df406..38fb5ae8f6 100644
--- a/girs/GstVideo-1.0.gir
+++ b/girs/GstVideo-1.0.gir
@@ -3068,7 +3068,7 @@ Formats are sorted by decreasing "quality", using these criteria by priority:
-
+
Declare all video formats as a string.
Formats are sorted by decreasing "quality", using these criteria by priority:
@@ -3444,7 +3444,7 @@ Return the width of one tile in pixels, zero if its not an integer.
-
+
Number of video formats in #GstVideoFormat.
@@ -10745,6 +10745,12 @@ bits.
Fully packed variant of NV16_10LE32
+
+ packed 4:4:4 RGB (B-G-R-x), 10 bits for R/G/B channel and MSB 2 bits for padding.
+
+
+ packed 4:4:4 RGB (R-G-B-x), 10 bits for R/G/B channel and MSB 2 bits for padding.
+
Converts a FOURCC value into the corresponding #GstVideoFormat.
If the FOURCC cannot be represented by #GstVideoFormat,
diff --git a/subprojects/gst-plugins-base/gst-libs/gst/video/video-converter.c b/subprojects/gst-plugins-base/gst-libs/gst/video/video-converter.c
index d7ad054fcd..34235940d0 100644
--- a/subprojects/gst-plugins-base/gst-libs/gst/video/video-converter.c
+++ b/subprojects/gst-plugins-base/gst-libs/gst/video/video-converter.c
@@ -7928,6 +7928,8 @@ get_scale_format (GstVideoFormat format, gint plane)
case GST_VIDEO_FORMAT_NV16_10LE40:
case GST_VIDEO_FORMAT_BGR10A2_LE:
case GST_VIDEO_FORMAT_RGB10A2_LE:
+ case GST_VIDEO_FORMAT_BGR10x2_LE:
+ case GST_VIDEO_FORMAT_RGB10x2_LE:
case GST_VIDEO_FORMAT_Y444_16BE:
case GST_VIDEO_FORMAT_Y444_16LE:
case GST_VIDEO_FORMAT_P016_BE:
diff --git a/subprojects/gst-plugins-base/gst-libs/gst/video/video-format.c b/subprojects/gst-plugins-base/gst-libs/gst/video/video-format.c
index 86db679339..c2ba1c5761 100644
--- a/subprojects/gst-plugins-base/gst-libs/gst/video/video-format.c
+++ b/subprojects/gst-plugins-base/gst-libs/gst/video/video-format.c
@@ -8265,6 +8265,10 @@ static const VideoFormat formats[] = {
MAKE_YUV_C_LE_FORMAT (NV16_10LE40, "raw video",
GST_MAKE_FOURCC ('N', 'V', '2', '0'), DPTH10_10_10, PSTR0, PLANE011,
OFFS0, SUB422, PACK_NV16_10LE40),
+ MAKE_RGB_LE_FORMAT (BGR10x2_LE, "raw video", DPTH10_10_10, PSTR444,
+ PLANE0, OFFS0, SUB4444, PACK_BGR10A2_LE),
+ MAKE_RGB_LE_FORMAT (RGB10x2_LE, "raw video", DPTH10_10_10, PSTR444,
+ PLANE0, OFFS0, SUB4444, PACK_RGB10A2_LE),
};
G_GNUC_END_IGNORE_DEPRECATIONS;
diff --git a/subprojects/gst-plugins-base/gst-libs/gst/video/video-format.h b/subprojects/gst-plugins-base/gst-libs/gst/video/video-format.h
index 1823de0083..8d4fcfe7fd 100644
--- a/subprojects/gst-plugins-base/gst-libs/gst/video/video-format.h
+++ b/subprojects/gst-plugins-base/gst-libs/gst/video/video-format.h
@@ -175,6 +175,8 @@ G_BEGIN_DECLS
* @GST_VIDEO_FORMAT_Y416_BE: packed 4:4:4:4 YUV, 16 bits per channel(U-Y-V-A) (Since: 1.26)
* @GST_VIDEO_FORMAT_GRAY10_LE16: 10-bit grayscale, packed into 16bit words (6 bits padding) (Since: 1.26)
* @GST_VIDEO_FORMAT_NV16_10LE40: Fully packed variant of NV16_10LE32 (Since: 1.28)
+ * @GST_VIDEO_FORMAT_BGR10x2_LE: packed 4:4:4 RGB (B-G-R-x), 10 bits for R/G/B channel and MSB 2 bits for padding (Since: 1.28)
+ * @GST_VIDEO_FORMAT_RGB10x2_LE: packed 4:4:4 RGB (R-G-B-x), 10 bits for R/G/B channel and MSB 2 bits for padding (Since: 1.28)
*
* Enum value describing the most common video formats.
*
@@ -680,6 +682,25 @@ typedef enum {
*/
GST_VIDEO_FORMAT_NV16_10LE40,
+ /**
+ * GST_VIDEO_FORMAT_BGR10x2_LE:
+ *
+ * packed 4:4:4 RGB (B-G-R-x), 10 bits for R/G/B channel and MSB 2 bits for padding.
+ *
+ * Since: 1.28
+ */
+
+ GST_VIDEO_FORMAT_BGR10x2_LE,
+
+ /**
+ * GST_VIDEO_FORMAT_RGB10x2_LE:
+ *
+ * packed 4:4:4 RGB (R-G-B-x), 10 bits for R/G/B channel and MSB 2 bits for padding.
+ *
+ * Since: 1.28
+ */
+ GST_VIDEO_FORMAT_RGB10x2_LE,
+
/* Update GST_VIDEO_FORMAT_LAST below when adding more formats here */
} GstVideoFormat;
@@ -690,7 +711,7 @@ typedef enum {
*
* Since: 1.26
*/
-#define GST_VIDEO_FORMAT_LAST (GST_VIDEO_FORMAT_NV16_10LE40 + 1)
+#define GST_VIDEO_FORMAT_LAST (GST_VIDEO_FORMAT_RGB10x2_LE + 1)
#define GST_VIDEO_MAX_PLANES 4
#define GST_VIDEO_MAX_COMPONENTS 4
@@ -1169,13 +1190,14 @@ gconstpointer gst_video_format_get_palette (GstVideoFormat format, gsi
"Y216_BE, v216, Y216_LE, P016_BE, P016_LE, Y444_12BE, GBR_12BE, Y444_12LE, " \
"GBR_12LE, I422_12BE, I422_12LE, Y212_BE, Y212_LE, I420_12BE, I420_12LE, " \
"P012_BE, P012_LE, Y444_10BE, GBR_10BE, Y444_10LE, GBR_10LE, r210, " \
- "I422_10BE, I422_10LE, NV16_10LE40, NV16_10LE32, Y210, UYVP, v210, I420_10BE, " \
- "I420_10LE, P010_10BE, MT2110R, MT2110T, NV12_10BE_8L128, NV12_10LE40_4L4, " \
- "P010_10LE, NV12_10LE40, NV12_10LE32, Y444, BGRP, GBR, RGBP, NV24, v308, " \
- "IYU2, RGBx, xRGB, BGRx, xBGR, RGB, BGR, Y42B, NV16, NV61, YUY2, YVYU, " \
- "UYVY, VYUY, I420, YV12, NV12, NV21, NV12_16L32S, NV12_32L32, NV12_4L4, " \
- "NV12_64Z32, NV12_8L128, Y41B, IYU1, YUV9, YVU9, BGR16, RGB16, BGR15, " \
- "RGB15, RGB8P, GRAY16_BE, GRAY16_LE, GRAY10_LE16, GRAY10_LE32, GRAY8"
+ "BGR10x2_LE, RGB10x2_LE, I422_10BE, I422_10LE, NV16_10LE40, NV16_10LE32, " \
+ "Y210, UYVP, v210, I420_10BE, I420_10LE, P010_10BE, MT2110R, MT2110T, " \
+ "NV12_10BE_8L128, NV12_10LE40_4L4, P010_10LE, NV12_10LE40, NV12_10LE32, " \
+ "Y444, BGRP, GBR, RGBP, NV24, v308, IYU2, RGBx, xRGB, BGRx, xBGR, RGB, " \
+ "BGR, Y42B, NV16, NV61, YUY2, YVYU, UYVY, VYUY, I420, YV12, NV12, NV21, " \
+ "NV12_16L32S, NV12_32L32, NV12_4L4, NV12_64Z32, NV12_8L128, Y41B, IYU1, " \
+ "YUV9, YVU9, BGR16, RGB16, BGR15, RGB15, RGB8P, GRAY16_BE, GRAY16_LE, " \
+ "GRAY10_LE16, GRAY10_LE32, GRAY8"
#elif G_BYTE_ORDER == G_LITTLE_ENDIAN
#define GST_VIDEO_FORMATS_ALL_STR "A444_16LE, A444_16BE, Y416_LE, AYUV64, " \
"RGBA64_LE, ARGB64, ARGB64_LE, BGRA64_LE, ABGR64_LE, Y416_BE, RGBA64_BE, " \
@@ -1187,14 +1209,15 @@ gconstpointer gst_video_format_get_palette (GstVideoFormat format, gsi
"BGRA, ABGR, A422, A420, AV12, Y444_16LE, GBR_16LE, Y444_16BE, GBR_16BE, " \
"Y216_LE, Y216_BE, v216, P016_LE, P016_BE, Y444_12LE, GBR_12LE, Y444_12BE, " \
"GBR_12BE, I422_12LE, I422_12BE, Y212_LE, Y212_BE, I420_12LE, I420_12BE, " \
- "P012_LE, P012_BE, Y444_10LE, GBR_10LE, Y444_10BE, GBR_10BE, r210, " \
- "I422_10LE, I422_10BE, NV16_10LE40, NV16_10LE32, Y210, UYVP, v210, I420_10LE, " \
- "I420_10BE, P010_10LE, NV12_10LE40, NV12_10LE32, P010_10BE, MT2110R, " \
- "MT2110T, NV12_10BE_8L128, NV12_10LE40_4L4, Y444, BGRP, GBR, RGBP, NV24, " \
- "v308, IYU2, RGBx, xRGB, BGRx, xBGR, RGB, BGR, Y42B, NV16, NV61, YUY2, " \
- "YVYU, UYVY, VYUY, I420, YV12, NV12, NV21, NV12_16L32S, NV12_32L32, " \
- "NV12_4L4, NV12_64Z32, NV12_8L128, Y41B, IYU1, YUV9, YVU9, BGR16, RGB16, " \
- "BGR15, RGB15, RGB8P, GRAY16_LE, GRAY16_BE, GRAY10_LE16, GRAY10_LE32, GRAY8"
+ "P012_LE, P012_BE, Y444_10LE, GBR_10LE, Y444_10BE, GBR_10BE, BGR10x2_LE, " \
+ "RGB10x2_LE, r210, I422_10LE, I422_10BE, NV16_10LE40, NV16_10LE32, Y210, " \
+ "UYVP, v210, I420_10LE, I420_10BE, P010_10LE, NV12_10LE40, NV12_10LE32, " \
+ "P010_10BE, MT2110R, MT2110T, NV12_10BE_8L128, NV12_10LE40_4L4, Y444, " \
+ "BGRP, GBR, RGBP, NV24, v308, IYU2, RGBx, xRGB, BGRx, xBGR, RGB, BGR, " \
+ "Y42B, NV16, NV61, YUY2, YVYU, UYVY, VYUY, I420, YV12, NV12, NV21, " \
+ "NV12_16L32S, NV12_32L32, NV12_4L4, NV12_64Z32, NV12_8L128, Y41B, IYU1, " \
+ "YUV9, YVU9, BGR16, RGB16, BGR15, RGB15, RGB8P, GRAY16_LE, GRAY16_BE, " \
+ "GRAY10_LE16, GRAY10_LE32, GRAY8"
#endif
/**
diff --git a/subprojects/gst-plugins-base/gst-libs/gst/video/video-info-dma.c b/subprojects/gst-plugins-base/gst-libs/gst/video/video-info-dma.c
index 7530e09b05..0e85ea9ab0 100644
--- a/subprojects/gst-plugins-base/gst-libs/gst/video/video-info-dma.c
+++ b/subprojects/gst-plugins-base/gst-libs/gst/video/video-info-dma.c
@@ -588,6 +588,9 @@ static const struct FormatMap
{GST_VIDEO_FORMAT_P010_10LE, DRM_FORMAT_P010, DRM_FORMAT_MOD_LINEAR},
{GST_VIDEO_FORMAT_P012_LE, DRM_FORMAT_P012, DRM_FORMAT_MOD_LINEAR},
{GST_VIDEO_FORMAT_BGR10A2_LE, DRM_FORMAT_ARGB2101010, DRM_FORMAT_MOD_LINEAR},
+ {GST_VIDEO_FORMAT_RGB10A2_LE, DRM_FORMAT_ABGR2101010, DRM_FORMAT_MOD_LINEAR},
+ {GST_VIDEO_FORMAT_BGR10x2_LE, DRM_FORMAT_XRGB2101010, DRM_FORMAT_MOD_LINEAR},
+ {GST_VIDEO_FORMAT_RGB10x2_LE, DRM_FORMAT_XBGR2101010, DRM_FORMAT_MOD_LINEAR},
{GST_VIDEO_FORMAT_GRAY8, DRM_FORMAT_R8, DRM_FORMAT_MOD_LINEAR},
{GST_VIDEO_FORMAT_GRAY16_LE, DRM_FORMAT_R16, DRM_FORMAT_MOD_LINEAR},
{GST_VIDEO_FORMAT_GRAY16_BE, DRM_FORMAT_R16 | DRM_FORMAT_BIG_ENDIAN, DRM_FORMAT_MOD_LINEAR},
diff --git a/subprojects/gst-plugins-base/gst-libs/gst/video/video-info.c b/subprojects/gst-plugins-base/gst-libs/gst/video/video-info.c
index 7ecd2a580a..4d3f9a1492 100644
--- a/subprojects/gst-plugins-base/gst-libs/gst/video/video-info.c
+++ b/subprojects/gst-plugins-base/gst-libs/gst/video/video-info.c
@@ -883,6 +883,8 @@ fill_planes (GstVideoInfo * info, gsize plane_size[GST_VIDEO_MAX_PLANES])
case GST_VIDEO_FORMAT_VUYA:
case GST_VIDEO_FORMAT_BGR10A2_LE:
case GST_VIDEO_FORMAT_RGB10A2_LE:
+ case GST_VIDEO_FORMAT_BGR10x2_LE:
+ case GST_VIDEO_FORMAT_RGB10x2_LE:
case GST_VIDEO_FORMAT_RBGA:
info->stride[0] = width * 4;
info->offset[0] = 0;