There is no much point into splitting documentation for filters. Also having a separate document for a library is inconsistent.tags/n1.0
| @@ -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 \ | |||
| @@ -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 | |||
| @@ -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 | |||