FFmpeg
Modules | Files | Data Structures | Macros | Typedefs | Enumerations | Functions
libavfilter

Graph-based frame editing library. More...

Modules

 Buffer sink API
 
 Buffer source API
 

Files

file  avfilter.h
 
file  version.h
 
file  version_major.h
 

Data Structures

struct  AVFilterFormatsConfig
 Lists of formats / etc. More...
 
struct  AVFilter
 Filter definition. More...
 
struct  AVFilterContext
 An instance of a filter. 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...
 
struct  AVFilterPadParams
 Parameters of a filter's input or output pad. More...
 
struct  AVFilterParams
 Parameters describing a filter to be created in a filtergraph. More...
 
struct  AVFilterChain
 A filterchain is a list of filter specifications. More...
 
struct  AVFilterGraphSegment
 A parsed representation of a filtergraph segment. 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_HWDEVICE   (1 << 4)
 The filter can create hardware frames using AVFilterContext.hw_device_ctx. 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 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...
 
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...
 
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 AVFilterav_filter_iterate (void **opaque)
 Iterate over all registered filters. More...
 
const AVFilteravfilter_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 AVClassavfilter_get_class (void)
 
AVFilterGraphavfilter_graph_alloc (void)
 Allocate a filter graph. More...
 
AVFilterContextavfilter_graph_alloc_filter (AVFilterGraph *graph, const AVFilter *filter, const char *name)
 Create a new filter instance in a filter graph. More...
 
AVFilterContextavfilter_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)
 A convenience wrapper that allocates and initializes a filter in a single step. 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...
 
AVFilterInOutavfilter_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_segment_parse (AVFilterGraph *graph, const char *graph_str, int flags, AVFilterGraphSegment **seg)
 Parse a textual filtergraph description into an intermediate form. More...
 
int avfilter_graph_segment_create_filters (AVFilterGraphSegment *seg, int flags)
 Create filters specified in a graph segment. More...
 
int avfilter_graph_segment_apply_opts (AVFilterGraphSegment *seg, int flags)
 Apply parsed options to filter instances in a graph segment. More...
 
int avfilter_graph_segment_init (AVFilterGraphSegment *seg, int flags)
 Initialize all filter instances in a graph segment. More...
 
int avfilter_graph_segment_link (AVFilterGraphSegment *seg, int flags, AVFilterInOut **inputs, AVFilterInOut **outputs)
 Link filters in a graph segment. More...
 
int avfilter_graph_segment_apply (AVFilterGraphSegment *seg, int flags, AVFilterInOut **inputs, AVFilterInOut **outputs)
 Apply all filter/link descriptions from a graph segment to the associated filtergraph. More...
 
void avfilter_graph_segment_free (AVFilterGraphSegment **seg)
 Free the provided AVFilterGraphSegment and everything associated with it. 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...
 

Detailed Description

Graph-based frame editing library.

Macro Definition Documentation

◆ AVFILTER_FLAG_DYNAMIC_INPUTS

#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 141 of file avfilter.h.

◆ AVFILTER_FLAG_DYNAMIC_OUTPUTS

#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 147 of file avfilter.h.

◆ AVFILTER_FLAG_SLICE_THREADS

#define AVFILTER_FLAG_SLICE_THREADS   (1 << 2)

The filter supports multithreading by splitting frames into multiple parts and processing them concurrently.

Definition at line 152 of file avfilter.h.

◆ AVFILTER_FLAG_METADATA_ONLY

#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:

  • video: the data of any frame output by the filter must be exactly equal to some frame that is received on one of its inputs. Furthermore, all frames produced on a given output must correspond to frames received on the same input and their order must be unchanged. Note that the filter may still drop or duplicate the frames.
  • audio: the data produced by the filter on any of its outputs (viewed e.g. as an array of interleaved samples) must be exactly equal to the data received by the filter on one of its inputs.

Definition at line 168 of file avfilter.h.

◆ AVFILTER_FLAG_HWDEVICE

#define AVFILTER_FLAG_HWDEVICE   (1 << 4)

The filter can create hardware frames using AVFilterContext.hw_device_ctx.

