mirror of https://github.com/FFmpeg/FFmpeg.git
There is no much point into splitting documentation for filters. Also having a separate document for a library is inconsistent.pull/59/head
parent
825e1e2437
commit
5a6c7a218c
3 changed files with 85 additions and 93 deletions
@ -1,92 +0,0 @@ |
||||
\input texinfo @c -*- texinfo -*- |
||||
|
||||
@settitle Libavfilter Documentation |
||||
@titlepage |
||||
@center @titlefont{Libavfilter Documentation} |
||||
@end titlepage |
||||
|
||||
@top |
||||
|
||||
@contents |
||||
|
||||
@chapter Introduction |
||||
|
||||
Libavfilter is the filtering API of FFmpeg. It is the substitute of the |
||||
now deprecated 'vhooks' and started as a Google Summer of Code project. |
||||
|
||||
Audio filtering integration into the main FFmpeg repository is a work in |
||||
progress, so audio API and ABI should not be considered stable yet. |
||||
|
||||
@chapter Tutorial |
||||
|
||||
In libavfilter, it is possible for filters to have multiple inputs and |
||||
multiple outputs. |
||||
To illustrate the sorts of things that are possible, we can |
||||
use a complex filter graph. For example, the following one: |
||||
|
||||
@example |
||||
input --> split --> fifo -----------------------> overlay --> output |
||||
| ^ |
||||
| | |
||||
+------> fifo --> crop --> vflip --------+ |
||||
@end example |
||||
|
||||
splits the stream in two streams, sends one stream through the crop filter |
||||
and the vflip filter before merging it back with the other stream by |
||||
overlaying it on top. You can use the following command to achieve this: |
||||
|
||||
@example |
||||
ffmpeg -i input -vf "[in] split [T1], fifo, [T2] overlay=0:H/2 [out]; [T1] fifo, crop=iw:ih/2:0:ih/2, vflip [T2]" output |
||||
@end example |
||||
|
||||
The result will be that in output the top half of the video is mirrored |
||||
onto the bottom half. |
||||
|
||||
Video filters are loaded using the @var{-vf} option passed to |
||||
@command{ffmpeg} or to @command{ffplay}. Filters in the same linear |
||||
chain are separated by commas. In our example, @var{split, fifo, |
||||
overlay} are in one linear chain, and @var{fifo, crop, vflip} are in |
||||
another. The points where the linear chains join are labeled by names |
||||
enclosed in square brackets. In our example, that is @var{[T1]} and |
||||
@var{[T2]}. The magic labels @var{[in]} and @var{[out]} are the points |
||||
where video is input and output. |
||||
|
||||
Some filters take in input a list of parameters: they are specified |
||||
after the filter name and an equal sign, and are separated each other |
||||
by a semicolon. |
||||
|
||||
There exist so-called @var{source filters} that do not have a video |
||||
input, and we expect in the future some @var{sink filters} that will |
||||
not have video output. |
||||
|
||||
@chapter graph2dot |
||||
|
||||
The @file{graph2dot} program included in the FFmpeg @file{tools} |
||||
directory can be used to parse a filter graph description and issue a |
||||
corresponding textual representation in the dot language. |
||||
|
||||
Invoke the command: |
||||
@example |
||||
graph2dot -h |
||||
@end example |
||||
|
||||
to see how to use @file{graph2dot}. |
||||
|
||||
You can then pass the dot description to the @file{dot} program (from |
||||
the graphviz suite of programs) and obtain a graphical representation |
||||
of the filter graph. |
||||
|
||||
For example the sequence of commands: |
||||
@example |
||||
echo @var{GRAPH_DESCRIPTION} | \ |
||||
tools/graph2dot -o graph.tmp && \ |
||||
dot -Tpng graph.tmp -o graph.png && \ |
||||
display graph.png |
||||
@end example |
||||
|
||||
can be used to create and display an image representing the graph |
||||
described by the @var{GRAPH_DESCRIPTION} string. |
||||
|
||||
@include filters.texi |
||||
|
||||
@bye |
Loading…
Reference in new issue