This is an automated email from the git hooks/post-receive script. Git pushed a commit to branch master in repository ffmpeg.
commit a548c2f0a32434319a697faa82400fc97b5b357d Author: Lynne <[email protected]> AuthorDate: Wed Feb 4 00:31:11 2026 +0100 Commit: Lynne <[email protected]> CommitDate: Thu Feb 19 19:42:28 2026 +0100 vulkan_ffv1: move common spec constant setting to ffv1_vulkan.c It will be shared between encoder and decoder. --- libavcodec/ffv1_vulkan.c | 34 ++++++++++++++++++++++++++++++++++ libavcodec/ffv1_vulkan.h | 4 ++++ libavcodec/vulkan_ffv1.c | 27 +-------------------------- 3 files changed, 39 insertions(+), 26 deletions(-) diff --git a/libavcodec/ffv1_vulkan.c b/libavcodec/ffv1_vulkan.c index a9f9f47f07..91cfb7bd73 100644 --- a/libavcodec/ffv1_vulkan.c +++ b/libavcodec/ffv1_vulkan.c @@ -21,6 +21,40 @@ #include "ffv1_vulkan.h" #include "libavutil/crc.h" +void ff_ffv1_vk_set_common_sl(AVCodecContext *avctx, FFV1Context *f, + VkSpecializationInfo *sl, + enum AVPixelFormat sw_format) +{ + const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(sw_format); + int color_planes = av_pix_fmt_desc_get(sw_format)->nb_components; + int is_rgb = !(f->colorspace == 0 && sw_format != AV_PIX_FMT_YA8) && + !(sw_format == AV_PIX_FMT_YA8); + + SPEC_LIST_ADD(sl, 2, 32, f->version); + SPEC_LIST_ADD(sl, 3, 32, f->quant_table_count); + + for (int i = 0; i < f->quant_table_count; i++) { + if (f->quant_tables[i][3][127] || f->quant_tables[i][4][127]) { + SPEC_LIST_ADD(sl, 4, 32, 1); + break; + } + } + + int bits = desc->comp[0].depth; + SPEC_LIST_ADD(sl, 5, 32, 1 << bits); + SPEC_LIST_ADD(sl, 6, 32, f->colorspace); + SPEC_LIST_ADD(sl, 7, 32, f->transparency); + SPEC_LIST_ADD(sl, 8, 32, ff_vk_mt_is_np_rgb(sw_format) && + (desc->flags & AV_PIX_FMT_FLAG_PLANAR)); + SPEC_LIST_ADD(sl, 9, 32, f->plane_count); + SPEC_LIST_ADD(sl, 10, 32, color_planes); + SPEC_LIST_ADD(sl, 11, 32, av_pix_fmt_count_planes(sw_format)); + SPEC_LIST_ADD(sl, 12, 32, bits + is_rgb); + + SPEC_LIST_ADD(sl, 13, 32, f->chroma_h_shift); + SPEC_LIST_ADD(sl, 14, 32, f->chroma_v_shift); +} + int ff_ffv1_vk_update_state_transition_data(FFVulkanContext *s, FFVkBuffer *vkb, FFV1Context *f) { diff --git a/libavcodec/ffv1_vulkan.h b/libavcodec/ffv1_vulkan.h index a11c61ae4b..df7bac45de 100644 --- a/libavcodec/ffv1_vulkan.h +++ b/libavcodec/ffv1_vulkan.h @@ -24,6 +24,10 @@ #include "libavutil/vulkan.h" #include "ffv1.h" +void ff_ffv1_vk_set_common_sl(AVCodecContext *avctx, FFV1Context *f, + VkSpecializationInfo *sl, + enum AVPixelFormat sw_format); + int ff_ffv1_vk_update_state_transition_data(FFVulkanContext *s, FFVkBuffer *vkb, FFV1Context *f); diff --git a/libavcodec/vulkan_ffv1.c b/libavcodec/vulkan_ffv1.c index e01321f890..bdc3be50b4 100644 --- a/libavcodec/vulkan_ffv1.c +++ b/libavcodec/vulkan_ffv1.c @@ -783,8 +783,6 @@ static int vk_decode_ffv1_init(AVCodecContext *avctx) AVHWFramesContext *hwfc = (AVHWFramesContext *)avctx->hw_frames_ctx->data; AVHWFramesContext *dctx = hwfc; enum AVPixelFormat sw_format = hwfc->sw_format; - const AVPixFmtDescriptor *desc = av_pix_fmt_desc_get(sw_format); - int color_planes = av_pix_fmt_desc_get(avctx->sw_pix_fmt)->nb_components; int is_rgb = !(f->colorspace == 0 && sw_format != AV_PIX_FMT_YA8) && !(sw_format == AV_PIX_FMT_YA8); @@ -796,6 +794,7 @@ static int vk_decode_ffv1_init(AVCodecContext *avctx) } SPEC_LIST_CREATE(sl, 15, 15*sizeof(uint32_t)) + ff_ffv1_vk_set_common_sl(avctx, f, sl, sw_format); if (RGB_LINECACHE != 2) SPEC_LIST_ADD(sl, 0, 32, RGB_LINECACHE); @@ -803,30 +802,6 @@ static int vk_decode_ffv1_init(AVCodecContext *avctx) if (f->ec && !!(avctx->err_recognition & AV_EF_CRCCHECK)) SPEC_LIST_ADD(sl, 1, 32, 1); - SPEC_LIST_ADD(sl, 2, 32, f->version); - SPEC_LIST_ADD(sl, 3, 32, f->quant_table_count); - - for (int i = 0; i < f->quant_table_count; i++) { - if (f->quant_tables[i][3][127] || f->quant_tables[i][4][127]) { - SPEC_LIST_ADD(sl, 4, 32, 1); - break; - } - } - - int bits = f->avctx->bits_per_raw_sample > 0 ? f->avctx->bits_per_raw_sample : 8; - SPEC_LIST_ADD(sl, 5, 32, 1 << bits); - SPEC_LIST_ADD(sl, 6, 32, f->colorspace); - SPEC_LIST_ADD(sl, 7, 32, f->transparency); - SPEC_LIST_ADD(sl, 8, 32, ff_vk_mt_is_np_rgb(sw_format) && - (desc->flags & AV_PIX_FMT_FLAG_PLANAR)); - SPEC_LIST_ADD(sl, 9, 32, f->plane_count); - SPEC_LIST_ADD(sl, 10, 32, color_planes); - SPEC_LIST_ADD(sl, 11, 32, av_pix_fmt_count_planes(sw_format)); - SPEC_LIST_ADD(sl, 12, 32, bits + is_rgb); - - SPEC_LIST_ADD(sl, 13, 32, f->chroma_h_shift); - SPEC_LIST_ADD(sl, 14, 32, f->chroma_v_shift); - /* Setup shader */ RET(init_setup_shader(f, &ctx->s, &ctx->exec_pool, &fv->setup, sl)); _______________________________________________ ffmpeg-cvslog mailing list -- [email protected] To unsubscribe send an email to [email protected]
