summaryrefslogtreecommitdiffstats
path: root/doc/filters.texi
diff options
context:
space:
mode:
authorStefano Sabatini <stefasab@gmail.com>2012-07-11 17:38:46 +0200
committerStefano Sabatini <stefasab@gmail.com>2012-07-14 11:38:53 +0200
commit5a6c7a218cdf2fa8a1cfd3a3dc2b61d736002c98 (patch)
treef8920f6489be276736fcb9c2b000cab0d4575b09 /doc/filters.texi
parent825e1e2437494ce5d90fe27c8a73b47147d6419c (diff)
downloadffmpeg-streaming-5a6c7a218cdf2fa8a1cfd3a3dc2b61d736002c98.zip
ffmpeg-streaming-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.texi85
1 files changed, 85 insertions, 0 deletions
diff --git a/doc/filters.texi b/doc/filters.texi
index 0d94eba..4332fd3 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
OpenPOWER on IntegriCloud