[FFmpeg-devel] [PATCH v2 1/3] lavu/pix_fmt: add new pixel format x2rgb10
Fei Wang
fei.w.wang at intel.com
Wed Apr 22 08:23:01 EEST 2020
The format is packed RGB with each channel 10 bits available and
include 2 bits unused.
Signed-off-by: Fei Wang <fei.w.wang at intel.com>
---
libavutil/pixdesc.c | 24 ++++++++++++++++++++++++
libavutil/pixfmt.h | 3 +++
libavutil/version.h | 2 +-
tests/ref/fate/filter-pixdesc-x2rgb10le | 1 +
tests/ref/fate/sws-pixdesc-query | 11 +++++++++++
5 files changed, 40 insertions(+), 1 deletion(-)
create mode 100644 tests/ref/fate/filter-pixdesc-x2rgb10le
diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c
index 9d61c52..23ec1ab 100644
--- a/libavutil/pixdesc.c
+++ b/libavutil/pixdesc.c
@@ -252,6 +252,30 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = {
},
.flags = AV_PIX_FMT_FLAG_RGB,
},
+ [AV_PIX_FMT_X2RGB10LE] = {
+ .name = "x2rgb10le",
+ .nb_components= 3,
+ .log2_chroma_w= 0,
+ .log2_chroma_h= 0,
+ .comp = {
+ { 0, 4, 2, 4, 10, 3, 9, 2 }, /* R */
+ { 0, 4, 1, 2, 10, 3, 9, 3 }, /* G */
+ { 0, 4, 0, 0, 10, 3, 9, 4 }, /* B */
+ },
+ .flags = AV_PIX_FMT_FLAG_RGB,
+ },
+ [AV_PIX_FMT_X2RGB10BE] = {
+ .name = "x2rgb10be",
+ .nb_components= 3,
+ .log2_chroma_w= 0,
+ .log2_chroma_h= 0,
+ .comp = {
+ { 0, 4, 0, 4, 10, 3, 9, 2 }, /* R */
+ { 0, 4, 1, 2, 10, 3, 9, 3 }, /* G */
+ { 0, 4, 2, 0, 10, 3, 9, 4 }, /* B */
+ },
+ .flags = AV_PIX_FMT_FLAG_RGB | AV_PIX_FMT_FLAG_BE,
+ },
[AV_PIX_FMT_YUV422P] = {
.name = "yuv422p",
.nb_components = 3,
diff --git a/libavutil/pixfmt.h b/libavutil/pixfmt.h
index 1c625cf..71058d7 100644
--- a/libavutil/pixfmt.h
+++ b/libavutil/pixfmt.h
@@ -358,6 +358,8 @@ enum AVPixelFormat {
AV_PIX_FMT_Y210BE, ///< packed YUV 4:2:2 like YUYV422, 20bpp, data in the high bits, big-endian
AV_PIX_FMT_Y210LE, ///< packed YUV 4:2:2 like YUYV422, 20bpp, data in the high bits, little-endian
+ AV_PIX_FMT_X2RGB10LE, ///< packed RGB 10:10:10, 30bpp, (msb)2X 10R 10G 10B(lsb), little-endian, X=unused/undefined
+ AV_PIX_FMT_X2RGB10BE, ///< packed RGB 10:10:10, 30bpp, (msb)2X 10R 10G 10B(lsb), big-endian, X=unused/undefined
AV_PIX_FMT_NB ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions
};
@@ -447,6 +449,7 @@ enum AVPixelFormat {
#define AV_PIX_FMT_P016 AV_PIX_FMT_NE(P016BE, P016LE)
#define AV_PIX_FMT_Y210 AV_PIX_FMT_NE(Y210BE, Y210LE)
+#define AV_PIX_FMT_X2RGB10 AV_PIX_FMT_NE(X2RGB10BE, X2RGB10LE)
/**
* Chromaticity coordinates of the source primaries.
diff --git a/libavutil/version.h b/libavutil/version.h
index 70836a5..e4fa0a9 100644
--- a/libavutil/version.h
+++ b/libavutil/version.h
@@ -79,7 +79,7 @@
*/
#define LIBAVUTIL_VERSION_MAJOR 56
-#define LIBAVUTIL_VERSION_MINOR 42
+#define LIBAVUTIL_VERSION_MINOR 43
#define LIBAVUTIL_VERSION_MICRO 102
#define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
diff --git a/tests/ref/fate/filter-pixdesc-x2rgb10le b/tests/ref/fate/filter-pixdesc-x2rgb10le
new file mode 100644
index 0000000..94c8640
--- /dev/null
+++ b/tests/ref/fate/filter-pixdesc-x2rgb10le
@@ -0,0 +1 @@
+pixdesc-x2rgb10le 98d697ed4668daf535163d5e08c903bb
diff --git a/tests/ref/fate/sws-pixdesc-query b/tests/ref/fate/sws-pixdesc-query
index bc9a0d8..c3cccfa 100644
--- a/tests/ref/fate/sws-pixdesc-query
+++ b/tests/ref/fate/sws-pixdesc-query
@@ -57,6 +57,8 @@ isNBPS:
nv20le
p010be
p010le
+ x2rgb10be
+ x2rgb10le
xyz12be
xyz12le
y210be
@@ -141,6 +143,7 @@ isBE:
rgb555be
rgb565be
rgba64be
+ x2rgb10be
xyz12be
y210be
ya16be
@@ -436,6 +439,8 @@ isRGB:
rgb8
rgba64be
rgba64le
+ x2rgb10be
+ x2rgb10le
Gray:
gray
@@ -582,6 +587,8 @@ AnyRGB:
rgb8
rgba64be
rgba64le
+ x2rgb10be
+ x2rgb10le
ALPHA:
ayuv64be
@@ -689,6 +696,8 @@ Packed:
rgba64le
uyvy422
uyyvyy411
+ x2rgb10be
+ x2rgb10le
xyz12be
xyz12le
y210be
@@ -853,6 +862,8 @@ PackedRGB:
rgb8
rgba64be
rgba64le
+ x2rgb10be
+ x2rgb10le
PlanarRGB:
gbrap
--
2.7.4
More information about the ffmpeg-devel
mailing list