FFmpeg
Macros | Functions | Variables
avfiltergraph.c File Reference
#include "config.h"
#include <string.h>
#include "libavutil/avassert.h"
#include "libavutil/avstring.h"
#include "libavutil/bprint.h"
#include "libavutil/channel_layout.h"
#include "libavutil/imgutils.h"
#include "libavutil/internal.h"
#include "libavutil/opt.h"
#include "libavutil/pixdesc.h"
#include "framequeue.h"
#include "avfilter.h"
#include "buffersink.h"
#include "formats.h"
#include "internal.h"
#include "thread.h"

Go to the source code of this file.

Macros

#define FF_INTERNAL_FIELDS   1
 
#define OFFSET(x)   offsetof(AVFilterGraph, x)
 
#define F   AV_OPT_FLAG_FILTERING_PARAM
 
#define V   AV_OPT_FLAG_VIDEO_PARAM
 
#define A   AV_OPT_FLAG_AUDIO_PARAM
 
#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

void ff_graph_thread_free (AVFilterGraph *graph)
 
int ff_graph_thread_init (AVFilterGraph *graph)
 
AVFilterGraphavfilter_graph_alloc (void)
 Allocate a filter graph. More...
 
void ff_filter_graph_remove_filter (AVFilterGraph *graph, AVFilterContext *filter)
 Remove a filter from a graph;. More...
 
void avfilter_graph_free (AVFilterGraph **graph)
 Free a graph, destroy its links, and set *graph to NULL. 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...
 
AVFilterContextavfilter_graph_alloc_filter (AVFilterGraph *graph, const AVFilter *filter, const char *name)
 Create a new filter instance in a filter graph. More...
 
static int graph_check_validity (AVFilterGraph *graph, void *log_ctx)
 Check for the validity of graph. More...
 
static int graph_config_links (AVFilterGraph *graph, void *log_ctx)
 Configure all the links of graphctx. More...
 
static int graph_check_links (AVFilterGraph *graph, void *log_ctx)
 
AVFilterContextavfilter_graph_get_filter (AVFilterGraph *graph, const char *name)
 Get a filter instance identified by instance name from graph. More...
 
static int filter_link_check_formats (void *log, AVFilterLink *link, AVFilterFormatsConfig *cfg)
 
static int filter_check_formats (AVFilterContext *ctx)
 Check the validity of the formats / etc. More...
 
static int filter_query_formats (AVFilterContext *ctx)
 
static int formats_declared (AVFilterContext *f)
 
static int query_formats (AVFilterGraph *graph, void *log_ctx)
 Perform one round of query_formats() and merging formats lists on the filter graph. More...
 
static int get_fmt_score (enum AVSampleFormat dst_fmt, enum AVSampleFormat src_fmt)
 
static enum AVSampleFormat find_best_sample_fmt_of_2 (enum AVSampleFormat dst_fmt1, enum AVSampleFormat dst_fmt2, enum AVSampleFormat src_fmt)
 
static int pick_format (AVFilterLink *link, AVFilterLink *ref)
 
static int reduce_formats_on_filter (AVFilterContext *filter)
 
static int 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, void *log_ctx)
 Configure the formats of all the links in the graph. More...
 
static int graph_config_pointers (AVFilterGraph *graph, void *log_ctx)
 
int avfilter_graph_config (AVFilterGraph *graphctx, void *log_ctx)
 Check validity and configure all the links and formats in the 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 *command, const char *arg, int flags, double ts)
 Queue a command for one or more filter instances. More...
 
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. More...
 
int avfilter_graph_request_oldest (AVFilterGraph *graph)
 Request a frame on the oldest sink link. More...
 
int ff_filter_graph_run_once (AVFilterGraph *graph)
 Run one round of processing on a filter graph. More...
 

Variables

static const AVOption filtergraph_options []
 
static const AVClass filtergraph_class
 
static const uint64_t ch_subst [][2]
 

Macro Definition Documentation

◆ FF_INTERNAL_FIELDS

#define FF_INTERNAL_FIELDS   1

Definition at line 36 of file avfiltergraph.c.

◆ OFFSET

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

Definition at line 45 of file avfiltergraph.c.

◆ F

Definition at line 46 of file avfiltergraph.c.

