diff --git a/doc/Makefile b/doc/Makefile index 16f6a0d43e..b297eaa9d4 100644 --- a/doc/Makefile +++ b/doc/Makefile @@ -6,7 +6,6 @@ HTMLPAGES = $(PROGS-yes:%=doc/%.html) \ doc/fate.html \ doc/general.html \ doc/git-howto.html \ - doc/libavfilter.html \ doc/platform.html \ doc/syntax.html \ 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 diff --git a/doc/libavfilter.texi b/doc/libavfilter.texi deleted file mode 100644 index 06d9f13324..0000000000 --- a/doc/libavfilter.texi +++ /dev/null @@ -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