FFmpeg
Data Structures | Macros | Enumerations | Functions | Variables
vf_xfade_vulkan.c File Reference
#include "libavutil/avassert.h"
#include "libavutil/opt.h"
#include "vulkan_filter.h"
#include "filters.h"
#include "video.h"

Go to the source code of this file.

Data Structures

struct  XFadeParameters
 
struct  XFadeVulkanContext
 

Macros

#define IN_A   0
 
#define IN_B   1
 
#define IN_NB   2
 
#define OFFSET(x)   offsetof(XFadeVulkanContext, x)
 
#define FLAGS   (AV_OPT_FLAG_FILTERING_PARAM | AV_OPT_FLAG_VIDEO_PARAM)
 

Enumerations

enum  XFadeTransitions {
  CUSTOM = -1, FADE, WIPELEFT, WIPERIGHT,
  WIPEUP, WIPEDOWN, SLIDELEFT, SLIDERIGHT,
  SLIDEUP, SLIDEDOWN, CIRCLECROP, RECTCROP,
  DISTANCE, FADEBLACK, FADEWHITE, RADIAL,
  SMOOTHLEFT, SMOOTHRIGHT, SMOOTHUP, SMOOTHDOWN,
  CIRCLEOPEN, CIRCLECLOSE, VERTOPEN, VERTCLOSE,
  HORZOPEN, HORZCLOSE, DISSOLVE, PIXELIZE,
  DIAGTL, DIAGTR, DIAGBL, DIAGBR,
  HLSLICE, HRSLICE, VUSLICE, VDSLICE,
  HBLUR, FADEGRAYS, WIPETL, WIPETR,
  WIPEBL, WIPEBR, SQUEEZEH, SQUEEZEV,
  ZOOMIN, FADEFAST, FADESLOW, HLWIND,
  HRWIND, VUWIND, VDWIND, COVERLEFT,
  COVERRIGHT, COVERUP, COVERDOWN, REVEALLEFT,
  REVEALRIGHT, REVEALUP, REVEALDOWN, NB_TRANSITIONS,
  CUSTOM, FADE, WIPELEFT, WIPERIGHT,
  WIPEUP, WIPEDOWN, SLIDELEFT, SLIDERIGHT,
  SLIDEUP, SLIDEDOWN, NB_TRANSITIONS, FADE,
  WIPELEFT, WIPERIGHT, WIPEUP, WIPEDOWN,
  SLIDEDOWN, SLIDEUP, SLIDELEFT, SLIDERIGHT,
  CIRCLEOPEN, CIRCLECLOSE, DISSOLVE, PIXELIZE,
  WIPETL, WIPETR, WIPEBL, WIPEBR,
  NB_TRANSITIONS
}
 

Functions

static av_cold int init_vulkan (AVFilterContext *avctx)
 
static int xfade_frame (AVFilterContext *avctx, AVFrame *frame_a, AVFrame *frame_b)
 
static int config_props_output (AVFilterLink *outlink)
 
static int forward_frame (XFadeVulkanContext *s, AVFilterLink *inlink, AVFilterLink *outlink)
 
static int activate (AVFilterContext *avctx)
 
static av_cold void uninit (AVFilterContext *avctx)
 
static AVFrameget_video_buffer (AVFilterLink *inlink, int w, int h)
 
 AVFILTER_DEFINE_CLASS (xfade_vulkan)
 

Variables

const unsigned char ff_xfade_comp_spv_data []
 
const unsigned int ff_xfade_comp_spv_len
 
static const AVOption xfade_vulkan_options []
 
static const AVFilterPad xfade_vulkan_inputs []
 
static const AVFilterPad xfade_vulkan_outputs []
 
const FFFilter ff_vf_xfade_vulkan
 

Macro Definition Documentation

◆ IN_A

#define IN_A   0

Definition at line 26 of file vf_xfade_vulkan.c.

◆ IN_B

#define IN_B   1

Definition at line 27 of file vf_xfade_vulkan.c.

◆ IN_NB

#define IN_NB   2

Definition at line 28 of file vf_xfade_vulkan.c.

◆ OFFSET

#define OFFSET (   x)    offsetof(XFadeVulkanContext, x)

Definition at line 389 of file vf_xfade_vulkan.c.

◆ FLAGS

Definition at line 390 of file vf_xfade_vulkan.c.

Enumeration Type Documentation

◆ XFadeTransitions

