summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--doc/vfilters.texi81
2 files changed, 82 insertions, 1 deletions
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