Go to the source code of this file.
◆ CGROUPS
#define CGROUPS (int [3]){ 32, 32, 1 } |
◆ OFFSET
◆ FLAGS
◆ init_filter()
◆ process_frames()
◆ overlay_vulkan_blend()
◆ overlay_vulkan_config_output()
◆ overlay_vulkan_activate()
◆ overlay_vulkan_init()
◆ overlay_vulkan_uninit()
◆ AVFILTER_DEFINE_CLASS()
AVFILTER_DEFINE_CLASS |
( |
overlay_vulkan |
| ) |
|
◆ overlay_noalpha
const char overlay_noalpha[] |
|
static |
Initial value:= {
C(1,
if ((o_offset[
i].x <=
pos.x) && (o_offset[
i].y <=
pos.y) &&
(
pos.x < (o_offset[
i].x + o_size[
i].x)) &&
(
pos.y < (o_offset[
i].y + o_size[
i].y))) { )
C(2, vec4 res = texture(overlay_img[i], pos - o_offset[i]); )
C(2, imageStore(output_img[i], pos, res); )
C(1, } else { )
C(2, vec4 res = texture(main_img[i], pos); )
C(2, imageStore(output_img[i], pos, res); )
C(1, } )
}
Definition at line 48 of file vf_overlay_vulkan.c.
Referenced by init_filter().
◆ overlay_alpha
const char overlay_alpha[] |
|
static |
Initial value:= {
C(0,
void overlay_alpha_opaque(
int i, ivec2
pos) )
C(1, vec4 res = texture(main_img[
i],
pos); )
C(1,
if ((o_offset[
i].x <=
pos.x) && (o_offset[
i].y <=
pos.y) &&
(
pos.x < (o_offset[
i].x + o_size[
i].x)) &&
(
pos.y < (o_offset[
i].y + o_size[
i].y))) { )
C(2, vec4 ovr = texture(overlay_img[i], pos - o_offset[i]); )
C(2, res = ovr * ovr.a + res * (1.0f - ovr.a); )
C(2, res.a = 1.0f; )
C(2, imageStore(output_img[i], pos, res); )
C(1, } )
C(1, imageStore(output_img[
i],
pos, res); )
}
Definition at line 63 of file vf_overlay_vulkan.c.
Referenced by init_filter().
◆ overlay_vulkan_options
◆ overlay_vulkan_inputs
Initial value:= {
{
.name = "main",
},
{
.name = "overlay",
},
}
Definition at line 455 of file vf_overlay_vulkan.c.
◆ overlay_vulkan_outputs
◆ ff_vf_overlay_vulkan
Initial value:= {
.name = "overlay_vulkan",
.priv_class = &overlay_vulkan_class,
}
Definition at line 478 of file vf_overlay_vulkan.c.
int ff_vk_filter_query_formats(AVFilterContext *avctx)
General lavfi IO functions.
static av_cold int init(AVCodecContext *avctx)
#define FF_FILTER_FLAG_HWFRAME_AWARE
The filter is aware of hardware frames, and any hardware frame context should not be automatically pr...
static const char overlay_noalpha[]
static int overlay_vulkan_activate(AVFilterContext *avctx)
static int overlay_vulkan_config_output(AVFilterLink *outlink)
static const AVFilterPad overlay_vulkan_outputs[]
s EdgeDetect Foobar g libavfilter vf_edgedetect c libavfilter vf_foobar c edit libavfilter and add an entry for foobar following the pattern of the other filters edit libavfilter allfilters and add an entry for foobar following the pattern of the other filters configure make j< whatever > ffmpeg ffmpeg i you should get a foobar png with Lena edge detected That s your new playground is ready Some little details about what s going which in turn will define variables for the build system and the C
int ff_vk_filter_config_input(AVFilterLink *inlink)
static const AVFilterPad outputs[]
static const AVFilterPad overlay_vulkan_inputs[]
filter_frame For filters that do not use the activate() callback
these buffered frames must be flushed immediately if a new input produces new the filter must not call request_frame to get more It must just process the frame or queue it The task of requesting more frames is left to the filter s request_frame method or the application If a filter has several inputs
static av_cold int overlay_vulkan_init(AVFilterContext *avctx)
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
#define i(width, name, range_min, range_max)
static void overlay_vulkan_uninit(AVFilterContext *avctx)
static int query_formats(AVFilterContext *ctx)
static av_cold int uninit(AVCodecContext *avctx)