mirror of
https://github.com/FFmpeg/FFmpeg.git
synced 2024-12-23 12:43:46 +02:00
Add section describing the filtergraph.
Originally committed as revision 25937 to svn://svn.ffmpeg.org/ffmpeg/trunk
This commit is contained in:
parent
9241cd2095
commit
1ebe5c4c0b
@ -1,3 +1,94 @@
|
||||
@chapter Filtergraph description
|
||||
@c man begin FILTERGRAPH DESCRIPTION
|
||||
|
||||
A filtergraph is a directed graph of connected filters. It can contain
|
||||
cycles, and there can be multiple links between a pair of
|
||||
filters. Each link has one input pad on one side connecting it to one
|
||||
filter from which it takes its input, and one output pad on the other
|
||||
side connecting it to the one filter accepting its output.
|
||||
|
||||
Each filter in a filtergraph is an instance of a filter class
|
||||
registered in the application, which defines the features and the
|
||||
number of input and output pads of the filter.
|
||||
|
||||
A filter with no input pads is called a "source", a filter with no
|
||||
output pads is called a "sink".
|
||||
|
||||
@section Filtergraph syntax
|
||||
|
||||
A filtergraph can be represented using a textual representation, which
|
||||
is recognized by the @code{-vf} and @code{-af} options of the ff*
|
||||
tools, and by the @code{av_parse_graph()} function defined in
|
||||
@file{libavfilter/avfiltergraph}.
|
||||
|
||||
A filterchain consists of a sequence of connected filters, each one
|
||||
connected to the previous one in the sequence. A filterchain is
|
||||
represented by a list of ","-separated filter descriptions.
|
||||
|
||||
A filtergraph consists of a sequence of filterchains. A sequence of
|
||||
filterchains is represented by a list of ";"-separated filterchain
|
||||
descriptions.
|
||||
|
||||
A filter is represented by a string of the form:
|
||||
[@var{in_link_1}]...[@var{in_link_N}]@var{filter_name}=@var{arguments}[@var{out_link_1}]...[@var{out_link_M}]
|
||||
|
||||
@var{filter_name} is the name of the filter class of which the
|
||||
described filter is an instance of, and has to be the name of one of
|
||||
the filter classes registered in the program.
|
||||
The name of the filter class is optionally followed by a string
|
||||
"=@var{arguments}".
|
||||
|
||||
@var{arguments} is a string which contains the parameters used to
|
||||
initialize the filter instance, and are described in the filter
|
||||
descriptions below.
|
||||
|
||||
The list of arguments can be quoted using the character "'" as initial
|
||||
and ending mark, and the character '\' for escaping the characters
|
||||
within the quoted text; otherwise the argument string is considered
|
||||
terminated when the next special character (belonging to the set
|
||||
"[]=;,") is encountered.
|
||||
|
||||
The name and arguments of the filter are optionally preceded and
|
||||
followed by a list of link labels.
|
||||
A link label allows to name a link and associate it to a filter output
|
||||
or input pad. The preceding labels @var{in_link_1}
|
||||
... @var{in_link_N}, are associated to the filter input pads,
|
||||
the following labels @var{out_link_1} ... @var{out_link_M}, are
|
||||
associated to the output pads.
|
||||
|
||||
When two link labels with the same name are found in the
|
||||
filtergraph, a link between the corresponding input and output pad is
|
||||
created.
|
||||
|
||||
If an output pad is not labelled, it is linked by default to the first
|
||||
unlabelled input pad of the next filter in the filterchain.
|
||||
For example in the filterchain:
|
||||
@example
|
||||
nullsrc, split[L1], [L2]overlay, nullsink
|
||||
@end example
|
||||
the split filter instance has two output pads, and the overlay filter
|
||||
instance two input pads. The first output pad of split is labelled
|
||||
"L1", the first input pad of overlay is labelled "L2", and the second
|
||||
output pad of split is linked to the second input pad of overlay,
|
||||
which are both unlabelled.
|
||||
|
||||
In a complete filterchain all the unlabelled filter input and output
|
||||
pads must be connected. A filtergraph is considered valid if all the
|
||||
filter input and output pads of all the filterchains are connected.
|
||||
|
||||
Follows a BNF description for the filtergraph syntax:
|
||||
@example
|
||||
@var{NAME} ::= sequence of alphanumeric characters and '_'
|
||||
@var{LINKLABEL} ::= "[" @var{NAME} "]"
|
||||
@var{LINKLABELS} ::= @var{LINKLABEL} [@var{LINKLABELS}]
|
||||
@var{FILTER_ARGUMENTS} ::= sequence of chars (eventually quoted)
|
||||
@var{FILTER} ::= [@var{LINKNAMES}] @var{NAME} ["=" @var{ARGUMENTS}] [@var{LINKNAMES}]
|
||||
@var{FILTERCHAIN} ::= @var{FILTER} [,@var{FILTERCHAIN}]
|
||||
@var{FILTERGRAPH} ::= @var{FILTERCHAIN} [;@var{FILTERGRAPH}]
|
||||
@end example
|
||||
|
||||
@c man end FILTERGRAPH DESCRIPTION
|
||||
|
||||
@chapter Audio Filters
|
||||
@c man begin AUDIO FILTERS
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user