Definition at line 173 of file avfilter.h.

◆ AVFILTER_FLAG_SUPPORT_TIMELINE_GENERIC

#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 182 of file avfilter.h.

◆ AVFILTER_FLAG_SUPPORT_TIMELINE_INTERNAL

#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 190 of file avfilter.h.

◆ AVFILTER_FLAG_SUPPORT_TIMELINE

Handy mask to test whether the filter supports or no the timeline feature (internally or generically).

Definition at line 195 of file avfilter.h.

◆ AVFILTER_THREAD_SLICE

#define AVFILTER_THREAD_SLICE   (1 << 0)

Process multiple parts of the frame concurrently.

Definition at line 454 of file avfilter.h.

◆ AVFILTER_CMD_FLAG_ONE

#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 661 of file avfilter.h.

◆ AVFILTER_CMD_FLAG_FAST

#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 662 of file avfilter.h.

Typedef Documentation

◆ avfilter_action_func

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.

Parameters
ctxthe filter context the job belongs to
argan opaque parameter passed through from AVFilterGraph::execute
jobnrthe index of the job being executed
nb_jobsthe total number of jobs
Returns
0 on success, a negative AVERROR on error

Definition at line 764 of file avfilter.h.

◆ avfilter_execute_func

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.

Parameters
ctxthe filter context to which the jobs belong
functhe function to be called multiple times
argthe argument to be passed to func
reta nb_jobs-sized array to be filled with return values from each invocation of func
nb_jobsthe number of jobs to execute
Returns
0 on success, a negative AVERROR on error

Definition at line 778 of file avfilter.h.

Enumeration Type Documentation

◆ anonymous enum

anonymous enum
Enumerator
AVFILTER_AUTO_CONVERT_ALL 

all automatic conversions enabled

AVFILTER_AUTO_CONVERT_NONE 

all automatic conversions disabled

Definition at line 901 of file avfilter.h.

Function Documentation

◆ avfilter_version()

unsigned avfilter_version ( void  )

Return the LIBAVFILTER_VERSION_INT constant.

Definition at line 30 of file version.c.

◆ avfilter_configuration()

const char* avfilter_configuration ( void  )

Return the libavfilter build-time configuration.

Definition at line 36 of file version.c.

◆ avfilter_license()

const char* avfilter_license ( void  )

Return the libavfilter license.

Definition at line 41 of file version.c.

◆ avfilter_pad_get_name()

const char* avfilter_pad_get_name ( const AVFilterPad pads,
int  pad_idx 
)

Get the name of an AVFilterPad.

Parameters
padsan array of AVFilterPads
pad_idxindex of the pad in the array; it is the caller's responsibility to ensure the index is valid
Returns
name of the pad_idx'th pad in pads

Definition at line 983 of file avfilter.c.

Referenced by describe_filter_link(), print_digraph(), and print_formats_internal().

◆ avfilter_pad_get_type()

enum AVMediaType avfilter_pad_get_type ( const AVFilterPad pads,
int  pad_idx 
)

Get the type of an AVFilterPad.

Parameters
padsan array of AVFilterPads
pad_idxindex of the pad in the array; it is the caller's responsibility to ensure the index is valid
Returns
type of the pad_idx'th pad in pads

Definition at line 988 of file avfilter.c.

Referenced by create_sink(), fg_create(), insert_trim(), lavfi_read_header(), main(), and show_filters().

◆ avfilter_filter_pad_count()

unsigned avfilter_filter_pad_count ( const AVFilter filter,
int  is_output 
)

Get the number of elements in an AVFilter's inputs or outputs array.

Definition at line 630 of file avfilter.c.

Referenced by fg_create(), and show_filters().

◆ avfilter_link()

int avfilter_link ( AVFilterContext src,
unsigned  srcpad,
AVFilterContext dst,
unsigned  dstpad 
)

Link two filters together.

Parameters
srcthe source filter
srcpadindex of the output pad on the source filter
dstthe destination filter
dstpadindex of the input pad on the destination filter
Returns
zero on success

Definition at line 149 of file avfilter.c.

