FFmpeg 5.1.6
|
Graph-based frame editing library. More...
Modules | |
Buffer sink API | |
The buffersink and abuffersink filters are there to connect filter graphs to applications. | |
Buffer source API | |
Files | |
file | avfilter.h |
Main libavfilter public API header. | |
file | version.h |
Libavfilter version macros. | |
file | version_major.h |
Libavfilter version macros. | |
Data Structures | |
struct | AVFilter |
Filter definition. More... | |
struct | AVFilterContext |
An instance of a filter. More... | |
struct | AVFilterFormatsConfig |
Lists of formats / etc. More... | |
struct | AVFilterLink |
A link between two filters. More... | |
struct | AVFilterGraph |
struct | AVFilterInOut |
A linked-list of the inputs/outputs of the filter chain. More... | |
Macros | |
#define | AVFILTER_FLAG_DYNAMIC_INPUTS (1 << 0) |
The number of the filter inputs is not determined just by AVFilter.inputs. More... | |
#define | AVFILTER_FLAG_DYNAMIC_OUTPUTS (1 << 1) |
The number of the filter outputs is not determined just by AVFilter.outputs. More... | |
#define | AVFILTER_FLAG_SLICE_THREADS (1 << 2) |
The filter supports multithreading by splitting frames into multiple parts and processing them concurrently. More... | |
#define | AVFILTER_FLAG_METADATA_ONLY (1 << 3) |
The filter is a "metadata" filter - it does not modify the frame data in any way. More... | |
#define | AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC (1 << 16) |
Some filters support a generic "enable" expression option that can be used to enable or disable a filter in the timeline. More... | |
#define | AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL (1 << 17) |
Same as AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC, except that the filter will have its filter_frame() callback(s) called as usual even when the enable expression is false. More... | |
#define | AVFILTER_FLAG_SUPPORT_TIMELINE (AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL) |
Handy mask to test whether the filter supports or no the timeline feature (internally or generically). More... | |
#define | AVFILTER_THREAD_SLICE (1 << 0) |
Process multiple parts of the frame concurrently. More... | |
#define | AVFILTER_CMD_FLAG_ONE 1 |
Stop once a filter understood the command (for target=all for example), fast filters are favored automatically. More... | |
#define | AVFILTER_CMD_FLAG_FAST 2 |
Only execute command when its fast (like a video out that supports contrast adjustment in hw) More... | |
Typedefs | |
typedef struct AVFilterPad | AVFilterPad |
typedef struct AVFilterFormats | AVFilterFormats |
typedef struct AVFilterChannelLayouts | AVFilterChannelLayouts |
typedef struct AVFilterInternal | AVFilterInternal |
typedef struct AVFilterGraphInternal | AVFilterGraphInternal |
typedef int() | avfilter_action_func(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs) |
A function pointer passed to the AVFilterGraph::execute callback to be executed multiple times, possibly in parallel. More... | |
typedef int() | avfilter_execute_func(AVFilterContext *ctx, avfilter_action_func *func, void *arg, int *ret, int nb_jobs) |
A function executing multiple jobs, possibly in parallel. More... | |
Enumerations | |
enum | { AVFILTER_AUTO_CONVERT_ALL = 0 , AVFILTER_AUTO_CONVERT_NONE = -1 } |
Functions | |
unsigned | avfilter_version (void) |
Return the LIBAVFILTER_VERSION_INT constant. More... | |
const char * | avfilter_configuration (void) |
Return the libavfilter build-time configuration. More... | |
const char * | avfilter_license (void) |
Return the libavfilter license. More... | |
attribute_deprecated int | avfilter_pad_count (const AVFilterPad *pads) |
Get the number of elements in an AVFilter's inputs or outputs array. More... | |
const char * | avfilter_pad_get_name (const AVFilterPad *pads, int pad_idx) |
Get the name of an AVFilterPad. More... | |
enum AVMediaType | avfilter_pad_get_type (const AVFilterPad *pads, int pad_idx) |
Get the type of an AVFilterPad. More... | |
unsigned | avfilter_filter_pad_count (const AVFilter *filter, int is_output) |
Get the number of elements in an AVFilter's inputs or outputs array. More... | |
int | avfilter_link (AVFilterContext *src, unsigned srcpad, AVFilterContext *dst, unsigned dstpad) |
Link two filters together. More... | |
void | avfilter_link_free (AVFilterLink **link) |
Free the link in *link, and set its pointer to NULL. More... | |
int | avfilter_config_links (AVFilterContext *filter) |
Negotiate the media format, dimensions, etc of all inputs to a filter. More... | |
int | avfilter_process_command (AVFilterContext *filter, const char *cmd, const char *arg, char *res, int res_len, int flags) |
Make the filter instance process a command. More... | |
const AVFilter * | av_filter_iterate (void **opaque) |
Iterate over all registered filters. More... | |
const AVFilter * | avfilter_get_by_name (const char *name) |
Get a filter definition matching the given name. More... | |
int | avfilter_init_str (AVFilterContext *ctx, const char *args) |
Initialize a filter with the supplied parameters. More... | |
int | avfilter_init_dict (AVFilterContext *ctx, AVDictionary **options) |
Initialize a filter with the supplied dictionary of options. More... | |
void | avfilter_free (AVFilterContext *filter) |
Free a filter context. More... | |
int | avfilter_insert_filter (AVFilterLink *link, AVFilterContext *filt, unsigned filt_srcpad_idx, unsigned filt_dstpad_idx) |
Insert a filter in the middle of an existing link. More... | |
const AVClass * | avfilter_get_class (void) |
AVFilterGraph * | avfilter_graph_alloc (void) |
Allocate a filter graph. More... | |
AVFilterContext * | avfilter_graph_alloc_filter (AVFilterGraph *graph, const AVFilter *filter, const char *name) |
Create a new filter instance in a filter graph. More... | |
AVFilterContext * | avfilter_graph_get_filter (AVFilterGraph *graph, const char *name) |
Get a filter instance identified by instance name from graph. More... | |
int | avfilter_graph_create_filter (AVFilterContext **filt_ctx, const AVFilter *filt, const char *name, const char *args, void *opaque, AVFilterGraph *graph_ctx) |
Create and add a filter instance into an existing graph. More... | |
void | avfilter_graph_set_auto_convert (AVFilterGraph *graph, unsigned flags) |
Enable or disable automatic format conversion inside the graph. More... | |
int | avfilter_graph_config (AVFilterGraph *graphctx, void *log_ctx) |
Check validity and configure all the links and formats in the graph. More... | |
void | avfilter_graph_free (AVFilterGraph **graph) |
Free a graph, destroy its links, and set *graph to NULL. More... | |
AVFilterInOut * | avfilter_inout_alloc (void) |
Allocate a single AVFilterInOut entry. More... | |
void | avfilter_inout_free (AVFilterInOut **inout) |
Free the supplied list of AVFilterInOut and set *inout to NULL. More... | |
int | avfilter_graph_parse (AVFilterGraph *graph, const char *filters, AVFilterInOut *inputs, AVFilterInOut *outputs, void *log_ctx) |
Add a graph described by a string to a graph. More... | |
int | avfilter_graph_parse_ptr (AVFilterGraph *graph, const char *filters, AVFilterInOut **inputs, AVFilterInOut **outputs, void *log_ctx) |
Add a graph described by a string to a graph. More... | |
int | avfilter_graph_parse2 (AVFilterGraph *graph, const char *filters, AVFilterInOut **inputs, AVFilterInOut **outputs) |
Add a graph described by a string to a graph. More... | |
int | avfilter_graph_send_command (AVFilterGraph *graph, const char *target, const char *cmd, const char *arg, char *res, int res_len, int flags) |
Send a command to one or more filter instances. More... | |
int | avfilter_graph_queue_command (AVFilterGraph *graph, const char *target, const char *cmd, const char *arg, int flags, double ts) |
Queue a command for one or more filter instances. More... | |
char * | avfilter_graph_dump (AVFilterGraph *graph, const char *options) |
Dump a graph into a human-readable string representation. More... | |
int | avfilter_graph_request_oldest (AVFilterGraph *graph) |
Request a frame on the oldest sink link. More... | |
Graph-based frame editing library.
#define AVFILTER_FLAG_DYNAMIC_INPUTS (1 << 0) |
The number of the filter inputs is not determined just by AVFilter.inputs.
The filter might add additional inputs during initialization depending on the options supplied to it.
Definition at line 116 of file avfilter.h.
#define AVFILTER_FLAG_DYNAMIC_OUTPUTS (1 << 1) |
The number of the filter outputs is not determined just by AVFilter.outputs.
The filter might add additional outputs during initialization depending on the options supplied to it.
Definition at line 122 of file avfilter.h.
#define AVFILTER_FLAG_SLICE_THREADS (1 << 2) |
The filter supports multithreading by splitting frames into multiple parts and processing them concurrently.
Definition at line 127 of file avfilter.h.
#define AVFILTER_FLAG_METADATA_ONLY (1 << 3) |
The filter is a "metadata" filter - it does not modify the frame data in any way.
It may only affect the metadata (i.e. those fields copied by av_frame_copy_props()).
More precisely, this means:
Definition at line 143 of file avfilter.h.
#define AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC (1 << 16) |
Some filters support a generic "enable" expression option that can be used to enable or disable a filter in the timeline.
Filters supporting this option have this flag set. When the enable expression is false, the default no-op filter_frame() function is called in place of the filter_frame() callback defined on each input pad, thus the frame is passed unchanged to the next filters.
Definition at line 152 of file avfilter.h.
#define AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL (1 << 17) |
Same as AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC, except that the filter will have its filter_frame() callback(s) called as usual even when the enable expression is false.
The filter will disable filtering within the filter_frame() callback(s) itself, for example executing code depending on the AVFilterContext->is_disabled value.
Definition at line 160 of file avfilter.h.
#define AVFILTER_FLAG_SUPPORT_TIMELINE (AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC | AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL) |
Handy mask to test whether the filter supports or no the timeline feature (internally or generically).
Definition at line 165 of file avfilter.h.
#define AVFILTER_THREAD_SLICE (1 << 0) |
Process multiple parts of the frame concurrently.
Definition at line 403 of file avfilter.h.
#define AVFILTER_CMD_FLAG_ONE 1 |
Stop once a filter understood the command (for target=all for example), fast filters are favored automatically.
Definition at line 749 of file avfilter.h.
#define AVFILTER_CMD_FLAG_FAST 2 |
Only execute command when its fast (like a video out that supports contrast adjustment in hw)
Definition at line 750 of file avfilter.h.
typedef struct AVFilterPad AVFilterPad |
Definition at line 75 of file avfilter.h.
typedef struct AVFilterFormats AVFilterFormats |
Definition at line 76 of file avfilter.h.
typedef struct AVFilterChannelLayouts AVFilterChannelLayouts |
Definition at line 77 of file avfilter.h.
typedef struct AVFilterInternal AVFilterInternal |
Definition at line 405 of file avfilter.h.
typedef struct AVFilterGraphInternal AVFilterGraphInternal |
Definition at line 840 of file avfilter.h.
typedef int() avfilter_action_func(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs) |
A function pointer passed to the AVFilterGraph::execute callback to be executed multiple times, possibly in parallel.
ctx | the filter context the job belongs to |
arg | an opaque parameter passed through from AVFilterGraph::execute |
jobnr | the index of the job being executed |
nb_jobs | the total number of jobs |
Definition at line 854 of file avfilter.h.
typedef int() avfilter_execute_func(AVFilterContext *ctx, avfilter_action_func *func, void *arg, int *ret, int nb_jobs) |
A function executing multiple jobs, possibly in parallel.
ctx | the filter context to which the jobs belong |
func | the function to be called multiple times |
arg | the argument to be passed to func |
ret | a nb_jobs-sized array to be filled with return values from each invocation of func |
nb_jobs | the number of jobs to execute |
Definition at line 868 of file avfilter.h.
anonymous enum |
Enumerator | |
---|---|
AVFILTER_AUTO_CONVERT_ALL | all automatic conversions enabled |
AVFILTER_AUTO_CONVERT_NONE | all automatic conversions disabled |
Definition at line 1002 of file avfilter.h.
unsigned avfilter_version | ( | void | ) |
Return the LIBAVFILTER_VERSION_INT constant.
const char * avfilter_configuration | ( | void | ) |
Return the libavfilter build-time configuration.
const char * avfilter_license | ( | void | ) |
Return the libavfilter license.
attribute_deprecated int avfilter_pad_count | ( | const AVFilterPad * | pads | ) |
Get the number of elements in an AVFilter's inputs or outputs array.
const char * avfilter_pad_get_name | ( | const AVFilterPad * | pads, |
int | pad_idx | ||
) |
Get the name of an AVFilterPad.
pads | an array of AVFilterPads |
pad_idx | index of the pad in the array; it is the caller's responsibility to ensure the index is valid |
enum AVMediaType avfilter_pad_get_type | ( | const AVFilterPad * | pads, |
int | pad_idx | ||
) |
Get the type of an AVFilterPad.
pads | an array of AVFilterPads |
pad_idx | index of the pad in the array; it is the caller's responsibility to ensure the index is valid |
unsigned avfilter_filter_pad_count | ( | const AVFilter * | filter, |
int | is_output | ||
) |
Get the number of elements in an AVFilter's inputs or outputs array.
int avfilter_link | ( | AVFilterContext * | src, |
unsigned | srcpad, | ||
AVFilterContext * | dst, | ||
unsigned | dstpad | ||
) |
Link two filters together.
src | the source filter |
srcpad | index of the output pad on the source filter |
dst | the destination filter |
dstpad | index of the input pad on the destination filter |
Referenced by init_filter_graph().
void avfilter_link_free | ( | AVFilterLink ** | link | ) |
Free the link in *link, and set its pointer to NULL.
int avfilter_config_links | ( | AVFilterContext * | filter | ) |
Negotiate the media format, dimensions, etc of all inputs to a filter.
filter | the filter to negotiate the properties for its inputs |
int avfilter_process_command | ( | AVFilterContext * | filter, |
const char * | cmd, | ||
const char * | arg, | ||
char * | res, | ||
int | res_len, | ||
int | flags | ||
) |
Make the filter instance process a command.
It is recommended to use avfilter_graph_send_command().
const AVFilter * av_filter_iterate | ( | void ** | opaque | ) |
Iterate over all registered filters.
opaque | a pointer where libavfilter will store the iteration state. Must point to NULL to start the iteration. |
const AVFilter * avfilter_get_by_name | ( | const char * | name | ) |
Get a filter definition matching the given name.
name | the filter name to find |
Referenced by init_filter(), init_filter_graph(), and init_filters().
int avfilter_init_str | ( | AVFilterContext * | ctx, |
const char * | args | ||
) |
Initialize a filter with the supplied parameters.
ctx | uninitialized filter context to initialize |
args | Options to initialize the filter with. This must be a ':'-separated list of options in the 'key=value' form. May be NULL if the options have been set directly using the AVOptions API or there are no options that need to be set. |
Referenced by init_filter_graph().
int avfilter_init_dict | ( | AVFilterContext * | ctx, |
AVDictionary ** | options | ||
) |
Initialize a filter with the supplied dictionary of options.
ctx | uninitialized filter context to initialize |
options | An AVDictionary filled with options for this filter. On return this parameter will be destroyed and replaced with a dict containing options that were not found. This dictionary must be freed by the caller. May be NULL, then this function is equivalent to avfilter_init_str() with the second parameter set to NULL. |
Referenced by init_filter_graph().
void avfilter_free | ( | AVFilterContext * | filter | ) |
Free a filter context.
This will also remove the filter from its filtergraph's list of filters.
filter | the filter to free |
int avfilter_insert_filter | ( | AVFilterLink * | link, |
AVFilterContext * | filt, | ||
unsigned | filt_srcpad_idx, | ||
unsigned | filt_dstpad_idx | ||
) |
Insert a filter in the middle of an existing link.
link | the link into which the filter should be inserted |
filt | the filter to be inserted |
filt_srcpad_idx | the input pad on the filter to connect |
filt_dstpad_idx | the output pad on the filter to connect |
const AVClass * avfilter_get_class | ( | void | ) |
AVFilterGraph * avfilter_graph_alloc | ( | void | ) |
Allocate a filter graph.
Referenced by init_filter(), init_filter_graph(), and init_filters().
AVFilterContext * avfilter_graph_alloc_filter | ( | AVFilterGraph * | graph, |
const AVFilter * | filter, | ||
const char * | name | ||
) |
Create a new filter instance in a filter graph.
graph | graph in which the new filter will be used |
filter | the filter to create an instance of |
name | Name to give to the new instance (will be copied to AVFilterContext.name). This may be used by the caller to identify different filters, libavfilter itself assigns no semantics to this parameter. May be NULL. |
Referenced by init_filter_graph().
AVFilterContext * avfilter_graph_get_filter | ( | AVFilterGraph * | graph, |
const char * | name | ||
) |
Get a filter instance identified by instance name from graph.
graph | filter graph to search through. |
name | filter instance name (should be unique in the graph). |
int avfilter_graph_create_filter | ( | AVFilterContext ** | filt_ctx, |
const AVFilter * | filt, | ||
const char * | name, | ||
const char * | args, | ||
void * | opaque, | ||
AVFilterGraph * | graph_ctx | ||
) |
Create and add a filter instance into an existing graph.
The filter instance is created from the filter filt and inited with the parameter args. opaque is currently ignored.
In case of success put in *filt_ctx the pointer to the created filter instance, otherwise set *filt_ctx to NULL.
name | the instance name to give to the created filter instance |
graph_ctx | the filter graph |
Referenced by init_filter(), and init_filters().
void avfilter_graph_set_auto_convert | ( | AVFilterGraph * | graph, |
unsigned | flags | ||
) |
Enable or disable automatic format conversion inside the graph.
Note that format conversion can still happen inside explicitly inserted scale and aresample filters.
flags | any of the AVFILTER_AUTO_CONVERT_* constants |
int avfilter_graph_config | ( | AVFilterGraph * | graphctx, |
void * | log_ctx | ||
) |
Check validity and configure all the links and formats in the graph.
graphctx | the filter graph |
log_ctx | context used for logging |
Referenced by init_filter(), init_filter_graph(), and init_filters().
void avfilter_graph_free | ( | AVFilterGraph ** | graph | ) |
Free a graph, destroy its links, and set *graph to NULL.
If *graph is NULL, do nothing.
Referenced by main().
AVFilterInOut * avfilter_inout_alloc | ( | void | ) |
Allocate a single AVFilterInOut entry.
Must be freed with avfilter_inout_free().
Referenced by init_filter(), and init_filters().
void avfilter_inout_free | ( | AVFilterInOut ** | inout | ) |
Free the supplied list of AVFilterInOut and set *inout to NULL.
If *inout is NULL, do nothing.
Referenced by init_filter(), and init_filters().
int avfilter_graph_parse | ( | AVFilterGraph * | graph, |
const char * | filters, | ||
AVFilterInOut * | inputs, | ||
AVFilterInOut * | outputs, | ||
void * | log_ctx | ||
) |
Add a graph described by a string to a graph.
graph | the filter graph where to link the parsed graph context |
filters | string to be parsed |
inputs | linked list to the inputs of the graph |
outputs | linked list to the outputs of the graph |
int avfilter_graph_parse_ptr | ( | AVFilterGraph * | graph, |
const char * | filters, | ||
AVFilterInOut ** | inputs, | ||
AVFilterInOut ** | outputs, | ||
void * | log_ctx | ||
) |
Add a graph described by a string to a graph.
In the graph filters description, if the input label of the first filter is not specified, "in" is assumed; if the output label of the last filter is not specified, "out" is assumed.
graph | the filter graph where to link the parsed graph context |
filters | string to be parsed |
inputs | pointer to a linked list to the inputs of the graph, may be NULL. If non-NULL, *inputs is updated to contain the list of open inputs after the parsing, should be freed with avfilter_inout_free(). |
outputs | pointer to a linked list to the outputs of the graph, may be NULL. If non-NULL, *outputs is updated to contain the list of open outputs after the parsing, should be freed with avfilter_inout_free(). |
Referenced by init_filter(), and init_filters().
int avfilter_graph_parse2 | ( | AVFilterGraph * | graph, |
const char * | filters, | ||
AVFilterInOut ** | inputs, | ||
AVFilterInOut ** | outputs | ||
) |
Add a graph described by a string to a graph.
[in] | graph | the filter graph where to link the parsed graph context |
[in] | filters | string to be parsed |
[out] | inputs | a linked list of all free (unlinked) inputs of the parsed graph will be returned here. It is to be freed by the caller using avfilter_inout_free(). |
[out] | outputs | a linked list of all free (unlinked) outputs of the parsed graph will be returned here. It is to be freed by the caller using avfilter_inout_free(). |
int avfilter_graph_send_command | ( | AVFilterGraph * | graph, |
const char * | target, | ||
const char * | cmd, | ||
const char * | arg, | ||
char * | res, | ||
int | res_len, | ||
int | flags | ||
) |
Send a command to one or more filter instances.
graph | the filter graph |
target | the filter(s) to which the command should be sent "all" sends to all filters otherwise it can be a filter or filter instance name which will send the command to all matching filters. |
cmd | the command to send, for handling simplicity all commands must be alphanumeric only |
arg | the argument for the command |
res | a buffer with size res_size where the filter(s) can return a response. |
int avfilter_graph_queue_command | ( | AVFilterGraph * | graph, |
const char * | target, | ||
const char * | cmd, | ||
const char * | arg, | ||
int | flags, | ||
double | ts | ||
) |
Queue a command for one or more filter instances.
graph | the filter graph |
target | the filter(s) to which the command should be sent "all" sends to all filters otherwise it can be a filter or filter instance name which will send the command to all matching filters. |
cmd | the command to sent, for handling simplicity all commands must be alphanumeric only |
arg | the argument for the command |
ts | time at which the command should be sent to the filter |
char * avfilter_graph_dump | ( | AVFilterGraph * | graph, |
const char * | options | ||
) |
Dump a graph into a human-readable string representation.
graph | the graph to dump |
options | formatting options; currently ignored |
int avfilter_graph_request_oldest | ( | AVFilterGraph * | graph | ) |
Request a frame on the oldest sink link.
If the request returns AVERROR_EOF, try the next.
Note that this function is not meant to be the sole scheduling mechanism of a filtergraph, only a convenience function to help drain a filtergraph in a balanced way under normal circumstances.
Also note that AVERROR_EOF does not mean that frames did not arrive on some of the sinks during the process. When there are multiple sink links, in case the requested link returns an EOF, this may cause a filter to flush pending frames which are sent to another sink link, although unrequested.