Enumerator
CUSTOM 
FADE 
WIPELEFT 
WIPERIGHT 
WIPEUP 
WIPEDOWN 
SLIDELEFT 
SLIDERIGHT 
SLIDEUP 
SLIDEDOWN 
CIRCLECROP 
RECTCROP 
DISTANCE 
FADEBLACK 
FADEWHITE 
RADIAL 
SMOOTHLEFT 
SMOOTHRIGHT 
SMOOTHUP 
SMOOTHDOWN 
CIRCLEOPEN 
CIRCLECLOSE 
VERTOPEN 
VERTCLOSE 
HORZOPEN 
HORZCLOSE 
DISSOLVE 
PIXELIZE 
DIAGTL 
DIAGTR 
DIAGBL 
DIAGBR 
HLSLICE 
HRSLICE 
VUSLICE 
VDSLICE 
HBLUR 
FADEGRAYS 
WIPETL 
WIPETR 
WIPEBL 
WIPEBR 
SQUEEZEH 
SQUEEZEV 
ZOOMIN 
FADEFAST 
FADESLOW 
HLWIND 
HRWIND 
VUWIND 
VDWIND 
COVERLEFT 
COVERRIGHT 
COVERUP 
COVERDOWN 
REVEALLEFT 
REVEALRIGHT 
REVEALUP 
REVEALDOWN 
NB_TRANSITIONS 
CUSTOM 
FADE 
WIPELEFT 
WIPERIGHT 
WIPEUP 
WIPEDOWN 
SLIDELEFT 
SLIDERIGHT 
SLIDEUP 
SLIDEDOWN 
NB_TRANSITIONS 
FADE 
WIPELEFT 
WIPERIGHT 
WIPEUP 
WIPEDOWN 
SLIDEDOWN 
SLIDEUP 
SLIDELEFT 
SLIDERIGHT 
CIRCLEOPEN 
CIRCLECLOSE 
DISSOLVE 
PIXELIZE 
WIPETL 
WIPETR 
WIPEBL 
WIPEBR 
NB_TRANSITIONS 

Definition at line 70 of file vf_xfade_vulkan.c.

Function Documentation

◆ init_vulkan()

static av_cold int init_vulkan ( AVFilterContext avctx)
static

Definition at line 91 of file vf_xfade_vulkan.c.

Referenced by xfade_frame().

◆ xfade_frame()

static int xfade_frame ( AVFilterContext avctx,
AVFrame frame_a,
AVFrame frame_b 
)
static

Definition at line 148 of file vf_xfade_vulkan.c.

Referenced by activate().

◆ config_props_output()

static int config_props_output ( AVFilterLink outlink)
static

Definition at line 189 of file vf_xfade_vulkan.c.

◆ forward_frame()

static int forward_frame ( XFadeVulkanContext s,
AVFilterLink inlink,
AVFilterLink outlink 
)
static

Definition at line 232 of file vf_xfade_vulkan.c.

Referenced by activate().

◆ activate()

static int activate ( AVFilterContext avctx)
static

Definition at line 270 of file vf_xfade_vulkan.c.

◆ uninit()

static av_cold void uninit ( AVFilterContext avctx)
static

Definition at line 362 of file vf_xfade_vulkan.c.

◆ get_video_buffer()

static AVFrame* get_video_buffer ( AVFilterLink inlink,
int  w,
int  h 
)
static

Definition at line 380 of file vf_xfade_vulkan.c.

◆ AVFILTER_DEFINE_CLASS()

AVFILTER_DEFINE_CLASS ( xfade_vulkan  )

Variable Documentation

◆ ff_xfade_comp_spv_data

const unsigned char ff_xfade_comp_spv_data[]

Referenced by init_vulkan().

◆ ff_xfade_comp_spv_len

const unsigned int ff_xfade_comp_spv_len

Referenced by init_vulkan().

◆ xfade_vulkan_options

