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;