This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit 2983c23762ab62160ad8b28dff6042d15efabf20 Author: Lynne <[email protected]> AuthorDate: Sun Jul 26 13:53:42 2026 +0800 Commit: Lynne <[email protected]> CommitDate: Tue Oct 6 13:31:37 2026 +0900 avutil: add AV_PIX_FMT_XYZP12 Planar 12-bit XYZ, the natural planar layout for DCI JPEG2000 content. Also wire it into the Vulkan format table and shader format helpers. --- doc/APIchanges | 3 +++ libavutil/hwcontext_vulkan.c | 3 +++ libavutil/pixdesc.c | 24 ++++++++++++++++++++++++ libavutil/pixfmt.h | 5 +++++ libavutil/version.h | 2 +- libavutil/vulkan.c | 2 ++ tests/ref/fate/filter-drawutils | 2 ++ tests/ref/fate/imgutils | 4 ++++ tests/ref/fate/pixdesc | 2 ++ tests/ref/fate/sws-ops-list | 2 +- tests/ref/fate/sws-pixdesc-query | 11 +++++++++++ 11 files changed, 58 insertions(+), 2 deletions(-) diff --git a/doc/APIchanges b/doc/APIchanges index fb421cea72..f6e68f5eac 100644 --- a/doc/APIchanges +++ b/doc/APIchanges @@ -2,6 +2,9 @@ The last version increases of all libraries were on 2026-06-23. API changes, most recent first: +2026-10-03 - xxxxxxxxxx - lavu 61.11.100 - pixfmt.h + Add AV_PIX_FMT_XYZP12LE, AV_PIX_FMT_XYZP12BE, and AV_PIX_FMT_XYZP12. + 2026-09-xx - xxxxxxxxxx - lavfi 12.5.100 - avfilter.h buffersrc.h buffersink.h Add AVFilterLink.chroma_location, AVBufferSrcParameters.chroma_location and av_buffersink_get_chroma_location(). diff --git a/libavutil/hwcontext_vulkan.c b/libavutil/hwcontext_vulkan.c index fab3532df9..63d2ab5c43 100644 --- a/libavutil/hwcontext_vulkan.c +++ b/libavutil/hwcontext_vulkan.c @@ -514,6 +514,9 @@ static const struct FFVkFormatEntry { { VK_FORMAT_R16_SFLOAT, AV_PIX_FMT_GBRPF16, VK_IMAGE_ASPECT_COLOR_BIT, 3, 3, 3, { VK_FORMAT_R16_SFLOAT, VK_FORMAT_R16_SFLOAT, VK_FORMAT_R16_SFLOAT } }, { VK_FORMAT_R32_SFLOAT, AV_PIX_FMT_GBRPF32, VK_IMAGE_ASPECT_COLOR_BIT, 3, 3, 3, { VK_FORMAT_R32_SFLOAT, VK_FORMAT_R32_SFLOAT, VK_FORMAT_R32_SFLOAT } }, + /* XYZ */ + { VK_FORMAT_R16_UNORM, AV_PIX_FMT_XYZP12, VK_IMAGE_ASPECT_COLOR_BIT, 3, 3, 3, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, + /* Planar RGB + Alpha */ { VK_FORMAT_R8_UNORM, AV_PIX_FMT_GBRAP, VK_IMAGE_ASPECT_COLOR_BIT, 4, 4, 4, { VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM } }, { VK_FORMAT_R16_UNORM, AV_PIX_FMT_GBRAP10, VK_IMAGE_ASPECT_COLOR_BIT, 4, 4, 4, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } }, diff --git a/libavutil/pixdesc.c b/libavutil/pixdesc.c index f1e80cb31c..c7cbfa8658 100644 --- a/libavutil/pixdesc.c +++ b/libavutil/pixdesc.c @@ -2145,6 +2145,30 @@ static const AVPixFmtDescriptor av_pix_fmt_descriptors[AV_PIX_FMT_NB] = { }, .flags = AV_PIX_FMT_FLAG_XYZ | AV_PIX_FMT_FLAG_BE, }, + [AV_PIX_FMT_XYZP12LE] = { + .name = "xyzp12le", + .nb_components = 3, + .log2_chroma_w = 0, + .log2_chroma_h = 0, + .comp = { + { 0, 2, 0, 4, 12 }, /* X */ + { 1, 2, 0, 4, 12 }, /* Y */ + { 2, 2, 0, 4, 12 }, /* Z */ + }, + .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_XYZ, + }, + [AV_PIX_FMT_XYZP12BE] = { + .name = "xyzp12be", + .nb_components = 3, + .log2_chroma_w = 0, + .log2_chroma_h = 0, + .comp = { + { 0, 2, 0, 4, 12 }, /* X */ + { 1, 2, 0, 4, 12 }, /* Y */ + { 2, 2, 0, 4, 12 }, /* Z */ + }, + .flags = AV_PIX_FMT_FLAG_PLANAR | AV_PIX_FMT_FLAG_XYZ | AV_PIX_FMT_FLAG_BE, + }, #define BAYER8_DESC_COMMON \ .nb_components= 3, \ diff --git a/libavutil/pixfmt.h b/libavutil/pixfmt.h index b08881cc1f..750e05b644 100644 --- a/libavutil/pixfmt.h +++ b/libavutil/pixfmt.h @@ -505,6 +505,9 @@ enum AVPixelFormat { */ AV_PIX_FMT_CUARRAY, + AV_PIX_FMT_XYZP12LE, ///< planar XYZ 4:4:4, 36 bpp, (msb) 12X, 12Y, 12Z (lsb), the 2-byte value for each X/Y/Z is stored as little-endian, the 4 lower bits are set to 0 + AV_PIX_FMT_XYZP12BE, ///< planar XYZ 4:4:4, 36 bpp, (msb) 12X, 12Y, 12Z (lsb), the 2-byte value for each X/Y/Z is stored as big-endian, the 4 lower bits are set to 0 + 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 }; @@ -603,6 +606,8 @@ enum AVPixelFormat { #define AV_PIX_FMT_YUVA444P16 AV_PIX_FMT_NE(YUVA444P16BE, YUVA444P16LE) #define AV_PIX_FMT_XYZ12 AV_PIX_FMT_NE(XYZ12BE, XYZ12LE) +#define AV_PIX_FMT_XYZP12 AV_PIX_FMT_NE(XYZP12BE, XYZP12LE) + #define AV_PIX_FMT_NV20 AV_PIX_FMT_NE(NV20BE, NV20LE) #define AV_PIX_FMT_AYUV64 AV_PIX_FMT_NE(AYUV64BE, AYUV64LE) #define AV_PIX_FMT_P010 AV_PIX_FMT_NE(P010BE, P010LE) diff --git a/libavutil/version.h b/libavutil/version.h index 1a2406e75e..edc3fa5832 100644 --- a/libavutil/version.h +++ b/libavutil/version.h @@ -79,7 +79,7 @@ */ #define LIBAVUTIL_VERSION_MAJOR 61 -#define LIBAVUTIL_VERSION_MINOR 10 +#define LIBAVUTIL_VERSION_MINOR 11 #define LIBAVUTIL_VERSION_MICRO 100 #define LIBAVUTIL_VERSION_INT AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \ diff --git a/libavutil/vulkan.c b/libavutil/vulkan.c index fd8f939c55..3987c33080 100644 --- a/libavutil/vulkan.c +++ b/libavutil/vulkan.c @@ -1707,6 +1707,7 @@ int ff_vk_mt_is_np_rgb(enum AVPixelFormat pix_fmt) pix_fmt == AV_PIX_FMT_X2RGB10 || pix_fmt == AV_PIX_FMT_X2BGR10 || pix_fmt == AV_PIX_FMT_RGBAF32 || pix_fmt == AV_PIX_FMT_RGBF32 || pix_fmt == AV_PIX_FMT_RGBA128 || pix_fmt == AV_PIX_FMT_RGB96 || + pix_fmt == AV_PIX_FMT_XYZP12 || pix_fmt == AV_PIX_FMT_GBRP || pix_fmt == AV_PIX_FMT_BAYER_RGGB16) return 1; return 0; @@ -1875,6 +1876,7 @@ const char *ff_vk_shader_rep_fmt(enum AVPixelFormat pix_fmt, case AV_PIX_FMT_GBRP14: case AV_PIX_FMT_GBRP16: case AV_PIX_FMT_GBRPF16: + case AV_PIX_FMT_XYZP12: case AV_PIX_FMT_YUV420P10: case AV_PIX_FMT_YUV420P12: case AV_PIX_FMT_YUV420P16: diff --git a/tests/ref/fate/filter-drawutils b/tests/ref/fate/filter-drawutils index 031f31fb44..faa41af60a 100644 --- a/tests/ref/fate/filter-drawutils +++ b/tests/ref/fate/filter-drawutils @@ -266,5 +266,7 @@ Testing gbrp12msbbe... no: unsupported Testing gbrp12msble... ok Testing ohcodec... no: unsupported Testing cuarray... no: unsupported +Testing xyzp12le... no: unsupported +Testing xyzp12be... no: unsupported half transparent red over transparent rgba by mask: 128 0 0 128 half transparent red over transparent rgba by rectangle: 128 0 0 128 diff --git a/tests/ref/fate/imgutils b/tests/ref/fate/imgutils index ccd1522ef2..1d104b7476 100644 --- a/tests/ref/fate/imgutils +++ b/tests/ref/fate/imgutils @@ -306,6 +306,8 @@ gbrp10msbbe planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 gbrp10msble planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432 gbrp12msbbe planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432 gbrp12msble planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432 +xyzp12le planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432 +xyzp12be planes: 3, linesizes: 128 128 128 0, plane_sizes: 6144 6144 6144 0, plane_offsets: 6144 6144 0, total_size: 18432 image_fill_black tests yuv420p total_size: 4608, black_unknown_crc: 0xd00f6cc6, black_tv_crc: 0xd00f6cc6, black_pc_crc: 0x234969af @@ -559,3 +561,5 @@ gbrp10msbbe total_size: 18432, black_unknown_crc: 0x00000000, black_tv_cr gbrp10msble total_size: 18432, black_unknown_crc: 0x00000000, black_tv_crc: 0x00000000, black_pc_crc: 0x00000000 gbrp12msbbe total_size: 18432, black_unknown_crc: 0x00000000, black_tv_crc: 0x00000000, black_pc_crc: 0x00000000 gbrp12msble total_size: 18432, black_unknown_crc: 0x00000000, black_tv_crc: 0x00000000, black_pc_crc: 0x00000000 +xyzp12le total_size: 18432, black_unknown_crc: 0x00000000, black_tv_crc: 0x00000000, black_pc_crc: 0x00000000 +xyzp12be total_size: 18432, black_unknown_crc: 0x00000000, black_tv_crc: 0x00000000, black_pc_crc: 0x00000000 diff --git a/tests/ref/fate/pixdesc b/tests/ref/fate/pixdesc index 3d59e78ae7..eb79469e85 100644 --- a/tests/ref/fate/pixdesc +++ b/tests/ref/fate/pixdesc @@ -281,3 +281,5 @@ Testing pixel format descriptors pix fmt gbrp12msble avg_bpp:48 planes:3 pix fmt ohcodec avg_bpp:0 planes:0 pix fmt cuarray avg_bpp:0 planes:0 + pix fmt xyzp12le avg_bpp:48 planes:3 + pix fmt xyzp12be avg_bpp:48 planes:3 diff --git a/tests/ref/fate/sws-ops-list b/tests/ref/fate/sws-ops-list index 7819781c4a..f3a5b44b56 100644 --- a/tests/ref/fate/sws-ops-list +++ b/tests/ref/fate/sws-ops-list @@ -1 +1 @@ -bc046cee81413c33100cc3c71f058e9d +b4ea23c724f642b3e43d329ed4981d38 diff --git a/tests/ref/fate/sws-pixdesc-query b/tests/ref/fate/sws-pixdesc-query index a062088d54..92a2430ca4 100644 --- a/tests/ref/fate/sws-pixdesc-query +++ b/tests/ref/fate/sws-pixdesc-query @@ -105,6 +105,8 @@ isNBPS: xv36le xyz12be xyz12le + xyzp12be + xyzp12le y210be y210le y212be @@ -221,6 +223,7 @@ isBE: xv36be xv48be xyz12be + xyzp12be y210be y212be y216be @@ -303,6 +306,8 @@ isYUV: xv48le xyz12be xyz12le + xyzp12be + xyzp12le y210be y210le y212be @@ -419,6 +424,8 @@ isPlanarYUV: p412le p416be p416le + xyzp12be + xyzp12le yuv410p yuv411p yuv420p @@ -1035,6 +1042,8 @@ Planar: p412le p416be p416le + xyzp12be + xyzp12le yuv410p yuv411p yuv420p @@ -1241,6 +1250,8 @@ DataInHighBits: xv36le xyz12be xyz12le + xyzp12be + xyzp12le y210be y210le y212be -- To stop receiving notification emails like this one, please contact [email protected]. _______________________________________________ ffmpeg-cvslog mailing list -- [email protected] To unsubscribe send an email to [email protected]
