Skip to content

Commit c2521c0

Browse files
committed
avutil/vulkan: add YUVA pixel formats support
Signed-off-by: Niklas Haas <[email protected]> Sponsored-by: nxtedition
1 parent 96d4bcb commit c2521c0

File tree

2 files changed

+30
-2
lines changed

2 files changed

+30
-2
lines changed

libavutil/hwcontext_vulkan.c

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -410,6 +410,23 @@ static const struct FFVkFormatEntry {
410410
{ VK_FORMAT_G12X4B12X4G12X4R12X4_422_UNORM_4PACK16, AV_PIX_FMT_Y212, VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R16G16B16A16_UNORM } },
411411
{ VK_FORMAT_G16B16G16R16_422_UNORM, AV_PIX_FMT_Y216, VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R16G16B16A16_UNORM } },
412412

413+
/* Planar YUVA 420 at 8, 10 and 16 bits */
414+
{ VK_FORMAT_R8_UNORM, AV_PIX_FMT_YUVA420P, VK_IMAGE_ASPECT_COLOR_BIT, 4, 4, 4, { VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM } },
415+
{ VK_FORMAT_R16_UNORM, AV_PIX_FMT_YUVA420P10, VK_IMAGE_ASPECT_COLOR_BIT, 4, 4, 4, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } },
416+
{ VK_FORMAT_R16_UNORM, AV_PIX_FMT_YUVA420P16, VK_IMAGE_ASPECT_COLOR_BIT, 4, 4, 4, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } },
417+
418+
/* Planar YUVA 422 at 8, 10, 12 and 16 bits */
419+
{ VK_FORMAT_R8_UNORM, AV_PIX_FMT_YUVA422P, VK_IMAGE_ASPECT_COLOR_BIT, 4, 4, 4, { VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM } },
420+
{ VK_FORMAT_R16_UNORM, AV_PIX_FMT_YUVA422P10, VK_IMAGE_ASPECT_COLOR_BIT, 4, 4, 4, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } },
421+
{ VK_FORMAT_R16_UNORM, AV_PIX_FMT_YUVA422P12, VK_IMAGE_ASPECT_COLOR_BIT, 4, 4, 4, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } },
422+
{ VK_FORMAT_R16_UNORM, AV_PIX_FMT_YUVA422P16, VK_IMAGE_ASPECT_COLOR_BIT, 4, 4, 4, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } },
423+
424+
/* Planar YUVA 444 at 8, 10, 12 and 16 bits */
425+
{ VK_FORMAT_R8_UNORM, AV_PIX_FMT_YUVA444P, VK_IMAGE_ASPECT_COLOR_BIT, 4, 4, 4, { VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM, VK_FORMAT_R8_UNORM } },
426+
{ VK_FORMAT_R16_UNORM, AV_PIX_FMT_YUVA444P10, VK_IMAGE_ASPECT_COLOR_BIT, 4, 4, 4, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } },
427+
{ VK_FORMAT_R16_UNORM, AV_PIX_FMT_YUVA444P12, VK_IMAGE_ASPECT_COLOR_BIT, 4, 4, 4, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } },
428+
{ VK_FORMAT_R16_UNORM, AV_PIX_FMT_YUVA444P16, VK_IMAGE_ASPECT_COLOR_BIT, 4, 4, 4, { VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM, VK_FORMAT_R16_UNORM } },
429+
413430
/* Single plane 444 at 8, 10, 12 and 16 bits */
414431
{ VK_FORMAT_B8G8R8A8_UNORM, AV_PIX_FMT_UYVA, VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_B8G8R8A8_UNORM } },
415432
{ VK_FORMAT_A2R10G10B10_UNORM_PACK32, AV_PIX_FMT_XV30, VK_IMAGE_ASPECT_COLOR_BIT, 1, 1, 1, { VK_FORMAT_R16G16B16A16_UNORM } },

libavutil/vulkan.c

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1611,7 +1611,10 @@ const char *ff_vk_shader_rep_fmt(enum AVPixelFormat pix_fmt,
16111611
case AV_PIX_FMT_GBRAP:
16121612
case AV_PIX_FMT_YUV420P:
16131613
case AV_PIX_FMT_YUV422P:
1614-
case AV_PIX_FMT_YUV444P: {
1614+
case AV_PIX_FMT_YUV444P:
1615+
case AV_PIX_FMT_YUVA420P:
1616+
case AV_PIX_FMT_YUVA422P:
1617+
case AV_PIX_FMT_YUVA444P: {
16151618
const char *rep_tab[] = {
16161619
[FF_VK_REP_NATIVE] = "r8ui",
16171620
[FF_VK_REP_FLOAT] = "r8",
@@ -1640,7 +1643,15 @@ const char *ff_vk_shader_rep_fmt(enum AVPixelFormat pix_fmt,
16401643
case AV_PIX_FMT_YUV422P16:
16411644
case AV_PIX_FMT_YUV444P10:
16421645
case AV_PIX_FMT_YUV444P12:
1643-
case AV_PIX_FMT_YUV444P16: {
1646+
case AV_PIX_FMT_YUV444P16:
1647+
case AV_PIX_FMT_YUVA420P10:
1648+
case AV_PIX_FMT_YUVA420P16:
1649+
case AV_PIX_FMT_YUVA422P10:
1650+
case AV_PIX_FMT_YUVA422P12:
1651+
case AV_PIX_FMT_YUVA422P16:
1652+
case AV_PIX_FMT_YUVA444P10:
1653+
case AV_PIX_FMT_YUVA444P12:
1654+
case AV_PIX_FMT_YUVA444P16: {
16441655
const char *rep_tab[] = {
16451656
[FF_VK_REP_NATIVE] = "r16ui",
16461657
[FF_VK_REP_FLOAT] = "r16f",

0 commit comments

Comments
 (0)