Revision 1ebe5c4c

View differences:

doc/filters.texi
1
@chapter Filtergraph description
2
@c man begin FILTERGRAPH DESCRIPTION
3

  
4
A filtergraph is a directed graph of connected filters. It can contain
5
cycles, and there can be multiple links between a pair of
6
filters. Each link has one input pad on one side connecting it to one
7
filter from which it takes its input, and one output pad on the other
8
side connecting it to the one filter accepting its output.
9

  
10
Each filter in a filtergraph is an instance of a filter class
11
registered in the application, which defines the features and the
12
number of input and output pads of the filter.
13

  
14
A filter with no input pads is called a "source", a filter with no
15
output pads is called a "sink".
16

  
17
@section Filtergraph syntax
18

  
19
A filtergraph can be represented using a textual representation, which
20
is recognized by the @code{-vf} and @code{-af} options of the ff*
21
tools, and by the @code{av_parse_graph()} function defined in
22
@file{libavfilter/avfiltergraph}.
23

  
24
A filterchain consists of a sequence of connected filters, each one
25
connected to the previous one in the sequence. A filterchain is
26
represented by a list of ","-separated filter descriptions.
27

  
28
A filtergraph consists of a sequence of filterchains. A sequence of
29
filterchains is represented by a list of ";"-separated filterchain
30
descriptions.
31

  
32
A filter is represented by a string of the form:
33
[@var{in_link_1}]...[@var{in_link_N}]@var{filter_name}=@var{arguments}[@var{out_link_1}]...[@var{out_link_M}]
34

  
35
@var{filter_name} is the name of the filter class of which the
36
described filter is an instance of, and has to be the name of one of
37
the filter classes registered in the program.
38
The name of the filter class is optionally followed by a string
39
"=@var{arguments}".
40

  
41
@var{arguments} is a string which contains the parameters used to
42
initialize the filter instance, and are described in the filter
43
descriptions below.
44

  
45
The list of arguments can be quoted using the character "'" as initial
46
and ending mark, and the character '\' for escaping the characters
47
within the quoted text; otherwise the argument string is considered
48
terminated when the next special character (belonging to the set
49
"[]=;,") is encountered.
50

  
51
The name and arguments of the filter are optionally preceded and
52
followed by a list of link labels.
53
A link label allows to name a link and associate it to a filter output
54
or input pad. The preceding labels @var{in_link_1}
55
... @var{in_link_N}, are associated to the filter input pads,
56
the following labels @var{out_link_1} ... @var{out_link_M}, are
57
associated to the output pads.
58

  
59
When two link labels with the same name are found in the
60
filtergraph, a link between the corresponding input and output pad is
61
created.
62

  
63
If an output pad is not labelled, it is linked by default to the first
64
unlabelled input pad of the next filter in the filterchain.
65
For example in the filterchain:
66
@example
67
nullsrc, split[L1], [L2]overlay, nullsink
68
@end example
69
the split filter instance has two output pads, and the overlay filter
70
instance two input pads. The first output pad of split is labelled
71
"L1", the first input pad of overlay is labelled "L2", and the second
72
output pad of split is linked to the second input pad of overlay,
73
which are both unlabelled.
74

  
75
In a complete filterchain all the unlabelled filter input and output
76
pads must be connected. A filtergraph is considered valid if all the
77
filter input and output pads of all the filterchains are connected.
78

  
79
Follows a BNF description for the filtergraph syntax:
80
@example
81
@var{NAME}             ::= sequence of alphanumeric characters and '_'
82
@var{LINKLABEL}        ::= "[" @var{NAME} "]"
83
@var{LINKLABELS}       ::= @var{LINKLABEL} [@var{LINKLABELS}]
84
@var{FILTER_ARGUMENTS} ::= sequence of chars (eventually quoted)
85
@var{FILTER}           ::= [@var{LINKNAMES}] @var{NAME} ["=" @var{ARGUMENTS}] [@var{LINKNAMES}]
86
@var{FILTERCHAIN}      ::= @var{FILTER} [,@var{FILTERCHAIN}]
87
@var{FILTERGRAPH}      ::= @var{FILTERCHAIN} [;@var{FILTERGRAPH}]
88
@end example
89

  
90
@c man end FILTERGRAPH DESCRIPTION
91

  
1 92
@chapter Audio Filters
2 93
@c man begin AUDIO FILTERS
3 94

  

Also available in: Unified diff