◆ V

#define V   AV_OPT_FLAG_VIDEO_PARAM

Definition at line 47 of file avfiltergraph.c.

◆ A

#define A   AV_OPT_FLAG_AUDIO_PARAM

Definition at line 48 of file avfiltergraph.c.

◆ REDUCE_FORMATS

#define REDUCE_FORMATS (   fmt_type,
  list_type,
  list,
  var,
  nb,
  add_format 
)

Definition at line 683 of file avfiltergraph.c.

◆ CH_CENTER_PAIR

Definition at line 836 of file avfiltergraph.c.

◆ CH_FRONT_PAIR

#define CH_FRONT_PAIR   (AV_CH_FRONT_LEFT | AV_CH_FRONT_RIGHT)

Definition at line 837 of file avfiltergraph.c.

◆ CH_STEREO_PAIR

#define CH_STEREO_PAIR   (AV_CH_STEREO_LEFT | AV_CH_STEREO_RIGHT)

Definition at line 838 of file avfiltergraph.c.

◆ CH_WIDE_PAIR

#define CH_WIDE_PAIR   (AV_CH_WIDE_LEFT | AV_CH_WIDE_RIGHT)

Definition at line 839 of file avfiltergraph.c.

◆ CH_SIDE_PAIR

#define CH_SIDE_PAIR   (AV_CH_SIDE_LEFT | AV_CH_SIDE_RIGHT)

Definition at line 840 of file avfiltergraph.c.

◆ CH_DIRECT_PAIR

Definition at line 841 of file avfiltergraph.c.

◆ CH_BACK_PAIR

#define CH_BACK_PAIR   (AV_CH_BACK_LEFT | AV_CH_BACK_RIGHT)

Definition at line 842 of file avfiltergraph.c.

Function Documentation

◆ ff_graph_thread_free()

void ff_graph_thread_free ( AVFilterGraph graph)

Definition at line 72 of file avfiltergraph.c.

Referenced by avfilter_graph_free().

◆ ff_graph_thread_init()

int ff_graph_thread_init ( AVFilterGraph graph)

Definition at line 76 of file avfiltergraph.c.

Referenced by avfilter_graph_alloc_filter().

◆ ff_filter_graph_remove_filter()

void ff_filter_graph_remove_filter ( AVFilterGraph graph,
AVFilterContext filter 
)

Remove a filter from a graph;.

Definition at line 103 of file avfiltergraph.c.

Referenced by avfilter_free().

◆ graph_check_validity()

static int graph_check_validity ( AVFilterGraph graph,
void *  log_ctx 
)
static

Check for the validity of graph.

A graph is considered valid if all its input and output pads are connected.

Returns
>= 0 in case of success, a negative value otherwise

Definition at line 212 of file avfiltergraph.c.

Referenced by avfilter_graph_config().

◆ graph_config_links()

static int graph_config_links ( AVFilterGraph graph,
void *  log_ctx 
)
static

Configure all the links of graphctx.

Returns
>= 0 in case of success, a negative value otherwise

Definition at line 250 of file avfiltergraph.c.

Referenced by avfilter_graph_config().

◆ graph_check_links()

static int graph_check_links ( AVFilterGraph graph,
void *  log_ctx 
)
static

Definition at line 267 of file avfiltergraph.c.

Referenced by avfilter_graph_config().

◆ filter_link_check_formats()

static int filter_link_check_formats ( void *  log,
AVFilterLink link,
AVFilterFormatsConfig cfg 
)
static

Definition at line 299 of file avfiltergraph.c.

Referenced by filter_check_formats().

◆ filter_check_formats()

static int filter_check_formats ( AVFilterContext ctx)
static

Check the validity of the formats / etc.

lists set by query_formats().

In particular, check they do not contain any redundant element.

Definition at line 328 of file avfiltergraph.c.

Referenced by filter_query_formats().

◆ filter_query_formats()

static int filter_query_formats ( AVFilterContext ctx)
static

Definition at line 346 of file avfiltergraph.c.

Referenced by query_formats().

◆ formats_declared()

static int formats_declared ( AVFilterContext f)
static

Definition at line 378 of file avfiltergraph.c.

Referenced by query_formats().

◆ query_formats()

