aboutsummaryrefslogtreecommitdiffstats
path: root/libavfilter/vulkan_filter.h
diff options
context:
space:
mode:
authorLynne <dev@lynne.ee>2023-02-17 03:10:58 +0100
committerLynne <dev@lynne.ee>2023-05-29 00:41:51 +0200
commit05ce6473acb34c2b79311e314dd15867863b56b8 (patch)
treebc816d6317c2abba842877d6d670e4e839f01f50 /libavfilter/vulkan_filter.h
parent51b7fe81be5892b0c2590443b3ff2d684878a83c (diff)
downloadffmpeg-05ce6473acb34c2b79311e314dd15867863b56b8.tar.gz
lavfi: add lavfi-only Vulkan infrastructure
Diffstat (limited to 'libavfilter/vulkan_filter.h')
-rw-r--r--libavfilter/vulkan_filter.h39
1 files changed, 35 insertions, 4 deletions
diff --git a/libavfilter/vulkan_filter.h b/libavfilter/vulkan_filter.h
index bfdb9b2d7d..d2c14601d9 100644
--- a/libavfilter/vulkan_filter.h
+++ b/libavfilter/vulkan_filter.h
@@ -1,4 +1,6 @@
/*
+ * Copyright (c) Lynne
+ *
* This file is part of FFmpeg.
*
* FFmpeg is free software; you can redistribute it and/or
@@ -26,9 +28,38 @@
/**
* General lavfi IO functions
*/
-int ff_vk_filter_init (AVFilterContext *avctx);
-int ff_vk_filter_config_input (AVFilterLink *inlink);
-int ff_vk_filter_config_output (AVFilterLink *outlink);
-int ff_vk_filter_config_output_inplace(AVFilterLink *outlink);
+int ff_vk_filter_init (AVFilterContext *avctx);
+int ff_vk_filter_config_input (AVFilterLink *inlink);
+int ff_vk_filter_config_output(AVFilterLink *outlink);
+
+/**
+ * Can be called manually, if not using ff_vk_filter_config_output.
+ */
+int ff_vk_filter_init_context(AVFilterContext *avctx, FFVulkanContext *s,
+ AVBufferRef *frames_ref,
+ int width, int height, enum AVPixelFormat sw_format);
+
+/**
+ * Submit a compute shader with a zero/one input and single out for execution.
+ */
+int ff_vk_filter_process_simple(FFVulkanContext *vkctx, FFVkExecPool *e,
+ FFVulkanPipeline *pl, AVFrame *out_f, AVFrame *in_f,
+ VkSampler sampler, void *push_src, size_t push_size);
+
+/**
+ * Submit a compute shader with a single in and single out with 2 stages.
+ */
+int ff_vk_filter_process_2pass(FFVulkanContext *vkctx, FFVkExecPool *e,
+ FFVulkanPipeline *pls[2],
+ AVFrame *out, AVFrame *tmp, AVFrame *in,
+ VkSampler sampler, void *push_src, size_t push_size);
+
+/**
+ * Up to 16 inputs, one output
+ */
+int ff_vk_filter_process_Nin(FFVulkanContext *vkctx, FFVkExecPool *e,
+ FFVulkanPipeline *pl,
+ AVFrame *out, AVFrame *in[], int nb_in,
+ VkSampler sampler, void *push_src, size_t push_size);
#endif /* AVFILTER_VULKAN_FILTER_H */