Referenced by avfilter_graph_parse(), avfilter_graph_parse_ptr(), avfilter_insert_filter(), configure_filtergraph(), configure_input_audio_filter(), configure_input_video_filter(), configure_output_audio_filter(), configure_output_video_filter(), create_sink(), init_filter_graph(), insert_filter(), insert_trim(), lavfi_read_header(), link_inputs(), and link_outputs().

◆ avfilter_process_command()

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().

Definition at line 609 of file avfilter.c.

Referenced by avfilter_graph_send_command(), and ff_inlink_process_commands().

◆ av_filter_iterate()

const AVFilter* av_filter_iterate ( void **  opaque)

Iterate over all registered filters.

Parameters
opaquea pointer where libavfilter will store the iteration state. Must point to NULL to start the iteration.
Returns
the next registered filter or NULL when the iteration is finished

Definition at line 623 of file allfilters.c.

Referenced by avfilter_get_by_name(), filter_child_class_iterate(), and show_filters().

◆ avfilter_get_by_name()

const AVFilter* avfilter_get_by_name ( const char *  name)

Get a filter definition matching the given name.

Parameters
namethe filter name to find
Returns
the filter definition, if any matching one is registered. NULL if none found.

Definition at line 634 of file allfilters.c.

Referenced by avfilter_graph_segment_create_filters(), configure_audio_filters(), configure_input_audio_filter(), configure_input_video_filter(), configure_output_audio_filter(), configure_output_video_filter(), configure_video_filters(), create_sink(), filter_parse(), init_filter(), init_filter_graph(), init_filters(), insert_filter(), insert_trim(), lavfi_read_header(), main(), and query_formats().

◆ avfilter_init_str()

int avfilter_init_str ( AVFilterContext ctx,
const char *  args 
)

Initialize a filter with the supplied parameters.

Parameters
ctxuninitialized filter context to initialize
argsOptions 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.
Returns
0 on success, a negative AVERROR on failure

Definition at line 955 of file avfilter.c.

Referenced by avfilter_graph_create_filter(), init_filter_graph(), insert_trim(), and main().

◆ avfilter_init_dict()

int avfilter_init_dict ( AVFilterContext ctx,
AVDictionary **  options 
)

Initialize a filter with the supplied dictionary of options.

Parameters
ctxuninitialized filter context to initialize
optionsAn 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.
Returns
0 on success, a negative AVERROR on failure
Note
This function and avfilter_init_str() do essentially the same thing, the difference is in manner in which the options are passed. It is up to the calling code to choose whichever is more preferable. The two functions also behave differently when some of the provided options are not declared as supported by the filter. In such a case, avfilter_init_str() will fail, but this function will leave those extra options in the options AVDictionary and continue as usual.

Definition at line 914 of file avfilter.c.

Referenced by avfilter_graph_segment_init(), avfilter_init_str(), configure_audio_filters(), configure_input_video_filter(), configure_video_filters(), init_filter(), init_filter_graph(), init_filters(), and lavfi_read_header().

◆ avfilter_free()

void avfilter_free ( AVFilterContext filter)

Free a filter context.

This will also remove the filter from its filtergraph's list of filters.

Parameters
filterthe filter to free

Definition at line 795 of file avfilter.c.

Referenced by avfilter_graph_create_filter(), avfilter_graph_free(), avfilter_graph_parse(), avfilter_graph_parse2(), avfilter_graph_parse_ptr(), avfilter_graph_segment_create_filters(), and main().

◆ avfilter_insert_filter()

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.

Parameters
linkthe link into which the filter should be inserted
filtthe filter to be inserted
filt_srcpad_idxthe input pad on the filter to connect
filt_dstpad_idxthe output pad on the filter to connect
Returns
zero on success

Definition at line 292 of file avfilter.c.

Referenced by query_formats().

◆ avfilter_get_class()

const AVClass* avfilter_get_class ( void  )
Returns
AVClass for AVFilterContext.
See also
av_opt_find().

Definition at line 1634 of file avfilter.c.

Referenced by show_help_default().

◆ avfilter_graph_alloc()

AVFilterGraph* avfilter_graph_alloc ( void  )

