diff options
author | Stefano Sabatini <stefasab@gmail.com> | 2012-07-11 17:38:46 +0200 |
---|---|---|
committer | Stefano Sabatini <stefasab@gmail.com> | 2012-07-14 11:38:53 +0200 |
commit | 5a6c7a218cdf2fa8a1cfd3a3dc2b61d736002c98 (patch) | |
tree | f8920f6489be276736fcb9c2b000cab0d4575b09 /doc/filters.texi | |
parent | 825e1e2437494ce5d90fe27c8a73b47147d6419c (diff) | |
download | ffmpeg-5a6c7a218cdf2fa8a1cfd3a3dc2b61d736002c98.tar.gz |
doc: merge libavfilter.texi into filters.texi
There is no much point into splitting documentation for filters. Also
having a separate document for a library is inconsistent.
Diffstat (limited to 'doc/filters.texi')
-rw-r--r-- | doc/filters.texi | 85 |
1 files changed, 85 insertions, 0 deletions
diff --git a/doc/filters.texi b/doc/filters.texi index 0d94eba417..4332fd34b2 100644 --- a/doc/filters.texi +++ b/doc/filters.texi @@ -1,3 +1,88 @@ +@chapter Filtering Introduction +@c man begin FILTERING INTRODUCTION + +Filtering in FFmpeg is enabled through the libavfilter library. + +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. + +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. + +@c man end FILTERING INTRODUCTION + +@chapter graph2dot +@c man begin 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. + +@c man end GRAPH2DOT + @chapter Filtergraph description @c man begin FILTERGRAPH DESCRIPTION |