const AVOption xfade_vulkan_options[]
static
Initial value:
= {
{ "transition", "set cross fade transition", OFFSET(transition), AV_OPT_TYPE_INT, {.i64=FADE}, 0, NB_TRANSITIONS-1, FLAGS, .unit = "transition" },
{ "fade", "fade transition", 0, AV_OPT_TYPE_CONST, {.i64=FADE}, 0, 0, FLAGS, .unit = "transition" },
{ "wipeleft", "wipe left transition", 0, AV_OPT_TYPE_CONST, {.i64=WIPELEFT}, 0, 0, FLAGS, .unit = "transition" },
{ "wiperight", "wipe right transition", 0, AV_OPT_TYPE_CONST, {.i64=WIPERIGHT}, 0, 0, FLAGS, .unit = "transition" },
{ "wipeup", "wipe up transition", 0, AV_OPT_TYPE_CONST, {.i64=WIPEUP}, 0, 0, FLAGS, .unit = "transition" },
{ "wipedown", "wipe down transition", 0, AV_OPT_TYPE_CONST, {.i64=WIPEDOWN}, 0, 0, FLAGS, .unit = "transition" },
{ "slidedown", "slide down transition", 0, AV_OPT_TYPE_CONST, {.i64=SLIDEDOWN}, 0, 0, FLAGS, .unit = "transition" },
{ "slideup", "slide up transition", 0, AV_OPT_TYPE_CONST, {.i64=SLIDEUP}, 0, 0, FLAGS, .unit = "transition" },
{ "slideleft", "slide left transition", 0, AV_OPT_TYPE_CONST, {.i64=SLIDELEFT}, 0, 0, FLAGS, .unit = "transition" },
{ "slideright", "slide right transition", 0, AV_OPT_TYPE_CONST, {.i64=SLIDERIGHT}, 0, 0, FLAGS, .unit = "transition" },
{ "circleopen", "circleopen transition", 0, AV_OPT_TYPE_CONST, {.i64=CIRCLEOPEN}, 0, 0, FLAGS, .unit = "transition" },
{ "circleclose", "circleclose transition", 0, AV_OPT_TYPE_CONST, {.i64=CIRCLECLOSE}, 0, 0, FLAGS, .unit = "transition" },
{ "dissolve", "dissolve transition", 0, AV_OPT_TYPE_CONST, {.i64=DISSOLVE}, 0, 0, FLAGS, .unit = "transition" },
{ "pixelize", "pixelize transition", 0, AV_OPT_TYPE_CONST, {.i64=PIXELIZE}, 0, 0, FLAGS, .unit = "transition" },
{ "wipetl", "wipe top left transition", 0, AV_OPT_TYPE_CONST, {.i64=WIPETL}, 0, 0, FLAGS, .unit = "transition" },
{ "wipetr", "wipe top right transition", 0, AV_OPT_TYPE_CONST, {.i64=WIPETR}, 0, 0, FLAGS, .unit = "transition" },
{ "wipebl", "wipe bottom left transition", 0, AV_OPT_TYPE_CONST, {.i64=WIPEBL}, 0, 0, FLAGS, .unit = "transition" },
{ "wipebr", "wipe bottom right transition", 0, AV_OPT_TYPE_CONST, {.i64=WIPEBR}, 0, 0, FLAGS, .unit = "transition" },
{ "duration", "set cross fade duration", OFFSET(duration), AV_OPT_TYPE_DURATION, {.i64=1000000}, 0, 60000000, FLAGS },
{ "offset", "set cross fade start relative to first input stream", OFFSET(offset), AV_OPT_TYPE_DURATION, {.i64=0}, INT64_MIN, INT64_MAX, FLAGS },
{ NULL }
}

Definition at line 392 of file vf_xfade_vulkan.c.

◆ xfade_vulkan_inputs

const AVFilterPad xfade_vulkan_inputs[]
static
Initial value:
= {
{
.name = "main",
.get_buffer.video = &get_video_buffer,
.config_props = &ff_vk_filter_config_input,
},
{
.name = "xfade",
.get_buffer.video = &get_video_buffer,
.config_props = &ff_vk_filter_config_input,
},
}

Definition at line 418 of file vf_xfade_vulkan.c.

◆ xfade_vulkan_outputs

const AVFilterPad xfade_vulkan_outputs[]
static
Initial value:
= {
{
.name = "default",
.config_props = &config_props_output,
},
}

Definition at line 433 of file vf_xfade_vulkan.c.

◆ ff_vf_xfade_vulkan

const FFFilter ff_vf_xfade_vulkan
Initial value:
= {
.p.name = "xfade_vulkan",
.p.description = NULL_IF_CONFIG_SMALL("Cross fade one video with another video."),
.p.priv_class = &xfade_vulkan_class,
.priv_size = sizeof(XFadeVulkanContext),
.flags_internal = FF_FILTER_FLAG_HWFRAME_AWARE,
}

Definition at line 441 of file vf_xfade_vulkan.c.