Allocate a filter graph.

Returns
the allocated filter graph on success or NULL.
Examples
decode_filter_audio.c, decode_filter_video.c, filter_audio.c, and transcode.c.

Definition at line 83 of file avfiltergraph.c.

Referenced by configure_audio_filters(), configure_filtergraph(), fg_create(), init_filter(), init_filter_graph(), init_filters(), lavfi_read_header(), main(), and video_thread().

◆ avfilter_graph_alloc_filter()

AVFilterContext* avfilter_graph_alloc_filter ( AVFilterGraph graph,
const AVFilter filter,
const char *  name 
)

Create a new filter instance in a filter graph.

Parameters
graphgraph in which the new filter will be used
filterthe filter to create an instance of
nameName 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.
Returns
the context of the newly created filter instance (note that it is also retrievable directly through AVFilterGraph.filters or with avfilter_graph_get_filter()) on success or NULL on failure.
Examples
decode_filter_audio.c, decode_filter_video.c, filter_audio.c, and transcode.c.

Definition at line 165 of file avfiltergraph.c.

Referenced by avfilter_graph_create_filter(), avfilter_graph_segment_create_filters(), configure_audio_filters(), configure_input_video_filter(), configure_video_filters(), init_filter(), init_filter_graph(), init_filters(), insert_trim(), lavfi_read_header(), and main().

◆ avfilter_graph_get_filter()

AVFilterContext* avfilter_graph_get_filter ( AVFilterGraph graph,
const char *  name 
)

Get a filter instance identified by instance name from graph.

Parameters
graphfilter graph to search through.
namefilter instance name (should be unique in the graph).
Returns
the pointer to the found filter instance or NULL if it cannot be found.

Definition at line 284 of file avfiltergraph.c.

◆ avfilter_graph_create_filter()

int avfilter_graph_create_filter ( AVFilterContext **  filt_ctx,
const AVFilter filt,
const char *  name,
const char *  args,
void *  opaque,
AVFilterGraph graph_ctx 
)

A convenience wrapper that allocates and initializes a filter in a single step.

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.

Parameters
namethe instance name to give to the created filter instance
graph_ctxthe filter graph
Returns
a negative AVERROR error code in case of failure, a non negative value otherwise
Warning
Since the filter is initialized after this function successfully returns, you MUST NOT set any further options on it. If you need to do that, call avfilter_graph_alloc_filter(), followed by setting the options, followed by avfilter_init_dict() instead of this function.
Examples
decode_filter_audio.c, decode_filter_video.c, and transcode.c.

Definition at line 138 of file avfiltergraph.c.

Referenced by configure_audio_filters(), configure_input_audio_filter(), configure_output_audio_filter(), configure_output_video_filter(), create_sink(), init_filter(), init_filters(), insert_filter(), lavfi_read_header(), and query_formats().

◆ avfilter_graph_set_auto_convert()

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.

Parameters
flagsany of the AVFILTER_AUTO_CONVERT_* constants

Definition at line 160 of file avfiltergraph.c.

Referenced by configure_filtergraph(), and init().

◆ avfilter_graph_config()

int avfilter_graph_config ( AVFilterGraph graphctx,
void *  log_ctx 
)

Check validity and configure all the links and formats in the graph.

Parameters
graphctxthe filter graph
log_ctxcontext used for logging
Returns
>= 0 in case of success, a negative AVERROR code otherwise
Examples
decode_filter_audio.c, decode_filter_video.c, filter_audio.c, and transcode.c.

Definition at line 1294 of file avfiltergraph.c.

Referenced by configure_filtergraph(), init_filter(), init_filter_graph(), init_filters(), lavfi_read_header(), and main().

◆ avfilter_graph_free()

void avfilter_graph_free ( AVFilterGraph **  graph)

Free a graph, destroy its links, and set *graph to NULL.

If *graph is NULL, do nothing.

Examples
decode_filter_audio.c, decode_filter_video.c, filter_audio.c, and transcode.c.

Definition at line 117 of file avfiltergraph.c.

