From 1f09ab5e6665d0cae34fe4b378f16268e712e748 Mon Sep 17 00:00:00 2001 From: Stefano Sabatini Date: Sun, 18 Oct 2009 07:46:06 +0000 Subject: [PATCH] Add documentation for libavfilter video filters. Originally committed as revision 20271 to svn://svn.ffmpeg.org/ffmpeg/trunk --- Makefile | 2 +- doc/vfilters.texi | 81 +++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 82 insertions(+), 1 deletion(-) create mode 100644 doc/vfilters.texi diff --git a/Makefile b/Makefile index 9cd9ef25f6..ed5cdc06e1 100644 --- a/Makefile +++ b/Makefile @@ -81,7 +81,7 @@ cmdutils.o cmdutils.d: version.h alltools: $(TOOLS) documentation: $(addprefix doc/, developer.html faq.html ffmpeg-doc.html ffserver-doc.html \ - ffplay-doc.html general.html $(ALLMANPAGES)) + ffplay-doc.html general.html vfilters.html $(ALLMANPAGES)) doc/%.html: doc/%.texi texi2html -monolithic -number $< diff --git a/doc/vfilters.texi b/doc/vfilters.texi new file mode 100644 index 0000000000..9f20d464e4 --- /dev/null +++ b/doc/vfilters.texi @@ -0,0 +1,81 @@ +\input texinfo @c -*- texinfo -*- + +@settitle Video Filter Documentation +@titlepage +@sp 7 +@center @titlefont{Video Filter Documentation} +@sp 3 +@end titlepage + + +@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. + +Integrating libavfilter into the main FFmpeg repository is a work in +progress. If you wish to try the unfinished development code of +libavfilter then check it out from the libavfilter repository into +some directory of your choice by: + +@example + svn checkout svn://svn.ffmpeg.org/soc/libavfilter +@end example + +And then read the README file in the top directory to learn how to +integrate it into ffmpeg and ffplay. + +But note that there may still be serious bugs in the code and its 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 in.avi -s 240x320 -vfilters "[in] split [T1], fifo, [T2] overlay= 0:240 [out]; [T1] fifo, crop=0:0:-1:240, vflip [T2] +@end example + +where input_video.avi has a vertical resolution of 480 pixels. 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{-vfilters} option passed to +ffmpeg or to 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 Available video filters + +When you configure your FFmpeg build, you can disable any of the +existing video filters. +The configure output will show the video filters included in your +build. + +Below is a description of the currently available video filters. + +@bye