WIPETR
@ WIPETR
Definition: vf_xfade_vulkan.c:85
WIPELEFT
@ WIPELEFT
Definition: vf_xfade_vulkan.c:72
FF_FILTER_FLAG_HWFRAME_AWARE
#define FF_FILTER_FLAG_HWFRAME_AWARE
The filter is aware of hardware frames, and any hardware frame context should not be automatically pr...
Definition: filters.h:208
ff_vk_filter_init
int ff_vk_filter_init(AVFilterContext *avctx)
General lavfi IO functions.
Definition: vulkan_filter.c:233
FILTER_SINGLE_PIXFMT
#define FILTER_SINGLE_PIXFMT(pix_fmt_)
Definition: filters.h:254
get_video_buffer
static AVFrame * get_video_buffer(AVFilterLink *inlink, int w, int h)
Definition: vf_xfade_vulkan.c:380
CIRCLEOPEN
@ CIRCLEOPEN
Definition: vf_xfade_vulkan.c:80
AV_OPT_TYPE_DURATION
@ AV_OPT_TYPE_DURATION
Underlying C type is int64_t.
Definition: opt.h:319
AV_PIX_FMT_VULKAN
@ AV_PIX_FMT_VULKAN
Vulkan hardware images.
Definition: pixfmt.h:379
WIPEBL
@ WIPEBL
Definition: vf_xfade_vulkan.c:86
SLIDELEFT
@ SLIDELEFT
Definition: vf_xfade_vulkan.c:78
SLIDEDOWN
@ SLIDEDOWN
Definition: vf_xfade_vulkan.c:76
SLIDEUP
@ SLIDEUP
Definition: vf_xfade_vulkan.c:77
FILTER_OUTPUTS
#define FILTER_OUTPUTS(array)
Definition: filters.h:265
NULL
#define NULL
Definition: coverity.c:32
activate
static int activate(AVFilterContext *avctx)
Definition: vf_xfade_vulkan.c:270
xfade_vulkan_outputs
static const AVFilterPad xfade_vulkan_outputs[]
Definition: vf_xfade_vulkan.c:433
PIXELIZE
@ PIXELIZE
Definition: vf_xfade_vulkan.c:83
DISSOLVE
@ DISSOLVE
Definition: vf_xfade_vulkan.c:82
init
int(* init)(AVBSFContext *ctx)
Definition: dts2pts.c:550
FLAGS
#define FLAGS
Definition: vf_xfade_vulkan.c:390
NULL_IF_CONFIG_SMALL
#define NULL_IF_CONFIG_SMALL(x)
Return NULL if CONFIG_SMALL is true, otherwise the argument without modification.
Definition: internal.h:94
AVFILTER_FLAG_HWDEVICE
#define AVFILTER_FLAG_HWDEVICE
The filter can create hardware frames using AVFilterContext.hw_device_ctx.
Definition: avfilter.h:188
offset
it s the only field you need to keep assuming you have a context There is some magic you don t need to care about around this just let it vf offset
Definition: writing_filters.txt:86
xfade_vulkan_inputs
static const AVFilterPad xfade_vulkan_inputs[]
Definition: vf_xfade_vulkan.c:418
NB_TRANSITIONS
@ NB_TRANSITIONS
Definition: vf_xfade_vulkan.c:88
CIRCLECLOSE
@ CIRCLECLOSE
Definition: vf_xfade_vulkan.c:81
WIPERIGHT
@ WIPERIGHT
Definition: vf_xfade_vulkan.c:73
FADE
@ FADE
Definition: vf_xfade_vulkan.c:71
FILTER_INPUTS
#define FILTER_INPUTS(array)
Definition: filters.h:264
WIPEBR
@ WIPEBR
Definition: vf_xfade_vulkan.c:87
AV_OPT_TYPE_INT
@ AV_OPT_TYPE_INT
Underlying C type is int.
Definition: opt.h:259
config_props_output
static int config_props_output(AVFilterLink *outlink)
Definition: vf_xfade_vulkan.c:189
XFadeVulkanContext
Definition: vf_xfade_vulkan.c:37
ff_vk_filter_config_input
int ff_vk_filter_config_input(AVFilterLink *inlink)
Definition: vulkan_filter.c:176
AVMEDIA_TYPE_VIDEO
@ AVMEDIA_TYPE_VIDEO
Definition: avutil.h:200
WIPEDOWN
@ WIPEDOWN
Definition: vf_xfade_vulkan.c:75
WIPETL
@ WIPETL
Definition: vf_xfade_vulkan.c:84
SLIDERIGHT
@ SLIDERIGHT
Definition: vf_xfade_vulkan.c:79
WIPEUP
@ WIPEUP
Definition: vf_xfade_vulkan.c:74
uninit
static av_cold void uninit(AVFilterContext *avctx)
Definition: vf_xfade_vulkan.c:362
OFFSET
#define OFFSET(x)
Definition: vf_xfade_vulkan.c:389
AV_OPT_TYPE_CONST
@ AV_OPT_TYPE_CONST
Special option type for declaring named constants.
Definition: opt.h:299
duration
static int64_t duration
Definition: ffplay.c:329