Referenced by audio_thread(), cleanup_filtergraph(), configure_audio_filters(), fg_create(), fg_thread_uninit(), lavfi_read_close(), main(), and video_thread().

◆ avfilter_inout_alloc()

AVFilterInOut* avfilter_inout_alloc ( void  )

Allocate a single AVFilterInOut entry.

Must be freed with avfilter_inout_free().

Returns
allocated AVFilterInOut on success, NULL on failure.
Examples
decode_filter_audio.c, decode_filter_video.c, and transcode.c.

Definition at line 71 of file graphparser.c.

Referenced by configure_filtergraph(), init_filter(), and init_filters().

◆ avfilter_inout_free()

void avfilter_inout_free ( AVFilterInOut **  inout)

Free the supplied list of AVFilterInOut and set *inout to NULL.

If *inout is NULL, do nothing.

Examples
decode_filter_audio.c, decode_filter_video.c, and transcode.c.

Definition at line 76 of file graphparser.c.

Referenced by avfilter_graph_parse(), avfilter_graph_parse_ptr(), avfilter_graph_segment_link(), configure_filtergraph(), fg_create(), init_filter(), init_filters(), inout_add(), and lavfi_read_header().

◆ avfilter_graph_parse()

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.

Note
The caller must provide the lists of inputs and outputs, which therefore must be known before calling the function.
The inputs parameter describes inputs of the already existing part of the graph; i.e. from the point of view of the newly created part, they are outputs. Similarly the outputs parameter describes outputs of the already existing filters, which are provided as inputs to the parsed filters.
Parameters
graphthe filter graph where to link the parsed graph context
filtersstring to be parsed
inputslinked list to the inputs of the graph
outputslinked list to the outputs of the graph
Returns
zero on success, a negative AVERROR code on error

Definition at line 164 of file graphparser.c.

Referenced by main().

◆ avfilter_graph_parse_ptr()

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.

Parameters
graphthe filter graph where to link the parsed graph context
filtersstring to be parsed
inputspointer 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().
outputspointer 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().
Returns
non negative on success, a negative AVERROR code on error
Examples
decode_filter_audio.c, decode_filter_video.c, and transcode.c.

Definition at line 920 of file graphparser.c.

Referenced by configure_filtergraph(), init_filter(), init_filters(), lavfi_read_header(), and main().

◆ avfilter_graph_parse2()

int avfilter_graph_parse2 ( AVFilterGraph graph,
const char *  filters,
AVFilterInOut **  inputs,
AVFilterInOut **  outputs 
)

Add a graph described by a string to a graph.

Parameters
[in]graphthe filter graph where to link the parsed graph context
[in]filtersstring to be parsed
[out]inputsa 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]outputsa 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().
Returns
zero on success, a negative AVERROR code on error
Note
This function returns the inputs and outputs that are left unlinked after parsing the graph and the caller then deals with them.
This function makes no reference whatsoever to already existing parts of the graph and the inputs parameter will on return contain inputs of the newly parsed part of the graph. Analogously the outputs parameter will contain outputs of the newly created filters.

Definition at line 138 of file graphparser.c.

Referenced by avfilter_graph_parse().

◆ avfilter_graph_segment_parse()

int avfilter_graph_segment_parse ( AVFilterGraph graph,
const char *  graph_str,
int  flags,
AVFilterGraphSegment **  seg 
)

Parse a textual filtergraph description into an intermediate form.

This intermediate representation is intended to be modified by the caller as described in the documentation of AVFilterGraphSegment and its children, and then applied to the graph either manually or with other avfilter_graph_segment_*() functions. See the documentation for avfilter_graph_segment_apply() for the canonical way to apply AVFilterGraphSegment.

Parameters
graphFilter graph the parsed segment is associated with. Will only be used for logging and similar auxiliary purposes. The graph will not be actually modified by this function - the parsing results are instead stored in seg for further processing.
graph_stra string describing the filtergraph segment
flagsreserved for future use, caller must set to 0 for now
segA pointer to the newly-created AVFilterGraphSegment is written here on success. The graph segment is owned by the caller and must be freed with avfilter_graph_segment_free() before graph itself is freed.
Return values
non-negative numbersuccess
negative error codefailure