static int query_formats ( AVFilterGraph graph,
void *  log_ctx 
)
static

Perform one round of query_formats() and merging formats lists on the filter graph.

Returns
>=0 if all links formats lists could be queried and merged; AVERROR(EAGAIN) some progress was made in the queries or merging and a later call may succeed; AVERROR(EIO) (may be changed) plus a log message if no progress was made and the negotiation is stuck; a negative error code if some other error happened

Definition at line 411 of file avfiltergraph.c.

Referenced by graph_config_formats().

◆ get_fmt_score()

static int get_fmt_score ( enum AVSampleFormat  dst_fmt,
enum AVSampleFormat  src_fmt 
)
static

Definition at line 573 of file avfiltergraph.c.

Referenced by find_best_sample_fmt_of_2().

◆ find_best_sample_fmt_of_2()

static enum AVSampleFormat find_best_sample_fmt_of_2 ( enum AVSampleFormat  dst_fmt1,
enum AVSampleFormat  dst_fmt2,
enum AVSampleFormat  src_fmt 
)
static

Definition at line 596 of file avfiltergraph.c.

Referenced by pick_format().

◆ pick_format()

static int pick_format ( AVFilterLink link,
AVFilterLink ref 
)
static

Definition at line 607 of file avfiltergraph.c.

Referenced by pick_formats().

◆ reduce_formats_on_filter()

static int reduce_formats_on_filter ( AVFilterContext filter)
static

Definition at line 720 of file avfiltergraph.c.

Referenced by reduce_formats().

◆ reduce_formats()

static int reduce_formats ( AVFilterGraph graph)
static

Definition at line 770 of file avfiltergraph.c.

Referenced by graph_config_formats().

◆ swap_samplerates_on_filter()

static void swap_samplerates_on_filter ( AVFilterContext filter)
static

Definition at line 787 of file avfiltergraph.c.

Referenced by swap_samplerates().

◆ swap_samplerates()

static void swap_samplerates ( AVFilterGraph graph)
static

Definition at line 828 of file avfiltergraph.c.

Referenced by graph_config_formats().

◆ swap_channel_layouts_on_filter()

static void swap_channel_layouts_on_filter ( AVFilterContext filter)
static

Definition at line 870 of file avfiltergraph.c.

Referenced by swap_channel_layouts().

◆ swap_channel_layouts()

static void swap_channel_layouts ( AVFilterGraph graph)
static

Definition at line 959 of file avfiltergraph.c.

Referenced by graph_config_formats().

◆ swap_sample_fmts_on_filter()

static void swap_sample_fmts_on_filter ( AVFilterContext filter)
static

Definition at line 967 of file avfiltergraph.c.

Referenced by swap_sample_fmts().

◆ swap_sample_fmts()

static void swap_sample_fmts ( AVFilterGraph graph)
static

Definition at line 1027 of file avfiltergraph.c.

Referenced by graph_config_formats().

◆ pick_formats()

static int pick_formats ( AVFilterGraph graph)
static

Definition at line 1036 of file avfiltergraph.c.

Referenced by graph_config_formats().

◆ graph_config_formats()

static int graph_config_formats ( AVFilterGraph graph,
void *  log_ctx 
)
static

Configure the formats of all the links in the graph.

Definition at line 1091 of file avfiltergraph.c.

Referenced by avfilter_graph_config().

◆ graph_config_pointers()

static int graph_config_pointers ( AVFilterGraph graph,
void *  log_ctx 
)
static

Definition at line 1119 of file avfiltergraph.c.

Referenced by avfilter_graph_config().

◆ heap_bubble_up()

static void heap_bubble_up ( AVFilterGraph graph,
AVFilterLink link,
int  index 
)
static

Definition at line 1239 of file avfiltergraph.c.

Referenced by ff_avfilter_graph_update_heap().

◆ heap_bubble_down()

static void heap_bubble_down ( AVFilterGraph graph,
AVFilterLink link,
int  index 
)
static

◆ ff_avfilter_graph_update_heap()

void ff_avfilter_graph_update_heap ( AVFilterGraph graph,
AVFilterLink link 
)

Update the position of a link in the age heap.

Definition at line 1282 of file avfiltergraph.c.

Referenced by ff_update_link_current_pts().

