diff options
author | Lynne <dev@lynne.ee> | 2025-02-23 14:09:13 +0000 |
---|---|---|
committer | Lynne <dev@lynne.ee> | 2025-03-17 08:49:15 +0100 |
commit | f2a0bdd6b15523f062ac782727696effd449d347 (patch) | |
tree | 843792594f4ca5cbba6a282c6039bf968555ffae /libavutil/vulkan.c | |
parent | dd7cc557affff5040d3e8a9a072f01155b591607 (diff) | |
download | ffmpeg-f2a0bdd6b15523f062ac782727696effd449d347.tar.gz |
vulkan: unify handling of BGR and simplify ffv1_rct
Diffstat (limited to 'libavutil/vulkan.c')
-rw-r--r-- | libavutil/vulkan.c | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/libavutil/vulkan.c b/libavutil/vulkan.c index ad10be4195..e641975f1e 100644 --- a/libavutil/vulkan.c +++ b/libavutil/vulkan.c @@ -1451,6 +1451,52 @@ int ff_vk_mt_is_np_rgb(enum AVPixelFormat pix_fmt) return 0; } +void ff_vk_set_perm(enum AVPixelFormat pix_fmt, int lut[4], int inv) +{ + switch (pix_fmt) { + case AV_PIX_FMT_BGRA: + case AV_PIX_FMT_BGR0: + case AV_PIX_FMT_BGR565: + case AV_PIX_FMT_X2BGR10: + lut[0] = 2; + lut[1] = 1; + lut[2] = 0; + lut[3] = 3; + break; + case AV_PIX_FMT_GBRAP: + case AV_PIX_FMT_GBRP: + case AV_PIX_FMT_GBRAP10: + case AV_PIX_FMT_GBRAP12: + case AV_PIX_FMT_GBRAP14: + case AV_PIX_FMT_GBRAP16: + case AV_PIX_FMT_GBRP10: + case AV_PIX_FMT_GBRP12: + case AV_PIX_FMT_GBRP14: + case AV_PIX_FMT_GBRP16: + case AV_PIX_FMT_GBRPF32: + case AV_PIX_FMT_GBRAPF32: + lut[0] = 1; + lut[1] = 2; + lut[2] = 0; + lut[3] = 3; + break; + default: + lut[0] = 0; + lut[1] = 1; + lut[2] = 2; + lut[3] = 3; + break; + } + + if (inv) { + int lut_tmp[4] = { lut[0], lut[1], lut[2], lut[3] }; + for (int i = 0; i < 4; i++) + lut[lut_tmp[i]] = i; + } + + return; +} + const char *ff_vk_shader_rep_fmt(enum AVPixelFormat pix_fmt, enum FFVkShaderRepFormat rep_fmt) { |