#include <ctype.h>
#include <string.h>
#include "libavutil/audioconvert.h"
#include "libavutil/avassert.h"
#include "libavutil/pixdesc.h"
#include "libavcodec/avcodec.h"
#include "avfilter.h"
#include "avfiltergraph.h"
#include "formats.h"
#include "internal.h"
#include "libavutil/common.h"
#include "libavutil/log.h"
Go to the source code of this file.
Defines | |
#define | REDUCE_FORMATS(fmt_type, list_type, list, var, nb, add_format) |
#define | CH_CENTER_PAIR (AV_CH_FRONT_LEFT_OF_CENTER | AV_CH_FRONT_RIGHT_OF_CENTER) |
#define | CH_FRONT_PAIR (AV_CH_FRONT_LEFT | AV_CH_FRONT_RIGHT) |
#define | CH_STEREO_PAIR (AV_CH_STEREO_LEFT | AV_CH_STEREO_RIGHT) |
#define | CH_WIDE_PAIR (AV_CH_WIDE_LEFT | AV_CH_WIDE_RIGHT) |
#define | CH_SIDE_PAIR (AV_CH_SIDE_LEFT | AV_CH_SIDE_RIGHT) |
#define | CH_DIRECT_PAIR (AV_CH_SURROUND_DIRECT_LEFT | AV_CH_SURROUND_DIRECT_RIGHT) |
#define | CH_BACK_PAIR (AV_CH_BACK_LEFT | AV_CH_BACK_RIGHT) |
Functions | |
AVFilterGraph * | avfilter_graph_alloc (void) |
Allocate a filter graph. | |
void | avfilter_graph_free (AVFilterGraph **graph) |
Free a graph, destroy its links, and set *graph to NULL. | |
int | avfilter_graph_add_filter (AVFilterGraph *graph, AVFilterContext *filter) |
Add an existing filter instance to a filter graph. | |
int | avfilter_graph_create_filter (AVFilterContext **filt_ctx, AVFilter *filt, const char *name, const char *args, void *opaque, AVFilterGraph *graph_ctx) |
Create and add a filter instance into an existing graph. | |
void | avfilter_graph_set_auto_convert (AVFilterGraph *graph, unsigned flags) |
Enable or disable automatic format conversion inside the graph. | |
static int | graph_check_validity (AVFilterGraph *graph, AVClass *log_ctx) |
Check for the validity of graph. | |
static int | graph_config_links (AVFilterGraph *graph, AVClass *log_ctx) |
Configure all the links of graphctx. | |
AVFilterContext * | avfilter_graph_get_filter (AVFilterGraph *graph, char *name) |
Get a filter instance with name name from graph. | |
static int | filter_query_formats (AVFilterContext *ctx) |
static int | insert_conv_filter (AVFilterGraph *graph, AVFilterLink *link, const char *filt_name, const char *filt_args) |
static int | query_formats (AVFilterGraph *graph, AVClass *log_ctx) |
static int | pick_format (AVFilterLink *link, AVFilterLink *ref) |
static int | reduce_formats_on_filter (AVFilterContext *filter) |
static void | reduce_formats (AVFilterGraph *graph) |
static void | swap_samplerates_on_filter (AVFilterContext *filter) |
static void | swap_samplerates (AVFilterGraph *graph) |
static void | swap_channel_layouts_on_filter (AVFilterContext *filter) |
static void | swap_channel_layouts (AVFilterGraph *graph) |
static void | swap_sample_fmts_on_filter (AVFilterContext *filter) |
static void | swap_sample_fmts (AVFilterGraph *graph) |
static int | pick_formats (AVFilterGraph *graph) |
static int | graph_config_formats (AVFilterGraph *graph, AVClass *log_ctx) |
Configure the formats of all the links in the graph. | |
static int | ff_avfilter_graph_config_pointers (AVFilterGraph *graph, AVClass *log_ctx) |
static int | graph_insert_fifos (AVFilterGraph *graph, AVClass *log_ctx) |
int | avfilter_graph_config (AVFilterGraph *graphctx, void *log_ctx) |
Check validity and configure all the links and formats in the graph. | |
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. | |
int | avfilter_graph_queue_command (AVFilterGraph *graph, const char *target, const char *command, const char *arg, int flags, double ts) |
Queue a command for one or more filter instances. | |
static void | heap_bubble_up (AVFilterGraph *graph, AVFilterLink *link, int index) |
static void | heap_bubble_down (AVFilterGraph *graph, AVFilterLink *link, int index) |
void | ff_avfilter_graph_update_heap (AVFilterGraph *graph, AVFilterLink *link) |
Update the position of a link in the age heap. | |
int | avfilter_graph_request_oldest (AVFilterGraph *graph) |
Request a frame on the oldest sink link. | |
Variables | |
static const AVClass | filtergraph_class |
static const uint64_t | ch_subst [][2] |
#define CH_BACK_PAIR (AV_CH_BACK_LEFT | AV_CH_BACK_RIGHT) |
Definition at line 588 of file avfiltergraph.c.
#define CH_CENTER_PAIR (AV_CH_FRONT_LEFT_OF_CENTER | AV_CH_FRONT_RIGHT_OF_CENTER) |
Definition at line 582 of file avfiltergraph.c.
#define CH_DIRECT_PAIR (AV_CH_SURROUND_DIRECT_LEFT | AV_CH_SURROUND_DIRECT_RIGHT) |
Definition at line 587 of file avfiltergraph.c.
#define CH_FRONT_PAIR (AV_CH_FRONT_LEFT | AV_CH_FRONT_RIGHT) |
Definition at line 583 of file avfiltergraph.c.
#define CH_SIDE_PAIR (AV_CH_SIDE_LEFT | AV_CH_SIDE_RIGHT) |
Definition at line 586 of file avfiltergraph.c.
#define CH_STEREO_PAIR (AV_CH_STEREO_LEFT | AV_CH_STEREO_RIGHT) |
Definition at line 584 of file avfiltergraph.c.
#define CH_WIDE_PAIR (AV_CH_WIDE_LEFT | AV_CH_WIDE_RIGHT) |
Definition at line 585 of file avfiltergraph.c.
#define REDUCE_FORMATS | ( | fmt_type, | |||
list_type, | |||||
list, | |||||
var, | |||||
nb, | |||||
add_format | ) |
int avfilter_graph_add_filter | ( | AVFilterGraph * | graphctx, | |
AVFilterContext * | filter | |||
) |
Add an existing filter instance to a filter graph.
graphctx | the filter graph | |
filter | the filter to be added |
Definition at line 68 of file avfiltergraph.c.
Referenced by avfilter_graph_create_filter(), and create_filter().
AVFilterGraph* avfilter_graph_alloc | ( | void | ) |
Allocate a filter graph.
Definition at line 47 of file avfiltergraph.c.
Referenced by configure_filtergraph(), init_filters(), lavfi_read_header(), and video_thread().
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 |
Definition at line 923 of file avfiltergraph.c.
Referenced by configure_filtergraph(), init_filters(), lavfi_read_header(), main(), and transcode_init().
int avfilter_graph_create_filter | ( | AVFilterContext ** | filt_ctx, | |
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 parameters args and opaque.
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 |
Definition at line 81 of file avfiltergraph.c.
Referenced by configure_input_audio_filter(), configure_input_video_filter(), configure_output_audio_filter(), configure_output_video_filter(), graph_insert_fifos(), init_filters(), insert_conv_filter(), lavfi_read_header(), and query_formats().
void avfilter_graph_free | ( | AVFilterGraph ** | graph | ) |
Free a graph, destroy its links, and set *graph to NULL.
If *graph is NULL, do nothing.
Definition at line 56 of file avfiltergraph.c.
Referenced by configure_filtergraph(), exit_program(), lavfi_read_close(), main(), and video_thread().
AVFilterContext* avfilter_graph_get_filter | ( | AVFilterGraph * | graph, | |
char * | name | |||
) |
Get a filter instance with name name from graph.
Definition at line 167 of file avfiltergraph.c.
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 alphanummeric only | |
arg | the argument for the command | |
ts | time at which the command should be sent to the filter |
Definition at line 971 of file avfiltergraph.c.
Referenced by check_keyboard_interaction().
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.
Definition at line 1045 of file avfiltergraph.c.
Referenced by transcode_from_filter().
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 sent, 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. |
Definition at line 941 of file avfiltergraph.c.
Referenced by avfilter_graph_send_command(), check_keyboard_interaction(), and process_frame().
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 aconvert filters.
flags | any of the AVFILTER_AUTO_CONVERT_* constants |
Definition at line 102 of file avfiltergraph.c.
Referenced by choose_pix_fmts().
static int ff_avfilter_graph_config_pointers | ( | AVFilterGraph * | graph, | |
AVClass * | log_ctx | |||
) | [static] |
void ff_avfilter_graph_update_heap | ( | AVFilterGraph * | graph, | |
AVFilterLink * | link | |||
) |
Update the position of a link in the age heap.
Definition at line 1038 of file avfiltergraph.c.
Referenced by ff_update_link_current_pts().
static int filter_query_formats | ( | AVFilterContext * | ctx | ) | [static] |
Definition at line 178 of file avfiltergraph.c.
Referenced by insert_conv_filter(), and query_formats().
static int graph_check_validity | ( | AVFilterGraph * | graph, | |
AVClass * | log_ctx | |||
) | [static] |
Check for the validity of graph.
A graph is considered valid if all its input and output pads are connected.
Definition at line 115 of file avfiltergraph.c.
Referenced by avfilter_graph_config().
static int graph_config_formats | ( | AVFilterGraph * | graph, | |
AVClass * | log_ctx | |||
) | [static] |
Configure the formats of all the links in the graph.
Definition at line 818 of file avfiltergraph.c.
Referenced by avfilter_graph_config().
static int graph_config_links | ( | AVFilterGraph * | graph, | |
AVClass * | log_ctx | |||
) | [static] |
Configure all the links of graphctx.
Definition at line 150 of file avfiltergraph.c.
Referenced by avfilter_graph_config().
static int graph_insert_fifos | ( | AVFilterGraph * | graph, | |
AVClass * | log_ctx | |||
) | [static] |
static void heap_bubble_down | ( | AVFilterGraph * | graph, | |
AVFilterLink * | link, | |||
int | index | |||
) | [static] |
Definition at line 1016 of file avfiltergraph.c.
Referenced by avfilter_graph_request_oldest(), and ff_avfilter_graph_update_heap().
static void heap_bubble_up | ( | AVFilterGraph * | graph, | |
AVFilterLink * | link, | |||
int | index | |||
) | [static] |
static int insert_conv_filter | ( | AVFilterGraph * | graph, | |
AVFilterLink * | link, | |||
const char * | filt_name, | |||
const char * | filt_args | |||
) | [static] |
static int pick_format | ( | AVFilterLink * | link, | |
AVFilterLink * | ref | |||
) | [static] |
static int pick_formats | ( | AVFilterGraph * | graph | ) | [static] |
static int query_formats | ( | AVFilterGraph * | graph, | |
AVClass * | log_ctx | |||
) | [static] |
Definition at line 261 of file avfiltergraph.c.
static void reduce_formats | ( | AVFilterGraph * | graph | ) | [static] |
static int reduce_formats_on_filter | ( | AVFilterContext * | filter | ) | [static] |
static void swap_channel_layouts | ( | AVFilterGraph * | graph | ) | [static] |
static void swap_channel_layouts_on_filter | ( | AVFilterContext * | filter | ) | [static] |
static void swap_sample_fmts | ( | AVFilterGraph * | graph | ) | [static] |
static void swap_sample_fmts_on_filter | ( | AVFilterContext * | filter | ) | [static] |
static void swap_samplerates | ( | AVFilterGraph * | graph | ) | [static] |
static void swap_samplerates_on_filter | ( | AVFilterContext * | filter | ) | [static] |
Initial value:
{ { CH_FRONT_PAIR, CH_CENTER_PAIR }, { CH_FRONT_PAIR, CH_WIDE_PAIR }, { CH_FRONT_PAIR, AV_CH_FRONT_CENTER }, { CH_CENTER_PAIR, CH_FRONT_PAIR }, { CH_CENTER_PAIR, CH_WIDE_PAIR }, { CH_CENTER_PAIR, AV_CH_FRONT_CENTER }, { CH_WIDE_PAIR, CH_FRONT_PAIR }, { CH_WIDE_PAIR, CH_CENTER_PAIR }, { CH_WIDE_PAIR, AV_CH_FRONT_CENTER }, { AV_CH_FRONT_CENTER, CH_FRONT_PAIR }, { AV_CH_FRONT_CENTER, CH_CENTER_PAIR }, { AV_CH_FRONT_CENTER, CH_WIDE_PAIR }, { CH_SIDE_PAIR, CH_DIRECT_PAIR }, { CH_SIDE_PAIR, CH_BACK_PAIR }, { CH_SIDE_PAIR, AV_CH_BACK_CENTER }, { CH_BACK_PAIR, CH_DIRECT_PAIR }, { CH_BACK_PAIR, CH_SIDE_PAIR }, { CH_BACK_PAIR, AV_CH_BACK_CENTER }, { AV_CH_BACK_CENTER, CH_BACK_PAIR }, { AV_CH_BACK_CENTER, CH_DIRECT_PAIR }, { AV_CH_BACK_CENTER, CH_SIDE_PAIR }, }
Definition at line 592 of file avfiltergraph.c.
const AVClass filtergraph_class [static] |
Initial value:
{ .class_name = "AVFilterGraph", .item_name = av_default_item_name, .version = LIBAVUTIL_VERSION_INT, .category = AV_CLASS_CATEGORY_FILTER, }
Definition at line 40 of file avfiltergraph.c.