◆ ff_filter_graph_run_once()

int ff_filter_graph_run_once ( AVFilterGraph graph)

Run one round of processing on a filter graph.

Definition at line 1333 of file avfiltergraph.c.

Referenced by avfilter_graph_request_oldest(), get_frame_internal(), and push_frame().

Variable Documentation

◆ filtergraph_options

const AVOption filtergraph_options[]
static
Initial value:
= {
{ "thread_type", "Allowed thread types", OFFSET(thread_type), AV_OPT_TYPE_FLAGS,
{ .i64 = AVFILTER_THREAD_SLICE }, 0, INT_MAX, F|V|A, "thread_type" },
{ "slice", NULL, 0, AV_OPT_TYPE_CONST, { .i64 = AVFILTER_THREAD_SLICE }, .flags = F|V|A, .unit = "thread_type" },
{ "threads", "Maximum number of threads", OFFSET(nb_threads), AV_OPT_TYPE_INT,
{ .i64 = 0 }, 0, INT_MAX, F|V|A, "threads"},
{"auto", "autodetect a suitable number of threads to use", 0, AV_OPT_TYPE_CONST, {.i64 = 0 }, .flags = F|V|A, .unit = "threads"},
{"scale_sws_opts" , "default scale filter options" , OFFSET(scale_sws_opts) ,
AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, F|V },
{"aresample_swr_opts" , "default aresample filter options" , OFFSET(aresample_swr_opts) ,
AV_OPT_TYPE_STRING, {.str = NULL}, 0, 0, F|A },
{ NULL },
}

Definition at line 49 of file avfiltergraph.c.

◆ filtergraph_class

const AVClass filtergraph_class
static
Initial value:
= {
.class_name = "AVFilterGraph",
.item_name = av_default_item_name,
}

Definition at line 63 of file avfiltergraph.c.

Referenced by avfilter_graph_alloc().

◆ ch_subst

const uint64_t ch_subst[][2]
static
F
#define F
Definition: avfiltergraph.c:46
OFFSET
#define OFFSET(x)
Definition: avfiltergraph.c:45
AVFILTER_THREAD_SLICE
#define AVFILTER_THREAD_SLICE
Process multiple parts of the frame concurrently.
Definition: avfilter.h:341
filtergraph_options
static const AVOption filtergraph_options[]
Definition: avfiltergraph.c:49
CH_DIRECT_PAIR
#define CH_DIRECT_PAIR
Definition: avfiltergraph.c:841
LIBAVUTIL_VERSION_INT
#define LIBAVUTIL_VERSION_INT
Definition: version.h:85
NULL
#define NULL
Definition: coverity.c:32
av_default_item_name
const char * av_default_item_name(void *ptr)
Return the context name.
Definition: log.c:235
AV_CH_FRONT_CENTER
#define AV_CH_FRONT_CENTER
Definition: channel_layout.h:51
AV_CLASS_CATEGORY_FILTER
@ AV_CLASS_CATEGORY_FILTER
Definition: log.h:36
CH_BACK_PAIR
#define CH_BACK_PAIR
Definition: avfiltergraph.c:842
CH_CENTER_PAIR
#define CH_CENTER_PAIR
Definition: avfiltergraph.c:836
CH_FRONT_PAIR
#define CH_FRONT_PAIR
Definition: avfiltergraph.c:837
AV_CH_BACK_CENTER
#define AV_CH_BACK_CENTER
Definition: channel_layout.h:57
V
#define V
Definition: avfiltergraph.c:47
CH_SIDE_PAIR
#define CH_SIDE_PAIR
Definition: avfiltergraph.c:840
CH_WIDE_PAIR
#define CH_WIDE_PAIR
Definition: avfiltergraph.c:839
AV_OPT_TYPE_INT
@ AV_OPT_TYPE_INT
Definition: opt.h:224
A
#define A
Definition: avfiltergraph.c:48
AV_OPT_TYPE_FLAGS
@ AV_OPT_TYPE_FLAGS
Definition: opt.h:223
AV_OPT_TYPE_STRING
@ AV_OPT_TYPE_STRING
Definition: opt.h:228
AV_OPT_TYPE_CONST
@ AV_OPT_TYPE_CONST
Definition: opt.h:233