Definition at line 460 of file graphparser.c.

Referenced by avfilter_graph_parse2(), avfilter_graph_parse_ptr(), and graph_parse().

◆ avfilter_graph_segment_create_filters()

int avfilter_graph_segment_create_filters ( AVFilterGraphSegment seg,
int  flags 
)

Create filters specified in a graph segment.

Walk through the creation-pending AVFilterParams in the segment and create new filter instances for them. Creation-pending params are those where AVFilterParams.filter_name is non-NULL (and hence AVFilterParams.filter is NULL). All other AVFilterParams instances are ignored.

For any filter created by this function, the corresponding AVFilterParams.filter is set to the newly-created filter context, AVFilterParams.filter_name and AVFilterParams.instance_name are freed and set to NULL.

Parameters
segthe filtergraph segment to process
flagsreserved for future use, caller must set to 0 for now
Return values
non-negative numberSuccess, all creation-pending filters were successfully created
AVERROR_FILTER_NOT_FOUNDsome filter's name did not correspond to a known filter
another negative error codeother failures
Note
Calling this function multiple times is safe, as it is idempotent.

Definition at line 516 of file graphparser.c.

Referenced by avfilter_graph_parse_ptr(), avfilter_graph_segment_apply(), and graph_parse().

◆ avfilter_graph_segment_apply_opts()

int avfilter_graph_segment_apply_opts ( AVFilterGraphSegment seg,
int  flags 
)

Apply parsed options to filter instances in a graph segment.

Walk through all filter instances in the graph segment that have option dictionaries associated with them and apply those options with av_opt_set_dict2(..., AV_OPT_SEARCH_CHILDREN). AVFilterParams.opts is replaced by the dictionary output by av_opt_set_dict2(), which should be empty (NULL) if all options were successfully applied.

If any options could not be found, this function will continue processing all other filters and finally return AVERROR_OPTION_NOT_FOUND (unless another error happens). The calling program may then deal with unapplied options as it wishes.

Any creation-pending filters (see avfilter_graph_segment_create_filters()) present in the segment will cause this function to fail. AVFilterParams with no associated filter context are simply skipped.

Parameters
segthe filtergraph segment to process
flagsreserved for future use, caller must set to 0 for now
Return values
non-negative numberSuccess, all options were successfully applied.
AVERROR_OPTION_NOT_FOUNDsome options were not found in a filter
another negative error codeother failures
Note
Calling this function multiple times is safe, as it is idempotent.

Definition at line 586 of file graphparser.c.

Referenced by avfilter_graph_parse_ptr(), and avfilter_graph_segment_apply().

◆ avfilter_graph_segment_init()

int avfilter_graph_segment_init ( AVFilterGraphSegment seg,
int  flags 
)

Initialize all filter instances in a graph segment.

Walk through all filter instances in the graph segment and call avfilter_init_dict(..., NULL) on those that have not been initialized yet.

Any creation-pending filters (see avfilter_graph_segment_create_filters()) present in the segment will cause this function to fail. AVFilterParams with no associated filter context or whose filter context is already initialized, are simply skipped.

Parameters
segthe filtergraph segment to process
flagsreserved for future use, caller must set to 0 for now
Return values
non-negative numberSuccess, all filter instances were successfully initialized
negative error codefailure
Note
Calling this function multiple times is safe, as it is idempotent.

Definition at line 616 of file graphparser.c.

Referenced by avfilter_graph_parse_ptr(), and avfilter_graph_segment_apply().

◆ avfilter_graph_segment_link()

int avfilter_graph_segment_link ( AVFilterGraphSegment seg,
int  flags,
AVFilterInOut **  inputs,
AVFilterInOut **  outputs 
)

Link filters in a graph segment.

Walk through all filter instances in the graph segment and try to link all unlinked input and output pads. Any creation-pending filters (see avfilter_graph_segment_create_filters()) present in the segment will cause this function to fail. Disabled filters and already linked pads are skipped.

