summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--libavutil/pixdesc.c25
-rw-r--r--libavutil/pixfmt.h4
-rw-r--r--libswscale/swscale_unscaled.c4
-rw-r--r--libswscale/utils.c2
-rw-r--r--tests/ref/fate/filter-pixdesc-yuv444p12be1
-rw-r--r--tests/ref/fate/filter-pixdesc-yuv444p12le1
-rw-r--r--tests/ref/fate/filter-pixfmts-copy2
-rw-r--r--tests/ref/fate/filter-pixfmts-null2
-rw-r--r--tests/ref/fate/filter-pixfmts-scale2
-rw-r--r--tests/ref/fate/filter-pixfmts-vflip2
10 files changed, 44 insertions, 1 deletions
diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c
index e0c7851abe..78fbdbc01b 100644
--- a/libavutil/pixdesc.c
+++ b/libavutil/pixdesc.c
@@ -1342,6 +1342,30 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = {
},
.flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
},
+ [AV_PIX_FMT_YUV444P12LE] = {
+ .name = "yuv444p12le",
+ .nb_components = 3,
+ .log2_chroma_w = 0,
+ .log2_chroma_h = 0,
+ .comp = {
+ { 0, 2, 0, 0, 12, 1, 11, 1 }, /* Y */
+ { 1, 2, 0, 0, 12, 1, 11, 1 }, /* U */
+ { 2, 2, 0, 0, 12, 1, 11, 1 }, /* V */
+ },
+ .flags = AV_PIX_FMT_FLAG_PLANAR,
+ },
+ [AV_PIX_FMT_YUV444P12BE] = {
+ .name = "yuv444p12be",
+ .nb_components = 3,
+ .log2_chroma_w = 0,
+ .log2_chroma_h = 0,
+ .comp = {
+ { 0, 2, 0, 0, 12, 1, 11, 1 }, /* Y */
+ { 1, 2, 0, 0, 12, 1, 11, 1 }, /* U */
+ { 2, 2, 0, 0, 12, 1, 11, 1 }, /* V */
+ },
+ .flags = AV_PIX_FMT_FLAG_BE | AV_PIX_FMT_FLAG_PLANAR,
+ },
[AV_PIX_FMT_YUV444P10LE] = {
.name = "yuv444p10le",
.nb_components = 3,
@@ -1892,6 +1916,7 @@ enum AVPixelFormat av_pix_fmt_swap_endianness(enum AVPixelFormat pix_fmt)
PIX_FMT_SWAP_ENDIANNESS(YUV444P10);
PIX_FMT_SWAP_ENDIANNESS(YUV420P12);
PIX_FMT_SWAP_ENDIANNESS(YUV422P12);
+ PIX_FMT_SWAP_ENDIANNESS(YUV444P12);
PIX_FMT_SWAP_ENDIANNESS(YUV420P16);
PIX_FMT_SWAP_ENDIANNESS(YUV422P16);
PIX_FMT_SWAP_ENDIANNESS(YUV444P16);
diff --git a/libavutil/pixfmt.h b/libavutil/pixfmt.h
index 3e356afa6b..908b0fe7a5 100644
--- a/libavutil/pixfmt.h
+++ b/libavutil/pixfmt.h
@@ -236,6 +236,9 @@ enum AVPixelFormat {
AV_PIX_FMT_YUV422P12BE, ///< planar YUV 4:2:2, 24bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
AV_PIX_FMT_YUV422P12LE, ///< planar YUV 4:2:2, 24bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
+ AV_PIX_FMT_YUV444P12BE, ///< planar YUV 4:4:4, 36bpp, (1 Cr & Cb sample per 1x1 Y), big-endian
+ AV_PIX_FMT_YUV444P12LE, ///< planar YUV 4:4:4, 36bpp, (1 Cr & Cb sample per 1x1 Y), little-endian
+
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
};
@@ -271,6 +274,7 @@ enum AVPixelFormat {
#define AV_PIX_FMT_YUV444P10 AV_PIX_FMT_NE(YUV444P10BE, YUV444P10LE)
#define AV_PIX_FMT_YUV420P12 AV_PIX_FMT_NE(YUV420P12BE, YUV420P12LE)
#define AV_PIX_FMT_YUV422P12 AV_PIX_FMT_NE(YUV422P12BE, YUV422P12LE)
+#define AV_PIX_FMT_YUV444P12 AV_PIX_FMT_NE(YUV444P12BE, YUV444P12LE)
#define AV_PIX_FMT_YUV420P16 AV_PIX_FMT_NE(YUV420P16BE, YUV420P16LE)
#define AV_PIX_FMT_YUV422P16 AV_PIX_FMT_NE(YUV422P16BE, YUV422P16LE)
#define AV_PIX_FMT_YUV444P16 AV_PIX_FMT_NE(YUV444P16BE, YUV444P16LE)
diff --git a/libswscale/swscale_unscaled.c b/libswscale/swscale_unscaled.c
index 31706ca4c2..ad87bbcb46 100644
--- a/libswscale/swscale_unscaled.c
+++ b/libswscale/swscale_unscaled.c
@@ -1159,10 +1159,12 @@ void ff_get_unscaled_swscale(SwsContext *c)
dstFormat != AV_PIX_FMT_P010LE && dstFormat != AV_PIX_FMT_P010BE &&
dstFormat != AV_PIX_FMT_YUV420P12LE && dstFormat != AV_PIX_FMT_YUV420P12BE &&
dstFormat != AV_PIX_FMT_YUV422P12LE && dstFormat != AV_PIX_FMT_YUV422P12BE &&
+ dstFormat != AV_PIX_FMT_YUV444P12LE && dstFormat != AV_PIX_FMT_YUV444P12BE &&
srcFormat != AV_PIX_FMT_NV12 && srcFormat != AV_PIX_FMT_NV21 &&
srcFormat != AV_PIX_FMT_P010LE && srcFormat != AV_PIX_FMT_P010BE &&
srcFormat != AV_PIX_FMT_YUV420P12LE && srcFormat != AV_PIX_FMT_YUV420P12BE &&
- srcFormat != AV_PIX_FMT_YUV422P12LE && srcFormat != AV_PIX_FMT_YUV422P12BE))
+ srcFormat != AV_PIX_FMT_YUV422P12LE && srcFormat != AV_PIX_FMT_YUV422P12BE &&
+ srcFormat != AV_PIX_FMT_YUV444P12LE && srcFormat != AV_PIX_FMT_YUV444P12BE))
{
if (isPacked(c->srcFormat))
c->swscale = packedCopyWrapper;
diff --git a/libswscale/utils.c b/libswscale/utils.c
index dc442929b9..b7b534dceb 100644
--- a/libswscale/utils.c
+++ b/libswscale/utils.c
@@ -177,6 +177,8 @@ static const FormatEntry format_entries[AV_PIX_FMT_NB] = {
[AV_PIX_FMT_YUV444P9LE] = { 1, 1 },
[AV_PIX_FMT_YUV444P10BE] = { 1, 1 },
[AV_PIX_FMT_YUV444P10LE] = { 1, 1 },
+ [AV_PIX_FMT_YUV444P12BE] = { 1, 1 },
+ [AV_PIX_FMT_YUV444P12LE] = { 1, 1 },
[AV_PIX_FMT_GBRP] = { 1, 1 },
[AV_PIX_FMT_GBRP9LE] = { 1, 1 },
[AV_PIX_FMT_GBRP9BE] = { 1, 1 },
diff --git a/tests/ref/fate/filter-pixdesc-yuv444p12be b/tests/ref/fate/filter-pixdesc-yuv444p12be
new file mode 100644
index 0000000000..e8c1201985
--- /dev/null
+++ b/tests/ref/fate/filter-pixdesc-yuv444p12be
@@ -0,0 +1 @@
+pixdesc-yuv444p12be f20564006d137df0fc6bb7466fd0fc64
diff --git a/tests/ref/fate/filter-pixdesc-yuv444p12le b/tests/ref/fate/filter-pixdesc-yuv444p12le
new file mode 100644
index 0000000000..9807ff074a
--- /dev/null
+++ b/tests/ref/fate/filter-pixdesc-yuv444p12le
@@ -0,0 +1 @@
+pixdesc-yuv444p12le 9d5db1a9354b62181e09aa93c1ffa19a
diff --git a/tests/ref/fate/filter-pixfmts-copy b/tests/ref/fate/filter-pixfmts-copy
index 6ffeed0544..c712f78148 100644
--- a/tests/ref/fate/filter-pixfmts-copy
+++ b/tests/ref/fate/filter-pixfmts-copy
@@ -62,6 +62,8 @@ yuv440p 12000ce709b38aac3f7b7f59b07847ef
yuv444p 628c9d1e10c22e0e512b27c0e03b46e6
yuv444p10be b60d77db54a592ed088ebf7964e2dd5e
yuv444p10le 1752a238eb27fb7c746e349536f60686
+yuv444p12be be54f88f9b9034b5b9bc466132bfba10
+yuv444p12le 714c3c5789897b56cb9ae6a45688e395
yuv444p16be 8e1e2f04cb2e97f80fdfecbb2c5679a0
yuv444p16le 5677b2caa63e0c075eac6937b03cf2a6
yuv444p9be 5ab55576b180b2966e9ed5a1ea55508a
diff --git a/tests/ref/fate/filter-pixfmts-null b/tests/ref/fate/filter-pixfmts-null
index 6ffeed0544..c712f78148 100644
--- a/tests/ref/fate/filter-pixfmts-null
+++ b/tests/ref/fate/filter-pixfmts-null
@@ -62,6 +62,8 @@ yuv440p 12000ce709b38aac3f7b7f59b07847ef
yuv444p 628c9d1e10c22e0e512b27c0e03b46e6
yuv444p10be b60d77db54a592ed088ebf7964e2dd5e
yuv444p10le 1752a238eb27fb7c746e349536f60686
+yuv444p12be be54f88f9b9034b5b9bc466132bfba10
+yuv444p12le 714c3c5789897b56cb9ae6a45688e395
yuv444p16be 8e1e2f04cb2e97f80fdfecbb2c5679a0
yuv444p16le 5677b2caa63e0c075eac6937b03cf2a6
yuv444p9be 5ab55576b180b2966e9ed5a1ea55508a
diff --git a/tests/ref/fate/filter-pixfmts-scale b/tests/ref/fate/filter-pixfmts-scale
index a56d5c776b..0a3f3f18c6 100644
--- a/tests/ref/fate/filter-pixfmts-scale
+++ b/tests/ref/fate/filter-pixfmts-scale
@@ -62,6 +62,8 @@ yuv440p 4713a7b7ce80dd06923626d13589c098
yuv444p fd733672651ad5bbffb046fd67151fee
yuv444p10be 34b38d54167df70044bdc08518d91009
yuv444p10le 0812e3371c9589c6621408812f9e7a27
+yuv444p12be 936147950ba1b511570da85a0922abf3
+yuv444p12le 4a9ec677190371ef5e342ffac1ace735
yuv444p16be e89fe5a4624ed06603580b4a74af9170
yuv444p16le 6944d11048ff4013c5e60359faf1bd2d
yuv444p9be 04a950e843d099eb9ade2ddcea494fb3
diff --git a/tests/ref/fate/filter-pixfmts-vflip b/tests/ref/fate/filter-pixfmts-vflip
index 9e7a916faf..b8718c7375 100644
--- a/tests/ref/fate/filter-pixfmts-vflip
+++ b/tests/ref/fate/filter-pixfmts-vflip
@@ -62,6 +62,8 @@ yuv440p fade395d957e1e3b117ac11c09404964
yuv444p a3c2a074c3609226bf1a0bc4de5c0e51
yuv444p10be b02fac8bc5a564a755567a86dc3ceae0
yuv444p10le 88860297f729c90526b157b6bf1e2fcf
+yuv444p12be d8af56e4b09130e14a9449c84a03cab0
+yuv444p12le 0ccfbd671b8000c0f950b9dfae8ea879
yuv444p16be 26fbffad3c28aa1a6c47f2be6d146173
yuv444p16le 3d13dcea82caec9eb563a1d7a2e4b339
yuv444p9be df39c0778e5b13f306e9928c5b0ddbb2