Every filter output pad that has a corresponding AVFilterPadParams with a non-NULL label is

  • linked to the input with the matching label, if one exists;
  • exported in the outputs linked list otherwise, with the label preserved. Unlabeled outputs are
  • linked to the first unlinked unlabeled input in the next non-disabled filter in the chain, if one exists
  • exported in the ouputs linked list otherwise, with NULL label

Similarly, unlinked input pads are exported in the inputs linked list.

Parameters
segthe filtergraph segment to process
flagsreserved for future use, caller must set to 0 for now
[out]inputsa linked list of all free (unlinked) inputs of the filters in this graph segment will be returned here. It is to be freed by the caller using avfilter_inout_free().
[out]outputsa linked list of all free (unlinked) outputs of the filters in this graph segment will be returned here. It is to be freed by the caller using avfilter_inout_free().
Return values
non-negative numbersuccess
negative error codefailure
Note
Calling this function multiple times is safe, as it is idempotent.

Definition at line 814 of file graphparser.c.

Referenced by avfilter_graph_segment_apply().

◆ avfilter_graph_segment_apply()

int avfilter_graph_segment_apply ( AVFilterGraphSegment seg,
int  flags,
AVFilterInOut **  inputs,
AVFilterInOut **  outputs 
)

Apply all filter/link descriptions from a graph segment to the associated filtergraph.

This functions is currently equivalent to calling the following in sequence:

Since the above functions are idempotent, the caller may call some of them manually, then do some custom processing on the filtergraph, then call this function to do the rest.

Parameters
segthe filtergraph segment to process
flagsreserved for future use, caller must set to 0 for now
[out]inputspassed to avfilter_graph_segment_link()
[out]outputspassed to avfilter_graph_segment_link()
Return values
non-negative numbersuccess
negative error codefailure
Note
Calling this function multiple times is safe, as it is idempotent.

Definition at line 882 of file graphparser.c.

Referenced by avfilter_graph_parse2(), avfilter_graph_parse_ptr(), and graph_parse().

◆ avfilter_graph_segment_free()

void avfilter_graph_segment_free ( AVFilterGraphSegment **  seg)

Free the provided AVFilterGraphSegment and everything associated with it.

Parameters
segdouble pointer to the AVFilterGraphSegment to be freed. NULL will be written to this pointer on exit from this function.
Note
The filter contexts (AVFilterParams.filter) are owned by AVFilterGraph rather than AVFilterGraphSegment, so they are not freed.

Definition at line 276 of file graphparser.c.

Referenced by avfilter_graph_parse2(), avfilter_graph_parse_ptr(), avfilter_graph_segment_parse(), and graph_parse().

◆ avfilter_graph_send_command()

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.

Parameters
graphthe filter graph
targetthe 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.
cmdthe command to send, for handling simplicity all commands must be alphanumeric only
argthe argument for the command
resa buffer with size res_size where the filter(s) can return a response.
Returns
>=0 on success otherwise an error code. AVERROR(ENOSYS) on unsupported commands

Definition at line 1312 of file avfiltergraph.c.

Referenced by filter_frame(), and send_command().

◆ avfilter_graph_queue_command()

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.

Parameters
graphthe filter graph
targetthe 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.
cmdthe command to sent, for handling simplicity all commands must be alphanumeric only
argthe argument for the command
tstime at which the command should be sent to the filter
Note
As this executes commands after this function returns, no return code from the filter is provided, also AVFILTER_CMD_FLAG_ONE is not supported.

Definition at line 1342 of file avfiltergraph.c.

Referenced by send_command().

◆ avfilter_graph_dump()

char* avfilter_graph_dump ( AVFilterGraph graph,
const char *  options 
)

Dump a graph into a human-readable string representation.

Parameters
graphthe graph to dump
optionsformatting options; currently ignored
Returns
a string, or NULL in case of memory allocation failure; the string must be freed using av_free

Definition at line 156 of file graphdump.c.

Referenced by lavfi_read_header().

◆ avfilter_graph_request_oldest()

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.

Returns
the return value of ff_request_frame(), or AVERROR_EOF if all links returned AVERROR_EOF

Definition at line 1425 of file avfiltergraph.c.

Referenced by configure_filtergraph(), main(), and read_frames().