]> git.sesse.net Git - casparcg/commitdiff
Check in complete ffmpeg-20131215-git-ec13849-win32 Zeranoe build with README updates...
authorHelge Norberg <helge.norberg@gmail.com>
Fri, 17 Jan 2014 17:06:39 +0000 (18:06 +0100)
committerHelge Norberg <helge.norberg@gmail.com>
Fri, 17 Jan 2014 17:06:39 +0000 (18:06 +0100)
80 files changed:
dependencies/ffmpeg/README.txt
dependencies/ffmpeg/doc/developer.html
dependencies/ffmpeg/doc/examples/Makefile [new file with mode: 0644]
dependencies/ffmpeg/doc/examples/README [new file with mode: 0644]
dependencies/ffmpeg/doc/examples/decoding_encoding.c [new file with mode: 0644]
dependencies/ffmpeg/doc/examples/demuxing_decoding.c [new file with mode: 0644]
dependencies/ffmpeg/doc/examples/filtering_audio.c [new file with mode: 0644]
dependencies/ffmpeg/doc/examples/filtering_video.c [new file with mode: 0644]
dependencies/ffmpeg/doc/examples/metadata.c [new file with mode: 0644]
dependencies/ffmpeg/doc/examples/muxing.c [new file with mode: 0644]
dependencies/ffmpeg/doc/examples/resampling_audio.c [new file with mode: 0644]
dependencies/ffmpeg/doc/examples/scaling_video.c [new file with mode: 0644]
dependencies/ffmpeg/doc/examples/transcode_aac.c [new file with mode: 0644]
dependencies/ffmpeg/doc/faq.html
dependencies/ffmpeg/doc/fate.html [new file with mode: 0644]
dependencies/ffmpeg/doc/ffmpeg-all.html [new file with mode: 0644]
dependencies/ffmpeg/doc/ffmpeg-bitstream-filters.html [new file with mode: 0644]
dependencies/ffmpeg/doc/ffmpeg-codecs.html [new file with mode: 0644]
dependencies/ffmpeg/doc/ffmpeg-devices.html [new file with mode: 0644]
dependencies/ffmpeg/doc/ffmpeg-filters.html [new file with mode: 0644]
dependencies/ffmpeg/doc/ffmpeg-formats.html [new file with mode: 0644]
dependencies/ffmpeg/doc/ffmpeg-protocols.html [new file with mode: 0644]
dependencies/ffmpeg/doc/ffmpeg-resampler.html [new file with mode: 0644]
dependencies/ffmpeg/doc/ffmpeg-scaler.html [new file with mode: 0644]
dependencies/ffmpeg/doc/ffmpeg-utils.html [new file with mode: 0644]
dependencies/ffmpeg/doc/ffmpeg.html
dependencies/ffmpeg/doc/ffplay-all.html [new file with mode: 0644]
dependencies/ffmpeg/doc/ffplay.html
dependencies/ffmpeg/doc/ffprobe-all.html [new file with mode: 0644]
dependencies/ffmpeg/doc/ffprobe.html
dependencies/ffmpeg/doc/general.html
dependencies/ffmpeg/doc/git-howto.html [new file with mode: 0644]
dependencies/ffmpeg/doc/libavcodec.html [new file with mode: 0644]
dependencies/ffmpeg/doc/libavdevice.html [new file with mode: 0644]
dependencies/ffmpeg/doc/libavfilter.html
dependencies/ffmpeg/doc/libavformat.html [new file with mode: 0644]
dependencies/ffmpeg/doc/libavutil.html [new file with mode: 0644]
dependencies/ffmpeg/doc/libswresample.html [new file with mode: 0644]
dependencies/ffmpeg/doc/libswscale.html [new file with mode: 0644]
dependencies/ffmpeg/doc/nut.html [new file with mode: 0644]
dependencies/ffmpeg/doc/platform.html [new file with mode: 0644]
dependencies/ffmpeg/ff-prompt.cmd [new file with mode: 0644]
dependencies/ffmpeg/licenses/fontconfig.txt [new file with mode: 0644]
dependencies/ffmpeg/licenses/freetype.txt
dependencies/ffmpeg/licenses/frei0r.txt
dependencies/ffmpeg/licenses/gnutls.txt [new file with mode: 0644]
dependencies/ffmpeg/licenses/lame.txt
dependencies/ffmpeg/licenses/libass.txt [new file with mode: 0644]
dependencies/ffmpeg/licenses/libbluray.txt [new file with mode: 0644]
dependencies/ffmpeg/licenses/libcaca.txt [new file with mode: 0644]
dependencies/ffmpeg/licenses/libgsm.txt [new file with mode: 0644]
dependencies/ffmpeg/licenses/libiconv.txt [new file with mode: 0644]
dependencies/ffmpeg/licenses/libilbc.txt [new file with mode: 0644]
dependencies/ffmpeg/licenses/libmodplug.txt [new file with mode: 0644]
dependencies/ffmpeg/licenses/libtheora.txt [new file with mode: 0644]
dependencies/ffmpeg/licenses/libvorbis.txt [new file with mode: 0644]
dependencies/ffmpeg/licenses/libvpx.txt
dependencies/ffmpeg/licenses/opencore-amr.txt
dependencies/ffmpeg/licenses/openjpeg.txt
dependencies/ffmpeg/licenses/opus.txt [new file with mode: 0644]
dependencies/ffmpeg/licenses/rtmpdump.txt [new file with mode: 0644]
dependencies/ffmpeg/licenses/schroedinger.txt
dependencies/ffmpeg/licenses/soxr.txt [new file with mode: 0644]
dependencies/ffmpeg/licenses/speex.txt
dependencies/ffmpeg/licenses/twolame.txt [new file with mode: 0644]
dependencies/ffmpeg/licenses/vid.stab.txt [new file with mode: 0644]
dependencies/ffmpeg/licenses/vo-aacenc.txt [new file with mode: 0644]
dependencies/ffmpeg/licenses/vo-amrwbenc.txt [new file with mode: 0644]
dependencies/ffmpeg/licenses/wavpack.txt [new file with mode: 0644]
dependencies/ffmpeg/licenses/x264.txt
dependencies/ffmpeg/licenses/xvid.txt
dependencies/ffmpeg/licenses/zlib.txt
dependencies/ffmpeg/presets/ffprobe.xsd [new file with mode: 0644]
dependencies/ffmpeg/presets/libvpx-1080p.ffpreset [new file with mode: 0644]
dependencies/ffmpeg/presets/libvpx-1080p50_60.ffpreset [new file with mode: 0644]
dependencies/ffmpeg/presets/libvpx-360p.ffpreset [new file with mode: 0644]
dependencies/ffmpeg/presets/libvpx-720p.ffpreset [new file with mode: 0644]
dependencies/ffmpeg/presets/libvpx-720p50_60.ffpreset [new file with mode: 0644]
dependencies/ffmpeg/presets/libx264-ipod320.ffpreset [new file with mode: 0644]
dependencies/ffmpeg/presets/libx264-ipod640.ffpreset [new file with mode: 0644]

index 783c84b7ce1f0b397b87754fe73133e77dc6db6f..36752086fc449b75b845f203a98e00b6215316ed 100644 (file)
 This is a FFmpeg Win32 shared build by Kyle Schwarz.\r
 \r
-Zeranoe's FFmpeg Builds Home Page: http://ffmpeg.zeranoe.com/builds/\r
+Zeranoe's FFmpeg Builds Home Page: <http://ffmpeg.zeranoe.com/builds/>\r
 \r
-Built on Jul 23 2011 15:03:26\r
+This build was compiled on: Dec 14 2013, at: 22:03:40\r
 \r
-FFmpeg version git-9c2651a\r
-       libavutil    51. 11. 0 / 51. 11. 0\r
-       libavcodec   53.  9. 0 / 53.  9. 0\r
-       libavformat  53.  6. 0 / 53.  6. 0\r
-       libavdevice  53.  2. 0 / 53.  2. 0\r
-       libavfilter   2. 27. 3 /  2. 27. 3\r
-       libswscale    2.  0. 0 /  2.  0. 0\r
-       libpostproc  51.  2. 0 / 51.  2. 0\r
+FFmpeg version: 2013-12-15 git-ec13849\r
+  libavutil      52. 58.100 / 52. 58.100\r
+  libavcodec     55. 45.101 / 55. 45.101\r
+  libavformat    55. 22.100 / 55. 22.100\r
+  libavdevice    55.  5.102 / 55.  5.102\r
+  libavfilter     3. 92.100 /  3. 92.100\r
+  libswscale      2.  5.101 /  2.  5.101\r
+  libswresample   0. 17.104 /  0. 17.104\r
+  libpostproc    52.  3.100 / 52.  3.100\r
 \r
-FFmpeg configured with:\r
-       --disable-static\r
-       --enable-shared\r
-       --disable-outdev=sdl\r
-       --enable-gpl\r
-       --enable-version3\r
-       --enable-memalign-hack\r
-       --enable-runtime-cpudetect\r
-       --enable-avisynth\r
-       --enable-bzlib\r
-       --enable-frei0r\r
-       --enable-libopencore-amrnb\r
-       --enable-libopencore-amrwb\r
-       --enable-libfreetype\r
-       --enable-libgsm\r
-       --enable-libmp3lame\r
-       --enable-libopenjpeg\r
-       --enable-librtmp\r
-       --enable-libschroedinger\r
-       --enable-libspeex\r
-       --enable-libtheora\r
-       --enable-libvorbis\r
-       --enable-libvpx\r
-       --enable-libx264\r
-       --enable-libxavs\r
-       --enable-libxvid\r
-       --enable-zlib\r
+This FFmpeg build was configured with:\r
+  --disable-static\r
+  --enable-shared\r
+  --enable-gpl\r
+  --enable-version3\r
+  --disable-w32threads\r
+  --enable-avisynth\r
+  --enable-bzlib\r
+  --enable-fontconfig\r
+  --enable-frei0r\r
+  --enable-gnutls\r
+  --enable-iconv\r
+  --enable-libass\r
+  --enable-libbluray\r
+  --enable-libcaca\r
+  --enable-libfreetype\r
+  --enable-libgsm\r
+  --enable-libilbc\r
+  --enable-libmodplug\r
+  --enable-libmp3lame\r
+  --enable-libopencore-amrnb\r
+  --enable-libopencore-amrwb\r
+  --enable-libopenjpeg\r
+  --enable-libopus\r
+  --enable-librtmp\r
+  --enable-libschroedinger\r
+  --enable-libsoxr\r
+  --enable-libspeex\r
+  --enable-libtheora\r
+  --enable-libtwolame\r
+  --enable-libvidstab\r
+  --enable-libvo-aacenc\r
+  --enable-libvo-amrwbenc\r
+  --enable-libvorbis\r
+  --enable-libvpx\r
+  --enable-libwavpack\r
+  --enable-libx264\r
+  --enable-libxavs\r
+  --enable-libxvid\r
+  --enable-zlib\r
 \r
-The source code for this FFmpeg build can be found at:\r
-       http://hawkeye.arrozcru.org/source/\r
-       \r
-This version of FFmpeg was built on:\r
-       Ubuntu Desktop 11.04: http://www.ubuntu.com/desktop\r
-       \r
-The cross-compile toolchain used to compile this FFmpeg was:\r
-       MinGW-w64 r4240: http://mingw-w64.sourceforge.net/\r
-       winpthreads (part of MinGW-w64)\r
+This build was compiled with the following external libraries:\r
+  bzip2 1.0.6 <http://bzip.org/>\r
+  Fontconfig 2.10.95 <http://freedesktop.org/wiki/Software/fontconfig>\r
+  Frei0r 20130909-git-10d8360 <http://frei0r.dyne.org/>\r
+  GnuTLS 3.2.6 <http://gnutls.org/>\r
+  libiconv 1.14 <http://gnu.org/software/libiconv/>\r
+  libass 0.10.2 <http://code.google.com/p/libass/>\r
+  libbluray 0.4.0 <http://videolan.org/developers/libbluray.html>\r
+  libcaca 0.99.beta18 <http://caca.zoy.org/wiki/libcaca>\r
+  FreeType 2.5.0.1 <http://freetype.sourceforge.net/>\r
+  GSM 1.0.13-4 <http://packages.debian.org/source/squeeze/libgsm>\r
+  iLBC 20120913-git-b5f9b10 <https://github.com/dekkers/libilbc/>\r
+  Modplug-XMMS 0.8.8.4 <http://modplug-xmms.sourceforge.net/>\r
+  LAME 3.99.5 <http://lame.sourceforge.net/>\r
+  OpenCORE AMR 0.1.3 <http://sourceforge.net/projects/opencore-amr/>\r
+  OpenJPEG 1.5.1 <http://www.openjpeg.org/>\r
+  Opus 1.1 <http://opus-codec.org/>\r
+  RTMPDump 20131007-git-a9f353c <http://rtmpdump.mplayerhq.hu/>\r
+  Schroedinger 1.0.11 <http://diracvideo.org/>\r
+  libsoxr 0.1.1 <http://sourceforge.net/projects/soxr/>\r
+  Speex 1.2rc1 <http://speex.org/>\r
+  Theora 1.1.1 <http://theora.org/>\r
+  TwoLAME 0.3.13 <http://twolame.org/>\r
+  vid.stab 20130830-git-869f3bb <http://public.hronopik.de/vid.stab/>\r
+  VisualOn AAC 0.1.3 <https://github.com/mstorsjo/vo-aacenc>\r
+  VisualOn AMR-WB 0.1.2 <https://github.com/mstorsjo/vo-amrwbenc>\r
+  Vorbis 1.3.3 <http://vorbis.com/>\r
+  vpx 1.3.0 <http://webmproject.org/>\r
+  WavPack 4.70.0 <http://wavpack.com/>\r
+  x264 20131030-git-1ca7bb9 <http://videolan.org/developers/x264.html>\r
+  XAVS svn-r55 <http://xavs.sourceforge.net/>\r
+  Xvid 1.3.2 <http://xvid.org/>\r
+  zlib 1.2.8 <http://zlib.net/>\r
 \r
-The GCC version used to compile this FFmpeg was:\r
-       GCC 4.6.1: http://gcc.gnu.org/\r
-       \r
-The external libaries compiled into this FFmpeg are:\r
-       bzip2 1.0.6 http://www.bzip.org\r
-       Frei0r 1.3 http://frei0r.dyne.org/\r
-       opencore-amr 0.1.2 http://sourceforge.net/projects/opencore-amr/\r
-       FreeType 2.4.4 http://www.freetype.org/\r
-       gsm 1.0.13-3 http://libgsm.sourcearchive.com/\r
-       LAME 3.98.4 http://lame.sourceforge.net/\r
-       OpenJPEG 1.4 http://www.openjpeg.org/\r
-       RTMP git-6155179b http://rtmpdump.mplayerhq.hu/\r
-       Schroedinger 1.0.10 http://diracvideo.org/\r
-       Speex 1.2rc1 http://www.speex.org/\r
-       Theora 1.1.1 http://www.theora.org/\r
-       Vorbis 1.3.2 http://www.vorbis.com/\r
-       libvpx 0.9.6 http://www.webmproject.org/code/\r
-       x264 git-4c552d87 http://www.videolan.org/developers/x264.html\r
-       XAVS r51 http://xavs.sourceforge.net/\r
-       Xvid 1.3.2 http://www.xvid.org/\r
-       zlib 1.2.5 http://zlib.net/\r
+The source code for this FFmpeg build can be found at: <http://ffmpeg.zeranoe.com/builds/source/>\r
 \r
-License for each library can be found in the licenses folder.\r
+This build was compiled on Debian jessie/sid (64-bit): <http://www.debian.org/>\r
+\r
+GCC 4.8.2 was used to compile this FFmpeg build: <http://gcc.gnu.org/>\r
+\r
+This build was compiled using the MinGW-w64 toolchain: <http://mingw-w64.sourceforge.net/>\r
+\r
+Licenses for each library can be found in the 'licenses' folder.\r
index 9f73c8dc5e9b6b4ea01e3aa9aa7707386fcd59ff..9fcc4ccc9973b9587bd82b84d1d2dd69e2e7a53f 100644 (file)
@@ -1,6 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<!DOCTYPE html>
 <html>
-<!-- Created on September 2, 2011 by texi2html 1.82
+<!-- Created on December 14, 2013 by texi2html 1.82 -->
+<!--
 texi2html was written by: 
             Lionel Cons <Lionel.Cons@cern.ch> (original author)
             Karl Berry  <karl@freefriends.org>
@@ -8,38 +9,22 @@ texi2html was written by:
             and many others.
 Maintained by: Many creative people.
 Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
 -->
 <head>
-<title>Developer Documentation</title>
+<title>FFmpeg documentation : Developer </title>
 
-<meta name="description" content="Developer Documentation">
-<meta name="keywords" content="Developer Documentation">
-<meta name="resource-type" content="document">
-<meta name="distribution" content="global">
+<meta name="description" content="Developer Documentation: ">
+<meta name="keywords" content="FFmpeg documentation : Developer ">
 <meta name="Generator" content="texi2html 1.82">
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<style type="text/css">
-<!--
-a.summary-letter {text-decoration: none}
-blockquote.smallquotation {font-size: smaller}
-pre.display {font-family: serif}
-pre.format {font-family: serif}
-pre.menu-comment {font-family: serif}
-pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: serif; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: serif; font-size: smaller}
-pre.smalllisp {font-size: smaller}
-span.roman {font-family:serif; font-weight:normal;}
-span.sansserif {font-family:sans-serif; font-weight:normal;}
-ul.toc {list-style: none}
--->
-</style>
-
+<link rel="stylesheet" type="text/css" href="default.css" />
 
+<link rel="icon" href="favicon.png" type="image/png" />
 </head>
-
-<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<body>
+<div id="container">
+<div id="body">
 
 <a name="SEC_Top"></a>
 <h1 class="settitle">Developer Documentation</h1>
@@ -51,117 +36,117 @@ ul.toc {list-style: none}
 <ul class="toc">
   <li><a name="toc-Developers-Guide" href="#Developers-Guide">1. Developers Guide</a>
   <ul class="toc">
-    <li><a name="toc-API" href="#API">1.1 API</a></li>
-    <li><a name="toc-Integrating-libavcodec-or-libavformat-in-your-program" href="#Integrating-libavcodec-or-libavformat-in-your-program">1.2 Integrating libavcodec or libavformat in your program</a></li>
-    <li><a name="toc-Contributing" href="#Contributing">1.3 Contributing</a></li>
-    <li><a name="toc-Coding-Rules-1" href="#Coding-Rules-1">1.4 Coding Rules</a></li>
-    <li><a name="toc-Development-Policy" href="#Development-Policy">1.5 Development Policy</a></li>
-    <li><a name="toc-Submitting-patches-1" href="#Submitting-patches-1">1.6 Submitting patches</a></li>
-    <li><a name="toc-New-codecs-or-formats-checklist" href="#New-codecs-or-formats-checklist">1.7 New codecs or formats checklist</a></li>
-    <li><a name="toc-patch-submission-checklist" href="#patch-submission-checklist">1.8 patch submission checklist</a></li>
-    <li><a name="toc-Patch-review-process" href="#Patch-review-process">1.9 Patch review process</a></li>
-    <li><a name="toc-Regression-tests" href="#Regression-tests">1.10 Regression tests</a></li>
+    <li><a name="toc-Notes-for-external-developers" href="#Notes-for-external-developers">1.1 Notes for external developers</a></li>
+    <li><a name="toc-Contributing" href="#Contributing">1.2 Contributing</a></li>
+    <li><a name="toc-Coding-Rules-1" href="#Coding-Rules-1">1.3 Coding Rules</a>
+    <ul class="toc">
+      <li><a name="toc-Code-formatting-conventions" href="#Code-formatting-conventions">1.3.1 Code formatting conventions</a></li>
+      <li><a name="toc-Comments" href="#Comments">1.3.2 Comments</a></li>
+      <li><a name="toc-C-language-features" href="#C-language-features">1.3.3 C language features</a></li>
+      <li><a name="toc-Naming-conventions" href="#Naming-conventions">1.3.4 Naming conventions</a></li>
+      <li><a name="toc-Miscellaneous-conventions" href="#Miscellaneous-conventions">1.3.5 Miscellaneous conventions</a></li>
+      <li><a name="toc-Editor-configuration" href="#Editor-configuration">1.3.6 Editor configuration</a></li>
+    </ul></li>
+    <li><a name="toc-Development-Policy" href="#Development-Policy">1.4 Development Policy</a></li>
+    <li><a name="toc-Submitting-patches-1" href="#Submitting-patches-1">1.5 Submitting patches</a></li>
+    <li><a name="toc-New-codecs-or-formats-checklist" href="#New-codecs-or-formats-checklist">1.6 New codecs or formats checklist</a></li>
+    <li><a name="toc-patch-submission-checklist" href="#patch-submission-checklist">1.7 patch submission checklist</a></li>
+    <li><a name="toc-Patch-review-process" href="#Patch-review-process">1.8 Patch review process</a></li>
+    <li><a name="toc-Regression-tests-1" href="#Regression-tests-1">1.9 Regression tests</a>
+    <ul class="toc">
+      <li><a name="toc-Adding-files-to-the-fate_002dsuite-dataset" href="#Adding-files-to-the-fate_002dsuite-dataset">1.9.1 Adding files to the fate-suite dataset</a></li>
+      <li><a name="toc-Visualizing-Test-Coverage" href="#Visualizing-Test-Coverage">1.9.2 Visualizing Test Coverage</a></li>
+      <li><a name="toc-Using-Valgrind" href="#Using-Valgrind">1.9.3 Using Valgrind</a></li>
+    </ul></li>
+    <li><a name="toc-Release-process-1" href="#Release-process-1">1.10 Release process</a>
+    <ul class="toc">
+      <li><a name="toc-Criteria-for-Point-Releases-1" href="#Criteria-for-Point-Releases-1">1.10.1 Criteria for Point Releases</a></li>
+      <li><a name="toc-Release-Checklist" href="#Release-Checklist">1.10.2 Release Checklist</a></li>
+    </ul>
+</li>
   </ul>
 </li>
 </ul>
 </div>
 
-<hr size="1">
 <a name="Developers-Guide"></a>
 <h1 class="chapter"><a href="developer.html#toc-Developers-Guide">1. Developers Guide</a></h1>
 
-<a name="API"></a>
-<h2 class="section"><a href="developer.html#toc-API">1.1 API</a></h2>
-<ul>
-<li> libavcodec is the library containing the codecs (both encoding and
-decoding). Look at &lsquo;<tt>libavcodec/apiexample.c</tt>&rsquo; to see how to use it.
-
-</li><li> libavformat is the library containing the file format handling (mux and
-demux code for several formats). Look at &lsquo;<tt>ffplay.c</tt>&rsquo; to use it in a
-player. See &lsquo;<tt>libavformat/output-example.c</tt>&rsquo; to use it to generate
-audio or video streams.
-
-</li></ul>
-
-<a name="Integrating-libavcodec-or-libavformat-in-your-program"></a>
-<h2 class="section"><a href="developer.html#toc-Integrating-libavcodec-or-libavformat-in-your-program">1.2 Integrating libavcodec or libavformat in your program</a></h2>
+<a name="Notes-for-external-developers"></a>
+<h2 class="section"><a href="developer.html#toc-Notes-for-external-developers">1.1 Notes for external developers</a></h2>
 
-<p>You can integrate all the source code of the libraries to link them
-statically to avoid any version problem. All you need is to provide a
-&rsquo;config.mak&rsquo; and a &rsquo;config.h&rsquo; in the parent directory. See the defines
-generated by ./configure to understand what is needed.
+<p>This document is mostly useful for internal FFmpeg developers.
+External developers who need to use the API in their application should
+refer to the API doxygen documentation in the public headers, and
+check the examples in &lsquo;<tt>doc/examples</tt>&rsquo; and in the source code to
+see how the public API is employed.
 </p>
-<p>You can use libavcodec or libavformat in your commercial program, but
-<em>any patch you make must be published</em>. The best way to proceed is
-to send your patches to the FFmpeg mailing list.
+<p>You can use the FFmpeg libraries in your commercial program, but you
+are encouraged to <em>publish any patch you make</em>. In this case the
+best way to proceed is to send your patches to the ffmpeg-devel
+mailing list following the guidelines illustrated in the remainder of
+this document.
+</p>
+<p>For more detailed legal information about the use of FFmpeg in
+external programs read the &lsquo;<tt>LICENSE</tt>&rsquo; file in the source tree and
+consult <a href="http://ffmpeg.org/legal.html">http://ffmpeg.org/legal.html</a>.
 </p>
 <a name="Contributing"></a>
-<h2 class="section"><a href="developer.html#toc-Contributing">1.3 Contributing</a></h2>
+<h2 class="section"><a href="developer.html#toc-Contributing">1.2 Contributing</a></h2>
 
 <p>There are 3 ways by which code gets into ffmpeg.
 </p><ul>
-<li> Submiting Patches to the main developer mailing list
+<li> Submitting Patches to the main developer mailing list
       see <a href="#Submitting-patches">Submitting patches</a> for details.
-</li><li> Directly commiting changes to the main tree.
-</li><li> Commiting changes to a git clone, for example on github.com or
+</li><li> Directly committing changes to the main tree.
+</li><li> Committing changes to a git clone, for example on github.com or
       gitorious.org. And asking us to merge these changes.
 </li></ul>
 
 <p>Whichever way, changes should be reviewed by the maintainer of the code
-before they are commited. And they should follow the <a href="#Coding-Rules">Coding Rules</a>.
+before they are committed. And they should follow the <a href="#Coding-Rules">Coding Rules</a>.
 The developer making the commit and the author are responsible for their changes
 and should try to fix issues their commit causes.
 </p>
 <p><a name="Coding-Rules"></a>
 </p><a name="Coding-Rules-1"></a>
-<h2 class="section"><a href="developer.html#toc-Coding-Rules-1">1.4 Coding Rules</a></h2>
+<h2 class="section"><a href="developer.html#toc-Coding-Rules-1">1.3 Coding Rules</a></h2>
 
-<p>FFmpeg is programmed in the ISO C90 language with a few additional
-features from ISO C99, namely:
-</p><ul>
-<li>
-the &lsquo;<samp>inline</samp>&rsquo; keyword;
-</li><li>
-&lsquo;<samp>//</samp>&rsquo; comments;
-</li><li>
-designated struct initializers (&lsquo;<samp>struct s x = { .i = 17 };</samp>&rsquo;)
-</li><li>
-compound literals (&lsquo;<samp>x = (struct s) { 17, 23 };</samp>&rsquo;)
-</li></ul>
+<a name="Code-formatting-conventions"></a>
+<h3 class="subsection"><a href="developer.html#toc-Code-formatting-conventions">1.3.1 Code formatting conventions</a></h3>
 
-<p>These features are supported by all compilers we care about, so we will not
-accept patches to remove their use unless they absolutely do not impair
-clarity and performance.
+<p>There are the following guidelines regarding the indentation in files:
 </p>
-<p>All code must compile with recent versions of GCC and a number of other
-currently supported compilers. To ensure compatibility, please do not use
-additional C99 features or GCC extensions. Especially watch out for:
-</p><ul>
+<ul>
 <li>
-mixing statements and declarations;
-</li><li>
-&lsquo;<samp>long long</samp>&rsquo; (use &lsquo;<samp>int64_t</samp>&rsquo; instead);
-</li><li>
-&lsquo;<samp>__attribute__</samp>&rsquo; not protected by &lsquo;<samp>#ifdef __GNUC__</samp>&rsquo; or similar;
-</li><li>
-GCC statement expressions (&lsquo;<samp>(x = ({ int y = 4; y; })</samp>&rsquo;).
-</li></ul>
+Indent size is 4.
 
-<p>Indent size is 4.
-The presentation is one inspired by &rsquo;indent -i4 -kr -nut&rsquo;.
+</li><li>
 The TAB character is forbidden outside of Makefiles as is any
 form of trailing whitespace. Commits containing either will be
 rejected by the git repository.
+
+</li><li>
+You should try to limit your code lines to 80 characters; however, do so if
+and only if this improves readability.
+</li></ul>
+<p>The presentation is one inspired by &rsquo;indent -i4 -kr -nut&rsquo;.
 </p>
 <p>The main priority in FFmpeg is simplicity and small code size in order to
 minimize the bug count.
 </p>
-<p>Comments: Use the JavaDoc/Doxygen
-format (see examples below) so that code documentation
+<a name="Comments"></a>
+<h3 class="subsection"><a href="developer.html#toc-Comments">1.3.2 Comments</a></h3>
+<p>Use the JavaDoc/Doxygen  format (see examples below) so that code documentation
 can be generated automatically. All nontrivial functions should have a comment
 above them explaining what the function does, even if it is just one sentence.
 All structures and their member variables should be documented, too.
-</p><table><tr><td>&nbsp;</td><td><pre class="example">/**
+</p>
+<p>Avoid Qt-style and similar Doxygen syntax with <code>!</code> in it, i.e. replace
+<code>//!</code> with <code>///</code> and similar.  Also @ syntax should be employed
+for markup commands, i.e. use <code>@param</code> and not <code>\param</code>.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">/**
  * @file
  * MPEG codec.
  * @author ...
@@ -190,138 +175,298 @@ int myfunc(int my_parameter)
 ...
 </pre></td></tr></table>
 
-<p>fprintf and printf are forbidden in libavformat and libavcodec,
-please use av_log() instead.
+<a name="C-language-features"></a>
+<h3 class="subsection"><a href="developer.html#toc-C-language-features">1.3.3 C language features</a></h3>
+
+<p>FFmpeg is programmed in the ISO C90 language with a few additional
+features from ISO C99, namely:
 </p>
-<p>Casts should be used only when necessary. Unneeded parentheses
-should also be avoided if they don&rsquo;t make the code easier to understand.
+<ul>
+<li>
+the &lsquo;<samp>inline</samp>&rsquo; keyword;
+
+</li><li>
+&lsquo;<samp>//</samp>&rsquo; comments;
+
+</li><li>
+designated struct initializers (&lsquo;<samp>struct s x = { .i = 17 };</samp>&rsquo;)
+
+</li><li>
+compound literals (&lsquo;<samp>x = (struct s) { 17, 23 };</samp>&rsquo;)
+</li></ul>
+
+<p>These features are supported by all compilers we care about, so we will not
+accept patches to remove their use unless they absolutely do not impair
+clarity and performance.
+</p>
+<p>All code must compile with recent versions of GCC and a number of other
+currently supported compilers. To ensure compatibility, please do not use
+additional C99 features or GCC extensions. Especially watch out for:
 </p>
+<ul>
+<li>
+mixing statements and declarations;
+
+</li><li>
+&lsquo;<samp>long long</samp>&rsquo; (use &lsquo;<samp>int64_t</samp>&rsquo; instead);
+
+</li><li>
+&lsquo;<samp>__attribute__</samp>&rsquo; not protected by &lsquo;<samp>#ifdef __GNUC__</samp>&rsquo; or similar;
+
+</li><li>
+GCC statement expressions (&lsquo;<samp>(x = ({ int y = 4; y; })</samp>&rsquo;).
+</li></ul>
+
+<a name="Naming-conventions"></a>
+<h3 class="subsection"><a href="developer.html#toc-Naming-conventions">1.3.4 Naming conventions</a></h3>
+<p>All names should be composed with underscores (_), not CamelCase. For example,
+&lsquo;<samp>avfilter_get_video_buffer</samp>&rsquo; is an acceptable function name and
+&lsquo;<samp>AVFilterGetVideo</samp>&rsquo; is not. The exception from this are type names, like
+for example structs and enums; they should always be in the CamelCase
+</p>
+<p>There are the following conventions for naming variables and functions:
+</p>
+<ul>
+<li>
+For local variables no prefix is required.
+
+</li><li>
+For file-scope variables and functions declared as <code>static</code>, no prefix
+is required.
+
+</li><li>
+For variables and functions visible outside of file scope, but only used
+internally by a library, an <code>ff_</code> prefix should be used,
+e.g. &lsquo;<samp>ff_w64_demuxer</samp>&rsquo;.
+
+</li><li>
+For variables and functions visible outside of file scope, used internally
+across multiple libraries, use <code>avpriv_</code> as prefix, for example,
+&lsquo;<samp>avpriv_aac_parse_header</samp>&rsquo;.
+
+</li><li>
+Each library has its own prefix for public symbols, in addition to the
+commonly used <code>av_</code> (<code>avformat_</code> for libavformat,
+<code>avcodec_</code> for libavcodec, <code>swr_</code> for libswresample, etc).
+Check the existing code and choose names accordingly.
+Note that some symbols without these prefixes are also exported for
+retro-compatibility reasons. These exceptions are declared in the
+<code>lib&lt;name&gt;/lib&lt;name&gt;.v</code> files.
+</li></ul>
+
+<p>Furthermore, name space reserved for the system should not be invaded.
+Identifiers ending in <code>_t</code> are reserved by
+<a href="http://pubs.opengroup.org/onlinepubs/007904975/functions/xsh_chap02_02.html#tag_02_02_02">POSIX</a>.
+Also avoid names starting with <code>__</code> or <code>_</code> followed by an uppercase
+letter as they are reserved by the C standard. Names starting with <code>_</code>
+are reserved at the file level and may not be used for externally visible
+symbols. If in doubt, just avoid names starting with <code>_</code> altogether.
+</p>
+<a name="Miscellaneous-conventions"></a>
+<h3 class="subsection"><a href="developer.html#toc-Miscellaneous-conventions">1.3.5 Miscellaneous conventions</a></h3>
+
+<ul>
+<li>
+fprintf and printf are forbidden in libavformat and libavcodec,
+please use av_log() instead.
+
+</li><li>
+Casts should be used only when necessary. Unneeded parentheses
+should also be avoided if they don&rsquo;t make the code easier to understand.
+</li></ul>
+
+<a name="Editor-configuration"></a>
+<h3 class="subsection"><a href="developer.html#toc-Editor-configuration">1.3.6 Editor configuration</a></h3>
+<p>In order to configure Vim to follow FFmpeg formatting conventions, paste
+the following snippet into your &lsquo;<tt>.vimrc</tt>&rsquo;:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">&quot; indentation rules for FFmpeg: 4 spaces, no tabs
+set expandtab
+set shiftwidth=4
+set softtabstop=4
+set cindent
+set cinoptions=(0
+&quot; Allow tabs in Makefiles.
+autocmd FileType make,automake set noexpandtab shiftwidth=8 softtabstop=8
+&quot; Trailing whitespace and tabs are forbidden, so highlight them.
+highlight ForbiddenWhitespace ctermbg=red guibg=red
+match ForbiddenWhitespace /\s\+$\|\t/
+&quot; Do not highlight spaces at the end of line while typing on that line.
+autocmd InsertEnter * match ForbiddenWhitespace /\t\|\s\+\%#\@&lt;!$/
+</pre></td></tr></table>
+
+<p>For Emacs, add these roughly equivalent lines to your &lsquo;<tt>.emacs.d/init.el</tt>&rsquo;:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">(c-add-style &quot;ffmpeg&quot;
+             '(&quot;k&amp;r&quot;
+               (c-basic-offset . 4)
+               (indent-tabs-mode . nil)
+               (show-trailing-whitespace . t)
+               (c-offsets-alist
+                (statement-cont . (c-lineup-assignments +)))
+               )
+             )
+(setq c-default-style &quot;ffmpeg&quot;)
+</pre></td></tr></table>
+
 <a name="Development-Policy"></a>
-<h2 class="section"><a href="developer.html#toc-Development-Policy">1.5 Development Policy</a></h2>
+<h2 class="section"><a href="developer.html#toc-Development-Policy">1.4 Development Policy</a></h2>
 
 <ol>
 <li>
-   Contributions should be licensed under the LGPL 2.1, including an
-   &quot;or any later version&quot; clause, or the MIT license.  GPL 2 including
-   an &quot;or any later version&quot; clause is also acceptable, but LGPL is
-   preferred.
-</li><li>
-   You must not commit code which breaks FFmpeg! (Meaning unfinished but
-   enabled code which breaks compilation or compiles but does not work or
-   breaks the regression tests)
-   You can commit unfinished stuff (for testing etc), but it must be disabled
-   (#ifdef etc) by default so it does not interfere with other developers&rsquo;
-   work.
-</li><li>
-   You do not have to over-test things. If it works for you, and you think it
-   should work for others, then commit. If your code has problems
-   (portability, triggers compiler bugs, unusual environment etc) they will be
-   reported and eventually fixed.
-</li><li>
-   Do not commit unrelated changes together, split them into self-contained
-   pieces. Also do not forget that if part B depends on part A, but A does not
-   depend on B, then A can and should be committed first and separate from B.
-   Keeping changes well split into self-contained parts makes reviewing and
-   understanding them on the commit log mailing list easier. This also helps
-   in case of debugging later on.
-   Also if you have doubts about splitting or not splitting, do not hesitate to
-   ask/discuss it on the developer mailing list.
-</li><li>
-   Do not change behavior of the programs (renaming options etc) or public
-   API or ABI without first discussing it on the ffmpeg-devel mailing list.
-   Do not remove functionality from the code. Just improve!
-
-<p>   Note: Redundant code can be removed.
-</p></li><li>
-   Do not commit changes to the build system (Makefiles, configure script)
-   which change behavior, defaults etc, without asking first. The same
-   applies to compiler warning fixes, trivial looking fixes and to code
-   maintained by other developers. We usually have a reason for doing things
-   the way we do. Send your changes as patches to the ffmpeg-devel mailing
-   list, and if the code maintainers say OK, you may commit. This does not
-   apply to files you wrote and/or maintain.
-</li><li>
-   We refuse source indentation and other cosmetic changes if they are mixed
-   with functional changes, such commits will be rejected and removed. Every
-   developer has his own indentation style, you should not change it. Of course
-   if you (re)write something, you can use your own style, even though we would
-   prefer if the indentation throughout FFmpeg was consistent (Many projects
-   force a given indentation style - we do not.). If you really need to make
-   indentation changes (try to avoid this), separate them strictly from real
-   changes.
-
-<p>   NOTE: If you had to put if(){ .. } over a large (&gt; 5 lines) chunk of code,
-   then either do NOT change the indentation of the inner part within (do not
-   move it to the right)! or do so in a separate commit
-</p></li><li>
-   Always fill out the commit log message. Describe in a few lines what you
-   changed and why. You can refer to mailing list postings if you fix a
-   particular bug. Comments such as &quot;fixed!&quot; or &quot;Changed it.&quot; are unacceptable.
-   Recommanded format:
-   area changed: Short 1 line description
-
-<p>   details describing what and why and giving references.
-</p></li><li>
-   Make sure the author of the commit is set correctly. (see git commit &ndash;author)
-   If you apply a patch, send an
-   answer to ffmpeg-devel (or wherever you got the patch from) saying that
-   you applied the patch.
-</li><li>
-   When applying patches that have been discussed (at length) on the mailing
-   list, reference the thread in the log message.
-</li><li>
-    Do NOT commit to code actively maintained by others without permission.
-    Send a patch to ffmpeg-devel instead. If no one answers within a reasonable
-    timeframe (12h for build failures and security fixes, 3 days small changes,
-    1 week for big patches) then commit your patch if you think it is OK.
-    Also note, the maintainer can simply ask for more time to review!
-</li><li>
-    Subscribe to the ffmpeg-cvslog mailing list. The diffs of all commits
-    are sent there and reviewed by all the other developers. Bugs and possible
-    improvements or general questions regarding commits are discussed there. We
-    expect you to react if problems with your code are uncovered.
-</li><li>
-    Update the documentation if you change behavior or add features. If you are
-    unsure how best to do this, send a patch to ffmpeg-devel, the documentation
-    maintainer(s) will review and commit your stuff.
-</li><li>
-    Try to keep important discussions and requests (also) on the public
-    developer mailing list, so that all developers can benefit from them.
-</li><li>
-    Never write to unallocated memory, never write over the end of arrays,
-    always check values read from some untrusted source before using them
-    as array index or other risky things.
-</li><li>
-    Remember to check if you need to bump versions for the specific libav
-    parts (libavutil, libavcodec, libavformat) you are changing. You need
-    to change the version integer.
-    Incrementing the first component means no backward compatibility to
-    previous versions (e.g. removal of a function from the public API).
-    Incrementing the second component means backward compatible change
-    (e.g. addition of a function to the public API or extension of an
-    existing data structure).
-    Incrementing the third component means a noteworthy binary compatible
-    change (e.g. encoder bug fix that matters for the decoder).
-</li><li>
-    Compiler warnings indicate potential bugs or code with bad style. If a type of
-    warning always points to correct and clean code, that warning should
-    be disabled, not the code changed.
-    Thus the remaining warnings can either be bugs or correct code.
-    If it is a bug, the bug has to be fixed. If it is not, the code should
-    be changed to not generate a warning unless that causes a slowdown
-    or obfuscates the code.
-</li><li>
-    If you add a new file, give it a proper license header. Do not copy and
-    paste it from a random place, use an existing file as template.
+Contributions should be licensed under the
+<a href="http://www.gnu.org/licenses/lgpl-2.1.html">LGPL 2.1</a>,
+including an &quot;or any later version&quot; clause, or, if you prefer
+a gift-style license, the
+<a href="http://www.isc.org/software/license/">ISC</a> or
+<a href="http://mit-license.org/">MIT</a> license.
+<a href="http://www.gnu.org/licenses/gpl-2.0.html">GPL 2</a> including
+an &quot;or any later version&quot; clause is also acceptable, but LGPL is
+preferred.
+If you add a new file, give it a proper license header. Do not copy and
+paste it from a random place, use an existing file as template.
+
+</li><li>
+You must not commit code which breaks FFmpeg! (Meaning unfinished but
+enabled code which breaks compilation or compiles but does not work or
+breaks the regression tests)
+You can commit unfinished stuff (for testing etc), but it must be disabled
+(#ifdef etc) by default so it does not interfere with other developers&rsquo;
+work.
+
+</li><li>
+The commit message should have a short first line in the form of
+a &lsquo;<samp>topic: short description</samp>&rsquo; as a header, separated by a newline
+from the body consisting of an explanation of why the change is necessary.
+If the commit fixes a known bug on the bug tracker, the commit message
+should include its bug ID. Referring to the issue on the bug tracker does
+not exempt you from writing an excerpt of the bug in the commit message.
+
+</li><li>
+You do not have to over-test things. If it works for you, and you think it
+should work for others, then commit. If your code has problems
+(portability, triggers compiler bugs, unusual environment etc) they will be
+reported and eventually fixed.
+
+</li><li>
+Do not commit unrelated changes together, split them into self-contained
+pieces. Also do not forget that if part B depends on part A, but A does not
+depend on B, then A can and should be committed first and separate from B.
+Keeping changes well split into self-contained parts makes reviewing and
+understanding them on the commit log mailing list easier. This also helps
+in case of debugging later on.
+Also if you have doubts about splitting or not splitting, do not hesitate to
+ask/discuss it on the developer mailing list.
+
+</li><li>
+Do not change behavior of the programs (renaming options etc) or public
+API or ABI without first discussing it on the ffmpeg-devel mailing list.
+Do not remove functionality from the code. Just improve!
+
+<p>Note: Redundant code can be removed.
+</p>
+</li><li>
+Do not commit changes to the build system (Makefiles, configure script)
+which change behavior, defaults etc, without asking first. The same
+applies to compiler warning fixes, trivial looking fixes and to code
+maintained by other developers. We usually have a reason for doing things
+the way we do. Send your changes as patches to the ffmpeg-devel mailing
+list, and if the code maintainers say OK, you may commit. This does not
+apply to files you wrote and/or maintain.
+
+</li><li>
+We refuse source indentation and other cosmetic changes if they are mixed
+with functional changes, such commits will be rejected and removed. Every
+developer has his own indentation style, you should not change it. Of course
+if you (re)write something, you can use your own style, even though we would
+prefer if the indentation throughout FFmpeg was consistent (Many projects
+force a given indentation style - we do not.). If you really need to make
+indentation changes (try to avoid this), separate them strictly from real
+changes.
+
+<p>NOTE: If you had to put if(){ .. } over a large (&gt; 5 lines) chunk of code,
+then either do NOT change the indentation of the inner part within (do not
+move it to the right)! or do so in a separate commit
+</p>
+</li><li>
+Always fill out the commit log message. Describe in a few lines what you
+changed and why. You can refer to mailing list postings if you fix a
+particular bug. Comments such as &quot;fixed!&quot; or &quot;Changed it.&quot; are unacceptable.
+Recommended format:
+area changed: Short 1 line description
+
+<p>details describing what and why and giving references.
+</p>
+</li><li>
+Make sure the author of the commit is set correctly. (see git commit &ndash;author)
+If you apply a patch, send an
+answer to ffmpeg-devel (or wherever you got the patch from) saying that
+you applied the patch.
+
+</li><li>
+When applying patches that have been discussed (at length) on the mailing
+list, reference the thread in the log message.
+
+</li><li>
+Do NOT commit to code actively maintained by others without permission.
+Send a patch to ffmpeg-devel instead. If no one answers within a reasonable
+timeframe (12h for build failures and security fixes, 3 days small changes,
+1 week for big patches) then commit your patch if you think it is OK.
+Also note, the maintainer can simply ask for more time to review!
+
+</li><li>
+Subscribe to the ffmpeg-cvslog mailing list. The diffs of all commits
+are sent there and reviewed by all the other developers. Bugs and possible
+improvements or general questions regarding commits are discussed there. We
+expect you to react if problems with your code are uncovered.
+
+</li><li>
+Update the documentation if you change behavior or add features. If you are
+unsure how best to do this, send a patch to ffmpeg-devel, the documentation
+maintainer(s) will review and commit your stuff.
+
+</li><li>
+Try to keep important discussions and requests (also) on the public
+developer mailing list, so that all developers can benefit from them.
+
+</li><li>
+Never write to unallocated memory, never write over the end of arrays,
+always check values read from some untrusted source before using them
+as array index or other risky things.
+
+</li><li>
+Remember to check if you need to bump versions for the specific libav*
+parts (libavutil, libavcodec, libavformat) you are changing. You need
+to change the version integer.
+Incrementing the first component means no backward compatibility to
+previous versions (e.g. removal of a function from the public API).
+Incrementing the second component means backward compatible change
+(e.g. addition of a function to the public API or extension of an
+existing data structure).
+Incrementing the third component means a noteworthy binary compatible
+change (e.g. encoder bug fix that matters for the decoder). The third
+component always starts at 100 to distinguish FFmpeg from Libav.
+
+</li><li>
+Compiler warnings indicate potential bugs or code with bad style. If a type of
+warning always points to correct and clean code, that warning should
+be disabled, not the code changed.
+Thus the remaining warnings can either be bugs or correct code.
+If it is a bug, the bug has to be fixed. If it is not, the code should
+be changed to not generate a warning unless that causes a slowdown
+or obfuscates the code.
+
+</li><li>
+Make sure that no parts of the codebase that you maintain are missing from the
+&lsquo;<tt>MAINTAINERS</tt>&rsquo; file. If something that you want to maintain is missing add it with
+your name after it.
+If at some point you no longer want to maintain some code, then please help
+finding a new maintainer and also don&rsquo;t forget updating the &lsquo;<tt>MAINTAINERS</tt>&rsquo; file.
 </li></ol>
 
 <p>We think our rules are not too hard. If you have comments, contact us.
 </p>
-<p>Note, these rules are mostly borrowed from the MPlayer project.
-</p>
 <p><a name="Submitting-patches"></a>
 </p><a name="Submitting-patches-1"></a>
-<h2 class="section"><a href="developer.html#toc-Submitting-patches-1">1.6 Submitting patches</a></h2>
+<h2 class="section"><a href="developer.html#toc-Submitting-patches-1">1.5 Submitting patches</a></h2>
 
 <p>First, read the <a href="#Coding-Rules">Coding Rules</a> above if you did not yet, in particular
 the rules regarding patch submission.
@@ -339,14 +484,9 @@ for us and greatly increases your chances of getting your patch applied.
 <p>Use the patcheck tool of FFmpeg to check your patch.
 The tool is located in the tools directory.
 </p>
-<p>Run the @ref{Regression Tests} before submitting a patch in order to verify
+<p>Run the <a href="#Regression-tests">Regression tests</a> before submitting a patch in order to verify
 it does not cause unexpected problems.
 </p>
-<p>Patches should be posted as base64 encoded attachments (or any other
-encoding which ensures that the patch will not be trashed during
-transmission) to the ffmpeg-devel mailing list, see
-<a href="http://lists.ffmpeg.org/mailman/listinfo/ffmpeg-devel">http://lists.ffmpeg.org/mailman/listinfo/ffmpeg-devel</a>
-</p>
 <p>It also helps quite a bit if you tell us what the patch does (for example
 &rsquo;replaces lrint by lrintf&rsquo;), and why (for example &rsquo;*BSD isn&rsquo;t C99 compliant
 and has no lrint()&rsquo;)
@@ -354,6 +494,13 @@ and has no lrint()&rsquo;)
 <p>Also please if you send several patches, send each patch as a separate mail,
 do not attach several unrelated patches to the same mail.
 </p>
+<p>Patches should be posted to the
+<a href="http://lists.ffmpeg.org/mailman/listinfo/ffmpeg-devel">ffmpeg-devel</a>
+mailing list. Use <code>git send-email</code> when possible since it will properly
+send patches without requiring extra care. If you cannot, then send patches
+as base64-encoded attachments, so your patch is not trashed during
+transmission.
+</p>
 <p>Your patch will be reviewed on the mailing list. You will likely be asked
 to make some changes and are expected to send in an improved version that
 incorporates the requests from the review. This process may go through
@@ -365,121 +512,170 @@ send a reminder by email. Your patch should eventually be dealt with.
 </p>
 
 <a name="New-codecs-or-formats-checklist"></a>
-<h2 class="section"><a href="developer.html#toc-New-codecs-or-formats-checklist">1.7 New codecs or formats checklist</a></h2>
+<h2 class="section"><a href="developer.html#toc-New-codecs-or-formats-checklist">1.6 New codecs or formats checklist</a></h2>
 
 <ol>
 <li>
-    Did you use av_cold for codec initialization and close functions?
+Did you use av_cold for codec initialization and close functions?
+
 </li><li>
-    Did you add a long_name under NULL_IF_CONFIG_SMALL to the AVCodec or
-    AVInputFormat/AVOutputFormat struct?
+Did you add a long_name under NULL_IF_CONFIG_SMALL to the AVCodec or
+AVInputFormat/AVOutputFormat struct?
+
 </li><li>
-    Did you bump the minor version number (and reset the micro version
-    number) in &lsquo;<tt>avcodec.h</tt>&rsquo; or &lsquo;<tt>avformat.h</tt>&rsquo;?
+Did you bump the minor version number (and reset the micro version
+number) in &lsquo;<tt>libavcodec/version.h</tt>&rsquo; or &lsquo;<tt>libavformat/version.h</tt>&rsquo;?
+
 </li><li>
-    Did you register it in &lsquo;<tt>allcodecs.c</tt>&rsquo; or &lsquo;<tt>allformats.c</tt>&rsquo;?
+Did you register it in &lsquo;<tt>allcodecs.c</tt>&rsquo; or &lsquo;<tt>allformats.c</tt>&rsquo;?
+
 </li><li>
-    Did you add the CodecID to &lsquo;<tt>avcodec.h</tt>&rsquo;?
+Did you add the AVCodecID to &lsquo;<tt>avcodec.h</tt>&rsquo;?
+When adding new codec IDs, also add an entry to the codec descriptor
+list in &lsquo;<tt>libavcodec/codec_desc.c</tt>&rsquo;.
+
 </li><li>
-    If it has a fourcc, did you add it to &lsquo;<tt>libavformat/riff.c</tt>&rsquo;,
-    even if it is only a decoder?
+If it has a FourCC, did you add it to &lsquo;<tt>libavformat/riff.c</tt>&rsquo;,
+even if it is only a decoder?
+
 </li><li>
-    Did you add a rule to compile the appropriate files in the Makefile?
-    Remember to do this even if you&rsquo;re just adding a format to a file that is
-    already being compiled by some other rule, like a raw demuxer.
+Did you add a rule to compile the appropriate files in the Makefile?
+Remember to do this even if you&rsquo;re just adding a format to a file that is
+already being compiled by some other rule, like a raw demuxer.
+
 </li><li>
-    Did you add an entry to the table of supported formats or codecs in
-    &lsquo;<tt>doc/general.texi</tt>&rsquo;?
+Did you add an entry to the table of supported formats or codecs in
+&lsquo;<tt>doc/general.texi</tt>&rsquo;?
+
 </li><li>
-    Did you add an entry in the Changelog?
+Did you add an entry in the Changelog?
+
 </li><li>
-    If it depends on a parser or a library, did you add that dependency in
-    configure?
+If it depends on a parser or a library, did you add that dependency in
+configure?
+
 </li><li>
-    Did you <code>git add</code> the appropriate files before committing?
+Did you <code>git add</code> the appropriate files before committing?
+
 </li><li>
-    Did you make sure it compiles standalone, i.e. with
-    <code>configure --disable-everything --enable-decoder=foo</code>
-    (or <code>--enable-demuxer</code> or whatever your component is)?
+Did you make sure it compiles standalone, i.e. with
+<code>configure --disable-everything --enable-decoder=foo</code>
+(or <code>--enable-demuxer</code> or whatever your component is)?
 </li></ol>
 
 
 <a name="patch-submission-checklist"></a>
-<h2 class="section"><a href="developer.html#toc-patch-submission-checklist">1.8 patch submission checklist</a></h2>
+<h2 class="section"><a href="developer.html#toc-patch-submission-checklist">1.7 patch submission checklist</a></h2>
 
 <ol>
 <li>
-    Does <code>make fate</code> pass with the patch applied?
+Does <code>make fate</code> pass with the patch applied?
+
 </li><li>
-    Was the patch generated with git format-patch or send-email?
+Was the patch generated with git format-patch or send-email?
+
 </li><li>
-    Did you sign off your patch? (git commit -s)
-    See <a href="http://kerneltrap.org/files/Jeremy/DCO.txt">http://kerneltrap.org/files/Jeremy/DCO.txt</a> for the meaning
-    of sign off.
+Did you sign off your patch? (git commit -s)
+See <a href="http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob_plain;f=Documentation/SubmittingPatches">http://git.kernel.org/?p=linux/kernel/git/torvalds/linux.git;a=blob_plain;f=Documentation/SubmittingPatches</a> for the meaning
+of sign off.
+
 </li><li>
-    Did you provide a clear git commit log message?
+Did you provide a clear git commit log message?
+
 </li><li>
-    Is the patch against latest FFmpeg git master branch?
+Is the patch against latest FFmpeg git master branch?
+
 </li><li>
-    Are you subscribed to ffmpeg-devel?
-    (the list is subscribers only due to spam)
+Are you subscribed to ffmpeg-devel?
+(the list is subscribers only due to spam)
+
 </li><li>
-    Have you checked that the changes are minimal, so that the same cannot be
-    achieved with a smaller patch and/or simpler final code?
+Have you checked that the changes are minimal, so that the same cannot be
+achieved with a smaller patch and/or simpler final code?
+
 </li><li>
-    If the change is to speed critical code, did you benchmark it?
+If the change is to speed critical code, did you benchmark it?
+
 </li><li>
-    If you did any benchmarks, did you provide them in the mail?
+If you did any benchmarks, did you provide them in the mail?
+
 </li><li>
-    Have you checked that the patch does not introduce buffer overflows or
-    other security issues?
+Have you checked that the patch does not introduce buffer overflows or
+other security issues?
+
 </li><li>
-    Did you test your decoder or demuxer against damaged data? If no, see
-    tools/trasher and the noise bitstream filter. Your decoder or demuxer
-    should not crash or end in a (near) infinite loop when fed damaged data.
+Did you test your decoder or demuxer against damaged data? If no, see
+tools/trasher, the noise bitstream filter, and
+<a href="http://caca.zoy.org/wiki/zzuf">zzuf</a>. Your decoder or demuxer
+should not crash, end in a (near) infinite loop, or allocate ridiculous
+amounts of memory when fed damaged data.
+
 </li><li>
-    Does the patch not mix functional and cosmetic changes?
+Does the patch not mix functional and cosmetic changes?
+
 </li><li>
-    Did you add tabs or trailing whitespace to the code? Both are forbidden.
+Did you add tabs or trailing whitespace to the code? Both are forbidden.
+
 </li><li>
-    Is the patch attached to the email you send?
+Is the patch attached to the email you send?
+
 </li><li>
-    Is the mime type of the patch correct? It should be text/x-diff or
-    text/x-patch or at least text/plain and not application/octet-stream.
+Is the mime type of the patch correct? It should be text/x-diff or
+text/x-patch or at least text/plain and not application/octet-stream.
+
 </li><li>
-    If the patch fixes a bug, did you provide a verbose analysis of the bug?
+If the patch fixes a bug, did you provide a verbose analysis of the bug?
+
 </li><li>
-    If the patch fixes a bug, did you provide enough information, including
-    a sample, so the bug can be reproduced and the fix can be verified?
-    Note please do not attach samples &gt;100k to mails but rather provide a
-    URL, you can upload to ftp://upload.ffmpeg.org
+If the patch fixes a bug, did you provide enough information, including
+a sample, so the bug can be reproduced and the fix can be verified?
+Note please do not attach samples &gt;100k to mails but rather provide a
+URL, you can upload to ftp://upload.ffmpeg.org
+
 </li><li>
-    Did you provide a verbose summary about what the patch does change?
+Did you provide a verbose summary about what the patch does change?
+
 </li><li>
-    Did you provide a verbose explanation why it changes things like it does?
+Did you provide a verbose explanation why it changes things like it does?
+
 </li><li>
-    Did you provide a verbose summary of the user visible advantages and
-    disadvantages if the patch is applied?
+Did you provide a verbose summary of the user visible advantages and
+disadvantages if the patch is applied?
+
 </li><li>
-    Did you provide an example so we can verify the new feature added by the
-    patch easily?
+Did you provide an example so we can verify the new feature added by the
+patch easily?
+
 </li><li>
-    If you added a new file, did you insert a license header? It should be
-    taken from FFmpeg, not randomly copied and pasted from somewhere else.
+If you added a new file, did you insert a license header? It should be
+taken from FFmpeg, not randomly copied and pasted from somewhere else.
+
 </li><li>
-    You should maintain alphabetical order in alphabetically ordered lists as
-    long as doing so does not break API/ABI compatibility.
+You should maintain alphabetical order in alphabetically ordered lists as
+long as doing so does not break API/ABI compatibility.
+
 </li><li>
-    Lines with similar content should be aligned vertically when doing so
-    improves readability.
+Lines with similar content should be aligned vertically when doing so
+improves readability.
+
 </li><li>
-    Consider to add a regression test for your code.
+Consider to add a regression test for your code.
+
+</li><li>
+If you added YASM code please check that things still work with &ndash;disable-yasm
+
 </li><li>
-    If you added YASM code please check that things still work with &ndash;disable-yasm
+Make sure you check the return values of function and return appropriate
+error codes. Especially memory allocation functions like <code>av_malloc()</code>
+are notoriously left unchecked, which is a serious problem.
+
+</li><li>
+Test your code with valgrind and or Address Sanitizer to ensure it&rsquo;s free
+of leaks, out of array accesses, etc.
 </li></ol>
 
 <a name="Patch-review-process"></a>
-<h2 class="section"><a href="developer.html#toc-Patch-review-process">1.9 Patch review process</a></h2>
+<h2 class="section"><a href="developer.html#toc-Patch-review-process">1.8 Patch review process</a></h2>
 
 <p>All patches posted to ffmpeg-devel will be reviewed, unless they contain a
 clear note that the patch is not for the git master branch.
@@ -502,28 +698,180 @@ where its best maintained.
 </p>
 <p>When resubmitting patches, please do not make any significant changes
 not related to the comments received during review. Such patches will
-be rejected. Instead, submit  significant changes or new features as
+be rejected. Instead, submit significant changes or new features as
 separate patches.
 </p>
-<a name="Regression-tests"></a>
-<h2 class="section"><a href="developer.html#toc-Regression-tests">1.10 Regression tests</a></h2>
+<p><a name="Regression-tests"></a>
+</p><a name="Regression-tests-1"></a>
+<h2 class="section"><a href="developer.html#toc-Regression-tests-1">1.9 Regression tests</a></h2>
 
 <p>Before submitting a patch (or committing to the repository), you should at least
 test that you did not break anything.
 </p>
-<p>Running &rsquo;make fate&rsquo; accomplishes this, please see &lsquo;<tt>doc/fate.txt</tt>&rsquo; for details.
+<p>Running &rsquo;make fate&rsquo; accomplishes this, please see <a href="fate.html">fate.html</a> for details.
 </p>
 <p>[Of course, some patches may change the results of the regression tests. In
 this case, the reference results of the regression tests shall be modified
 accordingly].
 </p>
-<hr size="1">
-<p>
- <font size="-1">
-  This document was generated by <em>Kyle Schwarz</em> on <em>September 2, 2011</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.
- </font>
- <br>
+<a name="Adding-files-to-the-fate_002dsuite-dataset"></a>
+<h3 class="subsection"><a href="developer.html#toc-Adding-files-to-the-fate_002dsuite-dataset">1.9.1 Adding files to the fate-suite dataset</a></h3>
+
+<p>When there is no muxer or encoder available to generate test media for a
+specific test then the media has to be inlcuded in the fate-suite.
+First please make sure that the sample file is as small as possible to test the
+respective decoder or demuxer sufficiently. Large files increase network
+bandwidth and disk space requirements.
+Once you have a working fate test and fate sample, provide in the commit
+message or introductionary message for the patch series that you post to
+the ffmpeg-devel mailing list, a direct link to download the sample media.
+</p>
+
+<a name="Visualizing-Test-Coverage"></a>
+<h3 class="subsection"><a href="developer.html#toc-Visualizing-Test-Coverage">1.9.2 Visualizing Test Coverage</a></h3>
 
+<p>The FFmpeg build system allows visualizing the test coverage in an easy
+manner with the coverage tools <code>gcov</code>/<code>lcov</code>.  This involves
+the following steps:
 </p>
-</body>
-</html>
+<ol>
+<li>
+    Configure to compile with instrumentation enabled:
+    <code>configure --toolchain=gcov</code>.
+
+</li><li>
+    Run your test case, either manually or via FATE. This can be either
+    the full FATE regression suite, or any arbitrary invocation of any
+    front-end tool provided by FFmpeg, in any combination.
+
+</li><li>
+    Run <code>make lcov</code> to generate coverage data in HTML format.
+
+</li><li>
+    View <code>lcov/index.html</code> in your preferred HTML viewer.
+</li></ol>
+
+<p>You can use the command <code>make lcov-reset</code> to reset the coverage
+measurements. You will need to rerun <code>make lcov</code> after running a
+new test.
+</p>
+<a name="Using-Valgrind"></a>
+<h3 class="subsection"><a href="developer.html#toc-Using-Valgrind">1.9.3 Using Valgrind</a></h3>
+
+<p>The configure script provides a shortcut for using valgrind to spot bugs
+related to memory handling. Just add the option
+<code>--toolchain=valgrind-memcheck</code> or <code>--toolchain=valgrind-massif</code>
+to your configure line, and reasonable defaults will be set for running
+FATE under the supervision of either the <strong>memcheck</strong> or the
+<strong>massif</strong> tool of the valgrind suite.
+</p>
+<p>In case you need finer control over how valgrind is invoked, use the
+<code>--target-exec='valgrind &lt;your_custom_valgrind_options&gt;</code> option in
+your configure line instead.
+</p>
+<p><a name="Release-process"></a>
+</p><a name="Release-process-1"></a>
+<h2 class="section"><a href="developer.html#toc-Release-process-1">1.10 Release process</a></h2>
+
+<p>FFmpeg maintains a set of <strong>release branches</strong>, which are the
+recommended deliverable for system integrators and distributors (such as
+Linux distributions, etc.). At regular times, a <strong>release
+manager</strong> prepares, tests and publishes tarballs on the
+<a href="http://ffmpeg.org">http://ffmpeg.org</a> website.
+</p>
+<p>There are two kinds of releases:
+</p>
+<ol>
+<li>
+<strong>Major releases</strong> always include the latest and greatest
+features and functionality.
+
+</li><li>
+<strong>Point releases</strong> are cut from <strong>release</strong> branches,
+which are named <code>release/X</code>, with <code>X</code> being the release
+version number.
+</li></ol>
+
+<p>Note that we promise to our users that shared libraries from any FFmpeg
+release never break programs that have been <strong>compiled</strong> against
+previous versions of <strong>the same release series</strong> in any case!
+</p>
+<p>However, from time to time, we do make API changes that require adaptations
+in applications. Such changes are only allowed in (new) major releases and
+require further steps such as bumping library version numbers and/or
+adjustments to the symbol versioning file. Please discuss such changes
+on the <strong>ffmpeg-devel</strong> mailing list in time to allow forward planning.
+</p>
+<p><a name="Criteria-for-Point-Releases"></a>
+</p><a name="Criteria-for-Point-Releases-1"></a>
+<h3 class="subsection"><a href="developer.html#toc-Criteria-for-Point-Releases-1">1.10.1 Criteria for Point Releases</a></h3>
+
+<p>Changes that match the following criteria are valid candidates for
+inclusion into a point release:
+</p>
+<ol>
+<li>
+Fixes a security issue, preferably identified by a <strong>CVE
+number</strong> issued by <a href="http://cve.mitre.org/">http://cve.mitre.org/</a>.
+
+</li><li>
+Fixes a documented bug in <a href="https://trac.ffmpeg.org">https://trac.ffmpeg.org</a>.
+
+</li><li>
+Improves the included documentation.
+
+</li><li>
+Retains both source code and binary compatibility with previous
+point releases of the same release branch.
+</li></ol>
+
+<p>The order for checking the rules is (1 OR 2 OR 3) AND 4.
+</p>
+
+<a name="Release-Checklist"></a>
+<h3 class="subsection"><a href="developer.html#toc-Release-Checklist">1.10.2 Release Checklist</a></h3>
+
+<p>The release process involves the following steps:
+</p>
+<ol>
+<li>
+Ensure that the &lsquo;<tt>RELEASE</tt>&rsquo; file contains the version number for
+the upcoming release.
+
+</li><li>
+Add the release at <a href="https://trac.ffmpeg.org/admin/ticket/versions">https://trac.ffmpeg.org/admin/ticket/versions</a>.
+
+</li><li>
+Announce the intent to do a release to the mailing list.
+
+</li><li>
+Make sure all relevant security fixes have been backported. See
+<a href="https://ffmpeg.org/security.html">https://ffmpeg.org/security.html</a>.
+
+</li><li>
+Ensure that the FATE regression suite still passes in the release
+branch on at least <strong>i386</strong> and <strong>amd64</strong>
+(cf. <a href="#Regression-tests">Regression tests</a>).
+
+</li><li>
+Prepare the release tarballs in <code>bz2</code> and <code>gz</code> formats, and
+supplementing files that contain <code>gpg</code> signatures
+
+</li><li>
+Publish the tarballs at <a href="http://ffmpeg.org/releases">http://ffmpeg.org/releases</a>. Create and
+push an annotated tag in the form <code>nX</code>, with <code>X</code>
+containing the version number.
+
+</li><li>
+Propose and send a patch to the <strong>ffmpeg-devel</strong> mailing list
+with a news entry for the website.
+
+</li><li>
+Publish the news entry.
+
+</li><li>
+Send announcement to the mailing list.
+</li></ol>
+
+<footer class="footer pagination-right">
+<span class="label label-info">This document was generated by <em>Kyle Schwarz</em> on <em>December 14, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies/ffmpeg/doc/examples/Makefile b/dependencies/ffmpeg/doc/examples/Makefile
new file mode 100644 (file)
index 0000000..f085532
--- /dev/null
@@ -0,0 +1,39 @@
+# use pkg-config for getting CFLAGS and LDLIBS
+FFMPEG_LIBS=    libavdevice                        \
+                libavformat                        \
+                libavfilter                        \
+                libavcodec                         \
+                libswresample                      \
+                libswscale                         \
+                libavutil                          \
+
+CFLAGS += -Wall -g
+CFLAGS := $(shell pkg-config --cflags $(FFMPEG_LIBS)) $(CFLAGS)
+LDLIBS := $(shell pkg-config --libs $(FFMPEG_LIBS)) $(LDLIBS)
+
+EXAMPLES=       decoding_encoding                  \
+                demuxing_decoding                  \
+                filtering_video                    \
+                filtering_audio                    \
+                metadata                           \
+                muxing                             \
+                resampling_audio                   \
+                scaling_video                      \
+                transcode_aac                      \
+
+OBJS=$(addsuffix .o,$(EXAMPLES))
+
+# the following examples make explicit use of the math library
+decoding_encoding: LDLIBS += -lm
+muxing:            LDLIBS += -lm
+resampling_audio:  LDLIBS += -lm
+
+.phony: all clean-test clean
+
+all: $(OBJS) $(EXAMPLES)
+
+clean-test:
+       $(RM) test*.pgm test.h264 test.mp2 test.sw test.mpg
+
+clean: clean-test
+       $(RM) $(EXAMPLES) $(OBJS)
diff --git a/dependencies/ffmpeg/doc/examples/README b/dependencies/ffmpeg/doc/examples/README
new file mode 100644 (file)
index 0000000..c1ce619
--- /dev/null
@@ -0,0 +1,23 @@
+FFmpeg examples README
+----------------------
+
+Both following use cases rely on pkg-config and make, thus make sure
+that you have them installed and working on your system.
+
+
+Method 1: build the installed examples in a generic read/write user directory
+
+Copy to a read/write user directory and just use "make", it will link
+to the libraries on your system, assuming the PKG_CONFIG_PATH is
+correctly configured.
+
+Method 2: build the examples in-tree
+
+Assuming you are in the source FFmpeg checkout directory, you need to build
+FFmpeg (no need to make install in any prefix). Then just run "make examples".
+This will build the examples using the FFmpeg build system. You can clean those
+examples using "make examplesclean"
+
+If you want to try the dedicated Makefile examples (to emulate the first
+method), go into doc/examples and run a command such as
+PKG_CONFIG_PATH=pc-uninstalled make.
diff --git a/dependencies/ffmpeg/doc/examples/decoding_encoding.c b/dependencies/ffmpeg/doc/examples/decoding_encoding.c
new file mode 100644 (file)
index 0000000..4d2813b
--- /dev/null
@@ -0,0 +1,653 @@
+/*
+ * Copyright (c) 2001 Fabrice Bellard
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+/**
+ * @file
+ * libavcodec API use example.
+ *
+ * Note that libavcodec only handles codecs (mpeg, mpeg4, etc...),
+ * not file formats (avi, vob, mp4, mov, mkv, mxf, flv, mpegts, mpegps, etc...). See library 'libavformat' for the
+ * format handling
+ * @example doc/examples/decoding_encoding.c
+ */
+
+#include <math.h>
+
+#include <libavutil/opt.h>
+#include <libavcodec/avcodec.h>
+#include <libavutil/channel_layout.h>
+#include <libavutil/common.h>
+#include <libavutil/imgutils.h>
+#include <libavutil/mathematics.h>
+#include <libavutil/samplefmt.h>
+
+#define INBUF_SIZE 4096
+#define AUDIO_INBUF_SIZE 20480
+#define AUDIO_REFILL_THRESH 4096
+
+/* check that a given sample format is supported by the encoder */
+static int check_sample_fmt(AVCodec *codec, enum AVSampleFormat sample_fmt)
+{
+    const enum AVSampleFormat *p = codec->sample_fmts;
+
+    while (*p != AV_SAMPLE_FMT_NONE) {
+        if (*p == sample_fmt)
+            return 1;
+        p++;
+    }
+    return 0;
+}
+
+/* just pick the highest supported samplerate */
+static int select_sample_rate(AVCodec *codec)
+{
+    const int *p;
+    int best_samplerate = 0;
+
+    if (!codec->supported_samplerates)
+        return 44100;
+
+    p = codec->supported_samplerates;
+    while (*p) {
+        best_samplerate = FFMAX(*p, best_samplerate);
+        p++;
+    }
+    return best_samplerate;
+}
+
+/* select layout with the highest channel count */
+static int select_channel_layout(AVCodec *codec)
+{
+    const uint64_t *p;
+    uint64_t best_ch_layout = 0;
+    int best_nb_channels   = 0;
+
+    if (!codec->channel_layouts)
+        return AV_CH_LAYOUT_STEREO;
+
+    p = codec->channel_layouts;
+    while (*p) {
+        int nb_channels = av_get_channel_layout_nb_channels(*p);
+
+        if (nb_channels > best_nb_channels) {
+            best_ch_layout    = *p;
+            best_nb_channels = nb_channels;
+        }
+        p++;
+    }
+    return best_ch_layout;
+}
+
+/*
+ * Audio encoding example
+ */
+static void audio_encode_example(const char *filename)
+{
+    AVCodec *codec;
+    AVCodecContext *c= NULL;
+    AVFrame *frame;
+    AVPacket pkt;
+    int i, j, k, ret, got_output;
+    int buffer_size;
+    FILE *f;
+    uint16_t *samples;
+    float t, tincr;
+
+    printf("Encode audio file %s\n", filename);
+
+    /* find the MP2 encoder */
+    codec = avcodec_find_encoder(AV_CODEC_ID_MP2);
+    if (!codec) {
+        fprintf(stderr, "Codec not found\n");
+        exit(1);
+    }
+
+    c = avcodec_alloc_context3(codec);
+    if (!c) {
+        fprintf(stderr, "Could not allocate audio codec context\n");
+        exit(1);
+    }
+
+    /* put sample parameters */
+    c->bit_rate = 64000;
+
+    /* check that the encoder supports s16 pcm input */
+    c->sample_fmt = AV_SAMPLE_FMT_S16;
+    if (!check_sample_fmt(codec, c->sample_fmt)) {
+        fprintf(stderr, "Encoder does not support sample format %s",
+                av_get_sample_fmt_name(c->sample_fmt));
+        exit(1);
+    }
+
+    /* select other audio parameters supported by the encoder */
+    c->sample_rate    = select_sample_rate(codec);
+    c->channel_layout = select_channel_layout(codec);
+    c->channels       = av_get_channel_layout_nb_channels(c->channel_layout);
+
+    /* open it */
+    if (avcodec_open2(c, codec, NULL) < 0) {
+        fprintf(stderr, "Could not open codec\n");
+        exit(1);
+    }
+
+    f = fopen(filename, "wb");
+    if (!f) {
+        fprintf(stderr, "Could not open %s\n", filename);
+        exit(1);
+    }
+
+    /* frame containing input raw audio */
+    frame = av_frame_alloc();
+    if (!frame) {
+        fprintf(stderr, "Could not allocate audio frame\n");
+        exit(1);
+    }
+
+    frame->nb_samples     = c->frame_size;
+    frame->format         = c->sample_fmt;
+    frame->channel_layout = c->channel_layout;
+
+    /* the codec gives us the frame size, in samples,
+     * we calculate the size of the samples buffer in bytes */
+    buffer_size = av_samples_get_buffer_size(NULL, c->channels, c->frame_size,
+                                             c->sample_fmt, 0);
+    if (!buffer_size) {
+        fprintf(stderr, "Could not get sample buffer size\n");
+        exit(1);
+    }
+    samples = av_malloc(buffer_size);
+    if (!samples) {
+        fprintf(stderr, "Could not allocate %d bytes for samples buffer\n",
+                buffer_size);
+        exit(1);
+    }
+    /* setup the data pointers in the AVFrame */
+    ret = avcodec_fill_audio_frame(frame, c->channels, c->sample_fmt,
+                                   (const uint8_t*)samples, buffer_size, 0);
+    if (ret < 0) {
+        fprintf(stderr, "Could not setup audio frame\n");
+        exit(1);
+    }
+
+    /* encode a single tone sound */
+    t = 0;
+    tincr = 2 * M_PI * 440.0 / c->sample_rate;
+    for(i=0;i<200;i++) {
+        av_init_packet(&pkt);
+        pkt.data = NULL; // packet data will be allocated by the encoder
+        pkt.size = 0;
+
+        for (j = 0; j < c->frame_size; j++) {
+            samples[2*j] = (int)(sin(t) * 10000);
+
+            for (k = 1; k < c->channels; k++)
+                samples[2*j + k] = samples[2*j];
+            t += tincr;
+        }
+        /* encode the samples */
+        ret = avcodec_encode_audio2(c, &pkt, frame, &got_output);
+        if (ret < 0) {
+            fprintf(stderr, "Error encoding audio frame\n");
+            exit(1);
+        }
+        if (got_output) {
+            fwrite(pkt.data, 1, pkt.size, f);
+            av_free_packet(&pkt);
+        }
+    }
+
+    /* get the delayed frames */
+    for (got_output = 1; got_output; i++) {
+        ret = avcodec_encode_audio2(c, &pkt, NULL, &got_output);
+        if (ret < 0) {
+            fprintf(stderr, "Error encoding frame\n");
+            exit(1);
+        }
+
+        if (got_output) {
+            fwrite(pkt.data, 1, pkt.size, f);
+            av_free_packet(&pkt);
+        }
+    }
+    fclose(f);
+
+    av_freep(&samples);
+    av_frame_free(&frame);
+    avcodec_close(c);
+    av_free(c);
+}
+
+/*
+ * Audio decoding.
+ */
+static void audio_decode_example(const char *outfilename, const char *filename)
+{
+    AVCodec *codec;
+    AVCodecContext *c= NULL;
+    int len;
+    FILE *f, *outfile;
+    uint8_t inbuf[AUDIO_INBUF_SIZE + FF_INPUT_BUFFER_PADDING_SIZE];
+    AVPacket avpkt;
+    AVFrame *decoded_frame = NULL;
+
+    av_init_packet(&avpkt);
+
+    printf("Decode audio file %s to %s\n", filename, outfilename);
+
+    /* find the mpeg audio decoder */
+    codec = avcodec_find_decoder(AV_CODEC_ID_MP2);
+    if (!codec) {
+        fprintf(stderr, "Codec not found\n");
+        exit(1);
+    }
+
+    c = avcodec_alloc_context3(codec);
+    if (!c) {
+        fprintf(stderr, "Could not allocate audio codec context\n");
+        exit(1);
+    }
+
+    /* open it */
+    if (avcodec_open2(c, codec, NULL) < 0) {
+        fprintf(stderr, "Could not open codec\n");
+        exit(1);
+    }
+
+    f = fopen(filename, "rb");
+    if (!f) {
+        fprintf(stderr, "Could not open %s\n", filename);
+        exit(1);
+    }
+    outfile = fopen(outfilename, "wb");
+    if (!outfile) {
+        av_free(c);
+        exit(1);
+    }
+
+    /* decode until eof */
+    avpkt.data = inbuf;
+    avpkt.size = fread(inbuf, 1, AUDIO_INBUF_SIZE, f);
+
+    while (avpkt.size > 0) {
+        int got_frame = 0;
+
+        if (!decoded_frame) {
+            if (!(decoded_frame = av_frame_alloc())) {
+                fprintf(stderr, "Could not allocate audio frame\n");
+                exit(1);
+            }
+        }
+
+        len = avcodec_decode_audio4(c, decoded_frame, &got_frame, &avpkt);
+        if (len < 0) {
+            fprintf(stderr, "Error while decoding\n");
+            exit(1);
+        }
+        if (got_frame) {
+            /* if a frame has been decoded, output it */
+            int data_size = av_samples_get_buffer_size(NULL, c->channels,
+                                                       decoded_frame->nb_samples,
+                                                       c->sample_fmt, 1);
+            fwrite(decoded_frame->data[0], 1, data_size, outfile);
+        }
+        avpkt.size -= len;
+        avpkt.data += len;
+        avpkt.dts =
+        avpkt.pts = AV_NOPTS_VALUE;
+        if (avpkt.size < AUDIO_REFILL_THRESH) {
+            /* Refill the input buffer, to avoid trying to decode
+             * incomplete frames. Instead of this, one could also use
+             * a parser, or use a proper container format through
+             * libavformat. */
+            memmove(inbuf, avpkt.data, avpkt.size);
+            avpkt.data = inbuf;
+            len = fread(avpkt.data + avpkt.size, 1,
+                        AUDIO_INBUF_SIZE - avpkt.size, f);
+            if (len > 0)
+                avpkt.size += len;
+        }
+    }
+
+    fclose(outfile);
+    fclose(f);
+
+    avcodec_close(c);
+    av_free(c);
+    av_frame_free(&decoded_frame);
+}
+
+/*
+ * Video encoding example
+ */
+static void video_encode_example(const char *filename, int codec_id)
+{
+    AVCodec *codec;
+    AVCodecContext *c= NULL;
+    int i, ret, x, y, got_output;
+    FILE *f;
+    AVFrame *frame;
+    AVPacket pkt;
+    uint8_t endcode[] = { 0, 0, 1, 0xb7 };
+
+    printf("Encode video file %s\n", filename);
+
+    /* find the mpeg1 video encoder */
+    codec = avcodec_find_encoder(codec_id);
+    if (!codec) {
+        fprintf(stderr, "Codec not found\n");
+        exit(1);
+    }
+
+    c = avcodec_alloc_context3(codec);
+    if (!c) {
+        fprintf(stderr, "Could not allocate video codec context\n");
+        exit(1);
+    }
+
+    /* put sample parameters */
+    c->bit_rate = 400000;
+    /* resolution must be a multiple of two */
+    c->width = 352;
+    c->height = 288;
+    /* frames per second */
+    c->time_base= (AVRational){1,25};
+    c->gop_size = 10; /* emit one intra frame every ten frames */
+    c->max_b_frames=1;
+    c->pix_fmt = AV_PIX_FMT_YUV420P;
+
+    if(codec_id == AV_CODEC_ID_H264)
+        av_opt_set(c->priv_data, "preset", "slow", 0);
+
+    /* open it */
+    if (avcodec_open2(c, codec, NULL) < 0) {
+        fprintf(stderr, "Could not open codec\n");
+        exit(1);
+    }
+
+    f = fopen(filename, "wb");
+    if (!f) {
+        fprintf(stderr, "Could not open %s\n", filename);
+        exit(1);
+    }
+
+    frame = av_frame_alloc();
+    if (!frame) {
+        fprintf(stderr, "Could not allocate video frame\n");
+        exit(1);
+    }
+    frame->format = c->pix_fmt;
+    frame->width  = c->width;
+    frame->height = c->height;
+
+    /* the image can be allocated by any means and av_image_alloc() is
+     * just the most convenient way if av_malloc() is to be used */
+    ret = av_image_alloc(frame->data, frame->linesize, c->width, c->height,
+                         c->pix_fmt, 32);
+    if (ret < 0) {
+        fprintf(stderr, "Could not allocate raw picture buffer\n");
+        exit(1);
+    }
+
+    /* encode 1 second of video */
+    for(i=0;i<25;i++) {
+        av_init_packet(&pkt);
+        pkt.data = NULL;    // packet data will be allocated by the encoder
+        pkt.size = 0;
+
+        fflush(stdout);
+        /* prepare a dummy image */
+        /* Y */
+        for(y=0;y<c->height;y++) {
+            for(x=0;x<c->width;x++) {
+                frame->data[0][y * frame->linesize[0] + x] = x + y + i * 3;
+            }
+        }
+
+        /* Cb and Cr */
+        for(y=0;y<c->height/2;y++) {
+            for(x=0;x<c->width/2;x++) {
+                frame->data[1][y * frame->linesize[1] + x] = 128 + y + i * 2;
+                frame->data[2][y * frame->linesize[2] + x] = 64 + x + i * 5;
+            }
+        }
+
+        frame->pts = i;
+
+        /* encode the image */
+        ret = avcodec_encode_video2(c, &pkt, frame, &got_output);
+        if (ret < 0) {
+            fprintf(stderr, "Error encoding frame\n");
+            exit(1);
+        }
+
+        if (got_output) {
+            printf("Write frame %3d (size=%5d)\n", i, pkt.size);
+            fwrite(pkt.data, 1, pkt.size, f);
+            av_free_packet(&pkt);
+        }
+    }
+
+    /* get the delayed frames */
+    for (got_output = 1; got_output; i++) {
+        fflush(stdout);
+
+        ret = avcodec_encode_video2(c, &pkt, NULL, &got_output);
+        if (ret < 0) {
+            fprintf(stderr, "Error encoding frame\n");
+            exit(1);
+        }
+
+        if (got_output) {
+            printf("Write frame %3d (size=%5d)\n", i, pkt.size);
+            fwrite(pkt.data, 1, pkt.size, f);
+            av_free_packet(&pkt);
+        }
+    }
+
+    /* add sequence end code to have a real mpeg file */
+    fwrite(endcode, 1, sizeof(endcode), f);
+    fclose(f);
+
+    avcodec_close(c);
+    av_free(c);
+    av_freep(&frame->data[0]);
+    av_frame_free(&frame);
+    printf("\n");
+}
+
+/*
+ * Video decoding example
+ */
+
+static void pgm_save(unsigned char *buf, int wrap, int xsize, int ysize,
+                     char *filename)
+{
+    FILE *f;
+    int i;
+
+    f=fopen(filename,"w");
+    fprintf(f,"P5\n%d %d\n%d\n",xsize,ysize,255);
+    for(i=0;i<ysize;i++)
+        fwrite(buf + i * wrap,1,xsize,f);
+    fclose(f);
+}
+
+static int decode_write_frame(const char *outfilename, AVCodecContext *avctx,
+                              AVFrame *frame, int *frame_count, AVPacket *pkt, int last)
+{
+    int len, got_frame;
+    char buf[1024];
+
+    len = avcodec_decode_video2(avctx, frame, &got_frame, pkt);
+    if (len < 0) {
+        fprintf(stderr, "Error while decoding frame %d\n", *frame_count);
+        return len;
+    }
+    if (got_frame) {
+        printf("Saving %sframe %3d\n", last ? "last " : "", *frame_count);
+        fflush(stdout);
+
+        /* the picture is allocated by the decoder, no need to free it */
+        snprintf(buf, sizeof(buf), outfilename, *frame_count);
+        pgm_save(frame->data[0], frame->linesize[0],
+                 avctx->width, avctx->height, buf);
+        (*frame_count)++;
+    }
+    if (pkt->data) {
+        pkt->size -= len;
+        pkt->data += len;
+    }
+    return 0;
+}
+
+static void video_decode_example(const char *outfilename, const char *filename)
+{
+    AVCodec *codec;
+    AVCodecContext *c= NULL;
+    int frame_count;
+    FILE *f;
+    AVFrame *frame;
+    uint8_t inbuf[INBUF_SIZE + FF_INPUT_BUFFER_PADDING_SIZE];
+    AVPacket avpkt;
+
+    av_init_packet(&avpkt);
+
+    /* set end of buffer to 0 (this ensures that no overreading happens for damaged mpeg streams) */
+    memset(inbuf + INBUF_SIZE, 0, FF_INPUT_BUFFER_PADDING_SIZE);
+
+    printf("Decode video file %s to %s\n", filename, outfilename);
+
+    /* find the mpeg1 video decoder */
+    codec = avcodec_find_decoder(AV_CODEC_ID_MPEG1VIDEO);
+    if (!codec) {
+        fprintf(stderr, "Codec not found\n");
+        exit(1);
+    }
+
+    c = avcodec_alloc_context3(codec);
+    if (!c) {
+        fprintf(stderr, "Could not allocate video codec context\n");
+        exit(1);
+    }
+
+    if(codec->capabilities&CODEC_CAP_TRUNCATED)
+        c->flags|= CODEC_FLAG_TRUNCATED; /* we do not send complete frames */
+
+    /* For some codecs, such as msmpeg4 and mpeg4, width and height
+       MUST be initialized there because this information is not
+       available in the bitstream. */
+
+    /* open it */
+    if (avcodec_open2(c, codec, NULL) < 0) {
+        fprintf(stderr, "Could not open codec\n");
+        exit(1);
+    }
+
+    f = fopen(filename, "rb");
+    if (!f) {
+        fprintf(stderr, "Could not open %s\n", filename);
+        exit(1);
+    }
+
+    frame = av_frame_alloc();
+    if (!frame) {
+        fprintf(stderr, "Could not allocate video frame\n");
+        exit(1);
+    }
+
+    frame_count = 0;
+    for(;;) {
+        avpkt.size = fread(inbuf, 1, INBUF_SIZE, f);
+        if (avpkt.size == 0)
+            break;
+
+        /* NOTE1: some codecs are stream based (mpegvideo, mpegaudio)
+           and this is the only method to use them because you cannot
+           know the compressed data size before analysing it.
+
+           BUT some other codecs (msmpeg4, mpeg4) are inherently frame
+           based, so you must call them with all the data for one
+           frame exactly. You must also initialize 'width' and
+           'height' before initializing them. */
+
+        /* NOTE2: some codecs allow the raw parameters (frame size,
+           sample rate) to be changed at any frame. We handle this, so
+           you should also take care of it */
+
+        /* here, we use a stream based decoder (mpeg1video), so we
+           feed decoder and see if it could decode a frame */
+        avpkt.data = inbuf;
+        while (avpkt.size > 0)
+            if (decode_write_frame(outfilename, c, frame, &frame_count, &avpkt, 0) < 0)
+                exit(1);
+    }
+
+    /* some codecs, such as MPEG, transmit the I and P frame with a
+       latency of one frame. You must do the following to have a
+       chance to get the last frame of the video */
+    avpkt.data = NULL;
+    avpkt.size = 0;
+    decode_write_frame(outfilename, c, frame, &frame_count, &avpkt, 1);
+
+    fclose(f);
+
+    avcodec_close(c);
+    av_free(c);
+    av_frame_free(&frame);
+    printf("\n");
+}
+
+int main(int argc, char **argv)
+{
+    const char *output_type;
+
+    /* register all the codecs */
+    avcodec_register_all();
+
+    if (argc < 2) {
+        printf("usage: %s output_type\n"
+               "API example program to decode/encode a media stream with libavcodec.\n"
+               "This program generates a synthetic stream and encodes it to a file\n"
+               "named test.h264, test.mp2 or test.mpg depending on output_type.\n"
+               "The encoded stream is then decoded and written to a raw data output.\n"
+               "output_type must be choosen between 'h264', 'mp2', 'mpg'.\n",
+               argv[0]);
+        return 1;
+    }
+    output_type = argv[1];
+
+    if (!strcmp(output_type, "h264")) {
+        video_encode_example("test.h264", AV_CODEC_ID_H264);
+    } else if (!strcmp(output_type, "mp2")) {
+        audio_encode_example("test.mp2");
+        audio_decode_example("test.sw", "test.mp2");
+    } else if (!strcmp(output_type, "mpg")) {
+        video_encode_example("test.mpg", AV_CODEC_ID_MPEG1VIDEO);
+        video_decode_example("test%02d.pgm", "test.mpg");
+    } else {
+        fprintf(stderr, "Invalid output type '%s', choose between 'h264', 'mp2', or 'mpg'\n",
+                output_type);
+        return 1;
+    }
+
+    return 0;
+}
diff --git a/dependencies/ffmpeg/doc/examples/demuxing_decoding.c b/dependencies/ffmpeg/doc/examples/demuxing_decoding.c
new file mode 100644 (file)
index 0000000..0ef5df7
--- /dev/null
@@ -0,0 +1,386 @@
+/*
+ * Copyright (c) 2012 Stefano Sabatini
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+/**
+ * @file
+ * Demuxing and decoding example.
+ *
+ * Show how to use the libavformat and libavcodec API to demux and
+ * decode audio and video data.
+ * @example doc/examples/demuxing_decoding.c
+ */
+
+#include <libavutil/imgutils.h>
+#include <libavutil/samplefmt.h>
+#include <libavutil/timestamp.h>
+#include <libavformat/avformat.h>
+
+static AVFormatContext *fmt_ctx = NULL;
+static AVCodecContext *video_dec_ctx = NULL, *audio_dec_ctx;
+static AVStream *video_stream = NULL, *audio_stream = NULL;
+static const char *src_filename = NULL;
+static const char *video_dst_filename = NULL;
+static const char *audio_dst_filename = NULL;
+static FILE *video_dst_file = NULL;
+static FILE *audio_dst_file = NULL;
+
+static uint8_t *video_dst_data[4] = {NULL};
+static int      video_dst_linesize[4];
+static int video_dst_bufsize;
+
+static int video_stream_idx = -1, audio_stream_idx = -1;
+static AVFrame *frame = NULL;
+static AVPacket pkt;
+static int video_frame_count = 0;
+static int audio_frame_count = 0;
+
+/* The different ways of decoding and managing data memory. You are not
+ * supposed to support all the modes in your application but pick the one most
+ * appropriate to your needs. Look for the use of api_mode in this example to
+ * see what are the differences of API usage between them */
+enum {
+    API_MODE_OLD                  = 0, /* old method, deprecated */
+    API_MODE_NEW_API_REF_COUNT    = 1, /* new method, using the frame reference counting */
+    API_MODE_NEW_API_NO_REF_COUNT = 2, /* new method, without reference counting */
+};
+
+static int api_mode = API_MODE_OLD;
+
+static int decode_packet(int *got_frame, int cached)
+{
+    int ret = 0;
+    int decoded = pkt.size;
+
+    *got_frame = 0;
+
+    if (pkt.stream_index == video_stream_idx) {
+        /* decode video frame */
+        ret = avcodec_decode_video2(video_dec_ctx, frame, got_frame, &pkt);
+        if (ret < 0) {
+            fprintf(stderr, "Error decoding video frame (%s)\n", av_err2str(ret));
+            return ret;
+        }
+
+        if (*got_frame) {
+            printf("video_frame%s n:%d coded_n:%d pts:%s\n",
+                   cached ? "(cached)" : "",
+                   video_frame_count++, frame->coded_picture_number,
+                   av_ts2timestr(frame->pts, &video_dec_ctx->time_base));
+
+            /* copy decoded frame to destination buffer:
+             * this is required since rawvideo expects non aligned data */
+            av_image_copy(video_dst_data, video_dst_linesize,
+                          (const uint8_t **)(frame->data), frame->linesize,
+                          video_dec_ctx->pix_fmt, video_dec_ctx->width, video_dec_ctx->height);
+
+            /* write to rawvideo file */
+            fwrite(video_dst_data[0], 1, video_dst_bufsize, video_dst_file);
+        }
+    } else if (pkt.stream_index == audio_stream_idx) {
+        /* decode audio frame */
+        ret = avcodec_decode_audio4(audio_dec_ctx, frame, got_frame, &pkt);
+        if (ret < 0) {
+            fprintf(stderr, "Error decoding audio frame (%s)\n", av_err2str(ret));
+            return ret;
+        }
+        /* Some audio decoders decode only part of the packet, and have to be
+         * called again with the remainder of the packet data.
+         * Sample: fate-suite/lossless-audio/luckynight-partial.shn
+         * Also, some decoders might over-read the packet. */
+        decoded = FFMIN(ret, pkt.size);
+
+        if (*got_frame) {
+            size_t unpadded_linesize = frame->nb_samples * av_get_bytes_per_sample(frame->format);
+            printf("audio_frame%s n:%d nb_samples:%d pts:%s\n",
+                   cached ? "(cached)" : "",
+                   audio_frame_count++, frame->nb_samples,
+                   av_ts2timestr(frame->pts, &audio_dec_ctx->time_base));
+
+            /* Write the raw audio data samples of the first plane. This works
+             * fine for packed formats (e.g. AV_SAMPLE_FMT_S16). However,
+             * most audio decoders output planar audio, which uses a separate
+             * plane of audio samples for each channel (e.g. AV_SAMPLE_FMT_S16P).
+             * In other words, this code will write only the first audio channel
+             * in these cases.
+             * You should use libswresample or libavfilter to convert the frame
+             * to packed data. */
+            fwrite(frame->extended_data[0], 1, unpadded_linesize, audio_dst_file);
+        }
+    }
+
+    /* If we use the new API with reference counting, we own the data and need
+     * to de-reference it when we don't use it anymore */
+    if (*got_frame && api_mode == API_MODE_NEW_API_REF_COUNT)
+        av_frame_unref(frame);
+
+    return decoded;
+}
+
+static int open_codec_context(int *stream_idx,
+                              AVFormatContext *fmt_ctx, enum AVMediaType type)
+{
+    int ret;
+    AVStream *st;
+    AVCodecContext *dec_ctx = NULL;
+    AVCodec *dec = NULL;
+    AVDictionary *opts = NULL;
+
+    ret = av_find_best_stream(fmt_ctx, type, -1, -1, NULL, 0);
+    if (ret < 0) {
+        fprintf(stderr, "Could not find %s stream in input file '%s'\n",
+                av_get_media_type_string(type), src_filename);
+        return ret;
+    } else {
+        *stream_idx = ret;
+        st = fmt_ctx->streams[*stream_idx];
+
+        /* find decoder for the stream */
+        dec_ctx = st->codec;
+        dec = avcodec_find_decoder(dec_ctx->codec_id);
+        if (!dec) {
+            fprintf(stderr, "Failed to find %s codec\n",
+                    av_get_media_type_string(type));
+            return AVERROR(EINVAL);
+        }
+
+        /* Init the decoders, with or without reference counting */
+        if (api_mode == API_MODE_NEW_API_REF_COUNT)
+            av_dict_set(&opts, "refcounted_frames", "1", 0);
+        if ((ret = avcodec_open2(dec_ctx, dec, &opts)) < 0) {
+            fprintf(stderr, "Failed to open %s codec\n",
+                    av_get_media_type_string(type));
+            return ret;
+        }
+    }
+
+    return 0;
+}
+
+static int get_format_from_sample_fmt(const char **fmt,
+                                      enum AVSampleFormat sample_fmt)
+{
+    int i;
+    struct sample_fmt_entry {
+        enum AVSampleFormat sample_fmt; const char *fmt_be, *fmt_le;
+    } sample_fmt_entries[] = {
+        { AV_SAMPLE_FMT_U8,  "u8",    "u8"    },
+        { AV_SAMPLE_FMT_S16, "s16be", "s16le" },
+        { AV_SAMPLE_FMT_S32, "s32be", "s32le" },
+        { AV_SAMPLE_FMT_FLT, "f32be", "f32le" },
+        { AV_SAMPLE_FMT_DBL, "f64be", "f64le" },
+    };
+    *fmt = NULL;
+
+    for (i = 0; i < FF_ARRAY_ELEMS(sample_fmt_entries); i++) {
+        struct sample_fmt_entry *entry = &sample_fmt_entries[i];
+        if (sample_fmt == entry->sample_fmt) {
+            *fmt = AV_NE(entry->fmt_be, entry->fmt_le);
+            return 0;
+        }
+    }
+
+    fprintf(stderr,
+            "sample format %s is not supported as output format\n",
+            av_get_sample_fmt_name(sample_fmt));
+    return -1;
+}
+
+int main (int argc, char **argv)
+{
+    int ret = 0, got_frame;
+
+    if (argc != 4 && argc != 5) {
+        fprintf(stderr, "usage: %s [-refcount=<old|new_norefcount|new_refcount>] "
+                "input_file video_output_file audio_output_file\n"
+                "API example program to show how to read frames from an input file.\n"
+                "This program reads frames from a file, decodes them, and writes decoded\n"
+                "video frames to a rawvideo file named video_output_file, and decoded\n"
+                "audio frames to a rawaudio file named audio_output_file.\n\n"
+                "If the -refcount option is specified, the program use the\n"
+                "reference counting frame system which allows keeping a copy of\n"
+                "the data for longer than one decode call. If unset, it's using\n"
+                "the classic old method.\n"
+                "\n", argv[0]);
+        exit(1);
+    }
+    if (argc == 5) {
+        const char *mode = argv[1] + strlen("-refcount=");
+        if      (!strcmp(mode, "old"))            api_mode = API_MODE_OLD;
+        else if (!strcmp(mode, "new_norefcount")) api_mode = API_MODE_NEW_API_NO_REF_COUNT;
+        else if (!strcmp(mode, "new_refcount"))   api_mode = API_MODE_NEW_API_REF_COUNT;
+        else {
+            fprintf(stderr, "unknow mode '%s'\n", mode);
+            exit(1);
+        }
+        argv++;
+    }
+    src_filename = argv[1];
+    video_dst_filename = argv[2];
+    audio_dst_filename = argv[3];
+
+    /* register all formats and codecs */
+    av_register_all();
+
+    /* open input file, and allocate format context */
+    if (avformat_open_input(&fmt_ctx, src_filename, NULL, NULL) < 0) {
+        fprintf(stderr, "Could not open source file %s\n", src_filename);
+        exit(1);
+    }
+
+    /* retrieve stream information */
+    if (avformat_find_stream_info(fmt_ctx, NULL) < 0) {
+        fprintf(stderr, "Could not find stream information\n");
+        exit(1);
+    }
+
+    if (open_codec_context(&video_stream_idx, fmt_ctx, AVMEDIA_TYPE_VIDEO) >= 0) {
+        video_stream = fmt_ctx->streams[video_stream_idx];
+        video_dec_ctx = video_stream->codec;
+
+        video_dst_file = fopen(video_dst_filename, "wb");
+        if (!video_dst_file) {
+            fprintf(stderr, "Could not open destination file %s\n", video_dst_filename);
+            ret = 1;
+            goto end;
+        }
+
+        /* allocate image where the decoded image will be put */
+        ret = av_image_alloc(video_dst_data, video_dst_linesize,
+                             video_dec_ctx->width, video_dec_ctx->height,
+                             video_dec_ctx->pix_fmt, 1);
+        if (ret < 0) {
+            fprintf(stderr, "Could not allocate raw video buffer\n");
+            goto end;
+        }
+        video_dst_bufsize = ret;
+    }
+
+    if (open_codec_context(&audio_stream_idx, fmt_ctx, AVMEDIA_TYPE_AUDIO) >= 0) {
+        audio_stream = fmt_ctx->streams[audio_stream_idx];
+        audio_dec_ctx = audio_stream->codec;
+        audio_dst_file = fopen(audio_dst_filename, "wb");
+        if (!audio_dst_file) {
+            fprintf(stderr, "Could not open destination file %s\n", video_dst_filename);
+            ret = 1;
+            goto end;
+        }
+    }
+
+    /* dump input information to stderr */
+    av_dump_format(fmt_ctx, 0, src_filename, 0);
+
+    if (!audio_stream && !video_stream) {
+        fprintf(stderr, "Could not find audio or video stream in the input, aborting\n");
+        ret = 1;
+        goto end;
+    }
+
+    /* When using the new API, you need to use the libavutil/frame.h API, while
+     * the classic frame management is available in libavcodec */
+    if (api_mode == API_MODE_OLD)
+        frame = avcodec_alloc_frame();
+    else
+        frame = av_frame_alloc();
+    if (!frame) {
+        fprintf(stderr, "Could not allocate frame\n");
+        ret = AVERROR(ENOMEM);
+        goto end;
+    }
+
+    /* initialize packet, set data to NULL, let the demuxer fill it */
+    av_init_packet(&pkt);
+    pkt.data = NULL;
+    pkt.size = 0;
+
+    if (video_stream)
+        printf("Demuxing video from file '%s' into '%s'\n", src_filename, video_dst_filename);
+    if (audio_stream)
+        printf("Demuxing audio from file '%s' into '%s'\n", src_filename, audio_dst_filename);
+
+    /* read frames from the file */
+    while (av_read_frame(fmt_ctx, &pkt) >= 0) {
+        AVPacket orig_pkt = pkt;
+        do {
+            ret = decode_packet(&got_frame, 0);
+            if (ret < 0)
+                break;
+            pkt.data += ret;
+            pkt.size -= ret;
+        } while (pkt.size > 0);
+        av_free_packet(&orig_pkt);
+    }
+
+    /* flush cached frames */
+    pkt.data = NULL;
+    pkt.size = 0;
+    do {
+        decode_packet(&got_frame, 1);
+    } while (got_frame);
+
+    printf("Demuxing succeeded.\n");
+
+    if (video_stream) {
+        printf("Play the output video file with the command:\n"
+               "ffplay -f rawvideo -pix_fmt %s -video_size %dx%d %s\n",
+               av_get_pix_fmt_name(video_dec_ctx->pix_fmt), video_dec_ctx->width, video_dec_ctx->height,
+               video_dst_filename);
+    }
+
+    if (audio_stream) {
+        enum AVSampleFormat sfmt = audio_dec_ctx->sample_fmt;
+        int n_channels = audio_dec_ctx->channels;
+        const char *fmt;
+
+        if (av_sample_fmt_is_planar(sfmt)) {
+            const char *packed = av_get_sample_fmt_name(sfmt);
+            printf("Warning: the sample format the decoder produced is planar "
+                   "(%s). This example will output the first channel only.\n",
+                   packed ? packed : "?");
+            sfmt = av_get_packed_sample_fmt(sfmt);
+            n_channels = 1;
+        }
+
+        if ((ret = get_format_from_sample_fmt(&fmt, sfmt)) < 0)
+            goto end;
+
+        printf("Play the output audio file with the command:\n"
+               "ffplay -f %s -ac %d -ar %d %s\n",
+               fmt, n_channels, audio_dec_ctx->sample_rate,
+               audio_dst_filename);
+    }
+
+end:
+    avcodec_close(video_dec_ctx);
+    avcodec_close(audio_dec_ctx);
+    avformat_close_input(&fmt_ctx);
+    if (video_dst_file)
+        fclose(video_dst_file);
+    if (audio_dst_file)
+        fclose(audio_dst_file);
+    if (api_mode == API_MODE_OLD)
+        avcodec_free_frame(&frame);
+    else
+        av_frame_free(&frame);
+    av_free(video_dst_data[0]);
+
+    return ret < 0;
+}
diff --git a/dependencies/ffmpeg/doc/examples/filtering_audio.c b/dependencies/ffmpeg/doc/examples/filtering_audio.c
new file mode 100644 (file)
index 0000000..1d66ca3
--- /dev/null
@@ -0,0 +1,282 @@
+/*
+ * Copyright (c) 2010 Nicolas George
+ * Copyright (c) 2011 Stefano Sabatini
+ * Copyright (c) 2012 Clément Bœsch
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+/**
+ * @file
+ * API example for audio decoding and filtering
+ * @example doc/examples/filtering_audio.c
+ */
+
+#include <unistd.h>
+
+#include <libavcodec/avcodec.h>
+#include <libavformat/avformat.h>
+#include <libavfilter/avfiltergraph.h>
+#include <libavfilter/avcodec.h>
+#include <libavfilter/buffersink.h>
+#include <libavfilter/buffersrc.h>
+#include <libavutil/opt.h>
+
+static const char *filter_descr = "aresample=8000,aformat=sample_fmts=s16:channel_layouts=mono";
+static const char *player       = "ffplay -f s16le -ar 8000 -ac 1 -";
+
+static AVFormatContext *fmt_ctx;
+static AVCodecContext *dec_ctx;
+AVFilterContext *buffersink_ctx;
+AVFilterContext *buffersrc_ctx;
+AVFilterGraph *filter_graph;
+static int audio_stream_index = -1;
+
+static int open_input_file(const char *filename)
+{
+    int ret;
+    AVCodec *dec;
+
+    if ((ret = avformat_open_input(&fmt_ctx, filename, NULL, NULL)) < 0) {
+        av_log(NULL, AV_LOG_ERROR, "Cannot open input file\n");
+        return ret;
+    }
+
+    if ((ret = avformat_find_stream_info(fmt_ctx, NULL)) < 0) {
+        av_log(NULL, AV_LOG_ERROR, "Cannot find stream information\n");
+        return ret;
+    }
+
+    /* select the audio stream */
+    ret = av_find_best_stream(fmt_ctx, AVMEDIA_TYPE_AUDIO, -1, -1, &dec, 0);
+    if (ret < 0) {
+        av_log(NULL, AV_LOG_ERROR, "Cannot find a audio stream in the input file\n");
+        return ret;
+    }
+    audio_stream_index = ret;
+    dec_ctx = fmt_ctx->streams[audio_stream_index]->codec;
+    av_opt_set_int(dec_ctx, "refcounted_frames", 1, 0);
+
+    /* init the audio decoder */
+    if ((ret = avcodec_open2(dec_ctx, dec, NULL)) < 0) {
+        av_log(NULL, AV_LOG_ERROR, "Cannot open audio decoder\n");
+        return ret;
+    }
+
+    return 0;
+}
+
+static int init_filters(const char *filters_descr)
+{
+    char args[512];
+    int ret = 0;
+    AVFilter *abuffersrc  = avfilter_get_by_name("abuffer");
+    AVFilter *abuffersink = avfilter_get_by_name("abuffersink");
+    AVFilterInOut *outputs = avfilter_inout_alloc();
+    AVFilterInOut *inputs  = avfilter_inout_alloc();
+    static const enum AVSampleFormat out_sample_fmts[] = { AV_SAMPLE_FMT_S16, -1 };
+    static const int64_t out_channel_layouts[] = { AV_CH_LAYOUT_MONO, -1 };
+    static const int out_sample_rates[] = { 8000, -1 };
+    const AVFilterLink *outlink;
+    AVRational time_base = fmt_ctx->streams[audio_stream_index]->time_base;
+
+    filter_graph = avfilter_graph_alloc();
+    if (!outputs || !inputs || !filter_graph) {
+        ret = AVERROR(ENOMEM);
+        goto end;
+    }
+
+    /* buffer audio source: the decoded frames from the decoder will be inserted here. */
+    if (!dec_ctx->channel_layout)
+        dec_ctx->channel_layout = av_get_default_channel_layout(dec_ctx->channels);
+    snprintf(args, sizeof(args),
+            "time_base=%d/%d:sample_rate=%d:sample_fmt=%s:channel_layout=0x%"PRIx64,
+             time_base.num, time_base.den, dec_ctx->sample_rate,
+             av_get_sample_fmt_name(dec_ctx->sample_fmt), dec_ctx->channel_layout);
+    ret = avfilter_graph_create_filter(&buffersrc_ctx, abuffersrc, "in",
+                                       args, NULL, filter_graph);
+    if (ret < 0) {
+        av_log(NULL, AV_LOG_ERROR, "Cannot create audio buffer source\n");
+        goto end;
+    }
+
+    /* buffer audio sink: to terminate the filter chain. */
+    ret = avfilter_graph_create_filter(&buffersink_ctx, abuffersink, "out",
+                                       NULL, NULL, filter_graph);
+    if (ret < 0) {
+        av_log(NULL, AV_LOG_ERROR, "Cannot create audio buffer sink\n");
+        goto end;
+    }
+
+    ret = av_opt_set_int_list(buffersink_ctx, "sample_fmts", out_sample_fmts, -1,
+                              AV_OPT_SEARCH_CHILDREN);
+    if (ret < 0) {
+        av_log(NULL, AV_LOG_ERROR, "Cannot set output sample format\n");
+        goto end;
+    }
+
+    ret = av_opt_set_int_list(buffersink_ctx, "channel_layouts", out_channel_layouts, -1,
+                              AV_OPT_SEARCH_CHILDREN);
+    if (ret < 0) {
+        av_log(NULL, AV_LOG_ERROR, "Cannot set output channel layout\n");
+        goto end;
+    }
+
+    ret = av_opt_set_int_list(buffersink_ctx, "sample_rates", out_sample_rates, -1,
+                              AV_OPT_SEARCH_CHILDREN);
+    if (ret < 0) {
+        av_log(NULL, AV_LOG_ERROR, "Cannot set output sample rate\n");
+        goto end;
+    }
+
+    /* Endpoints for the filter graph. */
+    outputs->name       = av_strdup("in");
+    outputs->filter_ctx = buffersrc_ctx;
+    outputs->pad_idx    = 0;
+    outputs->next       = NULL;
+
+    inputs->name       = av_strdup("out");
+    inputs->filter_ctx = buffersink_ctx;
+    inputs->pad_idx    = 0;
+    inputs->next       = NULL;
+
+    if ((ret = avfilter_graph_parse_ptr(filter_graph, filters_descr,
+                                        &inputs, &outputs, NULL)) < 0)
+        goto end;
+
+    if ((ret = avfilter_graph_config(filter_graph, NULL)) < 0)
+        goto end;
+
+    /* Print summary of the sink buffer
+     * Note: args buffer is reused to store channel layout string */
+    outlink = buffersink_ctx->inputs[0];
+    av_get_channel_layout_string(args, sizeof(args), -1, outlink->channel_layout);
+    av_log(NULL, AV_LOG_INFO, "Output: srate:%dHz fmt:%s chlayout:%s\n",
+           (int)outlink->sample_rate,
+           (char *)av_x_if_null(av_get_sample_fmt_name(outlink->format), "?"),
+           args);
+
+end:
+    avfilter_inout_free(&inputs);
+    avfilter_inout_free(&outputs);
+
+    return ret;
+}
+
+static void print_frame(const AVFrame *frame)
+{
+    const int n = frame->nb_samples * av_get_channel_layout_nb_channels(av_frame_get_channel_layout(frame));
+    const uint16_t *p     = (uint16_t*)frame->data[0];
+    const uint16_t *p_end = p + n;
+
+    while (p < p_end) {
+        fputc(*p    & 0xff, stdout);
+        fputc(*p>>8 & 0xff, stdout);
+        p++;
+    }
+    fflush(stdout);
+}
+
+int main(int argc, char **argv)
+{
+    int ret;
+    AVPacket packet0, packet;
+    AVFrame *frame = av_frame_alloc();
+    AVFrame *filt_frame = av_frame_alloc();
+    int got_frame;
+
+    if (!frame || !filt_frame) {
+        perror("Could not allocate frame");
+        exit(1);
+    }
+    if (argc != 2) {
+        fprintf(stderr, "Usage: %s file | %s\n", argv[0], player);
+        exit(1);
+    }
+
+    avcodec_register_all();
+    av_register_all();
+    avfilter_register_all();
+
+    if ((ret = open_input_file(argv[1])) < 0)
+        goto end;
+    if ((ret = init_filters(filter_descr)) < 0)
+        goto end;
+
+    /* read all packets */
+    packet0.data = NULL;
+    packet.data = NULL;
+    while (1) {
+        if (!packet0.data) {
+            if ((ret = av_read_frame(fmt_ctx, &packet)) < 0)
+                break;
+            packet0 = packet;
+        }
+
+        if (packet.stream_index == audio_stream_index) {
+            avcodec_get_frame_defaults(frame);
+            got_frame = 0;
+            ret = avcodec_decode_audio4(dec_ctx, frame, &got_frame, &packet);
+            if (ret < 0) {
+                av_log(NULL, AV_LOG_ERROR, "Error decoding audio\n");
+                continue;
+            }
+            packet.size -= ret;
+            packet.data += ret;
+
+            if (got_frame) {
+                /* push the audio data from decoded frame into the filtergraph */
+                if (av_buffersrc_add_frame_flags(buffersrc_ctx, frame, 0) < 0) {
+                    av_log(NULL, AV_LOG_ERROR, "Error while feeding the audio filtergraph\n");
+                    break;
+                }
+
+                /* pull filtered audio from the filtergraph */
+                while (1) {
+                    ret = av_buffersink_get_frame(buffersink_ctx, filt_frame);
+                    if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF)
+                        break;
+                    if (ret < 0)
+                        goto end;
+                    print_frame(filt_frame);
+                    av_frame_unref(filt_frame);
+                }
+            }
+
+            if (packet.size <= 0)
+                av_free_packet(&packet0);
+        } else {
+            /* discard non-wanted packets */
+            av_free_packet(&packet0);
+        }
+    }
+end:
+    avfilter_graph_free(&filter_graph);
+    avcodec_close(dec_ctx);
+    avformat_close_input(&fmt_ctx);
+    av_frame_free(&frame);
+    av_frame_free(&filt_frame);
+
+    if (ret < 0 && ret != AVERROR_EOF) {
+        fprintf(stderr, "Error occurred: %s\n", av_err2str(ret));
+        exit(1);
+    }
+
+    exit(0);
+}
diff --git a/dependencies/ffmpeg/doc/examples/filtering_video.c b/dependencies/ffmpeg/doc/examples/filtering_video.c
new file mode 100644 (file)
index 0000000..790c641
--- /dev/null
@@ -0,0 +1,263 @@
+/*
+ * Copyright (c) 2010 Nicolas George
+ * Copyright (c) 2011 Stefano Sabatini
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+/**
+ * @file
+ * API example for decoding and filtering
+ * @example doc/examples/filtering_video.c
+ */
+
+#define _XOPEN_SOURCE 600 /* for usleep */
+#include <unistd.h>
+
+#include <libavcodec/avcodec.h>
+#include <libavformat/avformat.h>
+#include <libavfilter/avfiltergraph.h>
+#include <libavfilter/avcodec.h>
+#include <libavfilter/buffersink.h>
+#include <libavfilter/buffersrc.h>
+#include <libavutil/opt.h>
+
+const char *filter_descr = "scale=78:24";
+
+static AVFormatContext *fmt_ctx;
+static AVCodecContext *dec_ctx;
+AVFilterContext *buffersink_ctx;
+AVFilterContext *buffersrc_ctx;
+AVFilterGraph *filter_graph;
+static int video_stream_index = -1;
+static int64_t last_pts = AV_NOPTS_VALUE;
+
+static int open_input_file(const char *filename)
+{
+    int ret;
+    AVCodec *dec;
+
+    if ((ret = avformat_open_input(&fmt_ctx, filename, NULL, NULL)) < 0) {
+        av_log(NULL, AV_LOG_ERROR, "Cannot open input file\n");
+        return ret;
+    }
+
+    if ((ret = avformat_find_stream_info(fmt_ctx, NULL)) < 0) {
+        av_log(NULL, AV_LOG_ERROR, "Cannot find stream information\n");
+        return ret;
+    }
+
+    /* select the video stream */
+    ret = av_find_best_stream(fmt_ctx, AVMEDIA_TYPE_VIDEO, -1, -1, &dec, 0);
+    if (ret < 0) {
+        av_log(NULL, AV_LOG_ERROR, "Cannot find a video stream in the input file\n");
+        return ret;
+    }
+    video_stream_index = ret;
+    dec_ctx = fmt_ctx->streams[video_stream_index]->codec;
+    av_opt_set_int(dec_ctx, "refcounted_frames", 1, 0);
+
+    /* init the video decoder */
+    if ((ret = avcodec_open2(dec_ctx, dec, NULL)) < 0) {
+        av_log(NULL, AV_LOG_ERROR, "Cannot open video decoder\n");
+        return ret;
+    }
+
+    return 0;
+}
+
+static int init_filters(const char *filters_descr)
+{
+    char args[512];
+    int ret = 0;
+    AVFilter *buffersrc  = avfilter_get_by_name("buffer");
+    AVFilter *buffersink = avfilter_get_by_name("buffersink");
+    AVFilterInOut *outputs = avfilter_inout_alloc();
+    AVFilterInOut *inputs  = avfilter_inout_alloc();
+    enum AVPixelFormat pix_fmts[] = { AV_PIX_FMT_GRAY8, AV_PIX_FMT_NONE };
+
+    filter_graph = avfilter_graph_alloc();
+    if (!outputs || !inputs || !filter_graph) {
+        ret = AVERROR(ENOMEM);
+        goto end;
+    }
+
+    /* buffer video source: the decoded frames from the decoder will be inserted here. */
+    snprintf(args, sizeof(args),
+            "video_size=%dx%d:pix_fmt=%d:time_base=%d/%d:pixel_aspect=%d/%d",
+            dec_ctx->width, dec_ctx->height, dec_ctx->pix_fmt,
+            dec_ctx->time_base.num, dec_ctx->time_base.den,
+            dec_ctx->sample_aspect_ratio.num, dec_ctx->sample_aspect_ratio.den);
+
+    ret = avfilter_graph_create_filter(&buffersrc_ctx, buffersrc, "in",
+                                       args, NULL, filter_graph);
+    if (ret < 0) {
+        av_log(NULL, AV_LOG_ERROR, "Cannot create buffer source\n");
+        goto end;
+    }
+
+    /* buffer video sink: to terminate the filter chain. */
+    ret = avfilter_graph_create_filter(&buffersink_ctx, buffersink, "out",
+                                       NULL, NULL, filter_graph);
+    if (ret < 0) {
+        av_log(NULL, AV_LOG_ERROR, "Cannot create buffer sink\n");
+        goto end;
+    }
+
+    ret = av_opt_set_int_list(buffersink_ctx, "pix_fmts", pix_fmts,
+                              AV_PIX_FMT_NONE, AV_OPT_SEARCH_CHILDREN);
+    if (ret < 0) {
+        av_log(NULL, AV_LOG_ERROR, "Cannot set output pixel format\n");
+        goto end;
+    }
+
+    /* Endpoints for the filter graph. */
+    outputs->name       = av_strdup("in");
+    outputs->filter_ctx = buffersrc_ctx;
+    outputs->pad_idx    = 0;
+    outputs->next       = NULL;
+
+    inputs->name       = av_strdup("out");
+    inputs->filter_ctx = buffersink_ctx;
+    inputs->pad_idx    = 0;
+    inputs->next       = NULL;
+
+    if ((ret = avfilter_graph_parse_ptr(filter_graph, filters_descr,
+                                    &inputs, &outputs, NULL)) < 0)
+        goto end;
+
+    if ((ret = avfilter_graph_config(filter_graph, NULL)) < 0)
+        goto end;
+
+end:
+    avfilter_inout_free(&inputs);
+    avfilter_inout_free(&outputs);
+
+    return ret;
+}
+
+static void display_frame(const AVFrame *frame, AVRational time_base)
+{
+    int x, y;
+    uint8_t *p0, *p;
+    int64_t delay;
+
+    if (frame->pts != AV_NOPTS_VALUE) {
+        if (last_pts != AV_NOPTS_VALUE) {
+            /* sleep roughly the right amount of time;
+             * usleep is in microseconds, just like AV_TIME_BASE. */
+            delay = av_rescale_q(frame->pts - last_pts,
+                                 time_base, AV_TIME_BASE_Q);
+            if (delay > 0 && delay < 1000000)
+                usleep(delay);
+        }
+        last_pts = frame->pts;
+    }
+
+    /* Trivial ASCII grayscale display. */
+    p0 = frame->data[0];
+    puts("\033c");
+    for (y = 0; y < frame->height; y++) {
+        p = p0;
+        for (x = 0; x < frame->width; x++)
+            putchar(" .-+#"[*(p++) / 52]);
+        putchar('\n');
+        p0 += frame->linesize[0];
+    }
+    fflush(stdout);
+}
+
+int main(int argc, char **argv)
+{
+    int ret;
+    AVPacket packet;
+    AVFrame *frame = av_frame_alloc();
+    AVFrame *filt_frame = av_frame_alloc();
+    int got_frame;
+
+    if (!frame || !filt_frame) {
+        perror("Could not allocate frame");
+        exit(1);
+    }
+    if (argc != 2) {
+        fprintf(stderr, "Usage: %s file\n", argv[0]);
+        exit(1);
+    }
+
+    avcodec_register_all();
+    av_register_all();
+    avfilter_register_all();
+
+    if ((ret = open_input_file(argv[1])) < 0)
+        goto end;
+    if ((ret = init_filters(filter_descr)) < 0)
+        goto end;
+
+    /* read all packets */
+    while (1) {
+        if ((ret = av_read_frame(fmt_ctx, &packet)) < 0)
+            break;
+
+        if (packet.stream_index == video_stream_index) {
+            avcodec_get_frame_defaults(frame);
+            got_frame = 0;
+            ret = avcodec_decode_video2(dec_ctx, frame, &got_frame, &packet);
+            if (ret < 0) {
+                av_log(NULL, AV_LOG_ERROR, "Error decoding video\n");
+                break;
+            }
+
+            if (got_frame) {
+                frame->pts = av_frame_get_best_effort_timestamp(frame);
+
+                /* push the decoded frame into the filtergraph */
+                if (av_buffersrc_add_frame_flags(buffersrc_ctx, frame, AV_BUFFERSRC_FLAG_KEEP_REF) < 0) {
+                    av_log(NULL, AV_LOG_ERROR, "Error while feeding the filtergraph\n");
+                    break;
+                }
+
+                /* pull filtered frames from the filtergraph */
+                while (1) {
+                    ret = av_buffersink_get_frame(buffersink_ctx, filt_frame);
+                    if (ret == AVERROR(EAGAIN) || ret == AVERROR_EOF)
+                        break;
+                    if (ret < 0)
+                        goto end;
+                    display_frame(filt_frame, buffersink_ctx->inputs[0]->time_base);
+                    av_frame_unref(filt_frame);
+                }
+                av_frame_unref(frame);
+            }
+        }
+        av_free_packet(&packet);
+    }
+end:
+    avfilter_graph_free(&filter_graph);
+    avcodec_close(dec_ctx);
+    avformat_close_input(&fmt_ctx);
+    av_frame_free(&frame);
+    av_frame_free(&filt_frame);
+
+    if (ret < 0 && ret != AVERROR_EOF) {
+        fprintf(stderr, "Error occurred: %s\n", av_err2str(ret));
+        exit(1);
+    }
+
+    exit(0);
+}
diff --git a/dependencies/ffmpeg/doc/examples/metadata.c b/dependencies/ffmpeg/doc/examples/metadata.c
new file mode 100644 (file)
index 0000000..9c1bcd7
--- /dev/null
@@ -0,0 +1,56 @@
+/*
+ * Copyright (c) 2011 Reinhard Tartler
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+/**
+ * @file
+ * Shows how the metadata API can be used in application programs.
+ * @example doc/examples/metadata.c
+ */
+
+#include <stdio.h>
+
+#include <libavformat/avformat.h>
+#include <libavutil/dict.h>
+
+int main (int argc, char **argv)
+{
+    AVFormatContext *fmt_ctx = NULL;
+    AVDictionaryEntry *tag = NULL;
+    int ret;
+
+    if (argc != 2) {
+        printf("usage: %s <input_file>\n"
+               "example program to demonstrate the use of the libavformat metadata API.\n"
+               "\n", argv[0]);
+        return 1;
+    }
+
+    av_register_all();
+    if ((ret = avformat_open_input(&fmt_ctx, argv[1], NULL, NULL)))
+        return ret;
+
+    while ((tag = av_dict_get(fmt_ctx->metadata, "", tag, AV_DICT_IGNORE_SUFFIX)))
+        printf("%s=%s\n", tag->key, tag->value);
+
+    avformat_close_input(&fmt_ctx);
+    return 0;
+}
diff --git a/dependencies/ffmpeg/doc/examples/muxing.c b/dependencies/ffmpeg/doc/examples/muxing.c
new file mode 100644 (file)
index 0000000..9ad6e28
--- /dev/null
@@ -0,0 +1,564 @@
+/*
+ * Copyright (c) 2003 Fabrice Bellard
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+/**
+ * @file
+ * libavformat API example.
+ *
+ * Output a media file in any supported libavformat format.
+ * The default codecs are used.
+ * @example doc/examples/muxing.c
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+
+#include <libavutil/opt.h>
+#include <libavutil/mathematics.h>
+#include <libavformat/avformat.h>
+#include <libswscale/swscale.h>
+#include <libswresample/swresample.h>
+
+/* 5 seconds stream duration */
+#define STREAM_DURATION   200.0
+#define STREAM_FRAME_RATE 25 /* 25 images/s */
+#define STREAM_NB_FRAMES  ((int)(STREAM_DURATION * STREAM_FRAME_RATE))
+#define STREAM_PIX_FMT    AV_PIX_FMT_YUV420P /* default pix_fmt */
+
+static int sws_flags = SWS_BICUBIC;
+
+/* Add an output stream. */
+static AVStream *add_stream(AVFormatContext *oc, AVCodec **codec,
+                            enum AVCodecID codec_id)
+{
+    AVCodecContext *c;
+    AVStream *st;
+
+    /* find the encoder */
+    *codec = avcodec_find_encoder(codec_id);
+    if (!(*codec)) {
+        fprintf(stderr, "Could not find encoder for '%s'\n",
+                avcodec_get_name(codec_id));
+        exit(1);
+    }
+
+    st = avformat_new_stream(oc, *codec);
+    if (!st) {
+        fprintf(stderr, "Could not allocate stream\n");
+        exit(1);
+    }
+    st->id = oc->nb_streams-1;
+    c = st->codec;
+
+    switch ((*codec)->type) {
+    case AVMEDIA_TYPE_AUDIO:
+        c->sample_fmt  = AV_SAMPLE_FMT_FLTP;
+        c->bit_rate    = 64000;
+        c->sample_rate = 44100;
+        c->channels    = 2;
+        break;
+
+    case AVMEDIA_TYPE_VIDEO:
+        c->codec_id = codec_id;
+
+        c->bit_rate = 400000;
+        /* Resolution must be a multiple of two. */
+        c->width    = 352;
+        c->height   = 288;
+        /* timebase: This is the fundamental unit of time (in seconds) in terms
+         * of which frame timestamps are represented. For fixed-fps content,
+         * timebase should be 1/framerate and timestamp increments should be
+         * identical to 1. */
+        c->time_base.den = STREAM_FRAME_RATE;
+        c->time_base.num = 1;
+        c->gop_size      = 12; /* emit one intra frame every twelve frames at most */
+        c->pix_fmt       = STREAM_PIX_FMT;
+        if (c->codec_id == AV_CODEC_ID_MPEG2VIDEO) {
+            /* just for testing, we also add B frames */
+            c->max_b_frames = 2;
+        }
+        if (c->codec_id == AV_CODEC_ID_MPEG1VIDEO) {
+            /* Needed to avoid using macroblocks in which some coeffs overflow.
+             * This does not happen with normal video, it just happens here as
+             * the motion of the chroma plane does not match the luma plane. */
+            c->mb_decision = 2;
+        }
+    break;
+
+    default:
+        break;
+    }
+
+    /* Some formats want stream headers to be separate. */
+    if (oc->oformat->flags & AVFMT_GLOBALHEADER)
+        c->flags |= CODEC_FLAG_GLOBAL_HEADER;
+
+    return st;
+}
+
+/**************************************************************/
+/* audio output */
+
+static float t, tincr, tincr2;
+
+static uint8_t **src_samples_data;
+static int       src_samples_linesize;
+static int       src_nb_samples;
+
+static int max_dst_nb_samples;
+uint8_t **dst_samples_data;
+int       dst_samples_linesize;
+int       dst_samples_size;
+
+struct SwrContext *swr_ctx = NULL;
+
+static void open_audio(AVFormatContext *oc, AVCodec *codec, AVStream *st)
+{
+    AVCodecContext *c;
+    int ret;
+
+    c = st->codec;
+
+    /* open it */
+    ret = avcodec_open2(c, codec, NULL);
+    if (ret < 0) {
+        fprintf(stderr, "Could not open audio codec: %s\n", av_err2str(ret));
+        exit(1);
+    }
+
+    /* init signal generator */
+    t     = 0;
+    tincr = 2 * M_PI * 110.0 / c->sample_rate;
+    /* increment frequency by 110 Hz per second */
+    tincr2 = 2 * M_PI * 110.0 / c->sample_rate / c->sample_rate;
+
+    src_nb_samples = c->codec->capabilities & CODEC_CAP_VARIABLE_FRAME_SIZE ?
+        10000 : c->frame_size;
+
+    ret = av_samples_alloc_array_and_samples(&src_samples_data, &src_samples_linesize, c->channels,
+                                             src_nb_samples, c->sample_fmt, 0);
+    if (ret < 0) {
+        fprintf(stderr, "Could not allocate source samples\n");
+        exit(1);
+    }
+
+    /* create resampler context */
+    if (c->sample_fmt != AV_SAMPLE_FMT_S16) {
+        swr_ctx = swr_alloc();
+        if (!swr_ctx) {
+            fprintf(stderr, "Could not allocate resampler context\n");
+            exit(1);
+        }
+
+        /* set options */
+        av_opt_set_int       (swr_ctx, "in_channel_count",   c->channels,       0);
+        av_opt_set_int       (swr_ctx, "in_sample_rate",     c->sample_rate,    0);
+        av_opt_set_sample_fmt(swr_ctx, "in_sample_fmt",      AV_SAMPLE_FMT_S16, 0);
+        av_opt_set_int       (swr_ctx, "out_channel_count",  c->channels,       0);
+        av_opt_set_int       (swr_ctx, "out_sample_rate",    c->sample_rate,    0);
+        av_opt_set_sample_fmt(swr_ctx, "out_sample_fmt",     c->sample_fmt,     0);
+
+        /* initialize the resampling context */
+        if ((ret = swr_init(swr_ctx)) < 0) {
+            fprintf(stderr, "Failed to initialize the resampling context\n");
+            exit(1);
+        }
+    }
+
+    /* compute the number of converted samples: buffering is avoided
+     * ensuring that the output buffer will contain at least all the
+     * converted input samples */
+    max_dst_nb_samples = src_nb_samples;
+    ret = av_samples_alloc_array_and_samples(&dst_samples_data, &dst_samples_linesize, c->channels,
+                                             max_dst_nb_samples, c->sample_fmt, 0);
+    if (ret < 0) {
+        fprintf(stderr, "Could not allocate destination samples\n");
+        exit(1);
+    }
+    dst_samples_size = av_samples_get_buffer_size(NULL, c->channels, max_dst_nb_samples,
+                                                  c->sample_fmt, 0);
+}
+
+/* Prepare a 16 bit dummy audio frame of 'frame_size' samples and
+ * 'nb_channels' channels. */
+static void get_audio_frame(int16_t *samples, int frame_size, int nb_channels)
+{
+    int j, i, v;
+    int16_t *q;
+
+    q = samples;
+    for (j = 0; j < frame_size; j++) {
+        v = (int)(sin(t) * 10000);
+        for (i = 0; i < nb_channels; i++)
+            *q++ = v;
+        t     += tincr;
+        tincr += tincr2;
+    }
+}
+
+static void write_audio_frame(AVFormatContext *oc, AVStream *st)
+{
+    AVCodecContext *c;
+    AVPacket pkt = { 0 }; // data and size must be 0;
+    AVFrame *frame = av_frame_alloc();
+    int got_packet, ret, dst_nb_samples;
+
+    av_init_packet(&pkt);
+    c = st->codec;
+
+    get_audio_frame((int16_t *)src_samples_data[0], src_nb_samples, c->channels);
+
+    /* convert samples from native format to destination codec format, using the resampler */
+    if (swr_ctx) {
+        /* compute destination number of samples */
+        dst_nb_samples = av_rescale_rnd(swr_get_delay(swr_ctx, c->sample_rate) + src_nb_samples,
+                                        c->sample_rate, c->sample_rate, AV_ROUND_UP);
+        if (dst_nb_samples > max_dst_nb_samples) {
+            av_free(dst_samples_data[0]);
+            ret = av_samples_alloc(dst_samples_data, &dst_samples_linesize, c->channels,
+                                   dst_nb_samples, c->sample_fmt, 0);
+            if (ret < 0)
+                exit(1);
+            max_dst_nb_samples = dst_nb_samples;
+            dst_samples_size = av_samples_get_buffer_size(NULL, c->channels, dst_nb_samples,
+                                                          c->sample_fmt, 0);
+        }
+
+        /* convert to destination format */
+        ret = swr_convert(swr_ctx,
+                          dst_samples_data, dst_nb_samples,
+                          (const uint8_t **)src_samples_data, src_nb_samples);
+        if (ret < 0) {
+            fprintf(stderr, "Error while converting\n");
+            exit(1);
+        }
+    } else {
+        dst_samples_data[0] = src_samples_data[0];
+        dst_nb_samples = src_nb_samples;
+    }
+
+    frame->nb_samples = dst_nb_samples;
+    avcodec_fill_audio_frame(frame, c->channels, c->sample_fmt,
+                             dst_samples_data[0], dst_samples_size, 0);
+
+    ret = avcodec_encode_audio2(c, &pkt, frame, &got_packet);
+    if (ret < 0) {
+        fprintf(stderr, "Error encoding audio frame: %s\n", av_err2str(ret));
+        exit(1);
+    }
+
+    if (!got_packet)
+        return;
+
+    pkt.stream_index = st->index;
+
+    /* Write the compressed frame to the media file. */
+    ret = av_interleaved_write_frame(oc, &pkt);
+    if (ret != 0) {
+        fprintf(stderr, "Error while writing audio frame: %s\n",
+                av_err2str(ret));
+        exit(1);
+    }
+    av_frame_free(&frame);
+}
+
+static void close_audio(AVFormatContext *oc, AVStream *st)
+{
+    avcodec_close(st->codec);
+    av_free(src_samples_data[0]);
+    av_free(dst_samples_data[0]);
+}
+
+/**************************************************************/
+/* video output */
+
+static AVFrame *frame;
+static AVPicture src_picture, dst_picture;
+static int frame_count;
+
+static void open_video(AVFormatContext *oc, AVCodec *codec, AVStream *st)
+{
+    int ret;
+    AVCodecContext *c = st->codec;
+
+    /* open the codec */
+    ret = avcodec_open2(c, codec, NULL);
+    if (ret < 0) {
+        fprintf(stderr, "Could not open video codec: %s\n", av_err2str(ret));
+        exit(1);
+    }
+
+    /* allocate and init a re-usable frame */
+    frame = av_frame_alloc();
+    if (!frame) {
+        fprintf(stderr, "Could not allocate video frame\n");
+        exit(1);
+    }
+
+    /* Allocate the encoded raw picture. */
+    ret = avpicture_alloc(&dst_picture, c->pix_fmt, c->width, c->height);
+    if (ret < 0) {
+        fprintf(stderr, "Could not allocate picture: %s\n", av_err2str(ret));
+        exit(1);
+    }
+
+    /* If the output format is not YUV420P, then a temporary YUV420P
+     * picture is needed too. It is then converted to the required
+     * output format. */
+    if (c->pix_fmt != AV_PIX_FMT_YUV420P) {
+        ret = avpicture_alloc(&src_picture, AV_PIX_FMT_YUV420P, c->width, c->height);
+        if (ret < 0) {
+            fprintf(stderr, "Could not allocate temporary picture: %s\n",
+                    av_err2str(ret));
+            exit(1);
+        }
+    }
+
+    /* copy data and linesize picture pointers to frame */
+    *((AVPicture *)frame) = dst_picture;
+}
+
+/* Prepare a dummy image. */
+static void fill_yuv_image(AVPicture *pict, int frame_index,
+                           int width, int height)
+{
+    int x, y, i;
+
+    i = frame_index;
+
+    /* Y */
+    for (y = 0; y < height; y++)
+        for (x = 0; x < width; x++)
+            pict->data[0][y * pict->linesize[0] + x] = x + y + i * 3;
+
+    /* Cb and Cr */
+    for (y = 0; y < height / 2; y++) {
+        for (x = 0; x < width / 2; x++) {
+            pict->data[1][y * pict->linesize[1] + x] = 128 + y + i * 2;
+            pict->data[2][y * pict->linesize[2] + x] = 64 + x + i * 5;
+        }
+    }
+}
+
+static void write_video_frame(AVFormatContext *oc, AVStream *st)
+{
+    int ret;
+    static struct SwsContext *sws_ctx;
+    AVCodecContext *c = st->codec;
+
+    if (frame_count >= STREAM_NB_FRAMES) {
+        /* No more frames to compress. The codec has a latency of a few
+         * frames if using B-frames, so we get the last frames by
+         * passing the same picture again. */
+    } else {
+        if (c->pix_fmt != AV_PIX_FMT_YUV420P) {
+            /* as we only generate a YUV420P picture, we must convert it
+             * to the codec pixel format if needed */
+            if (!sws_ctx) {
+                sws_ctx = sws_getContext(c->width, c->height, AV_PIX_FMT_YUV420P,
+                                         c->width, c->height, c->pix_fmt,
+                                         sws_flags, NULL, NULL, NULL);
+                if (!sws_ctx) {
+                    fprintf(stderr,
+                            "Could not initialize the conversion context\n");
+                    exit(1);
+                }
+            }
+            fill_yuv_image(&src_picture, frame_count, c->width, c->height);
+            sws_scale(sws_ctx,
+                      (const uint8_t * const *)src_picture.data, src_picture.linesize,
+                      0, c->height, dst_picture.data, dst_picture.linesize);
+        } else {
+            fill_yuv_image(&dst_picture, frame_count, c->width, c->height);
+        }
+    }
+
+    if (oc->oformat->flags & AVFMT_RAWPICTURE) {
+        /* Raw video case - directly store the picture in the packet */
+        AVPacket pkt;
+        av_init_packet(&pkt);
+
+        pkt.flags        |= AV_PKT_FLAG_KEY;
+        pkt.stream_index  = st->index;
+        pkt.data          = dst_picture.data[0];
+        pkt.size          = sizeof(AVPicture);
+
+        ret = av_interleaved_write_frame(oc, &pkt);
+    } else {
+        AVPacket pkt = { 0 };
+        int got_packet;
+        av_init_packet(&pkt);
+
+        /* encode the image */
+        ret = avcodec_encode_video2(c, &pkt, frame, &got_packet);
+        if (ret < 0) {
+            fprintf(stderr, "Error encoding video frame: %s\n", av_err2str(ret));
+            exit(1);
+        }
+        /* If size is zero, it means the image was buffered. */
+
+        if (!ret && got_packet && pkt.size) {
+            pkt.stream_index = st->index;
+
+            /* Write the compressed frame to the media file. */
+            ret = av_interleaved_write_frame(oc, &pkt);
+        } else {
+            ret = 0;
+        }
+    }
+    if (ret != 0) {
+        fprintf(stderr, "Error while writing video frame: %s\n", av_err2str(ret));
+        exit(1);
+    }
+    frame_count++;
+}
+
+static void close_video(AVFormatContext *oc, AVStream *st)
+{
+    avcodec_close(st->codec);
+    av_free(src_picture.data[0]);
+    av_free(dst_picture.data[0]);
+    av_free(frame);
+}
+
+/**************************************************************/
+/* media file output */
+
+int main(int argc, char **argv)
+{
+    const char *filename;
+    AVOutputFormat *fmt;
+    AVFormatContext *oc;
+    AVStream *audio_st, *video_st;
+    AVCodec *audio_codec, *video_codec;
+    double audio_time, video_time;
+    int ret;
+
+    /* Initialize libavcodec, and register all codecs and formats. */
+    av_register_all();
+
+    if (argc != 2) {
+        printf("usage: %s output_file\n"
+               "API example program to output a media file with libavformat.\n"
+               "This program generates a synthetic audio and video stream, encodes and\n"
+               "muxes them into a file named output_file.\n"
+               "The output format is automatically guessed according to the file extension.\n"
+               "Raw images can also be output by using '%%d' in the filename.\n"
+               "\n", argv[0]);
+        return 1;
+    }
+
+    filename = argv[1];
+
+    /* allocate the output media context */
+    avformat_alloc_output_context2(&oc, NULL, NULL, filename);
+    if (!oc) {
+        printf("Could not deduce output format from file extension: using MPEG.\n");
+        avformat_alloc_output_context2(&oc, NULL, "mpeg", filename);
+    }
+    if (!oc) {
+        return 1;
+    }
+    fmt = oc->oformat;
+
+    /* Add the audio and video streams using the default format codecs
+     * and initialize the codecs. */
+    video_st = NULL;
+    audio_st = NULL;
+
+    if (fmt->video_codec != AV_CODEC_ID_NONE) {
+        video_st = add_stream(oc, &video_codec, fmt->video_codec);
+    }
+    if (fmt->audio_codec != AV_CODEC_ID_NONE) {
+        audio_st = add_stream(oc, &audio_codec, fmt->audio_codec);
+    }
+
+    /* Now that all the parameters are set, we can open the audio and
+     * video codecs and allocate the necessary encode buffers. */
+    if (video_st)
+        open_video(oc, video_codec, video_st);
+    if (audio_st)
+        open_audio(oc, audio_codec, audio_st);
+
+    av_dump_format(oc, 0, filename, 1);
+
+    /* open the output file, if needed */
+    if (!(fmt->flags & AVFMT_NOFILE)) {
+        ret = avio_open(&oc->pb, filename, AVIO_FLAG_WRITE);
+        if (ret < 0) {
+            fprintf(stderr, "Could not open '%s': %s\n", filename,
+                    av_err2str(ret));
+            return 1;
+        }
+    }
+
+    /* Write the stream header, if any. */
+    ret = avformat_write_header(oc, NULL);
+    if (ret < 0) {
+        fprintf(stderr, "Error occurred when opening output file: %s\n",
+                av_err2str(ret));
+        return 1;
+    }
+
+    if (frame)
+        frame->pts = 0;
+    for (;;) {
+        /* Compute current audio and video time. */
+        audio_time = audio_st ? audio_st->pts.val * av_q2d(audio_st->time_base) : 0.0;
+        video_time = video_st ? video_st->pts.val * av_q2d(video_st->time_base) : 0.0;
+
+        if ((!audio_st || audio_time >= STREAM_DURATION) &&
+            (!video_st || video_time >= STREAM_DURATION))
+            break;
+
+        /* write interleaved audio and video frames */
+        if (!video_st || (video_st && audio_st && audio_time < video_time)) {
+            write_audio_frame(oc, audio_st);
+        } else {
+            write_video_frame(oc, video_st);
+            frame->pts += av_rescale_q(1, video_st->codec->time_base, video_st->time_base);
+        }
+    }
+
+    /* Write the trailer, if any. The trailer must be written before you
+     * close the CodecContexts open when you wrote the header; otherwise
+     * av_write_trailer() may try to use memory that was freed on
+     * av_codec_close(). */
+    av_write_trailer(oc);
+
+    /* Close each codec. */
+    if (video_st)
+        close_video(oc, video_st);
+    if (audio_st)
+        close_audio(oc, audio_st);
+
+    if (!(fmt->flags & AVFMT_NOFILE))
+        /* Close the output file. */
+        avio_close(oc->pb);
+
+    /* free the stream */
+    avformat_free_context(oc);
+
+    return 0;
+}
diff --git a/dependencies/ffmpeg/doc/examples/resampling_audio.c b/dependencies/ffmpeg/doc/examples/resampling_audio.c
new file mode 100644 (file)
index 0000000..a15e042
--- /dev/null
@@ -0,0 +1,215 @@
+/*
+ * Copyright (c) 2012 Stefano Sabatini
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+/**
+ * @example doc/examples/resampling_audio.c
+ * libswresample API use example.
+ */
+
+#include <libavutil/opt.h>
+#include <libavutil/channel_layout.h>
+#include <libavutil/samplefmt.h>
+#include <libswresample/swresample.h>
+
+static int get_format_from_sample_fmt(const char **fmt,
+                                      enum AVSampleFormat sample_fmt)
+{
+    int i;
+    struct sample_fmt_entry {
+        enum AVSampleFormat sample_fmt; const char *fmt_be, *fmt_le;
+    } sample_fmt_entries[] = {
+        { AV_SAMPLE_FMT_U8,  "u8",    "u8"    },
+        { AV_SAMPLE_FMT_S16, "s16be", "s16le" },
+        { AV_SAMPLE_FMT_S32, "s32be", "s32le" },
+        { AV_SAMPLE_FMT_FLT, "f32be", "f32le" },
+        { AV_SAMPLE_FMT_DBL, "f64be", "f64le" },
+    };
+    *fmt = NULL;
+
+    for (i = 0; i < FF_ARRAY_ELEMS(sample_fmt_entries); i++) {
+        struct sample_fmt_entry *entry = &sample_fmt_entries[i];
+        if (sample_fmt == entry->sample_fmt) {
+            *fmt = AV_NE(entry->fmt_be, entry->fmt_le);
+            return 0;
+        }
+    }
+
+    fprintf(stderr,
+            "Sample format %s not supported as output format\n",
+            av_get_sample_fmt_name(sample_fmt));
+    return AVERROR(EINVAL);
+}
+
+/**
+ * Fill dst buffer with nb_samples, generated starting from t.
+ */
+static void fill_samples(double *dst, int nb_samples, int nb_channels, int sample_rate, double *t)
+{
+    int i, j;
+    double tincr = 1.0 / sample_rate, *dstp = dst;
+    const double c = 2 * M_PI * 440.0;
+
+    /* generate sin tone with 440Hz frequency and duplicated channels */
+    for (i = 0; i < nb_samples; i++) {
+        *dstp = sin(c * *t);
+        for (j = 1; j < nb_channels; j++)
+            dstp[j] = dstp[0];
+        dstp += nb_channels;
+        *t += tincr;
+    }
+}
+
+int main(int argc, char **argv)
+{
+    int64_t src_ch_layout = AV_CH_LAYOUT_STEREO, dst_ch_layout = AV_CH_LAYOUT_SURROUND;
+    int src_rate = 48000, dst_rate = 44100;
+    uint8_t **src_data = NULL, **dst_data = NULL;
+    int src_nb_channels = 0, dst_nb_channels = 0;
+    int src_linesize, dst_linesize;
+    int src_nb_samples = 1024, dst_nb_samples, max_dst_nb_samples;
+    enum AVSampleFormat src_sample_fmt = AV_SAMPLE_FMT_DBL, dst_sample_fmt = AV_SAMPLE_FMT_S16;
+    const char *dst_filename = NULL;
+    FILE *dst_file;
+    int dst_bufsize;
+    const char *fmt;
+    struct SwrContext *swr_ctx;
+    double t;
+    int ret;
+
+    if (argc != 2) {
+        fprintf(stderr, "Usage: %s output_file\n"
+                "API example program to show how to resample an audio stream with libswresample.\n"
+                "This program generates a series of audio frames, resamples them to a specified "
+                "output format and rate and saves them to an output file named output_file.\n",
+            argv[0]);
+        exit(1);
+    }
+    dst_filename = argv[1];
+
+    dst_file = fopen(dst_filename, "wb");
+    if (!dst_file) {
+        fprintf(stderr, "Could not open destination file %s\n", dst_filename);
+        exit(1);
+    }
+
+    /* create resampler context */
+    swr_ctx = swr_alloc();
+    if (!swr_ctx) {
+        fprintf(stderr, "Could not allocate resampler context\n");
+        ret = AVERROR(ENOMEM);
+        goto end;
+    }
+
+    /* set options */
+    av_opt_set_int(swr_ctx, "in_channel_layout",    src_ch_layout, 0);
+    av_opt_set_int(swr_ctx, "in_sample_rate",       src_rate, 0);
+    av_opt_set_sample_fmt(swr_ctx, "in_sample_fmt", src_sample_fmt, 0);
+
+    av_opt_set_int(swr_ctx, "out_channel_layout",    dst_ch_layout, 0);
+    av_opt_set_int(swr_ctx, "out_sample_rate",       dst_rate, 0);
+    av_opt_set_sample_fmt(swr_ctx, "out_sample_fmt", dst_sample_fmt, 0);
+
+    /* initialize the resampling context */
+    if ((ret = swr_init(swr_ctx)) < 0) {
+        fprintf(stderr, "Failed to initialize the resampling context\n");
+        goto end;
+    }
+
+    /* allocate source and destination samples buffers */
+
+    src_nb_channels = av_get_channel_layout_nb_channels(src_ch_layout);
+    ret = av_samples_alloc_array_and_samples(&src_data, &src_linesize, src_nb_channels,
+                                             src_nb_samples, src_sample_fmt, 0);
+    if (ret < 0) {
+        fprintf(stderr, "Could not allocate source samples\n");
+        goto end;
+    }
+
+    /* compute the number of converted samples: buffering is avoided
+     * ensuring that the output buffer will contain at least all the
+     * converted input samples */
+    max_dst_nb_samples = dst_nb_samples =
+        av_rescale_rnd(src_nb_samples, dst_rate, src_rate, AV_ROUND_UP);
+
+    /* buffer is going to be directly written to a rawaudio file, no alignment */
+    dst_nb_channels = av_get_channel_layout_nb_channels(dst_ch_layout);
+    ret = av_samples_alloc_array_and_samples(&dst_data, &dst_linesize, dst_nb_channels,
+                                             dst_nb_samples, dst_sample_fmt, 0);
+    if (ret < 0) {
+        fprintf(stderr, "Could not allocate destination samples\n");
+        goto end;
+    }
+
+    t = 0;
+    do {
+        /* generate synthetic audio */
+        fill_samples((double *)src_data[0], src_nb_samples, src_nb_channels, src_rate, &t);
+
+        /* compute destination number of samples */
+        dst_nb_samples = av_rescale_rnd(swr_get_delay(swr_ctx, src_rate) +
+                                        src_nb_samples, dst_rate, src_rate, AV_ROUND_UP);
+        if (dst_nb_samples > max_dst_nb_samples) {
+            av_free(dst_data[0]);
+            ret = av_samples_alloc(dst_data, &dst_linesize, dst_nb_channels,
+                                   dst_nb_samples, dst_sample_fmt, 1);
+            if (ret < 0)
+                break;
+            max_dst_nb_samples = dst_nb_samples;
+        }
+
+        /* convert to destination format */
+        ret = swr_convert(swr_ctx, dst_data, dst_nb_samples, (const uint8_t **)src_data, src_nb_samples);
+        if (ret < 0) {
+            fprintf(stderr, "Error while converting\n");
+            goto end;
+        }
+        dst_bufsize = av_samples_get_buffer_size(&dst_linesize, dst_nb_channels,
+                                                 ret, dst_sample_fmt, 1);
+        if (dst_bufsize < 0) {
+            fprintf(stderr, "Could not get sample buffer size\n");
+            goto end;
+        }
+        printf("t:%f in:%d out:%d\n", t, src_nb_samples, ret);
+        fwrite(dst_data[0], 1, dst_bufsize, dst_file);
+    } while (t < 10);
+
+    if ((ret = get_format_from_sample_fmt(&fmt, dst_sample_fmt)) < 0)
+        goto end;
+    fprintf(stderr, "Resampling succeeded. Play the output file with the command:\n"
+            "ffplay -f %s -channel_layout %"PRId64" -channels %d -ar %d %s\n",
+            fmt, dst_ch_layout, dst_nb_channels, dst_rate, dst_filename);
+
+end:
+    if (dst_file)
+        fclose(dst_file);
+
+    if (src_data)
+        av_freep(&src_data[0]);
+    av_freep(&src_data);
+
+    if (dst_data)
+        av_freep(&dst_data[0]);
+    av_freep(&dst_data);
+
+    swr_free(&swr_ctx);
+    return ret < 0;
+}
diff --git a/dependencies/ffmpeg/doc/examples/scaling_video.c b/dependencies/ffmpeg/doc/examples/scaling_video.c
new file mode 100644 (file)
index 0000000..be2c510
--- /dev/null
@@ -0,0 +1,141 @@
+/*
+ * Copyright (c) 2012 Stefano Sabatini
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
+ * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+/**
+ * @file
+ * libswscale API use example.
+ * @example doc/examples/scaling_video.c
+ */
+
+#include <libavutil/imgutils.h>
+#include <libavutil/parseutils.h>
+#include <libswscale/swscale.h>
+
+static void fill_yuv_image(uint8_t *data[4], int linesize[4],
+                           int width, int height, int frame_index)
+{
+    int x, y;
+
+    /* Y */
+    for (y = 0; y < height; y++)
+        for (x = 0; x < width; x++)
+            data[0][y * linesize[0] + x] = x + y + frame_index * 3;
+
+    /* Cb and Cr */
+    for (y = 0; y < height / 2; y++) {
+        for (x = 0; x < width / 2; x++) {
+            data[1][y * linesize[1] + x] = 128 + y + frame_index * 2;
+            data[2][y * linesize[2] + x] = 64 + x + frame_index * 5;
+        }
+    }
+}
+
+int main(int argc, char **argv)
+{
+    uint8_t *src_data[4], *dst_data[4];
+    int src_linesize[4], dst_linesize[4];
+    int src_w = 320, src_h = 240, dst_w, dst_h;
+    enum AVPixelFormat src_pix_fmt = AV_PIX_FMT_YUV420P, dst_pix_fmt = AV_PIX_FMT_RGB24;
+    const char *dst_size = NULL;
+    const char *dst_filename = NULL;
+    FILE *dst_file;
+    int dst_bufsize;
+    struct SwsContext *sws_ctx;
+    int i, ret;
+
+    if (argc != 3) {
+        fprintf(stderr, "Usage: %s output_file output_size\n"
+                "API example program to show how to scale an image with libswscale.\n"
+                "This program generates a series of pictures, rescales them to the given "
+                "output_size and saves them to an output file named output_file\n."
+                "\n", argv[0]);
+        exit(1);
+    }
+    dst_filename = argv[1];
+    dst_size     = argv[2];
+
+    if (av_parse_video_size(&dst_w, &dst_h, dst_size) < 0) {
+        fprintf(stderr,
+                "Invalid size '%s', must be in the form WxH or a valid size abbreviation\n",
+                dst_size);
+        exit(1);
+    }
+
+    dst_file = fopen(dst_filename, "wb");
+    if (!dst_file) {
+        fprintf(stderr, "Could not open destination file %s\n", dst_filename);
+        exit(1);
+    }
+
+    /* create scaling context */
+    sws_ctx = sws_getContext(src_w, src_h, src_pix_fmt,
+                             dst_w, dst_h, dst_pix_fmt,
+                             SWS_BILINEAR, NULL, NULL, NULL);
+    if (!sws_ctx) {
+        fprintf(stderr,
+                "Impossible to create scale context for the conversion "
+                "fmt:%s s:%dx%d -> fmt:%s s:%dx%d\n",
+                av_get_pix_fmt_name(src_pix_fmt), src_w, src_h,
+                av_get_pix_fmt_name(dst_pix_fmt), dst_w, dst_h);
+        ret = AVERROR(EINVAL);
+        goto end;
+    }
+
+    /* allocate source and destination image buffers */
+    if ((ret = av_image_alloc(src_data, src_linesize,
+                              src_w, src_h, src_pix_fmt, 16)) < 0) {
+        fprintf(stderr, "Could not allocate source image\n");
+        goto end;
+    }
+
+    /* buffer is going to be written to rawvideo file, no alignment */
+    if ((ret = av_image_alloc(dst_data, dst_linesize,
+                              dst_w, dst_h, dst_pix_fmt, 1)) < 0) {
+        fprintf(stderr, "Could not allocate destination image\n");
+        goto end;
+    }
+    dst_bufsize = ret;
+
+    for (i = 0; i < 100; i++) {
+        /* generate synthetic video */
+        fill_yuv_image(src_data, src_linesize, src_w, src_h, i);
+
+        /* convert to destination format */
+        sws_scale(sws_ctx, (const uint8_t * const*)src_data,
+                  src_linesize, 0, src_h, dst_data, dst_linesize);
+
+        /* write scaled image to file */
+        fwrite(dst_data[0], 1, dst_bufsize, dst_file);
+    }
+
+    fprintf(stderr, "Scaling succeeded. Play the output file with the command:\n"
+           "ffplay -f rawvideo -pix_fmt %s -video_size %dx%d %s\n",
+           av_get_pix_fmt_name(dst_pix_fmt), dst_w, dst_h, dst_filename);
+
+end:
+    if (dst_file)
+        fclose(dst_file);
+    av_freep(&src_data[0]);
+    av_freep(&dst_data[0]);
+    sws_freeContext(sws_ctx);
+    return ret < 0;
+}
diff --git a/dependencies/ffmpeg/doc/examples/transcode_aac.c b/dependencies/ffmpeg/doc/examples/transcode_aac.c
new file mode 100644 (file)
index 0000000..35deb4c
--- /dev/null
@@ -0,0 +1,752 @@
+/*
+ * This file is part of FFmpeg.
+ *
+ * FFmpeg is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2.1 of the License, or (at your option) any later version.
+ *
+ * FFmpeg is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with FFmpeg; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ */
+
+/**
+ * @file simple audio converter
+ * Convert an input audio file to AAC in an MP4 container using FFmpeg.
+ * @author Andreas Unterweger (dustsigns@gmail.com)
+ */
+
+#include <stdio.h>
+
+#include "libavformat/avformat.h"
+#include "libavformat/avio.h"
+
+#include "libavcodec/avcodec.h"
+
+#include "libavutil/audio_fifo.h"
+#include "libavutil/avassert.h"
+#include "libavutil/avstring.h"
+#include "libavutil/frame.h"
+#include "libavutil/opt.h"
+
+#include "libswresample/swresample.h"
+
+/** The output bit rate in kbit/s */
+#define OUTPUT_BIT_RATE 48000
+/** The number of output channels */
+#define OUTPUT_CHANNELS 2
+/** The audio sample output format */
+#define OUTPUT_SAMPLE_FORMAT AV_SAMPLE_FMT_S16
+
+/**
+ * Convert an error code into a text message.
+ * @param error Error code to be converted
+ * @return Corresponding error text (not thread-safe)
+ */
+static char *const get_error_text(const int error)
+{
+    static char error_buffer[255];
+    av_strerror(error, error_buffer, sizeof(error_buffer));
+    return error_buffer;
+}
+
+/** Open an input file and the required decoder. */
+static int open_input_file(const char *filename,
+                           AVFormatContext **input_format_context,
+                           AVCodecContext **input_codec_context)
+{
+    AVCodec *input_codec;
+    int error;
+
+    /** Open the input file to read from it. */
+    if ((error = avformat_open_input(input_format_context, filename, NULL,
+                                     NULL)) < 0) {
+        fprintf(stderr, "Could not open input file '%s' (error '%s')\n",
+                filename, get_error_text(error));
+        *input_format_context = NULL;
+        return error;
+    }
+
+    /** Get information on the input file (number of streams etc.). */
+    if ((error = avformat_find_stream_info(*input_format_context, NULL)) < 0) {
+        fprintf(stderr, "Could not open find stream info (error '%s')\n",
+                get_error_text(error));
+        avformat_close_input(input_format_context);
+        return error;
+    }
+
+    /** Make sure that there is only one stream in the input file. */
+    if ((*input_format_context)->nb_streams != 1) {
+        fprintf(stderr, "Expected one audio input stream, but found %d\n",
+                (*input_format_context)->nb_streams);
+        avformat_close_input(input_format_context);
+        return AVERROR_EXIT;
+    }
+
+    /** Find a decoder for the audio stream. */
+    if (!(input_codec = avcodec_find_decoder((*input_format_context)->streams[0]->codec->codec_id))) {
+        fprintf(stderr, "Could not find input codec\n");
+        avformat_close_input(input_format_context);
+        return AVERROR_EXIT;
+    }
+
+    /** Open the decoder for the audio stream to use it later. */
+    if ((error = avcodec_open2((*input_format_context)->streams[0]->codec,
+                               input_codec, NULL)) < 0) {
+        fprintf(stderr, "Could not open input codec (error '%s')\n",
+                get_error_text(error));
+        avformat_close_input(input_format_context);
+        return error;
+    }
+
+    /** Save the decoder context for easier access later. */
+    *input_codec_context = (*input_format_context)->streams[0]->codec;
+
+    return 0;
+}
+
+/**
+ * Open an output file and the required encoder.
+ * Also set some basic encoder parameters.
+ * Some of these parameters are based on the input file's parameters.
+ */
+static int open_output_file(const char *filename,
+                            AVCodecContext *input_codec_context,
+                            AVFormatContext **output_format_context,
+                            AVCodecContext **output_codec_context)
+{
+    AVIOContext *output_io_context = NULL;
+    AVStream *stream               = NULL;
+    AVCodec *output_codec          = NULL;
+    int error;
+
+    /** Open the output file to write to it. */
+    if ((error = avio_open(&output_io_context, filename,
+                           AVIO_FLAG_WRITE)) < 0) {
+        fprintf(stderr, "Could not open output file '%s' (error '%s')\n",
+                filename, get_error_text(error));
+        return error;
+    }
+
+    /** Create a new format context for the output container format. */
+    if (!(*output_format_context = avformat_alloc_context())) {
+        fprintf(stderr, "Could not allocate output format context\n");
+        return AVERROR(ENOMEM);
+    }
+
+    /** Associate the output file (pointer) with the container format context. */
+    (*output_format_context)->pb = output_io_context;
+
+    /** Guess the desired container format based on the file extension. */
+    if (!((*output_format_context)->oformat = av_guess_format(NULL, filename,
+                                                              NULL))) {
+        fprintf(stderr, "Could not find output file format\n");
+        goto cleanup;
+    }
+
+    av_strlcpy((*output_format_context)->filename, filename,
+               sizeof((*output_format_context)->filename));
+
+    /** Find the encoder to be used by its name. */
+    if (!(output_codec = avcodec_find_encoder(AV_CODEC_ID_AAC))) {
+        fprintf(stderr, "Could not find an AAC encoder.\n");
+        goto cleanup;
+    }
+
+    /** Create a new audio stream in the output file container. */
+    if (!(stream = avformat_new_stream(*output_format_context, output_codec))) {
+        fprintf(stderr, "Could not create new stream\n");
+        error = AVERROR(ENOMEM);
+        goto cleanup;
+    }
+
+    /** Save the encoder context for easiert access later. */
+    *output_codec_context = stream->codec;
+
+    /**
+     * Set the basic encoder parameters.
+     * The input file's sample rate is used to avoid a sample rate conversion.
+     */
+    (*output_codec_context)->channels       = OUTPUT_CHANNELS;
+    (*output_codec_context)->channel_layout = av_get_default_channel_layout(OUTPUT_CHANNELS);
+    (*output_codec_context)->sample_rate    = input_codec_context->sample_rate;
+    (*output_codec_context)->sample_fmt     = AV_SAMPLE_FMT_S16;
+    (*output_codec_context)->bit_rate       = OUTPUT_BIT_RATE;
+
+    /**
+     * Some container formats (like MP4) require global headers to be present
+     * Mark the encoder so that it behaves accordingly.
+     */
+    if ((*output_format_context)->oformat->flags & AVFMT_GLOBALHEADER)
+        (*output_codec_context)->flags |= CODEC_FLAG_GLOBAL_HEADER;
+
+    /** Open the encoder for the audio stream to use it later. */
+    if ((error = avcodec_open2(*output_codec_context, output_codec, NULL)) < 0) {
+        fprintf(stderr, "Could not open output codec (error '%s')\n",
+                get_error_text(error));
+        goto cleanup;
+    }
+
+    return 0;
+
+cleanup:
+    avio_close((*output_format_context)->pb);
+    avformat_free_context(*output_format_context);
+    *output_format_context = NULL;
+    return error < 0 ? error : AVERROR_EXIT;
+}
+
+/** Initialize one data packet for reading or writing. */
+static void init_packet(AVPacket *packet)
+{
+    av_init_packet(packet);
+    /** Set the packet data and size so that it is recognized as being empty. */
+    packet->data = NULL;
+    packet->size = 0;
+}
+
+/** Initialize one audio frame for reading from the input file */
+static int init_input_frame(AVFrame **frame)
+{
+    if (!(*frame = av_frame_alloc())) {
+        fprintf(stderr, "Could not allocate input frame\n");
+        return AVERROR(ENOMEM);
+    }
+    return 0;
+}
+
+/**
+ * Initialize the audio resampler based on the input and output codec settings.
+ * If the input and output sample formats differ, a conversion is required
+ * libswresample takes care of this, but requires initialization.
+ */
+static int init_resampler(AVCodecContext *input_codec_context,
+                          AVCodecContext *output_codec_context,
+                          SwrContext **resample_context)
+{
+        int error;
+
+        /**
+         * Create a resampler context for the conversion.
+         * Set the conversion parameters.
+         * Default channel layouts based on the number of channels
+         * are assumed for simplicity (they are sometimes not detected
+         * properly by the demuxer and/or decoder).
+         */
+        *resample_context = swr_alloc_set_opts(NULL,
+                                              av_get_default_channel_layout(output_codec_context->channels),
+                                              output_codec_context->sample_fmt,
+                                              output_codec_context->sample_rate,
+                                              av_get_default_channel_layout(input_codec_context->channels),
+                                              input_codec_context->sample_fmt,
+                                              input_codec_context->sample_rate,
+                                              0, NULL);
+        if (!*resample_context) {
+            fprintf(stderr, "Could not allocate resample context\n");
+            return AVERROR(ENOMEM);
+        }
+        /**
+        * Perform a sanity check so that the number of converted samples is
+        * not greater than the number of samples to be converted.
+        * If the sample rates differ, this case has to be handled differently
+        */
+        av_assert0(output_codec_context->sample_rate == input_codec_context->sample_rate);
+
+        /** Open the resampler with the specified parameters. */
+        if ((error = swr_init(*resample_context)) < 0) {
+            fprintf(stderr, "Could not open resample context\n");
+            swr_free(resample_context);
+            return error;
+        }
+    return 0;
+}
+
+/** Initialize a FIFO buffer for the audio samples to be encoded. */
+static int init_fifo(AVAudioFifo **fifo)
+{
+    /** Create the FIFO buffer based on the specified output sample format. */
+    if (!(*fifo = av_audio_fifo_alloc(OUTPUT_SAMPLE_FORMAT, OUTPUT_CHANNELS, 1))) {
+        fprintf(stderr, "Could not allocate FIFO\n");
+        return AVERROR(ENOMEM);
+    }
+    return 0;
+}
+
+/** Write the header of the output file container. */
+static int write_output_file_header(AVFormatContext *output_format_context)
+{
+    int error;
+    if ((error = avformat_write_header(output_format_context, NULL)) < 0) {
+        fprintf(stderr, "Could not write output file header (error '%s')\n",
+                get_error_text(error));
+        return error;
+    }
+    return 0;
+}
+
+/** Decode one audio frame from the input file. */
+static int decode_audio_frame(AVFrame *frame,
+                              AVFormatContext *input_format_context,
+                              AVCodecContext *input_codec_context,
+                              int *data_present, int *finished)
+{
+    /** Packet used for temporary storage. */
+    AVPacket input_packet;
+    int error;
+    init_packet(&input_packet);
+
+    /** Read one audio frame from the input file into a temporary packet. */
+    if ((error = av_read_frame(input_format_context, &input_packet)) < 0) {
+        /** If we are the the end of the file, flush the decoder below. */
+        if (error == AVERROR_EOF)
+            *finished = 1;
+        else {
+            fprintf(stderr, "Could not read frame (error '%s')\n",
+                    get_error_text(error));
+            return error;
+        }
+    }
+
+    /**
+     * Decode the audio frame stored in the temporary packet.
+     * The input audio stream decoder is used to do this.
+     * If we are at the end of the file, pass an empty packet to the decoder
+     * to flush it.
+     */
+    if ((error = avcodec_decode_audio4(input_codec_context, frame,
+                                       data_present, &input_packet)) < 0) {
+        fprintf(stderr, "Could not decode frame (error '%s')\n",
+                get_error_text(error));
+        av_free_packet(&input_packet);
+        return error;
+    }
+
+    /**
+     * If the decoder has not been flushed completely, we are not finished,
+     * so that this function has to be called again.
+     */
+    if (*finished && *data_present)
+        *finished = 0;
+    av_free_packet(&input_packet);
+    return 0;
+}
+
+/**
+ * Initialize a temporary storage for the specified number of audio samples.
+ * The conversion requires temporary storage due to the different format.
+ * The number of audio samples to be allocated is specified in frame_size.
+ */
+static int init_converted_samples(uint8_t ***converted_input_samples,
+                                  AVCodecContext *output_codec_context,
+                                  int frame_size)
+{
+    int error;
+
+    /**
+     * Allocate as many pointers as there are audio channels.
+     * Each pointer will later point to the audio samples of the corresponding
+     * channels (although it may be NULL for interleaved formats).
+     */
+    if (!(*converted_input_samples = calloc(output_codec_context->channels,
+                                            sizeof(**converted_input_samples)))) {
+        fprintf(stderr, "Could not allocate converted input sample pointers\n");
+        return AVERROR(ENOMEM);
+    }
+
+    /**
+     * Allocate memory for the samples of all channels in one consecutive
+     * block for convenience.
+     */
+    if ((error = av_samples_alloc(*converted_input_samples, NULL,
+                                  output_codec_context->channels,
+                                  frame_size,
+                                  output_codec_context->sample_fmt, 0)) < 0) {
+        fprintf(stderr,
+                "Could not allocate converted input samples (error '%s')\n",
+                get_error_text(error));
+        av_freep(&(*converted_input_samples)[0]);
+        free(*converted_input_samples);
+        return error;
+    }
+    return 0;
+}
+
+/**
+ * Convert the input audio samples into the output sample format.
+ * The conversion happens on a per-frame basis, the size of which is specified
+ * by frame_size.
+ */
+static int convert_samples(const uint8_t **input_data,
+                           uint8_t **converted_data, const int frame_size,
+                           SwrContext *resample_context)
+{
+    int error;
+
+    /** Convert the samples using the resampler. */
+    if ((error = swr_convert(resample_context,
+                             converted_data, frame_size,
+                             input_data    , frame_size)) < 0) {
+        fprintf(stderr, "Could not convert input samples (error '%s')\n",
+                get_error_text(error));
+        return error;
+    }
+
+    return 0;
+}
+
+/** Add converted input audio samples to the FIFO buffer for later processing. */
+static int add_samples_to_fifo(AVAudioFifo *fifo,
+                               uint8_t **converted_input_samples,
+                               const int frame_size)
+{
+    int error;
+
+    /**
+     * Make the FIFO as large as it needs to be to hold both,
+     * the old and the new samples.
+     */
+    if ((error = av_audio_fifo_realloc(fifo, av_audio_fifo_size(fifo) + frame_size)) < 0) {
+        fprintf(stderr, "Could not reallocate FIFO\n");
+        return error;
+    }
+
+    /** Store the new samples in the FIFO buffer. */
+    if (av_audio_fifo_write(fifo, (void **)converted_input_samples,
+                            frame_size) < frame_size) {
+        fprintf(stderr, "Could not write data to FIFO\n");
+        return AVERROR_EXIT;
+    }
+    return 0;
+}
+
+/**
+ * Read one audio frame from the input file, decodes, converts and stores
+ * it in the FIFO buffer.
+ */
+static int read_decode_convert_and_store(AVAudioFifo *fifo,
+                                         AVFormatContext *input_format_context,
+                                         AVCodecContext *input_codec_context,
+                                         AVCodecContext *output_codec_context,
+                                         SwrContext *resampler_context,
+                                         int *finished)
+{
+    /** Temporary storage of the input samples of the frame read from the file. */
+    AVFrame *input_frame = NULL;
+    /** Temporary storage for the converted input samples. */
+    uint8_t **converted_input_samples = NULL;
+    int data_present;
+    int ret = AVERROR_EXIT;
+
+    /** Initialize temporary storage for one input frame. */
+    if (init_input_frame(&input_frame))
+        goto cleanup;
+    /** Decode one frame worth of audio samples. */
+    if (decode_audio_frame(input_frame, input_format_context,
+                           input_codec_context, &data_present, finished))
+        goto cleanup;
+    /**
+     * If we are at the end of the file and there are no more samples
+     * in the decoder which are delayed, we are actually finished.
+     * This must not be treated as an error.
+     */
+    if (*finished && !data_present) {
+        ret = 0;
+        goto cleanup;
+    }
+    /** If there is decoded data, convert and store it */
+    if (data_present) {
+        /** Initialize the temporary storage for the converted input samples. */
+        if (init_converted_samples(&converted_input_samples, output_codec_context,
+                                   input_frame->nb_samples))
+            goto cleanup;
+
+        /**
+         * Convert the input samples to the desired output sample format.
+         * This requires a temporary storage provided by converted_input_samples.
+         */
+        if (convert_samples((const uint8_t**)input_frame->extended_data, converted_input_samples,
+                            input_frame->nb_samples, resampler_context))
+            goto cleanup;
+
+        /** Add the converted input samples to the FIFO buffer for later processing. */
+        if (add_samples_to_fifo(fifo, converted_input_samples,
+                                input_frame->nb_samples))
+            goto cleanup;
+        ret = 0;
+    }
+    ret = 0;
+
+cleanup:
+    if (converted_input_samples) {
+        av_freep(&converted_input_samples[0]);
+        free(converted_input_samples);
+    }
+    av_frame_free(&input_frame);
+
+    return ret;
+}
+
+/**
+ * Initialize one input frame for writing to the output file.
+ * The frame will be exactly frame_size samples large.
+ */
+static int init_output_frame(AVFrame **frame,
+                             AVCodecContext *output_codec_context,
+                             int frame_size)
+{
+    int error;
+
+    /** Create a new frame to store the audio samples. */
+    if (!(*frame = av_frame_alloc())) {
+        fprintf(stderr, "Could not allocate output frame\n");
+        return AVERROR_EXIT;
+    }
+
+    /**
+     * Set the frame's parameters, especially its size and format.
+     * av_frame_get_buffer needs this to allocate memory for the
+     * audio samples of the frame.
+     * Default channel layouts based on the number of channels
+     * are assumed for simplicity.
+     */
+    (*frame)->nb_samples     = frame_size;
+    (*frame)->channel_layout = output_codec_context->channel_layout;
+    (*frame)->format         = output_codec_context->sample_fmt;
+    (*frame)->sample_rate    = output_codec_context->sample_rate;
+
+    /**
+     * Allocate the samples of the created frame. This call will make
+     * sure that the audio frame can hold as many samples as specified.
+     */
+    if ((error = av_frame_get_buffer(*frame, 0)) < 0) {
+        fprintf(stderr, "Could allocate output frame samples (error '%s')\n",
+                get_error_text(error));
+        av_frame_free(frame);
+        return error;
+    }
+
+    return 0;
+}
+
+/** Encode one frame worth of audio to the output file. */
+static int encode_audio_frame(AVFrame *frame,
+                              AVFormatContext *output_format_context,
+                              AVCodecContext *output_codec_context,
+                              int *data_present)
+{
+    /** Packet used for temporary storage. */
+    AVPacket output_packet;
+    int error;
+    init_packet(&output_packet);
+
+    /**
+     * Encode the audio frame and store it in the temporary packet.
+     * The output audio stream encoder is used to do this.
+     */
+    if ((error = avcodec_encode_audio2(output_codec_context, &output_packet,
+                                       frame, data_present)) < 0) {
+        fprintf(stderr, "Could not encode frame (error '%s')\n",
+                get_error_text(error));
+        av_free_packet(&output_packet);
+        return error;
+    }
+
+    /** Write one audio frame from the temporary packet to the output file. */
+    if (*data_present) {
+        if ((error = av_write_frame(output_format_context, &output_packet)) < 0) {
+            fprintf(stderr, "Could not write frame (error '%s')\n",
+                    get_error_text(error));
+            av_free_packet(&output_packet);
+            return error;
+        }
+
+        av_free_packet(&output_packet);
+    }
+
+    return 0;
+}
+
+/**
+ * Load one audio frame from the FIFO buffer, encode and write it to the
+ * output file.
+ */
+static int load_encode_and_write(AVAudioFifo *fifo,
+                                 AVFormatContext *output_format_context,
+                                 AVCodecContext *output_codec_context)
+{
+    /** Temporary storage of the output samples of the frame written to the file. */
+    AVFrame *output_frame;
+    /**
+     * Use the maximum number of possible samples per frame.
+     * If there is less than the maximum possible frame size in the FIFO
+     * buffer use this number. Otherwise, use the maximum possible frame size
+     */
+    const int frame_size = FFMIN(av_audio_fifo_size(fifo),
+                                 output_codec_context->frame_size);
+    int data_written;
+
+    /** Initialize temporary storage for one output frame. */
+    if (init_output_frame(&output_frame, output_codec_context, frame_size))
+        return AVERROR_EXIT;
+
+    /**
+     * Read as many samples from the FIFO buffer as required to fill the frame.
+     * The samples are stored in the frame temporarily.
+     */
+    if (av_audio_fifo_read(fifo, (void **)output_frame->data, frame_size) < frame_size) {
+        fprintf(stderr, "Could not read data from FIFO\n");
+        av_frame_free(&output_frame);
+        return AVERROR_EXIT;
+    }
+
+    /** Encode one frame worth of audio samples. */
+    if (encode_audio_frame(output_frame, output_format_context,
+                           output_codec_context, &data_written)) {
+        av_frame_free(&output_frame);
+        return AVERROR_EXIT;
+    }
+    av_frame_free(&output_frame);
+    return 0;
+}
+
+/** Write the trailer of the output file container. */
+static int write_output_file_trailer(AVFormatContext *output_format_context)
+{
+    int error;
+    if ((error = av_write_trailer(output_format_context)) < 0) {
+        fprintf(stderr, "Could not write output file trailer (error '%s')\n",
+                get_error_text(error));
+        return error;
+    }
+    return 0;
+}
+
+/** Convert an audio file to an AAC file in an MP4 container. */
+int main(int argc, char **argv)
+{
+    AVFormatContext *input_format_context = NULL, *output_format_context = NULL;
+    AVCodecContext *input_codec_context = NULL, *output_codec_context = NULL;
+    SwrContext *resample_context = NULL;
+    AVAudioFifo *fifo = NULL;
+    int ret = AVERROR_EXIT;
+
+    if (argc < 3) {
+        fprintf(stderr, "Usage: %s <input file> <output file>\n", argv[0]);
+        exit(1);
+    }
+
+    /** Register all codecs and formats so that they can be used. */
+    av_register_all();
+    /** Open the input file for reading. */
+    if (open_input_file(argv[1], &input_format_context,
+                        &input_codec_context))
+        goto cleanup;
+    /** Open the output file for writing. */
+    if (open_output_file(argv[2], input_codec_context,
+                         &output_format_context, &output_codec_context))
+        goto cleanup;
+    /** Initialize the resampler to be able to convert audio sample formats. */
+    if (init_resampler(input_codec_context, output_codec_context,
+                       &resample_context))
+        goto cleanup;
+    /** Initialize the FIFO buffer to store audio samples to be encoded. */
+    if (init_fifo(&fifo))
+        goto cleanup;
+    /** Write the header of the output file container. */
+    if (write_output_file_header(output_format_context))
+        goto cleanup;
+
+    /**
+     * Loop as long as we have input samples to read or output samples
+     * to write; abort as soon as we have neither.
+     */
+    while (1) {
+        /** Use the encoder's desired frame size for processing. */
+        const int output_frame_size = output_codec_context->frame_size;
+        int finished                = 0;
+
+        /**
+         * Make sure that there is one frame worth of samples in the FIFO
+         * buffer so that the encoder can do its work.
+         * Since the decoder's and the encoder's frame size may differ, we
+         * need to FIFO buffer to store as many frames worth of input samples
+         * that they make up at least one frame worth of output samples.
+         */
+        while (av_audio_fifo_size(fifo) < output_frame_size) {
+            /**
+             * Decode one frame worth of audio samples, convert it to the
+             * output sample format and put it into the FIFO buffer.
+             */
+            if (read_decode_convert_and_store(fifo, input_format_context,
+                                              input_codec_context,
+                                              output_codec_context,
+                                              resample_context, &finished))
+                goto cleanup;
+
+            /**
+             * If we are at the end of the input file, we continue
+             * encoding the remaining audio samples to the output file.
+             */
+            if (finished)
+                break;
+        }
+
+        /**
+         * If we have enough samples for the encoder, we encode them.
+         * At the end of the file, we pass the remaining samples to
+         * the encoder.
+         */
+        while (av_audio_fifo_size(fifo) >= output_frame_size ||
+               (finished && av_audio_fifo_size(fifo) > 0))
+            /**
+             * Take one frame worth of audio samples from the FIFO buffer,
+             * encode it and write it to the output file.
+             */
+            if (load_encode_and_write(fifo, output_format_context,
+                                      output_codec_context))
+                goto cleanup;
+
+        /**
+         * If we are at the end of the input file and have encoded
+         * all remaining samples, we can exit this loop and finish.
+         */
+        if (finished) {
+            int data_written;
+            /** Flush the encoder as it may have delayed frames. */
+            do {
+                if (encode_audio_frame(NULL, output_format_context,
+                                       output_codec_context, &data_written))
+                    goto cleanup;
+            } while (data_written);
+            break;
+        }
+    }
+
+    /** Write the trailer of the output file container. */
+    if (write_output_file_trailer(output_format_context))
+        goto cleanup;
+    ret = 0;
+
+cleanup:
+    if (fifo)
+        av_audio_fifo_free(fifo);
+    swr_free(&resample_context);
+    if (output_codec_context)
+        avcodec_close(output_codec_context);
+    if (output_format_context) {
+        avio_close(output_format_context->pb);
+        avformat_free_context(output_format_context);
+    }
+    if (input_codec_context)
+        avcodec_close(input_codec_context);
+    if (input_format_context)
+        avformat_close_input(&input_format_context);
+
+    return ret;
+}
index 76f13650ae690b1c605b6d484b3dee0fa184fe16..4b48a5618314316ef372fc38e49e3a1509cf7a4c 100644 (file)
@@ -1,6 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<!DOCTYPE html>
 <html>
-<!-- Created on September 2, 2011 by texi2html 1.82
+<!-- Created on December 14, 2013 by texi2html 1.82 -->
+<!--
 texi2html was written by: 
             Lionel Cons <Lionel.Cons@cern.ch> (original author)
             Karl Berry  <karl@freefriends.org>
@@ -8,38 +9,22 @@ texi2html was written by:
             and many others.
 Maintained by: Many creative people.
 Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
 -->
 <head>
-<title>FFmpeg FAQ</title>
+<title>FFmpeg documentation : FFmpeg FAQ: </title>
 
-<meta name="description" content="FFmpeg FAQ">
-<meta name="keywords" content="FFmpeg FAQ">
-<meta name="resource-type" content="document">
-<meta name="distribution" content="global">
+<meta name="description" content="FFmpeg FAQ: ">
+<meta name="keywords" content="FFmpeg documentation : FFmpeg FAQ: ">
 <meta name="Generator" content="texi2html 1.82">
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<style type="text/css">
-<!--
-a.summary-letter {text-decoration: none}
-blockquote.smallquotation {font-size: smaller}
-pre.display {font-family: serif}
-pre.format {font-family: serif}
-pre.menu-comment {font-family: serif}
-pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: serif; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: serif; font-size: smaller}
-pre.smalllisp {font-size: smaller}
-span.roman {font-family:serif; font-weight:normal;}
-span.sansserif {font-family:sans-serif; font-weight:normal;}
-ul.toc {list-style: none}
--->
-</style>
-
+<link rel="stylesheet" type="text/css" href="default.css" />
 
+<link rel="icon" href="favicon.png" type="image/png" />
 </head>
-
-<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<body>
+<div id="container">
+<div id="body">
 
 <a name="SEC_Top"></a>
 <h1 class="settitle">FFmpeg FAQ</h1>
@@ -51,18 +36,15 @@ ul.toc {list-style: none}
 <ul class="toc">
   <li><a name="toc-General-Questions" href="#General-Questions">1. General Questions</a>
   <ul class="toc">
-    <li><a name="toc-When-will-the-next-FFmpeg-version-be-released_003f-_002f-Why-are-FFmpeg-releases-so-few-and-far-between_003f" href="#When-will-the-next-FFmpeg-version-be-released_003f-_002f-Why-are-FFmpeg-releases-so-few-and-far-between_003f">1.1 When will the next FFmpeg version be released? / Why are FFmpeg releases so few and far between?</a></li>
-    <li><a name="toc-I-have-a-problem-with-an-old-version-of-FFmpeg_003b-where-should-I-report-it_003f" href="#I-have-a-problem-with-an-old-version-of-FFmpeg_003b-where-should-I-report-it_003f">1.2 I have a problem with an old version of FFmpeg; where should I report it?</a></li>
-    <li><a name="toc-Why-doesn_0027t-FFmpeg-support-feature-_005bxyz_005d_003f" href="#Why-doesn_0027t-FFmpeg-support-feature-_005bxyz_005d_003f">1.3 Why doesn&rsquo;t FFmpeg support feature [xyz]?</a></li>
-    <li><a name="toc-FFmpeg-does-not-support-codec-XXX_002e-Can-you-include-a-Windows-DLL-loader-to-support-it_003f" href="#FFmpeg-does-not-support-codec-XXX_002e-Can-you-include-a-Windows-DLL-loader-to-support-it_003f">1.4 FFmpeg does not support codec XXX. Can you include a Windows DLL loader to support it?</a></li>
-    <li><a name="toc-My-bug-report_002fmail-to-ffmpeg_002ddevel_002fuser-has-not-received-any-replies_002e" href="#My-bug-report_002fmail-to-ffmpeg_002ddevel_002fuser-has-not-received-any-replies_002e">1.5 My bug report/mail to ffmpeg-devel/user has not received any replies.</a></li>
-    <li><a name="toc-Is-there-a-forum-for-FFmpeg_003f-I-do-not-like-mailing-lists_002e" href="#Is-there-a-forum-for-FFmpeg_003f-I-do-not-like-mailing-lists_002e">1.6 Is there a forum for FFmpeg? I do not like mailing lists.</a></li>
-    <li><a name="toc-I-cannot-read-this-file-although-this-format-seems-to-be-supported-by-ffmpeg_002e" href="#I-cannot-read-this-file-although-this-format-seems-to-be-supported-by-ffmpeg_002e">1.7 I cannot read this file although this format seems to be supported by ffmpeg.</a></li>
-    <li><a name="toc-Which-codecs-are-supported-by-Windows_003f" href="#Which-codecs-are-supported-by-Windows_003f">1.8 Which codecs are supported by Windows?</a></li>
+    <li><a name="toc-Why-doesn_0027t-FFmpeg-support-feature-_005bxyz_005d_003f" href="#Why-doesn_0027t-FFmpeg-support-feature-_005bxyz_005d_003f">1.1 Why doesn&rsquo;t FFmpeg support feature [xyz]?</a></li>
+    <li><a name="toc-FFmpeg-does-not-support-codec-XXX_002e-Can-you-include-a-Windows-DLL-loader-to-support-it_003f" href="#FFmpeg-does-not-support-codec-XXX_002e-Can-you-include-a-Windows-DLL-loader-to-support-it_003f">1.2 FFmpeg does not support codec XXX. Can you include a Windows DLL loader to support it?</a></li>
+    <li><a name="toc-I-cannot-read-this-file-although-this-format-seems-to-be-supported-by-ffmpeg_002e" href="#I-cannot-read-this-file-although-this-format-seems-to-be-supported-by-ffmpeg_002e">1.3 I cannot read this file although this format seems to be supported by ffmpeg.</a></li>
+    <li><a name="toc-Which-codecs-are-supported-by-Windows_003f" href="#Which-codecs-are-supported-by-Windows_003f">1.4 Which codecs are supported by Windows?</a></li>
   </ul></li>
   <li><a name="toc-Compilation" href="#Compilation">2. Compilation</a>
   <ul class="toc">
     <li><a name="toc-error_003a-can_0027t-find-a-register-in-class-_0027GENERAL_005fREGS_0027-while-reloading-_0027asm_0027" href="#error_003a-can_0027t-find-a-register-in-class-_0027GENERAL_005fREGS_0027-while-reloading-_0027asm_0027">2.1 <code>error: can't find a register in class 'GENERAL_REGS' while reloading 'asm'</code></a></li>
+    <li><a name="toc-I-have-installed-this-library-with-my-distro_0027s-package-manager_002e-Why-does-configure-not-see-it_003f" href="#I-have-installed-this-library-with-my-distro_0027s-package-manager_002e-Why-does-configure-not-see-it_003f">2.2 I have installed this library with my distro&rsquo;s package manager. Why does <code>configure</code> not see it?</a></li>
   </ul></li>
   <li><a name="toc-Usage" href="#Usage">3. Usage</a>
   <ul class="toc">
@@ -72,67 +54,53 @@ ul.toc {list-style: none}
     <li><a name="toc-Why-do-I-see-a-slight-quality-degradation-with-multithreaded-MPEG_002a-encoding_003f" href="#Why-do-I-see-a-slight-quality-degradation-with-multithreaded-MPEG_002a-encoding_003f">3.4 Why do I see a slight quality degradation with multithreaded MPEG* encoding?</a></li>
     <li><a name="toc-How-can-I-read-from-the-standard-input-or-write-to-the-standard-output_003f" href="#How-can-I-read-from-the-standard-input-or-write-to-the-standard-output_003f">3.5 How can I read from the standard input or write to the standard output?</a></li>
     <li><a name="toc-_002df-jpeg-doesn_0027t-work_002e" href="#g_t_002df-jpeg-doesn_0027t-work_002e">3.6 -f jpeg doesn&rsquo;t work.</a></li>
-    <li><a name="toc-Why-can-I-not-change-the-framerate_003f" href="#Why-can-I-not-change-the-framerate_003f">3.7 Why can I not change the framerate?</a></li>
+    <li><a name="toc-Why-can-I-not-change-the-frame-rate_003f" href="#Why-can-I-not-change-the-frame-rate_003f">3.7 Why can I not change the frame rate?</a></li>
     <li><a name="toc-How-do-I-encode-Xvid-or-DivX-video-with-ffmpeg_003f" href="#How-do-I-encode-Xvid-or-DivX-video-with-ffmpeg_003f">3.8 How do I encode Xvid or DivX video with ffmpeg?</a></li>
-    <li><a name="toc-How-do-I-encode-videos-which-play-on-the-iPod_003f" href="#How-do-I-encode-videos-which-play-on-the-iPod_003f">3.9 How do I encode videos which play on the iPod?</a></li>
-    <li><a name="toc-How-do-I-encode-videos-which-play-on-the-PSP_003f" href="#How-do-I-encode-videos-which-play-on-the-PSP_003f">3.10 How do I encode videos which play on the PSP?</a></li>
-    <li><a name="toc-Which-are-good-parameters-for-encoding-high-quality-MPEG_002d4_003f" href="#Which-are-good-parameters-for-encoding-high-quality-MPEG_002d4_003f">3.11 Which are good parameters for encoding high quality MPEG-4?</a></li>
-    <li><a name="toc-Which-are-good-parameters-for-encoding-high-quality-MPEG_002d1_002fMPEG_002d2_003f" href="#Which-are-good-parameters-for-encoding-high-quality-MPEG_002d1_002fMPEG_002d2_003f">3.12 Which are good parameters for encoding high quality MPEG-1/MPEG-2?</a></li>
-    <li><a name="toc-Interlaced-video-looks-very-bad-when-encoded-with-ffmpeg_002c-what-is-wrong_003f" href="#Interlaced-video-looks-very-bad-when-encoded-with-ffmpeg_002c-what-is-wrong_003f">3.13 Interlaced video looks very bad when encoded with ffmpeg, what is wrong?</a></li>
-    <li><a name="toc-How-can-I-read-DirectShow-files_003f" href="#How-can-I-read-DirectShow-files_003f">3.14 How can I read DirectShow files?</a></li>
-    <li><a name="toc-How-can-I-join-video-files_003f" href="#How-can-I-join-video-files_003f">3.15 How can I join video files?</a></li>
-    <li><a name="toc-The-ffmpeg-program-does-not-respect-the-_002dmaxrate-setting_002c-some-frames-are-bigger-than-maxrate_002ffps_002e" href="#The-ffmpeg-program-does-not-respect-the-_002dmaxrate-setting_002c-some-frames-are-bigger-than-maxrate_002ffps_002e">3.16 The ffmpeg program does not respect the -maxrate setting, some frames are bigger than maxrate/fps.</a></li>
-    <li><a name="toc-I-want-CBR_002c-but-no-matter-what-I-do-frame-sizes-differ_002e" href="#I-want-CBR_002c-but-no-matter-what-I-do-frame-sizes-differ_002e">3.17 I want CBR, but no matter what I do frame sizes differ.</a></li>
-    <li><a name="toc-How-do-I-check-if-a-stream-is-CBR_003f" href="#How-do-I-check-if-a-stream-is-CBR_003f">3.18 How do I check if a stream is CBR?</a></li>
+    <li><a name="toc-Which-are-good-parameters-for-encoding-high-quality-MPEG_002d4_003f" href="#Which-are-good-parameters-for-encoding-high-quality-MPEG_002d4_003f">3.9 Which are good parameters for encoding high quality MPEG-4?</a></li>
+    <li><a name="toc-Which-are-good-parameters-for-encoding-high-quality-MPEG_002d1_002fMPEG_002d2_003f" href="#Which-are-good-parameters-for-encoding-high-quality-MPEG_002d1_002fMPEG_002d2_003f">3.10 Which are good parameters for encoding high quality MPEG-1/MPEG-2?</a></li>
+    <li><a name="toc-Interlaced-video-looks-very-bad-when-encoded-with-ffmpeg_002c-what-is-wrong_003f" href="#Interlaced-video-looks-very-bad-when-encoded-with-ffmpeg_002c-what-is-wrong_003f">3.11 Interlaced video looks very bad when encoded with ffmpeg, what is wrong?</a></li>
+    <li><a name="toc-How-can-I-read-DirectShow-files_003f" href="#How-can-I-read-DirectShow-files_003f">3.12 How can I read DirectShow files?</a></li>
+    <li><a name="toc-How-can-I-join-video-files_003f" href="#How-can-I-join-video-files_003f">3.13 How can I join video files?</a></li>
+    <li><a name="toc-How-can-I-concatenate-video-files_003f" href="#How-can-I-concatenate-video-files_003f">3.14 How can I concatenate video files?</a>
+    <ul class="toc">
+      <li><a name="toc-Concatenating-using-the-concat-filter" href="#Concatenating-using-the-concat-filter">3.14.1 Concatenating using the concat <em>filter</em></a></li>
+      <li><a name="toc-Concatenating-using-the-concat-demuxer" href="#Concatenating-using-the-concat-demuxer">3.14.2 Concatenating using the concat <em>demuxer</em></a></li>
+      <li><a name="toc-Concatenating-using-the-concat-protocol-_0028file-level_0029" href="#Concatenating-using-the-concat-protocol-_0028file-level_0029">3.14.3 Concatenating using the concat <em>protocol</em> (file level)</a></li>
+      <li><a name="toc-Concatenating-using-raw-audio-and-video" href="#Concatenating-using-raw-audio-and-video">3.14.4 Concatenating using raw audio and video</a></li>
+    </ul></li>
+    <li><a name="toc-_002dprofile-option-fails-when-encoding-H_002e264-video-with-AAC-audio" href="#g_t_002dprofile-option-fails-when-encoding-H_002e264-video-with-AAC-audio">3.15 -profile option fails when encoding H.264 video with AAC audio</a></li>
+    <li><a name="toc-Using-_002df-lavfi_002c-audio-becomes-mono-for-no-apparent-reason_002e" href="#Using-_002df-lavfi_002c-audio-becomes-mono-for-no-apparent-reason_002e">3.16 Using &lsquo;<samp>-f lavfi</samp>&rsquo;, audio becomes mono for no apparent reason.</a></li>
+    <li><a name="toc-Why-does-FFmpeg-not-see-the-subtitles-in-my-VOB-file_003f" href="#Why-does-FFmpeg-not-see-the-subtitles-in-my-VOB-file_003f">3.17 Why does FFmpeg not see the subtitles in my VOB file?</a></li>
+    <li><a name="toc-Why-was-the-ffmpeg-_002dsameq-option-removed_003f-What-to-use-instead_003f" href="#Why-was-the-ffmpeg-_002dsameq-option-removed_003f-What-to-use-instead_003f">3.18 Why was the <code>ffmpeg</code> &lsquo;<samp>-sameq</samp>&rsquo; option removed? What to use instead?</a></li>
   </ul></li>
   <li><a name="toc-Development" href="#Development">4. Development</a>
   <ul class="toc">
     <li><a name="toc-Are-there-examples-illustrating-how-to-use-the-FFmpeg-libraries_002c-particularly-libavcodec-and-libavformat_003f" href="#Are-there-examples-illustrating-how-to-use-the-FFmpeg-libraries_002c-particularly-libavcodec-and-libavformat_003f">4.1 Are there examples illustrating how to use the FFmpeg libraries, particularly libavcodec and libavformat?</a></li>
     <li><a name="toc-Can-you-support-my-C-compiler-XXX_003f" href="#Can-you-support-my-C-compiler-XXX_003f">4.2 Can you support my C compiler XXX?</a></li>
     <li><a name="toc-Is-Microsoft-Visual-C_002b_002b-supported_003f" href="#Is-Microsoft-Visual-C_002b_002b-supported_003f">4.3 Is Microsoft Visual C++ supported?</a></li>
-    <li><a name="toc-Can-I-use-FFmpeg-or-libavcodec-under-Windows_003f" href="#Can-I-use-FFmpeg-or-libavcodec-under-Windows_003f">4.4 Can I use FFmpeg or libavcodec under Windows?</a></li>
-    <li><a name="toc-Can-you-add-automake_002c-libtool-or-autoconf-support_003f" href="#Can-you-add-automake_002c-libtool-or-autoconf-support_003f">4.5 Can you add automake, libtool or autoconf support?</a></li>
-    <li><a name="toc-Why-not-rewrite-ffmpeg-in-object_002doriented-C_002b_002b_003f" href="#Why-not-rewrite-ffmpeg-in-object_002doriented-C_002b_002b_003f">4.6 Why not rewrite ffmpeg in object-oriented C++?</a></li>
-    <li><a name="toc-Why-are-the-ffmpeg-programs-devoid-of-debugging-symbols_003f" href="#Why-are-the-ffmpeg-programs-devoid-of-debugging-symbols_003f">4.7 Why are the ffmpeg programs devoid of debugging symbols?</a></li>
-    <li><a name="toc-I-do-not-like-the-LGPL_002c-can-I-contribute-code-under-the-GPL-instead_003f" href="#I-do-not-like-the-LGPL_002c-can-I-contribute-code-under-the-GPL-instead_003f">4.8 I do not like the LGPL, can I contribute code under the GPL instead?</a></li>
-    <li><a name="toc-I-want-to-compile-xyz_002ec-alone-but-my-compiler-produced-many-errors_002e" href="#I-want-to-compile-xyz_002ec-alone-but-my-compiler-produced-many-errors_002e">4.9 I want to compile xyz.c alone but my compiler produced many errors.</a></li>
-    <li><a name="toc-I_0027m-using-libavcodec-from-within-my-C_002b_002b-application-but-the-linker-complains-about-missing-symbols-which-seem-to-be-available_002e" href="#I_0027m-using-libavcodec-from-within-my-C_002b_002b-application-but-the-linker-complains-about-missing-symbols-which-seem-to-be-available_002e">4.10 I&rsquo;m using libavcodec from within my C++ application but the linker complains about missing symbols which seem to be available.</a></li>
+    <li><a name="toc-Can-you-add-automake_002c-libtool-or-autoconf-support_003f" href="#Can-you-add-automake_002c-libtool-or-autoconf-support_003f">4.4 Can you add automake, libtool or autoconf support?</a></li>
+    <li><a name="toc-Why-not-rewrite-FFmpeg-in-object_002doriented-C_002b_002b_003f" href="#Why-not-rewrite-FFmpeg-in-object_002doriented-C_002b_002b_003f">4.5 Why not rewrite FFmpeg in object-oriented C++?</a></li>
+    <li><a name="toc-Why-are-the-ffmpeg-programs-devoid-of-debugging-symbols_003f" href="#Why-are-the-ffmpeg-programs-devoid-of-debugging-symbols_003f">4.6 Why are the ffmpeg programs devoid of debugging symbols?</a></li>
+    <li><a name="toc-I-do-not-like-the-LGPL_002c-can-I-contribute-code-under-the-GPL-instead_003f" href="#I-do-not-like-the-LGPL_002c-can-I-contribute-code-under-the-GPL-instead_003f">4.7 I do not like the LGPL, can I contribute code under the GPL instead?</a></li>
+    <li><a name="toc-I_0027m-using-FFmpeg-from-within-my-C-application-but-the-linker-complains-about-missing-symbols-from-the-libraries-themselves_002e" href="#I_0027m-using-FFmpeg-from-within-my-C-application-but-the-linker-complains-about-missing-symbols-from-the-libraries-themselves_002e">4.8 I&rsquo;m using FFmpeg from within my C application but the linker complains about missing symbols from the libraries themselves.</a></li>
+    <li><a name="toc-I_0027m-using-FFmpeg-from-within-my-C_002b_002b-application-but-the-linker-complains-about-missing-symbols-which-seem-to-be-available_002e" href="#I_0027m-using-FFmpeg-from-within-my-C_002b_002b-application-but-the-linker-complains-about-missing-symbols-which-seem-to-be-available_002e">4.9 I&rsquo;m using FFmpeg from within my C++ application but the linker complains about missing symbols which seem to be available.</a></li>
+    <li><a name="toc-I_0027m-using-libavutil-from-within-my-C_002b_002b-application-but-the-compiler-complains-about-_0027UINT64_005fC_0027-was-not-declared-in-this-scope" href="#I_0027m-using-libavutil-from-within-my-C_002b_002b-application-but-the-compiler-complains-about-_0027UINT64_005fC_0027-was-not-declared-in-this-scope">4.10 I&rsquo;m using libavutil from within my C++ application but the compiler complains about &rsquo;UINT64_C&rsquo; was not declared in this scope</a></li>
     <li><a name="toc-I-have-a-file-in-memory-_002f-a-API-different-from-_002aopen_002f_002aread_002f-libc-how-do-I-use-it-with-libavformat_003f" href="#I-have-a-file-in-memory-_002f-a-API-different-from-_002aopen_002f_002aread_002f-libc-how-do-I-use-it-with-libavformat_003f">4.11 I have a file in memory / a API different from *open/*read/ libc how do I use it with libavformat?</a></li>
-    <li><a name="toc-I-get-_0022No-compatible-shell-script-interpreter-found_002e_0022-in-MSys_002e" href="#I-get-_0022No-compatible-shell-script-interpreter-found_002e_0022-in-MSys_002e">4.12 I get &quot;No compatible shell script interpreter found.&quot; in MSys.</a></li>
-    <li><a name="toc-I-get-_0022_002e_002fconfigure_003a-line-_003cxxx_003e_003a-pr_003a-command-not-found_0022-in-MSys_002e" href="#I-get-_0022_002e_002fconfigure_003a-line-_003cxxx_003e_003a-pr_003a-command-not-found_0022-in-MSys_002e">4.13 I get &quot;./configure: line &lt;xxx&gt;: pr: command not found&quot; in MSys.</a></li>
-    <li><a name="toc-Where-can-I-find-libav_002a-headers-for-Pascal_002fDelphi_003f" href="#Where-can-I-find-libav_002a-headers-for-Pascal_002fDelphi_003f">4.14 Where can I find libav* headers for Pascal/Delphi?</a></li>
-    <li><a name="toc-Where-is-the-documentation-about-ffv1_002c-msmpeg4_002c-asv1_002c-4xm_003f" href="#Where-is-the-documentation-about-ffv1_002c-msmpeg4_002c-asv1_002c-4xm_003f">4.15 Where is the documentation about ffv1, msmpeg4, asv1, 4xm?</a></li>
-    <li><a name="toc-How-do-I-feed-H_002e263_002dRTP-_0028and-other-codecs-in-RTP_0029-to-libavcodec_003f" href="#How-do-I-feed-H_002e263_002dRTP-_0028and-other-codecs-in-RTP_0029-to-libavcodec_003f">4.16 How do I feed H.263-RTP (and other codecs in RTP) to libavcodec?</a></li>
-    <li><a name="toc-AVStream_002er_005fframe_005frate-is-wrong_002c-it-is-much-larger-than-the-framerate_002e" href="#AVStream_002er_005fframe_005frate-is-wrong_002c-it-is-much-larger-than-the-framerate_002e">4.17 AVStream.r_frame_rate is wrong, it is much larger than the framerate.</a></li>
+    <li><a name="toc-Where-is-the-documentation-about-ffv1_002c-msmpeg4_002c-asv1_002c-4xm_003f" href="#Where-is-the-documentation-about-ffv1_002c-msmpeg4_002c-asv1_002c-4xm_003f">4.12 Where is the documentation about ffv1, msmpeg4, asv1, 4xm?</a></li>
+    <li><a name="toc-How-do-I-feed-H_002e263_002dRTP-_0028and-other-codecs-in-RTP_0029-to-libavcodec_003f" href="#How-do-I-feed-H_002e263_002dRTP-_0028and-other-codecs-in-RTP_0029-to-libavcodec_003f">4.13 How do I feed H.263-RTP (and other codecs in RTP) to libavcodec?</a></li>
+    <li><a name="toc-AVStream_002er_005fframe_005frate-is-wrong_002c-it-is-much-larger-than-the-frame-rate_002e" href="#AVStream_002er_005fframe_005frate-is-wrong_002c-it-is-much-larger-than-the-frame-rate_002e">4.14 AVStream.r_frame_rate is wrong, it is much larger than the frame rate.</a></li>
+    <li><a name="toc-Why-is-make-fate-not-running-all-tests_003f" href="#Why-is-make-fate-not-running-all-tests_003f">4.15 Why is <code>make fate</code> not running all tests?</a></li>
+    <li><a name="toc-Why-is-make-fate-not-finding-the-samples_003f" href="#Why-is-make-fate-not-finding-the-samples_003f">4.16 Why is <code>make fate</code> not finding the samples?</a></li>
   </ul>
 </li>
 </ul>
 </div>
 
-<hr size="1">
 <a name="General-Questions"></a>
 <h1 class="chapter"><a href="faq.html#toc-General-Questions">1. General Questions</a></h1>
 
-<a name="When-will-the-next-FFmpeg-version-be-released_003f-_002f-Why-are-FFmpeg-releases-so-few-and-far-between_003f"></a>
-<h2 class="section"><a href="faq.html#toc-When-will-the-next-FFmpeg-version-be-released_003f-_002f-Why-are-FFmpeg-releases-so-few-and-far-between_003f">1.1 When will the next FFmpeg version be released? / Why are FFmpeg releases so few and far between?</a></h2>
-
-<p>Like most open source projects FFmpeg suffers from a certain lack of
-manpower. For this reason the developers have to prioritize the work
-they do and putting out releases is not at the top of the list, fixing
-bugs and reviewing patches takes precedence. Please don&rsquo;t complain or
-request more timely and/or frequent releases unless you are willing to
-help out creating them.
-</p>
-<a name="I-have-a-problem-with-an-old-version-of-FFmpeg_003b-where-should-I-report-it_003f"></a>
-<h2 class="section"><a href="faq.html#toc-I-have-a-problem-with-an-old-version-of-FFmpeg_003b-where-should-I-report-it_003f">1.2 I have a problem with an old version of FFmpeg; where should I report it?</a></h2>
-<p>Nowhere. We do not support old FFmpeg versions in any way, we simply lack
-the time, motivation and manpower to do so. If you have a problem with an
-old version of FFmpeg, upgrade to the latest git snapshot. If you
-still experience the problem, then you can report it according to the
-guidelines in <a href="http://ffmpeg.org/bugreports.html">http://ffmpeg.org/bugreports.html</a>.
-</p>
 <a name="Why-doesn_0027t-FFmpeg-support-feature-_005bxyz_005d_003f"></a>
-<h2 class="section"><a href="faq.html#toc-Why-doesn_0027t-FFmpeg-support-feature-_005bxyz_005d_003f">1.3 Why doesn&rsquo;t FFmpeg support feature [xyz]?</a></h2>
+<h2 class="section"><a href="faq.html#toc-Why-doesn_0027t-FFmpeg-support-feature-_005bxyz_005d_003f">1.1 Why doesn&rsquo;t FFmpeg support feature [xyz]?</a></h2>
 
 <p>Because no one has taken on that task yet. FFmpeg development is
 driven by the tasks that are important to the individual developers.
@@ -140,47 +108,21 @@ If there is a feature that is important to you, the best way to get
 it implemented is to undertake the task yourself or sponsor a developer.
 </p>
 <a name="FFmpeg-does-not-support-codec-XXX_002e-Can-you-include-a-Windows-DLL-loader-to-support-it_003f"></a>
-<h2 class="section"><a href="faq.html#toc-FFmpeg-does-not-support-codec-XXX_002e-Can-you-include-a-Windows-DLL-loader-to-support-it_003f">1.4 FFmpeg does not support codec XXX. Can you include a Windows DLL loader to support it?</a></h2>
+<h2 class="section"><a href="faq.html#toc-FFmpeg-does-not-support-codec-XXX_002e-Can-you-include-a-Windows-DLL-loader-to-support-it_003f">1.2 FFmpeg does not support codec XXX. Can you include a Windows DLL loader to support it?</a></h2>
 
 <p>No. Windows DLLs are not portable, bloated and often slow.
 Moreover FFmpeg strives to support all codecs natively.
 A DLL loader is not conducive to that goal.
 </p>
-<a name="My-bug-report_002fmail-to-ffmpeg_002ddevel_002fuser-has-not-received-any-replies_002e"></a>
-<h2 class="section"><a href="faq.html#toc-My-bug-report_002fmail-to-ffmpeg_002ddevel_002fuser-has-not-received-any-replies_002e">1.5 My bug report/mail to ffmpeg-devel/user has not received any replies.</a></h2>
-
-<p>Likely reasons
-</p><ul>
-<li> We are busy and haven&rsquo;t had time yet to read your report or
-investigate the issue.
-</li><li> You didn&rsquo;t follow <a href="http://ffmpeg.org/bugreports.html">http://ffmpeg.org/bugreports.html</a>.
-</li><li> You didn&rsquo;t use git master.
-</li><li> You reported a segmentation fault without gdb output.
-</li><li> You describe a problem but not how to reproduce it.
-</li><li> It&rsquo;s unclear if you use ffmpeg as command line tool or use
-libav* from another application.
-</li><li> You speak about a video having problems on playback but
-not what you use to play it.
-</li><li> We have no faint clue what you are talking about besides
-that it is related to FFmpeg.
-</li></ul>
-
-<a name="Is-there-a-forum-for-FFmpeg_003f-I-do-not-like-mailing-lists_002e"></a>
-<h2 class="section"><a href="faq.html#toc-Is-there-a-forum-for-FFmpeg_003f-I-do-not-like-mailing-lists_002e">1.6 Is there a forum for FFmpeg? I do not like mailing lists.</a></h2>
-
-<p>You may view our mailing lists with a more forum-alike look here:
-<a href="http://dir.gmane.org/gmane.comp.video.ffmpeg.user">http://dir.gmane.org/gmane.comp.video.ffmpeg.user</a>,
-but, if you post, please remember that our mailing list rules still apply there.
-</p>
 <a name="I-cannot-read-this-file-although-this-format-seems-to-be-supported-by-ffmpeg_002e"></a>
-<h2 class="section"><a href="faq.html#toc-I-cannot-read-this-file-although-this-format-seems-to-be-supported-by-ffmpeg_002e">1.7 I cannot read this file although this format seems to be supported by ffmpeg.</a></h2>
+<h2 class="section"><a href="faq.html#toc-I-cannot-read-this-file-although-this-format-seems-to-be-supported-by-ffmpeg_002e">1.3 I cannot read this file although this format seems to be supported by ffmpeg.</a></h2>
 
 <p>Even if ffmpeg can read the container format, it may not support all its
 codecs. Please consult the supported codec list in the ffmpeg
 documentation.
 </p>
 <a name="Which-codecs-are-supported-by-Windows_003f"></a>
-<h2 class="section"><a href="faq.html#toc-Which-codecs-are-supported-by-Windows_003f">1.8 Which codecs are supported by Windows?</a></h2>
+<h2 class="section"><a href="faq.html#toc-Which-codecs-are-supported-by-Windows_003f">1.4 Which codecs are supported by Windows?</a></h2>
 
 <p>Windows does not support standard formats like MPEG very well, unless you
 install some additional codecs.
@@ -239,6 +181,18 @@ not a bug they should fix:
 Then again, some of them do not know the difference between an undecidable
 problem and an NP-hard problem...
 </p>
+<a name="I-have-installed-this-library-with-my-distro_0027s-package-manager_002e-Why-does-configure-not-see-it_003f"></a>
+<h2 class="section"><a href="faq.html#toc-I-have-installed-this-library-with-my-distro_0027s-package-manager_002e-Why-does-configure-not-see-it_003f">2.2 I have installed this library with my distro&rsquo;s package manager. Why does <code>configure</code> not see it?</a></h2>
+
+<p>Distributions usually split libraries in several packages. The main package
+contains the files necessary to run programs using the library. The
+development package contains the files necessary to build programs using the
+library. Sometimes, docs and/or data are in a separate package too.
+</p>
+<p>To build FFmpeg, you need to install the development package. It is usually
+called &lsquo;<tt>libfoo-dev</tt>&rsquo; or &lsquo;<tt>libfoo-devel</tt>&rsquo;. You can remove it after the
+build is finished, but be sure to keep the main package.
+</p>
 <a name="Usage"></a>
 <h1 class="chapter"><a href="faq.html#toc-Usage">3. Usage</a></h1>
 
@@ -256,20 +210,28 @@ If this does not help see
 For example, img1.jpg, img2.jpg, img3.jpg,...
 Then you may run:
 </p>
-<table><tr><td>&nbsp;</td><td><pre class="example">  ffmpeg -f image2 -i img%d.jpg /tmp/a.mpg
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f image2 -i img%d.jpg /tmp/a.mpg
 </pre></td></tr></table>
 
 <p>Notice that &lsquo;<samp>%d</samp>&rsquo; is replaced by the image number.
 </p>
-<p>&lsquo;<tt>img%03d.jpg</tt>&rsquo; means the sequence &lsquo;<tt>img001.jpg</tt>&rsquo;, &lsquo;<tt>img002.jpg</tt>&rsquo;, etc...
+<p>&lsquo;<tt>img%03d.jpg</tt>&rsquo; means the sequence &lsquo;<tt>img001.jpg</tt>&rsquo;, &lsquo;<tt>img002.jpg</tt>&rsquo;, etc.
+</p>
+<p>Use the &lsquo;<samp>-start_number</samp>&rsquo; option to declare a starting number for
+the sequence. This is useful if your sequence does not start with
+&lsquo;<tt>img001.jpg</tt>&rsquo; but is still in a numerical order. The following
+example will start with &lsquo;<tt>img100.jpg</tt>&rsquo;:
 </p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f image2 -start_number 100 -i img%d.jpg /tmp/a.mpg
+</pre></td></tr></table>
+
 <p>If you have large number of pictures to rename, you can use the
 following command to ease the burden. The command, using the bourne
 shell syntax, symbolically links all files in the current directory
 that match <code>*jpg</code> to the &lsquo;<tt>/tmp</tt>&rsquo; directory in the sequence of
 &lsquo;<tt>img001.jpg</tt>&rsquo;, &lsquo;<tt>img002.jpg</tt>&rsquo; and so on.
 </p>
-<table><tr><td>&nbsp;</td><td><pre class="example">  x=1; for i in *jpg; do counter=$(printf %03d $x); ln -s &quot;$i&quot; /tmp/img&quot;$counter&quot;.jpg; x=$(($x+1)); done
+<table><tr><td>&nbsp;</td><td><pre class="example">x=1; for i in *jpg; do counter=$(printf %03d $x); ln -s &quot;$i&quot; /tmp/img&quot;$counter&quot;.jpg; x=$(($x+1)); done
 </pre></td></tr></table>
 
 <p>If you want to sequence them by oldest modified first, substitute
@@ -277,17 +239,22 @@ that match <code>*jpg</code> to the &lsquo;<tt>/tmp</tt>&rsquo; directory in the
 </p>
 <p>Then run:
 </p>
-<table><tr><td>&nbsp;</td><td><pre class="example">  ffmpeg -f image2 -i /tmp/img%03d.jpg /tmp/a.mpg
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f image2 -i /tmp/img%03d.jpg /tmp/a.mpg
 </pre></td></tr></table>
 
 <p>The same logic is used for any image format that ffmpeg reads.
 </p>
+<p>You can also use <code>cat</code> to pipe images to ffmpeg:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">cat *.jpg | ffmpeg -f image2pipe -c:v mjpeg -i - output.mpg
+</pre></td></tr></table>
+
 <a name="How-do-I-encode-movie-to-single-pictures_003f"></a>
 <h2 class="section"><a href="faq.html#toc-How-do-I-encode-movie-to-single-pictures_003f">3.3 How do I encode movie to single pictures?</a></h2>
 
 <p>Use:
 </p>
-<table><tr><td>&nbsp;</td><td><pre class="example">  ffmpeg -i movie.mpg movie%d.jpg
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i movie.mpg movie%d.jpg
 </pre></td></tr></table>
 
 <p>The &lsquo;<tt>movie.mpg</tt>&rsquo; used as input will be converted to
@@ -295,14 +262,14 @@ that match <code>*jpg</code> to the &lsquo;<tt>/tmp</tt>&rsquo; directory in the
 </p>
 <p>Instead of relying on file format self-recognition, you may also use
 </p><dl compact="compact">
-<dt> &lsquo;<samp>-vcodec ppm</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>-vcodec png</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>-vcodec mjpeg</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>-c:v ppm</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>-c:v png</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>-c:v mjpeg</samp>&rsquo;</dt>
 </dl>
 <p>to force the encoding.
 </p>
 <p>Applying that to the previous example:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">  ffmpeg -i movie.mpg -f image2 -vcodec mjpeg menu%d.jpg
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i movie.mpg -f image2 -c:v mjpeg menu%d.jpg
 </pre></td></tr></table>
 
 <p>Beware that there is no &quot;jpeg&quot; codec. Use &quot;mjpeg&quot; instead.
@@ -324,145 +291,160 @@ quite logical that there is a small reduction of quality. This is not a bug.
 
 <p>Try &rsquo;-f image2 test%d.jpg&rsquo;.
 </p>
-<a name="Why-can-I-not-change-the-framerate_003f"></a>
-<h2 class="section"><a href="faq.html#toc-Why-can-I-not-change-the-framerate_003f">3.7 Why can I not change the framerate?</a></h2>
+<a name="Why-can-I-not-change-the-frame-rate_003f"></a>
+<h2 class="section"><a href="faq.html#toc-Why-can-I-not-change-the-frame-rate_003f">3.7 Why can I not change the frame rate?</a></h2>
 
-<p>Some codecs, like MPEG-1/2, only allow a small number of fixed framerates.
-Choose a different codec with the -vcodec command line option.
+<p>Some codecs, like MPEG-1/2, only allow a small number of fixed frame rates.
+Choose a different codec with the -c:v command line option.
 </p>
 <a name="How-do-I-encode-Xvid-or-DivX-video-with-ffmpeg_003f"></a>
 <h2 class="section"><a href="faq.html#toc-How-do-I-encode-Xvid-or-DivX-video-with-ffmpeg_003f">3.8 How do I encode Xvid or DivX video with ffmpeg?</a></h2>
 
 <p>Both Xvid and DivX (version 4+) are implementations of the ISO MPEG-4
 standard (note that there are many other coding formats that use this
-same standard). Thus, use &rsquo;-vcodec mpeg4&rsquo; to encode in these formats. The
+same standard). Thus, use &rsquo;-c:v mpeg4&rsquo; to encode in these formats. The
 default fourcc stored in an MPEG-4-coded file will be &rsquo;FMP4&rsquo;. If you want
 a different fourcc, use the &rsquo;-vtag&rsquo; option. E.g., &rsquo;-vtag xvid&rsquo; will
 force the fourcc &rsquo;xvid&rsquo; to be stored as the video fourcc rather than the
 default.
 </p>
-<a name="How-do-I-encode-videos-which-play-on-the-iPod_003f"></a>
-<h2 class="section"><a href="faq.html#toc-How-do-I-encode-videos-which-play-on-the-iPod_003f">3.9 How do I encode videos which play on the iPod?</a></h2>
-
-<dl compact="compact">
-<dt> &lsquo;<samp>needed stuff</samp>&rsquo;</dt>
-<dd><p>-acodec libfaac -vcodec mpeg4 width&lt;=320 height&lt;=240
-</p></dd>
-<dt> &lsquo;<samp>working stuff</samp>&rsquo;</dt>
-<dd><p>mv4, title
-</p></dd>
-<dt> &lsquo;<samp>non-working stuff</samp>&rsquo;</dt>
-<dd><p>B-frames
-</p></dd>
-<dt> &lsquo;<samp>example command line</samp>&rsquo;</dt>
-<dd><p>ffmpeg -i input -acodec libfaac -ab 128k -vcodec mpeg4 -b 1200k -mbd 2 -flags +mv4+aic -trellis 2 -cmp 2 -subcmp 2 -s 320x180 -metadata title=X output.mp4
-</p></dd>
-</dl>
-
-<a name="How-do-I-encode-videos-which-play-on-the-PSP_003f"></a>
-<h2 class="section"><a href="faq.html#toc-How-do-I-encode-videos-which-play-on-the-PSP_003f">3.10 How do I encode videos which play on the PSP?</a></h2>
-
-<dl compact="compact">
-<dt> &lsquo;<samp>needed stuff</samp>&rsquo;</dt>
-<dd><p>-acodec libfaac -vcodec mpeg4 width*height&lt;=76800 width%16=0 height%16=0 -ar 24000 -r 30000/1001 or 15000/1001 -f psp
-</p></dd>
-<dt> &lsquo;<samp>working stuff</samp>&rsquo;</dt>
-<dd><p>mv4, title
-</p></dd>
-<dt> &lsquo;<samp>non-working stuff</samp>&rsquo;</dt>
-<dd><p>B-frames
-</p></dd>
-<dt> &lsquo;<samp>example command line</samp>&rsquo;</dt>
-<dd><p>ffmpeg -i input -acodec libfaac -ab 128k -vcodec mpeg4 -b 1200k -ar 24000 -mbd 2 -flags +mv4+aic -trellis 2 -cmp 2 -subcmp 2 -s 368x192 -r 30000/1001 -metadata title=X -f psp output.mp4
-</p></dd>
-<dt> &lsquo;<samp>needed stuff for H.264</samp>&rsquo;</dt>
-<dd><p>-acodec libfaac -vcodec libx264 width*height&lt;=76800 width%16=0? height%16=0? -ar 48000 -coder 1 -r 30000/1001 or 15000/1001 -f psp
-</p></dd>
-<dt> &lsquo;<samp>working stuff for H.264</samp>&rsquo;</dt>
-<dd><p>title, loop filter
-</p></dd>
-<dt> &lsquo;<samp>non-working stuff for H.264</samp>&rsquo;</dt>
-<dd><p>CAVLC
-</p></dd>
-<dt> &lsquo;<samp>example command line</samp>&rsquo;</dt>
-<dd><p>ffmpeg -i input -acodec libfaac -ab 128k -vcodec libx264 -b 1200k -ar 48000 -mbd 2 -coder 1 -cmp 2 -subcmp 2 -s 368x192 -r 30000/1001 -metadata title=X -f psp -flags loop -trellis 2 -partitions parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 output.mp4
-</p></dd>
-<dt> &lsquo;<samp>higher resolution for newer PSP firmwares, width&lt;=480, height&lt;=272</samp>&rsquo;</dt>
-<dd><p>-vcodec libx264 -level 21 -coder 1 -f psp
-</p></dd>
-<dt> &lsquo;<samp>example command line</samp>&rsquo;</dt>
-<dd><p>ffmpeg -i input -acodec libfaac -ab 128k -ac 2 -ar 48000 -vcodec libx264 -level 21 -b 640k -coder 1 -f psp -flags +loop -trellis 2 -partitions +parti4x4+parti8x8+partp4x4+partp8x8+partb8x8 -g 250 -s 480x272 output.mp4
-</p></dd>
-</dl>
-
 <a name="Which-are-good-parameters-for-encoding-high-quality-MPEG_002d4_003f"></a>
-<h2 class="section"><a href="faq.html#toc-Which-are-good-parameters-for-encoding-high-quality-MPEG_002d4_003f">3.11 Which are good parameters for encoding high quality MPEG-4?</a></h2>
+<h2 class="section"><a href="faq.html#toc-Which-are-good-parameters-for-encoding-high-quality-MPEG_002d4_003f">3.9 Which are good parameters for encoding high quality MPEG-4?</a></h2>
 
 <p>&rsquo;-mbd rd -flags +mv4+aic -trellis 2 -cmp 2 -subcmp 2 -g 300 -pass 1/2&rsquo;,
 things to try: &rsquo;-bf 2&rsquo;, &rsquo;-flags qprd&rsquo;, &rsquo;-flags mv0&rsquo;, &rsquo;-flags skiprd&rsquo;.
 </p>
 <a name="Which-are-good-parameters-for-encoding-high-quality-MPEG_002d1_002fMPEG_002d2_003f"></a>
-<h2 class="section"><a href="faq.html#toc-Which-are-good-parameters-for-encoding-high-quality-MPEG_002d1_002fMPEG_002d2_003f">3.12 Which are good parameters for encoding high quality MPEG-1/MPEG-2?</a></h2>
+<h2 class="section"><a href="faq.html#toc-Which-are-good-parameters-for-encoding-high-quality-MPEG_002d1_002fMPEG_002d2_003f">3.10 Which are good parameters for encoding high quality MPEG-1/MPEG-2?</a></h2>
 
 <p>&rsquo;-mbd rd -trellis 2 -cmp 2 -subcmp 2 -g 100 -pass 1/2&rsquo;
 but beware the &rsquo;-g 100&rsquo; might cause problems with some decoders.
 Things to try: &rsquo;-bf 2&rsquo;, &rsquo;-flags qprd&rsquo;, &rsquo;-flags mv0&rsquo;, &rsquo;-flags skiprd.
 </p>
 <a name="Interlaced-video-looks-very-bad-when-encoded-with-ffmpeg_002c-what-is-wrong_003f"></a>
-<h2 class="section"><a href="faq.html#toc-Interlaced-video-looks-very-bad-when-encoded-with-ffmpeg_002c-what-is-wrong_003f">3.13 Interlaced video looks very bad when encoded with ffmpeg, what is wrong?</a></h2>
+<h2 class="section"><a href="faq.html#toc-Interlaced-video-looks-very-bad-when-encoded-with-ffmpeg_002c-what-is-wrong_003f">3.11 Interlaced video looks very bad when encoded with ffmpeg, what is wrong?</a></h2>
 
 <p>You should use &rsquo;-flags +ilme+ildct&rsquo; and maybe &rsquo;-flags +alt&rsquo; for interlaced
 material, and try &rsquo;-top 0/1&rsquo; if the result looks really messed-up.
 </p>
 <a name="How-can-I-read-DirectShow-files_003f"></a>
-<h2 class="section"><a href="faq.html#toc-How-can-I-read-DirectShow-files_003f">3.14 How can I read DirectShow files?</a></h2>
+<h2 class="section"><a href="faq.html#toc-How-can-I-read-DirectShow-files_003f">3.12 How can I read DirectShow files?</a></h2>
 
 <p>If you have built FFmpeg with <code>./configure --enable-avisynth</code>
 (only possible on MinGW/Cygwin platforms),
 then you may use any file that DirectShow can read as input.
 </p>
 <p>Just create an &quot;input.avs&quot; text file with this single line ...
-</p><table><tr><td>&nbsp;</td><td><pre class="example">  DirectShowSource(&quot;C:\path to your file\yourfile.asf&quot;)
+</p><table><tr><td>&nbsp;</td><td><pre class="example">DirectShowSource(&quot;C:\path to your file\yourfile.asf&quot;)
 </pre></td></tr></table>
 <p>... and then feed that text file to ffmpeg:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">  ffmpeg -i input.avs
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.avs
 </pre></td></tr></table>
 
-<p>For ANY other help on Avisynth, please visit the
-<a href="http://www.avisynth.org/">Avisynth homepage</a>.
+<p>For ANY other help on AviSynth, please visit the
+<a href="http://www.avisynth.org/">AviSynth homepage</a>.
 </p>
 <a name="How-can-I-join-video-files_003f"></a>
-<h2 class="section"><a href="faq.html#toc-How-can-I-join-video-files_003f">3.15 How can I join video files?</a></h2>
+<h2 class="section"><a href="faq.html#toc-How-can-I-join-video-files_003f">3.13 How can I join video files?</a></h2>
+
+<p>To &quot;join&quot; video files is quite ambiguous. The following list explains the
+different kinds of &quot;joining&quot; and points out how those are addressed in
+FFmpeg. To join video files may mean:
+</p>
+<ul>
+<li>
+To put them one after the other: this is called to <em>concatenate</em> them
+(in short: concat) and is addressed
+<a href="#How-can-I-concatenate-video-files">in this very faq</a>.
+
+</li><li>
+To put them together in the same file, to let the user choose between the
+different versions (example: different audio languages): this is called to
+<em>multiplex</em> them together (in short: mux), and is done by simply
+invoking ffmpeg with several &lsquo;<samp>-i</samp>&rsquo; options.
+
+</li><li>
+For audio, to put all channels together in a single stream (example: two
+mono streams into one stereo stream): this is sometimes called to
+<em>merge</em> them, and can be done using the
+<a href="http://ffmpeg.org/ffmpeg-filters.html#amerge"><code>amerge</code></a> filter.
+
+</li><li>
+For audio, to play one on top of the other: this is called to <em>mix</em>
+them, and can be done by first merging them into a single stream and then
+using the <a href="http://ffmpeg.org/ffmpeg-filters.html#pan"><code>pan</code></a> filter to mix
+the channels at will.
+
+</li><li>
+For video, to display both together, side by side or one on top of a part of
+the other; it can be done using the
+<a href="http://ffmpeg.org/ffmpeg-filters.html#overlay"><code>overlay</code></a> video filter.
+
+</li></ul>
+
+<p><a name="How-can-I-concatenate-video-files"></a>
+</p><a name="How-can-I-concatenate-video-files_003f"></a>
+<h2 class="section"><a href="faq.html#toc-How-can-I-concatenate-video-files_003f">3.14 How can I concatenate video files?</a></h2>
+
+<p>There are several solutions, depending on the exact circumstances.
+</p>
+<a name="Concatenating-using-the-concat-filter"></a>
+<h3 class="subsection"><a href="faq.html#toc-Concatenating-using-the-concat-filter">3.14.1 Concatenating using the concat <em>filter</em></a></h3>
 
-<p>A few multimedia containers (MPEG-1, MPEG-2 PS, DV) allow to join video files by
-merely concatenating them.
+<p>FFmpeg has a <a href="http://ffmpeg.org/ffmpeg-filters.html#concat"><code>concat</code></a> filter designed specifically for that, with examples in the
+documentation. This operation is recommended if you need to re-encode.
+</p>
+<a name="Concatenating-using-the-concat-demuxer"></a>
+<h3 class="subsection"><a href="faq.html#toc-Concatenating-using-the-concat-demuxer">3.14.2 Concatenating using the concat <em>demuxer</em></a></h3>
+
+<p>FFmpeg has a <a href="http://www.ffmpeg.org/ffmpeg-formats.html#concat"><code>concat</code></a> demuxer which you can use when you want to avoid a re-encode and
+your format doesn&rsquo;t support file level concatenation.
+</p>
+<a name="Concatenating-using-the-concat-protocol-_0028file-level_0029"></a>
+<h3 class="subsection"><a href="faq.html#toc-Concatenating-using-the-concat-protocol-_0028file-level_0029">3.14.3 Concatenating using the concat <em>protocol</em> (file level)</a></h3>
+
+<p>FFmpeg has a <a href="http://ffmpeg.org/ffmpeg-protocols.html#concat"><code>concat</code></a> protocol designed specifically for that, with examples in the
+documentation.
+</p>
+<p>A few multimedia containers (MPEG-1, MPEG-2 PS, DV) allow to concatenate
+video by merely concatenating the files containing them.
 </p>
 <p>Hence you may concatenate your multimedia files by first transcoding them to
 these privileged formats, then using the humble <code>cat</code> command (or the
 equally humble <code>copy</code> under Windows), and finally transcoding back to your
 format of choice.
 </p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input1.avi -sameq intermediate1.mpg
-ffmpeg -i input2.avi -sameq intermediate2.mpg
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input1.avi -qscale:v 1 intermediate1.mpg
+ffmpeg -i input2.avi -qscale:v 1 intermediate2.mpg
 cat intermediate1.mpg intermediate2.mpg &gt; intermediate_all.mpg
-ffmpeg -i intermediate_all.mpg -sameq output.avi
+ffmpeg -i intermediate_all.mpg -qscale:v 2 output.avi
 </pre></td></tr></table>
 
-<p>Notice that you should either use <code>-sameq</code> or set a reasonably high
-bitrate for your intermediate and output files, if you want to preserve
-video quality.
+<p>Additionally, you can use the <code>concat</code> protocol instead of <code>cat</code> or
+<code>copy</code> which will avoid creation of a potentially huge intermediate file.
 </p>
-<p>Also notice that you may avoid the huge intermediate files by taking advantage
-of named pipes, should your platform support it:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input1.avi -qscale:v 1 intermediate1.mpg
+ffmpeg -i input2.avi -qscale:v 1 intermediate2.mpg
+ffmpeg -i concat:&quot;intermediate1.mpg|intermediate2.mpg&quot; -c copy intermediate_all.mpg
+ffmpeg -i intermediate_all.mpg -qscale:v 2 output.avi
+</pre></td></tr></table>
+
+<p>Note that you may need to escape the character &quot;|&quot; which is special for many
+shells.
+</p>
+<p>Another option is usage of named pipes, should your platform support it:
 </p>
 <table><tr><td>&nbsp;</td><td><pre class="example">mkfifo intermediate1.mpg
 mkfifo intermediate2.mpg
-ffmpeg -i input1.avi -sameq -y intermediate1.mpg &lt; /dev/null &amp;
-ffmpeg -i input2.avi -sameq -y intermediate2.mpg &lt; /dev/null &amp;
+ffmpeg -i input1.avi -qscale:v 1 -y intermediate1.mpg &lt; /dev/null &amp;
+ffmpeg -i input2.avi -qscale:v 1 -y intermediate2.mpg &lt; /dev/null &amp;
 cat intermediate1.mpg intermediate2.mpg |\
-ffmpeg -f mpeg -i - -sameq -vcodec mpeg4 -acodec libmp3lame output.avi
+ffmpeg -f mpeg -i - -c:v mpeg4 -acodec libmp3lame output.avi
 </pre></td></tr></table>
 
+<a name="Concatenating-using-raw-audio-and-video"></a>
+<h3 class="subsection"><a href="faq.html#toc-Concatenating-using-raw-audio-and-video">3.14.4 Concatenating using raw audio and video</a></h3>
+
 <p>Similarly, the yuv4mpegpipe format, and the raw video, raw audio codecs also
 allow concatenation, and the transcoding step is almost lossless.
 When using multiple yuv4mpegpipe(s), the first line needs to be discarded
@@ -470,7 +452,8 @@ from all but the first stream. This can be accomplished by piping through
 <code>tail</code> as seen below. Note that when piping through <code>tail</code> you
 must use command grouping, <code>{  ;}</code>, to background properly.
 </p>
-<p>For example, let&rsquo;s say we want to join two FLV files into an output.flv file:
+<p>For example, let&rsquo;s say we want to concatenate two FLV files into an
+output.flv file:
 </p>
 <table><tr><td>&nbsp;</td><td><pre class="example">mkfifo temp1.a
 mkfifo temp1.v
@@ -486,38 +469,94 @@ cat temp1.a temp2.a &gt; all.a &amp;
 cat temp1.v temp2.v &gt; all.v &amp;
 ffmpeg -f u16le -acodec pcm_s16le -ac 2 -ar 44100 -i all.a \
        -f yuv4mpegpipe -i all.v \
-       -sameq -y output.flv
+       -y output.flv
 rm temp[12].[av] all.[av]
 </pre></td></tr></table>
 
-<a name="The-ffmpeg-program-does-not-respect-the-_002dmaxrate-setting_002c-some-frames-are-bigger-than-maxrate_002ffps_002e"></a>
-<h2 class="section"><a href="faq.html#toc-The-ffmpeg-program-does-not-respect-the-_002dmaxrate-setting_002c-some-frames-are-bigger-than-maxrate_002ffps_002e">3.16 The ffmpeg program does not respect the -maxrate setting, some frames are bigger than maxrate/fps.</a></h2>
+<a name="g_t_002dprofile-option-fails-when-encoding-H_002e264-video-with-AAC-audio"></a>
+<h2 class="section"><a href="faq.html#toc-_002dprofile-option-fails-when-encoding-H_002e264-video-with-AAC-audio">3.15 -profile option fails when encoding H.264 video with AAC audio</a></h2>
 
-<p>Read the MPEG spec about video buffer verifier.
+<p><code>ffmpeg</code> prints an error like
 </p>
-<a name="I-want-CBR_002c-but-no-matter-what-I-do-frame-sizes-differ_002e"></a>
-<h2 class="section"><a href="faq.html#toc-I-want-CBR_002c-but-no-matter-what-I-do-frame-sizes-differ_002e">3.17 I want CBR, but no matter what I do frame sizes differ.</a></h2>
+<table><tr><td>&nbsp;</td><td><pre class="example">Undefined constant or missing '(' in 'baseline'
+Unable to parse option value &quot;baseline&quot;
+Error setting option profile to value baseline.
+</pre></td></tr></table>
 
-<p>You do not understand what CBR is, please read the MPEG spec.
-Read about video buffer verifier and constant bitrate.
-The one sentence summary is that there is a buffer and the input rate is
-constant, the output can vary as needed.
+<p>Short answer: write &lsquo;<samp>-profile:v</samp>&rsquo; instead of &lsquo;<samp>-profile</samp>&rsquo;.
+</p>
+<p>Long answer: this happens because the &lsquo;<samp>-profile</samp>&rsquo; option can apply to both
+video and audio.  Specifically the AAC encoder also defines some profiles, none
+of which are named <var>baseline</var>.
 </p>
-<a name="How-do-I-check-if-a-stream-is-CBR_003f"></a>
-<h2 class="section"><a href="faq.html#toc-How-do-I-check-if-a-stream-is-CBR_003f">3.18 How do I check if a stream is CBR?</a></h2>
+<p>The solution is to apply the &lsquo;<samp>-profile</samp>&rsquo; option to the video stream only
+by using <a href="http://ffmpeg.org/ffmpeg.html#Stream-specifiers-1">Stream specifiers</a>.
+Appending <code>:v</code> to it will do exactly that.
+</p>
+<a name="Using-_002df-lavfi_002c-audio-becomes-mono-for-no-apparent-reason_002e"></a>
+<h2 class="section"><a href="faq.html#toc-Using-_002df-lavfi_002c-audio-becomes-mono-for-no-apparent-reason_002e">3.16 Using &lsquo;<samp>-f lavfi</samp>&rsquo;, audio becomes mono for no apparent reason.</a></h2>
 
-<p>To quote the MPEG-2 spec:
-&quot;There is no way to tell that a bitstream is constant bitrate without
-examining all of the vbv_delay values and making complicated computations.&quot;
+<p>Use &lsquo;<samp>-dumpgraph -</samp>&rsquo; to find out exactly where the channel layout is
+lost.
+</p>
+<p>Most likely, it is through <code>auto-inserted aresample</code>. Try to understand
+why the converting filter was needed at that place.
+</p>
+<p>Just before the output is a likely place, as &lsquo;<samp>-f lavfi</samp>&rsquo; currently
+only support packed S16.
 </p>
+<p>Then insert the correct <code>aformat</code> explicitly in the filtergraph,
+specifying the exact format.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">aformat=sample_fmts=s16:channel_layouts=stereo
+</pre></td></tr></table>
+
+<a name="Why-does-FFmpeg-not-see-the-subtitles-in-my-VOB-file_003f"></a>
+<h2 class="section"><a href="faq.html#toc-Why-does-FFmpeg-not-see-the-subtitles-in-my-VOB-file_003f">3.17 Why does FFmpeg not see the subtitles in my VOB file?</a></h2>
 
+<p>VOB and a few other formats do not have a global header that describes
+everything present in the file. Instead, applications are supposed to scan
+the file to see what it contains. Since VOB files are frequently large, only
+the beginning is scanned. If the subtitles happen only later in the file,
+they will not be initally detected.
+</p>
+<p>Some applications, including the <code>ffmpeg</code> command-line tool, can only
+work with streams that were detected during the initial scan; streams that
+are detected later are ignored.
+</p>
+<p>The size of the initial scan is controlled by two options: <code>probesize</code>
+(default ~5 Mo) and <code>analyzeduration</code> (default 5,000,000 µs = 5 s). For
+the subtitle stream to be detected, both values must be large enough.
+</p>
+<a name="Why-was-the-ffmpeg-_002dsameq-option-removed_003f-What-to-use-instead_003f"></a>
+<h2 class="section"><a href="faq.html#toc-Why-was-the-ffmpeg-_002dsameq-option-removed_003f-What-to-use-instead_003f">3.18 Why was the <code>ffmpeg</code> &lsquo;<samp>-sameq</samp>&rsquo; option removed? What to use instead?</a></h2>
+
+<p>The &lsquo;<samp>-sameq</samp>&rsquo; option meant &quot;same quantizer&quot;, and made sense only in a
+very limited set of cases. Unfortunately, a lot of people mistook it for
+&quot;same quality&quot; and used it in places where it did not make sense: it had
+roughly the expected visible effect, but achieved it in a very inefficient
+way.
+</p>
+<p>Each encoder has its own set of options to set the quality-vs-size balance,
+use the options for the encoder you are using to set the quality level to a
+point acceptable for your tastes. The most common options to do that are
+&lsquo;<samp>-qscale</samp>&rsquo; and &lsquo;<samp>-qmax</samp>&rsquo;, but you should peruse the documentation
+of the encoder you chose.
+</p>
 <a name="Development"></a>
 <h1 class="chapter"><a href="faq.html#toc-Development">4. Development</a></h1>
 
 <a name="Are-there-examples-illustrating-how-to-use-the-FFmpeg-libraries_002c-particularly-libavcodec-and-libavformat_003f"></a>
 <h2 class="section"><a href="faq.html#toc-Are-there-examples-illustrating-how-to-use-the-FFmpeg-libraries_002c-particularly-libavcodec-and-libavformat_003f">4.1 Are there examples illustrating how to use the FFmpeg libraries, particularly libavcodec and libavformat?</a></h2>
 
-<p>Yes. Read the Developers Guide of the FFmpeg documentation. Alternatively,
+<p>Yes. Check the &lsquo;<tt>doc/examples</tt>&rsquo; directory in the source
+repository, also available online at:
+<a href="https://github.com/FFmpeg/FFmpeg/tree/master/doc/examples">https://github.com/FFmpeg/FFmpeg/tree/master/doc/examples</a>.
+</p>
+<p>Examples are also installed by default, usually in
+<code>$PREFIX/share/ffmpeg/examples</code>.
+</p>
+<p>Also you may read the Developers Guide of the FFmpeg documentation. Alternatively,
 examine the source code for one of the many open source projects that
 already incorporate FFmpeg at (<a href="projects.html">projects.html</a>).
 </p>
@@ -531,40 +570,16 @@ with <code>#ifdef</code>s related to the compiler.
 <a name="Is-Microsoft-Visual-C_002b_002b-supported_003f"></a>
 <h2 class="section"><a href="faq.html#toc-Is-Microsoft-Visual-C_002b_002b-supported_003f">4.3 Is Microsoft Visual C++ supported?</a></h2>
 
-<p>No. Microsoft Visual C++ is not compliant to the C99 standard and does
-not - among other things - support the inline assembly used in FFmpeg.
-If you wish to use MSVC++ for your
-project then you can link the MSVC++ code with libav* as long as
-you compile the latter with a working C compiler. For more information, see
-the <em>Microsoft Visual C++ compatibility</em> section in the FFmpeg
-documentation.
-</p>
-<p>There have been efforts to make FFmpeg compatible with MSVC++ in the
-past. However, they have all been rejected as too intrusive, especially
-since MinGW does the job adequately. None of the core developers
-work with MSVC++ and thus this item is low priority. Should you find
-the silver bullet that solves this problem, feel free to shoot it at us.
-</p>
-<p>We strongly recommend you to move over from MSVC++ to MinGW tools.
-</p>
-<a name="Can-I-use-FFmpeg-or-libavcodec-under-Windows_003f"></a>
-<h2 class="section"><a href="faq.html#toc-Can-I-use-FFmpeg-or-libavcodec-under-Windows_003f">4.4 Can I use FFmpeg or libavcodec under Windows?</a></h2>
-
-<p>Yes, but the Cygwin or MinGW tools <em>must</em> be used to compile FFmpeg.
-Read the <em>Windows</em> section in the FFmpeg documentation to find more
-information.
-</p>
-<p>To get help and instructions for building FFmpeg under Windows, check out
-the FFmpeg Windows Help Forum at
-<a href="http://ffmpeg.arrozcru.org/">http://ffmpeg.arrozcru.org/</a>.
+<p>Yes. Please see the <a href="platform.html">Microsoft Visual C++</a>
+section in the FFmpeg documentation.
 </p>
 <a name="Can-you-add-automake_002c-libtool-or-autoconf-support_003f"></a>
-<h2 class="section"><a href="faq.html#toc-Can-you-add-automake_002c-libtool-or-autoconf-support_003f">4.5 Can you add automake, libtool or autoconf support?</a></h2>
+<h2 class="section"><a href="faq.html#toc-Can-you-add-automake_002c-libtool-or-autoconf-support_003f">4.4 Can you add automake, libtool or autoconf support?</a></h2>
 
 <p>No. These tools are too bloated and they complicate the build.
 </p>
-<a name="Why-not-rewrite-ffmpeg-in-object_002doriented-C_002b_002b_003f"></a>
-<h2 class="section"><a href="faq.html#toc-Why-not-rewrite-ffmpeg-in-object_002doriented-C_002b_002b_003f">4.6 Why not rewrite ffmpeg in object-oriented C++?</a></h2>
+<a name="Why-not-rewrite-FFmpeg-in-object_002doriented-C_002b_002b_003f"></a>
+<h2 class="section"><a href="faq.html#toc-Why-not-rewrite-FFmpeg-in-object_002doriented-C_002b_002b_003f">4.5 Why not rewrite FFmpeg in object-oriented C++?</a></h2>
 
 <p>FFmpeg is already organized in a highly modular manner and does not need to
 be rewritten in a formal object language. Further, many of the developers
@@ -572,30 +587,40 @@ favor straight C; it works for them. For more arguments on this matter,
 read <a href="http://www.tux.org/lkml/#s15">&quot;Programming Religion&quot;</a>.
 </p>
 <a name="Why-are-the-ffmpeg-programs-devoid-of-debugging-symbols_003f"></a>
-<h2 class="section"><a href="faq.html#toc-Why-are-the-ffmpeg-programs-devoid-of-debugging-symbols_003f">4.7 Why are the ffmpeg programs devoid of debugging symbols?</a></h2>
+<h2 class="section"><a href="faq.html#toc-Why-are-the-ffmpeg-programs-devoid-of-debugging-symbols_003f">4.6 Why are the ffmpeg programs devoid of debugging symbols?</a></h2>
 
-<p>The build process creates ffmpeg_g, ffplay_g, etc. which contain full debug
-information. Those binaries are stripped to create ffmpeg, ffplay, etc. If
-you need the debug information, use the *_g versions.
+<p>The build process creates <code>ffmpeg_g</code>, <code>ffplay_g</code>, etc. which
+contain full debug information. Those binaries are stripped to create
+<code>ffmpeg</code>, <code>ffplay</code>, etc. If you need the debug information, use
+the *_g versions.
 </p>
 <a name="I-do-not-like-the-LGPL_002c-can-I-contribute-code-under-the-GPL-instead_003f"></a>
-<h2 class="section"><a href="faq.html#toc-I-do-not-like-the-LGPL_002c-can-I-contribute-code-under-the-GPL-instead_003f">4.8 I do not like the LGPL, can I contribute code under the GPL instead?</a></h2>
+<h2 class="section"><a href="faq.html#toc-I-do-not-like-the-LGPL_002c-can-I-contribute-code-under-the-GPL-instead_003f">4.7 I do not like the LGPL, can I contribute code under the GPL instead?</a></h2>
 
 <p>Yes, as long as the code is optional and can easily and cleanly be placed
-under #if CONFIG_GPL without breaking anything. So for example a new codec
+under #if CONFIG_GPL without breaking anything. So, for example, a new codec
 or filter would be OK under GPL while a bug fix to LGPL code would not.
 </p>
-<a name="I-want-to-compile-xyz_002ec-alone-but-my-compiler-produced-many-errors_002e"></a>
-<h2 class="section"><a href="faq.html#toc-I-want-to-compile-xyz_002ec-alone-but-my-compiler-produced-many-errors_002e">4.9 I want to compile xyz.c alone but my compiler produced many errors.</a></h2>
+<a name="I_0027m-using-FFmpeg-from-within-my-C-application-but-the-linker-complains-about-missing-symbols-from-the-libraries-themselves_002e"></a>
+<h2 class="section"><a href="faq.html#toc-I_0027m-using-FFmpeg-from-within-my-C-application-but-the-linker-complains-about-missing-symbols-from-the-libraries-themselves_002e">4.8 I&rsquo;m using FFmpeg from within my C application but the linker complains about missing symbols from the libraries themselves.</a></h2>
 
-<p>Common code is in its own files in libav* and is used by the individual
-codecs. They will not work without the common parts, you have to compile
-the whole libav*. If you wish, disable some parts with configure switches.
-You can also try to hack it and remove more, but if you had problems fixing
-the compilation failure then you are probably not qualified for this.
+<p>FFmpeg builds static libraries by default. In static libraries, dependencies
+are not handled. That has two consequences. First, you must specify the
+libraries in dependency order: <code>-lavdevice</code> must come before
+<code>-lavformat</code>, <code>-lavutil</code> must come after everything else, etc.
+Second, external libraries that are used in FFmpeg have to be specified too.
 </p>
-<a name="I_0027m-using-libavcodec-from-within-my-C_002b_002b-application-but-the-linker-complains-about-missing-symbols-which-seem-to-be-available_002e"></a>
-<h2 class="section"><a href="faq.html#toc-I_0027m-using-libavcodec-from-within-my-C_002b_002b-application-but-the-linker-complains-about-missing-symbols-which-seem-to-be-available_002e">4.10 I&rsquo;m using libavcodec from within my C++ application but the linker complains about missing symbols which seem to be available.</a></h2>
+<p>An easy way to get the full list of required libraries in dependency order
+is to use <code>pkg-config</code>.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">c99 -o program program.c $(pkg-config --cflags --libs libavformat libavcodec)
+</pre></td></tr></table>
+
+<p>See &lsquo;<tt>doc/example/Makefile</tt>&rsquo; and &lsquo;<tt>doc/example/pc-uninstalled</tt>&rsquo; for
+more details.
+</p>
+<a name="I_0027m-using-FFmpeg-from-within-my-C_002b_002b-application-but-the-linker-complains-about-missing-symbols-which-seem-to-be-available_002e"></a>
+<h2 class="section"><a href="faq.html#toc-I_0027m-using-FFmpeg-from-within-my-C_002b_002b-application-but-the-linker-complains-about-missing-symbols-which-seem-to-be-available_002e">4.9 I&rsquo;m using FFmpeg from within my C++ application but the linker complains about missing symbols which seem to be available.</a></h2>
 
 <p>FFmpeg is a pure C project, so to use the libraries within your C++ application
 you need to explicitly state that you are using a C library. You can do this by
@@ -603,55 +628,53 @@ encompassing your FFmpeg includes using <code>extern &quot;C&quot;</code>.
 </p>
 <p>See <a href="http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html#faq-32.3">http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html#faq-32.3</a>
 </p>
-<a name="I-have-a-file-in-memory-_002f-a-API-different-from-_002aopen_002f_002aread_002f-libc-how-do-I-use-it-with-libavformat_003f"></a>
-<h2 class="section"><a href="faq.html#toc-I-have-a-file-in-memory-_002f-a-API-different-from-_002aopen_002f_002aread_002f-libc-how-do-I-use-it-with-libavformat_003f">4.11 I have a file in memory / a API different from *open/*read/ libc how do I use it with libavformat?</a></h2>
-
-<p>You have to implement a URLProtocol, see &lsquo;<tt>libavformat/file.c</tt>&rsquo; in
-FFmpeg and &lsquo;<tt>libmpdemux/demux_lavf.c</tt>&rsquo; in MPlayer sources.
-</p>
-<a name="I-get-_0022No-compatible-shell-script-interpreter-found_002e_0022-in-MSys_002e"></a>
-<h2 class="section"><a href="faq.html#toc-I-get-_0022No-compatible-shell-script-interpreter-found_002e_0022-in-MSys_002e">4.12 I get &quot;No compatible shell script interpreter found.&quot; in MSys.</a></h2>
+<a name="I_0027m-using-libavutil-from-within-my-C_002b_002b-application-but-the-compiler-complains-about-_0027UINT64_005fC_0027-was-not-declared-in-this-scope"></a>
+<h2 class="section"><a href="faq.html#toc-I_0027m-using-libavutil-from-within-my-C_002b_002b-application-but-the-compiler-complains-about-_0027UINT64_005fC_0027-was-not-declared-in-this-scope">4.10 I&rsquo;m using libavutil from within my C++ application but the compiler complains about &rsquo;UINT64_C&rsquo; was not declared in this scope</a></h2>
 
-<p>The standard MSys bash (2.04) is broken. You need to install 2.05 or later.
+<p>FFmpeg is a pure C project using C99 math features, in order to enable C++
+to use them you have to append -D__STDC_CONSTANT_MACROS to your CXXFLAGS
 </p>
-<a name="I-get-_0022_002e_002fconfigure_003a-line-_003cxxx_003e_003a-pr_003a-command-not-found_0022-in-MSys_002e"></a>
-<h2 class="section"><a href="faq.html#toc-I-get-_0022_002e_002fconfigure_003a-line-_003cxxx_003e_003a-pr_003a-command-not-found_0022-in-MSys_002e">4.13 I get &quot;./configure: line &lt;xxx&gt;: pr: command not found&quot; in MSys.</a></h2>
-
-<p>The standard MSys install doesn&rsquo;t come with pr. You need to get it from the coreutils package.
-</p>
-<a name="Where-can-I-find-libav_002a-headers-for-Pascal_002fDelphi_003f"></a>
-<h2 class="section"><a href="faq.html#toc-Where-can-I-find-libav_002a-headers-for-Pascal_002fDelphi_003f">4.14 Where can I find libav* headers for Pascal/Delphi?</a></h2>
+<a name="I-have-a-file-in-memory-_002f-a-API-different-from-_002aopen_002f_002aread_002f-libc-how-do-I-use-it-with-libavformat_003f"></a>
+<h2 class="section"><a href="faq.html#toc-I-have-a-file-in-memory-_002f-a-API-different-from-_002aopen_002f_002aread_002f-libc-how-do-I-use-it-with-libavformat_003f">4.11 I have a file in memory / a API different from *open/*read/ libc how do I use it with libavformat?</a></h2>
 
-<p>see <a href="http://www.iversenit.dk/dev/ffmpeg-headers/">http://www.iversenit.dk/dev/ffmpeg-headers/</a>
+<p>You have to create a custom AVIOContext using <code>avio_alloc_context</code>,
+see &lsquo;<tt>libavformat/aviobuf.c</tt>&rsquo; in FFmpeg and &lsquo;<tt>libmpdemux/demux_lavf.c</tt>&rsquo; in MPlayer or MPlayer2 sources.
 </p>
 <a name="Where-is-the-documentation-about-ffv1_002c-msmpeg4_002c-asv1_002c-4xm_003f"></a>
-<h2 class="section"><a href="faq.html#toc-Where-is-the-documentation-about-ffv1_002c-msmpeg4_002c-asv1_002c-4xm_003f">4.15 Where is the documentation about ffv1, msmpeg4, asv1, 4xm?</a></h2>
+<h2 class="section"><a href="faq.html#toc-Where-is-the-documentation-about-ffv1_002c-msmpeg4_002c-asv1_002c-4xm_003f">4.12 Where is the documentation about ffv1, msmpeg4, asv1, 4xm?</a></h2>
 
 <p>see <a href="http://www.ffmpeg.org/~michael/">http://www.ffmpeg.org/~michael/</a>
 </p>
 <a name="How-do-I-feed-H_002e263_002dRTP-_0028and-other-codecs-in-RTP_0029-to-libavcodec_003f"></a>
-<h2 class="section"><a href="faq.html#toc-How-do-I-feed-H_002e263_002dRTP-_0028and-other-codecs-in-RTP_0029-to-libavcodec_003f">4.16 How do I feed H.263-RTP (and other codecs in RTP) to libavcodec?</a></h2>
+<h2 class="section"><a href="faq.html#toc-How-do-I-feed-H_002e263_002dRTP-_0028and-other-codecs-in-RTP_0029-to-libavcodec_003f">4.13 How do I feed H.263-RTP (and other codecs in RTP) to libavcodec?</a></h2>
 
 <p>Even if peculiar since it is network oriented, RTP is a container like any
 other. You have to <em>demux</em> RTP before feeding the payload to libavcodec.
 In this specific case please look at RFC 4629 to see how it should be done.
 </p>
-<a name="AVStream_002er_005fframe_005frate-is-wrong_002c-it-is-much-larger-than-the-framerate_002e"></a>
-<h2 class="section"><a href="faq.html#toc-AVStream_002er_005fframe_005frate-is-wrong_002c-it-is-much-larger-than-the-framerate_002e">4.17 AVStream.r_frame_rate is wrong, it is much larger than the framerate.</a></h2>
+<a name="AVStream_002er_005fframe_005frate-is-wrong_002c-it-is-much-larger-than-the-frame-rate_002e"></a>
+<h2 class="section"><a href="faq.html#toc-AVStream_002er_005fframe_005frate-is-wrong_002c-it-is-much-larger-than-the-frame-rate_002e">4.14 AVStream.r_frame_rate is wrong, it is much larger than the frame rate.</a></h2>
 
-<p>r_frame_rate is NOT the average framerate, it is the smallest framerate
+<p><code>r_frame_rate</code> is NOT the average frame rate, it is the smallest frame rate
 that can accurately represent all timestamps. So no, it is not
 wrong if it is larger than the average!
-For example, if you have mixed 25 and 30 fps content, then r_frame_rate
-will be 150.
+For example, if you have mixed 25 and 30 fps content, then <code>r_frame_rate</code>
+will be 150 (it is the least common multiple).
+If you are looking for the average frame rate, see <code>AVStream.avg_frame_rate</code>.
+</p>
+<a name="Why-is-make-fate-not-running-all-tests_003f"></a>
+<h2 class="section"><a href="faq.html#toc-Why-is-make-fate-not-running-all-tests_003f">4.15 Why is <code>make fate</code> not running all tests?</a></h2>
+
+<p>Make sure you have the fate-suite samples and the <code>SAMPLES</code> Make variable
+or <code>FATE_SAMPLES</code> environment variable or the <code>--samples</code>
+<code>configure</code> option is set to the right path.
 </p>
-<hr size="1">
-<p>
- <font size="-1">
-  This document was generated by <em>Kyle Schwarz</em> on <em>September 2, 2011</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.
- </font>
- <br>
+<a name="Why-is-make-fate-not-finding-the-samples_003f"></a>
+<h2 class="section"><a href="faq.html#toc-Why-is-make-fate-not-finding-the-samples_003f">4.16 Why is <code>make fate</code> not finding the samples?</a></h2>
 
+<p>Do you happen to have a <code>~</code> character in the samples path to indicate a
+home directory? The value is used in ways where the shell cannot expand it,
+causing FATE to not find files. Just replace <code>~</code> by the full path.
 </p>
-</body>
-</html>
+<footer class="footer pagination-right">
+<span class="label label-info">This document was generated by <em>Kyle Schwarz</em> on <em>December 14, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies/ffmpeg/doc/fate.html b/dependencies/ffmpeg/doc/fate.html
new file mode 100644 (file)
index 0000000..0e0bdba
--- /dev/null
@@ -0,0 +1,284 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on December 14, 2013 by texi2html 1.82 -->
+<!--
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>FFmpeg documentation : FFmpeg Automated Testing Environment: </title>
+
+<meta name="description" content="FFmpeg Automated Testing Environment: ">
+<meta name="keywords" content="FFmpeg documentation : FFmpeg Automated Testing Environment: ">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="default.css" />
+
+<link rel="icon" href="favicon.png" type="image/png" />
+</head>
+<body>
+<div id="container">
+<div id="body">
+
+<a name="Top"></a>
+<a name="SEC_Top"></a>
+<h1 class="settitle">FFmpeg Automated Testing Environment</h1>
+
+<a name="SEC_Contents"></a>
+<h1>Table of Contents</h1>
+<div class="contents">
+
+<ul class="toc">
+  <li><a name="toc-Introduction" href="#Introduction">1. Introduction</a></li>
+  <li><a name="toc-Using-FATE-from-your-FFmpeg-source-directory" href="#Using-FATE-from-your-FFmpeg-source-directory">2. Using FATE from your FFmpeg source directory</a></li>
+  <li><a name="toc-Submitting-the-results-to-the-FFmpeg-result-aggregation-server" href="#Submitting-the-results-to-the-FFmpeg-result-aggregation-server">3. Submitting the results to the FFmpeg result aggregation server</a></li>
+  <li><a name="toc-FATE-makefile-targets-and-variables" href="#FATE-makefile-targets-and-variables">4. FATE makefile targets and variables</a>
+  <ul class="toc">
+    <li><a name="toc-Makefile-targets" href="#Makefile-targets">4.1 Makefile targets</a></li>
+    <li><a name="toc-Makefile-variables" href="#Makefile-variables">4.2 Makefile variables</a></li>
+    <li><a name="toc-Examples" href="#Examples">4.3 Examples</a></li>
+  </ul>
+</li>
+</ul>
+</div>
+
+<a name="Introduction"></a>
+<h1 class="chapter"><a href="fate.html#toc-Introduction">1. Introduction</a></h1>
+
+<p>  FATE is an extended regression suite on the client-side and a means
+for results aggregation and presentation on the server-side.
+</p>
+<p>  The first part of this document explains how you can use FATE from
+your FFmpeg source directory to test your ffmpeg binary. The second
+part describes how you can run FATE to submit the results to FFmpeg&rsquo;s
+FATE server.
+</p>
+<p>  In any way you can have a look at the publicly viewable FATE results
+by visiting this website:
+</p>
+<p>  <a href="http://fate.ffmpeg.org/">http://fate.ffmpeg.org/</a>
+</p>
+<p>  This is especially recommended for all people contributing source
+code to FFmpeg, as it can be seen if some test on some platform broke
+with their recent contribution. This usually happens on the platforms
+the developers could not test on.
+</p>
+<p>  The second part of this document describes how you can run FATE to
+submit your results to FFmpeg&rsquo;s FATE server. If you want to submit your
+results be sure to check that your combination of CPU, OS and compiler
+is not already listed on the above mentioned website.
+</p>
+<p>  In the third part you can find a comprehensive listing of FATE makefile
+targets and variables.
+</p>
+
+<a name="Using-FATE-from-your-FFmpeg-source-directory"></a>
+<h1 class="chapter"><a href="fate.html#toc-Using-FATE-from-your-FFmpeg-source-directory">2. Using FATE from your FFmpeg source directory</a></h1>
+
+<p>  If you want to run FATE on your machine you need to have the samples
+in place. You can get the samples via the build target fate-rsync.
+Use this command from the top-level source directory:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">make fate-rsync SAMPLES=fate-suite/
+make fate       SAMPLES=fate-suite/
+</pre></td></tr></table>
+
+<p>  The above commands set the samples location by passing a makefile
+variable via command line. It is also possible to set the samples
+location at source configuration time by invoking configure with
+&lsquo;&ndash;samples=&lt;path to the samples directory&gt;&rsquo;. Afterwards you can
+invoke the makefile targets without setting the SAMPLES makefile
+variable. This is illustrated by the following commands:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">./configure --samples=fate-suite/
+make fate-rsync
+make fate
+</pre></td></tr></table>
+
+<p>  Yet another way to tell FATE about the location of the sample
+directory is by making sure the environment variable FATE_SAMPLES
+contains the path to your samples directory. This can be achieved
+by e.g. putting that variable in your shell profile or by setting
+it in your interactive session.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">FATE_SAMPLES=fate-suite/ make fate
+</pre></td></tr></table>
+
+<div class="float alert alert-info">
+<p>Do not put a &rsquo;~&rsquo; character in the samples path to indicate a home
+directory. Because of shell nuances, this will cause FATE to fail.
+</p></div>
+<p>To use a custom wrapper to run the test, pass &lsquo;<samp>--target-exec</samp>&rsquo; to
+<code>configure</code> or set the <var>TARGET_EXEC</var> Make variable.
+</p>
+
+<a name="Submitting-the-results-to-the-FFmpeg-result-aggregation-server"></a>
+<h1 class="chapter"><a href="fate.html#toc-Submitting-the-results-to-the-FFmpeg-result-aggregation-server">3. Submitting the results to the FFmpeg result aggregation server</a></h1>
+
+<p>  To submit your results to the server you should run fate through the
+shell script &lsquo;<tt>tests/fate.sh</tt>&rsquo; from the FFmpeg sources. This script needs
+to be invoked with a configuration file as its first argument.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">tests/fate.sh /path/to/fate_config
+</pre></td></tr></table>
+
+<p>  A configuration file template with comments describing the individual
+configuration variables can be found at &lsquo;<tt>doc/fate_config.sh.template</tt>&rsquo;.
+</p>
+<p>  The mentioned configuration template is also available here:
+<pre class="verbatim">slot=                                    # some unique identifier
+repo=git://source.ffmpeg.org/ffmpeg.git  # the source repository
+samples=                                 # path to samples directory
+workdir=                                 # directory in which to do all the work
+#fate_recv=&quot;ssh -T fate@fate.ffmpeg.org&quot; # command to submit report
+comment=                                 # optional description
+build_only=     # set to &quot;yes&quot; for a compile-only instance that skips tests
+
+# the following are optional and map to configure options
+arch=
+cpu=
+cross_prefix=
+as=
+cc=
+ld=
+target_os=
+sysroot=
+target_exec=
+target_path=
+target_samples=
+extra_cflags=
+extra_ldflags=
+extra_libs=
+extra_conf=     # extra configure options not covered above
+
+#make=          # name of GNU make if not 'make'
+makeopts=       # extra options passed to 'make'
+#tar=           # command to create a tar archive from its arguments on stdout,
+                # defaults to 'tar c'
+</pre></p>
+<p>  Create a configuration that suits your needs, based on the configuration
+template. The &lsquo;slot&rsquo; configuration variable can be any string that is not
+yet used, but it is suggested that you name it adhering to the following
+pattern &lt;arch&gt;-&lt;os&gt;-&lt;compiler&gt;-&lt;compiler version&gt;. The configuration file
+itself will be sourced in a shell script, therefore all shell features may
+be used. This enables you to setup the environment as you need it for your
+build.
+</p>
+<p>  For your first test runs the &lsquo;fate_recv&rsquo; variable should be empty or
+commented out. This will run everything as normal except that it will omit
+the submission of the results to the server. The following files should be
+present in $workdir as specified in the configuration file:
+</p>
+<ul>
+<li> configure.log
+    </li><li> compile.log
+    </li><li> test.log
+    </li><li> report
+    </li><li> version
+</li></ul>
+
+<p>  When you have everything working properly you can create an SSH key pair
+and send the public key to the FATE server administrator who can be contacted
+at the email address <a href="mailto:fate-admin@ffmpeg.org">fate-admin@ffmpeg.org</a>.
+</p>
+<p>  Configure your SSH client to use public key authentication with that key
+when connecting to the FATE server. Also do not forget to check the identity
+of the server and to accept its host key. This can usually be achieved by
+running your SSH client manually and killing it after you accepted the key.
+The FATE server&rsquo;s fingerprint is:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>RSA</samp>&rsquo;</dt>
+<dd><p>   d3:f1:83:97:a4:75:2b:a6:fb:d6:e8:aa:81:93:97:51
+</p></dd>
+<dt> &lsquo;<samp>ECDSA</samp>&rsquo;</dt>
+<dd><p>   76:9f:68:32:04:1e:d5:d4:ec:47:3f:dc:fc:18:17:86
+</p></dd>
+</dl>
+
+<p>  If you have problems connecting to the FATE server, it may help to try out
+the <code>ssh</code> command with one or more &lsquo;<samp>-v</samp>&rsquo; options. You should
+get detailed output concerning your SSH configuration and the authentication
+process.
+</p>
+<p>  The only thing left is to automate the execution of the fate.sh script and
+the synchronisation of the samples directory.
+</p>
+
+<a name="FATE-makefile-targets-and-variables"></a>
+<h1 class="chapter"><a href="fate.html#toc-FATE-makefile-targets-and-variables">4. FATE makefile targets and variables</a></h1>
+
+<a name="Makefile-targets"></a>
+<h2 class="section"><a href="fate.html#toc-Makefile-targets">4.1 Makefile targets</a></h2>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>fate-rsync</samp>&rsquo;</dt>
+<dd><p>Download/synchronize sample files to the configured samples directory.
+</p>
+</dd>
+<dt> &lsquo;<samp>fate-list</samp>&rsquo;</dt>
+<dd><p>Will list all fate/regression test targets.
+</p>
+</dd>
+<dt> &lsquo;<samp>fate</samp>&rsquo;</dt>
+<dd><p>Run the FATE test suite (requires the fate-suite dataset).
+</p></dd>
+</dl>
+
+<a name="Makefile-variables"></a>
+<h2 class="section"><a href="fate.html#toc-Makefile-variables">4.2 Makefile variables</a></h2>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>V</samp>&rsquo;</dt>
+<dd><p>Verbosity level, can be set to 0, 1 or 2.
+    </p><ul>
+<li> 0: show just the test arguments
+        </li><li> 1: show just the command used in the test
+        </li><li> 2: show everything
+    </li></ul>
+
+</dd>
+<dt> &lsquo;<samp>SAMPLES</samp>&rsquo;</dt>
+<dd><p>Specify or override the path to the FATE samples at make time, it has a
+meaning only while running the regression tests.
+</p>
+</dd>
+<dt> &lsquo;<samp>THREADS</samp>&rsquo;</dt>
+<dd><p>Specify how many threads to use while running regression tests, it is
+quite useful to detect thread-related regressions.
+</p>
+</dd>
+<dt> &lsquo;<samp>THREAD_TYPE</samp>&rsquo;</dt>
+<dd><p>Specify which threading strategy test, either <var>slice</var> or <var>frame</var>,
+by default <var>slice+frame</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>CPUFLAGS</samp>&rsquo;</dt>
+<dd><p>Specify CPU flags.
+</p>
+</dd>
+<dt> &lsquo;<samp>TARGET_EXEC</samp>&rsquo;</dt>
+<dd><p>Specify or override the wrapper used to run the tests.
+The <var>TARGET_EXEC</var> option provides a way to run FATE wrapped in
+<code>valgrind</code>, <code>qemu-user</code> or <code>wine</code> or on remote targets
+through <code>ssh</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>GEN</samp>&rsquo;</dt>
+<dd><p>Set to <var>1</var> to generate the missing or mismatched references.
+</p></dd>
+</dl>
+
+<a name="Examples"></a>
+<h2 class="section"><a href="fate.html#toc-Examples">4.3 Examples</a></h2>
+
+<table><tr><td>&nbsp;</td><td><pre class="example">make V=1 SAMPLES=/var/fate/samples THREADS=2 CPUFLAGS=mmx fate
+</pre></td></tr></table>
+<footer class="footer pagination-right">
+<span class="label label-info">This document was generated by <em>Kyle Schwarz</em> on <em>December 14, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies/ffmpeg/doc/ffmpeg-all.html b/dependencies/ffmpeg/doc/ffmpeg-all.html
new file mode 100644 (file)
index 0000000..57a5fa6
--- /dev/null
@@ -0,0 +1,23546 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on December 14, 2013 by texi2html 1.82 -->
+<!--
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>FFmpeg documentation : ffmpeg </title>
+
+<meta name="description" content="ffmpeg Documentation: ">
+<meta name="keywords" content="FFmpeg documentation : ffmpeg ">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="default.css" />
+
+<link rel="icon" href="favicon.png" type="image/png" />
+</head>
+<body>
+<div id="container">
+<div id="body">
+
+<a name="SEC_Top"></a>
+<h1 class="settitle">ffmpeg Documentation</h1>
+
+<a name="SEC_Contents"></a>
+<h1>Table of Contents</h1>
+<div class="contents">
+
+<ul class="toc">
+  <li><a name="toc-Synopsis" href="#Synopsis">1. Synopsis</a></li>
+  <li><a name="toc-Description" href="#Description">2. Description</a></li>
+  <li><a name="toc-Detailed-description" href="#Detailed-description">3. Detailed description</a>
+  <ul class="toc">
+    <li><a name="toc-Filtering" href="#Filtering">3.1 Filtering</a>
+    <ul class="toc">
+      <li><a name="toc-Simple-filtergraphs" href="#Simple-filtergraphs">3.1.1 Simple filtergraphs</a></li>
+      <li><a name="toc-Complex-filtergraphs" href="#Complex-filtergraphs">3.1.2 Complex filtergraphs</a></li>
+    </ul></li>
+    <li><a name="toc-Stream-copy" href="#Stream-copy">3.2 Stream copy</a></li>
+  </ul></li>
+  <li><a name="toc-Stream-selection" href="#Stream-selection">4. Stream selection</a></li>
+  <li><a name="toc-Options-10" href="#Options-10">5. Options</a>
+  <ul class="toc">
+    <li><a name="toc-Stream-specifiers-1" href="#Stream-specifiers-1">5.1 Stream specifiers</a></li>
+    <li><a name="toc-Generic-options" href="#Generic-options">5.2 Generic options</a></li>
+    <li><a name="toc-AVOptions" href="#AVOptions">5.3 AVOptions</a></li>
+    <li><a name="toc-Main-options" href="#Main-options">5.4 Main options</a></li>
+    <li><a name="toc-Video-Options" href="#Video-Options">5.5 Video Options</a></li>
+    <li><a name="toc-Advanced-Video-Options" href="#Advanced-Video-Options">5.6 Advanced Video Options</a></li>
+    <li><a name="toc-Audio-Options" href="#Audio-Options">5.7 Audio Options</a></li>
+    <li><a name="toc-Advanced-Audio-options_003a" href="#Advanced-Audio-options_003a">5.8 Advanced Audio options:</a></li>
+    <li><a name="toc-Subtitle-options_003a" href="#Subtitle-options_003a">5.9 Subtitle options:</a></li>
+    <li><a name="toc-Advanced-Subtitle-options_003a" href="#Advanced-Subtitle-options_003a">5.10 Advanced Subtitle options:</a></li>
+    <li><a name="toc-Advanced-options" href="#Advanced-options">5.11 Advanced options</a></li>
+    <li><a name="toc-Preset-files" href="#Preset-files">5.12 Preset files</a></li>
+  </ul></li>
+  <li><a name="toc-Tips" href="#Tips">6. Tips</a></li>
+  <li><a name="toc-Examples-28" href="#Examples-28">7. Examples</a>
+  <ul class="toc">
+    <li><a name="toc-Preset-files-1" href="#Preset-files-1">7.1 Preset files</a></li>
+    <li><a name="toc-Video-and-Audio-grabbing" href="#Video-and-Audio-grabbing">7.2 Video and Audio grabbing</a></li>
+    <li><a name="toc-X11-grabbing" href="#X11-grabbing">7.3 X11 grabbing</a></li>
+    <li><a name="toc-Video-and-Audio-file-format-conversion" href="#Video-and-Audio-file-format-conversion">7.4 Video and Audio file format conversion</a></li>
+  </ul></li>
+  <li><a name="toc-Syntax-2" href="#Syntax-2">8. Syntax</a>
+  <ul class="toc">
+    <li><a name="toc-Quoting-and-escaping" href="#Quoting-and-escaping">8.1 Quoting and escaping</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-40" href="#Examples-40">8.1.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-Date" href="#Date">8.2 Date</a></li>
+    <li><a name="toc-Time-duration" href="#Time-duration">8.3 Time duration</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-89" href="#Examples-89">8.3.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-Video-size" href="#Video-size">8.4 Video size</a></li>
+    <li><a name="toc-Video-rate" href="#Video-rate">8.5 Video rate</a></li>
+    <li><a name="toc-Ratio" href="#Ratio">8.6 Ratio</a></li>
+    <li><a name="toc-Color" href="#Color">8.7 Color</a></li>
+    <li><a name="toc-Channel-Layout" href="#Channel-Layout">8.8 Channel Layout</a></li>
+  </ul></li>
+  <li><a name="toc-Expression-Evaluation" href="#Expression-Evaluation">9. Expression Evaluation</a></li>
+  <li><a name="toc-OpenCL-Options" href="#OpenCL-Options">10. OpenCL Options</a></li>
+  <li><a name="toc-Codec-Options" href="#Codec-Options">11. Codec Options</a></li>
+  <li><a name="toc-Decoders" href="#Decoders">12. Decoders</a></li>
+  <li><a name="toc-Video-Decoders" href="#Video-Decoders">13. Video Decoders</a>
+  <ul class="toc">
+    <li><a name="toc-rawvideo-1" href="#rawvideo-1">13.1 rawvideo</a>
+    <ul class="toc">
+      <li><a name="toc-Options-7" href="#Options-7">13.1.1 Options</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Audio-Decoders" href="#Audio-Decoders">14. Audio Decoders</a>
+  <ul class="toc">
+    <li><a name="toc-ffwavesynth" href="#ffwavesynth">14.1 ffwavesynth</a></li>
+    <li><a name="toc-libcelt" href="#libcelt">14.2 libcelt</a></li>
+    <li><a name="toc-libgsm" href="#libgsm">14.3 libgsm</a></li>
+    <li><a name="toc-libilbc" href="#libilbc">14.4 libilbc</a>
+    <ul class="toc">
+      <li><a name="toc-Options-26" href="#Options-26">14.4.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libopencore_002damrnb-1" href="#libopencore_002damrnb-1">14.5 libopencore-amrnb</a></li>
+    <li><a name="toc-libopencore_002damrwb" href="#libopencore_002damrwb">14.6 libopencore-amrwb</a></li>
+    <li><a name="toc-libopus-1" href="#libopus-1">14.7 libopus</a></li>
+  </ul></li>
+  <li><a name="toc-Subtitles-Decoders" href="#Subtitles-Decoders">15. Subtitles Decoders</a>
+  <ul class="toc">
+    <li><a name="toc-dvdsub" href="#dvdsub">15.1 dvdsub</a>
+    <ul class="toc">
+      <li><a name="toc-Options-30" href="#Options-30">15.1.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libzvbi_002dteletext" href="#libzvbi_002dteletext">15.2 libzvbi-teletext</a>
+    <ul class="toc">
+      <li><a name="toc-Options-18" href="#Options-18">15.2.1 Options</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Encoders" href="#Encoders">16. Encoders</a></li>
+  <li><a name="toc-Audio-Encoders" href="#Audio-Encoders">17. Audio Encoders</a>
+  <ul class="toc">
+    <li><a name="toc-aac" href="#aac">17.1 aac</a>
+    <ul class="toc">
+      <li><a name="toc-Options-9" href="#Options-9">17.1.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-ac3-and-ac3_005ffixed" href="#ac3-and-ac3_005ffixed">17.2 ac3 and ac3_fixed</a>
+    <ul class="toc">
+      <li><a name="toc-AC_002d3-Metadata" href="#AC_002d3-Metadata">17.2.1 AC-3 Metadata</a>
+      <ul class="toc">
+        <li><a name="toc-Metadata-Control-Options" href="#Metadata-Control-Options">17.2.1.1 Metadata Control Options</a></li>
+        <li><a name="toc-Downmix-Levels" href="#Downmix-Levels">17.2.1.2 Downmix Levels</a></li>
+        <li><a name="toc-Audio-Production-Information" href="#Audio-Production-Information">17.2.1.3 Audio Production Information</a></li>
+        <li><a name="toc-Other-Metadata-Options" href="#Other-Metadata-Options">17.2.1.4 Other Metadata Options</a></li>
+      </ul></li>
+      <li><a name="toc-Extended-Bitstream-Information" href="#Extended-Bitstream-Information">17.2.2 Extended Bitstream Information</a>
+      <ul class="toc">
+        <li><a name="toc-Extended-Bitstream-Information-_002d-Part-1" href="#Extended-Bitstream-Information-_002d-Part-1">17.2.2.1 Extended Bitstream Information - Part 1</a></li>
+        <li><a name="toc-Extended-Bitstream-Information-_002d-Part-2" href="#Extended-Bitstream-Information-_002d-Part-2">17.2.2.2 Extended Bitstream Information - Part 2</a></li>
+      </ul></li>
+      <li><a name="toc-Other-AC_002d3-Encoding-Options" href="#Other-AC_002d3-Encoding-Options">17.2.3 Other AC-3 Encoding Options</a></li>
+      <li><a name="toc-Floating_002dPoint_002dOnly-AC_002d3-Encoding-Options" href="#Floating_002dPoint_002dOnly-AC_002d3-Encoding-Options">17.2.4 Floating-Point-Only AC-3 Encoding Options</a></li>
+    </ul></li>
+    <li><a name="toc-libfaac-1" href="#libfaac-1">17.3 libfaac</a>
+    <ul class="toc">
+      <li><a name="toc-Options-16" href="#Options-16">17.3.1 Options</a></li>
+      <li><a name="toc-Examples-27" href="#Examples-27">17.3.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-libfdk_005faac" href="#libfdk_005faac">17.4 libfdk_aac</a>
+    <ul class="toc">
+      <li><a name="toc-Options-6" href="#Options-6">17.4.1 Options</a></li>
+      <li><a name="toc-Examples-12" href="#Examples-12">17.4.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-libmp3lame-1" href="#libmp3lame-1">17.5 libmp3lame</a>
+    <ul class="toc">
+      <li><a name="toc-Options-21" href="#Options-21">17.5.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libopencore_002damrnb" href="#libopencore_002damrnb">17.6 libopencore-amrnb</a>
+    <ul class="toc">
+      <li><a name="toc-Options-31" href="#Options-31">17.6.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libshine-1" href="#libshine-1">17.7 libshine</a>
+    <ul class="toc">
+      <li><a name="toc-Options-13" href="#Options-13">17.7.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libtwolame" href="#libtwolame">17.8 libtwolame</a>
+    <ul class="toc">
+      <li><a name="toc-Options-8" href="#Options-8">17.8.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libvo_002daacenc-1" href="#libvo_002daacenc-1">17.9 libvo-aacenc</a>
+    <ul class="toc">
+      <li><a name="toc-Options-5" href="#Options-5">17.9.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libvo_002damrwbenc" href="#libvo_002damrwbenc">17.10 libvo-amrwbenc</a>
+    <ul class="toc">
+      <li><a name="toc-Options-22" href="#Options-22">17.10.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libopus" href="#libopus">17.11 libopus</a>
+    <ul class="toc">
+      <li><a name="toc-Option-Mapping" href="#Option-Mapping">17.11.1 Option Mapping</a></li>
+    </ul></li>
+    <li><a name="toc-libvorbis" href="#libvorbis">17.12 libvorbis</a>
+    <ul class="toc">
+      <li><a name="toc-Options-27" href="#Options-27">17.12.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libwavpack" href="#libwavpack">17.13 libwavpack</a></li>
+  </ul></li>
+  <li><a name="toc-Video-Encoders" href="#Video-Encoders">18. Video Encoders</a>
+  <ul class="toc">
+    <li><a name="toc-libtheora" href="#libtheora">18.1 libtheora</a>
+    <ul class="toc">
+      <li><a name="toc-Options-23" href="#Options-23">18.1.1 Options</a></li>
+      <li><a name="toc-Examples-62" href="#Examples-62">18.1.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-libvpx" href="#libvpx">18.2 libvpx</a>
+    <ul class="toc">
+      <li><a name="toc-Options-32" href="#Options-32">18.2.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libx264" href="#libx264">18.3 libx264</a>
+    <ul class="toc">
+      <li><a name="toc-Options-19" href="#Options-19">18.3.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libxvid" href="#libxvid">18.4 libxvid</a>
+    <ul class="toc">
+      <li><a name="toc-Options-28" href="#Options-28">18.4.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-png" href="#png">18.5 png</a>
+    <ul class="toc">
+      <li><a name="toc-Private-options" href="#Private-options">18.5.1 Private options</a></li>
+    </ul></li>
+    <li><a name="toc-ProRes" href="#ProRes">18.6 ProRes</a>
+    <ul class="toc">
+      <li><a name="toc-Private-Options-for-prores_002dks" href="#Private-Options-for-prores_002dks">18.6.1 Private Options for prores-ks</a></li>
+      <li><a name="toc-Speed-considerations" href="#Speed-considerations">18.6.2 Speed considerations</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Bitstream-Filters" href="#Bitstream-Filters">19. Bitstream Filters</a>
+  <ul class="toc">
+    <li><a name="toc-aac_005fadtstoasc" href="#aac_005fadtstoasc">19.1 aac_adtstoasc</a></li>
+    <li><a name="toc-chomp" href="#chomp">19.2 chomp</a></li>
+    <li><a name="toc-dump_005fextra" href="#dump_005fextra">19.3 dump_extra</a></li>
+    <li><a name="toc-h264_005fmp4toannexb" href="#h264_005fmp4toannexb">19.4 h264_mp4toannexb</a></li>
+    <li><a name="toc-imx_005fdump_005fheader" href="#imx_005fdump_005fheader">19.5 imx_dump_header</a></li>
+    <li><a name="toc-mjpeg2jpeg" href="#mjpeg2jpeg">19.6 mjpeg2jpeg</a></li>
+    <li><a name="toc-mjpega_005fdump_005fheader" href="#mjpega_005fdump_005fheader">19.7 mjpega_dump_header</a></li>
+    <li><a name="toc-movsub" href="#movsub">19.8 movsub</a></li>
+    <li><a name="toc-mp3_005fheader_005fdecompress" href="#mp3_005fheader_005fdecompress">19.9 mp3_header_decompress</a></li>
+    <li><a name="toc-noise-1" href="#noise-1">19.10 noise</a></li>
+    <li><a name="toc-remove_005fextra" href="#remove_005fextra">19.11 remove_extra</a></li>
+  </ul></li>
+  <li><a name="toc-Format-Options" href="#Format-Options">20. Format Options</a>
+  <ul class="toc">
+    <li><a name="toc-Format-stream-specifiers-1" href="#Format-stream-specifiers-1">20.1 Format stream specifiers</a></li>
+  </ul></li>
+  <li><a name="toc-Demuxers" href="#Demuxers">21. Demuxers</a>
+  <ul class="toc">
+    <li><a name="toc-applehttp" href="#applehttp">21.1 applehttp</a></li>
+    <li><a name="toc-asf" href="#asf">21.2 asf</a></li>
+    <li><a name="toc-concat-3" href="#concat-3">21.3 concat</a>
+    <ul class="toc">
+      <li><a name="toc-Syntax-1" href="#Syntax-1">21.3.1 Syntax</a></li>
+      <li><a name="toc-Options-12" href="#Options-12">21.3.2 Options</a></li>
+    </ul></li>
+    <li><a name="toc-flv" href="#flv">21.4 flv</a></li>
+    <li><a name="toc-libgme" href="#libgme">21.5 libgme</a></li>
+    <li><a name="toc-libquvi" href="#libquvi">21.6 libquvi</a></li>
+    <li><a name="toc-image2-2" href="#image2-2">21.7 image2</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-69" href="#Examples-69">21.7.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mpegts-1" href="#mpegts-1">21.8 mpegts</a></li>
+    <li><a name="toc-rawvideo" href="#rawvideo">21.9 rawvideo</a></li>
+    <li><a name="toc-sbg" href="#sbg">21.10 sbg</a></li>
+    <li><a name="toc-tedcaptions" href="#tedcaptions">21.11 tedcaptions</a></li>
+  </ul></li>
+  <li><a name="toc-Muxers" href="#Muxers">22. Muxers</a>
+  <ul class="toc">
+    <li><a name="toc-aiff-1" href="#aiff-1">22.1 aiff</a></li>
+    <li><a name="toc-crc-1" href="#crc-1">22.2 crc</a></li>
+    <li><a name="toc-framecrc-1" href="#framecrc-1">22.3 framecrc</a></li>
+    <li><a name="toc-framemd5-1" href="#framemd5-1">22.4 framemd5</a></li>
+    <li><a name="toc-gif-1" href="#gif-1">22.5 gif</a></li>
+    <li><a name="toc-hls-1" href="#hls-1">22.6 hls</a></li>
+    <li><a name="toc-ico-1" href="#ico-1">22.7 ico</a></li>
+    <li><a name="toc-image2-1" href="#image2-1">22.8 image2</a></li>
+    <li><a name="toc-matroska" href="#matroska">22.9 matroska</a></li>
+    <li><a name="toc-md5-1" href="#md5-1">22.10 md5</a></li>
+    <li><a name="toc-mov_002fmp4_002fismv" href="#mov_002fmp4_002fismv">22.11 mov/mp4/ismv</a></li>
+    <li><a name="toc-mp3" href="#mp3">22.12 mp3</a></li>
+    <li><a name="toc-mpegts" href="#mpegts">22.13 mpegts</a></li>
+    <li><a name="toc-null-1" href="#null-1">22.14 null</a></li>
+    <li><a name="toc-ogg" href="#ogg">22.15 ogg</a></li>
+    <li><a name="toc-segment_002c-stream_005fsegment_002c-ssegment" href="#segment_002c-stream_005fsegment_002c-ssegment">22.16 segment, stream_segment, ssegment</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-41" href="#Examples-41">22.16.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-tee" href="#tee">22.17 tee</a></li>
+  </ul></li>
+  <li><a name="toc-Metadata" href="#Metadata">23. Metadata</a></li>
+  <li><a name="toc-Protocols" href="#Protocols">24. Protocols</a>
+  <ul class="toc">
+    <li><a name="toc-bluray" href="#bluray">24.1 bluray</a></li>
+    <li><a name="toc-cache" href="#cache">24.2 cache</a></li>
+    <li><a name="toc-concat-2" href="#concat-2">24.3 concat</a></li>
+    <li><a name="toc-crypto" href="#crypto">24.4 crypto</a></li>
+    <li><a name="toc-data" href="#data">24.5 data</a></li>
+    <li><a name="toc-file" href="#file">24.6 file</a></li>
+    <li><a name="toc-ftp" href="#ftp">24.7 ftp</a></li>
+    <li><a name="toc-gopher" href="#gopher">24.8 gopher</a></li>
+    <li><a name="toc-hls-2" href="#hls-2">24.9 hls</a></li>
+    <li><a name="toc-http" href="#http">24.10 http</a>
+    <ul class="toc">
+      <li><a name="toc-HTTP-Cookies" href="#HTTP-Cookies">24.10.1 HTTP Cookies</a></li>
+    </ul></li>
+    <li><a name="toc-mmst" href="#mmst">24.11 mmst</a></li>
+    <li><a name="toc-mmsh" href="#mmsh">24.12 mmsh</a></li>
+    <li><a name="toc-md5-2" href="#md5-2">24.13 md5</a></li>
+    <li><a name="toc-pipe" href="#pipe">24.14 pipe</a></li>
+    <li><a name="toc-rtmp" href="#rtmp">24.15 rtmp</a></li>
+    <li><a name="toc-rtmpe" href="#rtmpe">24.16 rtmpe</a></li>
+    <li><a name="toc-rtmps" href="#rtmps">24.17 rtmps</a></li>
+    <li><a name="toc-rtmpt" href="#rtmpt">24.18 rtmpt</a></li>
+    <li><a name="toc-rtmpte" href="#rtmpte">24.19 rtmpte</a></li>
+    <li><a name="toc-rtmpts" href="#rtmpts">24.20 rtmpts</a></li>
+    <li><a name="toc-libssh" href="#libssh">24.21 libssh</a></li>
+    <li><a name="toc-librtmp-rtmp_002c-rtmpe_002c-rtmps_002c-rtmpt_002c-rtmpte" href="#librtmp-rtmp_002c-rtmpe_002c-rtmps_002c-rtmpt_002c-rtmpte">24.22 librtmp rtmp, rtmpe, rtmps, rtmpt, rtmpte</a></li>
+    <li><a name="toc-rtp" href="#rtp">24.23 rtp</a></li>
+    <li><a name="toc-rtsp" href="#rtsp">24.24 rtsp</a></li>
+    <li><a name="toc-sap" href="#sap">24.25 sap</a>
+    <ul class="toc">
+      <li><a name="toc-Muxer" href="#Muxer">24.25.1 Muxer</a></li>
+      <li><a name="toc-Demuxer" href="#Demuxer">24.25.2 Demuxer</a></li>
+    </ul></li>
+    <li><a name="toc-sctp" href="#sctp">24.26 sctp</a></li>
+    <li><a name="toc-srtp" href="#srtp">24.27 srtp</a></li>
+    <li><a name="toc-tcp" href="#tcp">24.28 tcp</a></li>
+    <li><a name="toc-tls" href="#tls">24.29 tls</a></li>
+    <li><a name="toc-udp" href="#udp">24.30 udp</a></li>
+    <li><a name="toc-unix" href="#unix">24.31 unix</a></li>
+  </ul></li>
+  <li><a name="toc-Device-Options" href="#Device-Options">25. Device Options</a></li>
+  <li><a name="toc-Input-Devices" href="#Input-Devices">26. Input Devices</a>
+  <ul class="toc">
+    <li><a name="toc-alsa" href="#alsa">26.1 alsa</a></li>
+    <li><a name="toc-bktr" href="#bktr">26.2 bktr</a></li>
+    <li><a name="toc-dshow" href="#dshow">26.3 dshow</a>
+    <ul class="toc">
+      <li><a name="toc-Options-4" href="#Options-4">26.3.1 Options</a></li>
+      <li><a name="toc-Examples-49" href="#Examples-49">26.3.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-dv1394" href="#dv1394">26.4 dv1394</a></li>
+    <li><a name="toc-fbdev" href="#fbdev">26.5 fbdev</a></li>
+    <li><a name="toc-iec61883" href="#iec61883">26.6 iec61883</a>
+    <ul class="toc">
+      <li><a name="toc-Options-11" href="#Options-11">26.6.1 Options</a></li>
+      <li><a name="toc-Examples-44" href="#Examples-44">26.6.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-jack" href="#jack">26.7 jack</a></li>
+    <li><a name="toc-lavfi" href="#lavfi">26.8 lavfi</a>
+    <ul class="toc">
+      <li><a name="toc-Options-14" href="#Options-14">26.8.1 Options</a></li>
+      <li><a name="toc-Examples-26" href="#Examples-26">26.8.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-libdc1394" href="#libdc1394">26.9 libdc1394</a></li>
+    <li><a name="toc-openal" href="#openal">26.10 openal</a>
+    <ul class="toc">
+      <li><a name="toc-Options-15" href="#Options-15">26.10.1 Options</a></li>
+      <li><a name="toc-Examples-85" href="#Examples-85">26.10.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-oss-1" href="#oss-1">26.11 oss</a></li>
+    <li><a name="toc-pulse" href="#pulse">26.12 pulse</a>
+    <ul class="toc">
+      <li><a name="toc-Options-1" href="#Options-1">26.12.1 Options</a></li>
+      <li><a name="toc-Examples-52" href="#Examples-52">26.12.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sndio-1" href="#sndio-1">26.13 sndio</a></li>
+    <li><a name="toc-video4linux2_002c-v4l2" href="#video4linux2_002c-v4l2">26.14 video4linux2, v4l2</a>
+    <ul class="toc">
+      <li><a name="toc-Options-24" href="#Options-24">26.14.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-vfwcap" href="#vfwcap">26.15 vfwcap</a></li>
+    <li><a name="toc-x11grab" href="#x11grab">26.16 x11grab</a>
+    <ul class="toc">
+      <li><a name="toc-Options-20" href="#Options-20">26.16.1 Options</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Output-Devices" href="#Output-Devices">27. Output Devices</a>
+  <ul class="toc">
+    <li><a name="toc-alsa-1" href="#alsa-1">27.1 alsa</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-61" href="#Examples-61">27.1.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-caca" href="#caca">27.2 caca</a>
+    <ul class="toc">
+      <li><a name="toc-Options-17" href="#Options-17">27.2.1 Options</a></li>
+      <li><a name="toc-Examples-43" href="#Examples-43">27.2.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-fbdev-1" href="#fbdev-1">27.3 fbdev</a>
+    <ul class="toc">
+      <li><a name="toc-Options-29" href="#Options-29">27.3.1 Options</a></li>
+      <li><a name="toc-Examples-5" href="#Examples-5">27.3.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-oss" href="#oss">27.4 oss</a></li>
+    <li><a name="toc-pulse-1" href="#pulse-1">27.5 pulse</a>
+    <ul class="toc">
+      <li><a name="toc-Options-3" href="#Options-3">27.5.1 Options</a></li>
+      <li><a name="toc-Examples-74" href="#Examples-74">27.5.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sdl" href="#sdl">27.6 sdl</a>
+    <ul class="toc">
+      <li><a name="toc-Options-25" href="#Options-25">27.6.1 Options</a></li>
+      <li><a name="toc-Interactive-commands" href="#Interactive-commands">27.6.2 Interactive commands</a></li>
+      <li><a name="toc-Examples-84" href="#Examples-84">27.6.3 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sndio" href="#sndio">27.7 sndio</a></li>
+    <li><a name="toc-xv" href="#xv">27.8 xv</a>
+    <ul class="toc">
+      <li><a name="toc-Options-2" href="#Options-2">27.8.1 Options</a></li>
+      <li><a name="toc-Examples-20" href="#Examples-20">27.8.2 Examples</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Resampler-Options" href="#Resampler-Options">28. Resampler Options</a></li>
+  <li><a name="toc-Scaler-Options" href="#Scaler-Options">29. Scaler Options</a></li>
+  <li><a name="toc-Filtering-Introduction" href="#Filtering-Introduction">30. Filtering Introduction</a></li>
+  <li><a name="toc-graph2dot" href="#graph2dot">31. graph2dot</a></li>
+  <li><a name="toc-Filtergraph-description" href="#Filtergraph-description">32. Filtergraph description</a>
+  <ul class="toc">
+    <li><a name="toc-Filtergraph-syntax-1" href="#Filtergraph-syntax-1">32.1 Filtergraph syntax</a></li>
+    <li><a name="toc-Notes-on-filtergraph-escaping" href="#Notes-on-filtergraph-escaping">32.2 Notes on filtergraph escaping</a></li>
+  </ul></li>
+  <li><a name="toc-Timeline-editing" href="#Timeline-editing">33. Timeline editing</a></li>
+  <li><a name="toc-Audio-Filters" href="#Audio-Filters">34. Audio Filters</a>
+  <ul class="toc">
+    <li><a name="toc-aconvert" href="#aconvert">34.1 aconvert</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-38" href="#Examples-38">34.1.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-adelay" href="#adelay">34.2 adelay</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-22" href="#Examples-22">34.2.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-aecho" href="#aecho">34.3 aecho</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-76" href="#Examples-76">34.3.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-aeval" href="#aeval">34.4 aeval</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-90" href="#Examples-90">34.4.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-afade" href="#afade">34.5 afade</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-53" href="#Examples-53">34.5.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-aformat-1" href="#aformat-1">34.6 aformat</a></li>
+    <li><a name="toc-allpass" href="#allpass">34.7 allpass</a></li>
+    <li><a name="toc-amerge" href="#amerge">34.8 amerge</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-56" href="#Examples-56">34.8.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-amix" href="#amix">34.9 amix</a></li>
+    <li><a name="toc-anull" href="#anull">34.10 anull</a></li>
+    <li><a name="toc-apad" href="#apad">34.11 apad</a></li>
+    <li><a name="toc-aphaser" href="#aphaser">34.12 aphaser</a></li>
+    <li><a name="toc-aresample-1" href="#aresample-1">34.13 aresample</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-18" href="#Examples-18">34.13.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-asetnsamples" href="#asetnsamples">34.14 asetnsamples</a></li>
+    <li><a name="toc-asetrate" href="#asetrate">34.15 asetrate</a></li>
+    <li><a name="toc-ashowinfo" href="#ashowinfo">34.16 ashowinfo</a></li>
+    <li><a name="toc-astats" href="#astats">34.17 astats</a></li>
+    <li><a name="toc-astreamsync" href="#astreamsync">34.18 astreamsync</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-31" href="#Examples-31">34.18.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-asyncts" href="#asyncts">34.19 asyncts</a></li>
+    <li><a name="toc-atempo" href="#atempo">34.20 atempo</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-39" href="#Examples-39">34.20.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-atrim" href="#atrim">34.21 atrim</a></li>
+    <li><a name="toc-bandpass" href="#bandpass">34.22 bandpass</a></li>
+    <li><a name="toc-bandreject" href="#bandreject">34.23 bandreject</a></li>
+    <li><a name="toc-bass" href="#bass">34.24 bass</a></li>
+    <li><a name="toc-biquad" href="#biquad">34.25 biquad</a></li>
+    <li><a name="toc-channelmap" href="#channelmap">34.26 channelmap</a></li>
+    <li><a name="toc-channelsplit" href="#channelsplit">34.27 channelsplit</a></li>
+    <li><a name="toc-compand" href="#compand">34.28 compand</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-79" href="#Examples-79">34.28.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-earwax" href="#earwax">34.29 earwax</a></li>
+    <li><a name="toc-equalizer" href="#equalizer">34.30 equalizer</a></li>
+    <li><a name="toc-highpass" href="#highpass">34.31 highpass</a></li>
+    <li><a name="toc-join" href="#join">34.32 join</a></li>
+    <li><a name="toc-ladspa" href="#ladspa">34.33 ladspa</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-75" href="#Examples-75">34.33.1 Examples</a></li>
+      <li><a name="toc-Commands-1" href="#Commands-1">34.33.2 Commands</a></li>
+    </ul></li>
+    <li><a name="toc-lowpass" href="#lowpass">34.34 lowpass</a></li>
+    <li><a name="toc-pan" href="#pan">34.35 pan</a>
+    <ul class="toc">
+      <li><a name="toc-Mixing-examples" href="#Mixing-examples">34.35.1 Mixing examples</a></li>
+      <li><a name="toc-Remapping-examples" href="#Remapping-examples">34.35.2 Remapping examples</a></li>
+    </ul></li>
+    <li><a name="toc-replaygain" href="#replaygain">34.36 replaygain</a></li>
+    <li><a name="toc-resample" href="#resample">34.37 resample</a></li>
+    <li><a name="toc-silencedetect" href="#silencedetect">34.38 silencedetect</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-24" href="#Examples-24">34.38.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-treble" href="#treble">34.39 treble</a></li>
+    <li><a name="toc-volume" href="#volume">34.40 volume</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-70" href="#Examples-70">34.40.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-volumedetect" href="#volumedetect">34.41 volumedetect</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-51" href="#Examples-51">34.41.1 Examples</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Audio-Sources" href="#Audio-Sources">35. Audio Sources</a>
+  <ul class="toc">
+    <li><a name="toc-abuffer" href="#abuffer">35.1 abuffer</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-46" href="#Examples-46">35.1.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-aevalsrc" href="#aevalsrc">35.2 aevalsrc</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-32" href="#Examples-32">35.2.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-anullsrc" href="#anullsrc">35.3 anullsrc</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-91" href="#Examples-91">35.3.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-flite" href="#flite">35.4 flite</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-13" href="#Examples-13">35.4.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sine" href="#sine">35.5 sine</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-50" href="#Examples-50">35.5.1 Examples</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Audio-Sinks" href="#Audio-Sinks">36. Audio Sinks</a>
+  <ul class="toc">
+    <li><a name="toc-abuffersink" href="#abuffersink">36.1 abuffersink</a></li>
+    <li><a name="toc-anullsink" href="#anullsink">36.2 anullsink</a></li>
+  </ul></li>
+  <li><a name="toc-Video-Filters" href="#Video-Filters">37. Video Filters</a>
+  <ul class="toc">
+    <li><a name="toc-alphaextract" href="#alphaextract">37.1 alphaextract</a></li>
+    <li><a name="toc-alphamerge" href="#alphamerge">37.2 alphamerge</a></li>
+    <li><a name="toc-ass" href="#ass">37.3 ass</a></li>
+    <li><a name="toc-bbox" href="#bbox">37.4 bbox</a></li>
+    <li><a name="toc-blackdetect" href="#blackdetect">37.5 blackdetect</a></li>
+    <li><a name="toc-blackframe" href="#blackframe">37.6 blackframe</a></li>
+    <li><a name="toc-blend" href="#blend">37.7 blend</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-25" href="#Examples-25">37.7.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-boxblur" href="#boxblur">37.8 boxblur</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-83" href="#Examples-83">37.8.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-colorbalance" href="#colorbalance">37.9 colorbalance</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-57" href="#Examples-57">37.9.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-colorchannelmixer" href="#colorchannelmixer">37.10 colorchannelmixer</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-34" href="#Examples-34">37.10.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-colormatrix" href="#colormatrix">37.11 colormatrix</a></li>
+    <li><a name="toc-copy" href="#copy">37.12 copy</a></li>
+    <li><a name="toc-crop" href="#crop">37.13 crop</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-8" href="#Examples-8">37.13.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-cropdetect" href="#cropdetect">37.14 cropdetect</a></li>
+    <li><a name="toc-curves-1" href="#curves-1">37.15 curves</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-16" href="#Examples-16">37.15.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-dctdnoiz" href="#dctdnoiz">37.16 dctdnoiz</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-3" href="#Examples-3">37.16.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-decimate-1" href="#decimate-1">37.17 decimate</a></li>
+    <li><a name="toc-delogo" href="#delogo">37.18 delogo</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-67" href="#Examples-67">37.18.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-deshake" href="#deshake">37.19 deshake</a></li>
+    <li><a name="toc-drawbox" href="#drawbox">37.20 drawbox</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-42" href="#Examples-42">37.20.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-drawgrid" href="#drawgrid">37.21 drawgrid</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-54" href="#Examples-54">37.21.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-drawtext-1" href="#drawtext-1">37.22 drawtext</a>
+    <ul class="toc">
+      <li><a name="toc-Syntax" href="#Syntax">37.22.1 Syntax</a></li>
+      <li><a name="toc-Text-expansion" href="#Text-expansion">37.22.2 Text expansion</a></li>
+      <li><a name="toc-Examples-30" href="#Examples-30">37.22.3 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-edgedetect" href="#edgedetect">37.23 edgedetect</a></li>
+    <li><a name="toc-extractplanes" href="#extractplanes">37.24 extractplanes</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-11" href="#Examples-11">37.24.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-elbg" href="#elbg">37.25 elbg</a></li>
+    <li><a name="toc-fade" href="#fade">37.26 fade</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-14" href="#Examples-14">37.26.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-field" href="#field">37.27 field</a></li>
+    <li><a name="toc-fieldmatch" href="#fieldmatch">37.28 fieldmatch</a>
+    <ul class="toc">
+      <li><a name="toc-p_002fc_002fn_002fu_002fb-meaning-1" href="#p_002fc_002fn_002fu_002fb-meaning-1">37.28.1 p/c/n/u/b meaning</a>
+      <ul class="toc">
+        <li><a name="toc-p_002fc_002fn" href="#p_002fc_002fn">37.28.1.1 p/c/n</a></li>
+        <li><a name="toc-u_002fb" href="#u_002fb">37.28.1.2 u/b</a></li>
+      </ul></li>
+      <li><a name="toc-Examples-35" href="#Examples-35">37.28.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-fieldorder" href="#fieldorder">37.29 fieldorder</a></li>
+    <li><a name="toc-fifo" href="#fifo">37.30 fifo</a></li>
+    <li><a name="toc-format-1" href="#format-1">37.31 format</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-81" href="#Examples-81">37.31.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-fps-1" href="#fps-1">37.32 fps</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-6" href="#Examples-6">37.32.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-framestep" href="#framestep">37.33 framestep</a></li>
+    <li><a name="toc-frei0r-1" href="#frei0r-1">37.34 frei0r</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-73" href="#Examples-73">37.34.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-geq" href="#geq">37.35 geq</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-15" href="#Examples-15">37.35.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-gradfun" href="#gradfun">37.36 gradfun</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-80" href="#Examples-80">37.36.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-haldclut-1" href="#haldclut-1">37.37 haldclut</a>
+    <ul class="toc">
+      <li><a name="toc-Workflow-examples" href="#Workflow-examples">37.37.1 Workflow examples</a>
+      <ul class="toc">
+        <li><a name="toc-Hald-CLUT-video-stream" href="#Hald-CLUT-video-stream">37.37.1.1 Hald CLUT video stream</a></li>
+        <li><a name="toc-Hald-CLUT-with-preview" href="#Hald-CLUT-with-preview">37.37.1.2 Hald CLUT with preview</a></li>
+      </ul>
+</li>
+    </ul></li>
+    <li><a name="toc-hflip" href="#hflip">37.38 hflip</a></li>
+    <li><a name="toc-histeq" href="#histeq">37.39 histeq</a></li>
+    <li><a name="toc-histogram" href="#histogram">37.40 histogram</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-55" href="#Examples-55">37.40.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-hqdn3d-1" href="#hqdn3d-1">37.41 hqdn3d</a></li>
+    <li><a name="toc-hue" href="#hue">37.42 hue</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-66" href="#Examples-66">37.42.1 Examples</a></li>
+      <li><a name="toc-Commands" href="#Commands">37.42.2 Commands</a></li>
+    </ul></li>
+    <li><a name="toc-idet" href="#idet">37.43 idet</a></li>
+    <li><a name="toc-il" href="#il">37.44 il</a></li>
+    <li><a name="toc-interlace" href="#interlace">37.45 interlace</a></li>
+    <li><a name="toc-kerndeint" href="#kerndeint">37.46 kerndeint</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-48" href="#Examples-48">37.46.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-lut3d-1" href="#lut3d-1">37.47 lut3d</a></li>
+    <li><a name="toc-lut_002c-lutrgb_002c-lutyuv" href="#lut_002c-lutrgb_002c-lutyuv">37.48 lut, lutrgb, lutyuv</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-10" href="#Examples-10">37.48.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mergeplanes" href="#mergeplanes">37.49 mergeplanes</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-71" href="#Examples-71">37.49.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mcdeint" href="#mcdeint">37.50 mcdeint</a></li>
+    <li><a name="toc-mp" href="#mp">37.51 mp</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-68" href="#Examples-68">37.51.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mpdecimate" href="#mpdecimate">37.52 mpdecimate</a></li>
+    <li><a name="toc-negate" href="#negate">37.53 negate</a></li>
+    <li><a name="toc-noformat" href="#noformat">37.54 noformat</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-9" href="#Examples-9">37.54.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-noise" href="#noise">37.55 noise</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-86" href="#Examples-86">37.55.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-null" href="#null">37.56 null</a></li>
+    <li><a name="toc-ocv" href="#ocv">37.57 ocv</a>
+    <ul class="toc">
+      <li><a name="toc-dilate-1" href="#dilate-1">37.57.1 dilate</a></li>
+      <li><a name="toc-erode" href="#erode">37.57.2 erode</a></li>
+      <li><a name="toc-smooth" href="#smooth">37.57.3 smooth</a></li>
+    </ul></li>
+    <li><a name="toc-overlay-1" href="#overlay-1">37.58 overlay</a>
+    <ul class="toc">
+      <li><a name="toc-Commands-2" href="#Commands-2">37.58.1 Commands</a></li>
+      <li><a name="toc-Examples-82" href="#Examples-82">37.58.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-owdenoise" href="#owdenoise">37.59 owdenoise</a></li>
+    <li><a name="toc-pad" href="#pad">37.60 pad</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-87" href="#Examples-87">37.60.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-perspective" href="#perspective">37.61 perspective</a></li>
+    <li><a name="toc-phase" href="#phase">37.62 phase</a></li>
+    <li><a name="toc-pixdesctest" href="#pixdesctest">37.63 pixdesctest</a></li>
+    <li><a name="toc-pp" href="#pp">37.64 pp</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-7" href="#Examples-7">37.64.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-psnr" href="#psnr">37.65 psnr</a></li>
+    <li><a name="toc-pullup" href="#pullup">37.66 pullup</a></li>
+    <li><a name="toc-removelogo" href="#removelogo">37.67 removelogo</a></li>
+    <li><a name="toc-rotate" href="#rotate">37.68 rotate</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-78" href="#Examples-78">37.68.1 Examples</a></li>
+      <li><a name="toc-Commands-3" href="#Commands-3">37.68.2 Commands</a></li>
+    </ul></li>
+    <li><a name="toc-sab" href="#sab">37.69 sab</a></li>
+    <li><a name="toc-scale-1" href="#scale-1">37.70 scale</a>
+    <ul class="toc">
+      <li><a name="toc-Options" href="#Options">37.70.1 Options</a></li>
+      <li><a name="toc-Examples-23" href="#Examples-23">37.70.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-separatefields" href="#separatefields">37.71 separatefields</a></li>
+    <li><a name="toc-setdar_002c-setsar" href="#setdar_002c-setsar">37.72 setdar, setsar</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-45" href="#Examples-45">37.72.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-setfield-1" href="#setfield-1">37.73 setfield</a></li>
+    <li><a name="toc-showinfo" href="#showinfo">37.74 showinfo</a></li>
+    <li><a name="toc-smartblur-1" href="#smartblur-1">37.75 smartblur</a></li>
+    <li><a name="toc-stereo3d" href="#stereo3d">37.76 stereo3d</a>
+    <ul class="toc">
+      <li><a name="toc-Examples" href="#Examples">37.76.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-spp" href="#spp">37.77 spp</a></li>
+    <li><a name="toc-subtitles-1" href="#subtitles-1">37.78 subtitles</a></li>
+    <li><a name="toc-super2xsai" href="#super2xsai">37.79 super2xsai</a></li>
+    <li><a name="toc-swapuv" href="#swapuv">37.80 swapuv</a></li>
+    <li><a name="toc-telecine" href="#telecine">37.81 telecine</a></li>
+    <li><a name="toc-thumbnail" href="#thumbnail">37.82 thumbnail</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-17" href="#Examples-17">37.82.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-tile" href="#tile">37.83 tile</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-33" href="#Examples-33">37.83.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-tinterlace" href="#tinterlace">37.84 tinterlace</a></li>
+    <li><a name="toc-transpose" href="#transpose">37.85 transpose</a></li>
+    <li><a name="toc-trim" href="#trim">37.86 trim</a></li>
+    <li><a name="toc-unsharp" href="#unsharp">37.87 unsharp</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-63" href="#Examples-63">37.87.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-vidstabdetect-1" href="#vidstabdetect-1">37.88 vidstabdetect</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-58" href="#Examples-58">37.88.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-vidstabtransform-1" href="#vidstabtransform-1">37.89 vidstabtransform</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-4" href="#Examples-4">37.89.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-vflip" href="#vflip">37.90 vflip</a></li>
+    <li><a name="toc-vignette" href="#vignette">37.91 vignette</a>
+    <ul class="toc">
+      <li><a name="toc-Expressions" href="#Expressions">37.91.1 Expressions</a></li>
+      <li><a name="toc-Examples-37" href="#Examples-37">37.91.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-w3fdif" href="#w3fdif">37.92 w3fdif</a></li>
+    <li><a name="toc-yadif-1" href="#yadif-1">37.93 yadif</a></li>
+  </ul></li>
+  <li><a name="toc-Video-Sources" href="#Video-Sources">38. Video Sources</a>
+  <ul class="toc">
+    <li><a name="toc-buffer" href="#buffer">38.1 buffer</a></li>
+    <li><a name="toc-cellauto" href="#cellauto">38.2 cellauto</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-77" href="#Examples-77">38.2.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mandelbrot" href="#mandelbrot">38.3 mandelbrot</a></li>
+    <li><a name="toc-mptestsrc" href="#mptestsrc">38.4 mptestsrc</a></li>
+    <li><a name="toc-frei0r_005fsrc" href="#frei0r_005fsrc">38.5 frei0r_src</a></li>
+    <li><a name="toc-life" href="#life">38.6 life</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-2" href="#Examples-2">38.6.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-color_002c-haldclutsrc_002c-nullsrc_002c-rgbtestsrc_002c-smptebars_002c-smptehdbars_002c-testsrc" href="#color_002c-haldclutsrc_002c-nullsrc_002c-rgbtestsrc_002c-smptebars_002c-smptehdbars_002c-testsrc">38.7 color, haldclutsrc, nullsrc, rgbtestsrc, smptebars, smptehdbars, testsrc</a>
+    <ul class="toc">
+      <li><a name="toc-Commands-4" href="#Commands-4">38.7.1 Commands</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Video-Sinks" href="#Video-Sinks">39. Video Sinks</a>
+  <ul class="toc">
+    <li><a name="toc-buffersink" href="#buffersink">39.1 buffersink</a></li>
+    <li><a name="toc-nullsink" href="#nullsink">39.2 nullsink</a></li>
+  </ul></li>
+  <li><a name="toc-Multimedia-Filters" href="#Multimedia-Filters">40. Multimedia Filters</a>
+  <ul class="toc">
+    <li><a name="toc-avectorscope" href="#avectorscope">40.1 avectorscope</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-72" href="#Examples-72">40.1.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-concat-1" href="#concat-1">40.2 concat</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-29" href="#Examples-29">40.2.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-ebur128" href="#ebur128">40.3 ebur128</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-92" href="#Examples-92">40.3.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-interleave_002c-ainterleave" href="#interleave_002c-ainterleave">40.4 interleave, ainterleave</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-21" href="#Examples-21">40.4.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-perms_002c-aperms" href="#perms_002c-aperms">40.5 perms, aperms</a></li>
+    <li><a name="toc-select_002c-aselect" href="#select_002c-aselect">40.6 select, aselect</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-19" href="#Examples-19">40.6.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sendcmd_002c-asendcmd" href="#sendcmd_002c-asendcmd">40.7 sendcmd, asendcmd</a>
+    <ul class="toc">
+      <li><a name="toc-Commands-syntax" href="#Commands-syntax">40.7.1 Commands syntax</a></li>
+      <li><a name="toc-Examples-59" href="#Examples-59">40.7.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-setpts_002c-asetpts" href="#setpts_002c-asetpts">40.8 setpts, asetpts</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-47" href="#Examples-47">40.8.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-settb_002c-asettb" href="#settb_002c-asettb">40.9 settb, asettb</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-65" href="#Examples-65">40.9.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-showspectrum" href="#showspectrum">40.10 showspectrum</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-88" href="#Examples-88">40.10.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-showwaves" href="#showwaves">40.11 showwaves</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-36" href="#Examples-36">40.11.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-split_002c-asplit" href="#split_002c-asplit">40.12 split, asplit</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-1" href="#Examples-1">40.12.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-zmq_002c-azmq" href="#zmq_002c-azmq">40.13 zmq, azmq</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-64" href="#Examples-64">40.13.1 Examples</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Multimedia-Sources" href="#Multimedia-Sources">41. Multimedia Sources</a>
+  <ul class="toc">
+    <li><a name="toc-amovie" href="#amovie">41.1 amovie</a></li>
+    <li><a name="toc-movie-1" href="#movie-1">41.2 movie</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-60" href="#Examples-60">41.2.1 Examples</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-See-Also" href="#See-Also">42. See Also</a></li>
+  <li><a name="toc-Authors" href="#Authors">43. Authors</a></li>
+</ul>
+</div>
+
+<a name="Synopsis"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Synopsis">1. Synopsis</a></h1>
+
+<p>ffmpeg [<var>global_options</var>] {[<var>input_file_options</var>] -i &lsquo;<tt>input_file</tt>&rsquo;} ... {[<var>output_file_options</var>] &lsquo;<tt>output_file</tt>&rsquo;} ...
+</p>
+<a name="Description"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Description">2. Description</a></h1>
+
+<p><code>ffmpeg</code> is a very fast video and audio converter that can also grab from
+a live audio/video source. It can also convert between arbitrary sample
+rates and resize video on the fly with a high quality polyphase filter.
+</p>
+<p><code>ffmpeg</code> reads from an arbitrary number of input &quot;files&quot; (which can be regular
+files, pipes, network streams, grabbing devices, etc.), specified by the
+<code>-i</code> option, and writes to an arbitrary number of output &quot;files&quot;, which are
+specified by a plain output filename. Anything found on the command line which
+cannot be interpreted as an option is considered to be an output filename.
+</p>
+<p>Each input or output file can, in principle, contain any number of streams of
+different types (video/audio/subtitle/attachment/data). The allowed number and/or
+types of streams may be limited by the container format. Selecting which
+streams from which inputs will go into which output is either done automatically
+or with the <code>-map</code> option (see the Stream selection chapter).
+</p>
+<p>To refer to input files in options, you must use their indices (0-based). E.g.
+the first input file is <code>0</code>, the second is <code>1</code>, etc. Similarly, streams
+within a file are referred to by their indices. E.g. <code>2:3</code> refers to the
+fourth stream in the third input file. Also see the Stream specifiers chapter.
+</p>
+<p>As a general rule, options are applied to the next specified
+file. Therefore, order is important, and you can have the same
+option on the command line multiple times. Each occurrence is
+then applied to the next input or output file.
+Exceptions from this rule are the global options (e.g. verbosity level),
+which should be specified first.
+</p>
+<p>Do not mix input and output files &ndash; first specify all input files, then all
+output files. Also do not mix options which belong to different files. All
+options apply ONLY to the next input or output file and are reset between files.
+</p>
+<ul>
+<li>
+To set the video bitrate of the output file to 64 kbit/s:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.avi -b:v 64k -bufsize 64k output.avi
+</pre></td></tr></table>
+
+</li><li>
+To force the frame rate of the output file to 24 fps:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.avi -r 24 output.avi
+</pre></td></tr></table>
+
+</li><li>
+To force the frame rate of the input file (valid for raw formats only)
+to 1 fps and the frame rate of the output file to 24 fps:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -r 1 -i input.m2v -r 24 output.avi
+</pre></td></tr></table>
+</li></ul>
+
+<p>The format option may be needed for raw input files.
+</p>
+
+<a name="Detailed-description"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Detailed-description">3. Detailed description</a></h1>
+
+<p>The transcoding process in <code>ffmpeg</code> for each output can be described by
+the following diagram:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example"> _______              ______________               _________              ______________            ________
+|       |            |              |             |         |            |              |          |        |
+| input |  demuxer   | encoded data |   decoder   | decoded |  encoder   | encoded data |  muxer   | output |
+| file  | ---------&gt; | packets      |  ---------&gt; | frames  | ---------&gt; | packets      | -------&gt; | file   |
+|_______|            |______________|             |_________|            |______________|          |________|
+
+</pre></td></tr></table>
+
+<p><code>ffmpeg</code> calls the libavformat library (containing demuxers) to read
+input files and get packets containing encoded data from them. When there are
+multiple input files, <code>ffmpeg</code> tries to keep them synchronized by
+tracking lowest timestamp on any active input stream.
+</p>
+<p>Encoded packets are then passed to the decoder (unless streamcopy is selected
+for the stream, see further for a description). The decoder produces
+uncompressed frames (raw video/PCM audio/...) which can be processed further by
+filtering (see next section). After filtering, the frames are passed to the
+encoder, which encodes them and outputs encoded packets. Finally those are
+passed to the muxer, which writes the encoded packets to the output file.
+</p>
+<a name="Filtering"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-Filtering">3.1 Filtering</a></h2>
+<p>Before encoding, <code>ffmpeg</code> can process raw audio and video frames using
+filters from the libavfilter library. Several chained filters form a filter
+graph. <code>ffmpeg</code> distinguishes between two types of filtergraphs:
+simple and complex.
+</p>
+<a name="Simple-filtergraphs"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Simple-filtergraphs">3.1.1 Simple filtergraphs</a></h3>
+<p>Simple filtergraphs are those that have exactly one input and output, both of
+the same type. In the above diagram they can be represented by simply inserting
+an additional step between decoding and encoding:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example"> _________                        __________              ______________
+|         |                      |          |            |              |
+| decoded |  simple filtergraph  | filtered |  encoder   | encoded data |
+| frames  | -------------------&gt; | frames   | ---------&gt; | packets      |
+|_________|                      |__________|            |______________|
+
+</pre></td></tr></table>
+
+<p>Simple filtergraphs are configured with the per-stream &lsquo;<samp>-filter</samp>&rsquo; option
+(with &lsquo;<samp>-vf</samp>&rsquo; and &lsquo;<samp>-af</samp>&rsquo; aliases for video and audio respectively).
+A simple filtergraph for video can look for example like this:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example"> _______        _____________        _______        _____        ________
+|       |      |             |      |       |      |     |      |        |
+| input | ---&gt; | deinterlace | ---&gt; | scale | ---&gt; | fps | ---&gt; | output |
+|_______|      |_____________|      |_______|      |_____|      |________|
+
+</pre></td></tr></table>
+
+<p>Note that some filters change frame properties but not frame contents. E.g. the
+<code>fps</code> filter in the example above changes number of frames, but does not
+touch the frame contents. Another example is the <code>setpts</code> filter, which
+only sets timestamps and otherwise passes the frames unchanged.
+</p>
+<a name="Complex-filtergraphs"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Complex-filtergraphs">3.1.2 Complex filtergraphs</a></h3>
+<p>Complex filtergraphs are those which cannot be described as simply a linear
+processing chain applied to one stream. This is the case, for example, when the graph has
+more than one input and/or output, or when output stream type is different from
+input. They can be represented with the following diagram:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example"> _________
+|         |
+| input 0 |\                    __________
+|_________| \                  |          |
+             \   _________    /| output 0 |
+              \ |         |  / |__________|
+ _________     \| complex | /
+|         |     |         |/
+| input 1 |----&gt;| filter  |\
+|_________|     |         | \   __________
+               /| graph   |  \ |          |
+              / |         |   \| output 1 |
+ _________   /  |_________|    |__________|
+|         | /
+| input 2 |/
+|_________|
+
+</pre></td></tr></table>
+
+<p>Complex filtergraphs are configured with the &lsquo;<samp>-filter_complex</samp>&rsquo; option.
+Note that this option is global, since a complex filtergraph, by its nature,
+cannot be unambiguously associated with a single stream or file.
+</p>
+<p>The &lsquo;<samp>-lavfi</samp>&rsquo; option is equivalent to &lsquo;<samp>-filter_complex</samp>&rsquo;.
+</p>
+<p>A trivial example of a complex filtergraph is the <code>overlay</code> filter, which
+has two video inputs and one video output, containing one video overlaid on top
+of the other. Its audio counterpart is the <code>amix</code> filter.
+</p>
+<a name="Stream-copy"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-Stream-copy">3.2 Stream copy</a></h2>
+<p>Stream copy is a mode selected by supplying the <code>copy</code> parameter to the
+&lsquo;<samp>-codec</samp>&rsquo; option. It makes <code>ffmpeg</code> omit the decoding and encoding
+step for the specified stream, so it does only demuxing and muxing. It is useful
+for changing the container format or modifying container-level metadata. The
+diagram above will, in this case, simplify to this:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example"> _______              ______________            ________
+|       |            |              |          |        |
+| input |  demuxer   | encoded data |  muxer   | output |
+| file  | ---------&gt; | packets      | -------&gt; | file   |
+|_______|            |______________|          |________|
+
+</pre></td></tr></table>
+
+<p>Since there is no decoding or encoding, it is very fast and there is no quality
+loss. However, it might not work in some cases because of many factors. Applying
+filters is obviously also impossible, since filters work on uncompressed data.
+</p>
+
+<a name="Stream-selection"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Stream-selection">4. Stream selection</a></h1>
+
+<p>By default, <code>ffmpeg</code> includes only one stream of each type (video, audio, subtitle)
+present in the input files and adds them to each output file.  It picks the
+&quot;best&quot; of each based upon the following criteria: for video, it is the stream
+with the highest resolution, for audio, it is the stream with the most channels, for
+subtitles, it is the first subtitle stream. In the case where several streams of
+the same type rate equally, the stream with the lowest index is chosen.
+</p>
+<p>You can disable some of those defaults by using the <code>-vn/-an/-sn</code> options. For
+full manual control, use the <code>-map</code> option, which disables the defaults just
+described.
+</p>
+
+<a name="Options-10"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Options-10">5. Options</a></h1>
+
+<p>All the numerical options, if not specified otherwise, accept a string
+representing a number as input, which may be followed by one of the SI
+unit prefixes, for example: &rsquo;K&rsquo;, &rsquo;M&rsquo;, or &rsquo;G&rsquo;.
+</p>
+<p>If &rsquo;i&rsquo; is appended to the SI unit prefix, the complete prefix will be
+interpreted as a unit prefix for binary multiplies, which are based on
+powers of 1024 instead of powers of 1000. Appending &rsquo;B&rsquo; to the SI unit
+prefix multiplies the value by 8. This allows using, for example:
+&rsquo;KB&rsquo;, &rsquo;MiB&rsquo;, &rsquo;G&rsquo; and &rsquo;B&rsquo; as number suffixes.
+</p>
+<p>Options which do not take arguments are boolean options, and set the
+corresponding value to true. They can be set to false by prefixing
+the option name with &quot;no&quot;. For example using &quot;-nofoo&quot;
+will set the boolean option with name &quot;foo&quot; to false.
+</p>
+<p><a name="Stream-specifiers"></a>
+</p><a name="Stream-specifiers-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-Stream-specifiers-1">5.1 Stream specifiers</a></h2>
+<p>Some options are applied per-stream, e.g. bitrate or codec. Stream specifiers
+are used to precisely specify which stream(s) a given option belongs to.
+</p>
+<p>A stream specifier is a string generally appended to the option name and
+separated from it by a colon. E.g. <code>-codec:a:1 ac3</code> contains the
+<code>a:1</code> stream specifier, which matches the second audio stream. Therefore, it
+would select the ac3 codec for the second audio stream.
+</p>
+<p>A stream specifier can match several streams, so that the option is applied to all
+of them. E.g. the stream specifier in <code>-b:a 128k</code> matches all audio
+streams.
+</p>
+<p>An empty stream specifier matches all streams. For example, <code>-codec copy</code>
+or <code>-codec: copy</code> would copy all the streams without reencoding.
+</p>
+<p>Possible forms of stream specifiers are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp><var>stream_index</var></samp>&rsquo;</dt>
+<dd><p>Matches the stream with this index. E.g. <code>-threads:1 4</code> would set the
+thread count for the second stream to 4.
+</p></dd>
+<dt> &lsquo;<samp><var>stream_type</var>[:<var>stream_index</var>]</samp>&rsquo;</dt>
+<dd><p><var>stream_type</var> is one of following: &rsquo;v&rsquo; for video, &rsquo;a&rsquo; for audio, &rsquo;s&rsquo; for subtitle,
+&rsquo;d&rsquo; for data, and &rsquo;t&rsquo; for attachments. If <var>stream_index</var> is given, then it matches
+stream number <var>stream_index</var> of this type. Otherwise, it matches all
+streams of this type.
+</p></dd>
+<dt> &lsquo;<samp>p:<var>program_id</var>[:<var>stream_index</var>]</samp>&rsquo;</dt>
+<dd><p>If <var>stream_index</var> is given, then it matches the stream with number <var>stream_index</var>
+in the program with the id <var>program_id</var>. Otherwise, it matches all streams in the
+program.
+</p></dd>
+<dt> &lsquo;<samp>#<var>stream_id</var></samp>&rsquo;</dt>
+<dd><p>Matches the stream by a format-specific ID.
+</p></dd>
+</dl>
+
+<a name="Generic-options"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-Generic-options">5.2 Generic options</a></h2>
+
+<p>These options are shared amongst the ff* tools.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-L</samp>&rsquo;</dt>
+<dd><p>Show license.
+</p>
+</dd>
+<dt> &lsquo;<samp>-h, -?, -help, --help [<var>arg</var>]</samp>&rsquo;</dt>
+<dd><p>Show help. An optional parameter may be specified to print help about a specific
+item. If no argument is specified, only basic (non advanced) tool
+options are shown.
+</p>
+<p>Possible values of <var>arg</var> are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>long</samp>&rsquo;</dt>
+<dd><p>Print advanced tool options in addition to the basic tool options.
+</p>
+</dd>
+<dt> &lsquo;<samp>full</samp>&rsquo;</dt>
+<dd><p>Print complete list of options, including shared and private options
+for encoders, decoders, demuxers, muxers, filters, etc.
+</p>
+</dd>
+<dt> &lsquo;<samp>decoder=<var>decoder_name</var></samp>&rsquo;</dt>
+<dd><p>Print detailed information about the decoder named <var>decoder_name</var>. Use the
+&lsquo;<samp>-decoders</samp>&rsquo; option to get a list of all decoders.
+</p>
+</dd>
+<dt> &lsquo;<samp>encoder=<var>encoder_name</var></samp>&rsquo;</dt>
+<dd><p>Print detailed information about the encoder named <var>encoder_name</var>. Use the
+&lsquo;<samp>-encoders</samp>&rsquo; option to get a list of all encoders.
+</p>
+</dd>
+<dt> &lsquo;<samp>demuxer=<var>demuxer_name</var></samp>&rsquo;</dt>
+<dd><p>Print detailed information about the demuxer named <var>demuxer_name</var>. Use the
+&lsquo;<samp>-formats</samp>&rsquo; option to get a list of all demuxers and muxers.
+</p>
+</dd>
+<dt> &lsquo;<samp>muxer=<var>muxer_name</var></samp>&rsquo;</dt>
+<dd><p>Print detailed information about the muxer named <var>muxer_name</var>. Use the
+&lsquo;<samp>-formats</samp>&rsquo; option to get a list of all muxers and demuxers.
+</p>
+</dd>
+<dt> &lsquo;<samp>filter=<var>filter_name</var></samp>&rsquo;</dt>
+<dd><p>Print detailed information about the filter name <var>filter_name</var>. Use the
+&lsquo;<samp>-filters</samp>&rsquo; option to get a list of all filters.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-version</samp>&rsquo;</dt>
+<dd><p>Show version.
+</p>
+</dd>
+<dt> &lsquo;<samp>-formats</samp>&rsquo;</dt>
+<dd><p>Show available formats.
+</p>
+</dd>
+<dt> &lsquo;<samp>-codecs</samp>&rsquo;</dt>
+<dd><p>Show all codecs known to libavcodec.
+</p>
+<p>Note that the term &rsquo;codec&rsquo; is used throughout this documentation as a shortcut
+for what is more correctly called a media bitstream format.
+</p>
+</dd>
+<dt> &lsquo;<samp>-decoders</samp>&rsquo;</dt>
+<dd><p>Show available decoders.
+</p>
+</dd>
+<dt> &lsquo;<samp>-encoders</samp>&rsquo;</dt>
+<dd><p>Show all available encoders.
+</p>
+</dd>
+<dt> &lsquo;<samp>-bsfs</samp>&rsquo;</dt>
+<dd><p>Show available bitstream filters.
+</p>
+</dd>
+<dt> &lsquo;<samp>-protocols</samp>&rsquo;</dt>
+<dd><p>Show available protocols.
+</p>
+</dd>
+<dt> &lsquo;<samp>-filters</samp>&rsquo;</dt>
+<dd><p>Show available libavfilter filters.
+</p>
+</dd>
+<dt> &lsquo;<samp>-pix_fmts</samp>&rsquo;</dt>
+<dd><p>Show available pixel formats.
+</p>
+</dd>
+<dt> &lsquo;<samp>-sample_fmts</samp>&rsquo;</dt>
+<dd><p>Show available sample formats.
+</p>
+</dd>
+<dt> &lsquo;<samp>-layouts</samp>&rsquo;</dt>
+<dd><p>Show channel names and standard channel layouts.
+</p>
+</dd>
+<dt> &lsquo;<samp>-colors</samp>&rsquo;</dt>
+<dd><p>Show recognized color names.
+</p>
+</dd>
+<dt> &lsquo;<samp>-loglevel [repeat+]<var>loglevel</var> | -v [repeat+]<var>loglevel</var></samp>&rsquo;</dt>
+<dd><p>Set the logging level used by the library.
+Adding &quot;repeat+&quot; indicates that repeated log output should not be compressed
+to the first line and the &quot;Last message repeated n times&quot; line will be
+omitted. &quot;repeat&quot; can also be used alone.
+If &quot;repeat&quot; is used alone, and with no prior loglevel set, the default
+loglevel will be used. If multiple loglevel parameters are given, using
+&rsquo;repeat&rsquo; will not change the loglevel.
+<var>loglevel</var> is a number or a string containing one of the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>quiet</samp>&rsquo;</dt>
+<dd><p>Show nothing at all; be silent.
+</p></dd>
+<dt> &lsquo;<samp>panic</samp>&rsquo;</dt>
+<dd><p>Only show fatal errors which could lead the process to crash, such as
+and assert failure. This is not currently used for anything.
+</p></dd>
+<dt> &lsquo;<samp>fatal</samp>&rsquo;</dt>
+<dd><p>Only show fatal errors. These are errors after which the process absolutely
+cannot continue after.
+</p></dd>
+<dt> &lsquo;<samp>error</samp>&rsquo;</dt>
+<dd><p>Show all errors, including ones which can be recovered from.
+</p></dd>
+<dt> &lsquo;<samp>warning</samp>&rsquo;</dt>
+<dd><p>Show all warnings and errors. Any message related to possibly
+incorrect or unexpected events will be shown.
+</p></dd>
+<dt> &lsquo;<samp>info</samp>&rsquo;</dt>
+<dd><p>Show informative messages during processing. This is in addition to
+warnings and errors. This is the default value.
+</p></dd>
+<dt> &lsquo;<samp>verbose</samp>&rsquo;</dt>
+<dd><p>Same as <code>info</code>, except more verbose.
+</p></dd>
+<dt> &lsquo;<samp>debug</samp>&rsquo;</dt>
+<dd><p>Show everything, including debugging information.
+</p></dd>
+</dl>
+
+<p>By default the program logs to stderr, if coloring is supported by the
+terminal, colors are used to mark errors and warnings. Log coloring
+can be disabled setting the environment variable
+<code>AV_LOG_FORCE_NOCOLOR</code> or <code>NO_COLOR</code>, or can be forced setting
+the environment variable <code>AV_LOG_FORCE_COLOR</code>.
+The use of the environment variable <code>NO_COLOR</code> is deprecated and
+will be dropped in a following FFmpeg version.
+</p>
+</dd>
+<dt> &lsquo;<samp>-report</samp>&rsquo;</dt>
+<dd><p>Dump full command line and console output to a file named
+<code><var>program</var>-<var>YYYYMMDD</var>-<var>HHMMSS</var>.log</code> in the current
+directory.
+This file can be useful for bug reports.
+It also implies <code>-loglevel verbose</code>.
+</p>
+<p>Setting the environment variable <code>FFREPORT</code> to any value has the
+same effect. If the value is a &rsquo;:&rsquo;-separated key=value sequence, these
+options will affect the report; options values must be escaped if they
+contain special characters or the options delimiter &rsquo;:&rsquo; (see the
+&ldquo;Quoting and escaping&rdquo; section in the ffmpeg-utils manual). The
+following option is recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>file</samp>&rsquo;</dt>
+<dd><p>set the file name to use for the report; <code>%p</code> is expanded to the name
+of the program, <code>%t</code> is expanded to a timestamp, <code>%%</code> is expanded
+to a plain <code>%</code>
+</p></dd>
+</dl>
+
+<p>Errors in parsing the environment variable are not fatal, and will not
+appear in the report.
+</p>
+</dd>
+<dt> &lsquo;<samp>-cpuflags flags (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Allows setting and clearing cpu flags. This option is intended
+for testing. Do not use it unless you know what you&rsquo;re doing.
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -cpuflags -sse+mmx ...
+ffmpeg -cpuflags mmx ...
+ffmpeg -cpuflags 0 ...
+</pre></td></tr></table>
+<p>Possible flags for this option are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>x86</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>mmx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mmxext</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse2slow</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse3</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse3slow</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ssse3</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>atom</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse4.1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse4.2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>avx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>xop</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>fma4</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>3dnow</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>3dnowext</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>cmov</samp>&rsquo;</dt>
+</dl>
+</dd>
+<dt> &lsquo;<samp>ARM</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>armv5te</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>armv6</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>armv6t2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vfp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vfpv3</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>neon</samp>&rsquo;</dt>
+</dl>
+</dd>
+<dt> &lsquo;<samp>PowerPC</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>altivec</samp>&rsquo;</dt>
+</dl>
+</dd>
+<dt> &lsquo;<samp>Specific Processors</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>pentium2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>pentium3</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>pentium4</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>k6</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>k62</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>athlon</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>athlonxp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>k8</samp>&rsquo;</dt>
+</dl>
+</dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-opencl_bench</samp>&rsquo;</dt>
+<dd><p>Benchmark all available OpenCL devices and show the results. This option
+is only available when FFmpeg has been compiled with <code>--enable-opencl</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>-opencl_options options (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Set OpenCL environment options. This option is only available when
+FFmpeg has been compiled with <code>--enable-opencl</code>.
+</p>
+<p><var>options</var> must be a list of <var>key</var>=<var>value</var> option pairs
+separated by &rsquo;:&rsquo;. See the &ldquo;OpenCL Options&rdquo; section in the
+ffmpeg-utils manual for the list of supported options.
+</p></dd>
+</dl>
+
+<a name="AVOptions"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-AVOptions">5.3 AVOptions</a></h2>
+
+<p>These options are provided directly by the libavformat, libavdevice and
+libavcodec libraries. To see the list of available AVOptions, use the
+&lsquo;<samp>-help</samp>&rsquo; option. They are separated into two categories:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>generic</samp>&rsquo;</dt>
+<dd><p>These options can be set for any container, codec or device. Generic options
+are listed under AVFormatContext options for containers/devices and under
+AVCodecContext options for codecs.
+</p></dd>
+<dt> &lsquo;<samp>private</samp>&rsquo;</dt>
+<dd><p>These options are specific to the given container, device or codec. Private
+options are listed under their corresponding containers/devices/codecs.
+</p></dd>
+</dl>
+
+<p>For example to write an ID3v2.3 header instead of a default ID3v2.4 to
+an MP3 file, use the &lsquo;<samp>id3v2_version</samp>&rsquo; private option of the MP3
+muxer:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.flac -id3v2_version 3 out.mp3
+</pre></td></tr></table>
+
+<p>All codec AVOptions are per-stream, and thus a stream specifier
+should be attached to them.
+</p>
+<p>Note: the &lsquo;<samp>-nooption</samp>&rsquo; syntax cannot be used for boolean
+AVOptions, use &lsquo;<samp>-option 0</samp>&rsquo;/&lsquo;<samp>-option 1</samp>&rsquo;.
+</p>
+<p>Note: the old undocumented way of specifying per-stream AVOptions by
+prepending v/a/s to the options name is now obsolete and will be
+removed soon.
+</p>
+<a name="Main-options"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-Main-options">5.4 Main options</a></h2>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-f <var>fmt</var> (<em>input/output</em>)</samp>&rsquo;</dt>
+<dd><p>Force input or output file format. The format is normally auto detected for input
+files and guessed from the file extension for output files, so this option is not
+needed in most cases.
+</p>
+</dd>
+<dt> &lsquo;<samp>-i <var>filename</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>input file name
+</p>
+</dd>
+<dt> &lsquo;<samp>-y (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Overwrite output files without asking.
+</p>
+</dd>
+<dt> &lsquo;<samp>-n (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Do not overwrite output files, and exit immediately if a specified
+output file already exists.
+</p>
+</dd>
+<dt> &lsquo;<samp>-c[:<var>stream_specifier</var>] <var>codec</var> (<em>input/output,per-stream</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>-codec[:<var>stream_specifier</var>] <var>codec</var> (<em>input/output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Select an encoder (when used before an output file) or a decoder (when used
+before an input file) for one or more streams. <var>codec</var> is the name of a
+decoder/encoder or a special value <code>copy</code> (output only) to indicate that
+the stream is not to be re-encoded.
+</p>
+<p>For example
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -map 0 -c:v libx264 -c:a copy OUTPUT
+</pre></td></tr></table>
+<p>encodes all video streams with libx264 and copies all audio streams.
+</p>
+<p>For each stream, the last matching <code>c</code> option is applied, so
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -map 0 -c copy -c:v:1 libx264 -c:a:137 libvorbis OUTPUT
+</pre></td></tr></table>
+<p>will copy all the streams except the second video, which will be encoded with
+libx264, and the 138th audio, which will be encoded with libvorbis.
+</p>
+</dd>
+<dt> &lsquo;<samp>-t <var>duration</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Stop writing the output after its duration reaches <var>duration</var>.
+<var>duration</var> may be a number in seconds, or in <code>hh:mm:ss[.xxx]</code> form.
+</p>
+<p>-to and -t are mutually exclusive and -t has priority.
+</p>
+</dd>
+<dt> &lsquo;<samp>-to <var>position</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Stop writing the output at <var>position</var>.
+<var>position</var> may be a number in seconds, or in <code>hh:mm:ss[.xxx]</code> form.
+</p>
+<p>-to and -t are mutually exclusive and -t has priority.
+</p>
+</dd>
+<dt> &lsquo;<samp>-fs <var>limit_size</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set the file size limit, expressed in bytes.
+</p>
+</dd>
+<dt> &lsquo;<samp>-ss <var>position</var> (<em>input/output</em>)</samp>&rsquo;</dt>
+<dd><p>When used as an input option (before <code>-i</code>), seeks in this input file to
+<var>position</var>. Note the in most formats it is not possible to seek exactly, so
+<code>ffmpeg</code> will seek to the closest seek point before <var>position</var>.
+When transcoding and &lsquo;<samp>-accurate_seek</samp>&rsquo; is enabled (the default), this
+extra segment between the seek point and <var>position</var> will be decoded and
+discarded. When doing stream copy or when &lsquo;<samp>-noaccurate_seek</samp>&rsquo; is used, it
+will be preserved.
+</p>
+<p>When used as an output option (before an output filename), decodes but discards
+input until the timestamps reach <var>position</var>.
+</p>
+<p><var>position</var> may be either in seconds or in <code>hh:mm:ss[.xxx]</code> form.
+</p>
+</dd>
+<dt> &lsquo;<samp>-itsoffset <var>offset</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Set the input time offset in seconds.
+<code>[-]hh:mm:ss[.xxx]</code> syntax is also supported.
+The offset is added to the timestamps of the input files.
+Specifying a positive offset means that the corresponding
+streams are delayed by <var>offset</var> seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>-timestamp <var>time</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set the recording timestamp in the container.
+The syntax for <var>time</var> is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">now|([(YYYY-MM-DD|YYYYMMDD)[T|t| ]]((HH:MM:SS[.m...])|(HHMMSS[.m...]))[Z|z])
+</pre></td></tr></table>
+<p>If the value is &quot;now&quot; it takes the current time.
+Time is local time unless &rsquo;Z&rsquo; or &rsquo;z&rsquo; is appended, in which case it is
+interpreted as UTC.
+If the year-month-day part is not specified it takes the current
+year-month-day.
+</p>
+</dd>
+<dt> &lsquo;<samp>-metadata[:metadata_specifier] <var>key</var>=<var>value</var> (<em>output,per-metadata</em>)</samp>&rsquo;</dt>
+<dd><p>Set a metadata key/value pair.
+</p>
+<p>An optional <var>metadata_specifier</var> may be given to set metadata
+on streams or chapters. See <code>-map_metadata</code> documentation for
+details.
+</p>
+<p>This option overrides metadata set with <code>-map_metadata</code>. It is
+also possible to delete metadata by using an empty value.
+</p>
+<p>For example, for setting the title in the output file:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -metadata title=&quot;my title&quot; out.flv
+</pre></td></tr></table>
+
+<p>To set the language of the first audio stream:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -metadata:s:a:1 language=eng OUTPUT
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>-target <var>type</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Specify target file type (<code>vcd</code>, <code>svcd</code>, <code>dvd</code>, <code>dv</code>,
+<code>dv50</code>). <var>type</var> may be prefixed with <code>pal-</code>, <code>ntsc-</code> or
+<code>film-</code> to use the corresponding standard. All the format options
+(bitrate, codecs, buffer sizes) are then set automatically. You can just type:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg
+</pre></td></tr></table>
+
+<p>Nevertheless you can specify additional options as long as you know
+they do not conflict with the standard, as in:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i myfile.avi -target vcd -bf 2 /tmp/vcd.mpg
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>-dframes <var>number</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set the number of data frames to record. This is an alias for <code>-frames:d</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>-frames[:<var>stream_specifier</var>] <var>framecount</var> (<em>output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Stop writing to the stream after <var>framecount</var> frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>-q[:<var>stream_specifier</var>] <var>q</var> (<em>output,per-stream</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>-qscale[:<var>stream_specifier</var>] <var>q</var> (<em>output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Use fixed quality scale (VBR). The meaning of <var>q</var>/<var>qscale</var> is
+codec-dependent.
+If <var>qscale</var> is used without a <var>stream_specifier</var> then it applies only
+to the video stream, this is to maintain compatibility with previous behavior
+and as specifying the same codec specific value to 2 different codecs that is
+audio and video generally is not what is intended when no stream_specifier is
+used.
+</p>
+<p><a name="filter_005foption"></a>
+</p></dd>
+<dt> &lsquo;<samp>-filter[:<var>stream_specifier</var>] <var>filtergraph</var> (<em>output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Create the filtergraph specified by <var>filtergraph</var> and use it to
+filter the stream.
+</p>
+<p><var>filtergraph</var> is a description of the filtergraph to apply to
+the stream, and must have a single input and a single output of the
+same type of the stream. In the filtergraph, the input is associated
+to the label <code>in</code>, and the output to the label <code>out</code>. See
+the ffmpeg-filters manual for more information about the filtergraph
+syntax.
+</p>
+<p>See the <a href="#filter_005fcomplex_005foption">-filter_complex option</a> if you
+want to create filtergraphs with multiple inputs and/or outputs.
+</p>
+</dd>
+<dt> &lsquo;<samp>-filter_script[:<var>stream_specifier</var>] <var>filename</var> (<em>output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>This option is similar to &lsquo;<samp>-filter</samp>&rsquo;, the only difference is that its
+argument is the name of the file from which a filtergraph description is to be
+read.
+</p>
+</dd>
+<dt> &lsquo;<samp>-pre[:<var>stream_specifier</var>] <var>preset_name</var> (<em>output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Specify the preset for matching stream(s).
+</p>
+</dd>
+<dt> &lsquo;<samp>-stats (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Print encoding progress/statistics. It is on by default, to explicitly
+disable it you need to specify <code>-nostats</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>-progress <var>url</var> (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Send program-friendly progress information to <var>url</var>.
+</p>
+<p>Progress information is written approximately every second and at the end of
+the encoding process. It is made of &quot;<var>key</var>=<var>value</var>&quot; lines. <var>key</var>
+consists of only alphanumeric characters. The last key of a sequence of
+progress information is always &quot;progress&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>-stdin</samp>&rsquo;</dt>
+<dd><p>Enable interaction on standard input. On by default unless standard input is
+used as an input. To explicitly disable interaction you need to specify
+<code>-nostdin</code>.
+</p>
+<p>Disabling interaction on standard input is useful, for example, if
+ffmpeg is in the background process group. Roughly the same result can
+be achieved with <code>ffmpeg ... &lt; /dev/null</code> but it requires a
+shell.
+</p>
+</dd>
+<dt> &lsquo;<samp>-debug_ts (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Print timestamp information. It is off by default. This option is
+mostly useful for testing and debugging purposes, and the output
+format may change from one version to another, so it should not be
+employed by portable scripts.
+</p>
+<p>See also the option <code>-fdebug ts</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>-attach <var>filename</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Add an attachment to the output file. This is supported by a few formats
+like Matroska for e.g. fonts used in rendering subtitles. Attachments
+are implemented as a specific type of stream, so this option will add
+a new stream to the file. It is then possible to use per-stream options
+on this stream in the usual way. Attachment streams created with this
+option will be created after all the other streams (i.e. those created
+with <code>-map</code> or automatic mappings).
+</p>
+<p>Note that for Matroska you also have to set the mimetype metadata tag:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -attach DejaVuSans.ttf -metadata:s:2 mimetype=application/x-truetype-font out.mkv
+</pre></td></tr></table>
+<p>(assuming that the attachment stream will be third in the output file).
+</p>
+</dd>
+<dt> &lsquo;<samp>-dump_attachment[:<var>stream_specifier</var>] <var>filename</var> (<em>input,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Extract the matching attachment stream into a file named <var>filename</var>. If
+<var>filename</var> is empty, then the value of the <code>filename</code> metadata tag
+will be used.
+</p>
+<p>E.g. to extract the first attachment to a file named &rsquo;out.ttf&rsquo;:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -dump_attachment:t:0 out.ttf -i INPUT
+</pre></td></tr></table>
+<p>To extract all attachments to files determined by the <code>filename</code> tag:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -dump_attachment:t &quot;&quot; -i INPUT
+</pre></td></tr></table>
+
+<p>Technical note &ndash; attachments are implemented as codec extradata, so this
+option can actually be used to extract extradata from any stream, not just
+attachments.
+</p>
+</dd>
+</dl>
+
+<a name="Video-Options"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-Video-Options">5.5 Video Options</a></h2>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-vframes <var>number</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set the number of video frames to record. This is an alias for <code>-frames:v</code>.
+</p></dd>
+<dt> &lsquo;<samp>-r[:<var>stream_specifier</var>] <var>fps</var> (<em>input/output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Set frame rate (Hz value, fraction or abbreviation).
+</p>
+<p>As an input option, ignore any timestamps stored in the file and instead
+generate timestamps assuming constant frame rate <var>fps</var>.
+</p>
+<p>As an output option, duplicate or drop input frames to achieve constant output
+frame rate <var>fps</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>-s[:<var>stream_specifier</var>] <var>size</var> (<em>input/output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Set frame size.
+</p>
+<p>As an input option, this is a shortcut for the &lsquo;<samp>video_size</samp>&rsquo; private
+option, recognized by some demuxers for which the frame size is either not
+stored in the file or is configurable &ndash; e.g. raw video or video grabbers.
+</p>
+<p>As an output option, this inserts the <code>scale</code> video filter to the
+<em>end</em> of the corresponding filtergraph. Please use the <code>scale</code> filter
+directly to insert it at the beginning or some other place.
+</p>
+<p>The format is &lsquo;<samp>wxh</samp>&rsquo; (default - same as source).
+</p>
+</dd>
+<dt> &lsquo;<samp>-aspect[:<var>stream_specifier</var>] <var>aspect</var> (<em>output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Set the video display aspect ratio specified by <var>aspect</var>.
+</p>
+<p><var>aspect</var> can be a floating point number string, or a string of the
+form <var>num</var>:<var>den</var>, where <var>num</var> and <var>den</var> are the
+numerator and denominator of the aspect ratio. For example &quot;4:3&quot;,
+&quot;16:9&quot;, &quot;1.3333&quot;, and &quot;1.7777&quot; are valid argument values.
+</p>
+<p>If used together with &lsquo;<samp>-vcodec copy</samp>&rsquo;, it will affect the aspect ratio
+stored at container level, but not the aspect ratio stored in encoded
+frames, if it exists.
+</p>
+</dd>
+<dt> &lsquo;<samp>-vn (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Disable video recording.
+</p>
+</dd>
+<dt> &lsquo;<samp>-vcodec <var>codec</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set the video codec. This is an alias for <code>-codec:v</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>-pass[:<var>stream_specifier</var>] <var>n</var> (<em>output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Select the pass number (1 or 2). It is used to do two-pass
+video encoding. The statistics of the video are recorded in the first
+pass into a log file (see also the option -passlogfile),
+and in the second pass that log file is used to generate the video
+at the exact requested bitrate.
+On pass 1, you may just deactivate audio and set output to null,
+examples for Windows and Unix:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i foo.mov -c:v libxvid -pass 1 -an -f rawvideo -y NUL
+ffmpeg -i foo.mov -c:v libxvid -pass 1 -an -f rawvideo -y /dev/null
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>-passlogfile[:<var>stream_specifier</var>] <var>prefix</var> (<em>output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Set two-pass log file name prefix to <var>prefix</var>, the default file name
+prefix is &ldquo;ffmpeg2pass&rdquo;. The complete file name will be
+&lsquo;<tt>PREFIX-N.log</tt>&rsquo;, where N is a number specific to the output
+stream
+</p>
+</dd>
+<dt> &lsquo;<samp>-vlang <var>code</var></samp>&rsquo;</dt>
+<dd><p>Set the ISO 639 language code (3 letters) of the current video stream.
+</p>
+</dd>
+<dt> &lsquo;<samp>-vf <var>filtergraph</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Create the filtergraph specified by <var>filtergraph</var> and use it to
+filter the stream.
+</p>
+<p>This is an alias for <code>-filter:v</code>, see the <a href="#filter_005foption">-filter option</a>.
+</p></dd>
+</dl>
+
+<a name="Advanced-Video-Options"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-Advanced-Video-Options">5.6 Advanced Video Options</a></h2>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-pix_fmt[:<var>stream_specifier</var>] <var>format</var> (<em>input/output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Set pixel format. Use <code>-pix_fmts</code> to show all the supported
+pixel formats.
+If the selected pixel format can not be selected, ffmpeg will print a
+warning and select the best pixel format supported by the encoder.
+If <var>pix_fmt</var> is prefixed by a <code>+</code>, ffmpeg will exit with an error
+if the requested pixel format can not be selected, and automatic conversions
+inside filtergraphs are disabled.
+If <var>pix_fmt</var> is a single <code>+</code>, ffmpeg selects the same pixel format
+as the input (or graph output) and automatic conversions are disabled.
+</p>
+</dd>
+<dt> &lsquo;<samp>-sws_flags <var>flags</var> (<em>input/output</em>)</samp>&rsquo;</dt>
+<dd><p>Set SwScaler flags.
+</p></dd>
+<dt> &lsquo;<samp>-vdt <var>n</var></samp>&rsquo;</dt>
+<dd><p>Discard threshold.
+</p>
+</dd>
+<dt> &lsquo;<samp>-rc_override[:<var>stream_specifier</var>] <var>override</var> (<em>output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Rate control override for specific intervals, formatted as &quot;int,int,int&quot;
+list separated with slashes. Two first values are the beginning and
+end frame numbers, last one is quantizer to use if positive, or quality
+factor if negative.
+</p>
+</dd>
+<dt> &lsquo;<samp>-ilme</samp>&rsquo;</dt>
+<dd><p>Force interlacing support in encoder (MPEG-2 and MPEG-4 only).
+Use this option if your input file is interlaced and you want
+to keep the interlaced format for minimum losses.
+The alternative is to deinterlace the input stream with
+&lsquo;<samp>-deinterlace</samp>&rsquo;, but deinterlacing introduces losses.
+</p></dd>
+<dt> &lsquo;<samp>-psnr</samp>&rsquo;</dt>
+<dd><p>Calculate PSNR of compressed frames.
+</p></dd>
+<dt> &lsquo;<samp>-vstats</samp>&rsquo;</dt>
+<dd><p>Dump video coding statistics to &lsquo;<tt>vstats_HHMMSS.log</tt>&rsquo;.
+</p></dd>
+<dt> &lsquo;<samp>-vstats_file <var>file</var></samp>&rsquo;</dt>
+<dd><p>Dump video coding statistics to <var>file</var>.
+</p></dd>
+<dt> &lsquo;<samp>-top[:<var>stream_specifier</var>] <var>n</var> (<em>output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>top=1/bottom=0/auto=-1 field first
+</p></dd>
+<dt> &lsquo;<samp>-dc <var>precision</var></samp>&rsquo;</dt>
+<dd><p>Intra_dc_precision.
+</p></dd>
+<dt> &lsquo;<samp>-vtag <var>fourcc/tag</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Force video tag/fourcc. This is an alias for <code>-tag:v</code>.
+</p></dd>
+<dt> &lsquo;<samp>-qphist (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Show QP histogram
+</p></dd>
+<dt> &lsquo;<samp>-vbsf <var>bitstream_filter</var></samp>&rsquo;</dt>
+<dd><p>Deprecated see -bsf
+</p>
+</dd>
+<dt> &lsquo;<samp>-force_key_frames[:<var>stream_specifier</var>] <var>time</var>[,<var>time</var>...] (<em>output,per-stream</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>-force_key_frames[:<var>stream_specifier</var>] expr:<var>expr</var> (<em>output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Force key frames at the specified timestamps, more precisely at the first
+frames after each specified time.
+</p>
+<p>If the argument is prefixed with <code>expr:</code>, the string <var>expr</var>
+is interpreted like an expression and is evaluated for each frame. A
+key frame is forced in case the evaluation is non-zero.
+</p>
+<p>If one of the times is &quot;<code>chapters</code>[<var>delta</var>]&quot;, it is expanded into
+the time of the beginning of all chapters in the file, shifted by
+<var>delta</var>, expressed as a time in seconds.
+This option can be useful to ensure that a seek point is present at a
+chapter mark or any other designated place in the output file.
+</p>
+<p>For example, to insert a key frame at 5 minutes, plus key frames 0.1 second
+before the beginning of every chapter:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">-force_key_frames 0:05:00,chapters-0.1
+</pre></td></tr></table>
+
+<p>The expression in <var>expr</var> can contain the following constants:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>the number of current processed frame, starting from 0
+</p></dd>
+<dt> &lsquo;<samp>n_forced</samp>&rsquo;</dt>
+<dd><p>the number of forced frames
+</p></dd>
+<dt> &lsquo;<samp>prev_forced_n</samp>&rsquo;</dt>
+<dd><p>the number of the previous forced frame, it is <code>NAN</code> when no
+keyframe was forced yet
+</p></dd>
+<dt> &lsquo;<samp>prev_forced_t</samp>&rsquo;</dt>
+<dd><p>the time of the previous forced frame, it is <code>NAN</code> when no
+keyframe was forced yet
+</p></dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>the time of the current processed frame
+</p></dd>
+</dl>
+
+<p>For example to force a key frame every 5 seconds, you can specify:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">-force_key_frames expr:gte(t,n_forced*5)
+</pre></td></tr></table>
+
+<p>To force a key frame 5 seconds after the time of the last forced one,
+starting from second 13:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">-force_key_frames expr:if(isnan(prev_forced_t),gte(t,13),gte(t,prev_forced_t+5))
+</pre></td></tr></table>
+
+<p>Note that forcing too many keyframes is very harmful for the lookahead
+algorithms of certain encoders: using fixed-GOP options or similar
+would be more efficient.
+</p>
+</dd>
+<dt> &lsquo;<samp>-copyinkf[:<var>stream_specifier</var>] (<em>output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>When doing stream copy, copy also non-key frames found at the
+beginning.
+</p>
+</dd>
+<dt> &lsquo;<samp>-hwaccel[:<var>stream_specifier</var>] <var>hwaccel</var> (<em>input,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Use hardware acceleration to decode the matching stream(s). The allowed values
+of <var>hwaccel</var> are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>Do not use any hardware acceleration (the default).
+</p>
+</dd>
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Automatically select the hardware acceleration method.
+</p>
+</dd>
+<dt> &lsquo;<samp>vdpau</samp>&rsquo;</dt>
+<dd><p>Use VDPAU (Video Decode and Presentation API for Unix) hardware acceleration.
+</p></dd>
+</dl>
+
+<p>This option has no effect if the selected hwaccel is not available or not
+supported by the chosen decoder.
+</p>
+<p>Note that most acceleration methods are intended for playback and will not be
+faster than software decoding on modern CPUs. Additionally, <code>ffmpeg</code>
+will usually need to copy the decoded frames from the GPU memory into the system
+memory, resulting in further performance loss. This option is thus mainly
+useful for testing.
+</p>
+</dd>
+<dt> &lsquo;<samp>-hwaccel_device[:<var>stream_specifier</var>] <var>hwaccel_device</var> (<em>input,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Select a device to use for hardware acceleration.
+</p>
+<p>This option only makes sense when the &lsquo;<samp>-hwaccel</samp>&rsquo; option is also
+specified. Its exact meaning depends on the specific hardware acceleration
+method chosen.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>vdpau</samp>&rsquo;</dt>
+<dd><p>For VDPAU, this option specifies the X11 display/screen to use. If this option
+is not specified, the value of the <var>DISPLAY</var> environment variable is used
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<a name="Audio-Options"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-Audio-Options">5.7 Audio Options</a></h2>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-aframes <var>number</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set the number of audio frames to record. This is an alias for <code>-frames:a</code>.
+</p></dd>
+<dt> &lsquo;<samp>-ar[:<var>stream_specifier</var>] <var>freq</var> (<em>input/output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Set the audio sampling frequency. For output streams it is set by
+default to the frequency of the corresponding input stream. For input
+streams this option only makes sense for audio grabbing devices and raw
+demuxers and is mapped to the corresponding demuxer options.
+</p></dd>
+<dt> &lsquo;<samp>-aq <var>q</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set the audio quality (codec-specific, VBR). This is an alias for -q:a.
+</p></dd>
+<dt> &lsquo;<samp>-ac[:<var>stream_specifier</var>] <var>channels</var> (<em>input/output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Set the number of audio channels. For output streams it is set by
+default to the number of input audio channels. For input streams
+this option only makes sense for audio grabbing devices and raw demuxers
+and is mapped to the corresponding demuxer options.
+</p></dd>
+<dt> &lsquo;<samp>-an (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Disable audio recording.
+</p></dd>
+<dt> &lsquo;<samp>-acodec <var>codec</var> (<em>input/output</em>)</samp>&rsquo;</dt>
+<dd><p>Set the audio codec. This is an alias for <code>-codec:a</code>.
+</p></dd>
+<dt> &lsquo;<samp>-sample_fmt[:<var>stream_specifier</var>] <var>sample_fmt</var> (<em>output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Set the audio sample format. Use <code>-sample_fmts</code> to get a list
+of supported sample formats.
+</p>
+</dd>
+<dt> &lsquo;<samp>-af <var>filtergraph</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Create the filtergraph specified by <var>filtergraph</var> and use it to
+filter the stream.
+</p>
+<p>This is an alias for <code>-filter:a</code>, see the <a href="#filter_005foption">-filter option</a>.
+</p></dd>
+</dl>
+
+<a name="Advanced-Audio-options_003a"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-Advanced-Audio-options_003a">5.8 Advanced Audio options:</a></h2>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-atag <var>fourcc/tag</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Force audio tag/fourcc. This is an alias for <code>-tag:a</code>.
+</p></dd>
+<dt> &lsquo;<samp>-absf <var>bitstream_filter</var></samp>&rsquo;</dt>
+<dd><p>Deprecated, see -bsf
+</p></dd>
+<dt> &lsquo;<samp>-guess_layout_max <var>channels</var> (<em>input,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>If some input channel layout is not known, try to guess only if it
+corresponds to at most the specified number of channels. For example, 2
+tells to <code>ffmpeg</code> to recognize 1 channel as mono and 2 channels as
+stereo but not 6 channels as 5.1. The default is to always try to guess. Use
+0 to disable all guessing.
+</p></dd>
+</dl>
+
+<a name="Subtitle-options_003a"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-Subtitle-options_003a">5.9 Subtitle options:</a></h2>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-slang <var>code</var></samp>&rsquo;</dt>
+<dd><p>Set the ISO 639 language code (3 letters) of the current subtitle stream.
+</p></dd>
+<dt> &lsquo;<samp>-scodec <var>codec</var> (<em>input/output</em>)</samp>&rsquo;</dt>
+<dd><p>Set the subtitle codec. This is an alias for <code>-codec:s</code>.
+</p></dd>
+<dt> &lsquo;<samp>-sn (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Disable subtitle recording.
+</p></dd>
+<dt> &lsquo;<samp>-sbsf <var>bitstream_filter</var></samp>&rsquo;</dt>
+<dd><p>Deprecated, see -bsf
+</p></dd>
+</dl>
+
+<a name="Advanced-Subtitle-options_003a"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-Advanced-Subtitle-options_003a">5.10 Advanced Subtitle options:</a></h2>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-fix_sub_duration</samp>&rsquo;</dt>
+<dd><p>Fix subtitles durations. For each subtitle, wait for the next packet in the
+same stream and adjust the duration of the first to avoid overlap. This is
+necessary with some subtitles codecs, especially DVB subtitles, because the
+duration in the original packet is only a rough estimate and the end is
+actually marked by an empty subtitle frame. Failing to use this option when
+necessary can result in exaggerated durations or muxing failures due to
+non-monotonic timestamps.
+</p>
+<p>Note that this option will delay the output of all data until the next
+subtitle packet is decoded: it may increase memory consumption and latency a
+lot.
+</p>
+</dd>
+<dt> &lsquo;<samp>-canvas_size <var>size</var></samp>&rsquo;</dt>
+<dd><p>Set the size of the canvas used to render subtitles.
+</p>
+</dd>
+</dl>
+
+<a name="Advanced-options"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-Advanced-options">5.11 Advanced options</a></h2>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-map [-]<var>input_file_id</var>[:<var>stream_specifier</var>][,<var>sync_file_id</var>[:<var>stream_specifier</var>]] | <var>[linklabel]</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Designate one or more input streams as a source for the output file. Each input
+stream is identified by the input file index <var>input_file_id</var> and
+the input stream index <var>input_stream_id</var> within the input
+file. Both indices start at 0. If specified,
+<var>sync_file_id</var>:<var>stream_specifier</var> sets which input stream
+is used as a presentation sync reference.
+</p>
+<p>The first <code>-map</code> option on the command line specifies the
+source for output stream 0, the second <code>-map</code> option specifies
+the source for output stream 1, etc.
+</p>
+<p>A <code>-</code> character before the stream identifier creates a &quot;negative&quot; mapping.
+It disables matching streams from already created mappings.
+</p>
+<p>An alternative <var>[linklabel]</var> form will map outputs from complex filter
+graphs (see the &lsquo;<samp>-filter_complex</samp>&rsquo; option) to the output file.
+<var>linklabel</var> must correspond to a defined output link label in the graph.
+</p>
+<p>For example, to map ALL streams from the first input file to output
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -map 0 output
+</pre></td></tr></table>
+
+<p>For example, if you have two audio streams in the first input file,
+these streams are identified by &quot;0:0&quot; and &quot;0:1&quot;. You can use
+<code>-map</code> to select which streams to place in an output file. For
+example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -map 0:1 out.wav
+</pre></td></tr></table>
+<p>will map the input stream in &lsquo;<tt>INPUT</tt>&rsquo; identified by &quot;0:1&quot; to
+the (single) output stream in &lsquo;<tt>out.wav</tt>&rsquo;.
+</p>
+<p>For example, to select the stream with index 2 from input file
+&lsquo;<tt>a.mov</tt>&rsquo; (specified by the identifier &quot;0:2&quot;), and stream with
+index 6 from input &lsquo;<tt>b.mov</tt>&rsquo; (specified by the identifier &quot;1:6&quot;),
+and copy them to the output file &lsquo;<tt>out.mov</tt>&rsquo;:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i a.mov -i b.mov -c copy -map 0:2 -map 1:6 out.mov
+</pre></td></tr></table>
+
+<p>To select all video and the third audio stream from an input file:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -map 0:v -map 0:a:2 OUTPUT
+</pre></td></tr></table>
+
+<p>To map all the streams except the second audio, use negative mappings
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -map 0 -map -0:a:1 OUTPUT
+</pre></td></tr></table>
+
+<p>Note that using this option disables the default mappings for this output file.
+</p>
+</dd>
+<dt> &lsquo;<samp>-map_channel [<var>input_file_id</var>.<var>stream_specifier</var>.<var>channel_id</var>|-1][:<var>output_file_id</var>.<var>stream_specifier</var>]</samp>&rsquo;</dt>
+<dd><p>Map an audio channel from a given input to an output. If
+<var>output_file_id</var>.<var>stream_specifier</var> is not set, the audio channel will
+be mapped on all the audio streams.
+</p>
+<p>Using &quot;-1&quot; instead of
+<var>input_file_id</var>.<var>stream_specifier</var>.<var>channel_id</var> will map a muted
+channel.
+</p>
+<p>For example, assuming <var>INPUT</var> is a stereo audio file, you can switch the
+two audio channels with the following command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -map_channel 0.0.1 -map_channel 0.0.0 OUTPUT
+</pre></td></tr></table>
+
+<p>If you want to mute the first channel and keep the second:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -map_channel -1 -map_channel 0.0.1 OUTPUT
+</pre></td></tr></table>
+
+<p>The order of the &quot;-map_channel&quot; option specifies the order of the channels in
+the output stream. The output channel layout is guessed from the number of
+channels mapped (mono if one &quot;-map_channel&quot;, stereo if two, etc.). Using &quot;-ac&quot;
+in combination of &quot;-map_channel&quot; makes the channel gain levels to be updated if
+input and output channel layouts don&rsquo;t match (for instance two &quot;-map_channel&quot;
+options and &quot;-ac 6&quot;).
+</p>
+<p>You can also extract each channel of an input to specific outputs; the following
+command extracts two channels of the <var>INPUT</var> audio stream (file 0, stream 0)
+to the respective <var>OUTPUT_CH0</var> and <var>OUTPUT_CH1</var> outputs:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -map_channel 0.0.0 OUTPUT_CH0 -map_channel 0.0.1 OUTPUT_CH1
+</pre></td></tr></table>
+
+<p>The following example splits the channels of a stereo input into two separate
+streams, which are put into the same output file:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i stereo.wav -map 0:0 -map 0:0 -map_channel 0.0.0:0.0 -map_channel 0.0.1:0.1 -y out.ogg
+</pre></td></tr></table>
+
+<p>Note that currently each output stream can only contain channels from a single
+input stream; you can&rsquo;t for example use &quot;-map_channel&quot; to pick multiple input
+audio channels contained in different streams (from the same or different files)
+and merge them into a single output stream. It is therefore not currently
+possible, for example, to turn two separate mono streams into a single stereo
+stream. However splitting a stereo stream into two single channel mono streams
+is possible.
+</p>
+<p>If you need this feature, a possible workaround is to use the <em>amerge</em>
+filter. For example, if you need to merge a media (here &lsquo;<tt>input.mkv</tt>&rsquo;) with 2
+mono audio streams into one single stereo channel audio stream (and keep the
+video stream), you can use the following command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.mkv -filter_complex &quot;[0:1] [0:2] amerge&quot; -c:a pcm_s16le -c:v copy output.mkv
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>-map_metadata[:<var>metadata_spec_out</var>] <var>infile</var>[:<var>metadata_spec_in</var>] (<em>output,per-metadata</em>)</samp>&rsquo;</dt>
+<dd><p>Set metadata information of the next output file from <var>infile</var>. Note that
+those are file indices (zero-based), not filenames.
+Optional <var>metadata_spec_in/out</var> parameters specify, which metadata to copy.
+A metadata specifier can have the following forms:
+</p><dl compact="compact">
+<dt> &lsquo;<samp><var>g</var></samp>&rsquo;</dt>
+<dd><p>global metadata, i.e. metadata that applies to the whole file
+</p>
+</dd>
+<dt> &lsquo;<samp><var>s</var>[:<var>stream_spec</var>]</samp>&rsquo;</dt>
+<dd><p>per-stream metadata. <var>stream_spec</var> is a stream specifier as described
+in the <a href="#Stream-specifiers">Stream specifiers</a> chapter. In an input metadata specifier, the first
+matching stream is copied from. In an output metadata specifier, all matching
+streams are copied to.
+</p>
+</dd>
+<dt> &lsquo;<samp><var>c</var>:<var>chapter_index</var></samp>&rsquo;</dt>
+<dd><p>per-chapter metadata. <var>chapter_index</var> is the zero-based chapter index.
+</p>
+</dd>
+<dt> &lsquo;<samp><var>p</var>:<var>program_index</var></samp>&rsquo;</dt>
+<dd><p>per-program metadata. <var>program_index</var> is the zero-based program index.
+</p></dd>
+</dl>
+<p>If metadata specifier is omitted, it defaults to global.
+</p>
+<p>By default, global metadata is copied from the first input file,
+per-stream and per-chapter metadata is copied along with streams/chapters. These
+default mappings are disabled by creating any mapping of the relevant type. A negative
+file index can be used to create a dummy mapping that just disables automatic copying.
+</p>
+<p>For example to copy metadata from the first stream of the input file to global metadata
+of the output file:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.ogg -map_metadata 0:s:0 out.mp3
+</pre></td></tr></table>
+
+<p>To do the reverse, i.e. copy global metadata to all audio streams:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.mkv -map_metadata:s:a 0:g out.mkv
+</pre></td></tr></table>
+<p>Note that simple <code>0</code> would work as well in this example, since global
+metadata is assumed by default.
+</p>
+</dd>
+<dt> &lsquo;<samp>-map_chapters <var>input_file_index</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Copy chapters from input file with index <var>input_file_index</var> to the next
+output file. If no chapter mapping is specified, then chapters are copied from
+the first input file with at least one chapter. Use a negative file index to
+disable any chapter copying.
+</p>
+</dd>
+<dt> &lsquo;<samp>-benchmark (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Show benchmarking information at the end of an encode.
+Shows CPU time used and maximum memory consumption.
+Maximum memory consumption is not supported on all systems,
+it will usually display as 0 if not supported.
+</p></dd>
+<dt> &lsquo;<samp>-benchmark_all (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Show benchmarking information during the encode.
+Shows CPU time used in various steps (audio/video encode/decode).
+</p></dd>
+<dt> &lsquo;<samp>-timelimit <var>duration</var> (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Exit after ffmpeg has been running for <var>duration</var> seconds.
+</p></dd>
+<dt> &lsquo;<samp>-dump (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Dump each input packet to stderr.
+</p></dd>
+<dt> &lsquo;<samp>-hex (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>When dumping packets, also dump the payload.
+</p></dd>
+<dt> &lsquo;<samp>-re (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Read input at native frame rate. Mainly used to simulate a grab device.
+or live input stream (e.g. when reading from a file). Should not be used
+with actual grab devices or live input streams (where it can cause packet
+loss).
+By default <code>ffmpeg</code> attempts to read the input(s) as fast as possible.
+This option will slow down the reading of the input(s) to the native frame rate
+of the input(s). It is useful for real-time output (e.g. live streaming).
+</p></dd>
+<dt> &lsquo;<samp>-loop_input</samp>&rsquo;</dt>
+<dd><p>Loop over the input stream. Currently it works only for image
+streams. This option is used for automatic FFserver testing.
+This option is deprecated, use -loop 1.
+</p></dd>
+<dt> &lsquo;<samp>-loop_output <var>number_of_times</var></samp>&rsquo;</dt>
+<dd><p>Repeatedly loop output for formats that support looping such as animated GIF
+(0 will loop the output infinitely).
+This option is deprecated, use -loop.
+</p></dd>
+<dt> &lsquo;<samp>-vsync <var>parameter</var></samp>&rsquo;</dt>
+<dd><p>Video sync method.
+For compatibility reasons old values can be specified as numbers.
+Newly added values will have to be specified as strings always.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>0, passthrough</samp>&rsquo;</dt>
+<dd><p>Each frame is passed with its timestamp from the demuxer to the muxer.
+</p></dd>
+<dt> &lsquo;<samp>1, cfr</samp>&rsquo;</dt>
+<dd><p>Frames will be duplicated and dropped to achieve exactly the requested
+constant frame rate.
+</p></dd>
+<dt> &lsquo;<samp>2, vfr</samp>&rsquo;</dt>
+<dd><p>Frames are passed through with their timestamp or dropped so as to
+prevent 2 frames from having the same timestamp.
+</p></dd>
+<dt> &lsquo;<samp>drop</samp>&rsquo;</dt>
+<dd><p>As passthrough but destroys all timestamps, making the muxer generate
+fresh timestamps based on frame-rate.
+</p></dd>
+<dt> &lsquo;<samp>-1, auto</samp>&rsquo;</dt>
+<dd><p>Chooses between 1 and 2 depending on muxer capabilities. This is the
+default method.
+</p></dd>
+</dl>
+
+<p>Note that the timestamps may be further modified by the muxer, after this.
+For example, in the case that the format option &lsquo;<samp>avoid_negative_ts</samp>&rsquo;
+is enabled.
+</p>
+<p>With -map you can select from which stream the timestamps should be
+taken. You can leave either video or audio unchanged and sync the
+remaining stream(s) to the unchanged one.
+</p>
+</dd>
+<dt> &lsquo;<samp>-async <var>samples_per_second</var></samp>&rsquo;</dt>
+<dd><p>Audio sync method. &quot;Stretches/squeezes&quot; the audio stream to match the timestamps,
+the parameter is the maximum samples per second by which the audio is changed.
+-async 1 is a special case where only the start of the audio stream is corrected
+without any later correction.
+</p>
+<p>Note that the timestamps may be further modified by the muxer, after this.
+For example, in the case that the format option &lsquo;<samp>avoid_negative_ts</samp>&rsquo;
+is enabled.
+</p>
+<p>This option has been deprecated. Use the <code>aresample</code> audio filter instead.
+</p>
+</dd>
+<dt> &lsquo;<samp>-copyts</samp>&rsquo;</dt>
+<dd><p>Do not process input timestamps, but keep their values without trying
+to sanitize them. In particular, do not remove the initial start time
+offset value.
+</p>
+<p>Note that, depending on the &lsquo;<samp>vsync</samp>&rsquo; option or on specific muxer
+processing (e.g. in case the format option &lsquo;<samp>avoid_negative_ts</samp>&rsquo;
+is enabled) the output timestamps may mismatch with the input
+timestamps even when this option is selected.
+</p>
+</dd>
+<dt> &lsquo;<samp>-copytb <var>mode</var></samp>&rsquo;</dt>
+<dd><p>Specify how to set the encoder timebase when stream copying.  <var>mode</var> is an
+integer numeric value, and can assume one of the following values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>Use the demuxer timebase.
+</p>
+<p>The time base is copied to the output encoder from the corresponding input
+demuxer. This is sometimes required to avoid non monotonically increasing
+timestamps when copying video streams with variable frame rate.
+</p>
+</dd>
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>Use the decoder timebase.
+</p>
+<p>The time base is copied to the output encoder from the corresponding input
+decoder.
+</p>
+</dd>
+<dt> &lsquo;<samp>-1</samp>&rsquo;</dt>
+<dd><p>Try to make the choice automatically, in order to generate a sane output.
+</p></dd>
+</dl>
+
+<p>Default value is -1.
+</p>
+</dd>
+<dt> &lsquo;<samp>-shortest (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Finish encoding when the shortest input stream ends.
+</p></dd>
+<dt> &lsquo;<samp>-dts_delta_threshold</samp>&rsquo;</dt>
+<dd><p>Timestamp discontinuity delta threshold.
+</p></dd>
+<dt> &lsquo;<samp>-muxdelay <var>seconds</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Set the maximum demux-decode delay.
+</p></dd>
+<dt> &lsquo;<samp>-muxpreload <var>seconds</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Set the initial demux-decode delay.
+</p></dd>
+<dt> &lsquo;<samp>-streamid <var>output-stream-index</var>:<var>new-value</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Assign a new stream-id value to an output stream. This option should be
+specified prior to the output filename to which it applies.
+For the situation where multiple output files exist, a streamid
+may be reassigned to a different value.
+</p>
+<p>For example, to set the stream 0 PID to 33 and the stream 1 PID to 36 for
+an output mpegts file:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i infile -streamid 0:33 -streamid 1:36 out.ts
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>-bsf[:<var>stream_specifier</var>] <var>bitstream_filters</var> (<em>output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Set bitstream filters for matching streams. <var>bitstream_filters</var> is
+a comma-separated list of bitstream filters. Use the <code>-bsfs</code> option
+to get the list of bitstream filters.
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i h264.mp4 -c:v copy -bsf:v h264_mp4toannexb -an out.h264
+</pre></td></tr></table>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i file.mov -an -vn -bsf:s mov2textsub -c:s copy -f rawvideo sub.txt
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>-tag[:<var>stream_specifier</var>] <var>codec_tag</var> (<em>per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Force a tag/fourcc for matching streams.
+</p>
+</dd>
+<dt> &lsquo;<samp>-timecode <var>hh</var>:<var>mm</var>:<var>ss</var>SEP<var>ff</var></samp>&rsquo;</dt>
+<dd><p>Specify Timecode for writing. <var>SEP</var> is &rsquo;:&rsquo; for non drop timecode and &rsquo;;&rsquo;
+(or &rsquo;.&rsquo;) for drop.
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.mpg -timecode 01:02:03.04 -r 30000/1001 -s ntsc output.mpg
+</pre></td></tr></table>
+
+<p><a name="filter_005fcomplex_005foption"></a>
+</p></dd>
+<dt> &lsquo;<samp>-filter_complex <var>filtergraph</var> (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Define a complex filtergraph, i.e. one with arbitrary number of inputs and/or
+outputs. For simple graphs &ndash; those with one input and one output of the same
+type &ndash; see the &lsquo;<samp>-filter</samp>&rsquo; options. <var>filtergraph</var> is a description of
+the filtergraph, as described in the &ldquo;Filtergraph syntax&rdquo; section of the
+ffmpeg-filters manual.
+</p>
+<p>Input link labels must refer to input streams using the
+<code>[file_index:stream_specifier]</code> syntax (i.e. the same as &lsquo;<samp>-map</samp>&rsquo;
+uses). If <var>stream_specifier</var> matches multiple streams, the first one will be
+used. An unlabeled input will be connected to the first unused input stream of
+the matching type.
+</p>
+<p>Output link labels are referred to with &lsquo;<samp>-map</samp>&rsquo;. Unlabeled outputs are
+added to the first output file.
+</p>
+<p>Note that with this option it is possible to use only lavfi sources without
+normal input files.
+</p>
+<p>For example, to overlay an image over video
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i video.mkv -i image.png -filter_complex '[0:v][1:v]overlay[out]' -map
+'[out]' out.mkv
+</pre></td></tr></table>
+<p>Here <code>[0:v]</code> refers to the first video stream in the first input file,
+which is linked to the first (main) input of the overlay filter. Similarly the
+first video stream in the second input is linked to the second (overlay) input
+of overlay.
+</p>
+<p>Assuming there is only one video stream in each input file, we can omit input
+labels, so the above is equivalent to
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i video.mkv -i image.png -filter_complex 'overlay[out]' -map
+'[out]' out.mkv
+</pre></td></tr></table>
+
+<p>Furthermore we can omit the output label and the single output from the filter
+graph will be added to the output file automatically, so we can simply write
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i video.mkv -i image.png -filter_complex 'overlay' out.mkv
+</pre></td></tr></table>
+
+<p>To generate 5 seconds of pure red video using lavfi <code>color</code> source:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -filter_complex 'color=c=red' -t 5 out.mkv
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>-lavfi <var>filtergraph</var> (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Define a complex filtergraph, i.e. one with arbitrary number of inputs and/or
+outputs. Equivalent to &lsquo;<samp>-filter_complex</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>-filter_complex_script <var>filename</var> (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>This option is similar to &lsquo;<samp>-filter_complex</samp>&rsquo;, the only difference is that
+its argument is the name of the file from which a complex filtergraph
+description is to be read.
+</p>
+</dd>
+<dt> &lsquo;<samp>-accurate_seek (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>This option enables or disables accurate seeking in input files with the
+&lsquo;<samp>-ss</samp>&rsquo; option. It is enabled by default, so seeking is accurate when
+transcoding. Use &lsquo;<samp>-noaccurate_seek</samp>&rsquo; to disable it, which may be useful
+e.g. when copying some streams and transcoding the others.
+</p>
+</dd>
+<dt> &lsquo;<samp>-override_ffserver (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Overrides the input specifications from <code>ffserver</code>. Using this
+option you can map any input stream to <code>ffserver</code> and control
+many aspects of the encoding from <code>ffmpeg</code>. Without this
+option <code>ffmpeg</code> will transmit to <code>ffserver</code> what is
+requested by <code>ffserver</code>.
+</p>
+<p>The option is intended for cases where features are needed that cannot be
+specified to <code>ffserver</code> but can be to <code>ffmpeg</code>.
+</p>
+</dd>
+</dl>
+
+<p>As a special exception, you can use a bitmap subtitle stream as input: it
+will be converted into a video with the same size as the largest video in
+the file, or 720x576 if no video is present. Note that this is an
+experimental and temporary solution. It will be removed once libavfilter has
+proper support for subtitles.
+</p>
+<p>For example, to hardcode subtitles on top of a DVB-T recording stored in
+MPEG-TS format, delaying the subtitles by 1 second:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.ts -filter_complex \
+  '[#0x2ef] setpts=PTS+1/TB [sub] ; [#0x2d0] [sub] overlay' \
+  -sn -map '#0x2dc' output.mkv
+</pre></td></tr></table>
+<p>(0x2d0, 0x2dc and 0x2ef are the MPEG-TS PIDs of respectively the video,
+audio and subtitles streams; 0:0, 0:3 and 0:7 would have worked too)
+</p>
+<a name="Preset-files"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-Preset-files">5.12 Preset files</a></h2>
+<p>A preset file contains a sequence of <var>option</var>=<var>value</var> pairs,
+one for each line, specifying a sequence of options which would be
+awkward to specify on the command line. Lines starting with the hash
+(&rsquo;#&rsquo;) character are ignored and are used to provide comments. Check
+the &lsquo;<tt>presets</tt>&rsquo; directory in the FFmpeg source tree for examples.
+</p>
+<p>Preset files are specified with the <code>vpre</code>, <code>apre</code>,
+<code>spre</code>, and <code>fpre</code> options. The <code>fpre</code> option takes the
+filename of the preset instead of a preset name as input and can be
+used for any kind of codec. For the <code>vpre</code>, <code>apre</code>, and
+<code>spre</code> options, the options specified in a preset file are
+applied to the currently selected codec of the same type as the preset
+option.
+</p>
+<p>The argument passed to the <code>vpre</code>, <code>apre</code>, and <code>spre</code>
+preset options identifies the preset file to use according to the
+following rules:
+</p>
+<p>First ffmpeg searches for a file named <var>arg</var>.ffpreset in the
+directories &lsquo;<tt>$FFMPEG_DATADIR</tt>&rsquo; (if set), and &lsquo;<tt>$HOME/.ffmpeg</tt>&rsquo;, and in
+the datadir defined at configuration time (usually &lsquo;<tt>PREFIX/share/ffmpeg</tt>&rsquo;)
+or in a &lsquo;<tt>ffpresets</tt>&rsquo; folder along the executable on win32,
+in that order. For example, if the argument is <code>libvpx-1080p</code>, it will
+search for the file &lsquo;<tt>libvpx-1080p.ffpreset</tt>&rsquo;.
+</p>
+<p>If no such file is found, then ffmpeg will search for a file named
+<var>codec_name</var>-<var>arg</var>.ffpreset in the above-mentioned
+directories, where <var>codec_name</var> is the name of the codec to which
+the preset file options will be applied. For example, if you select
+the video codec with <code>-vcodec libvpx</code> and use <code>-vpre 1080p</code>,
+then it will search for the file &lsquo;<tt>libvpx-1080p.ffpreset</tt>&rsquo;.
+</p>
+<a name="Tips"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Tips">6. Tips</a></h1>
+
+<ul>
+<li>
+For streaming at very low bitrates, use a low frame rate
+and a small GOP size. This is especially true for RealVideo where
+the Linux player does not seem to be very fast, so it can miss
+frames. An example is:
+
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -g 3 -r 3 -t 10 -b:v 50k -s qcif -f rv10 /tmp/b.rm
+</pre></td></tr></table>
+
+</li><li>
+The parameter &rsquo;q&rsquo; which is displayed while encoding is the current
+quantizer. The value 1 indicates that a very good quality could
+be achieved. The value 31 indicates the worst quality. If q=31 appears
+too often, it means that the encoder cannot compress enough to meet
+your bitrate. You must either increase the bitrate, decrease the
+frame rate or decrease the frame size.
+
+</li><li>
+If your computer is not fast enough, you can speed up the
+compression at the expense of the compression ratio. You can use
+&rsquo;-me zero&rsquo; to speed up motion estimation, and &rsquo;-g 0&rsquo; to disable
+motion estimation completely (you have only I-frames, which means it
+is about as good as JPEG compression).
+
+</li><li>
+To have very low audio bitrates, reduce the sampling frequency
+(down to 22050 Hz for MPEG audio, 22050 or 11025 for AC-3).
+
+</li><li>
+To have a constant quality (but a variable bitrate), use the option
+&rsquo;-qscale n&rsquo; when &rsquo;n&rsquo; is between 1 (excellent quality) and 31 (worst
+quality).
+
+</li></ul>
+
+<a name="Examples-28"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Examples-28">7. Examples</a></h1>
+
+<a name="Preset-files-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-Preset-files-1">7.1 Preset files</a></h2>
+
+<p>A preset file contains a sequence of <var>option=value</var> pairs, one for
+each line, specifying a sequence of options which can be specified also on
+the command line. Lines starting with the hash (&rsquo;#&rsquo;) character are ignored and
+are used to provide comments. Empty lines are also ignored. Check the
+&lsquo;<tt>presets</tt>&rsquo; directory in the FFmpeg source tree for examples.
+</p>
+<p>Preset files are specified with the <code>pre</code> option, this option takes a
+preset name as input.  FFmpeg searches for a file named <var>preset_name</var>.avpreset in
+the directories &lsquo;<tt>$AVCONV_DATADIR</tt>&rsquo; (if set), and &lsquo;<tt>$HOME/.ffmpeg</tt>&rsquo;, and in
+the data directory defined at configuration time (usually &lsquo;<tt>$PREFIX/share/ffmpeg</tt>&rsquo;)
+in that order.  For example, if the argument is <code>libx264-max</code>, it will
+search for the file &lsquo;<tt>libx264-max.avpreset</tt>&rsquo;.
+</p>
+<a name="Video-and-Audio-grabbing"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-Video-and-Audio-grabbing">7.2 Video and Audio grabbing</a></h2>
+
+<p>If you specify the input format and device then ffmpeg can grab video
+and audio directly.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f oss -i /dev/dsp -f video4linux2 -i /dev/video0 /tmp/out.mpg
+</pre></td></tr></table>
+
+<p>Or with an ALSA audio source (mono input, card id 1) instead of OSS:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f alsa -ac 1 -i hw:1 -f video4linux2 -i /dev/video0 /tmp/out.mpg
+</pre></td></tr></table>
+
+<p>Note that you must activate the right video source and channel before
+launching ffmpeg with any TV viewer such as
+<a href="http://linux.bytesex.org/xawtv/">xawtv</a> by Gerd Knorr. You also
+have to set the audio recording levels correctly with a
+standard mixer.
+</p>
+<a name="X11-grabbing"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-X11-grabbing">7.3 X11 grabbing</a></h2>
+
+<p>Grab the X11 display with ffmpeg via
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -video_size cif -framerate 25 -i :0.0 /tmp/out.mpg
+</pre></td></tr></table>
+
+<p>0.0 is display.screen number of your X11 server, same as
+the DISPLAY environment variable.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -video_size cif -framerate 25 -i :0.0+10,20 /tmp/out.mpg
+</pre></td></tr></table>
+
+<p>0.0 is display.screen number of your X11 server, same as the DISPLAY environment
+variable. 10 is the x-offset and 20 the y-offset for the grabbing.
+</p>
+<a name="Video-and-Audio-file-format-conversion"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-Video-and-Audio-file-format-conversion">7.4 Video and Audio file format conversion</a></h2>
+
+<p>Any supported file format and protocol can serve as input to ffmpeg:
+</p>
+<p>Examples:
+</p><ul>
+<li>
+You can use YUV files as input:
+
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i /tmp/test%d.Y /tmp/out.mpg
+</pre></td></tr></table>
+
+<p>It will use the files:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">/tmp/test0.Y, /tmp/test0.U, /tmp/test0.V,
+/tmp/test1.Y, /tmp/test1.U, /tmp/test1.V, etc...
+</pre></td></tr></table>
+
+<p>The Y files use twice the resolution of the U and V files. They are
+raw files, without header. They can be generated by all decent video
+decoders. You must specify the size of the image with the &lsquo;<samp>-s</samp>&rsquo; option
+if ffmpeg cannot guess it.
+</p>
+</li><li>
+You can input from a raw YUV420P file:
+
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i /tmp/test.yuv /tmp/out.avi
+</pre></td></tr></table>
+
+<p>test.yuv is a file containing raw YUV planar data. Each frame is composed
+of the Y plane followed by the U and V planes at half vertical and
+horizontal resolution.
+</p>
+</li><li>
+You can output to a raw YUV420P file:
+
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i mydivx.avi hugefile.yuv
+</pre></td></tr></table>
+
+</li><li>
+You can set several input files and output files:
+
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg
+</pre></td></tr></table>
+
+<p>Converts the audio file a.wav and the raw YUV video file a.yuv
+to MPEG file a.mpg.
+</p>
+</li><li>
+You can also do audio and video conversions at the same time:
+
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i /tmp/a.wav -ar 22050 /tmp/a.mp2
+</pre></td></tr></table>
+
+<p>Converts a.wav to MPEG audio at 22050 Hz sample rate.
+</p>
+</li><li>
+You can encode to several formats at the same time and define a
+mapping from input stream to output streams:
+
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i /tmp/a.wav -map 0:a -b:a 64k /tmp/a.mp2 -map 0:a -b:a 128k /tmp/b.mp2
+</pre></td></tr></table>
+
+<p>Converts a.wav to a.mp2 at 64 kbits and to b.mp2 at 128 kbits. &rsquo;-map
+file:index&rsquo; specifies which input stream is used for each output
+stream, in the order of the definition of output streams.
+</p>
+</li><li>
+You can transcode decrypted VOBs:
+
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i snatch_1.vob -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a libmp3lame -b:a 128k snatch.avi
+</pre></td></tr></table>
+
+<p>This is a typical DVD ripping example; the input is a VOB file, the
+output an AVI file with MPEG-4 video and MP3 audio. Note that in this
+command we use B-frames so the MPEG-4 stream is DivX5 compatible, and
+GOP size is 300 which means one intra frame every 10 seconds for 29.97fps
+input video. Furthermore, the audio stream is MP3-encoded so you need
+to enable LAME support by passing <code>--enable-libmp3lame</code> to configure.
+The mapping is particularly useful for DVD transcoding
+to get the desired audio language.
+</p>
+<p>NOTE: To see the supported input formats, use <code>ffmpeg -formats</code>.
+</p>
+</li><li>
+You can extract images from a video, or create a video from many images:
+
+<p>For extracting images from a video:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i foo.avi -r 1 -s WxH -f image2 foo-%03d.jpeg
+</pre></td></tr></table>
+
+<p>This will extract one video frame per second from the video and will
+output them in files named &lsquo;<tt>foo-001.jpeg</tt>&rsquo;, &lsquo;<tt>foo-002.jpeg</tt>&rsquo;,
+etc. Images will be rescaled to fit the new WxH values.
+</p>
+<p>If you want to extract just a limited number of frames, you can use the
+above command in combination with the -vframes or -t option, or in
+combination with -ss to start extracting from a certain point in time.
+</p>
+<p>For creating a video from many images:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f image2 -i foo-%03d.jpeg -r 12 -s WxH foo.avi
+</pre></td></tr></table>
+
+<p>The syntax <code>foo-%03d.jpeg</code> specifies to use a decimal number
+composed of three digits padded with zeroes to express the sequence
+number. It is the same syntax supported by the C printf function, but
+only formats accepting a normal integer are suitable.
+</p>
+<p>When importing an image sequence, -i also supports expanding
+shell-like wildcard patterns (globbing) internally, by selecting the
+image2-specific <code>-pattern_type glob</code> option.
+</p>
+<p>For example, for creating a video from filenames matching the glob pattern
+<code>foo-*.jpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f image2 -pattern_type glob -i 'foo-*.jpeg' -r 12 -s WxH foo.avi
+</pre></td></tr></table>
+
+</li><li>
+You can put many streams of the same type in the output:
+
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i test1.avi -i test2.avi -map 0:3 -map 0:2 -map 0:1 -map 0:0 -c copy test12.nut
+</pre></td></tr></table>
+
+<p>The resulting output file &lsquo;<tt>test12.avi</tt>&rsquo; will contain first four streams from
+the input file in reverse order.
+</p>
+</li><li>
+To force CBR video output:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i myfile.avi -b 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k out.m2v
+</pre></td></tr></table>
+
+</li><li>
+The four options lmin, lmax, mblmin and mblmax use &rsquo;lambda&rsquo; units,
+but you may use the QP2LAMBDA constant to easily convert from &rsquo;q&rsquo; units:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i src.ext -lmax 21*QP2LAMBDA dst.ext
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="Syntax-2"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Syntax-2">8. Syntax</a></h1>
+
+<p>This section documents the syntax and formats employed by the FFmpeg
+libraries and tools.
+</p>
+<p><a name="quoting_005fand_005fescaping"></a>
+</p><a name="Quoting-and-escaping"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-Quoting-and-escaping">8.1 Quoting and escaping</a></h2>
+
+<p>FFmpeg adopts the following quoting and escaping mechanism, unless
+explicitly specified. The following rules are applied:
+</p>
+<ul>
+<li>
+<code>'</code> and <code>\</code> are special characters (respectively used for
+quoting and escaping). In addition to them, there might be other
+special characters depending on the specific syntax where the escaping
+and quoting are employed.
+
+</li><li>
+A special character is escaped by prefixing it with a &rsquo;\&rsquo;.
+
+</li><li>
+All characters enclosed between &rdquo; are included literally in the
+parsed string. The quote character <code>'</code> itself cannot be quoted,
+so you may need to close the quote and escape it.
+
+</li><li>
+Leading and trailing whitespaces, unless escaped or quoted, are
+removed from the parsed string.
+</li></ul>
+
+<p>Note that you may need to add a second level of escaping when using
+the command line or a script, which depends on the syntax of the
+adopted shell language.
+</p>
+<p>The function <code>av_get_token</code> defined in
+&lsquo;<tt>libavutil/avstring.h</tt>&rsquo; can be used to parse a token quoted or
+escaped according to the rules defined above.
+</p>
+<p>The tool &lsquo;<tt>tools/ffescape</tt>&rsquo; in the FFmpeg source tree can be used
+to automatically quote or escape a string in a script.
+</p>
+<a name="Examples-40"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-40">8.1.1 Examples</a></h3>
+
+<ul>
+<li>
+Escape the string <code>Crime d'Amour</code> containing the <code>'</code> special
+character:
+<table><tr><td>&nbsp;</td><td><pre class="example">Crime d\'Amour
+</pre></td></tr></table>
+
+</li><li>
+The string above contains a quote, so the <code>'</code> needs to be escaped
+when quoting it:
+<table><tr><td>&nbsp;</td><td><pre class="example">'Crime d'\''Amour'
+</pre></td></tr></table>
+
+</li><li>
+Include leading or trailing whitespaces using quoting:
+<table><tr><td>&nbsp;</td><td><pre class="example">'  this string starts and ends with whitespaces  '
+</pre></td></tr></table>
+
+</li><li>
+Escaping and quoting can be mixed together:
+<table><tr><td>&nbsp;</td><td><pre class="example">' The string '\'string\'' is a string '
+</pre></td></tr></table>
+
+</li><li>
+To include a literal <code>\</code> you can use either escaping or quoting:
+<table><tr><td>&nbsp;</td><td><pre class="example">'c:\foo' can be written as c:\\foo
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="date-syntax"></a>
+</p><a name="Date"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-Date">8.2 Date</a></h2>
+
+<p>The accepted syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[(YYYY-MM-DD|YYYYMMDD)[T|t| ]]((HH:MM:SS[.m...]]])|(HHMMSS[.m...]]]))[Z]
+now
+</pre></td></tr></table>
+
+<p>If the value is &quot;now&quot; it takes the current time.
+</p>
+<p>Time is local time unless Z is appended, in which case it is
+interpreted as UTC.
+If the year-month-day part is not specified it takes the current
+year-month-day.
+</p>
+<p><a name="time-duration-syntax"></a>
+</p><a name="Time-duration"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-Time-duration">8.3 Time duration</a></h2>
+
+<p>There are two accepted syntaxes for expressing time duration.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">[-][<var>HH</var>:]<var>MM</var>:<var>SS</var>[.<var>m</var>...]
+</pre></td></tr></table>
+
+<p><var>HH</var> expresses the number of hours, <var>MM</var> the number of minutes
+for a maximum of 2 digits, and <var>SS</var> the number of seconds for a
+maximum of 2 digits. The <var>m</var> at the end expresses decimal value for
+<var>SS</var>.
+</p>
+<p><em>or</em>
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">[-]<var>S</var>+[.<var>m</var>...]
+</pre></td></tr></table>
+
+<p><var>S</var> expresses the number of seconds, with the optional decimal part
+<var>m</var>.
+</p>
+<p>In both expressions, the optional &lsquo;<samp>-</samp>&rsquo; indicates negative duration.
+</p>
+<a name="Examples-89"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-89">8.3.1 Examples</a></h3>
+
+<p>The following examples are all valid time duration:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>55</samp>&rsquo;</dt>
+<dd><p>55 seconds
+</p>
+</dd>
+<dt> &lsquo;<samp>12:03:45</samp>&rsquo;</dt>
+<dd><p>12 hours, 03 minutes and 45 seconds
+</p>
+</dd>
+<dt> &lsquo;<samp>23.189</samp>&rsquo;</dt>
+<dd><p>23.189 seconds
+</p></dd>
+</dl>
+
+<p><a name="video-size-syntax"></a>
+</p><a name="Video-size"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-Video-size">8.4 Video size</a></h2>
+<p>Specify the size of the sourced video, it may be a string of the form
+<var>width</var>x<var>height</var>, or the name of a size abbreviation.
+</p>
+<p>The following abbreviations are recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>ntsc</samp>&rsquo;</dt>
+<dd><p>720x480
+</p></dd>
+<dt> &lsquo;<samp>pal</samp>&rsquo;</dt>
+<dd><p>720x576
+</p></dd>
+<dt> &lsquo;<samp>qntsc</samp>&rsquo;</dt>
+<dd><p>352x240
+</p></dd>
+<dt> &lsquo;<samp>qpal</samp>&rsquo;</dt>
+<dd><p>352x288
+</p></dd>
+<dt> &lsquo;<samp>sntsc</samp>&rsquo;</dt>
+<dd><p>640x480
+</p></dd>
+<dt> &lsquo;<samp>spal</samp>&rsquo;</dt>
+<dd><p>768x576
+</p></dd>
+<dt> &lsquo;<samp>film</samp>&rsquo;</dt>
+<dd><p>352x240
+</p></dd>
+<dt> &lsquo;<samp>ntsc-film</samp>&rsquo;</dt>
+<dd><p>352x240
+</p></dd>
+<dt> &lsquo;<samp>sqcif</samp>&rsquo;</dt>
+<dd><p>128x96
+</p></dd>
+<dt> &lsquo;<samp>qcif</samp>&rsquo;</dt>
+<dd><p>176x144
+</p></dd>
+<dt> &lsquo;<samp>cif</samp>&rsquo;</dt>
+<dd><p>352x288
+</p></dd>
+<dt> &lsquo;<samp>4cif</samp>&rsquo;</dt>
+<dd><p>704x576
+</p></dd>
+<dt> &lsquo;<samp>16cif</samp>&rsquo;</dt>
+<dd><p>1408x1152
+</p></dd>
+<dt> &lsquo;<samp>qqvga</samp>&rsquo;</dt>
+<dd><p>160x120
+</p></dd>
+<dt> &lsquo;<samp>qvga</samp>&rsquo;</dt>
+<dd><p>320x240
+</p></dd>
+<dt> &lsquo;<samp>vga</samp>&rsquo;</dt>
+<dd><p>640x480
+</p></dd>
+<dt> &lsquo;<samp>svga</samp>&rsquo;</dt>
+<dd><p>800x600
+</p></dd>
+<dt> &lsquo;<samp>xga</samp>&rsquo;</dt>
+<dd><p>1024x768
+</p></dd>
+<dt> &lsquo;<samp>uxga</samp>&rsquo;</dt>
+<dd><p>1600x1200
+</p></dd>
+<dt> &lsquo;<samp>qxga</samp>&rsquo;</dt>
+<dd><p>2048x1536
+</p></dd>
+<dt> &lsquo;<samp>sxga</samp>&rsquo;</dt>
+<dd><p>1280x1024
+</p></dd>
+<dt> &lsquo;<samp>qsxga</samp>&rsquo;</dt>
+<dd><p>2560x2048
+</p></dd>
+<dt> &lsquo;<samp>hsxga</samp>&rsquo;</dt>
+<dd><p>5120x4096
+</p></dd>
+<dt> &lsquo;<samp>wvga</samp>&rsquo;</dt>
+<dd><p>852x480
+</p></dd>
+<dt> &lsquo;<samp>wxga</samp>&rsquo;</dt>
+<dd><p>1366x768
+</p></dd>
+<dt> &lsquo;<samp>wsxga</samp>&rsquo;</dt>
+<dd><p>1600x1024
+</p></dd>
+<dt> &lsquo;<samp>wuxga</samp>&rsquo;</dt>
+<dd><p>1920x1200
+</p></dd>
+<dt> &lsquo;<samp>woxga</samp>&rsquo;</dt>
+<dd><p>2560x1600
+</p></dd>
+<dt> &lsquo;<samp>wqsxga</samp>&rsquo;</dt>
+<dd><p>3200x2048
+</p></dd>
+<dt> &lsquo;<samp>wquxga</samp>&rsquo;</dt>
+<dd><p>3840x2400
+</p></dd>
+<dt> &lsquo;<samp>whsxga</samp>&rsquo;</dt>
+<dd><p>6400x4096
+</p></dd>
+<dt> &lsquo;<samp>whuxga</samp>&rsquo;</dt>
+<dd><p>7680x4800
+</p></dd>
+<dt> &lsquo;<samp>cga</samp>&rsquo;</dt>
+<dd><p>320x200
+</p></dd>
+<dt> &lsquo;<samp>ega</samp>&rsquo;</dt>
+<dd><p>640x350
+</p></dd>
+<dt> &lsquo;<samp>hd480</samp>&rsquo;</dt>
+<dd><p>852x480
+</p></dd>
+<dt> &lsquo;<samp>hd720</samp>&rsquo;</dt>
+<dd><p>1280x720
+</p></dd>
+<dt> &lsquo;<samp>hd1080</samp>&rsquo;</dt>
+<dd><p>1920x1080
+</p></dd>
+<dt> &lsquo;<samp>2k</samp>&rsquo;</dt>
+<dd><p>2048x1080
+</p></dd>
+<dt> &lsquo;<samp>2kflat</samp>&rsquo;</dt>
+<dd><p>1998x1080
+</p></dd>
+<dt> &lsquo;<samp>2kscope</samp>&rsquo;</dt>
+<dd><p>2048x858
+</p></dd>
+<dt> &lsquo;<samp>4k</samp>&rsquo;</dt>
+<dd><p>4096x2160
+</p></dd>
+<dt> &lsquo;<samp>4kflat</samp>&rsquo;</dt>
+<dd><p>3996x2160
+</p></dd>
+<dt> &lsquo;<samp>4kscope</samp>&rsquo;</dt>
+<dd><p>4096x1716
+</p></dd>
+<dt> &lsquo;<samp>nhd</samp>&rsquo;</dt>
+<dd><p>640x360
+</p></dd>
+<dt> &lsquo;<samp>hqvga</samp>&rsquo;</dt>
+<dd><p>240x160
+</p></dd>
+<dt> &lsquo;<samp>wqvga</samp>&rsquo;</dt>
+<dd><p>400x240
+</p></dd>
+<dt> &lsquo;<samp>fwqvga</samp>&rsquo;</dt>
+<dd><p>432x240
+</p></dd>
+<dt> &lsquo;<samp>hvga</samp>&rsquo;</dt>
+<dd><p>480x320
+</p></dd>
+<dt> &lsquo;<samp>qhd</samp>&rsquo;</dt>
+<dd><p>960x540
+</p></dd>
+</dl>
+
+<p><a name="video-rate-syntax"></a>
+</p><a name="Video-rate"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-Video-rate">8.5 Video rate</a></h2>
+
+<p>Specify the frame rate of a video, expressed as the number of frames
+generated per second. It has to be a string in the format
+<var>frame_rate_num</var>/<var>frame_rate_den</var>, an integer number, a float
+number or a valid video frame rate abbreviation.
+</p>
+<p>The following abbreviations are recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>ntsc</samp>&rsquo;</dt>
+<dd><p>30000/1001
+</p></dd>
+<dt> &lsquo;<samp>pal</samp>&rsquo;</dt>
+<dd><p>25/1
+</p></dd>
+<dt> &lsquo;<samp>qntsc</samp>&rsquo;</dt>
+<dd><p>30000/1001
+</p></dd>
+<dt> &lsquo;<samp>qpal</samp>&rsquo;</dt>
+<dd><p>25/1
+</p></dd>
+<dt> &lsquo;<samp>sntsc</samp>&rsquo;</dt>
+<dd><p>30000/1001
+</p></dd>
+<dt> &lsquo;<samp>spal</samp>&rsquo;</dt>
+<dd><p>25/1
+</p></dd>
+<dt> &lsquo;<samp>film</samp>&rsquo;</dt>
+<dd><p>24/1
+</p></dd>
+<dt> &lsquo;<samp>ntsc-film</samp>&rsquo;</dt>
+<dd><p>24000/1001
+</p></dd>
+</dl>
+
+<p><a name="ratio-syntax"></a>
+</p><a name="Ratio"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-Ratio">8.6 Ratio</a></h2>
+
+<p>A ratio can be expressed as an expression, or in the form
+<var>numerator</var>:<var>denominator</var>.
+</p>
+<p>Note that a ratio with infinite (1/0) or negative value is
+considered valid, so you should check on the returned value if you
+want to exclude those values.
+</p>
+<p>The undefined value can be expressed using the &quot;0:0&quot; string.
+</p>
+<p><a name="color-syntax"></a>
+</p><a name="Color"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-Color">8.7 Color</a></h2>
+
+<p>It can be the name of a color as defined below (case insensitive match) or a
+<code>[0x|#]RRGGBB[AA]</code> sequence, possibly followed by @ and a string
+representing the alpha component.
+</p>
+<p>The alpha component may be a string composed by &quot;0x&quot; followed by an
+hexadecimal number or a decimal number between 0.0 and 1.0, which
+represents the opacity value (&lsquo;<samp>0x00</samp>&rsquo; or &lsquo;<samp>0.0</samp>&rsquo; means completely
+transparent, &lsquo;<samp>0xff</samp>&rsquo; or &lsquo;<samp>1.0</samp>&rsquo; completely opaque). If the alpha
+component is not specified then &lsquo;<samp>0xff</samp>&rsquo; is assumed.
+</p>
+<p>The string &lsquo;<samp>random</samp>&rsquo; will result in a random color.
+</p>
+<p>The following names of colors are recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>AliceBlue</samp>&rsquo;</dt>
+<dd><p>0xF0F8FF
+</p></dd>
+<dt> &lsquo;<samp>AntiqueWhite</samp>&rsquo;</dt>
+<dd><p>0xFAEBD7
+</p></dd>
+<dt> &lsquo;<samp>Aqua</samp>&rsquo;</dt>
+<dd><p>0x00FFFF
+</p></dd>
+<dt> &lsquo;<samp>Aquamarine</samp>&rsquo;</dt>
+<dd><p>0x7FFFD4
+</p></dd>
+<dt> &lsquo;<samp>Azure</samp>&rsquo;</dt>
+<dd><p>0xF0FFFF
+</p></dd>
+<dt> &lsquo;<samp>Beige</samp>&rsquo;</dt>
+<dd><p>0xF5F5DC
+</p></dd>
+<dt> &lsquo;<samp>Bisque</samp>&rsquo;</dt>
+<dd><p>0xFFE4C4
+</p></dd>
+<dt> &lsquo;<samp>Black</samp>&rsquo;</dt>
+<dd><p>0x000000
+</p></dd>
+<dt> &lsquo;<samp>BlanchedAlmond</samp>&rsquo;</dt>
+<dd><p>0xFFEBCD
+</p></dd>
+<dt> &lsquo;<samp>Blue</samp>&rsquo;</dt>
+<dd><p>0x0000FF
+</p></dd>
+<dt> &lsquo;<samp>BlueViolet</samp>&rsquo;</dt>
+<dd><p>0x8A2BE2
+</p></dd>
+<dt> &lsquo;<samp>Brown</samp>&rsquo;</dt>
+<dd><p>0xA52A2A
+</p></dd>
+<dt> &lsquo;<samp>BurlyWood</samp>&rsquo;</dt>
+<dd><p>0xDEB887
+</p></dd>
+<dt> &lsquo;<samp>CadetBlue</samp>&rsquo;</dt>
+<dd><p>0x5F9EA0
+</p></dd>
+<dt> &lsquo;<samp>Chartreuse</samp>&rsquo;</dt>
+<dd><p>0x7FFF00
+</p></dd>
+<dt> &lsquo;<samp>Chocolate</samp>&rsquo;</dt>
+<dd><p>0xD2691E
+</p></dd>
+<dt> &lsquo;<samp>Coral</samp>&rsquo;</dt>
+<dd><p>0xFF7F50
+</p></dd>
+<dt> &lsquo;<samp>CornflowerBlue</samp>&rsquo;</dt>
+<dd><p>0x6495ED
+</p></dd>
+<dt> &lsquo;<samp>Cornsilk</samp>&rsquo;</dt>
+<dd><p>0xFFF8DC
+</p></dd>
+<dt> &lsquo;<samp>Crimson</samp>&rsquo;</dt>
+<dd><p>0xDC143C
+</p></dd>
+<dt> &lsquo;<samp>Cyan</samp>&rsquo;</dt>
+<dd><p>0x00FFFF
+</p></dd>
+<dt> &lsquo;<samp>DarkBlue</samp>&rsquo;</dt>
+<dd><p>0x00008B
+</p></dd>
+<dt> &lsquo;<samp>DarkCyan</samp>&rsquo;</dt>
+<dd><p>0x008B8B
+</p></dd>
+<dt> &lsquo;<samp>DarkGoldenRod</samp>&rsquo;</dt>
+<dd><p>0xB8860B
+</p></dd>
+<dt> &lsquo;<samp>DarkGray</samp>&rsquo;</dt>
+<dd><p>0xA9A9A9
+</p></dd>
+<dt> &lsquo;<samp>DarkGreen</samp>&rsquo;</dt>
+<dd><p>0x006400
+</p></dd>
+<dt> &lsquo;<samp>DarkKhaki</samp>&rsquo;</dt>
+<dd><p>0xBDB76B
+</p></dd>
+<dt> &lsquo;<samp>DarkMagenta</samp>&rsquo;</dt>
+<dd><p>0x8B008B
+</p></dd>
+<dt> &lsquo;<samp>DarkOliveGreen</samp>&rsquo;</dt>
+<dd><p>0x556B2F
+</p></dd>
+<dt> &lsquo;<samp>Darkorange</samp>&rsquo;</dt>
+<dd><p>0xFF8C00
+</p></dd>
+<dt> &lsquo;<samp>DarkOrchid</samp>&rsquo;</dt>
+<dd><p>0x9932CC
+</p></dd>
+<dt> &lsquo;<samp>DarkRed</samp>&rsquo;</dt>
+<dd><p>0x8B0000
+</p></dd>
+<dt> &lsquo;<samp>DarkSalmon</samp>&rsquo;</dt>
+<dd><p>0xE9967A
+</p></dd>
+<dt> &lsquo;<samp>DarkSeaGreen</samp>&rsquo;</dt>
+<dd><p>0x8FBC8F
+</p></dd>
+<dt> &lsquo;<samp>DarkSlateBlue</samp>&rsquo;</dt>
+<dd><p>0x483D8B
+</p></dd>
+<dt> &lsquo;<samp>DarkSlateGray</samp>&rsquo;</dt>
+<dd><p>0x2F4F4F
+</p></dd>
+<dt> &lsquo;<samp>DarkTurquoise</samp>&rsquo;</dt>
+<dd><p>0x00CED1
+</p></dd>
+<dt> &lsquo;<samp>DarkViolet</samp>&rsquo;</dt>
+<dd><p>0x9400D3
+</p></dd>
+<dt> &lsquo;<samp>DeepPink</samp>&rsquo;</dt>
+<dd><p>0xFF1493
+</p></dd>
+<dt> &lsquo;<samp>DeepSkyBlue</samp>&rsquo;</dt>
+<dd><p>0x00BFFF
+</p></dd>
+<dt> &lsquo;<samp>DimGray</samp>&rsquo;</dt>
+<dd><p>0x696969
+</p></dd>
+<dt> &lsquo;<samp>DodgerBlue</samp>&rsquo;</dt>
+<dd><p>0x1E90FF
+</p></dd>
+<dt> &lsquo;<samp>FireBrick</samp>&rsquo;</dt>
+<dd><p>0xB22222
+</p></dd>
+<dt> &lsquo;<samp>FloralWhite</samp>&rsquo;</dt>
+<dd><p>0xFFFAF0
+</p></dd>
+<dt> &lsquo;<samp>ForestGreen</samp>&rsquo;</dt>
+<dd><p>0x228B22
+</p></dd>
+<dt> &lsquo;<samp>Fuchsia</samp>&rsquo;</dt>
+<dd><p>0xFF00FF
+</p></dd>
+<dt> &lsquo;<samp>Gainsboro</samp>&rsquo;</dt>
+<dd><p>0xDCDCDC
+</p></dd>
+<dt> &lsquo;<samp>GhostWhite</samp>&rsquo;</dt>
+<dd><p>0xF8F8FF
+</p></dd>
+<dt> &lsquo;<samp>Gold</samp>&rsquo;</dt>
+<dd><p>0xFFD700
+</p></dd>
+<dt> &lsquo;<samp>GoldenRod</samp>&rsquo;</dt>
+<dd><p>0xDAA520
+</p></dd>
+<dt> &lsquo;<samp>Gray</samp>&rsquo;</dt>
+<dd><p>0x808080
+</p></dd>
+<dt> &lsquo;<samp>Green</samp>&rsquo;</dt>
+<dd><p>0x008000
+</p></dd>
+<dt> &lsquo;<samp>GreenYellow</samp>&rsquo;</dt>
+<dd><p>0xADFF2F
+</p></dd>
+<dt> &lsquo;<samp>HoneyDew</samp>&rsquo;</dt>
+<dd><p>0xF0FFF0
+</p></dd>
+<dt> &lsquo;<samp>HotPink</samp>&rsquo;</dt>
+<dd><p>0xFF69B4
+</p></dd>
+<dt> &lsquo;<samp>IndianRed</samp>&rsquo;</dt>
+<dd><p>0xCD5C5C
+</p></dd>
+<dt> &lsquo;<samp>Indigo</samp>&rsquo;</dt>
+<dd><p>0x4B0082
+</p></dd>
+<dt> &lsquo;<samp>Ivory</samp>&rsquo;</dt>
+<dd><p>0xFFFFF0
+</p></dd>
+<dt> &lsquo;<samp>Khaki</samp>&rsquo;</dt>
+<dd><p>0xF0E68C
+</p></dd>
+<dt> &lsquo;<samp>Lavender</samp>&rsquo;</dt>
+<dd><p>0xE6E6FA
+</p></dd>
+<dt> &lsquo;<samp>LavenderBlush</samp>&rsquo;</dt>
+<dd><p>0xFFF0F5
+</p></dd>
+<dt> &lsquo;<samp>LawnGreen</samp>&rsquo;</dt>
+<dd><p>0x7CFC00
+</p></dd>
+<dt> &lsquo;<samp>LemonChiffon</samp>&rsquo;</dt>
+<dd><p>0xFFFACD
+</p></dd>
+<dt> &lsquo;<samp>LightBlue</samp>&rsquo;</dt>
+<dd><p>0xADD8E6
+</p></dd>
+<dt> &lsquo;<samp>LightCoral</samp>&rsquo;</dt>
+<dd><p>0xF08080
+</p></dd>
+<dt> &lsquo;<samp>LightCyan</samp>&rsquo;</dt>
+<dd><p>0xE0FFFF
+</p></dd>
+<dt> &lsquo;<samp>LightGoldenRodYellow</samp>&rsquo;</dt>
+<dd><p>0xFAFAD2
+</p></dd>
+<dt> &lsquo;<samp>LightGreen</samp>&rsquo;</dt>
+<dd><p>0x90EE90
+</p></dd>
+<dt> &lsquo;<samp>LightGrey</samp>&rsquo;</dt>
+<dd><p>0xD3D3D3
+</p></dd>
+<dt> &lsquo;<samp>LightPink</samp>&rsquo;</dt>
+<dd><p>0xFFB6C1
+</p></dd>
+<dt> &lsquo;<samp>LightSalmon</samp>&rsquo;</dt>
+<dd><p>0xFFA07A
+</p></dd>
+<dt> &lsquo;<samp>LightSeaGreen</samp>&rsquo;</dt>
+<dd><p>0x20B2AA
+</p></dd>
+<dt> &lsquo;<samp>LightSkyBlue</samp>&rsquo;</dt>
+<dd><p>0x87CEFA
+</p></dd>
+<dt> &lsquo;<samp>LightSlateGray</samp>&rsquo;</dt>
+<dd><p>0x778899
+</p></dd>
+<dt> &lsquo;<samp>LightSteelBlue</samp>&rsquo;</dt>
+<dd><p>0xB0C4DE
+</p></dd>
+<dt> &lsquo;<samp>LightYellow</samp>&rsquo;</dt>
+<dd><p>0xFFFFE0
+</p></dd>
+<dt> &lsquo;<samp>Lime</samp>&rsquo;</dt>
+<dd><p>0x00FF00
+</p></dd>
+<dt> &lsquo;<samp>LimeGreen</samp>&rsquo;</dt>
+<dd><p>0x32CD32
+</p></dd>
+<dt> &lsquo;<samp>Linen</samp>&rsquo;</dt>
+<dd><p>0xFAF0E6
+</p></dd>
+<dt> &lsquo;<samp>Magenta</samp>&rsquo;</dt>
+<dd><p>0xFF00FF
+</p></dd>
+<dt> &lsquo;<samp>Maroon</samp>&rsquo;</dt>
+<dd><p>0x800000
+</p></dd>
+<dt> &lsquo;<samp>MediumAquaMarine</samp>&rsquo;</dt>
+<dd><p>0x66CDAA
+</p></dd>
+<dt> &lsquo;<samp>MediumBlue</samp>&rsquo;</dt>
+<dd><p>0x0000CD
+</p></dd>
+<dt> &lsquo;<samp>MediumOrchid</samp>&rsquo;</dt>
+<dd><p>0xBA55D3
+</p></dd>
+<dt> &lsquo;<samp>MediumPurple</samp>&rsquo;</dt>
+<dd><p>0x9370D8
+</p></dd>
+<dt> &lsquo;<samp>MediumSeaGreen</samp>&rsquo;</dt>
+<dd><p>0x3CB371
+</p></dd>
+<dt> &lsquo;<samp>MediumSlateBlue</samp>&rsquo;</dt>
+<dd><p>0x7B68EE
+</p></dd>
+<dt> &lsquo;<samp>MediumSpringGreen</samp>&rsquo;</dt>
+<dd><p>0x00FA9A
+</p></dd>
+<dt> &lsquo;<samp>MediumTurquoise</samp>&rsquo;</dt>
+<dd><p>0x48D1CC
+</p></dd>
+<dt> &lsquo;<samp>MediumVioletRed</samp>&rsquo;</dt>
+<dd><p>0xC71585
+</p></dd>
+<dt> &lsquo;<samp>MidnightBlue</samp>&rsquo;</dt>
+<dd><p>0x191970
+</p></dd>
+<dt> &lsquo;<samp>MintCream</samp>&rsquo;</dt>
+<dd><p>0xF5FFFA
+</p></dd>
+<dt> &lsquo;<samp>MistyRose</samp>&rsquo;</dt>
+<dd><p>0xFFE4E1
+</p></dd>
+<dt> &lsquo;<samp>Moccasin</samp>&rsquo;</dt>
+<dd><p>0xFFE4B5
+</p></dd>
+<dt> &lsquo;<samp>NavajoWhite</samp>&rsquo;</dt>
+<dd><p>0xFFDEAD
+</p></dd>
+<dt> &lsquo;<samp>Navy</samp>&rsquo;</dt>
+<dd><p>0x000080
+</p></dd>
+<dt> &lsquo;<samp>OldLace</samp>&rsquo;</dt>
+<dd><p>0xFDF5E6
+</p></dd>
+<dt> &lsquo;<samp>Olive</samp>&rsquo;</dt>
+<dd><p>0x808000
+</p></dd>
+<dt> &lsquo;<samp>OliveDrab</samp>&rsquo;</dt>
+<dd><p>0x6B8E23
+</p></dd>
+<dt> &lsquo;<samp>Orange</samp>&rsquo;</dt>
+<dd><p>0xFFA500
+</p></dd>
+<dt> &lsquo;<samp>OrangeRed</samp>&rsquo;</dt>
+<dd><p>0xFF4500
+</p></dd>
+<dt> &lsquo;<samp>Orchid</samp>&rsquo;</dt>
+<dd><p>0xDA70D6
+</p></dd>
+<dt> &lsquo;<samp>PaleGoldenRod</samp>&rsquo;</dt>
+<dd><p>0xEEE8AA
+</p></dd>
+<dt> &lsquo;<samp>PaleGreen</samp>&rsquo;</dt>
+<dd><p>0x98FB98
+</p></dd>
+<dt> &lsquo;<samp>PaleTurquoise</samp>&rsquo;</dt>
+<dd><p>0xAFEEEE
+</p></dd>
+<dt> &lsquo;<samp>PaleVioletRed</samp>&rsquo;</dt>
+<dd><p>0xD87093
+</p></dd>
+<dt> &lsquo;<samp>PapayaWhip</samp>&rsquo;</dt>
+<dd><p>0xFFEFD5
+</p></dd>
+<dt> &lsquo;<samp>PeachPuff</samp>&rsquo;</dt>
+<dd><p>0xFFDAB9
+</p></dd>
+<dt> &lsquo;<samp>Peru</samp>&rsquo;</dt>
+<dd><p>0xCD853F
+</p></dd>
+<dt> &lsquo;<samp>Pink</samp>&rsquo;</dt>
+<dd><p>0xFFC0CB
+</p></dd>
+<dt> &lsquo;<samp>Plum</samp>&rsquo;</dt>
+<dd><p>0xDDA0DD
+</p></dd>
+<dt> &lsquo;<samp>PowderBlue</samp>&rsquo;</dt>
+<dd><p>0xB0E0E6
+</p></dd>
+<dt> &lsquo;<samp>Purple</samp>&rsquo;</dt>
+<dd><p>0x800080
+</p></dd>
+<dt> &lsquo;<samp>Red</samp>&rsquo;</dt>
+<dd><p>0xFF0000
+</p></dd>
+<dt> &lsquo;<samp>RosyBrown</samp>&rsquo;</dt>
+<dd><p>0xBC8F8F
+</p></dd>
+<dt> &lsquo;<samp>RoyalBlue</samp>&rsquo;</dt>
+<dd><p>0x4169E1
+</p></dd>
+<dt> &lsquo;<samp>SaddleBrown</samp>&rsquo;</dt>
+<dd><p>0x8B4513
+</p></dd>
+<dt> &lsquo;<samp>Salmon</samp>&rsquo;</dt>
+<dd><p>0xFA8072
+</p></dd>
+<dt> &lsquo;<samp>SandyBrown</samp>&rsquo;</dt>
+<dd><p>0xF4A460
+</p></dd>
+<dt> &lsquo;<samp>SeaGreen</samp>&rsquo;</dt>
+<dd><p>0x2E8B57
+</p></dd>
+<dt> &lsquo;<samp>SeaShell</samp>&rsquo;</dt>
+<dd><p>0xFFF5EE
+</p></dd>
+<dt> &lsquo;<samp>Sienna</samp>&rsquo;</dt>
+<dd><p>0xA0522D
+</p></dd>
+<dt> &lsquo;<samp>Silver</samp>&rsquo;</dt>
+<dd><p>0xC0C0C0
+</p></dd>
+<dt> &lsquo;<samp>SkyBlue</samp>&rsquo;</dt>
+<dd><p>0x87CEEB
+</p></dd>
+<dt> &lsquo;<samp>SlateBlue</samp>&rsquo;</dt>
+<dd><p>0x6A5ACD
+</p></dd>
+<dt> &lsquo;<samp>SlateGray</samp>&rsquo;</dt>
+<dd><p>0x708090
+</p></dd>
+<dt> &lsquo;<samp>Snow</samp>&rsquo;</dt>
+<dd><p>0xFFFAFA
+</p></dd>
+<dt> &lsquo;<samp>SpringGreen</samp>&rsquo;</dt>
+<dd><p>0x00FF7F
+</p></dd>
+<dt> &lsquo;<samp>SteelBlue</samp>&rsquo;</dt>
+<dd><p>0x4682B4
+</p></dd>
+<dt> &lsquo;<samp>Tan</samp>&rsquo;</dt>
+<dd><p>0xD2B48C
+</p></dd>
+<dt> &lsquo;<samp>Teal</samp>&rsquo;</dt>
+<dd><p>0x008080
+</p></dd>
+<dt> &lsquo;<samp>Thistle</samp>&rsquo;</dt>
+<dd><p>0xD8BFD8
+</p></dd>
+<dt> &lsquo;<samp>Tomato</samp>&rsquo;</dt>
+<dd><p>0xFF6347
+</p></dd>
+<dt> &lsquo;<samp>Turquoise</samp>&rsquo;</dt>
+<dd><p>0x40E0D0
+</p></dd>
+<dt> &lsquo;<samp>Violet</samp>&rsquo;</dt>
+<dd><p>0xEE82EE
+</p></dd>
+<dt> &lsquo;<samp>Wheat</samp>&rsquo;</dt>
+<dd><p>0xF5DEB3
+</p></dd>
+<dt> &lsquo;<samp>White</samp>&rsquo;</dt>
+<dd><p>0xFFFFFF
+</p></dd>
+<dt> &lsquo;<samp>WhiteSmoke</samp>&rsquo;</dt>
+<dd><p>0xF5F5F5
+</p></dd>
+<dt> &lsquo;<samp>Yellow</samp>&rsquo;</dt>
+<dd><p>0xFFFF00
+</p></dd>
+<dt> &lsquo;<samp>YellowGreen</samp>&rsquo;</dt>
+<dd><p>0x9ACD32
+</p></dd>
+</dl>
+
+<p><a name="channel-layout-syntax"></a>
+</p><a name="Channel-Layout"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-Channel-Layout">8.8 Channel Layout</a></h2>
+
+<p>A channel layout specifies the spatial disposition of the channels in
+a multi-channel audio stream. To specify a channel layout, FFmpeg
+makes use of a special syntax.
+</p>
+<p>Individual channels are identified by an id, as given by the table
+below:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>FL</samp>&rsquo;</dt>
+<dd><p>front left
+</p></dd>
+<dt> &lsquo;<samp>FR</samp>&rsquo;</dt>
+<dd><p>front right
+</p></dd>
+<dt> &lsquo;<samp>FC</samp>&rsquo;</dt>
+<dd><p>front center
+</p></dd>
+<dt> &lsquo;<samp>LFE</samp>&rsquo;</dt>
+<dd><p>low frequency
+</p></dd>
+<dt> &lsquo;<samp>BL</samp>&rsquo;</dt>
+<dd><p>back left
+</p></dd>
+<dt> &lsquo;<samp>BR</samp>&rsquo;</dt>
+<dd><p>back right
+</p></dd>
+<dt> &lsquo;<samp>FLC</samp>&rsquo;</dt>
+<dd><p>front left-of-center
+</p></dd>
+<dt> &lsquo;<samp>FRC</samp>&rsquo;</dt>
+<dd><p>front right-of-center
+</p></dd>
+<dt> &lsquo;<samp>BC</samp>&rsquo;</dt>
+<dd><p>back center
+</p></dd>
+<dt> &lsquo;<samp>SL</samp>&rsquo;</dt>
+<dd><p>side left
+</p></dd>
+<dt> &lsquo;<samp>SR</samp>&rsquo;</dt>
+<dd><p>side right
+</p></dd>
+<dt> &lsquo;<samp>TC</samp>&rsquo;</dt>
+<dd><p>top center
+</p></dd>
+<dt> &lsquo;<samp>TFL</samp>&rsquo;</dt>
+<dd><p>top front left
+</p></dd>
+<dt> &lsquo;<samp>TFC</samp>&rsquo;</dt>
+<dd><p>top front center
+</p></dd>
+<dt> &lsquo;<samp>TFR</samp>&rsquo;</dt>
+<dd><p>top front right
+</p></dd>
+<dt> &lsquo;<samp>TBL</samp>&rsquo;</dt>
+<dd><p>top back left
+</p></dd>
+<dt> &lsquo;<samp>TBC</samp>&rsquo;</dt>
+<dd><p>top back center
+</p></dd>
+<dt> &lsquo;<samp>TBR</samp>&rsquo;</dt>
+<dd><p>top back right
+</p></dd>
+<dt> &lsquo;<samp>DL</samp>&rsquo;</dt>
+<dd><p>downmix left
+</p></dd>
+<dt> &lsquo;<samp>DR</samp>&rsquo;</dt>
+<dd><p>downmix right
+</p></dd>
+<dt> &lsquo;<samp>WL</samp>&rsquo;</dt>
+<dd><p>wide left
+</p></dd>
+<dt> &lsquo;<samp>WR</samp>&rsquo;</dt>
+<dd><p>wide right
+</p></dd>
+<dt> &lsquo;<samp>SDL</samp>&rsquo;</dt>
+<dd><p>surround direct left
+</p></dd>
+<dt> &lsquo;<samp>SDR</samp>&rsquo;</dt>
+<dd><p>surround direct right
+</p></dd>
+<dt> &lsquo;<samp>LFE2</samp>&rsquo;</dt>
+<dd><p>low frequency 2
+</p></dd>
+</dl>
+
+<p>Standard channel layout compositions can be specified by using the
+following identifiers:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>mono</samp>&rsquo;</dt>
+<dd><p>FC
+</p></dd>
+<dt> &lsquo;<samp>stereo</samp>&rsquo;</dt>
+<dd><p>FL+FR
+</p></dd>
+<dt> &lsquo;<samp>2.1</samp>&rsquo;</dt>
+<dd><p>FL+FR+LFE
+</p></dd>
+<dt> &lsquo;<samp>3.0</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC
+</p></dd>
+<dt> &lsquo;<samp>3.0(back)</samp>&rsquo;</dt>
+<dd><p>FL+FR+BC
+</p></dd>
+<dt> &lsquo;<samp>4.0</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+BC
+</p></dd>
+<dt> &lsquo;<samp>quad</samp>&rsquo;</dt>
+<dd><p>FL+FR+BL+BR
+</p></dd>
+<dt> &lsquo;<samp>quad(side)</samp>&rsquo;</dt>
+<dd><p>FL+FR+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>3.1</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE
+</p></dd>
+<dt> &lsquo;<samp>5.0</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+BL+BR
+</p></dd>
+<dt> &lsquo;<samp>5.0(side)</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>4.1</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE+BC
+</p></dd>
+<dt> &lsquo;<samp>5.1</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE+BL+BR
+</p></dd>
+<dt> &lsquo;<samp>5.1(side)</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>6.0</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+BC+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>6.0(front)</samp>&rsquo;</dt>
+<dd><p>FL+FR+FLC+FRC+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>hexagonal</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+BL+BR+BC
+</p></dd>
+<dt> &lsquo;<samp>6.1</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE+BC+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>6.1</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE+BL+BR+BC
+</p></dd>
+<dt> &lsquo;<samp>6.1(front)</samp>&rsquo;</dt>
+<dd><p>FL+FR+LFE+FLC+FRC+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>7.0</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+BL+BR+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>7.0(front)</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+FLC+FRC+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>7.1</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE+BL+BR+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>7.1(wide)</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE+BL+BR+FLC+FRC
+</p></dd>
+<dt> &lsquo;<samp>7.1(wide-side)</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE+FLC+FRC+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>octagonal</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+BL+BR+BC+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>downmix</samp>&rsquo;</dt>
+<dd><p>DL+DR
+</p></dd>
+</dl>
+
+<p>A custom channel layout can be specified as a sequence of terms, separated by
+&rsquo;+&rsquo; or &rsquo;|&rsquo;. Each term can be:
+</p><ul>
+<li>
+the name of a standard channel layout (e.g. &lsquo;<samp>mono</samp>&rsquo;,
+&lsquo;<samp>stereo</samp>&rsquo;, &lsquo;<samp>4.0</samp>&rsquo;, &lsquo;<samp>quad</samp>&rsquo;, &lsquo;<samp>5.0</samp>&rsquo;, etc.)
+
+</li><li>
+the name of a single channel (e.g. &lsquo;<samp>FL</samp>&rsquo;, &lsquo;<samp>FR</samp>&rsquo;, &lsquo;<samp>FC</samp>&rsquo;, &lsquo;<samp>LFE</samp>&rsquo;, etc.)
+
+</li><li>
+a number of channels, in decimal, optionally followed by &rsquo;c&rsquo;, yielding
+the default channel layout for that number of channels (see the
+function <code>av_get_default_channel_layout</code>)
+
+</li><li>
+a channel layout mask, in hexadecimal starting with &quot;0x&quot; (see the
+<code>AV_CH_*</code> macros in &lsquo;<tt>libavutil/channel_layout.h</tt>&rsquo;.
+</li></ul>
+
+<p>Starting from libavutil version 53 the trailing character &quot;c&quot; to
+specify a number of channels will be required, while a channel layout
+mask could also be specified as a decimal number (if and only if not
+followed by &quot;c&quot;).
+</p>
+<p>See also the function <code>av_get_channel_layout</code> defined in
+&lsquo;<tt>libavutil/channel_layout.h</tt>&rsquo;.
+</p>
+<a name="Expression-Evaluation"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Expression-Evaluation">9. Expression Evaluation</a></h1>
+
+<p>When evaluating an arithmetic expression, FFmpeg uses an internal
+formula evaluator, implemented through the &lsquo;<tt>libavutil/eval.h</tt>&rsquo;
+interface.
+</p>
+<p>An expression may contain unary, binary operators, constants, and
+functions.
+</p>
+<p>Two expressions <var>expr1</var> and <var>expr2</var> can be combined to form
+another expression &quot;<var>expr1</var>;<var>expr2</var>&quot;.
+<var>expr1</var> and <var>expr2</var> are evaluated in turn, and the new
+expression evaluates to the value of <var>expr2</var>.
+</p>
+<p>The following binary operators are available: <code>+</code>, <code>-</code>,
+<code>*</code>, <code>/</code>, <code>^</code>.
+</p>
+<p>The following unary operators are available: <code>+</code>, <code>-</code>.
+</p>
+<p>The following functions are available:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>abs(x)</samp>&rsquo;</dt>
+<dd><p>Compute absolute value of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>acos(x)</samp>&rsquo;</dt>
+<dd><p>Compute arccosine of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>asin(x)</samp>&rsquo;</dt>
+<dd><p>Compute arcsine of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>atan(x)</samp>&rsquo;</dt>
+<dd><p>Compute arctangent of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>between(x, min, max)</samp>&rsquo;</dt>
+<dd><p>Return 1 if <var>x</var> is greater than or equal to <var>min</var> and lesser than or
+equal to <var>max</var>, 0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>bitand(x, y)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bitor(x, y)</samp>&rsquo;</dt>
+<dd><p>Compute bitwise and/or operation on <var>x</var> and <var>y</var>.
+</p>
+<p>The results of the evaluation of <var>x</var> and <var>y</var> are converted to
+integers before executing the bitwise operation.
+</p>
+<p>Note that both the conversion to integer and the conversion back to
+floating point can lose precision. Beware of unexpected results for
+large numbers (usually 2^53 and larger).
+</p>
+</dd>
+<dt> &lsquo;<samp>ceil(expr)</samp>&rsquo;</dt>
+<dd><p>Round the value of expression <var>expr</var> upwards to the nearest
+integer. For example, &quot;ceil(1.5)&quot; is &quot;2.0&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>cos(x)</samp>&rsquo;</dt>
+<dd><p>Compute cosine of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>cosh(x)</samp>&rsquo;</dt>
+<dd><p>Compute hyperbolic cosine of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>eq(x, y)</samp>&rsquo;</dt>
+<dd><p>Return 1 if <var>x</var> and <var>y</var> are equivalent, 0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>exp(x)</samp>&rsquo;</dt>
+<dd><p>Compute exponential of <var>x</var> (with base <code>e</code>, the Euler&rsquo;s number).
+</p>
+</dd>
+<dt> &lsquo;<samp>floor(expr)</samp>&rsquo;</dt>
+<dd><p>Round the value of expression <var>expr</var> downwards to the nearest
+integer. For example, &quot;floor(-1.5)&quot; is &quot;-2.0&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>gauss(x)</samp>&rsquo;</dt>
+<dd><p>Compute Gauss function of <var>x</var>, corresponding to
+<code>exp(-x*x/2) / sqrt(2*PI)</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>gcd(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the greatest common divisor of <var>x</var> and <var>y</var>. If both <var>x</var> and
+<var>y</var> are 0 or either or both are less than zero then behavior is undefined.
+</p>
+</dd>
+<dt> &lsquo;<samp>gt(x, y)</samp>&rsquo;</dt>
+<dd><p>Return 1 if <var>x</var> is greater than <var>y</var>, 0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>gte(x, y)</samp>&rsquo;</dt>
+<dd><p>Return 1 if <var>x</var> is greater than or equal to <var>y</var>, 0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>hypot(x, y)</samp>&rsquo;</dt>
+<dd><p>This function is similar to the C function with the same name; it returns
+&quot;sqrt(<var>x</var>*<var>x</var> + <var>y</var>*<var>y</var>)&quot;, the length of the hypotenuse of a
+right triangle with sides of length <var>x</var> and <var>y</var>, or the distance of the
+point (<var>x</var>, <var>y</var>) from the origin.
+</p>
+</dd>
+<dt> &lsquo;<samp>if(x, y)</samp>&rsquo;</dt>
+<dd><p>Evaluate <var>x</var>, and if the result is non-zero return the result of
+the evaluation of <var>y</var>, return 0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>if(x, y, z)</samp>&rsquo;</dt>
+<dd><p>Evaluate <var>x</var>, and if the result is non-zero return the evaluation
+result of <var>y</var>, otherwise the evaluation result of <var>z</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>ifnot(x, y)</samp>&rsquo;</dt>
+<dd><p>Evaluate <var>x</var>, and if the result is zero return the result of the
+evaluation of <var>y</var>, return 0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>ifnot(x, y, z)</samp>&rsquo;</dt>
+<dd><p>Evaluate <var>x</var>, and if the result is zero return the evaluation
+result of <var>y</var>, otherwise the evaluation result of <var>z</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>isinf(x)</samp>&rsquo;</dt>
+<dd><p>Return 1.0 if <var>x</var> is +/-INFINITY, 0.0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>isnan(x)</samp>&rsquo;</dt>
+<dd><p>Return 1.0 if <var>x</var> is NAN, 0.0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>ld(var)</samp>&rsquo;</dt>
+<dd><p>Allow to load the value of the internal variable with number
+<var>var</var>, which was previously stored with st(<var>var</var>, <var>expr</var>).
+The function returns the loaded value.
+</p>
+</dd>
+<dt> &lsquo;<samp>log(x)</samp>&rsquo;</dt>
+<dd><p>Compute natural logarithm of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>lt(x, y)</samp>&rsquo;</dt>
+<dd><p>Return 1 if <var>x</var> is lesser than <var>y</var>, 0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>lte(x, y)</samp>&rsquo;</dt>
+<dd><p>Return 1 if <var>x</var> is lesser than or equal to <var>y</var>, 0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>max(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the maximum between <var>x</var> and <var>y</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>min(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the maximum between <var>x</var> and <var>y</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>mod(x, y)</samp>&rsquo;</dt>
+<dd><p>Compute the remainder of division of <var>x</var> by <var>y</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>not(expr)</samp>&rsquo;</dt>
+<dd><p>Return 1.0 if <var>expr</var> is zero, 0.0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>pow(x, y)</samp>&rsquo;</dt>
+<dd><p>Compute the power of <var>x</var> elevated <var>y</var>, it is equivalent to
+&quot;(<var>x</var>)^(<var>y</var>)&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>print(t)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>print(t, l)</samp>&rsquo;</dt>
+<dd><p>Print the value of expression <var>t</var> with loglevel <var>l</var>. If
+<var>l</var> is not specified then a default log level is used.
+Returns the value of the expression printed.
+</p>
+<p>Prints t with loglevel l
+</p>
+</dd>
+<dt> &lsquo;<samp>random(x)</samp>&rsquo;</dt>
+<dd><p>Return a pseudo random value between 0.0 and 1.0. <var>x</var> is the index of the
+internal variable which will be used to save the seed/state.
+</p>
+</dd>
+<dt> &lsquo;<samp>root(expr, max)</samp>&rsquo;</dt>
+<dd><p>Find an input value for which the function represented by <var>expr</var>
+with argument <var>ld(0)</var> is 0 in the interval 0..<var>max</var>.
+</p>
+<p>The expression in <var>expr</var> must denote a continuous function or the
+result is undefined.
+</p>
+<p><var>ld(0)</var> is used to represent the function input value, which means
+that the given expression will be evaluated multiple times with
+various input values that the expression can access through
+<code>ld(0)</code>. When the expression evaluates to 0 then the
+corresponding input value will be returned.
+</p>
+</dd>
+<dt> &lsquo;<samp>sin(x)</samp>&rsquo;</dt>
+<dd><p>Compute sine of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>sinh(x)</samp>&rsquo;</dt>
+<dd><p>Compute hyperbolic sine of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>sqrt(expr)</samp>&rsquo;</dt>
+<dd><p>Compute the square root of <var>expr</var>. This is equivalent to
+&quot;(<var>expr</var>)^.5&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>squish(x)</samp>&rsquo;</dt>
+<dd><p>Compute expression <code>1/(1 + exp(4*x))</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>st(var, expr)</samp>&rsquo;</dt>
+<dd><p>Allow to store the value of the expression <var>expr</var> in an internal
+variable. <var>var</var> specifies the number of the variable where to
+store the value, and it is a value ranging from 0 to 9. The function
+returns the value stored in the internal variable.
+Note, Variables are currently not shared between expressions.
+</p>
+</dd>
+<dt> &lsquo;<samp>tan(x)</samp>&rsquo;</dt>
+<dd><p>Compute tangent of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>tanh(x)</samp>&rsquo;</dt>
+<dd><p>Compute hyperbolic tangent of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>taylor(expr, x)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>taylor(expr, x, id)</samp>&rsquo;</dt>
+<dd><p>Evaluate a Taylor series at <var>x</var>, given an expression representing
+the <code>ld(id)</code>-th derivative of a function at 0.
+</p>
+<p>When the series does not converge the result is undefined.
+</p>
+<p><var>ld(id)</var> is used to represent the derivative order in <var>expr</var>,
+which means that the given expression will be evaluated multiple times
+with various input values that the expression can access through
+<code>ld(id)</code>. If <var>id</var> is not specified then 0 is assumed.
+</p>
+<p>Note, when you have the derivatives at y instead of 0,
+<code>taylor(expr, x-y)</code> can be used.
+</p>
+</dd>
+<dt> &lsquo;<samp>time(0)</samp>&rsquo;</dt>
+<dd><p>Return the current (wallclock) time in seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>trunc(expr)</samp>&rsquo;</dt>
+<dd><p>Round the value of expression <var>expr</var> towards zero to the nearest
+integer. For example, &quot;trunc(-1.5)&quot; is &quot;-1.0&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>while(cond, expr)</samp>&rsquo;</dt>
+<dd><p>Evaluate expression <var>expr</var> while the expression <var>cond</var> is
+non-zero, and returns the value of the last <var>expr</var> evaluation, or
+NAN if <var>cond</var> was always false.
+</p></dd>
+</dl>
+
+<p>The following constants are available:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>PI</samp>&rsquo;</dt>
+<dd><p>area of the unit disc, approximately 3.14
+</p></dd>
+<dt> &lsquo;<samp>E</samp>&rsquo;</dt>
+<dd><p>exp(1) (Euler&rsquo;s number), approximately 2.718
+</p></dd>
+<dt> &lsquo;<samp>PHI</samp>&rsquo;</dt>
+<dd><p>golden ratio (1+sqrt(5))/2, approximately 1.618
+</p></dd>
+</dl>
+
+<p>Assuming that an expression is considered &quot;true&quot; if it has a non-zero
+value, note that:
+</p>
+<p><code>*</code> works like AND
+</p>
+<p><code>+</code> works like OR
+</p>
+<p>For example the construct:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">if (A AND B) then C
+</pre></td></tr></table>
+<p>is equivalent to:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">if(A*B, C)
+</pre></td></tr></table>
+
+<p>In your C code, you can extend the list of unary and binary functions,
+and define recognized constants, so that they are available for your
+expressions.
+</p>
+<p>The evaluator also recognizes the International System unit prefixes.
+If &rsquo;i&rsquo; is appended after the prefix, binary prefixes are used, which
+are based on powers of 1024 instead of powers of 1000.
+The &rsquo;B&rsquo; postfix multiplies the value by 8, and can be appended after a
+unit prefix or used alone. This allows using for example &rsquo;KB&rsquo;, &rsquo;MiB&rsquo;,
+&rsquo;G&rsquo; and &rsquo;B&rsquo; as number postfix.
+</p>
+<p>The list of available International System prefixes follows, with
+indication of the corresponding powers of 10 and of 2.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>10^-24 / 2^-80
+</p></dd>
+<dt> &lsquo;<samp>z</samp>&rsquo;</dt>
+<dd><p>10^-21 / 2^-70
+</p></dd>
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>10^-18 / 2^-60
+</p></dd>
+<dt> &lsquo;<samp>f</samp>&rsquo;</dt>
+<dd><p>10^-15 / 2^-50
+</p></dd>
+<dt> &lsquo;<samp>p</samp>&rsquo;</dt>
+<dd><p>10^-12 / 2^-40
+</p></dd>
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>10^-9 / 2^-30
+</p></dd>
+<dt> &lsquo;<samp>u</samp>&rsquo;</dt>
+<dd><p>10^-6 / 2^-20
+</p></dd>
+<dt> &lsquo;<samp>m</samp>&rsquo;</dt>
+<dd><p>10^-3 / 2^-10
+</p></dd>
+<dt> &lsquo;<samp>c</samp>&rsquo;</dt>
+<dd><p>10^-2
+</p></dd>
+<dt> &lsquo;<samp>d</samp>&rsquo;</dt>
+<dd><p>10^-1
+</p></dd>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>10^2
+</p></dd>
+<dt> &lsquo;<samp>k</samp>&rsquo;</dt>
+<dd><p>10^3 / 2^10
+</p></dd>
+<dt> &lsquo;<samp>K</samp>&rsquo;</dt>
+<dd><p>10^3 / 2^10
+</p></dd>
+<dt> &lsquo;<samp>M</samp>&rsquo;</dt>
+<dd><p>10^6 / 2^20
+</p></dd>
+<dt> &lsquo;<samp>G</samp>&rsquo;</dt>
+<dd><p>10^9 / 2^30
+</p></dd>
+<dt> &lsquo;<samp>T</samp>&rsquo;</dt>
+<dd><p>10^12 / 2^40
+</p></dd>
+<dt> &lsquo;<samp>P</samp>&rsquo;</dt>
+<dd><p>10^15 / 2^40
+</p></dd>
+<dt> &lsquo;<samp>E</samp>&rsquo;</dt>
+<dd><p>10^18 / 2^50
+</p></dd>
+<dt> &lsquo;<samp>Z</samp>&rsquo;</dt>
+<dd><p>10^21 / 2^60
+</p></dd>
+<dt> &lsquo;<samp>Y</samp>&rsquo;</dt>
+<dd><p>10^24 / 2^70
+</p></dd>
+</dl>
+
+
+<a name="OpenCL-Options"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-OpenCL-Options">10. OpenCL Options</a></h1>
+
+<p>When FFmpeg is configured with <code>--enable-opencl</code>, it is possible
+to set the options for the global OpenCL context.
+</p>
+<p>The list of supported options follows:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>build_options</samp>&rsquo;</dt>
+<dd><p>Set build options used to compile the registered kernels.
+</p>
+<p>See reference &quot;OpenCL Specification Version: 1.2 chapter 5.6.4&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>platform_idx</samp>&rsquo;</dt>
+<dd><p>Select the index of the platform to run OpenCL code.
+</p>
+<p>The specified index must be one of the indexes in the device list
+which can be obtained with <code>ffmpeg -opencl_bench</code> or <code>av_opencl_get_device_list()</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>device_idx</samp>&rsquo;</dt>
+<dd><p>Select the index of the device used to run OpenCL code.
+</p>
+<p>The specifed index must be one of the indexes in the device list which
+can be obtained with <code>ffmpeg -opencl_bench</code> or <code>av_opencl_get_device_list()</code>.
+</p>
+</dd>
+</dl>
+
+<p><a name="codec_002doptions"></a>
+</p><a name="Codec-Options"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Codec-Options">11. Codec Options</a></h1>
+
+<p>libavcodec provides some generic global options, which can be set on
+all the encoders and decoders. In addition each codec may support
+so-called private options, which are specific for a given codec.
+</p>
+<p>Sometimes, a global option may only affect a specific kind of codec,
+and may be unsensical or ignored by another, so you need to be aware
+of the meaning of the specified options. Also some options are
+meant only for decoding or encoding.
+</p>
+<p>Options may be set by specifying -<var>option</var> <var>value</var> in the
+FFmpeg tools, or by setting the value explicitly in the
+<code>AVCodecContext</code> options or using the &lsquo;<tt>libavutil/opt.h</tt>&rsquo; API
+for programmatic use.
+</p>
+<p>The list of supported options follow:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set bitrate in bits/s. Default value is 200K.
+</p>
+</dd>
+<dt> &lsquo;<samp>ab <var>integer</var> (<em>encoding,audio</em>)</samp>&rsquo;</dt>
+<dd><p>Set audio bitrate (in bits/s). Default value is 128K.
+</p>
+</dd>
+<dt> &lsquo;<samp>bt <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set video bitrate tolerance (in bits/s). In 1-pass mode, bitrate
+tolerance specifies how far ratecontrol is willing to deviate from the
+target average bitrate value. This is not related to min/max
+bitrate. Lowering tolerance too much has an adverse effect on quality.
+</p>
+</dd>
+<dt> &lsquo;<samp>flags <var>flags</var> (<em>decoding/encoding,audio,video,subtitles</em>)</samp>&rsquo;</dt>
+<dd><p>Set generic flags.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>mv4</samp>&rsquo;</dt>
+<dd><p>Use four motion vector by macroblock (mpeg4).
+</p></dd>
+<dt> &lsquo;<samp>qpel</samp>&rsquo;</dt>
+<dd><p>Use 1/4 pel motion compensation.
+</p></dd>
+<dt> &lsquo;<samp>loop</samp>&rsquo;</dt>
+<dd><p>Use loop filter.
+</p></dd>
+<dt> &lsquo;<samp>qscale</samp>&rsquo;</dt>
+<dd><p>Use fixed qscale.
+</p></dd>
+<dt> &lsquo;<samp>gmc</samp>&rsquo;</dt>
+<dd><p>Use gmc.
+</p></dd>
+<dt> &lsquo;<samp>mv0</samp>&rsquo;</dt>
+<dd><p>Always try a mb with mv=&lt;0,0&gt;.
+</p></dd>
+<dt> &lsquo;<samp>input_preserved</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>pass1</samp>&rsquo;</dt>
+<dd><p>Use internal 2pass ratecontrol in first pass mode.
+</p></dd>
+<dt> &lsquo;<samp>pass2</samp>&rsquo;</dt>
+<dd><p>Use internal 2pass ratecontrol in second pass mode.
+</p></dd>
+<dt> &lsquo;<samp>gray</samp>&rsquo;</dt>
+<dd><p>Only decode/encode grayscale.
+</p></dd>
+<dt> &lsquo;<samp>emu_edge</samp>&rsquo;</dt>
+<dd><p>Do not draw edges.
+</p></dd>
+<dt> &lsquo;<samp>psnr</samp>&rsquo;</dt>
+<dd><p>Set error[?] variables during encoding.
+</p></dd>
+<dt> &lsquo;<samp>truncated</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>naq</samp>&rsquo;</dt>
+<dd><p>Normalize adaptive quantization.
+</p></dd>
+<dt> &lsquo;<samp>ildct</samp>&rsquo;</dt>
+<dd><p>Use interlaced DCT.
+</p></dd>
+<dt> &lsquo;<samp>low_delay</samp>&rsquo;</dt>
+<dd><p>Force low delay.
+</p></dd>
+<dt> &lsquo;<samp>global_header</samp>&rsquo;</dt>
+<dd><p>Place global headers in extradata instead of every keyframe.
+</p></dd>
+<dt> &lsquo;<samp>bitexact</samp>&rsquo;</dt>
+<dd><p>Use only bitexact stuff (except (I)DCT).
+</p></dd>
+<dt> &lsquo;<samp>aic</samp>&rsquo;</dt>
+<dd><p>Apply H263 advanced intra coding / mpeg4 ac prediction.
+</p></dd>
+<dt> &lsquo;<samp>cbp</samp>&rsquo;</dt>
+<dd><p>Deprecated, use mpegvideo private options instead.
+</p></dd>
+<dt> &lsquo;<samp>qprd</samp>&rsquo;</dt>
+<dd><p>Deprecated, use mpegvideo private options instead.
+</p></dd>
+<dt> &lsquo;<samp>ilme</samp>&rsquo;</dt>
+<dd><p>Apply interlaced motion estimation.
+</p></dd>
+<dt> &lsquo;<samp>cgop</samp>&rsquo;</dt>
+<dd><p>Use closed gop.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>me_method <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set motion estimation method.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>zero motion estimation (fastest)
+</p></dd>
+<dt> &lsquo;<samp>full</samp>&rsquo;</dt>
+<dd><p>full motion estimation (slowest)
+</p></dd>
+<dt> &lsquo;<samp>epzs</samp>&rsquo;</dt>
+<dd><p>EPZS motion estimation (default)
+</p></dd>
+<dt> &lsquo;<samp>esa</samp>&rsquo;</dt>
+<dd><p>esa motion estimation (alias for full)
+</p></dd>
+<dt> &lsquo;<samp>tesa</samp>&rsquo;</dt>
+<dd><p>tesa motion estimation
+</p></dd>
+<dt> &lsquo;<samp>dia</samp>&rsquo;</dt>
+<dd><p>dia motion estimation (alias for epzs)
+</p></dd>
+<dt> &lsquo;<samp>log</samp>&rsquo;</dt>
+<dd><p>log motion estimation
+</p></dd>
+<dt> &lsquo;<samp>phods</samp>&rsquo;</dt>
+<dd><p>phods motion estimation
+</p></dd>
+<dt> &lsquo;<samp>x1</samp>&rsquo;</dt>
+<dd><p>X1 motion estimation
+</p></dd>
+<dt> &lsquo;<samp>hex</samp>&rsquo;</dt>
+<dd><p>hex motion estimation
+</p></dd>
+<dt> &lsquo;<samp>umh</samp>&rsquo;</dt>
+<dd><p>umh motion estimation
+</p></dd>
+<dt> &lsquo;<samp>iter</samp>&rsquo;</dt>
+<dd><p>iter motion estimation
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>extradata_size <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Set extradata size.
+</p>
+</dd>
+<dt> &lsquo;<samp>time_base <var>rational number</var></samp>&rsquo;</dt>
+<dd><p>Set codec time base.
+</p>
+<p>It is the fundamental unit of time (in seconds) in terms of which
+frame timestamps are represented. For fixed-fps content, timebase
+should be <code>1 / frame_rate</code> and timestamp increments should be
+identically 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>g <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set the group of picture size. Default value is 12.
+</p>
+</dd>
+<dt> &lsquo;<samp>ar <var>integer</var> (<em>decoding/encoding,audio</em>)</samp>&rsquo;</dt>
+<dd><p>Set audio sampling rate (in Hz).
+</p>
+</dd>
+<dt> &lsquo;<samp>ac <var>integer</var> (<em>decoding/encoding,audio</em>)</samp>&rsquo;</dt>
+<dd><p>Set number of audio channels.
+</p>
+</dd>
+<dt> &lsquo;<samp>cutoff <var>integer</var> (<em>encoding,audio</em>)</samp>&rsquo;</dt>
+<dd><p>Set cutoff bandwidth.
+</p>
+</dd>
+<dt> &lsquo;<samp>frame_size <var>integer</var> (<em>encoding,audio</em>)</samp>&rsquo;</dt>
+<dd><p>Set audio frame size.
+</p>
+<p>Each submitted frame except the last must contain exactly frame_size
+samples per channel. May be 0 when the codec has
+CODEC_CAP_VARIABLE_FRAME_SIZE set, in that case the frame size is not
+restricted. It is set by some decoders to indicate constant frame
+size.
+</p>
+</dd>
+<dt> &lsquo;<samp>frame_number <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Set the frame number.
+</p>
+</dd>
+<dt> &lsquo;<samp>delay <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qcomp <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set video quantizer scale compression (VBR). It is used as a constant
+in the ratecontrol equation. Recommended range for default rc_eq:
+0.0-1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>qblur <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set video quantizer scale blur (VBR).
+</p>
+</dd>
+<dt> &lsquo;<samp>qmin <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set min video quantizer scale (VBR). Must be included between -1 and
+69, default value is 2.
+</p>
+</dd>
+<dt> &lsquo;<samp>qmax <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set max video quantizer scale (VBR). Must be included between -1 and
+1024, default value is 31.
+</p>
+</dd>
+<dt> &lsquo;<samp>qdiff <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set max difference between the quantizer scale (VBR).
+</p>
+</dd>
+<dt> &lsquo;<samp>bf <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set max number of B frames between non-B-frames.
+</p>
+<p>Must be an integer between -1 and 16. 0 means that B-frames are
+disabled. If a value of -1 is used, it will choose an automatic value
+depending on the encoder.
+</p>
+<p>Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>b_qfactor <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set qp factor between P and B frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_strategy <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set ratecontrol method.
+</p>
+</dd>
+<dt> &lsquo;<samp>b_strategy <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set strategy to choose between I/P/B-frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>ps <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set RTP payload size in bytes.
+</p>
+</dd>
+<dt> &lsquo;<samp>mv_bits <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>header_bits <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>i_tex_bits <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>p_tex_bits <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>i_count <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>p_count <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>skip_count <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>misc_bits <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>frame_bits <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>codec_tag <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bug <var>flags</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Workaround not auto detected encoder bugs.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>autodetect</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>old_msmpeg4</samp>&rsquo;</dt>
+<dd><p>some old lavc generated msmpeg4v3 files (no autodetection)
+</p></dd>
+<dt> &lsquo;<samp>xvid_ilace</samp>&rsquo;</dt>
+<dd><p>Xvid interlacing bug (autodetected if fourcc==XVIX)
+</p></dd>
+<dt> &lsquo;<samp>ump4</samp>&rsquo;</dt>
+<dd><p>(autodetected if fourcc==UMP4)
+</p></dd>
+<dt> &lsquo;<samp>no_padding</samp>&rsquo;</dt>
+<dd><p>padding bug (autodetected)
+</p></dd>
+<dt> &lsquo;<samp>amv</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ac_vlc</samp>&rsquo;</dt>
+<dd><p>illegal vlc bug (autodetected per fourcc)
+</p></dd>
+<dt> &lsquo;<samp>qpel_chroma</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>std_qpel</samp>&rsquo;</dt>
+<dd><p>old standard qpel (autodetected per fourcc/version)
+</p></dd>
+<dt> &lsquo;<samp>qpel_chroma2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>direct_blocksize</samp>&rsquo;</dt>
+<dd><p>direct-qpel-blocksize bug (autodetected per fourcc/version)
+</p></dd>
+<dt> &lsquo;<samp>edge</samp>&rsquo;</dt>
+<dd><p>edge padding bug (autodetected per fourcc/version)
+</p></dd>
+<dt> &lsquo;<samp>hpel_chroma</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dc_clip</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ms</samp>&rsquo;</dt>
+<dd><p>Workaround various bugs in microsoft broken decoders.
+</p></dd>
+<dt> &lsquo;<samp>trunc</samp>&rsquo;</dt>
+<dd><p>trancated frames
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>lelim <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set single coefficient elimination threshold for luminance (negative
+values also consider DC coefficient).
+</p>
+</dd>
+<dt> &lsquo;<samp>celim <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set single coefficient elimination threshold for chrominance (negative
+values also consider dc coefficient)
+</p>
+</dd>
+<dt> &lsquo;<samp>strict <var>integer</var> (<em>decoding/encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd><p>Specify how strictly to follow the standards.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>very</samp>&rsquo;</dt>
+<dd><p>strictly conform to a older more strict version of the spec or reference software
+</p></dd>
+<dt> &lsquo;<samp>strict</samp>&rsquo;</dt>
+<dd><p>strictly conform to all the things in the spec no matter what consequences
+</p></dd>
+<dt> &lsquo;<samp>normal</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>unofficial</samp>&rsquo;</dt>
+<dd><p>allow unofficial extensions
+</p></dd>
+<dt> &lsquo;<samp>experimental</samp>&rsquo;</dt>
+<dd><p>allow non standardized experimental things, experimental
+(unfinished/work in progress/not well tested) decoders and encoders.
+Note: experimental decoders can pose a security risk, do not use this for
+decoding untrusted input.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>b_qoffset <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set QP offset between P and B frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>err_detect <var>flags</var> (<em>decoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set error detection flags.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>crccheck</samp>&rsquo;</dt>
+<dd><p>verify embedded CRCs
+</p></dd>
+<dt> &lsquo;<samp>bitstream</samp>&rsquo;</dt>
+<dd><p>detect bitstream specification deviations
+</p></dd>
+<dt> &lsquo;<samp>buffer</samp>&rsquo;</dt>
+<dd><p>detect improper bitstream length
+</p></dd>
+<dt> &lsquo;<samp>explode</samp>&rsquo;</dt>
+<dd><p>abort decoding on minor error detection
+</p></dd>
+<dt> &lsquo;<samp>careful</samp>&rsquo;</dt>
+<dd><p>consider things that violate the spec and have not been seen in the wild as errors
+</p></dd>
+<dt> &lsquo;<samp>compliant</samp>&rsquo;</dt>
+<dd><p>consider all spec non compliancies as errors
+</p></dd>
+<dt> &lsquo;<samp>aggressive</samp>&rsquo;</dt>
+<dd><p>consider things that a sane encoder should not do as an error
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>has_b_frames <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>block_align <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mpeg_quant <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Use MPEG quantizers instead of H.263.
+</p>
+</dd>
+<dt> &lsquo;<samp>qsquish <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>How to keep quantizer between qmin and qmax (0 = clip, 1 = use
+differentiable function).
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_qmod_amp <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set experimental quantizer modulation.
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_qmod_freq <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set experimental quantizer modulation.
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_override_count <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>rc_eq <var>string</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set rate control equation. When computing the expression, besides the
+standard functions defined in the section &rsquo;Expression Evaluation&rsquo;, the
+following functions are available: bits2qp(bits), qp2bits(qp). Also
+the following constants are available: iTex pTex tex mv fCode iCount
+mcVar var isI isP isB avgQP qComp avgIITex avgPITex avgPPTex avgBPTex
+avgTex.
+</p>
+</dd>
+<dt> &lsquo;<samp>maxrate <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set max bitrate tolerance (in bits/s). Requires bufsize to be set.
+</p>
+</dd>
+<dt> &lsquo;<samp>minrate <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set min bitrate tolerance (in bits/s). Most useful in setting up a CBR
+encode. It is of little use elsewise.
+</p>
+</dd>
+<dt> &lsquo;<samp>bufsize <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set ratecontrol buffer size (in bits).
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_buf_aggressivity <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Currently useless.
+</p>
+</dd>
+<dt> &lsquo;<samp>i_qfactor <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set QP factor between P and I frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>i_qoffset <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set QP offset between P and I frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_init_cplx <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set initial complexity for 1-pass encoding.
+</p>
+</dd>
+<dt> &lsquo;<samp>dct <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set DCT algorithm.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>autoselect a good one (default)
+</p></dd>
+<dt> &lsquo;<samp>fastint</samp>&rsquo;</dt>
+<dd><p>fast integer
+</p></dd>
+<dt> &lsquo;<samp>int</samp>&rsquo;</dt>
+<dd><p>accurate integer
+</p></dd>
+<dt> &lsquo;<samp>mmx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>altivec</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>faan</samp>&rsquo;</dt>
+<dd><p>floating point AAN DCT
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>lumi_mask <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Compress bright areas stronger than medium ones.
+</p>
+</dd>
+<dt> &lsquo;<samp>tcplx_mask <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set temporal complexity masking.
+</p>
+</dd>
+<dt> &lsquo;<samp>scplx_mask <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set spatial complexity masking.
+</p>
+</dd>
+<dt> &lsquo;<samp>p_mask <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set inter masking.
+</p>
+</dd>
+<dt> &lsquo;<samp>dark_mask <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Compress dark areas stronger than medium ones.
+</p>
+</dd>
+<dt> &lsquo;<samp>idct <var>integer</var> (<em>decoding/encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Select IDCT implementation.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>int</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>simple</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>simplemmx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>arm</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>altivec</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sh4</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>simplearm</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>simplearmv5te</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>simplearmv6</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>simpleneon</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>simplealpha</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ipp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>xvidmmx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>faani</samp>&rsquo;</dt>
+<dd><p>floating point AAN IDCT
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>slice_count <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ec <var>flags</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set error concealment strategy.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>guess_mvs</samp>&rsquo;</dt>
+<dd><p>iterative motion vector (MV) search (slow)
+</p></dd>
+<dt> &lsquo;<samp>deblock</samp>&rsquo;</dt>
+<dd><p>use strong deblock filter for damaged MBs
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>bits_per_coded_sample <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>pred <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set prediction method.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>left</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>plane</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>median</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>aspect <var>rational number</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set sample aspect ratio.
+</p>
+</dd>
+<dt> &lsquo;<samp>debug <var>flags</var> (<em>decoding/encoding,audio,video,subtitles</em>)</samp>&rsquo;</dt>
+<dd><p>Print specific debug info.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>pict</samp>&rsquo;</dt>
+<dd><p>picture info
+</p></dd>
+<dt> &lsquo;<samp>rc</samp>&rsquo;</dt>
+<dd><p>rate control
+</p></dd>
+<dt> &lsquo;<samp>bitstream</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mb_type</samp>&rsquo;</dt>
+<dd><p>macroblock (MB) type
+</p></dd>
+<dt> &lsquo;<samp>qp</samp>&rsquo;</dt>
+<dd><p>per-block quantization parameter (QP)
+</p></dd>
+<dt> &lsquo;<samp>mv</samp>&rsquo;</dt>
+<dd><p>motion vector
+</p></dd>
+<dt> &lsquo;<samp>dct_coeff</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>skip</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>startcode</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>er</samp>&rsquo;</dt>
+<dd><p>error recognition
+</p></dd>
+<dt> &lsquo;<samp>mmco</samp>&rsquo;</dt>
+<dd><p>memory management control operations (H.264)
+</p></dd>
+<dt> &lsquo;<samp>bugs</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vis_qp</samp>&rsquo;</dt>
+<dd><p>visualize quantization parameter (QP), lower QP are tinted greener
+</p></dd>
+<dt> &lsquo;<samp>vis_mb_type</samp>&rsquo;</dt>
+<dd><p>visualize block types
+</p></dd>
+<dt> &lsquo;<samp>buffers</samp>&rsquo;</dt>
+<dd><p>picture buffer allocations
+</p></dd>
+<dt> &lsquo;<samp>thread_ops</samp>&rsquo;</dt>
+<dd><p>threading operations
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>vismv <var>integer</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Visualize motion vectors (MVs).
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>pf</samp>&rsquo;</dt>
+<dd><p>forward predicted MVs of P-frames
+</p></dd>
+<dt> &lsquo;<samp>bf</samp>&rsquo;</dt>
+<dd><p>forward predicted MVs of B-frames
+</p></dd>
+<dt> &lsquo;<samp>bb</samp>&rsquo;</dt>
+<dd><p>backward predicted MVs of B-frames
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>cmp <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set full pel me compare function.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sad</samp>&rsquo;</dt>
+<dd><p>sum of absolute differences, fast (default)
+</p></dd>
+<dt> &lsquo;<samp>sse</samp>&rsquo;</dt>
+<dd><p>sum of squared errors
+</p></dd>
+<dt> &lsquo;<samp>satd</samp>&rsquo;</dt>
+<dd><p>sum of absolute Hadamard transformed differences
+</p></dd>
+<dt> &lsquo;<samp>dct</samp>&rsquo;</dt>
+<dd><p>sum of absolute DCT transformed differences
+</p></dd>
+<dt> &lsquo;<samp>psnr</samp>&rsquo;</dt>
+<dd><p>sum of squared quantization errors (avoid, low quality)
+</p></dd>
+<dt> &lsquo;<samp>bit</samp>&rsquo;</dt>
+<dd><p>number of bits needed for the block
+</p></dd>
+<dt> &lsquo;<samp>rd</samp>&rsquo;</dt>
+<dd><p>rate distortion optimal, slow
+</p></dd>
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>0
+</p></dd>
+<dt> &lsquo;<samp>vsad</samp>&rsquo;</dt>
+<dd><p>sum of absolute vertical differences
+</p></dd>
+<dt> &lsquo;<samp>vsse</samp>&rsquo;</dt>
+<dd><p>sum of squared vertical differences
+</p></dd>
+<dt> &lsquo;<samp>nsse</samp>&rsquo;</dt>
+<dd><p>noise preserving sum of squared differences
+</p></dd>
+<dt> &lsquo;<samp>w53</samp>&rsquo;</dt>
+<dd><p>5/3 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>w97</samp>&rsquo;</dt>
+<dd><p>9/7 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>dctmax</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>subcmp <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set sub pel me compare function.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sad</samp>&rsquo;</dt>
+<dd><p>sum of absolute differences, fast (default)
+</p></dd>
+<dt> &lsquo;<samp>sse</samp>&rsquo;</dt>
+<dd><p>sum of squared errors
+</p></dd>
+<dt> &lsquo;<samp>satd</samp>&rsquo;</dt>
+<dd><p>sum of absolute Hadamard transformed differences
+</p></dd>
+<dt> &lsquo;<samp>dct</samp>&rsquo;</dt>
+<dd><p>sum of absolute DCT transformed differences
+</p></dd>
+<dt> &lsquo;<samp>psnr</samp>&rsquo;</dt>
+<dd><p>sum of squared quantization errors (avoid, low quality)
+</p></dd>
+<dt> &lsquo;<samp>bit</samp>&rsquo;</dt>
+<dd><p>number of bits needed for the block
+</p></dd>
+<dt> &lsquo;<samp>rd</samp>&rsquo;</dt>
+<dd><p>rate distortion optimal, slow
+</p></dd>
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>0
+</p></dd>
+<dt> &lsquo;<samp>vsad</samp>&rsquo;</dt>
+<dd><p>sum of absolute vertical differences
+</p></dd>
+<dt> &lsquo;<samp>vsse</samp>&rsquo;</dt>
+<dd><p>sum of squared vertical differences
+</p></dd>
+<dt> &lsquo;<samp>nsse</samp>&rsquo;</dt>
+<dd><p>noise preserving sum of squared differences
+</p></dd>
+<dt> &lsquo;<samp>w53</samp>&rsquo;</dt>
+<dd><p>5/3 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>w97</samp>&rsquo;</dt>
+<dd><p>9/7 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>dctmax</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>mbcmp <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set macroblock compare function.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sad</samp>&rsquo;</dt>
+<dd><p>sum of absolute differences, fast (default)
+</p></dd>
+<dt> &lsquo;<samp>sse</samp>&rsquo;</dt>
+<dd><p>sum of squared errors
+</p></dd>
+<dt> &lsquo;<samp>satd</samp>&rsquo;</dt>
+<dd><p>sum of absolute Hadamard transformed differences
+</p></dd>
+<dt> &lsquo;<samp>dct</samp>&rsquo;</dt>
+<dd><p>sum of absolute DCT transformed differences
+</p></dd>
+<dt> &lsquo;<samp>psnr</samp>&rsquo;</dt>
+<dd><p>sum of squared quantization errors (avoid, low quality)
+</p></dd>
+<dt> &lsquo;<samp>bit</samp>&rsquo;</dt>
+<dd><p>number of bits needed for the block
+</p></dd>
+<dt> &lsquo;<samp>rd</samp>&rsquo;</dt>
+<dd><p>rate distortion optimal, slow
+</p></dd>
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>0
+</p></dd>
+<dt> &lsquo;<samp>vsad</samp>&rsquo;</dt>
+<dd><p>sum of absolute vertical differences
+</p></dd>
+<dt> &lsquo;<samp>vsse</samp>&rsquo;</dt>
+<dd><p>sum of squared vertical differences
+</p></dd>
+<dt> &lsquo;<samp>nsse</samp>&rsquo;</dt>
+<dd><p>noise preserving sum of squared differences
+</p></dd>
+<dt> &lsquo;<samp>w53</samp>&rsquo;</dt>
+<dd><p>5/3 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>w97</samp>&rsquo;</dt>
+<dd><p>9/7 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>dctmax</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>ildctcmp <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set interlaced dct compare function.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sad</samp>&rsquo;</dt>
+<dd><p>sum of absolute differences, fast (default)
+</p></dd>
+<dt> &lsquo;<samp>sse</samp>&rsquo;</dt>
+<dd><p>sum of squared errors
+</p></dd>
+<dt> &lsquo;<samp>satd</samp>&rsquo;</dt>
+<dd><p>sum of absolute Hadamard transformed differences
+</p></dd>
+<dt> &lsquo;<samp>dct</samp>&rsquo;</dt>
+<dd><p>sum of absolute DCT transformed differences
+</p></dd>
+<dt> &lsquo;<samp>psnr</samp>&rsquo;</dt>
+<dd><p>sum of squared quantization errors (avoid, low quality)
+</p></dd>
+<dt> &lsquo;<samp>bit</samp>&rsquo;</dt>
+<dd><p>number of bits needed for the block
+</p></dd>
+<dt> &lsquo;<samp>rd</samp>&rsquo;</dt>
+<dd><p>rate distortion optimal, slow
+</p></dd>
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>0
+</p></dd>
+<dt> &lsquo;<samp>vsad</samp>&rsquo;</dt>
+<dd><p>sum of absolute vertical differences
+</p></dd>
+<dt> &lsquo;<samp>vsse</samp>&rsquo;</dt>
+<dd><p>sum of squared vertical differences
+</p></dd>
+<dt> &lsquo;<samp>nsse</samp>&rsquo;</dt>
+<dd><p>noise preserving sum of squared differences
+</p></dd>
+<dt> &lsquo;<samp>w53</samp>&rsquo;</dt>
+<dd><p>5/3 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>w97</samp>&rsquo;</dt>
+<dd><p>9/7 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>dctmax</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>dia_size <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set diamond type &amp; size for motion estimation.
+</p>
+</dd>
+<dt> &lsquo;<samp>last_pred <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set amount of motion predictors from the previous frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>preme <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set pre motion estimation.
+</p>
+</dd>
+<dt> &lsquo;<samp>precmp <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set pre motion estimation compare function.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sad</samp>&rsquo;</dt>
+<dd><p>sum of absolute differences, fast (default)
+</p></dd>
+<dt> &lsquo;<samp>sse</samp>&rsquo;</dt>
+<dd><p>sum of squared errors
+</p></dd>
+<dt> &lsquo;<samp>satd</samp>&rsquo;</dt>
+<dd><p>sum of absolute Hadamard transformed differences
+</p></dd>
+<dt> &lsquo;<samp>dct</samp>&rsquo;</dt>
+<dd><p>sum of absolute DCT transformed differences
+</p></dd>
+<dt> &lsquo;<samp>psnr</samp>&rsquo;</dt>
+<dd><p>sum of squared quantization errors (avoid, low quality)
+</p></dd>
+<dt> &lsquo;<samp>bit</samp>&rsquo;</dt>
+<dd><p>number of bits needed for the block
+</p></dd>
+<dt> &lsquo;<samp>rd</samp>&rsquo;</dt>
+<dd><p>rate distortion optimal, slow
+</p></dd>
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>0
+</p></dd>
+<dt> &lsquo;<samp>vsad</samp>&rsquo;</dt>
+<dd><p>sum of absolute vertical differences
+</p></dd>
+<dt> &lsquo;<samp>vsse</samp>&rsquo;</dt>
+<dd><p>sum of squared vertical differences
+</p></dd>
+<dt> &lsquo;<samp>nsse</samp>&rsquo;</dt>
+<dd><p>noise preserving sum of squared differences
+</p></dd>
+<dt> &lsquo;<samp>w53</samp>&rsquo;</dt>
+<dd><p>5/3 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>w97</samp>&rsquo;</dt>
+<dd><p>9/7 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>dctmax</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>pre_dia_size <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set diamond type &amp; size for motion estimation pre-pass.
+</p>
+</dd>
+<dt> &lsquo;<samp>subq <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set sub pel motion estimation quality.
+</p>
+</dd>
+<dt> &lsquo;<samp>dtg_active_format <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>me_range <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set limit motion vectors range (1023 for DivX player).
+</p>
+</dd>
+<dt> &lsquo;<samp>ibias <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set intra quant bias.
+</p>
+</dd>
+<dt> &lsquo;<samp>pbias <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set inter quant bias.
+</p>
+</dd>
+<dt> &lsquo;<samp>color_table_id <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>global_quality <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>coder <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>vlc</samp>&rsquo;</dt>
+<dd><p>variable length coder / huffman coder
+</p></dd>
+<dt> &lsquo;<samp>ac</samp>&rsquo;</dt>
+<dd><p>arithmetic coder
+</p></dd>
+<dt> &lsquo;<samp>raw</samp>&rsquo;</dt>
+<dd><p>raw (no encoding)
+</p></dd>
+<dt> &lsquo;<samp>rle</samp>&rsquo;</dt>
+<dd><p>run-length coder
+</p></dd>
+<dt> &lsquo;<samp>deflate</samp>&rsquo;</dt>
+<dd><p>deflate-based coder
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>context <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set context model.
+</p>
+</dd>
+<dt> &lsquo;<samp>slice_flags <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>xvmc_acceleration <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mbd <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set macroblock decision algorithm (high quality mode).
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>simple</samp>&rsquo;</dt>
+<dd><p>use mbcmp (default)
+</p></dd>
+<dt> &lsquo;<samp>bits</samp>&rsquo;</dt>
+<dd><p>use fewest bits
+</p></dd>
+<dt> &lsquo;<samp>rd</samp>&rsquo;</dt>
+<dd><p>use best rate distortion
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>stream_codec_tag <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sc_threshold <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set scene change threshold.
+</p>
+</dd>
+<dt> &lsquo;<samp>lmin <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set min lagrange factor (VBR).
+</p>
+</dd>
+<dt> &lsquo;<samp>lmax <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set max lagrange factor (VBR).
+</p>
+</dd>
+<dt> &lsquo;<samp>nr <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set noise reduction.
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_init_occupancy <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set number of bits which should be loaded into the rc buffer before
+decoding starts.
+</p>
+</dd>
+<dt> &lsquo;<samp>flags2 <var>flags</var> (<em>decoding/encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>fast</samp>&rsquo;</dt>
+<dd><p>Allow non spec compliant speedup tricks.
+</p></dd>
+<dt> &lsquo;<samp>sgop</samp>&rsquo;</dt>
+<dd><p>Deprecated, use mpegvideo private options instead.
+</p></dd>
+<dt> &lsquo;<samp>noout</samp>&rsquo;</dt>
+<dd><p>Skip bitstream encoding.
+</p></dd>
+<dt> &lsquo;<samp>ignorecrop</samp>&rsquo;</dt>
+<dd><p>Ignore cropping information from sps.
+</p></dd>
+<dt> &lsquo;<samp>local_header</samp>&rsquo;</dt>
+<dd><p>Place global headers at every keyframe instead of in extradata.
+</p></dd>
+<dt> &lsquo;<samp>chunks</samp>&rsquo;</dt>
+<dd><p>Frame data might be split into multiple chunks.
+</p></dd>
+<dt> &lsquo;<samp>showall</samp>&rsquo;</dt>
+<dd><p>Show all frames before the first keyframe.
+</p></dd>
+<dt> &lsquo;<samp>skiprd</samp>&rsquo;</dt>
+<dd><p>Deprecated, use mpegvideo private options instead.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>error <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qns <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Deprecated, use mpegvideo private options instead.
+</p>
+</dd>
+<dt> &lsquo;<samp>threads <var>integer</var> (<em>decoding/encoding,video</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>detect a good number of threads
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>me_threshold <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set motion estimation threshold.
+</p>
+</dd>
+<dt> &lsquo;<samp>mb_threshold <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set macroblock threshold.
+</p>
+</dd>
+<dt> &lsquo;<samp>dc <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set intra_dc_precision.
+</p>
+</dd>
+<dt> &lsquo;<samp>nssew <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set nsse weight.
+</p>
+</dd>
+<dt> &lsquo;<samp>skip_top <var>integer</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set number of macroblock rows at the top which are skipped.
+</p>
+</dd>
+<dt> &lsquo;<samp>skip_bottom <var>integer</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set number of macroblock rows at the bottom which are skipped.
+</p>
+</dd>
+<dt> &lsquo;<samp>profile <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>unknown</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aac_main</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aac_low</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aac_ssr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aac_ltp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aac_he</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aac_he_v2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aac_ld</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aac_eld</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mpeg2_aac_low</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mpeg2_aac_he</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dts</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dts_es</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dts_96_24</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dts_hd_hra</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dts_hd_ma</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>level <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>unknown</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>lowres <var>integer</var> (<em>decoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd><p>Decode at 1= 1/2, 2=1/4, 3=1/8 resolutions.
+</p>
+</dd>
+<dt> &lsquo;<samp>skip_threshold <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set frame skip threshold.
+</p>
+</dd>
+<dt> &lsquo;<samp>skip_factor <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set frame skip factor.
+</p>
+</dd>
+<dt> &lsquo;<samp>skip_exp <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set frame skip exponent.
+</p>
+</dd>
+<dt> &lsquo;<samp>skipcmp <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set frame skip compare function.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sad</samp>&rsquo;</dt>
+<dd><p>sum of absolute differences, fast (default)
+</p></dd>
+<dt> &lsquo;<samp>sse</samp>&rsquo;</dt>
+<dd><p>sum of squared errors
+</p></dd>
+<dt> &lsquo;<samp>satd</samp>&rsquo;</dt>
+<dd><p>sum of absolute Hadamard transformed differences
+</p></dd>
+<dt> &lsquo;<samp>dct</samp>&rsquo;</dt>
+<dd><p>sum of absolute DCT transformed differences
+</p></dd>
+<dt> &lsquo;<samp>psnr</samp>&rsquo;</dt>
+<dd><p>sum of squared quantization errors (avoid, low quality)
+</p></dd>
+<dt> &lsquo;<samp>bit</samp>&rsquo;</dt>
+<dd><p>number of bits needed for the block
+</p></dd>
+<dt> &lsquo;<samp>rd</samp>&rsquo;</dt>
+<dd><p>rate distortion optimal, slow
+</p></dd>
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>0
+</p></dd>
+<dt> &lsquo;<samp>vsad</samp>&rsquo;</dt>
+<dd><p>sum of absolute vertical differences
+</p></dd>
+<dt> &lsquo;<samp>vsse</samp>&rsquo;</dt>
+<dd><p>sum of squared vertical differences
+</p></dd>
+<dt> &lsquo;<samp>nsse</samp>&rsquo;</dt>
+<dd><p>noise preserving sum of squared differences
+</p></dd>
+<dt> &lsquo;<samp>w53</samp>&rsquo;</dt>
+<dd><p>5/3 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>w97</samp>&rsquo;</dt>
+<dd><p>9/7 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>dctmax</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>border_mask <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Increase the quantizer for macroblocks close to borders.
+</p>
+</dd>
+<dt> &lsquo;<samp>mblmin <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set min macroblock lagrange factor (VBR).
+</p>
+</dd>
+<dt> &lsquo;<samp>mblmax <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set max macroblock lagrange factor (VBR).
+</p>
+</dd>
+<dt> &lsquo;<samp>mepc <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set motion estimation bitrate penalty compensation (1.0 = 256).
+</p>
+</dd>
+<dt> &lsquo;<samp>skip_loop_filter <var>integer</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>skip_idct        <var>integer</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>skip_frame       <var>integer</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Make decoder discard processing depending on the frame type selected
+by the option value.
+</p>
+<p>&lsquo;<samp>skip_loop_filter</samp>&rsquo; skips frame loop filtering, &lsquo;<samp>skip_idct</samp>&rsquo;
+skips frame IDCT/dequantization, &lsquo;<samp>skip_frame</samp>&rsquo; skips decoding.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>Discard no frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>default</samp>&rsquo;</dt>
+<dd><p>Discard useless frames like 0-sized frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>noref</samp>&rsquo;</dt>
+<dd><p>Discard all non-reference frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>bidir</samp>&rsquo;</dt>
+<dd><p>Discard all bidirectional frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>nokey</samp>&rsquo;</dt>
+<dd><p>Discard all frames excepts keyframes.
+</p>
+</dd>
+<dt> &lsquo;<samp>all</samp>&rsquo;</dt>
+<dd><p>Discard all frames.
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>default</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>bidir_refine <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Refine the two motion vectors used in bidirectional macroblocks.
+</p>
+</dd>
+<dt> &lsquo;<samp>brd_scale <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Downscale frames for dynamic B-frame decision.
+</p>
+</dd>
+<dt> &lsquo;<samp>keyint_min <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set minimum interval between IDR-frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>refs <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set reference frames to consider for motion compensation.
+</p>
+</dd>
+<dt> &lsquo;<samp>chromaoffset <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set chroma qp offset from luma.
+</p>
+</dd>
+<dt> &lsquo;<samp>trellis <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set rate-distortion optimal quantization.
+</p>
+</dd>
+<dt> &lsquo;<samp>sc_factor <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set value multiplied by qscale for each frame and added to
+scene_change_score.
+</p>
+</dd>
+<dt> &lsquo;<samp>mv0_threshold <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>b_sensitivity <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Adjust sensitivity of b_frame_strategy 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>compression_level <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>min_prediction_order <var>integer</var> (<em>encoding,audio</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>max_prediction_order <var>integer</var> (<em>encoding,audio</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>timecode_frame_start <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set GOP timecode frame start number, in non drop frame format.
+</p>
+</dd>
+<dt> &lsquo;<samp>request_channels <var>integer</var> (<em>decoding,audio</em>)</samp>&rsquo;</dt>
+<dd><p>Set desired number of audio channels.
+</p>
+</dd>
+<dt> &lsquo;<samp>bits_per_raw_sample <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>channel_layout <var>integer</var> (<em>decoding/encoding,audio</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Possible values:
+</p></dd>
+<dt> &lsquo;<samp>request_channel_layout <var>integer</var> (<em>decoding,audio</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Possible values:
+</p></dd>
+<dt> &lsquo;<samp>rc_max_vbv_use <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>rc_min_vbv_use <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ticks_per_frame <var>integer</var> (<em>decoding/encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>color_primaries <var>integer</var> (<em>decoding/encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>color_trc <var>integer</var> (<em>decoding/encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>colorspace <var>integer</var> (<em>decoding/encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>color_range <var>integer</var> (<em>decoding/encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma_sample_location <var>integer</var> (<em>decoding/encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>log_level_offset <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Set the log level offset.
+</p>
+</dd>
+<dt> &lsquo;<samp>slices <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Number of slices, used in parallelized encoding.
+</p>
+</dd>
+<dt> &lsquo;<samp>thread_type <var>flags</var> (<em>decoding/encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Select multithreading type.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>slice</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>frame</samp>&rsquo;</dt>
+</dl>
+</dd>
+<dt> &lsquo;<samp>audio_service_type <var>integer</var> (<em>encoding,audio</em>)</samp>&rsquo;</dt>
+<dd><p>Set audio service type.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>ma</samp>&rsquo;</dt>
+<dd><p>Main Audio Service
+</p></dd>
+<dt> &lsquo;<samp>ef</samp>&rsquo;</dt>
+<dd><p>Effects
+</p></dd>
+<dt> &lsquo;<samp>vi</samp>&rsquo;</dt>
+<dd><p>Visually Impaired
+</p></dd>
+<dt> &lsquo;<samp>hi</samp>&rsquo;</dt>
+<dd><p>Hearing Impaired
+</p></dd>
+<dt> &lsquo;<samp>di</samp>&rsquo;</dt>
+<dd><p>Dialogue
+</p></dd>
+<dt> &lsquo;<samp>co</samp>&rsquo;</dt>
+<dd><p>Commentary
+</p></dd>
+<dt> &lsquo;<samp>em</samp>&rsquo;</dt>
+<dd><p>Emergency
+</p></dd>
+<dt> &lsquo;<samp>vo</samp>&rsquo;</dt>
+<dd><p>Voice Over
+</p></dd>
+<dt> &lsquo;<samp>ka</samp>&rsquo;</dt>
+<dd><p>Karaoke
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>request_sample_fmt <var>sample_fmt</var> (<em>decoding,audio</em>)</samp>&rsquo;</dt>
+<dd><p>Set sample format audio decoders should prefer. Default value is
+<code>none</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>pkt_timebase <var>rational number</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sub_charenc <var>encoding</var> (<em>decoding,subtitles</em>)</samp>&rsquo;</dt>
+<dd><p>Set the input subtitles character encoding.
+</p>
+</dd>
+<dt> &lsquo;<samp>field_order  <var>field_order</var> (<em>video</em>)</samp>&rsquo;</dt>
+<dd><p>Set/override the field order of the video.
+Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>progressive</samp>&rsquo;</dt>
+<dd><p>Progressive video
+</p></dd>
+<dt> &lsquo;<samp>tt</samp>&rsquo;</dt>
+<dd><p>Interlaced video, top field coded and displayed first
+</p></dd>
+<dt> &lsquo;<samp>bb</samp>&rsquo;</dt>
+<dd><p>Interlaced video, bottom field coded and displayed first
+</p></dd>
+<dt> &lsquo;<samp>tb</samp>&rsquo;</dt>
+<dd><p>Interlaced video, top coded first, bottom displayed first
+</p></dd>
+<dt> &lsquo;<samp>bt</samp>&rsquo;</dt>
+<dd><p>Interlaced video, bottom coded first, top displayed first
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>skip_alpha <var>integer</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set to 1 to disable processing alpha (transparency). This works like the
+&lsquo;<samp>gray</samp>&rsquo; flag in the &lsquo;<samp>flags</samp>&rsquo; option which skips chroma information
+instead of alpha. Default is 0.
+</p></dd>
+</dl>
+
+
+<a name="Decoders"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Decoders">12. Decoders</a></h1>
+
+<p>Decoders are configured elements in FFmpeg which allow the decoding of
+multimedia streams.
+</p>
+<p>When you configure your FFmpeg build, all the supported native decoders
+are enabled by default. Decoders requiring an external library must be enabled
+manually via the corresponding <code>--enable-lib</code> option. You can list all
+available decoders using the configure option <code>--list-decoders</code>.
+</p>
+<p>You can disable all the decoders with the configure option
+<code>--disable-decoders</code> and selectively enable / disable single decoders
+with the options <code>--enable-decoder=<var>DECODER</var></code> /
+<code>--disable-decoder=<var>DECODER</var></code>.
+</p>
+<p>The option <code>-codecs</code> of the ff* tools will display the list of
+enabled decoders.
+</p>
+
+<a name="Video-Decoders"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Video-Decoders">13. Video Decoders</a></h1>
+
+<p>A description of some of the currently available video decoders
+follows.
+</p>
+<a name="rawvideo-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-rawvideo-1">13.1 rawvideo</a></h2>
+
+<p>Raw video decoder.
+</p>
+<p>This decoder decodes rawvideo streams.
+</p>
+<a name="Options-7"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-7">13.1.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>top <var>top_field_first</var></samp>&rsquo;</dt>
+<dd><p>Specify the assumed field type of the input video.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>-1</samp>&rsquo;</dt>
+<dd><p>the video is assumed to be progressive (default)
+</p></dd>
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>bottom-field-first is assumed
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>top-field-first is assumed
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+
+<a name="Audio-Decoders"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Audio-Decoders">14. Audio Decoders</a></h1>
+
+<a name="ffwavesynth"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-ffwavesynth">14.1 ffwavesynth</a></h2>
+
+<p>Internal wave synthetizer.
+</p>
+<p>This decoder generates wave patterns according to predefined sequences. Its
+use is purely internal and the format of the data it accepts is not publicly
+documented.
+</p>
+<a name="libcelt"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-libcelt">14.2 libcelt</a></h2>
+
+<p>libcelt decoder wrapper.
+</p>
+<p>libcelt allows libavcodec to decode the Xiph CELT ultra-low delay audio codec.
+Requires the presence of the libcelt headers and library during configuration.
+You need to explicitly configure the build with <code>--enable-libcelt</code>.
+</p>
+<a name="libgsm"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-libgsm">14.3 libgsm</a></h2>
+
+<p>libgsm decoder wrapper.
+</p>
+<p>libgsm allows libavcodec to decode the GSM full rate audio codec. Requires
+the presence of the libgsm headers and library during configuration. You need
+to explicitly configure the build with <code>--enable-libgsm</code>.
+</p>
+<p>This decoder supports both the ordinary GSM and the Microsoft variant.
+</p>
+<a name="libilbc"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-libilbc">14.4 libilbc</a></h2>
+
+<p>libilbc decoder wrapper.
+</p>
+<p>libilbc allows libavcodec to decode the Internet Low Bitrate Codec (iLBC)
+audio codec. Requires the presence of the libilbc headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libilbc</code>.
+</p>
+<a name="Options-26"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-26">14.4.1 Options</a></h3>
+
+<p>The following option is supported by the libilbc wrapper.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>enhance</samp>&rsquo;</dt>
+<dd>
+<p>Enable the enhancement of the decoded audio when set to 1. The default
+value is 0 (disabled).
+</p>
+</dd>
+</dl>
+
+<a name="libopencore_002damrnb-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-libopencore_002damrnb-1">14.5 libopencore-amrnb</a></h2>
+
+<p>libopencore-amrnb decoder wrapper.
+</p>
+<p>libopencore-amrnb allows libavcodec to decode the Adaptive Multi-Rate
+Narrowband audio codec. Using it requires the presence of the
+libopencore-amrnb headers and library during configuration. You need to
+explicitly configure the build with <code>--enable-libopencore-amrnb</code>.
+</p>
+<p>An FFmpeg native decoder for AMR-NB exists, so users can decode AMR-NB
+without this library.
+</p>
+<a name="libopencore_002damrwb"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-libopencore_002damrwb">14.6 libopencore-amrwb</a></h2>
+
+<p>libopencore-amrwb decoder wrapper.
+</p>
+<p>libopencore-amrwb allows libavcodec to decode the Adaptive Multi-Rate
+Wideband audio codec. Using it requires the presence of the
+libopencore-amrwb headers and library during configuration. You need to
+explicitly configure the build with <code>--enable-libopencore-amrwb</code>.
+</p>
+<p>An FFmpeg native decoder for AMR-WB exists, so users can decode AMR-WB
+without this library.
+</p>
+<a name="libopus-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-libopus-1">14.7 libopus</a></h2>
+
+<p>libopus decoder wrapper.
+</p>
+<p>libopus allows libavcodec to decode the Opus Interactive Audio Codec.
+Requires the presence of the libopus headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libopus</code>.
+</p>
+
+<a name="Subtitles-Decoders"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Subtitles-Decoders">15. Subtitles Decoders</a></h1>
+
+<a name="dvdsub"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-dvdsub">15.1 dvdsub</a></h2>
+
+<p>This codec decodes the bitmap subtitles used in DVDs; the same subtitles can
+also be found in VobSub file pairs and in some Matroska files.
+</p>
+<a name="Options-30"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-30">15.1.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>palette</samp>&rsquo;</dt>
+<dd><p>Specify the global palette used by the bitmaps. When stored in VobSub, the
+palette is normally specified in the index file; in Matroska, the palette is
+stored in the codec extra-data in the same format as in VobSub. In DVDs, the
+palette is stored in the IFO file, and therefore not available when reading
+from dumped VOB files.
+</p>
+<p>The format for this option is a string containing 16 24-bits hexadecimal
+numbers (without 0x prefix) separated by comas, for example <code>0d00ee,
+ee450d, 101010, eaeaea, 0ce60b, ec14ed, ebff0b, 0d617a, 7b7b7b, d1d1d1,
+7b2a0e, 0d950c, 0f007b, cf0dec, cfa80c, 7c127b</code>.
+</p></dd>
+</dl>
+
+<a name="libzvbi_002dteletext"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-libzvbi_002dteletext">15.2 libzvbi-teletext</a></h2>
+
+<p>Libzvbi allows libavcodec to decode DVB teletext pages and DVB teletext
+subtitles. Requires the presence of the libzvbi headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libzvbi</code>.
+</p>
+<a name="Options-18"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-18">15.2.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>txt_page</samp>&rsquo;</dt>
+<dd><p>List of teletext page numbers to decode. You may use the special * string to
+match all pages. Pages that do not match the specified list are dropped.
+Default value is *.
+</p></dd>
+<dt> &lsquo;<samp>txt_chop_top</samp>&rsquo;</dt>
+<dd><p>Discards the top teletext line. Default value is 1.
+</p></dd>
+<dt> &lsquo;<samp>txt_format</samp>&rsquo;</dt>
+<dd><p>Specifies the format of the decoded subtitles. The teletext decoder is capable
+of decoding the teletext pages to bitmaps or to simple text, you should use
+&quot;bitmap&quot; for teletext pages, because certain graphics and colors cannot be
+expressed in simple text. You might use &quot;text&quot; for teletext based subtitles if
+your application can handle simple text based subtitles. Default value is
+bitmap.
+</p></dd>
+<dt> &lsquo;<samp>txt_left</samp>&rsquo;</dt>
+<dd><p>X offset of generated bitmaps, default is 0.
+</p></dd>
+<dt> &lsquo;<samp>txt_top</samp>&rsquo;</dt>
+<dd><p>Y offset of generated bitmaps, default is 0.
+</p></dd>
+<dt> &lsquo;<samp>txt_chop_spaces</samp>&rsquo;</dt>
+<dd><p>Chops leading and trailing spaces and removes empty lines from the generated
+text. This option is useful for teletext based subtitles where empty spaces may
+be present at the start or at the end of the lines or empty lines may be
+present between the subtitle lines because of double-sized teletext charactes.
+Default value is 1.
+</p></dd>
+<dt> &lsquo;<samp>txt_duration</samp>&rsquo;</dt>
+<dd><p>Sets the display duration of the decoded teletext pages or subtitles in
+miliseconds. Default value is 30000 which is 30 seconds.
+</p></dd>
+<dt> &lsquo;<samp>txt_transparent</samp>&rsquo;</dt>
+<dd><p>Force transparent background of the generated teletext bitmaps. Default value
+is 0 which means an opaque (black) background.
+</p></dd>
+</dl>
+
+<a name="Encoders"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Encoders">16. Encoders</a></h1>
+
+<p>Encoders are configured elements in FFmpeg which allow the encoding of
+multimedia streams.
+</p>
+<p>When you configure your FFmpeg build, all the supported native encoders
+are enabled by default. Encoders requiring an external library must be enabled
+manually via the corresponding <code>--enable-lib</code> option. You can list all
+available encoders using the configure option <code>--list-encoders</code>.
+</p>
+<p>You can disable all the encoders with the configure option
+<code>--disable-encoders</code> and selectively enable / disable single encoders
+with the options <code>--enable-encoder=<var>ENCODER</var></code> /
+<code>--disable-encoder=<var>ENCODER</var></code>.
+</p>
+<p>The option <code>-codecs</code> of the ff* tools will display the list of
+enabled encoders.
+</p>
+
+<a name="Audio-Encoders"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Audio-Encoders">17. Audio Encoders</a></h1>
+
+<p>A description of some of the currently available audio encoders
+follows.
+</p>
+<p><a name="aacenc"></a>
+</p><a name="aac"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-aac">17.1 aac</a></h2>
+
+<p>Advanced Audio Coding (AAC) encoder.
+</p>
+<p>This encoder is an experimental FFmpeg-native AAC encoder. Currently only the
+low complexity (AAC-LC) profile is supported. To use this encoder, you must set
+&lsquo;<samp>strict</samp>&rsquo; option to &lsquo;<samp>experimental</samp>&rsquo; or lower.
+</p>
+<p>As this encoder is experimental, unexpected behavior may exist from time to
+time. For a more stable AAC encoder, see <a href="#libvo_002daacenc">libvo-aacenc</a>. However, be warned
+that it has a worse quality reported by some users.
+</p>
+<p>See also <a href="#libfdk_002daac_002denc">libfdk_aac</a> and <a href="#libfaac">libfaac</a>.
+</p>
+<a name="Options-9"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-9">17.1.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>Set bit rate in bits/s. Setting this automatically activates constant bit rate
+(CBR) mode.
+</p>
+</dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Set quality for variable bit rate (VBR) mode. This option is valid only using
+the <code>ffmpeg</code> command-line tool. For library interface users, use
+&lsquo;<samp>global_quality</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>stereo_mode</samp>&rsquo;</dt>
+<dd><p>Set stereo encoding mode. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Automatically selected by the encoder.
+</p>
+</dd>
+<dt> &lsquo;<samp>ms_off</samp>&rsquo;</dt>
+<dd><p>Disable middle/side encoding. This is the default.
+</p>
+</dd>
+<dt> &lsquo;<samp>ms_force</samp>&rsquo;</dt>
+<dd><p>Force middle/side encoding.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>aac_coder</samp>&rsquo;</dt>
+<dd><p>Set AAC encoder coding method. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>faac</samp>&rsquo;</dt>
+<dd><p>FAAC-inspired method.
+</p>
+<p>This method is a simplified reimplementation of the method used in FAAC, which
+sets thresholds proportional to the band energies, and then decreases all the
+thresholds with quantizer steps to find the appropriate quantization with
+distortion below threshold band by band.
+</p>
+<p>The quality of this method is comparable to the two loop searching method
+descibed below, but somewhat a little better and slower.
+</p>
+</dd>
+<dt> &lsquo;<samp>anmr</samp>&rsquo;</dt>
+<dd><p>Average noise to mask ratio (ANMR) trellis-based solution.
+</p>
+<p>This has a theoretic best quality out of all the coding methods, but at the
+cost of the slowest speed.
+</p>
+</dd>
+<dt> &lsquo;<samp>twoloop</samp>&rsquo;</dt>
+<dd><p>Two loop searching (TLS) method.
+</p>
+<p>This method first sets quantizers depending on band thresholds and then tries
+to find an optimal combination by adding or subtracting a specific value from
+all quantizers and adjusting some individual quantizer a little.
+</p>
+<p>This method produces similar quality with the FAAC method and is the default.
+</p>
+</dd>
+<dt> &lsquo;<samp>fast</samp>&rsquo;</dt>
+<dd><p>Constant quantizer method.
+</p>
+<p>This method sets a constant quantizer for all bands. This is the fastest of all
+the methods, yet produces the worst quality.
+</p>
+</dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="ac3-and-ac3_005ffixed"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-ac3-and-ac3_005ffixed">17.2 ac3 and ac3_fixed</a></h2>
+
+<p>AC-3 audio encoders.
+</p>
+<p>These encoders implement part of ATSC A/52:2010 and ETSI TS 102 366, as well as
+the undocumented RealAudio 3 (a.k.a. dnet).
+</p>
+<p>The <var>ac3</var> encoder uses floating-point math, while the <var>ac3_fixed</var>
+encoder only uses fixed-point integer math. This does not mean that one is
+always faster, just that one or the other may be better suited to a
+particular system. The floating-point encoder will generally produce better
+quality audio for a given bitrate. The <var>ac3_fixed</var> encoder is not the
+default codec for any of the output formats, so it must be specified explicitly
+using the option <code>-acodec ac3_fixed</code> in order to use it.
+</p>
+<a name="AC_002d3-Metadata"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-AC_002d3-Metadata">17.2.1 AC-3 Metadata</a></h3>
+
+<p>The AC-3 metadata options are used to set parameters that describe the audio,
+but in most cases do not affect the audio encoding itself. Some of the options
+do directly affect or influence the decoding and playback of the resulting
+bitstream, while others are just for informational purposes. A few of the
+options will add bits to the output stream that could otherwise be used for
+audio data, and will thus affect the quality of the output. Those will be
+indicated accordingly with a note in the option list below.
+</p>
+<p>These parameters are described in detail in several publicly-available
+documents.
+</p><ul>
+<li> <a href="http://www.atsc.org/cms/standards/a_52-2010.pdf">A/52:2010 - Digital Audio Compression (AC-3) (E-AC-3) Standard</a>
+</li><li> <a href="http://www.atsc.org/cms/standards/a_54a_with_corr_1.pdf">A/54 - Guide to the Use of the ATSC Digital Television Standard</a>
+</li><li> <a href="http://www.dolby.com/uploadedFiles/zz-_Shared_Assets/English_PDFs/Professional/18_Metadata.Guide.pdf">Dolby Metadata Guide</a>
+</li><li> <a href="http://www.dolby.com/uploadedFiles/zz-_Shared_Assets/English_PDFs/Professional/46_DDEncodingGuidelines.pdf">Dolby Digital Professional Encoding Guidelines</a>
+</li></ul>
+
+<a name="Metadata-Control-Options"></a>
+<h4 class="subsubsection"><a href="ffmpeg-all.html#toc-Metadata-Control-Options">17.2.1.1 Metadata Control Options</a></h4>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-per_frame_metadata <var>boolean</var></samp>&rsquo;</dt>
+<dd><p>Allow Per-Frame Metadata. Specifies if the encoder should check for changing
+metadata for each frame.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>The metadata values set at initialization will be used for every frame in the
+stream. (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>Metadata values can be changed before encoding each frame.
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Downmix-Levels"></a>
+<h4 class="subsubsection"><a href="ffmpeg-all.html#toc-Downmix-Levels">17.2.1.2 Downmix Levels</a></h4>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-center_mixlev <var>level</var></samp>&rsquo;</dt>
+<dd><p>Center Mix Level. The amount of gain the decoder should apply to the center
+channel when downmixing to stereo. This field will only be written to the
+bitstream if a center channel is present. The value is specified as a scale
+factor. There are 3 valid values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0.707</samp>&rsquo;</dt>
+<dd><p>Apply -3dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.595</samp>&rsquo;</dt>
+<dd><p>Apply -4.5dB gain (default)
+</p></dd>
+<dt> &lsquo;<samp>0.500</samp>&rsquo;</dt>
+<dd><p>Apply -6dB gain
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-surround_mixlev <var>level</var></samp>&rsquo;</dt>
+<dd><p>Surround Mix Level. The amount of gain the decoder should apply to the surround
+channel(s) when downmixing to stereo. This field will only be written to the
+bitstream if one or more surround channels are present. The value is specified
+as a scale factor.  There are 3 valid values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0.707</samp>&rsquo;</dt>
+<dd><p>Apply -3dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.500</samp>&rsquo;</dt>
+<dd><p>Apply -6dB gain (default)
+</p></dd>
+<dt> &lsquo;<samp>0.000</samp>&rsquo;</dt>
+<dd><p>Silence Surround Channel(s)
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Audio-Production-Information"></a>
+<h4 class="subsubsection"><a href="ffmpeg-all.html#toc-Audio-Production-Information">17.2.1.3 Audio Production Information</a></h4>
+<p>Audio Production Information is optional information describing the mixing
+environment.  Either none or both of the fields are written to the bitstream.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-mixing_level <var>number</var></samp>&rsquo;</dt>
+<dd><p>Mixing Level. Specifies peak sound pressure level (SPL) in the production
+environment when the mix was mastered. Valid values are 80 to 111, or -1 for
+unknown or not indicated. The default value is -1, but that value cannot be
+used if the Audio Production Information is written to the bitstream. Therefore,
+if the <code>room_type</code> option is not the default value, the <code>mixing_level</code>
+option must not be -1.
+</p>
+</dd>
+<dt> &lsquo;<samp>-room_type <var>type</var></samp>&rsquo;</dt>
+<dd><p>Room Type. Describes the equalization used during the final mixing session at
+the studio or on the dubbing stage. A large room is a dubbing stage with the
+industry standard X-curve equalization; a small room has flat equalization.
+This field will not be written to the bitstream if both the <code>mixing_level</code>
+option and the <code>room_type</code> option have the default values.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>notindicated</samp>&rsquo;</dt>
+<dd><p>Not Indicated (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>large</samp>&rsquo;</dt>
+<dd><p>Large Room
+</p></dd>
+<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>small</samp>&rsquo;</dt>
+<dd><p>Small Room
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Other-Metadata-Options"></a>
+<h4 class="subsubsection"><a href="ffmpeg-all.html#toc-Other-Metadata-Options">17.2.1.4 Other Metadata Options</a></h4>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-copyright <var>boolean</var></samp>&rsquo;</dt>
+<dd><p>Copyright Indicator. Specifies whether a copyright exists for this audio.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
+<dd><p>No Copyright Exists (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>on</samp>&rsquo;</dt>
+<dd><p>Copyright Exists
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-dialnorm <var>value</var></samp>&rsquo;</dt>
+<dd><p>Dialogue Normalization. Indicates how far the average dialogue level of the
+program is below digital 100% full scale (0 dBFS). This parameter determines a
+level shift during audio reproduction that sets the average volume of the
+dialogue to a preset level. The goal is to match volume level between program
+sources. A value of -31dB will result in no volume level change, relative to
+the source volume, during audio reproduction. Valid values are whole numbers in
+the range -31 to -1, with -31 being the default.
+</p>
+</dd>
+<dt> &lsquo;<samp>-dsur_mode <var>mode</var></samp>&rsquo;</dt>
+<dd><p>Dolby Surround Mode. Specifies whether the stereo signal uses Dolby Surround
+(Pro Logic). This field will only be written to the bitstream if the audio
+stream is stereo. Using this option does <b>NOT</b> mean the encoder will actually
+apply Dolby Surround processing.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>notindicated</samp>&rsquo;</dt>
+<dd><p>Not Indicated (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
+<dd><p>Not Dolby Surround Encoded
+</p></dd>
+<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>on</samp>&rsquo;</dt>
+<dd><p>Dolby Surround Encoded
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-original <var>boolean</var></samp>&rsquo;</dt>
+<dd><p>Original Bit Stream Indicator. Specifies whether this audio is from the
+original source and not a copy.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
+<dd><p>Not Original Source
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>on</samp>&rsquo;</dt>
+<dd><p>Original Source (default)
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Extended-Bitstream-Information"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Extended-Bitstream-Information">17.2.2 Extended Bitstream Information</a></h3>
+<p>The extended bitstream options are part of the Alternate Bit Stream Syntax as
+specified in Annex D of the A/52:2010 standard. It is grouped into 2 parts.
+If any one parameter in a group is specified, all values in that group will be
+written to the bitstream.  Default values are used for those that are written
+but have not been specified.  If the mixing levels are written, the decoder
+will use these values instead of the ones specified in the <code>center_mixlev</code>
+and <code>surround_mixlev</code> options if it supports the Alternate Bit Stream
+Syntax.
+</p>
+<a name="Extended-Bitstream-Information-_002d-Part-1"></a>
+<h4 class="subsubsection"><a href="ffmpeg-all.html#toc-Extended-Bitstream-Information-_002d-Part-1">17.2.2.1 Extended Bitstream Information - Part 1</a></h4>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-dmix_mode <var>mode</var></samp>&rsquo;</dt>
+<dd><p>Preferred Stereo Downmix Mode. Allows the user to select either Lt/Rt
+(Dolby Surround) or Lo/Ro (normal stereo) as the preferred stereo downmix mode.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>notindicated</samp>&rsquo;</dt>
+<dd><p>Not Indicated (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ltrt</samp>&rsquo;</dt>
+<dd><p>Lt/Rt Downmix Preferred
+</p></dd>
+<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>loro</samp>&rsquo;</dt>
+<dd><p>Lo/Ro Downmix Preferred
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-ltrt_cmixlev <var>level</var></samp>&rsquo;</dt>
+<dd><p>Lt/Rt Center Mix Level. The amount of gain the decoder should apply to the
+center channel when downmixing to stereo in Lt/Rt mode.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>1.414</samp>&rsquo;</dt>
+<dd><p>Apply +3dB gain
+</p></dd>
+<dt> &lsquo;<samp>1.189</samp>&rsquo;</dt>
+<dd><p>Apply +1.5dB gain
+</p></dd>
+<dt> &lsquo;<samp>1.000</samp>&rsquo;</dt>
+<dd><p>Apply 0dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.841</samp>&rsquo;</dt>
+<dd><p>Apply -1.5dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.707</samp>&rsquo;</dt>
+<dd><p>Apply -3.0dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.595</samp>&rsquo;</dt>
+<dd><p>Apply -4.5dB gain (default)
+</p></dd>
+<dt> &lsquo;<samp>0.500</samp>&rsquo;</dt>
+<dd><p>Apply -6.0dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.000</samp>&rsquo;</dt>
+<dd><p>Silence Center Channel
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-ltrt_surmixlev <var>level</var></samp>&rsquo;</dt>
+<dd><p>Lt/Rt Surround Mix Level. The amount of gain the decoder should apply to the
+surround channel(s) when downmixing to stereo in Lt/Rt mode.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0.841</samp>&rsquo;</dt>
+<dd><p>Apply -1.5dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.707</samp>&rsquo;</dt>
+<dd><p>Apply -3.0dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.595</samp>&rsquo;</dt>
+<dd><p>Apply -4.5dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.500</samp>&rsquo;</dt>
+<dd><p>Apply -6.0dB gain (default)
+</p></dd>
+<dt> &lsquo;<samp>0.000</samp>&rsquo;</dt>
+<dd><p>Silence Surround Channel(s)
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-loro_cmixlev <var>level</var></samp>&rsquo;</dt>
+<dd><p>Lo/Ro Center Mix Level. The amount of gain the decoder should apply to the
+center channel when downmixing to stereo in Lo/Ro mode.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>1.414</samp>&rsquo;</dt>
+<dd><p>Apply +3dB gain
+</p></dd>
+<dt> &lsquo;<samp>1.189</samp>&rsquo;</dt>
+<dd><p>Apply +1.5dB gain
+</p></dd>
+<dt> &lsquo;<samp>1.000</samp>&rsquo;</dt>
+<dd><p>Apply 0dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.841</samp>&rsquo;</dt>
+<dd><p>Apply -1.5dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.707</samp>&rsquo;</dt>
+<dd><p>Apply -3.0dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.595</samp>&rsquo;</dt>
+<dd><p>Apply -4.5dB gain (default)
+</p></dd>
+<dt> &lsquo;<samp>0.500</samp>&rsquo;</dt>
+<dd><p>Apply -6.0dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.000</samp>&rsquo;</dt>
+<dd><p>Silence Center Channel
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-loro_surmixlev <var>level</var></samp>&rsquo;</dt>
+<dd><p>Lo/Ro Surround Mix Level. The amount of gain the decoder should apply to the
+surround channel(s) when downmixing to stereo in Lo/Ro mode.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0.841</samp>&rsquo;</dt>
+<dd><p>Apply -1.5dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.707</samp>&rsquo;</dt>
+<dd><p>Apply -3.0dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.595</samp>&rsquo;</dt>
+<dd><p>Apply -4.5dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.500</samp>&rsquo;</dt>
+<dd><p>Apply -6.0dB gain (default)
+</p></dd>
+<dt> &lsquo;<samp>0.000</samp>&rsquo;</dt>
+<dd><p>Silence Surround Channel(s)
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Extended-Bitstream-Information-_002d-Part-2"></a>
+<h4 class="subsubsection"><a href="ffmpeg-all.html#toc-Extended-Bitstream-Information-_002d-Part-2">17.2.2.2 Extended Bitstream Information - Part 2</a></h4>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-dsurex_mode <var>mode</var></samp>&rsquo;</dt>
+<dd><p>Dolby Surround EX Mode. Indicates whether the stream uses Dolby Surround EX
+(7.1 matrixed to 5.1). Using this option does <b>NOT</b> mean the encoder will actually
+apply Dolby Surround EX processing.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>notindicated</samp>&rsquo;</dt>
+<dd><p>Not Indicated (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>on</samp>&rsquo;</dt>
+<dd><p>Dolby Surround EX Off
+</p></dd>
+<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
+<dd><p>Dolby Surround EX On
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-dheadphone_mode <var>mode</var></samp>&rsquo;</dt>
+<dd><p>Dolby Headphone Mode. Indicates whether the stream uses Dolby Headphone
+encoding (multi-channel matrixed to 2.0 for use with headphones). Using this
+option does <b>NOT</b> mean the encoder will actually apply Dolby Headphone
+processing.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>notindicated</samp>&rsquo;</dt>
+<dd><p>Not Indicated (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>on</samp>&rsquo;</dt>
+<dd><p>Dolby Headphone Off
+</p></dd>
+<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
+<dd><p>Dolby Headphone On
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-ad_conv_type <var>type</var></samp>&rsquo;</dt>
+<dd><p>A/D Converter Type. Indicates whether the audio has passed through HDCD A/D
+conversion.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>standard</samp>&rsquo;</dt>
+<dd><p>Standard A/D Converter (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>hdcd</samp>&rsquo;</dt>
+<dd><p>HDCD A/D Converter
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Other-AC_002d3-Encoding-Options"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Other-AC_002d3-Encoding-Options">17.2.3 Other AC-3 Encoding Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-stereo_rematrixing <var>boolean</var></samp>&rsquo;</dt>
+<dd><p>Stereo Rematrixing. Enables/Disables use of rematrixing for stereo input. This
+is an optional AC-3 feature that increases quality by selectively encoding
+the left/right channels as mid/side. This option is enabled by default, and it
+is highly recommended that it be left as enabled except for testing purposes.
+</p>
+</dd>
+</dl>
+
+<a name="Floating_002dPoint_002dOnly-AC_002d3-Encoding-Options"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Floating_002dPoint_002dOnly-AC_002d3-Encoding-Options">17.2.4 Floating-Point-Only AC-3 Encoding Options</a></h3>
+
+<p>These options are only valid for the floating-point encoder and do not exist
+for the fixed-point encoder due to the corresponding features not being
+implemented in fixed-point.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-channel_coupling <var>boolean</var></samp>&rsquo;</dt>
+<dd><p>Enables/Disables use of channel coupling, which is an optional AC-3 feature
+that increases quality by combining high frequency information from multiple
+channels into a single channel. The per-channel high frequency information is
+sent with less accuracy in both the frequency and time domains. This allows
+more bits to be used for lower frequencies while preserving enough information
+to reconstruct the high frequencies. This option is enabled by default for the
+floating-point encoder and should generally be left as enabled except for
+testing purposes or to increase encoding speed.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>-1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Selected by Encoder (default)
+</p></dd>
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
+<dd><p>Disable Channel Coupling
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>on</samp>&rsquo;</dt>
+<dd><p>Enable Channel Coupling
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-cpl_start_band <var>number</var></samp>&rsquo;</dt>
+<dd><p>Coupling Start Band. Sets the channel coupling start band, from 1 to 15. If a
+value higher than the bandwidth is used, it will be reduced to 1 less than the
+coupling end band. If <var>auto</var> is used, the start band will be determined by
+the encoder based on the bit rate, sample rate, and channel layout. This option
+has no effect if channel coupling is disabled.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>-1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Selected by Encoder (default)
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<p><a name="libfaac"></a>
+</p><a name="libfaac-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-libfaac-1">17.3 libfaac</a></h2>
+
+<p>libfaac AAC (Advanced Audio Coding) encoder wrapper.
+</p>
+<p>Requires the presence of the libfaac headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libfaac --enable-nonfree</code>.
+</p>
+<p>This encoder is considered to be of higher quality with respect to the
+<a href="#aacenc">the native experimental FFmpeg AAC encoder</a>.
+</p>
+<p>For more information see the libfaac project at
+<a href="http://www.audiocoding.com/faac.html/">http://www.audiocoding.com/faac.html/</a>.
+</p>
+<a name="Options-16"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-16">17.3.1 Options</a></h3>
+
+<p>The following shared FFmpeg codec options are recognized.
+</p>
+<p>The following options are supported by the libfaac wrapper. The
+<code>faac</code>-equivalent of the options are listed in parentheses.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b (<em>-b</em>)</samp>&rsquo;</dt>
+<dd><p>Set bit rate in bits/s for ABR (Average Bit Rate) mode. If the bit rate
+is not explicitly specified, it is automatically set to a suitable
+value depending on the selected profile. <code>faac</code> bitrate is
+expressed in kilobits/s.
+</p>
+<p>Note that libfaac does not support CBR (Constant Bit Rate) but only
+ABR (Average Bit Rate).
+</p>
+<p>If VBR mode is enabled this option is ignored.
+</p>
+</dd>
+<dt> &lsquo;<samp>ar (<em>-R</em>)</samp>&rsquo;</dt>
+<dd><p>Set audio sampling rate (in Hz).
+</p>
+</dd>
+<dt> &lsquo;<samp>ac (<em>-c</em>)</samp>&rsquo;</dt>
+<dd><p>Set the number of audio channels.
+</p>
+</dd>
+<dt> &lsquo;<samp>cutoff (<em>-C</em>)</samp>&rsquo;</dt>
+<dd><p>Set cutoff frequency. If not specified (or explicitly set to 0) it
+will use a value automatically computed by the library. Default value
+is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>profile</samp>&rsquo;</dt>
+<dd><p>Set audio profile.
+</p>
+<p>The following profiles are recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>aac_main</samp>&rsquo;</dt>
+<dd><p>Main AAC (Main)
+</p>
+</dd>
+<dt> &lsquo;<samp>aac_low</samp>&rsquo;</dt>
+<dd><p>Low Complexity AAC (LC)
+</p>
+</dd>
+<dt> &lsquo;<samp>aac_ssr</samp>&rsquo;</dt>
+<dd><p>Scalable Sample Rate (SSR)
+</p>
+</dd>
+<dt> &lsquo;<samp>aac_ltp</samp>&rsquo;</dt>
+<dd><p>Long Term Prediction (LTP)
+</p></dd>
+</dl>
+
+<p>If not specified it is set to &lsquo;<samp>aac_low</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>flags +qscale</samp>&rsquo;</dt>
+<dd><p>Set constant quality VBR (Variable Bit Rate) mode.
+</p>
+</dd>
+<dt> &lsquo;<samp>global_quality</samp>&rsquo;</dt>
+<dd><p>Set quality in VBR mode as an integer number of lambda units.
+</p>
+<p>Only relevant when VBR mode is enabled with <code>flags +qscale</code>.  The
+value is converted to QP units by dividing it by <code>FF_QP2LAMBDA</code>,
+and used to set the quality value used by libfaac. A reasonable range
+for the option value in QP units is [10-500], the higher the value the
+higher the quality.
+</p>
+</dd>
+<dt> &lsquo;<samp>q (<em>-q</em>)</samp>&rsquo;</dt>
+<dd><p>Enable VBR mode when set to a non-negative value, and set constant
+quality value as a double floating point value in QP units.
+</p>
+<p>The value sets the quality value used by libfaac. A reasonable range
+for the option value is [10-500], the higher the value the higher the
+quality.
+</p>
+<p>This option is valid only using the <code>ffmpeg</code> command-line
+tool. For library interface users, use &lsquo;<samp>global_quality</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<a name="Examples-27"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-27">17.3.2 Examples</a></h3>
+
+<ul>
+<li>
+Use <code>ffmpeg</code> to convert an audio file to ABR 128 kbps AAC in an M4A (MP4)
+container:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.wav -codec:a libfaac -b:a 128k -output.m4a
+</pre></td></tr></table>
+
+</li><li>
+Use <code>ffmpeg</code> to convert an audio file to VBR AAC, using the
+LTP AAC profile:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.wav -c:a libfaac -profile:a aac_ltp -q:a 100 output.m4a
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="libfdk_002daac_002denc"></a>
+</p><a name="libfdk_005faac"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-libfdk_005faac">17.4 libfdk_aac</a></h2>
+
+<p>libfdk-aac AAC (Advanced Audio Coding) encoder wrapper.
+</p>
+<p>The libfdk-aac library is based on the Fraunhofer FDK AAC code from
+the Android project.
+</p>
+<p>Requires the presence of the libfdk-aac headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libfdk-aac</code>. The library is also incompatible with GPL,
+so if you allow the use of GPL, you should configure with
+<code>--enable-gpl --enable-nonfree --enable-libfdk-aac</code>.
+</p>
+<p>This encoder is considered to be of higher quality with respect to
+both <a href="#aacenc">the native experimental FFmpeg AAC encoder</a> and
+<a href="#libfaac">libfaac</a>.
+</p>
+<p>VBR encoding, enabled through the &lsquo;<samp>vbr</samp>&rsquo; or &lsquo;<samp>flags
++qscale</samp>&rsquo; options, is experimental and only works with some
+combinations of parameters.
+</p>
+<p>For more information see the fdk-aac project at
+<a href="http://sourceforge.net/p/opencore-amr/fdk-aac/">http://sourceforge.net/p/opencore-amr/fdk-aac/</a>.
+</p>
+<a name="Options-6"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-6">17.4.1 Options</a></h3>
+
+<p>The following options are mapped on the shared FFmpeg codec options.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>Set bit rate in bits/s. If the bitrate is not explicitly specified, it
+is automatically set to a suitable value depending on the selected
+profile.
+</p>
+<p>In case VBR mode is enabled the option is ignored.
+</p>
+</dd>
+<dt> &lsquo;<samp>ar</samp>&rsquo;</dt>
+<dd><p>Set audio sampling rate (in Hz).
+</p>
+</dd>
+<dt> &lsquo;<samp>channels</samp>&rsquo;</dt>
+<dd><p>Set the number of audio channels.
+</p>
+</dd>
+<dt> &lsquo;<samp>flags +qscale</samp>&rsquo;</dt>
+<dd><p>Enable fixed quality, VBR (Variable Bit Rate) mode.
+Note that VBR is implicitly enabled when the &lsquo;<samp>vbr</samp>&rsquo; value is
+positive.
+</p>
+</dd>
+<dt> &lsquo;<samp>cutoff</samp>&rsquo;</dt>
+<dd><p>Set cutoff frequency. If not specified (or explicitly set to 0) it
+will use a value automatically computed by the library. Default value
+is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>profile</samp>&rsquo;</dt>
+<dd><p>Set audio profile.
+</p>
+<p>The following profiles are recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>aac_low</samp>&rsquo;</dt>
+<dd><p>Low Complexity AAC (LC)
+</p>
+</dd>
+<dt> &lsquo;<samp>aac_he</samp>&rsquo;</dt>
+<dd><p>High Efficiency AAC (HE-AAC)
+</p>
+</dd>
+<dt> &lsquo;<samp>aac_he_v2</samp>&rsquo;</dt>
+<dd><p>High Efficiency AAC version 2 (HE-AACv2)
+</p>
+</dd>
+<dt> &lsquo;<samp>aac_ld</samp>&rsquo;</dt>
+<dd><p>Low Delay AAC (LD)
+</p>
+</dd>
+<dt> &lsquo;<samp>aac_eld</samp>&rsquo;</dt>
+<dd><p>Enhanced Low Delay AAC (ELD)
+</p></dd>
+</dl>
+
+<p>If not specified it is set to &lsquo;<samp>aac_low</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<p>The following are private options of the libfdk_aac encoder.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>afterburner</samp>&rsquo;</dt>
+<dd><p>Enable afterburner feature if set to 1, disabled if set to 0. This
+improves the quality but also the required processing power.
+</p>
+<p>Default value is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>eld_sbr</samp>&rsquo;</dt>
+<dd><p>Enable SBR (Spectral Band Replication) for ELD if set to 1, disabled
+if set to 0.
+</p>
+<p>Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>signaling</samp>&rsquo;</dt>
+<dd><p>Set SBR/PS signaling style.
+</p>
+<p>It can assume one of the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>default</samp>&rsquo;</dt>
+<dd><p>choose signaling implicitly (explicit hierarchical by default,
+implicit if global header is disabled)
+</p>
+</dd>
+<dt> &lsquo;<samp>implicit</samp>&rsquo;</dt>
+<dd><p>implicit backwards compatible signaling
+</p>
+</dd>
+<dt> &lsquo;<samp>explicit_sbr</samp>&rsquo;</dt>
+<dd><p>explicit SBR, implicit PS signaling
+</p>
+</dd>
+<dt> &lsquo;<samp>explicit_hierarchical</samp>&rsquo;</dt>
+<dd><p>explicit hierarchical signaling
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>default</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>latm</samp>&rsquo;</dt>
+<dd><p>Output LATM/LOAS encapsulated data if set to 1, disabled if set to 0.
+</p>
+<p>Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>header_period</samp>&rsquo;</dt>
+<dd><p>Set StreamMuxConfig and PCE repetition period (in frames) for sending
+in-band configuration buffers within LATM/LOAS transport layer.
+</p>
+<p>Must be a 16-bits non-negative integer.
+</p>
+<p>Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>vbr</samp>&rsquo;</dt>
+<dd><p>Set VBR mode, from 1 to 5. 1 is lowest quality (though still pretty
+good) and 5 is highest quality. A value of 0 will disable VBR, and CBR
+(Constant Bit Rate) is enabled.
+</p>
+<p>Currently only the &lsquo;<samp>aac_low</samp>&rsquo; profile supports VBR encoding.
+</p>
+<p>VBR modes 1-5 correspond to roughly the following average bit rates:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>32 kbps/channel
+</p></dd>
+<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dd><p>40 kbps/channel
+</p></dd>
+<dt> &lsquo;<samp>3</samp>&rsquo;</dt>
+<dd><p>48-56 kbps/channel
+</p></dd>
+<dt> &lsquo;<samp>4</samp>&rsquo;</dt>
+<dd><p>64 kbps/channel
+</p></dd>
+<dt> &lsquo;<samp>5</samp>&rsquo;</dt>
+<dd><p>about 80-96 kbps/channel
+</p></dd>
+</dl>
+
+<p>Default value is 0.
+</p></dd>
+</dl>
+
+<a name="Examples-12"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-12">17.4.2 Examples</a></h3>
+
+<ul>
+<li>
+Use <code>ffmpeg</code> to convert an audio file to VBR AAC in an M4A (MP4)
+container:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.wav -codec:a libfdk_aac -vbr 3 output.m4a
+</pre></td></tr></table>
+
+</li><li>
+Use <code>ffmpeg</code> to convert an audio file to CBR 64k kbps AAC, using the
+High-Efficiency AAC profile:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.wav -c:a libfdk_aac -profile:a aac_he -b:a 64k output.m4a
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="libmp3lame"></a>
+</p><a name="libmp3lame-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-libmp3lame-1">17.5 libmp3lame</a></h2>
+
+<p>LAME (Lame Ain&rsquo;t an MP3 Encoder) MP3 encoder wrapper.
+</p>
+<p>Requires the presence of the libmp3lame headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libmp3lame</code>.
+</p>
+<p>See <a href="#libshine">libshine</a> for a fixed-point MP3 encoder, although with a
+lower quality.
+</p>
+<a name="Options-21"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-21">17.5.1 Options</a></h3>
+
+<p>The following options are supported by the libmp3lame wrapper. The
+<code>lame</code>-equivalent of the options are listed in parentheses.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b (<em>-b</em>)</samp>&rsquo;</dt>
+<dd><p>Set bitrate expressed in bits/s for CBR or ABR. LAME <code>bitrate</code> is
+expressed in kilobits/s.
+</p>
+</dd>
+<dt> &lsquo;<samp>q (<em>-V</em>)</samp>&rsquo;</dt>
+<dd><p>Set constant quality setting for VBR. This option is valid only
+using the <code>ffmpeg</code> command-line tool. For library interface
+users, use &lsquo;<samp>global_quality</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>compression_level (<em>-q</em>)</samp>&rsquo;</dt>
+<dd><p>Set algorithm quality. Valid arguments are integers in the 0-9 range,
+with 0 meaning highest quality but slowest, and 9 meaning fastest
+while producing the worst quality.
+</p>
+</dd>
+<dt> &lsquo;<samp>reservoir</samp>&rsquo;</dt>
+<dd><p>Enable use of bit reservoir when set to 1. Default value is 1. LAME
+has this enabled by default, but can be overriden by use
+&lsquo;<samp>--nores</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>joint_stereo (<em>-m j</em>)</samp>&rsquo;</dt>
+<dd><p>Enable the encoder to use (on a frame by frame basis) either L/R
+stereo or mid/side stereo. Default value is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>abr (<em>--abr</em>)</samp>&rsquo;</dt>
+<dd><p>Enable the encoder to use ABR when set to 1. The <code>lame</code>
+&lsquo;<samp>--abr</samp>&rsquo; sets the target bitrate, while this options only
+tells FFmpeg to use ABR still relies on &lsquo;<samp>b</samp>&rsquo; to set bitrate.
+</p>
+</dd>
+</dl>
+
+<a name="libopencore_002damrnb"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-libopencore_002damrnb">17.6 libopencore-amrnb</a></h2>
+
+<p>OpenCORE Adaptive Multi-Rate Narrowband encoder.
+</p>
+<p>Requires the presence of the libopencore-amrnb headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libopencore-amrnb --enable-version3</code>.
+</p>
+<p>This is a mono-only encoder. Officially it only supports 8000Hz sample rate,
+but you can override it by setting &lsquo;<samp>strict</samp>&rsquo; to &lsquo;<samp>unofficial</samp>&rsquo; or
+lower.
+</p>
+<a name="Options-31"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-31">17.6.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>Set bitrate in bits per second. Only the following bitrates are supported,
+otherwise libavcodec will round to the nearest valid bitrate.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>4750</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>5150</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>5900</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>6700</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>7400</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>7950</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>10200</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>12200</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>dtx</samp>&rsquo;</dt>
+<dd><p>Allow discontinuous transmission (generate comfort noise) when set to 1. The
+default value is 0 (disabled).
+</p>
+</dd>
+</dl>
+
+<p><a name="libshine"></a>
+</p><a name="libshine-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-libshine-1">17.7 libshine</a></h2>
+
+<p>Shine Fixed-Point MP3 encoder wrapper.
+</p>
+<p>Shine is a fixed-point MP3 encoder. It has a far better performance on
+platforms without an FPU, e.g. armel CPUs, and some phones and tablets.
+However, as it is more targeted on performance than quality, it is not on par
+with LAME and other production-grade encoders quality-wise. Also, according to
+the project&rsquo;s homepage, this encoder may not be free of bugs as the code was
+written a long time ago and the project was dead for at least 5 years.
+</p>
+<p>This encoder only supports stereo and mono input. This is also CBR-only.
+</p>
+<p>The original project (last updated in early 2007) is at
+<a href="http://sourceforge.net/projects/libshine-fxp/">http://sourceforge.net/projects/libshine-fxp/</a>. We only support the
+updated fork by the Savonet/Liquidsoap project at <a href="https://github.com/savonet/shine">https://github.com/savonet/shine</a>.
+</p>
+<p>Requires the presence of the libshine headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libshine</code>.
+</p>
+<p>See also <a href="#libmp3lame">libmp3lame</a>.
+</p>
+<a name="Options-13"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-13">17.7.1 Options</a></h3>
+
+<p>The following options are supported by the libshine wrapper. The
+<code>shineenc</code>-equivalent of the options are listed in parentheses.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b (<em>-b</em>)</samp>&rsquo;</dt>
+<dd><p>Set bitrate expressed in bits/s for CBR. <code>shineenc</code> &lsquo;<samp>-b</samp>&rsquo; option
+is expressed in kilobits/s.
+</p>
+</dd>
+</dl>
+
+<a name="libtwolame"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-libtwolame">17.8 libtwolame</a></h2>
+
+<p>TwoLAME MP2 encoder wrapper.
+</p>
+<p>Requires the presence of the libtwolame headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libtwolame</code>.
+</p>
+<a name="Options-8"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-8">17.8.1 Options</a></h3>
+
+<p>The following options are supported by the libtwolame wrapper. The
+<code>twolame</code>-equivalent options follow the FFmpeg ones and are in
+parentheses.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b (<em>-b</em>)</samp>&rsquo;</dt>
+<dd><p>Set bitrate expressed in bits/s for CBR. <code>twolame</code> &lsquo;<samp>b</samp>&rsquo;
+option is expressed in kilobits/s. Default value is 128k.
+</p>
+</dd>
+<dt> &lsquo;<samp>q (<em>-V</em>)</samp>&rsquo;</dt>
+<dd><p>Set quality for experimental VBR support. Maximum value range is
+from -50 to 50, useful range is from -10 to 10. The higher the
+value, the better the quality. This option is valid only using the
+<code>ffmpeg</code> command-line tool. For library interface users,
+use &lsquo;<samp>global_quality</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>mode (<em>--mode</em>)</samp>&rsquo;</dt>
+<dd><p>Set the mode of the resulting audio. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Choose mode automatically based on the input. This is the default.
+</p></dd>
+<dt> &lsquo;<samp>stereo</samp>&rsquo;</dt>
+<dd><p>Stereo
+</p></dd>
+<dt> &lsquo;<samp>joint_stereo</samp>&rsquo;</dt>
+<dd><p>Joint stereo
+</p></dd>
+<dt> &lsquo;<samp>dual_channel</samp>&rsquo;</dt>
+<dd><p>Dual channel
+</p></dd>
+<dt> &lsquo;<samp>mono</samp>&rsquo;</dt>
+<dd><p>Mono
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>psymodel (<em>--psyc-mode</em>)</samp>&rsquo;</dt>
+<dd><p>Set psychoacoustic model to use in encoding. The argument must be
+an integer between -1 and 4, inclusive. The higher the value, the
+better the quality. The default value is 3.
+</p>
+</dd>
+<dt> &lsquo;<samp>energy_levels (<em>--energy</em>)</samp>&rsquo;</dt>
+<dd><p>Enable energy levels extensions when set to 1. The default value is
+0 (disabled).
+</p>
+</dd>
+<dt> &lsquo;<samp>error_protection (<em>--protect</em>)</samp>&rsquo;</dt>
+<dd><p>Enable CRC error protection when set to 1. The default value is 0
+(disabled).
+</p>
+</dd>
+<dt> &lsquo;<samp>copyright (<em>--copyright</em>)</samp>&rsquo;</dt>
+<dd><p>Set MPEG audio copyright flag when set to 1. The default value is 0
+(disabled).
+</p>
+</dd>
+<dt> &lsquo;<samp>original (<em>--original</em>)</samp>&rsquo;</dt>
+<dd><p>Set MPEG audio original flag when set to 1. The default value is 0
+(disabled).
+</p>
+</dd>
+</dl>
+
+<p><a name="libvo_002daacenc"></a>
+</p><a name="libvo_002daacenc-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-libvo_002daacenc-1">17.9 libvo-aacenc</a></h2>
+
+<p>VisualOn AAC encoder.
+</p>
+<p>Requires the presence of the libvo-aacenc headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libvo-aacenc --enable-version3</code>.
+</p>
+<p>This encoder is considered to be worse than the
+<a href="#aacenc">native experimental FFmpeg AAC encoder</a>, according to
+multiple sources.
+</p>
+<a name="Options-5"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-5">17.9.1 Options</a></h3>
+
+<p>The VisualOn AAC encoder only support encoding AAC-LC and up to 2
+channels. It is also CBR-only.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>Set bit rate in bits/s.
+</p>
+</dd>
+</dl>
+
+<a name="libvo_002damrwbenc"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-libvo_002damrwbenc">17.10 libvo-amrwbenc</a></h2>
+
+<p>VisualOn Adaptive Multi-Rate Wideband encoder.
+</p>
+<p>Requires the presence of the libvo-amrwbenc headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libvo-amrwbenc --enable-version3</code>.
+</p>
+<p>This is a mono-only encoder. Officially it only supports 16000Hz sample
+rate, but you can override it by setting &lsquo;<samp>strict</samp>&rsquo; to
+&lsquo;<samp>unofficial</samp>&rsquo; or lower.
+</p>
+<a name="Options-22"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-22">17.10.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>Set bitrate in bits/s. Only the following bitrates are supported, otherwise
+libavcodec will round to the nearest valid bitrate.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>6600</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>8850</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>12650</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>14250</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>15850</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>18250</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>19850</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>23050</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>23850</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>dtx</samp>&rsquo;</dt>
+<dd><p>Allow discontinuous transmission (generate comfort noise) when set to 1. The
+default value is 0 (disabled).
+</p>
+</dd>
+</dl>
+
+<a name="libopus"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-libopus">17.11 libopus</a></h2>
+
+<p>libopus Opus Interactive Audio Codec encoder wrapper.
+</p>
+<p>Requires the presence of the libopus headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libopus</code>.
+</p>
+<a name="Option-Mapping"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Option-Mapping">17.11.1 Option Mapping</a></h3>
+
+<p>Most libopus options are modeled after the <code>opusenc</code> utility from
+opus-tools. The following is an option mapping chart describing options
+supported by the libopus wrapper, and their <code>opusenc</code>-equivalent
+in parentheses.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b (<em>bitrate</em>)</samp>&rsquo;</dt>
+<dd><p>Set the bit rate in bits/s.  FFmpeg&rsquo;s &lsquo;<samp>b</samp>&rsquo; option is
+expressed in bits/s, while <code>opusenc</code>&rsquo;s &lsquo;<samp>bitrate</samp>&rsquo; in
+kilobits/s.
+</p>
+</dd>
+<dt> &lsquo;<samp>vbr (<em>vbr</em>, <em>hard-cbr</em>, and <em>cvbr</em>)</samp>&rsquo;</dt>
+<dd><p>Set VBR mode. The FFmpeg &lsquo;<samp>vbr</samp>&rsquo; option has the following
+valid arguments, with the their <code>opusenc</code> equivalent options
+in parentheses:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>off (<em>hard-cbr</em>)</samp>&rsquo;</dt>
+<dd><p>Use constant bit rate encoding.
+</p>
+</dd>
+<dt> &lsquo;<samp>on (<em>vbr</em>)</samp>&rsquo;</dt>
+<dd><p>Use variable bit rate encoding (the default).
+</p>
+</dd>
+<dt> &lsquo;<samp>constrained (<em>cvbr</em>)</samp>&rsquo;</dt>
+<dd><p>Use constrained variable bit rate encoding.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>compression_level (<em>comp</em>)</samp>&rsquo;</dt>
+<dd><p>Set encoding algorithm complexity. Valid options are integers in
+the 0-10 range. 0 gives the fastest encodes but lower quality, while 10
+gives the highest quality but slowest encoding. The default is 10.
+</p>
+</dd>
+<dt> &lsquo;<samp>frame_duration (<em>framesize</em>)</samp>&rsquo;</dt>
+<dd><p>Set maximum frame size, or duration of a frame in milliseconds. The
+argument must be exactly the following: 2.5, 5, 10, 20, 40, 60. Smaller
+frame sizes achieve lower latency but less quality at a given bitrate.
+Sizes greater than 20ms are only interesting at fairly low bitrates.
+The default is 20ms.
+</p>
+</dd>
+<dt> &lsquo;<samp>packet_loss (<em>expect-loss</em>)</samp>&rsquo;</dt>
+<dd><p>Set expected packet loss percentage. The default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>application (N.A.)</samp>&rsquo;</dt>
+<dd><p>Set intended application type. Valid options are listed below:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>voip</samp>&rsquo;</dt>
+<dd><p>Favor improved speech intelligibility.
+</p></dd>
+<dt> &lsquo;<samp>audio</samp>&rsquo;</dt>
+<dd><p>Favor faithfulness to the input (the default).
+</p></dd>
+<dt> &lsquo;<samp>lowdelay</samp>&rsquo;</dt>
+<dd><p>Restrict to only the lowest delay modes.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>cutoff (N.A.)</samp>&rsquo;</dt>
+<dd><p>Set cutoff bandwidth in Hz. The argument must be exactly one of the
+following: 4000, 6000, 8000, 12000, or 20000, corresponding to
+narrowband, mediumband, wideband, super wideband, and fullband
+respectively. The default is 0 (cutoff disabled).
+</p>
+</dd>
+</dl>
+
+<a name="libvorbis"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-libvorbis">17.12 libvorbis</a></h2>
+
+<p>libvorbis encoder wrapper.
+</p>
+<p>Requires the presence of the libvorbisenc headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libvorbis</code>.
+</p>
+<a name="Options-27"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-27">17.12.1 Options</a></h3>
+
+<p>The following options are supported by the libvorbis wrapper. The
+<code>oggenc</code>-equivalent of the options are listed in parentheses.
+</p>
+<p>To get a more accurate and extensive documentation of the libvorbis
+options, consult the libvorbisenc&rsquo;s and <code>oggenc</code>&rsquo;s documentations.
+See <a href="http://xiph.org/vorbis/">http://xiph.org/vorbis/</a>,
+<a href="http://wiki.xiph.org/Vorbis-tools">http://wiki.xiph.org/Vorbis-tools</a>, and oggenc(1).
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b (<em>-b</em>)</samp>&rsquo;</dt>
+<dd><p>Set bitrate expressed in bits/s for ABR. <code>oggenc</code> &lsquo;<samp>-b</samp>&rsquo; is
+expressed in kilobits/s.
+</p>
+</dd>
+<dt> &lsquo;<samp>q (<em>-q</em>)</samp>&rsquo;</dt>
+<dd><p>Set constant quality setting for VBR. The value should be a float
+number in the range of -1.0 to 10.0. The higher the value, the better
+the quality. The default value is &lsquo;<samp>3.0</samp>&rsquo;.
+</p>
+<p>This option is valid only using the <code>ffmpeg</code> command-line tool.
+For library interface users, use &lsquo;<samp>global_quality</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>cutoff (<em>--advanced-encode-option lowpass_frequency=N</em>)</samp>&rsquo;</dt>
+<dd><p>Set cutoff bandwidth in Hz, a value of 0 disables cutoff. <code>oggenc</code>&rsquo;s
+related option is expressed in kHz. The default value is &lsquo;<samp>0</samp>&rsquo; (cutoff
+disabled).
+</p>
+</dd>
+<dt> &lsquo;<samp>minrate (<em>-m</em>)</samp>&rsquo;</dt>
+<dd><p>Set minimum bitrate expressed in bits/s. <code>oggenc</code> &lsquo;<samp>-m</samp>&rsquo; is
+expressed in kilobits/s.
+</p>
+</dd>
+<dt> &lsquo;<samp>maxrate (<em>-M</em>)</samp>&rsquo;</dt>
+<dd><p>Set maximum bitrate expressed in bits/s. <code>oggenc</code> &lsquo;<samp>-M</samp>&rsquo; is
+expressed in kilobits/s. This only has effect on ABR mode.
+</p>
+</dd>
+<dt> &lsquo;<samp>iblock (<em>--advanced-encode-option impulse_noisetune=N</em>)</samp>&rsquo;</dt>
+<dd><p>Set noise floor bias for impulse blocks. The value is a float number from
+-15.0 to 0.0. A negative bias instructs the encoder to pay special attention
+to the crispness of transients in the encoded audio. The tradeoff for better
+transient response is a higher bitrate.
+</p>
+</dd>
+</dl>
+
+<a name="libwavpack"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-libwavpack">17.13 libwavpack</a></h2>
+
+<p>A wrapper providing WavPack encoding through libwavpack.
+</p>
+<p>Only lossless mode using 32-bit integer samples is supported currently.
+The &lsquo;<samp>compression_level</samp>&rsquo; option can be used to control speed vs.
+compression tradeoff, with the values mapped to libwavpack as follows:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>Fast mode - corresponding to the wavpack &lsquo;<samp>-f</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>Normal (default) settings.
+</p>
+</dd>
+<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dd><p>High quality - corresponding to the wavpack &lsquo;<samp>-h</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>3</samp>&rsquo;</dt>
+<dd><p>Very high quality - corresponding to the wavpack &lsquo;<samp>-hh</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>4-8</samp>&rsquo;</dt>
+<dd><p>Same as 3, but with extra processing enabled - corresponding to the wavpack
+&lsquo;<samp>-x</samp>&rsquo; option. I.e. 4 is the same as &lsquo;<samp>-x2</samp>&rsquo; and 8 is the same as
+&lsquo;<samp>-x6</samp>&rsquo;.
+</p>
+</dd>
+</dl>
+
+
+<a name="Video-Encoders"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Video-Encoders">18. Video Encoders</a></h1>
+
+<p>A description of some of the currently available video encoders
+follows.
+</p>
+<a name="libtheora"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-libtheora">18.1 libtheora</a></h2>
+
+<p>libtheora Theora encoder wrapper.
+</p>
+<p>Requires the presence of the libtheora headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libtheora</code>.
+</p>
+<p>For more informations about the libtheora project see
+<a href="http://www.theora.org/">http://www.theora.org/</a>.
+</p>
+<a name="Options-23"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-23">18.1.1 Options</a></h3>
+
+<p>The following global options are mapped to internal libtheora options
+which affect the quality and the bitrate of the encoded stream.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>Set the video bitrate in bit/s for CBR (Constant Bit Rate) mode.  In
+case VBR (Variable Bit Rate) mode is enabled this option is ignored.
+</p>
+</dd>
+<dt> &lsquo;<samp>flags</samp>&rsquo;</dt>
+<dd><p>Used to enable constant quality mode (VBR) encoding through the
+&lsquo;<samp>qscale</samp>&rsquo; flag, and to enable the <code>pass1</code> and <code>pass2</code>
+modes.
+</p>
+</dd>
+<dt> &lsquo;<samp>g</samp>&rsquo;</dt>
+<dd><p>Set the GOP size.
+</p>
+</dd>
+<dt> &lsquo;<samp>global_quality</samp>&rsquo;</dt>
+<dd><p>Set the global quality as an integer in lambda units.
+</p>
+<p>Only relevant when VBR mode is enabled with <code>flags +qscale</code>. The
+value is converted to QP units by dividing it by <code>FF_QP2LAMBDA</code>,
+clipped in the [0 - 10] range, and then multiplied by 6.3 to get a
+value in the native libtheora range [0-63]. A higher value corresponds
+to a higher quality.
+</p>
+</dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Enable VBR mode when set to a non-negative value, and set constant
+quality value as a double floating point value in QP units.
+</p>
+<p>The value is clipped in the [0-10] range, and then multiplied by 6.3
+to get a value in the native libtheora range [0-63].
+</p>
+<p>This option is valid only using the <code>ffmpeg</code> command-line
+tool. For library interface users, use &lsquo;<samp>global_quality</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<a name="Examples-62"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-62">18.1.2 Examples</a></h3>
+
+<ul>
+<li>
+Set maximum constant quality (VBR) encoding with <code>ffmpeg</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -codec:v libtheora -q:v 10 OUTPUT.ogg
+</pre></td></tr></table>
+
+</li><li>
+Use <code>ffmpeg</code> to convert a CBR 1000 kbps Theora video stream:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -codec:v libtheora -b:v 1000k OUTPUT.ogg
+</pre></td></tr></table>
+</li></ul>
+
+<a name="libvpx"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-libvpx">18.2 libvpx</a></h2>
+
+<p>VP8 format supported through libvpx.
+</p>
+<p>Requires the presence of the libvpx headers and library during configuration.
+You need to explicitly configure the build with <code>--enable-libvpx</code>.
+</p>
+<a name="Options-32"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-32">18.2.1 Options</a></h3>
+
+<p>Mapping from FFmpeg to libvpx options with conversion notes in parentheses.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>threads</samp>&rsquo;</dt>
+<dd><p>g_threads
+</p>
+</dd>
+<dt> &lsquo;<samp>profile</samp>&rsquo;</dt>
+<dd><p>g_profile
+</p>
+</dd>
+<dt> &lsquo;<samp>vb</samp>&rsquo;</dt>
+<dd><p>rc_target_bitrate
+</p>
+</dd>
+<dt> &lsquo;<samp>g</samp>&rsquo;</dt>
+<dd><p>kf_max_dist
+</p>
+</dd>
+<dt> &lsquo;<samp>keyint_min</samp>&rsquo;</dt>
+<dd><p>kf_min_dist
+</p>
+</dd>
+<dt> &lsquo;<samp>qmin</samp>&rsquo;</dt>
+<dd><p>rc_min_quantizer
+</p>
+</dd>
+<dt> &lsquo;<samp>qmax</samp>&rsquo;</dt>
+<dd><p>rc_max_quantizer
+</p>
+</dd>
+<dt> &lsquo;<samp>bufsize, vb</samp>&rsquo;</dt>
+<dd><p>rc_buf_sz
+<code>(bufsize * 1000 / vb)</code>
+</p>
+<p>rc_buf_optimal_sz
+<code>(bufsize * 1000 / vb * 5 / 6)</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_init_occupancy, vb</samp>&rsquo;</dt>
+<dd><p>rc_buf_initial_sz
+<code>(rc_init_occupancy * 1000 / vb)</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_buffer_aggressivity</samp>&rsquo;</dt>
+<dd><p>rc_undershoot_pct
+</p>
+</dd>
+<dt> &lsquo;<samp>skip_threshold</samp>&rsquo;</dt>
+<dd><p>rc_dropframe_thresh
+</p>
+</dd>
+<dt> &lsquo;<samp>qcomp</samp>&rsquo;</dt>
+<dd><p>rc_2pass_vbr_bias_pct
+</p>
+</dd>
+<dt> &lsquo;<samp>maxrate, vb</samp>&rsquo;</dt>
+<dd><p>rc_2pass_vbr_maxsection_pct
+<code>(maxrate * 100 / vb)</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>minrate, vb</samp>&rsquo;</dt>
+<dd><p>rc_2pass_vbr_minsection_pct
+<code>(minrate * 100 / vb)</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>minrate, maxrate, vb</samp>&rsquo;</dt>
+<dd><p><code>VPX_CBR</code>
+<code>(minrate == maxrate == vb)</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>crf</samp>&rsquo;</dt>
+<dd><p><code>VPX_CQ</code>, <code>VP8E_SET_CQ_LEVEL</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>quality</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp><var>best</var></samp>&rsquo;</dt>
+<dd><p><code>VPX_DL_BEST_QUALITY</code>
+</p></dd>
+<dt> &lsquo;<samp><var>good</var></samp>&rsquo;</dt>
+<dd><p><code>VPX_DL_GOOD_QUALITY</code>
+</p></dd>
+<dt> &lsquo;<samp><var>realtime</var></samp>&rsquo;</dt>
+<dd><p><code>VPX_DL_REALTIME</code>
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>speed</samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_CPUUSED</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>nr</samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_NOISE_SENSITIVITY</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>mb_threshold</samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_STATIC_THRESHOLD</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>slices</samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_TOKEN_PARTITIONS</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>max-intra-rate</samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_MAX_INTRA_BITRATE_PCT</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>force_key_frames</samp>&rsquo;</dt>
+<dd><p><code>VPX_EFLAG_FORCE_KF</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>Alternate reference frame related</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>vp8flags altref</samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_ENABLEAUTOALTREF</code>
+</p></dd>
+<dt> &lsquo;<samp><var>arnr_max_frames</var></samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_ARNR_MAXFRAMES</code>
+</p></dd>
+<dt> &lsquo;<samp><var>arnr_type</var></samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_ARNR_TYPE</code>
+</p></dd>
+<dt> &lsquo;<samp><var>arnr_strength</var></samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_ARNR_STRENGTH</code>
+</p></dd>
+<dt> &lsquo;<samp><var>rc_lookahead</var></samp>&rsquo;</dt>
+<dd><p>g_lag_in_frames
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>vp8flags error_resilient</samp>&rsquo;</dt>
+<dd><p>g_error_resilient
+</p>
+</dd>
+</dl>
+
+<p>For more information about libvpx see:
+<a href="http://www.webmproject.org/">http://www.webmproject.org/</a>
+</p>
+<a name="libx264"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-libx264">18.3 libx264</a></h2>
+
+<p>x264 H.264/MPEG-4 AVC encoder wrapper.
+</p>
+<p>This encoder requires the presence of the libx264 headers and library
+during configuration. You need to explicitly configure the build with
+<code>--enable-libx264</code>.
+</p>
+<p>libx264 supports an impressive number of features, including 8x8 and
+4x4 adaptive spatial transform, adaptive B-frame placement, CAVLC/CABAC
+entropy coding, interlacing (MBAFF), lossless mode, psy optimizations
+for detail retention (adaptive quantization, psy-RD, psy-trellis).
+</p>
+<p>Many libx264 encoder options are mapped to FFmpeg global codec
+options, while unique encoder options are provided through private
+options. Additionally the &lsquo;<samp>x264opts</samp>&rsquo; and &lsquo;<samp>x264-params</samp>&rsquo;
+private options allows to pass a list of key=value tuples as accepted
+by the libx264 <code>x264_param_parse</code> function.
+</p>
+<p>The x264 project website is at
+<a href="http://www.videolan.org/developers/x264.html">http://www.videolan.org/developers/x264.html</a>.
+</p>
+<a name="Options-19"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-19">18.3.1 Options</a></h3>
+
+<p>The following options are supported by the libx264 wrapper. The
+<code>x264</code>-equivalent options or values are listed in parentheses
+for easy migration.
+</p>
+<p>To reduce the duplication of documentation, only the private options
+and some others requiring special attention are documented here. For
+the documentation of the undocumented generic options, see
+<a href="#codec_002doptions">the Codec Options chapter</a>.
+</p>
+<p>To get a more accurate and extensive documentation of the libx264
+options, invoke the command <code>x264 --full-help</code> or consult
+the libx264 documentation.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b (<em>bitrate</em>)</samp>&rsquo;</dt>
+<dd><p>Set bitrate in bits/s. Note that FFmpeg&rsquo;s &lsquo;<samp>b</samp>&rsquo; option is
+expressed in bits/s, while <code>x264</code>&rsquo;s &lsquo;<samp>bitrate</samp>&rsquo; is in
+kilobits/s.
+</p>
+</dd>
+<dt> &lsquo;<samp>bf (<em>bframes</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>g (<em>keyint</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qmax (<em>qpmax</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qmin (<em>qpmin</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qdiff (<em>qpstep</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qblur (<em>qblur</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qcomp (<em>qcomp</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>refs (<em>ref</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sc_threshold (<em>scenecut</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>trellis (<em>trellis</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>nr  (<em>nr</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>me_range (<em>merange</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>me_method (<em>me</em>)</samp>&rsquo;</dt>
+<dd><p>Set motion estimation method. Possible values in the decreasing order
+of speed:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>dia (<em>dia</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>epzs (<em>dia</em>)</samp>&rsquo;</dt>
+<dd><p>Diamond search with radius 1 (fastest). &lsquo;<samp>epzs</samp>&rsquo; is an alias for
+&lsquo;<samp>dia</samp>&rsquo;.
+</p></dd>
+<dt> &lsquo;<samp>hex (<em>hex</em>)</samp>&rsquo;</dt>
+<dd><p>Hexagonal search with radius 2.
+</p></dd>
+<dt> &lsquo;<samp>umh (<em>umh</em>)</samp>&rsquo;</dt>
+<dd><p>Uneven multi-hexagon search.
+</p></dd>
+<dt> &lsquo;<samp>esa (<em>esa</em>)</samp>&rsquo;</dt>
+<dd><p>Exhaustive search.
+</p></dd>
+<dt> &lsquo;<samp>tesa (<em>tesa</em>)</samp>&rsquo;</dt>
+<dd><p>Hadamard exhaustive search (slowest).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>subq (<em>subme</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>b_strategy (<em>b-adapt</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>keyint_min (<em>min-keyint</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>coder</samp>&rsquo;</dt>
+<dd><p>Set entropy encoder. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>ac</samp>&rsquo;</dt>
+<dd><p>Enable CABAC.
+</p>
+</dd>
+<dt> &lsquo;<samp>vlc</samp>&rsquo;</dt>
+<dd><p>Enable CAVLC and disable CABAC. It generates the same effect as
+<code>x264</code>&rsquo;s &lsquo;<samp>--no-cabac</samp>&rsquo; option.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>cmp</samp>&rsquo;</dt>
+<dd><p>Set full pixel motion estimation comparation algorithm. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+<dd><p>Enable chroma in motion estimation.
+</p>
+</dd>
+<dt> &lsquo;<samp>sad</samp>&rsquo;</dt>
+<dd><p>Ignore chroma in motion estimation. It generates the same effect as
+<code>x264</code>&rsquo;s &lsquo;<samp>--no-chroma-me</samp>&rsquo; option.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>threads (<em>threads</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>thread_type</samp>&rsquo;</dt>
+<dd><p>Set multithreading technique. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>slice</samp>&rsquo;</dt>
+<dd><p>Slice-based multithreading. It generates the same effect as
+<code>x264</code>&rsquo;s &lsquo;<samp>--sliced-threads</samp>&rsquo; option.
+</p></dd>
+<dt> &lsquo;<samp>frame</samp>&rsquo;</dt>
+<dd><p>Frame-based multithreading.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>flags</samp>&rsquo;</dt>
+<dd><p>Set encoding flags. It can be used to disable closed GOP and enable
+open GOP by setting it to <code>-cgop</code>. The result is similar to
+the behavior of <code>x264</code>&rsquo;s &lsquo;<samp>--open-gop</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_init_occupancy (<em>vbv-init</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>preset (<em>preset</em>)</samp>&rsquo;</dt>
+<dd><p>Set the encoding preset.
+</p>
+</dd>
+<dt> &lsquo;<samp>tune (<em>tune</em>)</samp>&rsquo;</dt>
+<dd><p>Set tuning of the encoding params.
+</p>
+</dd>
+<dt> &lsquo;<samp>profile (<em>profile</em>)</samp>&rsquo;</dt>
+<dd><p>Set profile restrictions.
+</p>
+</dd>
+<dt> &lsquo;<samp>fastfirstpass</samp>&rsquo;</dt>
+<dd><p>Enable fast settings when encoding first pass, when set to 1. When set
+to 0, it has the same effect of <code>x264</code>&rsquo;s
+&lsquo;<samp>--slow-firstpass</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>crf (<em>crf</em>)</samp>&rsquo;</dt>
+<dd><p>Set the quality for constant quality mode.
+</p>
+</dd>
+<dt> &lsquo;<samp>crf_max (<em>crf-max</em>)</samp>&rsquo;</dt>
+<dd><p>In CRF mode, prevents VBV from lowering quality beyond this point.
+</p>
+</dd>
+<dt> &lsquo;<samp>qp (<em>qp</em>)</samp>&rsquo;</dt>
+<dd><p>Set constant quantization rate control method parameter.
+</p>
+</dd>
+<dt> &lsquo;<samp>aq-mode (<em>aq-mode</em>)</samp>&rsquo;</dt>
+<dd><p>Set AQ method. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>none (<em>0</em>)</samp>&rsquo;</dt>
+<dd><p>Disabled.
+</p>
+</dd>
+<dt> &lsquo;<samp>variance (<em>1</em>)</samp>&rsquo;</dt>
+<dd><p>Variance AQ (complexity mask).
+</p>
+</dd>
+<dt> &lsquo;<samp>autovariance (<em>2</em>)</samp>&rsquo;</dt>
+<dd><p>Auto-variance AQ (experimental).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>aq-strength (<em>aq-strength</em>)</samp>&rsquo;</dt>
+<dd><p>Set AQ strength, reduce blocking and blurring in flat and textured areas.
+</p>
+</dd>
+<dt> &lsquo;<samp>psy</samp>&rsquo;</dt>
+<dd><p>Use psychovisual optimizations when set to 1. When set to 0, it has the
+same effect as <code>x264</code>&rsquo;s &lsquo;<samp>--no-psy</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>psy-rd  (<em>psy-rd</em>)</samp>&rsquo;</dt>
+<dd><p>Set strength of psychovisual optimization, in
+<var>psy-rd</var>:<var>psy-trellis</var> format.
+</p>
+</dd>
+<dt> &lsquo;<samp>rc-lookahead (<em>rc-lookahead</em>)</samp>&rsquo;</dt>
+<dd><p>Set number of frames to look ahead for frametype and ratecontrol.
+</p>
+</dd>
+<dt> &lsquo;<samp>weightb</samp>&rsquo;</dt>
+<dd><p>Enable weighted prediction for B-frames when set to 1. When set to 0,
+it has the same effect as <code>x264</code>&rsquo;s &lsquo;<samp>--no-weightb</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>weightp (<em>weightp</em>)</samp>&rsquo;</dt>
+<dd><p>Set weighted prediction method for P-frames. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>none (<em>0</em>)</samp>&rsquo;</dt>
+<dd><p>Disabled
+</p></dd>
+<dt> &lsquo;<samp>simple (<em>1</em>)</samp>&rsquo;</dt>
+<dd><p>Enable only weighted refs
+</p></dd>
+<dt> &lsquo;<samp>smart (<em>2</em>)</samp>&rsquo;</dt>
+<dd><p>Enable both weighted refs and duplicates
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>ssim (<em>ssim</em>)</samp>&rsquo;</dt>
+<dd><p>Enable calculation and printing SSIM stats after the encoding.
+</p>
+</dd>
+<dt> &lsquo;<samp>intra-refresh (<em>intra-refresh</em>)</samp>&rsquo;</dt>
+<dd><p>Enable the use of Periodic Intra Refresh instead of IDR frames when set
+to 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>bluray-compat (<em>bluray-compat</em>)</samp>&rsquo;</dt>
+<dd><p>Configure the encoder to be compatible with the bluray standard.
+It is a shorthand for setting &quot;bluray-compat=1 force-cfr=1&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>b-bias (<em>b-bias</em>)</samp>&rsquo;</dt>
+<dd><p>Set the influence on how often B-frames are used.
+</p>
+</dd>
+<dt> &lsquo;<samp>b-pyramid (<em>b-pyramid</em>)</samp>&rsquo;</dt>
+<dd><p>Set method for keeping of some B-frames as references. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>none (<em>none</em>)</samp>&rsquo;</dt>
+<dd><p>Disabled.
+</p></dd>
+<dt> &lsquo;<samp>strict (<em>strict</em>)</samp>&rsquo;</dt>
+<dd><p>Strictly hierarchical pyramid.
+</p></dd>
+<dt> &lsquo;<samp>normal (<em>normal</em>)</samp>&rsquo;</dt>
+<dd><p>Non-strict (not Blu-ray compatible).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>mixed-refs</samp>&rsquo;</dt>
+<dd><p>Enable the use of one reference per partition, as opposed to one
+reference per macroblock when set to 1. When set to 0, it has the
+same effect as <code>x264</code>&rsquo;s &lsquo;<samp>--no-mixed-refs</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>8x8dct</samp>&rsquo;</dt>
+<dd><p>Enable adaptive spatial transform (high profile 8x8 transform)
+when set to 1. When set to 0, it has the same effect as
+<code>x264</code>&rsquo;s &lsquo;<samp>--no-8x8dct</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>fast-pskip</samp>&rsquo;</dt>
+<dd><p>Enable early SKIP detection on P-frames when set to 1. When set
+to 0, it has the same effect as <code>x264</code>&rsquo;s
+&lsquo;<samp>--no-fast-pskip</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>aud (<em>aud</em>)</samp>&rsquo;</dt>
+<dd><p>Enable use of access unit delimiters when set to 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>mbtree</samp>&rsquo;</dt>
+<dd><p>Enable use macroblock tree ratecontrol when set to 1. When set
+to 0, it has the same effect as <code>x264</code>&rsquo;s
+&lsquo;<samp>--no-mbtree</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>deblock (<em>deblock</em>)</samp>&rsquo;</dt>
+<dd><p>Set loop filter parameters, in <var>alpha</var>:<var>beta</var> form.
+</p>
+</dd>
+<dt> &lsquo;<samp>cplxblur (<em>cplxblur</em>)</samp>&rsquo;</dt>
+<dd><p>Set fluctuations reduction in QP (before curve compression).
+</p>
+</dd>
+<dt> &lsquo;<samp>partitions (<em>partitions</em>)</samp>&rsquo;</dt>
+<dd><p>Set partitions to consider as a comma-separated list of. Possible
+values in the list:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>p8x8</samp>&rsquo;</dt>
+<dd><p>8x8 P-frame partition.
+</p></dd>
+<dt> &lsquo;<samp>p4x4</samp>&rsquo;</dt>
+<dd><p>4x4 P-frame partition.
+</p></dd>
+<dt> &lsquo;<samp>b8x8</samp>&rsquo;</dt>
+<dd><p>4x4 B-frame partition.
+</p></dd>
+<dt> &lsquo;<samp>i8x8</samp>&rsquo;</dt>
+<dd><p>8x8 I-frame partition.
+</p></dd>
+<dt> &lsquo;<samp>i4x4</samp>&rsquo;</dt>
+<dd><p>4x4 I-frame partition.
+(Enabling &lsquo;<samp>p4x4</samp>&rsquo; requires &lsquo;<samp>p8x8</samp>&rsquo; to be enabled. Enabling
+&lsquo;<samp>i8x8</samp>&rsquo; requires adaptive spatial transform (&lsquo;<samp>8x8dct</samp>&rsquo;
+option) to be enabled.)
+</p></dd>
+<dt> &lsquo;<samp>none (<em>none</em>)</samp>&rsquo;</dt>
+<dd><p>Do not consider any partitions.
+</p></dd>
+<dt> &lsquo;<samp>all (<em>all</em>)</samp>&rsquo;</dt>
+<dd><p>Consider every partition.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>direct-pred (<em>direct</em>)</samp>&rsquo;</dt>
+<dd><p>Set direct MV prediction mode. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>none (<em>none</em>)</samp>&rsquo;</dt>
+<dd><p>Disable MV prediction.
+</p></dd>
+<dt> &lsquo;<samp>spatial (<em>spatial</em>)</samp>&rsquo;</dt>
+<dd><p>Enable spatial predicting.
+</p></dd>
+<dt> &lsquo;<samp>temporal (<em>temporal</em>)</samp>&rsquo;</dt>
+<dd><p>Enable temporal predicting.
+</p></dd>
+<dt> &lsquo;<samp>auto (<em>auto</em>)</samp>&rsquo;</dt>
+<dd><p>Automatically decided.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>slice-max-size (<em>slice-max-size</em>)</samp>&rsquo;</dt>
+<dd><p>Set the limit of the size of each slice in bytes. If not specified
+but RTP payload size (&lsquo;<samp>ps</samp>&rsquo;) is specified, that is used.
+</p>
+</dd>
+<dt> &lsquo;<samp>stats (<em>stats</em>)</samp>&rsquo;</dt>
+<dd><p>Set the file name for multi-pass stats.
+</p>
+</dd>
+<dt> &lsquo;<samp>nal-hrd (<em>nal-hrd</em>)</samp>&rsquo;</dt>
+<dd><p>Set signal HRD information (requires &lsquo;<samp>vbv-bufsize</samp>&rsquo; to be set).
+Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>none (<em>none</em>)</samp>&rsquo;</dt>
+<dd><p>Disable HRD information signaling.
+</p></dd>
+<dt> &lsquo;<samp>vbr (<em>vbr</em>)</samp>&rsquo;</dt>
+<dd><p>Variable bit rate.
+</p></dd>
+<dt> &lsquo;<samp>cbr (<em>cbr</em>)</samp>&rsquo;</dt>
+<dd><p>Constant bit rate (not allowed in MP4 container).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>x264opts (N.A.)</samp>&rsquo;</dt>
+<dd><p>Set any x264 option, see <code>x264 --fullhelp</code> for a list.
+</p>
+<p>Argument is a list of <var>key</var>=<var>value</var> couples separated by
+&quot;:&quot;. In <var>filter</var> and <var>psy-rd</var> options that use &quot;:&quot; as a separator
+themselves, use &quot;,&quot; instead. They accept it as well since long ago but this
+is kept undocumented for some reason.
+</p>
+<p>For example to specify libx264 encoding options with <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i foo.mpg -vcodec libx264 -x264opts keyint=123:min-keyint=20 -an out.mkv
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>x264-params (N.A.)</samp>&rsquo;</dt>
+<dd><p>Override the x264 configuration using a :-separated list of key=value
+parameters.
+</p>
+<p>This option is functionally the same as the &lsquo;<samp>x264opts</samp>&rsquo;, but is
+duplicated for compability with the Libav fork.
+</p>
+<p>For example to specify libx264 encoding options with <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -c:v libx264 -x264-params level=30:bframes=0:weightp=0:\
+cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:\
+no-fast-pskip=1:subq=6:8x8dct=0:trellis=0 OUTPUT
+</pre></td></tr></table>
+</dd>
+</dl>
+
+<p>Encoding ffpresets for common usages are provided so they can be used with the
+general presets system (e.g. passing the &lsquo;<samp>pre</samp>&rsquo; option).
+</p>
+<a name="libxvid"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-libxvid">18.4 libxvid</a></h2>
+
+<p>Xvid MPEG-4 Part 2 encoder wrapper.
+</p>
+<p>This encoder requires the presence of the libxvidcore headers and library
+during configuration. You need to explicitly configure the build with
+<code>--enable-libxvid --enable-gpl</code>.
+</p>
+<p>The native <code>mpeg4</code> encoder supports the MPEG-4 Part 2 format, so
+users can encode to this format without this library.
+</p>
+<a name="Options-28"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-28">18.4.1 Options</a></h3>
+
+<p>The following options are supported by the libxvid wrapper. Some of
+the following options are listed but are not documented, and
+correspond to shared codec options. See <a href="#codec_002doptions">the Codec Options chapter</a> for their documentation. The other shared options
+which are not listed have no effect for the libxvid encoder.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>g</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qmin</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qmax</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mpeg_quant</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>threads</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bf</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>b_qfactor</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>b_qoffset</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>flags</samp>&rsquo;</dt>
+<dd><p>Set specific encoding flags. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>mv4</samp>&rsquo;</dt>
+<dd><p>Use four motion vector by macroblock.
+</p>
+</dd>
+<dt> &lsquo;<samp>aic</samp>&rsquo;</dt>
+<dd><p>Enable high quality AC prediction.
+</p>
+</dd>
+<dt> &lsquo;<samp>gray</samp>&rsquo;</dt>
+<dd><p>Only encode grayscale.
+</p>
+</dd>
+<dt> &lsquo;<samp>gmc</samp>&rsquo;</dt>
+<dd><p>Enable the use of global motion compensation (GMC).
+</p>
+</dd>
+<dt> &lsquo;<samp>qpel</samp>&rsquo;</dt>
+<dd><p>Enable quarter-pixel motion compensation.
+</p>
+</dd>
+<dt> &lsquo;<samp>cgop</samp>&rsquo;</dt>
+<dd><p>Enable closed GOP.
+</p>
+</dd>
+<dt> &lsquo;<samp>global_header</samp>&rsquo;</dt>
+<dd><p>Place global headers in extradata instead of every keyframe.
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>trellis</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>me_method</samp>&rsquo;</dt>
+<dd><p>Set motion estimation method. Possible values in decreasing order of
+speed and increasing order of quality:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>Use no motion estimation (default).
+</p>
+</dd>
+<dt> &lsquo;<samp>phods</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>x1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>log</samp>&rsquo;</dt>
+<dd><p>Enable advanced diamond zonal search for 16x16 blocks and half-pixel
+refinement for 16x16 blocks. &lsquo;<samp>x1</samp>&rsquo; and &lsquo;<samp>log</samp>&rsquo; are aliases for
+&lsquo;<samp>phods</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>epzs</samp>&rsquo;</dt>
+<dd><p>Enable all of the things described above, plus advanced diamond zonal
+search for 8x8 blocks, half-pixel refinement for 8x8 blocks, and motion
+estimation on chroma planes.
+</p>
+</dd>
+<dt> &lsquo;<samp>full</samp>&rsquo;</dt>
+<dd><p>Enable all of the things described above, plus extended 16x16 and 8x8
+blocks search.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>mbd</samp>&rsquo;</dt>
+<dd><p>Set macroblock decision algorithm. Possible values in the increasing
+order of quality:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>simple</samp>&rsquo;</dt>
+<dd><p>Use macroblock comparing function algorithm (default).
+</p>
+</dd>
+<dt> &lsquo;<samp>bits</samp>&rsquo;</dt>
+<dd><p>Enable rate distortion-based half pixel and quarter pixel refinement for
+16x16 blocks.
+</p>
+</dd>
+<dt> &lsquo;<samp>rd</samp>&rsquo;</dt>
+<dd><p>Enable all of the things described above, plus rate distortion-based
+half pixel and quarter pixel refinement for 8x8 blocks, and rate
+distortion-based search using square pattern.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>lumi_aq</samp>&rsquo;</dt>
+<dd><p>Enable lumi masking adaptive quantization when set to 1. Default is 0
+(disabled).
+</p>
+</dd>
+<dt> &lsquo;<samp>variance_aq</samp>&rsquo;</dt>
+<dd><p>Enable variance adaptive quantization when set to 1. Default is 0
+(disabled).
+</p>
+<p>When combined with &lsquo;<samp>lumi_aq</samp>&rsquo;, the resulting quality will not
+be better than any of the two specified individually. In other
+words, the resulting quality will be the worse one of the two
+effects.
+</p>
+</dd>
+<dt> &lsquo;<samp>ssim</samp>&rsquo;</dt>
+<dd><p>Set structural similarity (SSIM) displaying method. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
+<dd><p>Disable displaying of SSIM information.
+</p>
+</dd>
+<dt> &lsquo;<samp>avg</samp>&rsquo;</dt>
+<dd><p>Output average SSIM at the end of encoding to stdout. The format of
+showing the average SSIM is:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">Average SSIM: %f
+</pre></td></tr></table>
+
+<p>For users who are not familiar with C, %f means a float number, or
+a decimal (e.g. 0.939232).
+</p>
+</dd>
+<dt> &lsquo;<samp>frame</samp>&rsquo;</dt>
+<dd><p>Output both per-frame SSIM data during encoding and average SSIM at
+the end of encoding to stdout. The format of per-frame information
+is:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">       SSIM: avg: %1.3f min: %1.3f max: %1.3f
+</pre></td></tr></table>
+
+<p>For users who are not familiar with C, %1.3f means a float number
+rounded to 3 digits after the dot (e.g. 0.932).
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>ssim_acc</samp>&rsquo;</dt>
+<dd><p>Set SSIM accuracy. Valid options are integers within the range of
+0-4, while 0 gives the most accurate result and 4 computes the
+fastest.
+</p>
+</dd>
+</dl>
+
+<a name="png"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-png">18.5 png</a></h2>
+
+<p>PNG image encoder.
+</p>
+<a name="Private-options"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Private-options">18.5.1 Private options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>dpi <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Set physical density of pixels, in dots per inch, unset by default
+</p></dd>
+<dt> &lsquo;<samp>dpm <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Set physical density of pixels, in dots per meter, unset by default
+</p></dd>
+</dl>
+
+<a name="ProRes"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-ProRes">18.6 ProRes</a></h2>
+
+<p>Apple ProRes encoder.
+</p>
+<p>FFmpeg contains 2 ProRes encoders, the prores-aw and prores-ks encoder.
+The used encoder can be choosen with the <code>-vcodec</code> option.
+</p>
+<a name="Private-Options-for-prores_002dks"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Private-Options-for-prores_002dks">18.6.1 Private Options for prores-ks</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>profile <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Select the ProRes profile to encode
+</p><dl compact="compact">
+<dt> &lsquo;<samp>proxy</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>lt</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>standard</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>hq</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>4444</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>quant_mat <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Select quantization matrix.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>default</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>proxy</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>lt</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>standard</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>hq</samp>&rsquo;</dt>
+</dl>
+<p>If set to <var>auto</var>, the matrix matching the profile will be picked.
+If not set, the matrix providing the highest quality, <var>default</var>, will be
+picked.
+</p>
+</dd>
+<dt> &lsquo;<samp>bits_per_mb <var>integer</var></samp>&rsquo;</dt>
+<dd><p>How many bits to allot for coding one macroblock. Different profiles use
+between 200 and 2400 bits per macroblock, the maximum is 8000.
+</p>
+</dd>
+<dt> &lsquo;<samp>mbs_per_slice <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Number of macroblocks in each slice (1-8); the default value (8)
+should be good in almost all situations.
+</p>
+</dd>
+<dt> &lsquo;<samp>vendor <var>string</var></samp>&rsquo;</dt>
+<dd><p>Override the 4-byte vendor ID.
+A custom vendor ID like <var>apl0</var> would claim the stream was produced by
+the Apple encoder.
+</p>
+</dd>
+<dt> &lsquo;<samp>alpha_bits <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Specify number of bits for alpha component.
+Possible values are <var>0</var>, <var>8</var> and <var>16</var>.
+Use <var>0</var> to disable alpha plane coding.
+</p>
+</dd>
+</dl>
+
+<a name="Speed-considerations"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Speed-considerations">18.6.2 Speed considerations</a></h3>
+
+<p>In the default mode of operation the encoder has to honor frame constraints
+(i.e. not produc frames with size bigger than requested) while still making
+output picture as good as possible.
+A frame containing a lot of small details is harder to compress and the encoder
+would spend more time searching for appropriate quantizers for each slice.
+</p>
+<p>Setting a higher &lsquo;<samp>bits_per_mb</samp>&rsquo; limit will improve the speed.
+</p>
+<p>For the fastest encoding speed set the &lsquo;<samp>qscale</samp>&rsquo; parameter (4 is the
+recommended value) and do not set a size constraint.
+</p>
+<a name="Bitstream-Filters"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Bitstream-Filters">19. Bitstream Filters</a></h1>
+
+<p>When you configure your FFmpeg build, all the supported bitstream
+filters are enabled by default. You can list all available ones using
+the configure option <code>--list-bsfs</code>.
+</p>
+<p>You can disable all the bitstream filters using the configure option
+<code>--disable-bsfs</code>, and selectively enable any bitstream filter using
+the option <code>--enable-bsf=BSF</code>, or you can disable a particular
+bitstream filter using the option <code>--disable-bsf=BSF</code>.
+</p>
+<p>The option <code>-bsfs</code> of the ff* tools will display the list of
+all the supported bitstream filters included in your build.
+</p>
+<p>Below is a description of the currently available bitstream filters.
+</p>
+<a name="aac_005fadtstoasc"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-aac_005fadtstoasc">19.1 aac_adtstoasc</a></h2>
+
+<p>Convert MPEG-2/4 AAC ADTS to MPEG-4 Audio Specific Configuration
+bitstream filter.
+</p>
+<p>This filter creates an MPEG-4 AudioSpecificConfig from an MPEG-2/4
+ADTS header and removes the ADTS header.
+</p>
+<p>This is required for example when copying an AAC stream from a raw
+ADTS AAC container to a FLV or a MOV/MP4 file.
+</p>
+<a name="chomp"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-chomp">19.2 chomp</a></h2>
+
+<p>Remove zero padding at the end of a packet.
+</p>
+<a name="dump_005fextra"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-dump_005fextra">19.3 dump_extra</a></h2>
+
+<p>Add extradata to the beginning of the filtered packets.
+</p>
+<p>The additional argument specifies which packets should be filtered.
+It accepts the values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>add extradata to all key packets, but only if <var>local_header</var> is
+set in the &lsquo;<samp>flags2</samp>&rsquo; codec context field
+</p>
+</dd>
+<dt> &lsquo;<samp>k</samp>&rsquo;</dt>
+<dd><p>add extradata to all key packets
+</p>
+</dd>
+<dt> &lsquo;<samp>e</samp>&rsquo;</dt>
+<dd><p>add extradata to all packets
+</p></dd>
+</dl>
+
+<p>If not specified it is assumed &lsquo;<samp>k</samp>&rsquo;.
+</p>
+<p>For example the following <code>ffmpeg</code> command forces a global
+header (thus disabling individual packet headers) in the H.264 packets
+generated by the <code>libx264</code> encoder, but corrects them by adding
+the header stored in extradata to the key packets:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -map 0 -flags:v +global_header -c:v libx264 -bsf:v dump_extra out.ts
+</pre></td></tr></table>
+
+<a name="h264_005fmp4toannexb"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-h264_005fmp4toannexb">19.4 h264_mp4toannexb</a></h2>
+
+<p>Convert an H.264 bitstream from length prefixed mode to start code
+prefixed mode (as defined in the Annex B of the ITU-T H.264
+specification).
+</p>
+<p>This is required by some streaming formats, typically the MPEG-2
+transport stream format (&quot;mpegts&quot;).
+</p>
+<p>For example to remux an MP4 file containing an H.264 stream to mpegts
+format with <code>ffmpeg</code>, you can use the command:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT.mp4 -codec copy -bsf:v h264_mp4toannexb OUTPUT.ts
+</pre></td></tr></table>
+
+<a name="imx_005fdump_005fheader"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-imx_005fdump_005fheader">19.5 imx_dump_header</a></h2>
+
+<a name="mjpeg2jpeg"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-mjpeg2jpeg">19.6 mjpeg2jpeg</a></h2>
+
+<p>Convert MJPEG/AVI1 packets to full JPEG/JFIF packets.
+</p>
+<p>MJPEG is a video codec wherein each video frame is essentially a
+JPEG image. The individual frames can be extracted without loss,
+e.g. by
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i ../some_mjpeg.avi -c:v copy frames_%d.jpg
+</pre></td></tr></table>
+
+<p>Unfortunately, these chunks are incomplete JPEG images, because
+they lack the DHT segment required for decoding. Quoting from
+<a href="http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml">http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml</a>:
+</p>
+<p>Avery Lee, writing in the rec.video.desktop newsgroup in 2001,
+commented that &quot;MJPEG, or at least the MJPEG in AVIs having the
+MJPG fourcc, is restricted JPEG with a fixed &ndash; and *omitted* &ndash;
+Huffman table. The JPEG must be YCbCr colorspace, it must be 4:2:2,
+and it must use basic Huffman encoding, not arithmetic or
+progressive. . . . You can indeed extract the MJPEG frames and
+decode them with a regular JPEG decoder, but you have to prepend
+the DHT segment to them, or else the decoder won&rsquo;t have any idea
+how to decompress the data. The exact table necessary is given in
+the OpenDML spec.&quot;
+</p>
+<p>This bitstream filter patches the header of frames extracted from an MJPEG
+stream (carrying the AVI1 header ID and lacking a DHT segment) to
+produce fully qualified JPEG images.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i mjpeg-movie.avi -c:v copy -bsf:v mjpeg2jpeg frame_%d.jpg
+exiftran -i -9 frame*.jpg
+ffmpeg -i frame_%d.jpg -c:v copy rotated.avi
+</pre></td></tr></table>
+
+<a name="mjpega_005fdump_005fheader"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-mjpega_005fdump_005fheader">19.7 mjpega_dump_header</a></h2>
+
+<a name="movsub"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-movsub">19.8 movsub</a></h2>
+
+<a name="mp3_005fheader_005fdecompress"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-mp3_005fheader_005fdecompress">19.9 mp3_header_decompress</a></h2>
+
+<a name="noise-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-noise-1">19.10 noise</a></h2>
+
+<a name="remove_005fextra"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-remove_005fextra">19.11 remove_extra</a></h2>
+
+<a name="Format-Options"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Format-Options">20. Format Options</a></h1>
+
+<p>The libavformat library provides some generic global options, which
+can be set on all the muxers and demuxers. In addition each muxer or
+demuxer may support so-called private options, which are specific for
+that component.
+</p>
+<p>Options may be set by specifying -<var>option</var> <var>value</var> in the
+FFmpeg tools, or by setting the value explicitly in the
+<code>AVFormatContext</code> options or using the &lsquo;<tt>libavutil/opt.h</tt>&rsquo; API
+for programmatic use.
+</p>
+<p>The list of supported options follows:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>avioflags <var>flags</var> (<em>input/output</em>)</samp>&rsquo;</dt>
+<dd><p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>direct</samp>&rsquo;</dt>
+<dd><p>Reduce buffering.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>probesize <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Set probing size in bytes, i.e. the size of the data to analyze to get
+stream information. A higher value will allow to detect more
+information in case it is dispersed into the stream, but will increase
+latency. Must be an integer not lesser than 32. It is 5000000 by default.
+</p>
+</dd>
+<dt> &lsquo;<samp>packetsize <var>integer</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set packet size.
+</p>
+</dd>
+<dt> &lsquo;<samp>fflags <var>flags</var> (<em>input/output</em>)</samp>&rsquo;</dt>
+<dd><p>Set format flags.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>ignidx</samp>&rsquo;</dt>
+<dd><p>Ignore index.
+</p></dd>
+<dt> &lsquo;<samp>genpts</samp>&rsquo;</dt>
+<dd><p>Generate PTS.
+</p></dd>
+<dt> &lsquo;<samp>nofillin</samp>&rsquo;</dt>
+<dd><p>Do not fill in missing values that can be exactly calculated.
+</p></dd>
+<dt> &lsquo;<samp>noparse</samp>&rsquo;</dt>
+<dd><p>Disable AVParsers, this needs <code>+nofillin</code> too.
+</p></dd>
+<dt> &lsquo;<samp>igndts</samp>&rsquo;</dt>
+<dd><p>Ignore DTS.
+</p></dd>
+<dt> &lsquo;<samp>discardcorrupt</samp>&rsquo;</dt>
+<dd><p>Discard corrupted frames.
+</p></dd>
+<dt> &lsquo;<samp>sortdts</samp>&rsquo;</dt>
+<dd><p>Try to interleave output packets by DTS.
+</p></dd>
+<dt> &lsquo;<samp>keepside</samp>&rsquo;</dt>
+<dd><p>Do not merge side data.
+</p></dd>
+<dt> &lsquo;<samp>latm</samp>&rsquo;</dt>
+<dd><p>Enable RTP MP4A-LATM payload.
+</p></dd>
+<dt> &lsquo;<samp>nobuffer</samp>&rsquo;</dt>
+<dd><p>Reduce the latency introduced by optional buffering
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>seek2any <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Allow seeking to non-keyframes on demuxer level when supported if set to 1.
+Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>analyzeduration <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Specify how many microseconds are analyzed to probe the input. A
+higher value will allow to detect more accurate information, but will
+increase latency. It defaults to 5,000,000 microseconds = 5 seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>cryptokey <var>hexadecimal string</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Set decryption key.
+</p>
+</dd>
+<dt> &lsquo;<samp>indexmem <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Set max memory used for timestamp index (per stream).
+</p>
+</dd>
+<dt> &lsquo;<samp>rtbufsize <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Set max memory used for buffering real-time frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>fdebug <var>flags</var> (<em>input/output</em>)</samp>&rsquo;</dt>
+<dd><p>Print specific debug info.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>ts</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>max_delay <var>integer</var> (<em>input/output</em>)</samp>&rsquo;</dt>
+<dd><p>Set maximum muxing or demuxing delay in microseconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>fpsprobesize <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Set number of frames used to probe fps.
+</p>
+</dd>
+<dt> &lsquo;<samp>audio_preload <var>integer</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set microseconds by which audio packets should be interleaved earlier.
+</p>
+</dd>
+<dt> &lsquo;<samp>chunk_duration <var>integer</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set microseconds for each chunk.
+</p>
+</dd>
+<dt> &lsquo;<samp>chunk_size <var>integer</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set size in bytes for each chunk.
+</p>
+</dd>
+<dt> &lsquo;<samp>err_detect, f_err_detect <var>flags</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Set error detection flags. <code>f_err_detect</code> is deprecated and
+should be used only via the <code>ffmpeg</code> tool.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>crccheck</samp>&rsquo;</dt>
+<dd><p>Verify embedded CRCs.
+</p></dd>
+<dt> &lsquo;<samp>bitstream</samp>&rsquo;</dt>
+<dd><p>Detect bitstream specification deviations.
+</p></dd>
+<dt> &lsquo;<samp>buffer</samp>&rsquo;</dt>
+<dd><p>Detect improper bitstream length.
+</p></dd>
+<dt> &lsquo;<samp>explode</samp>&rsquo;</dt>
+<dd><p>Abort decoding on minor error detection.
+</p></dd>
+<dt> &lsquo;<samp>careful</samp>&rsquo;</dt>
+<dd><p>Consider things that violate the spec and have not been seen in the
+wild as errors.
+</p></dd>
+<dt> &lsquo;<samp>compliant</samp>&rsquo;</dt>
+<dd><p>Consider all spec non compliancies as errors.
+</p></dd>
+<dt> &lsquo;<samp>aggressive</samp>&rsquo;</dt>
+<dd><p>Consider things that a sane encoder should not do as an error.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>use_wallclock_as_timestamps <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Use wallclock as timestamps.
+</p>
+</dd>
+<dt> &lsquo;<samp>avoid_negative_ts <var>integer</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Shift timestamps to make them non-negative. A value of 1 enables shifting,
+a value of 0 disables it, the default value of -1 enables shifting
+when required by the target format.
+</p>
+<p>When shifting is enabled, all output timestamps are shifted by the
+same amount. Audio, video, and subtitles desynching and relative
+timestamp differences are preserved compared to how they would have
+been without shifting.
+</p>
+<p>Also note that this affects only leading negative timestamps, and not
+non-monotonic negative timestamps.
+</p>
+</dd>
+<dt> &lsquo;<samp>skip_initial_bytes <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Set number of bytes to skip before reading header and frames if set to 1.
+Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>correct_ts_overflow <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Correct single timestamp overflows if set to 1. Default is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>flush_packets <var>integer</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Flush the underlying I/O stream after each packet. Default 1 enables it, and
+has the effect of reducing the latency; 0 disables it and may slightly
+increase performance in some cases.
+</p></dd>
+</dl>
+
+
+<p><a name="Format-stream-specifiers"></a>
+</p><a name="Format-stream-specifiers-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-Format-stream-specifiers-1">20.1 Format stream specifiers</a></h2>
+
+<p>Format stream specifiers allow selection of one or more streams that
+match specific properties.
+</p>
+<p>Possible forms of stream specifiers are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp><var>stream_index</var></samp>&rsquo;</dt>
+<dd><p>Matches the stream with this index.
+</p>
+</dd>
+<dt> &lsquo;<samp><var>stream_type</var>[:<var>stream_index</var>]</samp>&rsquo;</dt>
+<dd><p><var>stream_type</var> is one of following: &rsquo;v&rsquo; for video, &rsquo;a&rsquo; for audio,
+&rsquo;s&rsquo; for subtitle, &rsquo;d&rsquo; for data, and &rsquo;t&rsquo; for attachments. If
+<var>stream_index</var> is given, then it matches the stream number
+<var>stream_index</var> of this type. Otherwise, it matches all streams of
+this type.
+</p>
+</dd>
+<dt> &lsquo;<samp>p:<var>program_id</var>[:<var>stream_index</var>]</samp>&rsquo;</dt>
+<dd><p>If <var>stream_index</var> is given, then it matches the stream with number
+<var>stream_index</var> in the program with the id
+<var>program_id</var>. Otherwise, it matches all streams in the program.
+</p>
+</dd>
+<dt> &lsquo;<samp>#<var>stream_id</var></samp>&rsquo;</dt>
+<dd><p>Matches the stream by a format-specific ID.
+</p></dd>
+</dl>
+
+<p>The exact semantics of stream specifiers is defined by the
+<code>avformat_match_stream_specifier()</code> function declared in the
+&lsquo;<tt>libavformat/avformat.h</tt>&rsquo; header.
+</p>
+<a name="Demuxers"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Demuxers">21. Demuxers</a></h1>
+
+<p>Demuxers are configured elements in FFmpeg that can read the
+multimedia streams from a particular type of file.
+</p>
+<p>When you configure your FFmpeg build, all the supported demuxers
+are enabled by default. You can list all available ones using the
+configure option <code>--list-demuxers</code>.
+</p>
+<p>You can disable all the demuxers using the configure option
+<code>--disable-demuxers</code>, and selectively enable a single demuxer with
+the option <code>--enable-demuxer=<var>DEMUXER</var></code>, or disable it
+with the option <code>--disable-demuxer=<var>DEMUXER</var></code>.
+</p>
+<p>The option <code>-formats</code> of the ff* tools will display the list of
+enabled demuxers.
+</p>
+<p>The description of some of the currently available demuxers follows.
+</p>
+<a name="applehttp"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-applehttp">21.1 applehttp</a></h2>
+
+<p>Apple HTTP Live Streaming demuxer.
+</p>
+<p>This demuxer presents all AVStreams from all variant streams.
+The id field is set to the bitrate variant index number. By setting
+the discard flags on AVStreams (by pressing &rsquo;a&rsquo; or &rsquo;v&rsquo; in ffplay),
+the caller can decide which variant streams to actually receive.
+The total bitrate of the variant that the stream belongs to is
+available in a metadata key named &quot;variant_bitrate&quot;.
+</p>
+<a name="asf"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-asf">21.2 asf</a></h2>
+
+<p>Advanced Systems Format demuxer.
+</p>
+<p>This demuxer is used to demux ASF files and MMS network streams.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-no_resync_search <var>bool</var></samp>&rsquo;</dt>
+<dd><p>Do not try to resynchronize by looking for a certain optional start code.
+</p></dd>
+</dl>
+
+<p><a name="concat"></a>
+</p><a name="concat-3"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-concat-3">21.3 concat</a></h2>
+
+<p>Virtual concatenation script demuxer.
+</p>
+<p>This demuxer reads a list of files and other directives from a text file and
+demuxes them one after the other, as if all their packet had been muxed
+together.
+</p>
+<p>The timestamps in the files are adjusted so that the first file starts at 0
+and each next file starts where the previous one finishes. Note that it is
+done globally and may cause gaps if all streams do not have exactly the same
+length.
+</p>
+<p>All files must have the same streams (same codecs, same time base, etc.).
+</p>
+<p>The duration of each file is used to adjust the timestamps of the next file:
+if the duration is incorrect (because it was computed using the bit-rate or
+because the file is truncated, for example), it can cause artifacts. The
+<code>duration</code> directive can be used to override the duration stored in
+each file.
+</p>
+<a name="Syntax-1"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Syntax-1">21.3.1 Syntax</a></h3>
+
+<p>The script is a text file in extended-ASCII, with one directive per line.
+Empty lines, leading spaces and lines starting with &rsquo;#&rsquo; are ignored. The
+following directive is recognized:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp><code>file <var>path</var></code></samp>&rsquo;</dt>
+<dd><p>Path to a file to read; special characters and spaces must be escaped with
+backslash or single quotes.
+</p>
+<p>All subsequent directives apply to that file.
+</p>
+</dd>
+<dt> &lsquo;<samp><code>ffconcat version 1.0</code></samp>&rsquo;</dt>
+<dd><p>Identify the script type and version. It also sets the &lsquo;<samp>safe</samp>&rsquo; option
+to 1 if it was to its default -1.
+</p>
+<p>To make FFmpeg recognize the format automatically, this directive must
+appears exactly as is (no extra space or byte-order-mark) on the very first
+line of the script.
+</p>
+</dd>
+<dt> &lsquo;<samp><code>duration <var>dur</var></code></samp>&rsquo;</dt>
+<dd><p>Duration of the file. This information can be specified from the file;
+specifying it here may be more efficient or help if the information from the
+file is not available or accurate.
+</p>
+<p>If the duration is set for all files, then it is possible to seek in the
+whole concatenated video.
+</p>
+</dd>
+</dl>
+
+<a name="Options-12"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-12">21.3.2 Options</a></h3>
+
+<p>This demuxer accepts the following option:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>safe</samp>&rsquo;</dt>
+<dd><p>If set to 1, reject unsafe file paths. A file path is considered safe if it
+does not contain a protocol specification and is relative and all components
+only contain characters from the portable character set (letters, digits,
+period, underscore and hyphen) and have no period at the beginning of a
+component.
+</p>
+<p>If set to 0, any file name is accepted.
+</p>
+<p>The default is -1, it is equivalent to 1 if the format was automatically
+probed and 0 otherwise.
+</p>
+</dd>
+</dl>
+
+<a name="flv"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-flv">21.4 flv</a></h2>
+
+<p>Adobe Flash Video Format demuxer.
+</p>
+<p>This demuxer is used to demux FLV files and RTMP network streams.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-flv_metadata <var>bool</var></samp>&rsquo;</dt>
+<dd><p>Allocate the streams according to the onMetaData array content.
+</p></dd>
+</dl>
+
+<a name="libgme"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-libgme">21.5 libgme</a></h2>
+
+<p>The Game Music Emu library is a collection of video game music file emulators.
+</p>
+<p>See <a href="http://code.google.com/p/game-music-emu/">http://code.google.com/p/game-music-emu/</a> for more information.
+</p>
+<p>Some files have multiple tracks. The demuxer will pick the first track by
+default. The &lsquo;<samp>track_index</samp>&rsquo; option can be used to select a different
+track. Track indexes start at 0. The demuxer exports the number of tracks as
+<var>tracks</var> meta data entry.
+</p>
+<p>For very large files, the &lsquo;<samp>max_size</samp>&rsquo; option may have to be adjusted.
+</p>
+<a name="libquvi"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-libquvi">21.6 libquvi</a></h2>
+
+<p>Play media from Internet services using the quvi project.
+</p>
+<p>The demuxer accepts a &lsquo;<samp>format</samp>&rsquo; option to request a specific quality. It
+is by default set to <var>best</var>.
+</p>
+<p>See <a href="http://quvi.sourceforge.net/">http://quvi.sourceforge.net/</a> for more information.
+</p>
+<p>FFmpeg needs to be built with <code>--enable-libquvi</code> for this demuxer to be
+enabled.
+</p>
+<a name="image2-2"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-image2-2">21.7 image2</a></h2>
+
+<p>Image file demuxer.
+</p>
+<p>This demuxer reads from a list of image files specified by a pattern.
+The syntax and meaning of the pattern is specified by the
+option <var>pattern_type</var>.
+</p>
+<p>The pattern may contain a suffix which is used to automatically
+determine the format of the images contained in the files.
+</p>
+<p>The size, the pixel format, and the format of each image must be the
+same for all the files in the sequence.
+</p>
+<p>This demuxer accepts the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>framerate</samp>&rsquo;</dt>
+<dd><p>Set the frame rate for the video stream. It defaults to 25.
+</p></dd>
+<dt> &lsquo;<samp>loop</samp>&rsquo;</dt>
+<dd><p>If set to 1, loop over the input. Default value is 0.
+</p></dd>
+<dt> &lsquo;<samp>pattern_type</samp>&rsquo;</dt>
+<dd><p>Select the pattern type used to interpret the provided filename.
+</p>
+<p><var>pattern_type</var> accepts one of the following values.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sequence</samp>&rsquo;</dt>
+<dd><p>Select a sequence pattern type, used to specify a sequence of files
+indexed by sequential numbers.
+</p>
+<p>A sequence pattern may contain the string &quot;%d&quot; or &quot;%0<var>N</var>d&quot;, which
+specifies the position of the characters representing a sequential
+number in each filename matched by the pattern. If the form
+&quot;%d0<var>N</var>d&quot; is used, the string representing the number in each
+filename is 0-padded and <var>N</var> is the total number of 0-padded
+digits representing the number. The literal character &rsquo;%&rsquo; can be
+specified in the pattern with the string &quot;%%&quot;.
+</p>
+<p>If the sequence pattern contains &quot;%d&quot; or &quot;%0<var>N</var>d&quot;, the first filename of
+the file list specified by the pattern must contain a number
+inclusively contained between <var>start_number</var> and
+<var>start_number</var>+<var>start_number_range</var>-1, and all the following
+numbers must be sequential.
+</p>
+<p>For example the pattern &quot;img-%03d.bmp&quot; will match a sequence of
+filenames of the form &lsquo;<tt>img-001.bmp</tt>&rsquo;, &lsquo;<tt>img-002.bmp</tt>&rsquo;, ...,
+&lsquo;<tt>img-010.bmp</tt>&rsquo;, etc.; the pattern &quot;i%%m%%g-%d.jpg&quot; will match a
+sequence of filenames of the form &lsquo;<tt>i%m%g-1.jpg</tt>&rsquo;,
+&lsquo;<tt>i%m%g-2.jpg</tt>&rsquo;, ..., &lsquo;<tt>i%m%g-10.jpg</tt>&rsquo;, etc.
+</p>
+<p>Note that the pattern must not necessarily contain &quot;%d&quot; or
+&quot;%0<var>N</var>d&quot;, for example to convert a single image file
+&lsquo;<tt>img.jpeg</tt>&rsquo; you can employ the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i img.jpeg img.png
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>glob</samp>&rsquo;</dt>
+<dd><p>Select a glob wildcard pattern type.
+</p>
+<p>The pattern is interpreted like a <code>glob()</code> pattern. This is only
+selectable if libavformat was compiled with globbing support.
+</p>
+</dd>
+<dt> &lsquo;<samp>glob_sequence <em>(deprecated, will be removed)</em></samp>&rsquo;</dt>
+<dd><p>Select a mixed glob wildcard/sequence pattern.
+</p>
+<p>If your version of libavformat was compiled with globbing support, and
+the provided pattern contains at least one glob meta character among
+<code>%*?[]{}</code> that is preceded by an unescaped &quot;%&quot;, the pattern is
+interpreted like a <code>glob()</code> pattern, otherwise it is interpreted
+like a sequence pattern.
+</p>
+<p>All glob special characters <code>%*?[]{}</code> must be prefixed
+with &quot;%&quot;. To escape a literal &quot;%&quot; you shall use &quot;%%&quot;.
+</p>
+<p>For example the pattern <code>foo-%*.jpeg</code> will match all the
+filenames prefixed by &quot;foo-&quot; and terminating with &quot;.jpeg&quot;, and
+<code>foo-%?%?%?.jpeg</code> will match all the filenames prefixed with
+&quot;foo-&quot;, followed by a sequence of three characters, and terminating
+with &quot;.jpeg&quot;.
+</p>
+<p>This pattern type is deprecated in favor of <var>glob</var> and
+<var>sequence</var>.
+</p></dd>
+</dl>
+
+<p>Default value is <var>glob_sequence</var>.
+</p></dd>
+<dt> &lsquo;<samp>pixel_format</samp>&rsquo;</dt>
+<dd><p>Set the pixel format of the images to read. If not specified the pixel
+format is guessed from the first image file in the sequence.
+</p></dd>
+<dt> &lsquo;<samp>start_number</samp>&rsquo;</dt>
+<dd><p>Set the index of the file matched by the image file pattern to start
+to read from. Default value is 0.
+</p></dd>
+<dt> &lsquo;<samp>start_number_range</samp>&rsquo;</dt>
+<dd><p>Set the index interval range to check when looking for the first image
+file in the sequence, starting from <var>start_number</var>. Default value
+is 5.
+</p></dd>
+<dt> &lsquo;<samp>ts_from_file</samp>&rsquo;</dt>
+<dd><p>If set to 1, will set frame timestamp to modification time of image file. Note
+that monotonity of timestamps is not provided: images go in the same order as
+without this option. Default value is 0.
+</p></dd>
+<dt> &lsquo;<samp>video_size</samp>&rsquo;</dt>
+<dd><p>Set the video size of the images to read. If not specified the video
+size is guessed from the first image file in the sequence.
+</p></dd>
+</dl>
+
+<a name="Examples-69"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-69">21.7.1 Examples</a></h3>
+
+<ul>
+<li>
+Use <code>ffmpeg</code> for creating a video from the images in the file
+sequence &lsquo;<tt>img-001.jpeg</tt>&rsquo;, &lsquo;<tt>img-002.jpeg</tt>&rsquo;, ..., assuming an
+input frame rate of 10 frames per second:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -framerate 10 -i 'img-%03d.jpeg' out.mkv
+</pre></td></tr></table>
+
+</li><li>
+As above, but start by reading from a file with index 100 in the sequence:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -framerate 10 -start_number 100 -i 'img-%03d.jpeg' out.mkv
+</pre></td></tr></table>
+
+</li><li>
+Read images matching the &quot;*.png&quot; glob pattern , that is all the files
+terminating with the &quot;.png&quot; suffix:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -framerate 10 -pattern_type glob -i &quot;*.png&quot; out.mkv
+</pre></td></tr></table>
+</li></ul>
+
+<a name="mpegts-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-mpegts-1">21.8 mpegts</a></h2>
+
+<p>MPEG-2 transport stream demuxer.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>fix_teletext_pts</samp>&rsquo;</dt>
+<dd><p>Overrides teletext packet PTS and DTS values with the timestamps calculated
+from the PCR of the first program which the teletext stream is part of and is
+not discarded. Default value is 1, set this option to 0 if you want your
+teletext packet PTS and DTS values untouched.
+</p></dd>
+</dl>
+
+<a name="rawvideo"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-rawvideo">21.9 rawvideo</a></h2>
+
+<p>Raw video demuxer.
+</p>
+<p>This demuxer allows to read raw video data. Since there is no header
+specifying the assumed video parameters, the user must specify them
+in order to be able to decode the data correctly.
+</p>
+<p>This demuxer accepts the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>framerate</samp>&rsquo;</dt>
+<dd><p>Set input video frame rate. Default value is 25.
+</p>
+</dd>
+<dt> &lsquo;<samp>pixel_format</samp>&rsquo;</dt>
+<dd><p>Set the input video pixel format. Default value is <code>yuv420p</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>video_size</samp>&rsquo;</dt>
+<dd><p>Set the input video size. This value must be specified explicitly.
+</p></dd>
+</dl>
+
+<p>For example to read a rawvideo file &lsquo;<tt>input.raw</tt>&rsquo; with
+<code>ffplay</code>, assuming a pixel format of <code>rgb24</code>, a video
+size of <code>320x240</code>, and a frame rate of 10 images per second, use
+the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f rawvideo -pixel_format rgb24 -video_size 320x240 -framerate 10 input.raw
+</pre></td></tr></table>
+
+<a name="sbg"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-sbg">21.10 sbg</a></h2>
+
+<p>SBaGen script demuxer.
+</p>
+<p>This demuxer reads the script language used by SBaGen
+<a href="http://uazu.net/sbagen/">http://uazu.net/sbagen/</a> to generate binaural beats sessions. A SBG
+script looks like that:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">-SE
+a: 300-2.5/3 440+4.5/0
+b: 300-2.5/0 440+4.5/3
+off: -
+NOW      == a
++0:07:00 == b
++0:14:00 == a
++0:21:00 == b
++0:30:00    off
+</pre></td></tr></table>
+
+<p>A SBG script can mix absolute and relative timestamps. If the script uses
+either only absolute timestamps (including the script start time) or only
+relative ones, then its layout is fixed, and the conversion is
+straightforward. On the other hand, if the script mixes both kind of
+timestamps, then the <var>NOW</var> reference for relative timestamps will be
+taken from the current time of day at the time the script is read, and the
+script layout will be frozen according to that reference. That means that if
+the script is directly played, the actual times will match the absolute
+timestamps up to the sound controller&rsquo;s clock accuracy, but if the user
+somehow pauses the playback or seeks, all times will be shifted accordingly.
+</p>
+<a name="tedcaptions"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-tedcaptions">21.11 tedcaptions</a></h2>
+
+<p>JSON captions used for <a href="http://www.ted.com/">TED Talks</a>.
+</p>
+<p>TED does not provide links to the captions, but they can be guessed from the
+page. The file &lsquo;<tt>tools/bookmarklets.html</tt>&rsquo; from the FFmpeg source tree
+contains a bookmarklet to expose them.
+</p>
+<p>This demuxer accepts the following option:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>start_time</samp>&rsquo;</dt>
+<dd><p>Set the start time of the TED talk, in milliseconds. The default is 15000
+(15s). It is used to sync the captions with the downloadable videos, because
+they include a 15s intro.
+</p></dd>
+</dl>
+
+<p>Example: convert the captions to a format most players understand:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i http://www.ted.com/talks/subtitles/id/1/lang/en talk1-en.srt
+</pre></td></tr></table>
+
+<a name="Muxers"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Muxers">22. Muxers</a></h1>
+
+<p>Muxers are configured elements in FFmpeg which allow writing
+multimedia streams to a particular type of file.
+</p>
+<p>When you configure your FFmpeg build, all the supported muxers
+are enabled by default. You can list all available muxers using the
+configure option <code>--list-muxers</code>.
+</p>
+<p>You can disable all the muxers with the configure option
+<code>--disable-muxers</code> and selectively enable / disable single muxers
+with the options <code>--enable-muxer=<var>MUXER</var></code> /
+<code>--disable-muxer=<var>MUXER</var></code>.
+</p>
+<p>The option <code>-formats</code> of the ff* tools will display the list of
+enabled muxers.
+</p>
+<p>A description of some of the currently available muxers follows.
+</p>
+<p><a name="aiff"></a>
+</p><a name="aiff-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-aiff-1">22.1 aiff</a></h2>
+
+<p>Audio Interchange File Format muxer.
+</p>
+<p>It accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>write_id3v2</samp>&rsquo;</dt>
+<dd><p>Enable ID3v2 tags writing when set to 1. Default is 0 (disabled).
+</p>
+</dd>
+<dt> &lsquo;<samp>id3v2_version</samp>&rsquo;</dt>
+<dd><p>Select ID3v2 version to write. Currently only version 3 and 4 (aka.
+ID3v2.3 and ID3v2.4) are supported. The default is version 4.
+</p>
+</dd>
+</dl>
+
+<p><a name="crc"></a>
+</p><a name="crc-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-crc-1">22.2 crc</a></h2>
+
+<p>CRC (Cyclic Redundancy Check) testing format.
+</p>
+<p>This muxer computes and prints the Adler-32 CRC of all the input audio
+and video frames. By default audio frames are converted to signed
+16-bit raw audio and video frames to raw video before computing the
+CRC.
+</p>
+<p>The output of the muxer consists of a single line of the form:
+CRC=0x<var>CRC</var>, where <var>CRC</var> is a hexadecimal number 0-padded to
+8 digits containing the CRC for all the decoded input frames.
+</p>
+<p>For example to compute the CRC of the input, and store it in the file
+&lsquo;<tt>out.crc</tt>&rsquo;:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f crc out.crc
+</pre></td></tr></table>
+
+<p>You can print the CRC to stdout with the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f crc -
+</pre></td></tr></table>
+
+<p>You can select the output format of each frame with <code>ffmpeg</code> by
+specifying the audio and video codec and format. For example to
+compute the CRC of the input audio converted to PCM unsigned 8-bit
+and the input video converted to MPEG-2 video, use the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -c:a pcm_u8 -c:v mpeg2video -f crc -
+</pre></td></tr></table>
+
+<p>See also the <a href="#framecrc">framecrc</a> muxer.
+</p>
+<p><a name="framecrc"></a>
+</p><a name="framecrc-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-framecrc-1">22.3 framecrc</a></h2>
+
+<p>Per-packet CRC (Cyclic Redundancy Check) testing format.
+</p>
+<p>This muxer computes and prints the Adler-32 CRC for each audio
+and video packet. By default audio frames are converted to signed
+16-bit raw audio and video frames to raw video before computing the
+CRC.
+</p>
+<p>The output of the muxer consists of a line for each audio and video
+packet of the form:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>stream_index</var>, <var>packet_dts</var>, <var>packet_pts</var>, <var>packet_duration</var>, <var>packet_size</var>, 0x<var>CRC</var>
+</pre></td></tr></table>
+
+<p><var>CRC</var> is a hexadecimal number 0-padded to 8 digits containing the
+CRC of the packet.
+</p>
+<p>For example to compute the CRC of the audio and video frames in
+&lsquo;<tt>INPUT</tt>&rsquo;, converted to raw audio and video packets, and store it
+in the file &lsquo;<tt>out.crc</tt>&rsquo;:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f framecrc out.crc
+</pre></td></tr></table>
+
+<p>To print the information to stdout, use the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f framecrc -
+</pre></td></tr></table>
+
+<p>With <code>ffmpeg</code>, you can select the output format to which the
+audio and video frames are encoded before computing the CRC for each
+packet by specifying the audio and video codec. For example, to
+compute the CRC of each decoded input audio frame converted to PCM
+unsigned 8-bit and of each decoded input video frame converted to
+MPEG-2 video, use the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -c:a pcm_u8 -c:v mpeg2video -f framecrc -
+</pre></td></tr></table>
+
+<p>See also the <a href="#crc">crc</a> muxer.
+</p>
+<p><a name="framemd5"></a>
+</p><a name="framemd5-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-framemd5-1">22.4 framemd5</a></h2>
+
+<p>Per-packet MD5 testing format.
+</p>
+<p>This muxer computes and prints the MD5 hash for each audio
+and video packet. By default audio frames are converted to signed
+16-bit raw audio and video frames to raw video before computing the
+hash.
+</p>
+<p>The output of the muxer consists of a line for each audio and video
+packet of the form:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>stream_index</var>, <var>packet_dts</var>, <var>packet_pts</var>, <var>packet_duration</var>, <var>packet_size</var>, <var>MD5</var>
+</pre></td></tr></table>
+
+<p><var>MD5</var> is a hexadecimal number representing the computed MD5 hash
+for the packet.
+</p>
+<p>For example to compute the MD5 of the audio and video frames in
+&lsquo;<tt>INPUT</tt>&rsquo;, converted to raw audio and video packets, and store it
+in the file &lsquo;<tt>out.md5</tt>&rsquo;:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f framemd5 out.md5
+</pre></td></tr></table>
+
+<p>To print the information to stdout, use the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f framemd5 -
+</pre></td></tr></table>
+
+<p>See also the <a href="#md5">md5</a> muxer.
+</p>
+<p><a name="gif"></a>
+</p><a name="gif-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-gif-1">22.5 gif</a></h2>
+
+<p>Animated GIF muxer.
+</p>
+<p>It accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>loop</samp>&rsquo;</dt>
+<dd><p>Set the number of times to loop the output. Use <code>-1</code> for no loop, <code>0</code>
+for looping indefinitely (default).
+</p>
+</dd>
+<dt> &lsquo;<samp>final_delay</samp>&rsquo;</dt>
+<dd><p>Force the delay (expressed in centiseconds) after the last frame. Each frame
+ends with a delay until the next frame. The default is <code>-1</code>, which is a
+special value to tell the muxer to re-use the previous delay. In case of a
+loop, you might want to customize this value to mark a pause for instance.
+</p></dd>
+</dl>
+
+<p>For example, to encode a gif looping 10 times, with a 5 seconds delay between
+the loops:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -loop 10 -final_delay 500 out.gif
+</pre></td></tr></table>
+
+<p>Note 1: if you wish to extract the frames in separate GIF files, you need to
+force the <a href="#image2">image2</a> muxer:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -c:v gif -f image2 &quot;out%d.gif&quot;
+</pre></td></tr></table>
+
+<p>Note 2: the GIF format has a very small time base: the delay between two frames
+can not be smaller than one centi second.
+</p>
+<p><a name="hls"></a>
+</p><a name="hls-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-hls-1">22.6 hls</a></h2>
+
+<p>Apple HTTP Live Streaming muxer that segments MPEG-TS according to
+the HTTP Live Streaming specification.
+</p>
+<p>It creates a playlist file and numbered segment files. The output
+filename specifies the playlist filename; the segment filenames
+receive the same basename as the playlist, a sequential number and
+a .ts extension.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.nut out.m3u8
+</pre></td></tr></table>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-hls_time <var>seconds</var></samp>&rsquo;</dt>
+<dd><p>Set the segment length in seconds.
+</p></dd>
+<dt> &lsquo;<samp>-hls_list_size <var>size</var></samp>&rsquo;</dt>
+<dd><p>Set the maximum number of playlist entries.
+</p></dd>
+<dt> &lsquo;<samp>-hls_wrap <var>wrap</var></samp>&rsquo;</dt>
+<dd><p>Set the number after which index wraps.
+</p></dd>
+<dt> &lsquo;<samp>-start_number <var>number</var></samp>&rsquo;</dt>
+<dd><p>Start the sequence from <var>number</var>.
+</p></dd>
+</dl>
+
+<p><a name="ico"></a>
+</p><a name="ico-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-ico-1">22.7 ico</a></h2>
+
+<p>ICO file muxer.
+</p>
+<p>Microsoft&rsquo;s icon file format (ICO) has some strict limitations that should be noted:
+</p>
+<ul>
+<li>
+Size cannot exceed 256 pixels in any dimension
+
+</li><li>
+Only BMP and PNG images can be stored
+
+</li><li>
+If a BMP image is used, it must be one of the following pixel formats:
+<table><tr><td>&nbsp;</td><td><pre class="example">BMP Bit Depth      FFmpeg Pixel Format
+1bit               pal8
+4bit               pal8
+8bit               pal8
+16bit              rgb555le
+24bit              bgr24
+32bit              bgra
+</pre></td></tr></table>
+
+</li><li>
+If a BMP image is used, it must use the BITMAPINFOHEADER DIB header
+
+</li><li>
+If a PNG image is used, it must use the rgba pixel format
+</li></ul>
+
+<p><a name="image2"></a>
+</p><a name="image2-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-image2-1">22.8 image2</a></h2>
+
+<p>Image file muxer.
+</p>
+<p>The image file muxer writes video frames to image files.
+</p>
+<p>The output filenames are specified by a pattern, which can be used to
+produce sequentially numbered series of files.
+The pattern may contain the string &quot;%d&quot; or &quot;%0<var>N</var>d&quot;, this string
+specifies the position of the characters representing a numbering in
+the filenames. If the form &quot;%0<var>N</var>d&quot; is used, the string
+representing the number in each filename is 0-padded to <var>N</var>
+digits. The literal character &rsquo;%&rsquo; can be specified in the pattern with
+the string &quot;%%&quot;.
+</p>
+<p>If the pattern contains &quot;%d&quot; or &quot;%0<var>N</var>d&quot;, the first filename of
+the file list specified will contain the number 1, all the following
+numbers will be sequential.
+</p>
+<p>The pattern may contain a suffix which is used to automatically
+determine the format of the image files to write.
+</p>
+<p>For example the pattern &quot;img-%03d.bmp&quot; will specify a sequence of
+filenames of the form &lsquo;<tt>img-001.bmp</tt>&rsquo;, &lsquo;<tt>img-002.bmp</tt>&rsquo;, ...,
+&lsquo;<tt>img-010.bmp</tt>&rsquo;, etc.
+The pattern &quot;img%%-%d.jpg&quot; will specify a sequence of filenames of the
+form &lsquo;<tt>img%-1.jpg</tt>&rsquo;, &lsquo;<tt>img%-2.jpg</tt>&rsquo;, ..., &lsquo;<tt>img%-10.jpg</tt>&rsquo;,
+etc.
+</p>
+<p>The following example shows how to use <code>ffmpeg</code> for creating a
+sequence of files &lsquo;<tt>img-001.jpeg</tt>&rsquo;, &lsquo;<tt>img-002.jpeg</tt>&rsquo;, ...,
+taking one image every second from the input video:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -vsync 1 -r 1 -f image2 'img-%03d.jpeg'
+</pre></td></tr></table>
+
+<p>Note that with <code>ffmpeg</code>, if the format is not specified with the
+<code>-f</code> option and the output filename specifies an image file
+format, the image2 muxer is automatically selected, so the previous
+command can be written as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -vsync 1 -r 1 'img-%03d.jpeg'
+</pre></td></tr></table>
+
+<p>Note also that the pattern must not necessarily contain &quot;%d&quot; or
+&quot;%0<var>N</var>d&quot;, for example to create a single image file
+&lsquo;<tt>img.jpeg</tt>&rsquo; from the input video you can employ the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -f image2 -frames:v 1 img.jpeg
+</pre></td></tr></table>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>start_number <var>number</var></samp>&rsquo;</dt>
+<dd><p>Start the sequence from <var>number</var>. Default value is 1. Must be a
+non-negative number.
+</p>
+</dd>
+<dt> &lsquo;<samp>-update <var>number</var></samp>&rsquo;</dt>
+<dd><p>If <var>number</var> is nonzero, the filename will always be interpreted as just a
+filename, not a pattern, and this file will be continuously overwritten with new
+images.
+</p>
+</dd>
+</dl>
+
+<p>The image muxer supports the .Y.U.V image file format. This format is
+special in that that each image frame consists of three files, for
+each of the YUV420P components. To read or write this image file format,
+specify the name of the &rsquo;.Y&rsquo; file. The muxer will automatically open the
+&rsquo;.U&rsquo; and &rsquo;.V&rsquo; files as required.
+</p>
+<a name="matroska"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-matroska">22.9 matroska</a></h2>
+
+<p>Matroska container muxer.
+</p>
+<p>This muxer implements the matroska and webm container specs.
+</p>
+<p>The recognized metadata settings in this muxer are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>title=<var>title name</var></samp>&rsquo;</dt>
+<dd><p>Name provided to a single track
+</p></dd>
+</dl>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>language=<var>language name</var></samp>&rsquo;</dt>
+<dd><p>Specifies the language of the track in the Matroska languages form
+</p></dd>
+</dl>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>stereo_mode=<var>mode</var></samp>&rsquo;</dt>
+<dd><p>Stereo 3D video layout of two views in a single video track
+</p><dl compact="compact">
+<dt> &lsquo;<samp>mono</samp>&rsquo;</dt>
+<dd><p>video is not stereo
+</p></dd>
+<dt> &lsquo;<samp>left_right</samp>&rsquo;</dt>
+<dd><p>Both views are arranged side by side, Left-eye view is on the left
+</p></dd>
+<dt> &lsquo;<samp>bottom_top</samp>&rsquo;</dt>
+<dd><p>Both views are arranged in top-bottom orientation, Left-eye view is at bottom
+</p></dd>
+<dt> &lsquo;<samp>top_bottom</samp>&rsquo;</dt>
+<dd><p>Both views are arranged in top-bottom orientation, Left-eye view is on top
+</p></dd>
+<dt> &lsquo;<samp>checkerboard_rl</samp>&rsquo;</dt>
+<dd><p>Each view is arranged in a checkerboard interleaved pattern, Left-eye view being first
+</p></dd>
+<dt> &lsquo;<samp>checkerboard_lr</samp>&rsquo;</dt>
+<dd><p>Each view is arranged in a checkerboard interleaved pattern, Right-eye view being first
+</p></dd>
+<dt> &lsquo;<samp>row_interleaved_rl</samp>&rsquo;</dt>
+<dd><p>Each view is constituted by a row based interleaving, Right-eye view is first row
+</p></dd>
+<dt> &lsquo;<samp>row_interleaved_lr</samp>&rsquo;</dt>
+<dd><p>Each view is constituted by a row based interleaving, Left-eye view is first row
+</p></dd>
+<dt> &lsquo;<samp>col_interleaved_rl</samp>&rsquo;</dt>
+<dd><p>Both views are arranged in a column based interleaving manner, Right-eye view is first column
+</p></dd>
+<dt> &lsquo;<samp>col_interleaved_lr</samp>&rsquo;</dt>
+<dd><p>Both views are arranged in a column based interleaving manner, Left-eye view is first column
+</p></dd>
+<dt> &lsquo;<samp>anaglyph_cyan_red</samp>&rsquo;</dt>
+<dd><p>All frames are in anaglyph format viewable through red-cyan filters
+</p></dd>
+<dt> &lsquo;<samp>right_left</samp>&rsquo;</dt>
+<dd><p>Both views are arranged side by side, Right-eye view is on the left
+</p></dd>
+<dt> &lsquo;<samp>anaglyph_green_magenta</samp>&rsquo;</dt>
+<dd><p>All frames are in anaglyph format viewable through green-magenta filters
+</p></dd>
+<dt> &lsquo;<samp>block_lr</samp>&rsquo;</dt>
+<dd><p>Both eyes laced in one Block, Left-eye view is first
+</p></dd>
+<dt> &lsquo;<samp>block_rl</samp>&rsquo;</dt>
+<dd><p>Both eyes laced in one Block, Right-eye view is first
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<p>For example a 3D WebM clip can be created using the following command line:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i sample_left_right_clip.mpg -an -c:v libvpx -metadata stereo_mode=left_right -y stereo_clip.webm
+</pre></td></tr></table>
+
+<p>This muxer supports the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>reserve_index_space</samp>&rsquo;</dt>
+<dd><p>By default, this muxer writes the index for seeking (called cues in Matroska
+terms) at the end of the file, because it cannot know in advance how much space
+to leave for the index at the beginning of the file. However for some use cases
+&ndash; e.g.  streaming where seeking is possible but slow &ndash; it is useful to put the
+index at the beginning of the file.
+</p>
+<p>If this option is set to a non-zero value, the muxer will reserve a given amount
+of space in the file header and then try to write the cues there when the muxing
+finishes. If the available space does not suffice, muxing will fail. A safe size
+for most use cases should be about 50kB per hour of video.
+</p>
+<p>Note that cues are only written if the output is seekable and this option will
+have no effect if it is not.
+</p>
+</dd>
+</dl>
+
+<p><a name="md5"></a>
+</p><a name="md5-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-md5-1">22.10 md5</a></h2>
+
+<p>MD5 testing format.
+</p>
+<p>This muxer computes and prints the MD5 hash of all the input audio
+and video frames. By default audio frames are converted to signed
+16-bit raw audio and video frames to raw video before computing the
+hash.
+</p>
+<p>The output of the muxer consists of a single line of the form:
+MD5=<var>MD5</var>, where <var>MD5</var> is a hexadecimal number representing
+the computed MD5 hash.
+</p>
+<p>For example to compute the MD5 hash of the input converted to raw
+audio and video, and store it in the file &lsquo;<tt>out.md5</tt>&rsquo;:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f md5 out.md5
+</pre></td></tr></table>
+
+<p>You can print the MD5 to stdout with the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f md5 -
+</pre></td></tr></table>
+
+<p>See also the <a href="#framemd5">framemd5</a> muxer.
+</p>
+<a name="mov_002fmp4_002fismv"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-mov_002fmp4_002fismv">22.11 mov/mp4/ismv</a></h2>
+
+<p>MOV/MP4/ISMV (Smooth Streaming) muxer.
+</p>
+<p>The mov/mp4/ismv muxer supports fragmentation. Normally, a MOV/MP4
+file has all the metadata about all packets stored in one location
+(written at the end of the file, it can be moved to the start for
+better playback by adding <var>faststart</var> to the <var>movflags</var>, or
+using the <code>qt-faststart</code> tool). A fragmented
+file consists of a number of fragments, where packets and metadata
+about these packets are stored together. Writing a fragmented
+file has the advantage that the file is decodable even if the
+writing is interrupted (while a normal MOV/MP4 is undecodable if
+it is not properly finished), and it requires less memory when writing
+very long files (since writing normal MOV/MP4 files stores info about
+every single packet in memory until the file is closed). The downside
+is that it is less compatible with other applications.
+</p>
+<p>Fragmentation is enabled by setting one of the AVOptions that define
+how to cut the file into fragments:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-moov_size <var>bytes</var></samp>&rsquo;</dt>
+<dd><p>Reserves space for the moov atom at the beginning of the file instead of placing the
+moov atom at the end. If the space reserved is insufficient, muxing will fail.
+</p></dd>
+<dt> &lsquo;<samp>-movflags frag_keyframe</samp>&rsquo;</dt>
+<dd><p>Start a new fragment at each video keyframe.
+</p></dd>
+<dt> &lsquo;<samp>-frag_duration <var>duration</var></samp>&rsquo;</dt>
+<dd><p>Create fragments that are <var>duration</var> microseconds long.
+</p></dd>
+<dt> &lsquo;<samp>-frag_size <var>size</var></samp>&rsquo;</dt>
+<dd><p>Create fragments that contain up to <var>size</var> bytes of payload data.
+</p></dd>
+<dt> &lsquo;<samp>-movflags frag_custom</samp>&rsquo;</dt>
+<dd><p>Allow the caller to manually choose when to cut fragments, by
+calling <code>av_write_frame(ctx, NULL)</code> to write a fragment with
+the packets written so far. (This is only useful with other
+applications integrating libavformat, not from <code>ffmpeg</code>.)
+</p></dd>
+<dt> &lsquo;<samp>-min_frag_duration <var>duration</var></samp>&rsquo;</dt>
+<dd><p>Don&rsquo;t create fragments that are shorter than <var>duration</var> microseconds long.
+</p></dd>
+</dl>
+
+<p>If more than one condition is specified, fragments are cut when
+one of the specified conditions is fulfilled. The exception to this is
+<code>-min_frag_duration</code>, which has to be fulfilled for any of the other
+conditions to apply.
+</p>
+<p>Additionally, the way the output file is written can be adjusted
+through a few other options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-movflags empty_moov</samp>&rsquo;</dt>
+<dd><p>Write an initial moov atom directly at the start of the file, without
+describing any samples in it. Generally, an mdat/moov pair is written
+at the start of the file, as a normal MOV/MP4 file, containing only
+a short portion of the file. With this option set, there is no initial
+mdat atom, and the moov atom only describes the tracks but has
+a zero duration.
+</p>
+<p>Files written with this option set do not work in QuickTime.
+This option is implicitly set when writing ismv (Smooth Streaming) files.
+</p></dd>
+<dt> &lsquo;<samp>-movflags separate_moof</samp>&rsquo;</dt>
+<dd><p>Write a separate moof (movie fragment) atom for each track. Normally,
+packets for all tracks are written in a moof atom (which is slightly
+more efficient), but with this option set, the muxer writes one moof/mdat
+pair for each track, making it easier to separate tracks.
+</p>
+<p>This option is implicitly set when writing ismv (Smooth Streaming) files.
+</p></dd>
+<dt> &lsquo;<samp>-movflags faststart</samp>&rsquo;</dt>
+<dd><p>Run a second pass moving the index (moov atom) to the beginning of the file.
+This operation can take a while, and will not work in various situations such
+as fragmented output, thus it is not enabled by default.
+</p></dd>
+<dt> &lsquo;<samp>-movflags rtphint</samp>&rsquo;</dt>
+<dd><p>Add RTP hinting tracks to the output file.
+</p></dd>
+</dl>
+
+<p>Smooth Streaming content can be pushed in real time to a publishing
+point on IIS with this muxer. Example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re <var>&lt;normal input/transcoding options&gt;</var> -movflags isml+frag_keyframe -f ismv http://server/publishingpoint.isml/Streams(Encoder1)
+</pre></td></tr></table>
+
+<a name="mp3"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-mp3">22.12 mp3</a></h2>
+
+<p>The MP3 muxer writes a raw MP3 stream with an ID3v2 header at the beginning and
+optionally an ID3v1 tag at the end. ID3v2.3 and ID3v2.4 are supported, the
+<code>id3v2_version</code> option controls which one is used. The legacy ID3v1 tag is
+not written by default, but may be enabled with the <code>write_id3v1</code> option.
+</p>
+<p>For seekable output the muxer also writes a Xing frame at the beginning, which
+contains the number of frames in the file. It is useful for computing duration
+of VBR files.
+</p>
+<p>The muxer supports writing ID3v2 attached pictures (APIC frames). The pictures
+are supplied to the muxer in form of a video stream with a single packet. There
+can be any number of those streams, each will correspond to a single APIC frame.
+The stream metadata tags <var>title</var> and <var>comment</var> map to APIC
+<var>description</var> and <var>picture type</var> respectively. See
+<a href="http://id3.org/id3v2.4.0-frames">http://id3.org/id3v2.4.0-frames</a> for allowed picture types.
+</p>
+<p>Note that the APIC frames must be written at the beginning, so the muxer will
+buffer the audio frames until it gets all the pictures. It is therefore advised
+to provide the pictures as soon as possible to avoid excessive buffering.
+</p>
+<p>Examples:
+</p>
+<p>Write an mp3 with an ID3v2.3 header and an ID3v1 footer:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -id3v2_version 3 -write_id3v1 1 out.mp3
+</pre></td></tr></table>
+
+<p>To attach a picture to an mp3 file select both the audio and the picture stream
+with <code>map</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.mp3 -i cover.png -c copy -map 0 -map 1
+-metadata:s:v title=&quot;Album cover&quot; -metadata:s:v comment=&quot;Cover (Front)&quot; out.mp3
+</pre></td></tr></table>
+
+<a name="mpegts"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-mpegts">22.13 mpegts</a></h2>
+
+<p>MPEG transport stream muxer.
+</p>
+<p>This muxer implements ISO 13818-1 and part of ETSI EN 300 468.
+</p>
+<p>The muxer options are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-mpegts_original_network_id <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set the original_network_id (default 0x0001). This is unique identifier
+of a network in DVB. Its main use is in the unique identification of a
+service through the path Original_Network_ID, Transport_Stream_ID.
+</p></dd>
+<dt> &lsquo;<samp>-mpegts_transport_stream_id <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set the transport_stream_id (default 0x0001). This identifies a
+transponder in DVB.
+</p></dd>
+<dt> &lsquo;<samp>-mpegts_service_id <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set the service_id (default 0x0001) also known as program in DVB.
+</p></dd>
+<dt> &lsquo;<samp>-mpegts_pmt_start_pid <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set the first PID for PMT (default 0x1000, max 0x1f00).
+</p></dd>
+<dt> &lsquo;<samp>-mpegts_start_pid <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set the first PID for data packets (default 0x0100, max 0x0f00).
+</p></dd>
+<dt> &lsquo;<samp>-mpegts_m2ts_mode <var>number</var></samp>&rsquo;</dt>
+<dd><p>Enable m2ts mode if set to 1. Default value is -1 which disables m2ts mode.
+</p></dd>
+<dt> &lsquo;<samp>-muxrate <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set muxrate.
+</p></dd>
+<dt> &lsquo;<samp>-pes_payload_size <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set minimum PES packet payload in bytes.
+</p></dd>
+<dt> &lsquo;<samp>-mpegts_flags <var>flags</var></samp>&rsquo;</dt>
+<dd><p>Set flags (see below).
+</p></dd>
+<dt> &lsquo;<samp>-mpegts_copyts <var>number</var></samp>&rsquo;</dt>
+<dd><p>Preserve original timestamps, if value is set to 1. Default value is -1, which
+results in shifting timestamps so that they start from 0.
+</p></dd>
+<dt> &lsquo;<samp>-tables_version <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set PAT, PMT and SDT version (default 0, valid values are from 0 to 31, inclusively).
+This option allows updating stream structure so that standard consumer may
+detect the change. To do so, reopen output AVFormatContext (in case of API
+usage) or restart ffmpeg instance, cyclically changing tables_version value:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i source1.ts -codec copy -f mpegts -tables_version 0 udp://1.1.1.1:1111
+ffmpeg -i source2.ts -codec copy -f mpegts -tables_version 1 udp://1.1.1.1:1111
+...
+ffmpeg -i source3.ts -codec copy -f mpegts -tables_version 31 udp://1.1.1.1:1111
+ffmpeg -i source1.ts -codec copy -f mpegts -tables_version 0 udp://1.1.1.1:1111
+ffmpeg -i source2.ts -codec copy -f mpegts -tables_version 1 udp://1.1.1.1:1111
+...
+</pre></td></tr></table>
+</dd>
+</dl>
+
+<p>Option mpegts_flags may take a set of such flags:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>resend_headers</samp>&rsquo;</dt>
+<dd><p>Reemit PAT/PMT before writing the next packet.
+</p></dd>
+<dt> &lsquo;<samp>latm</samp>&rsquo;</dt>
+<dd><p>Use LATM packetization for AAC.
+</p></dd>
+</dl>
+
+<p>The recognized metadata settings in mpegts muxer are <code>service_provider</code>
+and <code>service_name</code>. If they are not set the default for
+<code>service_provider</code> is &quot;FFmpeg&quot; and the default for
+<code>service_name</code> is &quot;Service01&quot;.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i file.mpg -c copy \
+     -mpegts_original_network_id 0x1122 \
+     -mpegts_transport_stream_id 0x3344 \
+     -mpegts_service_id 0x5566 \
+     -mpegts_pmt_start_pid 0x1500 \
+     -mpegts_start_pid 0x150 \
+     -metadata service_provider=&quot;Some provider&quot; \
+     -metadata service_name=&quot;Some Channel&quot; \
+     -y out.ts
+</pre></td></tr></table>
+
+<a name="null-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-null-1">22.14 null</a></h2>
+
+<p>Null muxer.
+</p>
+<p>This muxer does not generate any output file, it is mainly useful for
+testing or benchmarking purposes.
+</p>
+<p>For example to benchmark decoding with <code>ffmpeg</code> you can use the
+command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -benchmark -i INPUT -f null out.null
+</pre></td></tr></table>
+
+<p>Note that the above command does not read or write the &lsquo;<tt>out.null</tt>&rsquo;
+file, but specifying the output file is required by the <code>ffmpeg</code>
+syntax.
+</p>
+<p>Alternatively you can write the command as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -benchmark -i INPUT -f null -
+</pre></td></tr></table>
+
+<a name="ogg"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-ogg">22.15 ogg</a></h2>
+
+<p>Ogg container muxer.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-page_duration <var>duration</var></samp>&rsquo;</dt>
+<dd><p>Preferred page duration, in microseconds. The muxer will attempt to create
+pages that are approximately <var>duration</var> microseconds long. This allows the
+user to compromise between seek granularity and container overhead. The default
+is 1 second. A value of 0 will fill all segments, making pages as large as
+possible. A value of 1 will effectively use 1 packet-per-page in most
+situations, giving a small seek granularity at the cost of additional container
+overhead.
+</p></dd>
+</dl>
+
+<a name="segment_002c-stream_005fsegment_002c-ssegment"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-segment_002c-stream_005fsegment_002c-ssegment">22.16 segment, stream_segment, ssegment</a></h2>
+
+<p>Basic stream segmenter.
+</p>
+<p>The segmenter muxer outputs streams to a number of separate files of nearly
+fixed duration. Output filename pattern can be set in a fashion similar to
+<a href="#image2">image2</a>.
+</p>
+<p><code>stream_segment</code> is a variant of the muxer used to write to
+streaming output formats, i.e. which do not require global headers,
+and is recommended for outputting e.g. to MPEG transport stream segments.
+<code>ssegment</code> is a shorter alias for <code>stream_segment</code>.
+</p>
+<p>Every segment starts with a keyframe of the selected reference stream,
+which is set through the &lsquo;<samp>reference_stream</samp>&rsquo; option.
+</p>
+<p>Note that if you want accurate splitting for a video file, you need to
+make the input key frames correspond to the exact splitting times
+expected by the segmenter, or the segment muxer will start the new
+segment with the key frame found next after the specified start
+time.
+</p>
+<p>The segment muxer works best with a single constant frame rate video.
+</p>
+<p>Optionally it can generate a list of the created segments, by setting
+the option <var>segment_list</var>. The list type is specified by the
+<var>segment_list_type</var> option. The entry filenames in the segment
+list are set by default to the basename of the corresponding segment
+files.
+</p>
+<p>The segment muxer supports the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>reference_stream <var>specifier</var></samp>&rsquo;</dt>
+<dd><p>Set the reference stream, as specified by the string <var>specifier</var>.
+If <var>specifier</var> is set to <code>auto</code>, the reference is choosen
+automatically. Otherwise it must be a stream specifier (see the &ldquo;Stream
+specifiers&rdquo; chapter in the ffmpeg manual) which specifies the
+reference stream. The default value is <code>auto</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_format <var>format</var></samp>&rsquo;</dt>
+<dd><p>Override the inner container format, by default it is guessed by the filename
+extension.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_list <var>name</var></samp>&rsquo;</dt>
+<dd><p>Generate also a listfile named <var>name</var>. If not specified no
+listfile is generated.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_list_flags <var>flags</var></samp>&rsquo;</dt>
+<dd><p>Set flags affecting the segment list generation.
+</p>
+<p>It currently supports the following flags:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>cache</samp>&rsquo;</dt>
+<dd><p>Allow caching (only affects M3U8 list files).
+</p>
+</dd>
+<dt> &lsquo;<samp>live</samp>&rsquo;</dt>
+<dd><p>Allow live-friendly file generation.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>segment_list_size <var>size</var></samp>&rsquo;</dt>
+<dd><p>Update the list file so that it contains at most the last <var>size</var>
+segments. If 0 the list file will contain all the segments. Default
+value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_list_entry_prefix <var>prefix</var></samp>&rsquo;</dt>
+<dd><p>Set <var>prefix</var> to prepend to the name of each entry filename. By
+default no prefix is applied.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_list_type <var>type</var></samp>&rsquo;</dt>
+<dd><p>Specify the format for the segment list file.
+</p>
+<p>The following values are recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>flat</samp>&rsquo;</dt>
+<dd><p>Generate a flat list for the created segments, one segment per line.
+</p>
+</dd>
+<dt> &lsquo;<samp>csv, ext</samp>&rsquo;</dt>
+<dd><p>Generate a list for the created segments, one segment per line,
+each line matching the format (comma-separated values):
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>segment_filename</var>,<var>segment_start_time</var>,<var>segment_end_time</var>
+</pre></td></tr></table>
+
+<p><var>segment_filename</var> is the name of the output file generated by the
+muxer according to the provided pattern. CSV escaping (according to
+RFC4180) is applied if required.
+</p>
+<p><var>segment_start_time</var> and <var>segment_end_time</var> specify
+the segment start and end time expressed in seconds.
+</p>
+<p>A list file with the suffix <code>&quot;.csv&quot;</code> or <code>&quot;.ext&quot;</code> will
+auto-select this format.
+</p>
+<p>&lsquo;<samp>ext</samp>&rsquo; is deprecated in favor or &lsquo;<samp>csv</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>ffconcat</samp>&rsquo;</dt>
+<dd><p>Generate an ffconcat file for the created segments. The resulting file
+can be read using the FFmpeg <a href="#concat">concat</a> demuxer.
+</p>
+<p>A list file with the suffix <code>&quot;.ffcat&quot;</code> or <code>&quot;.ffconcat&quot;</code> will
+auto-select this format.
+</p>
+</dd>
+<dt> &lsquo;<samp>m3u8</samp>&rsquo;</dt>
+<dd><p>Generate an extended M3U8 file, version 3, compliant with
+<a href="http://tools.ietf.org/id/draft-pantos-http-live-streaming">http://tools.ietf.org/id/draft-pantos-http-live-streaming</a>.
+</p>
+<p>A list file with the suffix <code>&quot;.m3u8&quot;</code> will auto-select this format.
+</p></dd>
+</dl>
+
+<p>If not specified the type is guessed from the list file name suffix.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_time <var>time</var></samp>&rsquo;</dt>
+<dd><p>Set segment duration to <var>time</var>, the value must be a duration
+specification. Default value is &quot;2&quot;. See also the
+&lsquo;<samp>segment_times</samp>&rsquo; option.
+</p>
+<p>Note that splitting may not be accurate, unless you force the
+reference stream key-frames at the given time. See the introductory
+notice and the examples below.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_time_delta <var>delta</var></samp>&rsquo;</dt>
+<dd><p>Specify the accuracy time when selecting the start time for a
+segment, expressed as a duration specification. Default value is &quot;0&quot;.
+</p>
+<p>When delta is specified a key-frame will start a new segment if its
+PTS satisfies the relation:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">PTS &gt;= start_time - time_delta
+</pre></td></tr></table>
+
+<p>This option is useful when splitting video content, which is always
+split at GOP boundaries, in case a key frame is found just before the
+specified split time.
+</p>
+<p>In particular may be used in combination with the &lsquo;<tt>ffmpeg</tt>&rsquo; option
+<var>force_key_frames</var>. The key frame times specified by
+<var>force_key_frames</var> may not be set accurately because of rounding
+issues, with the consequence that a key frame time may result set just
+before the specified time. For constant frame rate videos a value of
+1/2*<var>frame_rate</var> should address the worst case mismatch between
+the specified time and the time set by <var>force_key_frames</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_times <var>times</var></samp>&rsquo;</dt>
+<dd><p>Specify a list of split points. <var>times</var> contains a list of comma
+separated duration specifications, in increasing order. See also
+the &lsquo;<samp>segment_time</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_frames <var>frames</var></samp>&rsquo;</dt>
+<dd><p>Specify a list of split video frame numbers. <var>frames</var> contains a
+list of comma separated integer numbers, in increasing order.
+</p>
+<p>This option specifies to start a new segment whenever a reference
+stream key frame is found and the sequential number (starting from 0)
+of the frame is greater or equal to the next value in the list.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_wrap <var>limit</var></samp>&rsquo;</dt>
+<dd><p>Wrap around segment index once it reaches <var>limit</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_start_number <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set the sequence number of the first segment. Defaults to <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>reset_timestamps <var>1|0</var></samp>&rsquo;</dt>
+<dd><p>Reset timestamps at the begin of each segment, so that each segment
+will start with near-zero timestamps. It is meant to ease the playback
+of the generated segments. May not work with some combinations of
+muxers/codecs. It is set to <code>0</code> by default.
+</p>
+</dd>
+<dt> &lsquo;<samp>initial_offset <var>offset</var></samp>&rsquo;</dt>
+<dd><p>Specify timestamp offset to apply to the output packet timestamps. The
+argument must be a time duration specification, and defaults to 0.
+</p></dd>
+</dl>
+
+<a name="Examples-41"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-41">22.16.1 Examples</a></h3>
+
+<ul>
+<li>
+To remux the content of file &lsquo;<tt>in.mkv</tt>&rsquo; to a list of segments
+&lsquo;<tt>out-000.nut</tt>&rsquo;, &lsquo;<tt>out-001.nut</tt>&rsquo;, etc., and write the list of
+generated segments to &lsquo;<tt>out.list</tt>&rsquo;:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.mkv -codec copy -map 0 -f segment -segment_list out.list out%03d.nut
+</pre></td></tr></table>
+
+</li><li>
+As the example above, but segment the input file according to the split
+points specified by the <var>segment_times</var> option:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.mkv -codec copy -map 0 -f segment -segment_list out.csv -segment_times 1,2,3,5,8,13,21 out%03d.nut
+</pre></td></tr></table>
+
+</li><li>
+As the example above, but use the <code>ffmpeg</code> &lsquo;<samp>force_key_frames</samp>&rsquo;
+option to force key frames in the input at the specified location, together
+with the segment option &lsquo;<samp>segment_time_delta</samp>&rsquo; to account for
+possible roundings operated when setting key frame times.
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.mkv -force_key_frames 1,2,3,5,8,13,21 -codec:v mpeg4 -codec:a pcm_s16le -map 0 \
+-f segment -segment_list out.csv -segment_times 1,2,3,5,8,13,21 -segment_time_delta 0.05 out%03d.nut
+</pre></td></tr></table>
+<p>In order to force key frames on the input file, transcoding is
+required.
+</p>
+</li><li>
+Segment the input file by splitting the input file according to the
+frame numbers sequence specified with the &lsquo;<samp>segment_frames</samp>&rsquo; option:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.mkv -codec copy -map 0 -f segment -segment_list out.csv -segment_frames 100,200,300,500,800 out%03d.nut
+</pre></td></tr></table>
+
+</li><li>
+To convert the &lsquo;<tt>in.mkv</tt>&rsquo; to TS segments using the <code>libx264</code>
+and <code>libfaac</code> encoders:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.mkv -map 0 -codec:v libx264 -codec:a libfaac -f ssegment -segment_list out.list out%03d.ts
+</pre></td></tr></table>
+
+</li><li>
+Segment the input file, and create an M3U8 live playlist (can be used
+as live HLS source):
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i in.mkv -codec copy -map 0 -f segment -segment_list playlist.m3u8 \
+-segment_list_flags +live -segment_time 10 out%03d.mkv
+</pre></td></tr></table>
+</li></ul>
+
+<a name="tee"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-tee">22.17 tee</a></h2>
+
+<p>The tee muxer can be used to write the same data to several files or any
+other kind of muxer. It can be used, for example, to both stream a video to
+the network and save it to disk at the same time.
+</p>
+<p>It is different from specifying several outputs to the <code>ffmpeg</code>
+command-line tool because the audio and video data will be encoded only once
+with the tee muxer; encoding can be a very expensive process. It is not
+useful when using the libavformat API directly because it is then possible
+to feed the same packets to several muxers directly.
+</p>
+<p>The slave outputs are specified in the file name given to the muxer,
+separated by &rsquo;|&rsquo;. If any of the slave name contains the &rsquo;|&rsquo; separator,
+leading or trailing spaces or any special character, it must be
+escaped (see the &ldquo;Quoting and escaping&rdquo; section in the ffmpeg-utils
+manual).
+</p>
+<p>Muxer options can be specified for each slave by prepending them as a list of
+<var>key</var>=<var>value</var> pairs separated by &rsquo;:&rsquo;, between square brackets. If
+the options values contain a special character or the &rsquo;:&rsquo; separator, they
+must be escaped; note that this is a second level escaping.
+</p>
+<p>The following special options are also recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>f</samp>&rsquo;</dt>
+<dd><p>Specify the format name. Useful if it cannot be guessed from the
+output name suffix.
+</p>
+</dd>
+<dt> &lsquo;<samp>bsfs[/<var>spec</var>]</samp>&rsquo;</dt>
+<dd><p>Specify a list of bitstream filters to apply to the specified
+output. It is possible to specify to which streams a given bitstream
+filter applies, by appending a stream specifier to the option
+separated by <code>/</code>. If the stream specifier is not specified, the
+bistream filters will be applied to all streams in the output.
+</p>
+<p>Several bitstream filters can be specified, separated by &quot;,&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>select</samp>&rsquo;</dt>
+<dd><p>Select the streams that should be mapped to the slave output,
+specified by a stream specifier. If not specified, this defaults to
+all the input streams.
+</p></dd>
+</dl>
+
+<p>Some examples follow.
+</p><ul>
+<li>
+Encode something and both archive it in a WebM file and stream it
+as MPEG-TS over UDP (the streams need to be explicitly mapped):
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i ... -c:v libx264 -c:a mp2 -f tee -map 0:v -map 0:a
+  &quot;archive-20121107.mkv|[f=mpegts]udp://10.0.1.255:1234/&quot;
+</pre></td></tr></table>
+
+</li><li>
+Use <code>ffmpeg</code> to encode the input, and send the output
+to three different destinations. The <code>dump_extra</code> bitstream
+filter is used to add extradata information to all the output video
+keyframes packets, as requested by the MPEG-TS format. The select
+option is applied to &lsquo;<tt>out.aac</tt>&rsquo; in order to make it contain only
+audio packets.
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i ... -map 0 -flags +global_header -c:v libx264 -c:a aac -strict experimental
+       -f tee &quot;[bsfs/v=dump_extra]out.ts|[movflags=+faststart]out.mp4|[select=a]out.aac&quot;
+</pre></td></tr></table>
+</li></ul>
+
+<p>Note: some codecs may need different options depending on the output format;
+the auto-detection of this can not work with the tee muxer. The main example
+is the &lsquo;<samp>global_header</samp>&rsquo; flag.
+</p>
+<a name="Metadata"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Metadata">23. Metadata</a></h1>
+
+<p>FFmpeg is able to dump metadata from media files into a simple UTF-8-encoded
+INI-like text file and then load it back using the metadata muxer/demuxer.
+</p>
+<p>The file format is as follows:
+</p><ol>
+<li>
+A file consists of a header and a number of metadata tags divided into sections,
+each on its own line.
+
+</li><li>
+The header is a &rsquo;;FFMETADATA&rsquo; string, followed by a version number (now 1).
+
+</li><li>
+Metadata tags are of the form &rsquo;key=value&rsquo;
+
+</li><li>
+Immediately after header follows global metadata
+
+</li><li>
+After global metadata there may be sections with per-stream/per-chapter
+metadata.
+
+</li><li>
+A section starts with the section name in uppercase (i.e. STREAM or CHAPTER) in
+brackets (&rsquo;[&rsquo;, &rsquo;]&rsquo;) and ends with next section or end of file.
+
+</li><li>
+At the beginning of a chapter section there may be an optional timebase to be
+used for start/end values. It must be in form &rsquo;TIMEBASE=num/den&rsquo;, where num and
+den are integers. If the timebase is missing then start/end times are assumed to
+be in milliseconds.
+Next a chapter section must contain chapter start and end times in form
+&rsquo;START=num&rsquo;, &rsquo;END=num&rsquo;, where num is a positive integer.
+
+</li><li>
+Empty lines and lines starting with &rsquo;;&rsquo; or &rsquo;#&rsquo; are ignored.
+
+</li><li>
+Metadata keys or values containing special characters (&rsquo;=&rsquo;, &rsquo;;&rsquo;, &rsquo;#&rsquo;, &rsquo;\&rsquo; and a
+newline) must be escaped with a backslash &rsquo;\&rsquo;.
+
+</li><li>
+Note that whitespace in metadata (e.g. foo = bar) is considered to be a part of
+the tag (in the example above key is &rsquo;foo &rsquo;, value is &rsquo; bar&rsquo;).
+</li></ol>
+
+<p>A ffmetadata file might look like this:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">;FFMETADATA1
+title=bike\\shed
+;this is a comment
+artist=FFmpeg troll team
+
+[CHAPTER]
+TIMEBASE=1/1000
+START=0
+#chapter ends at 0:01:00
+END=60000
+title=chapter \#1
+[STREAM]
+title=multi\
+line
+</pre></td></tr></table>
+
+<p>By using the ffmetadata muxer and demuxer it is possible to extract
+metadata from an input file to an ffmetadata file, and then transcode
+the file into an output file with the edited ffmetadata file.
+</p>
+<p>Extracting an ffmetadata file with &lsquo;<tt>ffmpeg</tt>&rsquo; goes as follows:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f ffmetadata FFMETADATAFILE
+</pre></td></tr></table>
+
+<p>Reinserting edited metadata information from the FFMETADATAFILE file can
+be done as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -i FFMETADATAFILE -map_metadata 1 -codec copy OUTPUT
+</pre></td></tr></table>
+
+<a name="Protocols"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Protocols">24. Protocols</a></h1>
+
+<p>Protocols are configured elements in FFmpeg that enable access to
+resources that require specific protocols.
+</p>
+<p>When you configure your FFmpeg build, all the supported protocols are
+enabled by default. You can list all available ones using the
+configure option &quot;&ndash;list-protocols&quot;.
+</p>
+<p>You can disable all the protocols using the configure option
+&quot;&ndash;disable-protocols&quot;, and selectively enable a protocol using the
+option &quot;&ndash;enable-protocol=<var>PROTOCOL</var>&quot;, or you can disable a
+particular protocol using the option
+&quot;&ndash;disable-protocol=<var>PROTOCOL</var>&quot;.
+</p>
+<p>The option &quot;-protocols&quot; of the ff* tools will display the list of
+supported protocols.
+</p>
+<p>A description of the currently available protocols follows.
+</p>
+<a name="bluray"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-bluray">24.1 bluray</a></h2>
+
+<p>Read BluRay playlist.
+</p>
+<p>The accepted options are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>angle</samp>&rsquo;</dt>
+<dd><p>BluRay angle
+</p>
+</dd>
+<dt> &lsquo;<samp>chapter</samp>&rsquo;</dt>
+<dd><p>Start chapter (1...N)
+</p>
+</dd>
+<dt> &lsquo;<samp>playlist</samp>&rsquo;</dt>
+<dd><p>Playlist to read (BDMV/PLAYLIST/?????.mpls)
+</p>
+</dd>
+</dl>
+
+<p>Examples:
+</p>
+<p>Read longest playlist from BluRay mounted to /mnt/bluray:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">bluray:/mnt/bluray
+</pre></td></tr></table>
+
+<p>Read angle 2 of playlist 4 from BluRay mounted to /mnt/bluray, start from chapter 2:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">-playlist 4 -angle 2 -chapter 2 bluray:/mnt/bluray
+</pre></td></tr></table>
+
+<a name="cache"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-cache">24.2 cache</a></h2>
+
+<p>Caching wrapper for input stream.
+</p>
+<p>Cache the input stream to temporary file. It brings seeking capability to live streams.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">cache:<var>URL</var>
+</pre></td></tr></table>
+
+<a name="concat-2"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-concat-2">24.3 concat</a></h2>
+
+<p>Physical concatenation protocol.
+</p>
+<p>Allow to read and seek from many resource in sequence as if they were
+a unique resource.
+</p>
+<p>A URL accepted by this protocol has the syntax:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">concat:<var>URL1</var>|<var>URL2</var>|...|<var>URLN</var>
+</pre></td></tr></table>
+
+<p>where <var>URL1</var>, <var>URL2</var>, ..., <var>URLN</var> are the urls of the
+resource to be concatenated, each one possibly specifying a distinct
+protocol.
+</p>
+<p>For example to read a sequence of files &lsquo;<tt>split1.mpeg</tt>&rsquo;,
+&lsquo;<tt>split2.mpeg</tt>&rsquo;, &lsquo;<tt>split3.mpeg</tt>&rsquo; with <code>ffplay</code> use the
+command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay concat:split1.mpeg\|split2.mpeg\|split3.mpeg
+</pre></td></tr></table>
+
+<p>Note that you may need to escape the character &quot;|&quot; which is special for
+many shells.
+</p>
+<a name="crypto"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-crypto">24.4 crypto</a></h2>
+
+<p>AES-encrypted stream reading protocol.
+</p>
+<p>The accepted options are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>key</samp>&rsquo;</dt>
+<dd><p>Set the AES decryption key binary block from given hexadecimal representation.
+</p>
+</dd>
+<dt> &lsquo;<samp>iv</samp>&rsquo;</dt>
+<dd><p>Set the AES decryption initialization vector binary block from given hexadecimal representation.
+</p></dd>
+</dl>
+
+<p>Accepted URL formats:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">crypto:<var>URL</var>
+crypto+<var>URL</var>
+</pre></td></tr></table>
+
+<a name="data"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-data">24.5 data</a></h2>
+
+<p>Data in-line in the URI. See <a href="http://en.wikipedia.org/wiki/Data_URI_scheme">http://en.wikipedia.org/wiki/Data_URI_scheme</a>.
+</p>
+<p>For example, to convert a GIF file given inline with <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i &quot;data:image/gif;base64,R0lGODdhCAAIAMIEAAAAAAAA//8AAP//AP///////////////ywAAAAACAAIAAADF0gEDLojDgdGiJdJqUX02iB4E8Q9jUMkADs=&quot; smiley.png
+</pre></td></tr></table>
+
+<a name="file"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-file">24.6 file</a></h2>
+
+<p>File access protocol.
+</p>
+<p>Allow to read from or read to a file.
+</p>
+<p>For example to read from a file &lsquo;<tt>input.mpeg</tt>&rsquo; with <code>ffmpeg</code>
+use the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i file:input.mpeg output.mpeg
+</pre></td></tr></table>
+
+<p>The ff* tools default to the file protocol, that is a resource
+specified with the name &quot;FILE.mpeg&quot; is interpreted as the URL
+&quot;file:FILE.mpeg&quot;.
+</p>
+<p>This protocol accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>truncate</samp>&rsquo;</dt>
+<dd><p>Truncate existing files on write, if set to 1. A value of 0 prevents
+truncating. Default value is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>blocksize</samp>&rsquo;</dt>
+<dd><p>Set I/O operation maximum block size, in bytes. Default value is
+<code>INT_MAX</code>, which results in not limiting the requested block size.
+Setting this value reasonably low improves user termination request reaction
+time, which is valuable for files on slow medium.
+</p></dd>
+</dl>
+
+<a name="ftp"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-ftp">24.7 ftp</a></h2>
+
+<p>FTP (File Transfer Protocol).
+</p>
+<p>Allow to read from or write to remote resources using FTP protocol.
+</p>
+<p>Following syntax is required.
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ftp://[user[:password]@]server[:port]/path/to/remote/resource.mpeg
+</pre></td></tr></table>
+
+<p>This protocol accepts the following options.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>timeout</samp>&rsquo;</dt>
+<dd><p>Set timeout of socket I/O operations used by the underlying low level
+operation. By default it is set to -1, which means that the timeout is
+not specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>ftp-anonymous-password</samp>&rsquo;</dt>
+<dd><p>Password used when login as anonymous user. Typically an e-mail address
+should be used.
+</p>
+</dd>
+<dt> &lsquo;<samp>ftp-write-seekable</samp>&rsquo;</dt>
+<dd><p>Control seekability of connection during encoding. If set to 1 the
+resource is supposed to be seekable, if set to 0 it is assumed not
+to be seekable. Default value is 0.
+</p></dd>
+</dl>
+
+<p>NOTE: Protocol can be used as output, but it is recommended to not do
+it, unless special care is taken (tests, customized server configuration
+etc.). Different FTP servers behave in different way during seek
+operation. ff* tools may produce incomplete content due to server limitations.
+</p>
+<a name="gopher"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-gopher">24.8 gopher</a></h2>
+
+<p>Gopher protocol.
+</p>
+<a name="hls-2"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-hls-2">24.9 hls</a></h2>
+
+<p>Read Apple HTTP Live Streaming compliant segmented stream as
+a uniform one. The M3U8 playlists describing the segments can be
+remote HTTP resources or local files, accessed using the standard
+file protocol.
+The nested protocol is declared by specifying
+&quot;+<var>proto</var>&quot; after the hls URI scheme name, where <var>proto</var>
+is either &quot;file&quot; or &quot;http&quot;.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">hls+http://host/path/to/remote/resource.m3u8
+hls+file://path/to/local/resource.m3u8
+</pre></td></tr></table>
+
+<p>Using this protocol is discouraged - the hls demuxer should work
+just as well (if not, please report the issues) and is more complete.
+To use the hls demuxer instead, simply use the direct URLs to the
+m3u8 files.
+</p>
+<a name="http"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-http">24.10 http</a></h2>
+
+<p>HTTP (Hyper Text Transfer Protocol).
+</p>
+<p>This protocol accepts the following options.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>seekable</samp>&rsquo;</dt>
+<dd><p>Control seekability of connection. If set to 1 the resource is
+supposed to be seekable, if set to 0 it is assumed not to be seekable,
+if set to -1 it will try to autodetect if it is seekable. Default
+value is -1.
+</p>
+</dd>
+<dt> &lsquo;<samp>chunked_post</samp>&rsquo;</dt>
+<dd><p>If set to 1 use chunked transfer-encoding for posts, default is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>headers</samp>&rsquo;</dt>
+<dd><p>Set custom HTTP headers, can override built in default headers. The
+value must be a string encoding the headers.
+</p>
+</dd>
+<dt> &lsquo;<samp>content_type</samp>&rsquo;</dt>
+<dd><p>Force a content type.
+</p>
+</dd>
+<dt> &lsquo;<samp>user-agent</samp>&rsquo;</dt>
+<dd><p>Override User-Agent header. If not specified the protocol will use a
+string describing the libavformat build.
+</p>
+</dd>
+<dt> &lsquo;<samp>multiple_requests</samp>&rsquo;</dt>
+<dd><p>Use persistent connections if set to 1. By default it is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>post_data</samp>&rsquo;</dt>
+<dd><p>Set custom HTTP post data.
+</p>
+</dd>
+<dt> &lsquo;<samp>timeout</samp>&rsquo;</dt>
+<dd><p>Set timeout of socket I/O operations used by the underlying low level
+operation. By default it is set to -1, which means that the timeout is
+not specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>mime_type</samp>&rsquo;</dt>
+<dd><p>Set MIME type.
+</p>
+</dd>
+<dt> &lsquo;<samp>icy</samp>&rsquo;</dt>
+<dd><p>If set to 1 request ICY (SHOUTcast) metadata from the server. If the server
+supports this, the metadata has to be retrieved by the application by reading
+the &lsquo;<samp>icy_metadata_headers</samp>&rsquo; and &lsquo;<samp>icy_metadata_packet</samp>&rsquo; options.
+The default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>icy_metadata_headers</samp>&rsquo;</dt>
+<dd><p>If the server supports ICY metadata, this contains the ICY specific HTTP reply
+headers, separated with newline characters.
+</p>
+</dd>
+<dt> &lsquo;<samp>icy_metadata_packet</samp>&rsquo;</dt>
+<dd><p>If the server supports ICY metadata, and &lsquo;<samp>icy</samp>&rsquo; was set to 1, this
+contains the last non-empty metadata packet sent by the server.
+</p>
+</dd>
+<dt> &lsquo;<samp>cookies</samp>&rsquo;</dt>
+<dd><p>Set the cookies to be sent in future requests. The format of each cookie is the
+same as the value of a Set-Cookie HTTP response field. Multiple cookies can be
+delimited by a newline character.
+</p></dd>
+</dl>
+
+<a name="HTTP-Cookies"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-HTTP-Cookies">24.10.1 HTTP Cookies</a></h3>
+
+<p>Some HTTP requests will be denied unless cookie values are passed in with the
+request. The &lsquo;<samp>cookies</samp>&rsquo; option allows these cookies to be specified. At
+the very least, each cookie must specify a value along with a path and domain.
+HTTP requests that match both the domain and path will automatically include the
+cookie value in the HTTP Cookie header field. Multiple cookies can be delimited
+by a newline.
+</p>
+<p>The required syntax to play a stream specifying a cookie is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay -cookies &quot;nlqptid=nltid=tsn; path=/; domain=somedomain.com;&quot; http://somedomain.com/somestream.m3u8
+</pre></td></tr></table>
+
+<a name="mmst"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-mmst">24.11 mmst</a></h2>
+
+<p>MMS (Microsoft Media Server) protocol over TCP.
+</p>
+<a name="mmsh"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-mmsh">24.12 mmsh</a></h2>
+
+<p>MMS (Microsoft Media Server) protocol over HTTP.
+</p>
+<p>The required syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">mmsh://<var>server</var>[:<var>port</var>][/<var>app</var>][/<var>playpath</var>]
+</pre></td></tr></table>
+
+<a name="md5-2"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-md5-2">24.13 md5</a></h2>
+
+<p>MD5 output protocol.
+</p>
+<p>Computes the MD5 hash of the data to be written, and on close writes
+this to the designated output or stdout if none is specified. It can
+be used to test muxers without writing an actual file.
+</p>
+<p>Some examples follow.
+</p><table><tr><td>&nbsp;</td><td><pre class="example"># Write the MD5 hash of the encoded AVI file to the file output.avi.md5.
+ffmpeg -i input.flv -f avi -y md5:output.avi.md5
+
+# Write the MD5 hash of the encoded AVI file to stdout.
+ffmpeg -i input.flv -f avi -y md5:
+</pre></td></tr></table>
+
+<p>Note that some formats (typically MOV) require the output protocol to
+be seekable, so they will fail with the MD5 output protocol.
+</p>
+<a name="pipe"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-pipe">24.14 pipe</a></h2>
+
+<p>UNIX pipe access protocol.
+</p>
+<p>Allow to read and write from UNIX pipes.
+</p>
+<p>The accepted syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pipe:[<var>number</var>]
+</pre></td></tr></table>
+
+<p><var>number</var> is the number corresponding to the file descriptor of the
+pipe (e.g. 0 for stdin, 1 for stdout, 2 for stderr).  If <var>number</var>
+is not specified, by default the stdout file descriptor will be used
+for writing, stdin for reading.
+</p>
+<p>For example to read from stdin with <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">cat test.wav | ffmpeg -i pipe:0
+# ...this is the same as...
+cat test.wav | ffmpeg -i pipe:
+</pre></td></tr></table>
+
+<p>For writing to stdout with <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i test.wav -f avi pipe:1 | cat &gt; test.avi
+# ...this is the same as...
+ffmpeg -i test.wav -f avi pipe: | cat &gt; test.avi
+</pre></td></tr></table>
+
+<p>This protocol accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>blocksize</samp>&rsquo;</dt>
+<dd><p>Set I/O operation maximum block size, in bytes. Default value is
+<code>INT_MAX</code>, which results in not limiting the requested block size.
+Setting this value reasonably low improves user termination request reaction
+time, which is valuable if data transmission is slow.
+</p></dd>
+</dl>
+
+<p>Note that some formats (typically MOV), require the output protocol to
+be seekable, so they will fail with the pipe output protocol.
+</p>
+<a name="rtmp"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-rtmp">24.15 rtmp</a></h2>
+
+<p>Real-Time Messaging Protocol.
+</p>
+<p>The Real-Time Messaging Protocol (RTMP) is used for streaming multimedia
+content across a TCP/IP network.
+</p>
+<p>The required syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">rtmp://[<var>username</var>:<var>password</var>@]<var>server</var>[:<var>port</var>][/<var>app</var>][/<var>instance</var>][/<var>playpath</var>]
+</pre></td></tr></table>
+
+<p>The accepted parameters are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>username</samp>&rsquo;</dt>
+<dd><p>An optional username (mostly for publishing).
+</p>
+</dd>
+<dt> &lsquo;<samp>password</samp>&rsquo;</dt>
+<dd><p>An optional password (mostly for publishing).
+</p>
+</dd>
+<dt> &lsquo;<samp>server</samp>&rsquo;</dt>
+<dd><p>The address of the RTMP server.
+</p>
+</dd>
+<dt> &lsquo;<samp>port</samp>&rsquo;</dt>
+<dd><p>The number of the TCP port to use (by default is 1935).
+</p>
+</dd>
+<dt> &lsquo;<samp>app</samp>&rsquo;</dt>
+<dd><p>It is the name of the application to access. It usually corresponds to
+the path where the application is installed on the RTMP server
+(e.g. &lsquo;<tt>/ondemand/</tt>&rsquo;, &lsquo;<tt>/flash/live/</tt>&rsquo;, etc.). You can override
+the value parsed from the URI through the <code>rtmp_app</code> option, too.
+</p>
+</dd>
+<dt> &lsquo;<samp>playpath</samp>&rsquo;</dt>
+<dd><p>It is the path or name of the resource to play with reference to the
+application specified in <var>app</var>, may be prefixed by &quot;mp4:&quot;. You
+can override the value parsed from the URI through the <code>rtmp_playpath</code>
+option, too.
+</p>
+</dd>
+<dt> &lsquo;<samp>listen</samp>&rsquo;</dt>
+<dd><p>Act as a server, listening for an incoming connection.
+</p>
+</dd>
+<dt> &lsquo;<samp>timeout</samp>&rsquo;</dt>
+<dd><p>Maximum time to wait for the incoming connection. Implies listen.
+</p></dd>
+</dl>
+
+<p>Additionally, the following parameters can be set via command line options
+(or in code via <code>AVOption</code>s):
+</p><dl compact="compact">
+<dt> &lsquo;<samp>rtmp_app</samp>&rsquo;</dt>
+<dd><p>Name of application to connect on the RTMP server. This option
+overrides the parameter specified in the URI.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_buffer</samp>&rsquo;</dt>
+<dd><p>Set the client buffer time in milliseconds. The default is 3000.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_conn</samp>&rsquo;</dt>
+<dd><p>Extra arbitrary AMF connection parameters, parsed from a string,
+e.g. like <code>B:1 S:authMe O:1 NN:code:1.23 NS:flag:ok O:0</code>.
+Each value is prefixed by a single character denoting the type,
+B for Boolean, N for number, S for string, O for object, or Z for null,
+followed by a colon. For Booleans the data must be either 0 or 1 for
+FALSE or TRUE, respectively.  Likewise for Objects the data must be 0 or
+1 to end or begin an object, respectively. Data items in subobjects may
+be named, by prefixing the type with &rsquo;N&rsquo; and specifying the name before
+the value (i.e. <code>NB:myFlag:1</code>). This option may be used multiple
+times to construct arbitrary AMF sequences.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_flashver</samp>&rsquo;</dt>
+<dd><p>Version of the Flash plugin used to run the SWF player. The default
+is LNX 9,0,124,2. (When publishing, the default is FMLE/3.0 (compatible;
+&lt;libavformat version&gt;).)
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_flush_interval</samp>&rsquo;</dt>
+<dd><p>Number of packets flushed in the same request (RTMPT only). The default
+is 10.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_live</samp>&rsquo;</dt>
+<dd><p>Specify that the media is a live stream. No resuming or seeking in
+live streams is possible. The default value is <code>any</code>, which means the
+subscriber first tries to play the live stream specified in the
+playpath. If a live stream of that name is not found, it plays the
+recorded stream. The other possible values are <code>live</code> and
+<code>recorded</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_pageurl</samp>&rsquo;</dt>
+<dd><p>URL of the web page in which the media was embedded. By default no
+value will be sent.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_playpath</samp>&rsquo;</dt>
+<dd><p>Stream identifier to play or to publish. This option overrides the
+parameter specified in the URI.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_subscribe</samp>&rsquo;</dt>
+<dd><p>Name of live stream to subscribe to. By default no value will be sent.
+It is only sent if the option is specified or if rtmp_live
+is set to live.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_swfhash</samp>&rsquo;</dt>
+<dd><p>SHA256 hash of the decompressed SWF file (32 bytes).
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_swfsize</samp>&rsquo;</dt>
+<dd><p>Size of the decompressed SWF file, required for SWFVerification.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_swfurl</samp>&rsquo;</dt>
+<dd><p>URL of the SWF player for the media. By default no value will be sent.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_swfverify</samp>&rsquo;</dt>
+<dd><p>URL to player swf file, compute hash/size automatically.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_tcurl</samp>&rsquo;</dt>
+<dd><p>URL of the target stream. Defaults to proto://host[:port]/app.
+</p>
+</dd>
+</dl>
+
+<p>For example to read with <code>ffplay</code> a multimedia resource named
+&quot;sample&quot; from the application &quot;vod&quot; from an RTMP server &quot;myserver&quot;:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay rtmp://myserver/vod/sample
+</pre></td></tr></table>
+
+<p>To publish to a password protected server, passing the playpath and
+app names separately:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i &lt;input&gt; -f flv -rtmp_playpath some/long/path -rtmp_app long/app/name rtmp://username:password@myserver/
+</pre></td></tr></table>
+
+<a name="rtmpe"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-rtmpe">24.16 rtmpe</a></h2>
+
+<p>Encrypted Real-Time Messaging Protocol.
+</p>
+<p>The Encrypted Real-Time Messaging Protocol (RTMPE) is used for
+streaming multimedia content within standard cryptographic primitives,
+consisting of Diffie-Hellman key exchange and HMACSHA256, generating
+a pair of RC4 keys.
+</p>
+<a name="rtmps"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-rtmps">24.17 rtmps</a></h2>
+
+<p>Real-Time Messaging Protocol over a secure SSL connection.
+</p>
+<p>The Real-Time Messaging Protocol (RTMPS) is used for streaming
+multimedia content across an encrypted connection.
+</p>
+<a name="rtmpt"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-rtmpt">24.18 rtmpt</a></h2>
+
+<p>Real-Time Messaging Protocol tunneled through HTTP.
+</p>
+<p>The Real-Time Messaging Protocol tunneled through HTTP (RTMPT) is used
+for streaming multimedia content within HTTP requests to traverse
+firewalls.
+</p>
+<a name="rtmpte"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-rtmpte">24.19 rtmpte</a></h2>
+
+<p>Encrypted Real-Time Messaging Protocol tunneled through HTTP.
+</p>
+<p>The Encrypted Real-Time Messaging Protocol tunneled through HTTP (RTMPTE)
+is used for streaming multimedia content within HTTP requests to traverse
+firewalls.
+</p>
+<a name="rtmpts"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-rtmpts">24.20 rtmpts</a></h2>
+
+<p>Real-Time Messaging Protocol tunneled through HTTPS.
+</p>
+<p>The Real-Time Messaging Protocol tunneled through HTTPS (RTMPTS) is used
+for streaming multimedia content within HTTPS requests to traverse
+firewalls.
+</p>
+<a name="libssh"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-libssh">24.21 libssh</a></h2>
+
+<p>Secure File Transfer Protocol via libssh
+</p>
+<p>Allow to read from or write to remote resources using SFTP protocol.
+</p>
+<p>Following syntax is required.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">sftp://[user[:password]@]server[:port]/path/to/remote/resource.mpeg
+</pre></td></tr></table>
+
+<p>This protocol accepts the following options.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>timeout</samp>&rsquo;</dt>
+<dd><p>Set timeout of socket I/O operations used by the underlying low level
+operation. By default it is set to -1, which means that the timeout
+is not specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>truncate</samp>&rsquo;</dt>
+<dd><p>Truncate existing files on write, if set to 1. A value of 0 prevents
+truncating. Default value is 1.
+</p>
+</dd>
+</dl>
+
+<p>Example: Play a file stored on remote server.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay sftp://user:password@server_address:22/home/user/resource.mpeg
+</pre></td></tr></table>
+
+<a name="librtmp-rtmp_002c-rtmpe_002c-rtmps_002c-rtmpt_002c-rtmpte"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-librtmp-rtmp_002c-rtmpe_002c-rtmps_002c-rtmpt_002c-rtmpte">24.22 librtmp rtmp, rtmpe, rtmps, rtmpt, rtmpte</a></h2>
+
+<p>Real-Time Messaging Protocol and its variants supported through
+librtmp.
+</p>
+<p>Requires the presence of the librtmp headers and library during
+configuration. You need to explicitly configure the build with
+&quot;&ndash;enable-librtmp&quot;. If enabled this will replace the native RTMP
+protocol.
+</p>
+<p>This protocol provides most client functions and a few server
+functions needed to support RTMP, RTMP tunneled in HTTP (RTMPT),
+encrypted RTMP (RTMPE), RTMP over SSL/TLS (RTMPS) and tunneled
+variants of these encrypted types (RTMPTE, RTMPTS).
+</p>
+<p>The required syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>rtmp_proto</var>://<var>server</var>[:<var>port</var>][/<var>app</var>][/<var>playpath</var>] <var>options</var>
+</pre></td></tr></table>
+
+<p>where <var>rtmp_proto</var> is one of the strings &quot;rtmp&quot;, &quot;rtmpt&quot;, &quot;rtmpe&quot;,
+&quot;rtmps&quot;, &quot;rtmpte&quot;, &quot;rtmpts&quot; corresponding to each RTMP variant, and
+<var>server</var>, <var>port</var>, <var>app</var> and <var>playpath</var> have the same
+meaning as specified for the RTMP native protocol.
+<var>options</var> contains a list of space-separated options of the form
+<var>key</var>=<var>val</var>.
+</p>
+<p>See the librtmp manual page (man 3 librtmp) for more information.
+</p>
+<p>For example, to stream a file in real-time to an RTMP server using
+<code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i myfile -f flv rtmp://myserver/live/mystream
+</pre></td></tr></table>
+
+<p>To play the same stream using <code>ffplay</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay &quot;rtmp://myserver/live/mystream live=1&quot;
+</pre></td></tr></table>
+
+<a name="rtp"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-rtp">24.23 rtp</a></h2>
+
+<p>Real-time Transport Protocol.
+</p>
+<p>The required syntax for an RTP URL is:
+rtp://<var>hostname</var>[:<var>port</var>][?<var>option</var>=<var>val</var>...]
+</p>
+<p><var>port</var> specifies the RTP port to use.
+</p>
+<p>The following URL options are supported:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>ttl=<var>n</var></samp>&rsquo;</dt>
+<dd><p>Set the TTL (Time-To-Live) value (for multicast only).
+</p>
+</dd>
+<dt> &lsquo;<samp>rtcpport=<var>n</var></samp>&rsquo;</dt>
+<dd><p>Set the remote RTCP port to <var>n</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>localrtpport=<var>n</var></samp>&rsquo;</dt>
+<dd><p>Set the local RTP port to <var>n</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>localrtcpport=<var>n</var>'</samp>&rsquo;</dt>
+<dd><p>Set the local RTCP port to <var>n</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>pkt_size=<var>n</var></samp>&rsquo;</dt>
+<dd><p>Set max packet size (in bytes) to <var>n</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>connect=0|1</samp>&rsquo;</dt>
+<dd><p>Do a <code>connect()</code> on the UDP socket (if set to 1) or not (if set
+to 0).
+</p>
+</dd>
+<dt> &lsquo;<samp>sources=<var>ip</var>[,<var>ip</var>]</samp>&rsquo;</dt>
+<dd><p>List allowed source IP addresses.
+</p>
+</dd>
+<dt> &lsquo;<samp>block=<var>ip</var>[,<var>ip</var>]</samp>&rsquo;</dt>
+<dd><p>List disallowed (blocked) source IP addresses.
+</p>
+</dd>
+<dt> &lsquo;<samp>write_to_source=0|1</samp>&rsquo;</dt>
+<dd><p>Send packets to the source address of the latest received packet (if
+set to 1) or to a default remote address (if set to 0).
+</p>
+</dd>
+<dt> &lsquo;<samp>localport=<var>n</var></samp>&rsquo;</dt>
+<dd><p>Set the local RTP port to <var>n</var>.
+</p>
+<p>This is a deprecated option. Instead, &lsquo;<samp>localrtpport</samp>&rsquo; should be
+used.
+</p>
+</dd>
+</dl>
+
+<p>Important notes:
+</p>
+<ol>
+<li>
+If &lsquo;<samp>rtcpport</samp>&rsquo; is not set the RTCP port will be set to the RTP
+port value plus 1.
+
+</li><li>
+If &lsquo;<samp>localrtpport</samp>&rsquo; (the local RTP port) is not set any available
+port will be used for the local RTP and RTCP ports.
+
+</li><li>
+If &lsquo;<samp>localrtcpport</samp>&rsquo; (the local RTCP port) is not set it will be
+set to the the local RTP port value plus 1.
+</li></ol>
+
+<a name="rtsp"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-rtsp">24.24 rtsp</a></h2>
+
+<p>RTSP is not technically a protocol handler in libavformat, it is a demuxer
+and muxer. The demuxer supports both normal RTSP (with data transferred
+over RTP; this is used by e.g. Apple and Microsoft) and Real-RTSP (with
+data transferred over RDT).
+</p>
+<p>The muxer can be used to send a stream using RTSP ANNOUNCE to a server
+supporting it (currently Darwin Streaming Server and Mischa Spiegelmock&rsquo;s
+<a href="http://github.com/revmischa/rtsp-server">RTSP server</a>).
+</p>
+<p>The required syntax for a RTSP url is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">rtsp://<var>hostname</var>[:<var>port</var>]/<var>path</var>
+</pre></td></tr></table>
+
+<p>The following options (set on the <code>ffmpeg</code>/<code>ffplay</code> command
+line, or set in code via <code>AVOption</code>s or in <code>avformat_open_input</code>),
+are supported:
+</p>
+<p>Flags for <code>rtsp_transport</code>:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>udp</samp>&rsquo;</dt>
+<dd><p>Use UDP as lower transport protocol.
+</p>
+</dd>
+<dt> &lsquo;<samp>tcp</samp>&rsquo;</dt>
+<dd><p>Use TCP (interleaving within the RTSP control channel) as lower
+transport protocol.
+</p>
+</dd>
+<dt> &lsquo;<samp>udp_multicast</samp>&rsquo;</dt>
+<dd><p>Use UDP multicast as lower transport protocol.
+</p>
+</dd>
+<dt> &lsquo;<samp>http</samp>&rsquo;</dt>
+<dd><p>Use HTTP tunneling as lower transport protocol, which is useful for
+passing proxies.
+</p></dd>
+</dl>
+
+<p>Multiple lower transport protocols may be specified, in that case they are
+tried one at a time (if the setup of one fails, the next one is tried).
+For the muxer, only the <code>tcp</code> and <code>udp</code> options are supported.
+</p>
+<p>Flags for <code>rtsp_flags</code>:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filter_src</samp>&rsquo;</dt>
+<dd><p>Accept packets only from negotiated peer address and port.
+</p></dd>
+<dt> &lsquo;<samp>listen</samp>&rsquo;</dt>
+<dd><p>Act as a server, listening for an incoming connection.
+</p></dd>
+</dl>
+
+<p>When receiving data over UDP, the demuxer tries to reorder received packets
+(since they may arrive out of order, or packets may get lost totally). This
+can be disabled by setting the maximum demuxing delay to zero (via
+the <code>max_delay</code> field of AVFormatContext).
+</p>
+<p>When watching multi-bitrate Real-RTSP streams with <code>ffplay</code>, the
+streams to display can be chosen with <code>-vst</code> <var>n</var> and
+<code>-ast</code> <var>n</var> for video and audio respectively, and can be switched
+on the fly by pressing <code>v</code> and <code>a</code>.
+</p>
+<p>Example command lines:
+</p>
+<p>To watch a stream over UDP, with a max reordering delay of 0.5 seconds:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -max_delay 500000 -rtsp_transport udp rtsp://server/video.mp4
+</pre></td></tr></table>
+
+<p>To watch a stream tunneled over HTTP:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -rtsp_transport http rtsp://server/video.mp4
+</pre></td></tr></table>
+
+<p>To send a stream in realtime to a RTSP server, for others to watch:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i <var>input</var> -f rtsp -muxdelay 0.1 rtsp://server/live.sdp
+</pre></td></tr></table>
+
+<p>To receive a stream in realtime:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -rtsp_flags listen -i rtsp://ownaddress/live.sdp <var>output</var>
+</pre></td></tr></table>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>stimeout</samp>&rsquo;</dt>
+<dd><p>Socket IO timeout in micro seconds.
+</p></dd>
+</dl>
+
+<a name="sap"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-sap">24.25 sap</a></h2>
+
+<p>Session Announcement Protocol (RFC 2974). This is not technically a
+protocol handler in libavformat, it is a muxer and demuxer.
+It is used for signalling of RTP streams, by announcing the SDP for the
+streams regularly on a separate port.
+</p>
+<a name="Muxer"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Muxer">24.25.1 Muxer</a></h3>
+
+<p>The syntax for a SAP url given to the muxer is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">sap://<var>destination</var>[:<var>port</var>][?<var>options</var>]
+</pre></td></tr></table>
+
+<p>The RTP packets are sent to <var>destination</var> on port <var>port</var>,
+or to port 5004 if no port is specified.
+<var>options</var> is a <code>&amp;</code>-separated list. The following options
+are supported:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>announce_addr=<var>address</var></samp>&rsquo;</dt>
+<dd><p>Specify the destination IP address for sending the announcements to.
+If omitted, the announcements are sent to the commonly used SAP
+announcement multicast address 224.2.127.254 (sap.mcast.net), or
+ff0e::2:7ffe if <var>destination</var> is an IPv6 address.
+</p>
+</dd>
+<dt> &lsquo;<samp>announce_port=<var>port</var></samp>&rsquo;</dt>
+<dd><p>Specify the port to send the announcements on, defaults to
+9875 if not specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>ttl=<var>ttl</var></samp>&rsquo;</dt>
+<dd><p>Specify the time to live value for the announcements and RTP packets,
+defaults to 255.
+</p>
+</dd>
+<dt> &lsquo;<samp>same_port=<var>0|1</var></samp>&rsquo;</dt>
+<dd><p>If set to 1, send all RTP streams on the same port pair. If zero (the
+default), all streams are sent on unique ports, with each stream on a
+port 2 numbers higher than the previous.
+VLC/Live555 requires this to be set to 1, to be able to receive the stream.
+The RTP stack in libavformat for receiving requires all streams to be sent
+on unique ports.
+</p></dd>
+</dl>
+
+<p>Example command lines follow.
+</p>
+<p>To broadcast a stream on the local subnet, for watching in VLC:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i <var>input</var> -f sap sap://224.0.0.255?same_port=1
+</pre></td></tr></table>
+
+<p>Similarly, for watching in <code>ffplay</code>:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i <var>input</var> -f sap sap://224.0.0.255
+</pre></td></tr></table>
+
+<p>And for watching in <code>ffplay</code>, over IPv6:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i <var>input</var> -f sap sap://[ff0e::1:2:3:4]
+</pre></td></tr></table>
+
+<a name="Demuxer"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Demuxer">24.25.2 Demuxer</a></h3>
+
+<p>The syntax for a SAP url given to the demuxer is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">sap://[<var>address</var>][:<var>port</var>]
+</pre></td></tr></table>
+
+<p><var>address</var> is the multicast address to listen for announcements on,
+if omitted, the default 224.2.127.254 (sap.mcast.net) is used. <var>port</var>
+is the port that is listened on, 9875 if omitted.
+</p>
+<p>The demuxers listens for announcements on the given address and port.
+Once an announcement is received, it tries to receive that particular stream.
+</p>
+<p>Example command lines follow.
+</p>
+<p>To play back the first stream announced on the normal SAP multicast address:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay sap://
+</pre></td></tr></table>
+
+<p>To play back the first stream announced on one the default IPv6 SAP multicast address:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay sap://[ff0e::2:7ffe]
+</pre></td></tr></table>
+
+<a name="sctp"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-sctp">24.26 sctp</a></h2>
+
+<p>Stream Control Transmission Protocol.
+</p>
+<p>The accepted URL syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">sctp://<var>host</var>:<var>port</var>[?<var>options</var>]
+</pre></td></tr></table>
+
+<p>The protocol accepts the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>listen</samp>&rsquo;</dt>
+<dd><p>If set to any value, listen for an incoming connection. Outgoing connection is done by default.
+</p>
+</dd>
+<dt> &lsquo;<samp>max_streams</samp>&rsquo;</dt>
+<dd><p>Set the maximum number of streams. By default no limit is set.
+</p></dd>
+</dl>
+
+<a name="srtp"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-srtp">24.27 srtp</a></h2>
+
+<p>Secure Real-time Transport Protocol.
+</p>
+<p>The accepted options are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>srtp_in_suite</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>srtp_out_suite</samp>&rsquo;</dt>
+<dd><p>Select input and output encoding suites.
+</p>
+<p>Supported values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>AES_CM_128_HMAC_SHA1_80</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>SRTP_AES128_CM_HMAC_SHA1_80</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>AES_CM_128_HMAC_SHA1_32</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>SRTP_AES128_CM_HMAC_SHA1_32</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>srtp_in_params</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>srtp_out_params</samp>&rsquo;</dt>
+<dd><p>Set input and output encoding parameters, which are expressed by a
+base64-encoded representation of a binary block. The first 16 bytes of
+this binary block are used as master key, the following 14 bytes are
+used as master salt.
+</p></dd>
+</dl>
+
+<a name="tcp"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-tcp">24.28 tcp</a></h2>
+
+<p>Trasmission Control Protocol.
+</p>
+<p>The required syntax for a TCP url is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">tcp://<var>hostname</var>:<var>port</var>[?<var>options</var>]
+</pre></td></tr></table>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>listen</samp>&rsquo;</dt>
+<dd><p>Listen for an incoming connection
+</p>
+</dd>
+<dt> &lsquo;<samp>timeout=<var>microseconds</var></samp>&rsquo;</dt>
+<dd><p>In read mode: if no data arrived in more than this time interval, raise error.
+In write mode: if socket cannot be written in more than this time interval, raise error.
+This also sets timeout on TCP connection establishing.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i <var>input</var> -f <var>format</var> tcp://<var>hostname</var>:<var>port</var>?listen
+ffplay tcp://<var>hostname</var>:<var>port</var>
+</pre></td></tr></table>
+
+</dd>
+</dl>
+
+<a name="tls"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-tls">24.29 tls</a></h2>
+
+<p>Transport Layer Security (TLS) / Secure Sockets Layer (SSL)
+</p>
+<p>The required syntax for a TLS/SSL url is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">tls://<var>hostname</var>:<var>port</var>[?<var>options</var>]
+</pre></td></tr></table>
+
+<p>The following parameters can be set via command line options
+(or in code via <code>AVOption</code>s):
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>ca_file, cafile=<var>filename</var></samp>&rsquo;</dt>
+<dd><p>A file containing certificate authority (CA) root certificates to treat
+as trusted. If the linked TLS library contains a default this might not
+need to be specified for verification to work, but not all libraries and
+setups have defaults built in.
+The file must be in OpenSSL PEM format.
+</p>
+</dd>
+<dt> &lsquo;<samp>tls_verify=<var>1|0</var></samp>&rsquo;</dt>
+<dd><p>If enabled, try to verify the peer that we are communicating with.
+Note, if using OpenSSL, this currently only makes sure that the
+peer certificate is signed by one of the root certificates in the CA
+database, but it does not validate that the certificate actually
+matches the host name we are trying to connect to. (With GnuTLS,
+the host name is validated as well.)
+</p>
+<p>This is disabled by default since it requires a CA database to be
+provided by the caller in many cases.
+</p>
+</dd>
+<dt> &lsquo;<samp>cert_file, cert=<var>filename</var></samp>&rsquo;</dt>
+<dd><p>A file containing a certificate to use in the handshake with the peer.
+(When operating as server, in listen mode, this is more often required
+by the peer, while client certificates only are mandated in certain
+setups.)
+</p>
+</dd>
+<dt> &lsquo;<samp>key_file, key=<var>filename</var></samp>&rsquo;</dt>
+<dd><p>A file containing the private key for the certificate.
+</p>
+</dd>
+<dt> &lsquo;<samp>listen=<var>1|0</var></samp>&rsquo;</dt>
+<dd><p>If enabled, listen for connections on the provided port, and assume
+the server role in the handshake instead of the client role.
+</p>
+</dd>
+</dl>
+
+<p>Example command lines:
+</p>
+<p>To create a TLS/SSL server that serves an input stream.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i <var>input</var> -f <var>format</var> tls://<var>hostname</var>:<var>port</var>?listen&amp;cert=<var>server.crt</var>&amp;key=<var>server.key</var>
+</pre></td></tr></table>
+
+<p>To play back a stream from the TLS/SSL server using <code>ffplay</code>:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay tls://<var>hostname</var>:<var>port</var>
+</pre></td></tr></table>
+
+<a name="udp"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-udp">24.30 udp</a></h2>
+
+<p>User Datagram Protocol.
+</p>
+<p>The required syntax for a UDP url is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">udp://<var>hostname</var>:<var>port</var>[?<var>options</var>]
+</pre></td></tr></table>
+
+<p><var>options</var> contains a list of &amp;-separated options of the form <var>key</var>=<var>val</var>.
+</p>
+<p>In case threading is enabled on the system, a circular buffer is used
+to store the incoming data, which allows to reduce loss of data due to
+UDP socket buffer overruns. The <var>fifo_size</var> and
+<var>overrun_nonfatal</var> options are related to this buffer.
+</p>
+<p>The list of supported options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>buffer_size=<var>size</var></samp>&rsquo;</dt>
+<dd><p>Set the UDP socket buffer size in bytes. This is used both for the
+receiving and the sending buffer size.
+</p>
+</dd>
+<dt> &lsquo;<samp>localport=<var>port</var></samp>&rsquo;</dt>
+<dd><p>Override the local UDP port to bind with.
+</p>
+</dd>
+<dt> &lsquo;<samp>localaddr=<var>addr</var></samp>&rsquo;</dt>
+<dd><p>Choose the local IP address. This is useful e.g. if sending multicast
+and the host has multiple interfaces, where the user can choose
+which interface to send on by specifying the IP address of that interface.
+</p>
+</dd>
+<dt> &lsquo;<samp>pkt_size=<var>size</var></samp>&rsquo;</dt>
+<dd><p>Set the size in bytes of UDP packets.
+</p>
+</dd>
+<dt> &lsquo;<samp>reuse=<var>1|0</var></samp>&rsquo;</dt>
+<dd><p>Explicitly allow or disallow reusing UDP sockets.
+</p>
+</dd>
+<dt> &lsquo;<samp>ttl=<var>ttl</var></samp>&rsquo;</dt>
+<dd><p>Set the time to live value (for multicast only).
+</p>
+</dd>
+<dt> &lsquo;<samp>connect=<var>1|0</var></samp>&rsquo;</dt>
+<dd><p>Initialize the UDP socket with <code>connect()</code>. In this case, the
+destination address can&rsquo;t be changed with ff_udp_set_remote_url later.
+If the destination address isn&rsquo;t known at the start, this option can
+be specified in ff_udp_set_remote_url, too.
+This allows finding out the source address for the packets with getsockname,
+and makes writes return with AVERROR(ECONNREFUSED) if &quot;destination
+unreachable&quot; is received.
+For receiving, this gives the benefit of only receiving packets from
+the specified peer address/port.
+</p>
+</dd>
+<dt> &lsquo;<samp>sources=<var>address</var>[,<var>address</var>]</samp>&rsquo;</dt>
+<dd><p>Only receive packets sent to the multicast group from one of the
+specified sender IP addresses.
+</p>
+</dd>
+<dt> &lsquo;<samp>block=<var>address</var>[,<var>address</var>]</samp>&rsquo;</dt>
+<dd><p>Ignore packets sent to the multicast group from the specified
+sender IP addresses.
+</p>
+</dd>
+<dt> &lsquo;<samp>fifo_size=<var>units</var></samp>&rsquo;</dt>
+<dd><p>Set the UDP receiving circular buffer size, expressed as a number of
+packets with size of 188 bytes. If not specified defaults to 7*4096.
+</p>
+</dd>
+<dt> &lsquo;<samp>overrun_nonfatal=<var>1|0</var></samp>&rsquo;</dt>
+<dd><p>Survive in case of UDP receiving circular buffer overrun. Default
+value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>timeout=<var>microseconds</var></samp>&rsquo;</dt>
+<dd><p>In read mode: if no data arrived in more than this time interval, raise error.
+</p></dd>
+</dl>
+
+<p>Some usage examples of the UDP protocol with <code>ffmpeg</code> follow.
+</p>
+<p>To stream over UDP to a remote endpoint:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i <var>input</var> -f <var>format</var> udp://<var>hostname</var>:<var>port</var>
+</pre></td></tr></table>
+
+<p>To stream in mpegts format over UDP using 188 sized UDP packets, using a large input buffer:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i <var>input</var> -f mpegts udp://<var>hostname</var>:<var>port</var>?pkt_size=188&amp;buffer_size=65535
+</pre></td></tr></table>
+
+<p>To receive over UDP from a remote endpoint:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i udp://[<var>multicast-address</var>]:<var>port</var>
+</pre></td></tr></table>
+
+<a name="unix"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-unix">24.31 unix</a></h2>
+
+<p>Unix local socket
+</p>
+<p>The required syntax for a Unix socket URL is:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">unix://<var>filepath</var>
+</pre></td></tr></table>
+
+<p>The following parameters can be set via command line options
+(or in code via <code>AVOption</code>s):
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>timeout</samp>&rsquo;</dt>
+<dd><p>Timeout in ms.
+</p></dd>
+<dt> &lsquo;<samp>listen</samp>&rsquo;</dt>
+<dd><p>Create the Unix socket in listening mode.
+</p></dd>
+</dl>
+
+<a name="Device-Options"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Device-Options">25. Device Options</a></h1>
+
+<p>The libavdevice library provides the same interface as
+libavformat. Namely, an input device is considered like a demuxer, and
+an output device like a muxer, and the interface and generic device
+options are the same provided by libavformat (see the ffmpeg-formats
+manual).
+</p>
+<p>In addition each input or output device may support so-called private
+options, which are specific for that component.
+</p>
+<p>Options may be set by specifying -<var>option</var> <var>value</var> in the
+FFmpeg tools, or by setting the value explicitly in the device
+<code>AVFormatContext</code> options or using the &lsquo;<tt>libavutil/opt.h</tt>&rsquo; API
+for programmatic use.
+</p>
+
+<a name="Input-Devices"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Input-Devices">26. Input Devices</a></h1>
+
+<p>Input devices are configured elements in FFmpeg which allow to access
+the data coming from a multimedia device attached to your system.
+</p>
+<p>When you configure your FFmpeg build, all the supported input devices
+are enabled by default. You can list all available ones using the
+configure option &quot;&ndash;list-indevs&quot;.
+</p>
+<p>You can disable all the input devices using the configure option
+&quot;&ndash;disable-indevs&quot;, and selectively enable an input device using the
+option &quot;&ndash;enable-indev=<var>INDEV</var>&quot;, or you can disable a particular
+input device using the option &quot;&ndash;disable-indev=<var>INDEV</var>&quot;.
+</p>
+<p>The option &quot;-formats&quot; of the ff* tools will display the list of
+supported input devices (amongst the demuxers).
+</p>
+<p>A description of the currently available input devices follows.
+</p>
+<a name="alsa"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-alsa">26.1 alsa</a></h2>
+
+<p>ALSA (Advanced Linux Sound Architecture) input device.
+</p>
+<p>To enable this input device during configuration you need libasound
+installed on your system.
+</p>
+<p>This device allows capturing from an ALSA device. The name of the
+device to capture has to be an ALSA card identifier.
+</p>
+<p>An ALSA identifier has the syntax:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">hw:<var>CARD</var>[,<var>DEV</var>[,<var>SUBDEV</var>]]
+</pre></td></tr></table>
+
+<p>where the <var>DEV</var> and <var>SUBDEV</var> components are optional.
+</p>
+<p>The three arguments (in order: <var>CARD</var>,<var>DEV</var>,<var>SUBDEV</var>)
+specify card number or identifier, device number and subdevice number
+(-1 means any).
+</p>
+<p>To see the list of cards currently recognized by your system check the
+files &lsquo;<tt>/proc/asound/cards</tt>&rsquo; and &lsquo;<tt>/proc/asound/devices</tt>&rsquo;.
+</p>
+<p>For example to capture with <code>ffmpeg</code> from an ALSA device with
+card id 0, you may run the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f alsa -i hw:0 alsaout.wav
+</pre></td></tr></table>
+
+<p>For more information see:
+<a href="http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html">http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html</a>
+</p>
+<a name="bktr"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-bktr">26.2 bktr</a></h2>
+
+<p>BSD video input device.
+</p>
+<a name="dshow"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-dshow">26.3 dshow</a></h2>
+
+<p>Windows DirectShow input device.
+</p>
+<p>DirectShow support is enabled when FFmpeg is built with the mingw-w64 project.
+Currently only audio and video devices are supported.
+</p>
+<p>Multiple devices may be opened as separate inputs, but they may also be
+opened on the same input, which should improve synchronism between them.
+</p>
+<p>The input name should be in the format:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example"><var>TYPE</var>=<var>NAME</var>[:<var>TYPE</var>=<var>NAME</var>]
+</pre></td></tr></table>
+
+<p>where <var>TYPE</var> can be either <var>audio</var> or <var>video</var>,
+and <var>NAME</var> is the device&rsquo;s name.
+</p>
+<a name="Options-4"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-4">26.3.1 Options</a></h3>
+
+<p>If no options are specified, the device&rsquo;s defaults are used.
+If the device does not support the requested options, it will
+fail to open.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>video_size</samp>&rsquo;</dt>
+<dd><p>Set the video size in the captured video.
+</p>
+</dd>
+<dt> &lsquo;<samp>framerate</samp>&rsquo;</dt>
+<dd><p>Set the frame rate in the captured video.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate</samp>&rsquo;</dt>
+<dd><p>Set the sample rate (in Hz) of the captured audio.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_size</samp>&rsquo;</dt>
+<dd><p>Set the sample size (in bits) of the captured audio.
+</p>
+</dd>
+<dt> &lsquo;<samp>channels</samp>&rsquo;</dt>
+<dd><p>Set the number of channels in the captured audio.
+</p>
+</dd>
+<dt> &lsquo;<samp>list_devices</samp>&rsquo;</dt>
+<dd><p>If set to &lsquo;<samp>true</samp>&rsquo;, print a list of devices and exit.
+</p>
+</dd>
+<dt> &lsquo;<samp>list_options</samp>&rsquo;</dt>
+<dd><p>If set to &lsquo;<samp>true</samp>&rsquo;, print a list of selected device&rsquo;s options
+and exit.
+</p>
+</dd>
+<dt> &lsquo;<samp>video_device_number</samp>&rsquo;</dt>
+<dd><p>Set video device number for devices with same name (starts at 0,
+defaults to 0).
+</p>
+</dd>
+<dt> &lsquo;<samp>audio_device_number</samp>&rsquo;</dt>
+<dd><p>Set audio device number for devices with same name (starts at 0,
+defaults to 0).
+</p>
+</dd>
+<dt> &lsquo;<samp>pixel_format</samp>&rsquo;</dt>
+<dd><p>Select pixel format to be used by DirectShow. This may only be set when
+the video codec is not set or set to rawvideo.
+</p>
+</dd>
+<dt> &lsquo;<samp>audio_buffer_size</samp>&rsquo;</dt>
+<dd><p>Set audio device buffer size in milliseconds (which can directly
+impact latency, depending on the device).
+Defaults to using the audio device&rsquo;s
+default buffer size (typically some multiple of 500ms).
+Setting this value too low can degrade performance.
+See also
+<a href="http://msdn.microsoft.com/en-us/library/windows/desktop/dd377582(v=vs.85).aspx">http://msdn.microsoft.com/en-us/library/windows/desktop/dd377582(v=vs.85).aspx</a>
+</p>
+</dd>
+</dl>
+
+<a name="Examples-49"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-49">26.3.2 Examples</a></h3>
+
+<ul>
+<li>
+Print the list of DirectShow supported devices and exit:
+<table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -list_devices true -f dshow -i dummy
+</pre></td></tr></table>
+
+</li><li>
+Open video device <var>Camera</var>:
+<table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f dshow -i video=&quot;Camera&quot;
+</pre></td></tr></table>
+
+</li><li>
+Open second video device with name <var>Camera</var>:
+<table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f dshow -video_device_number 1 -i video=&quot;Camera&quot;
+</pre></td></tr></table>
+
+</li><li>
+Open video device <var>Camera</var> and audio device <var>Microphone</var>:
+<table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f dshow -i video=&quot;Camera&quot;:audio=&quot;Microphone&quot;
+</pre></td></tr></table>
+
+</li><li>
+Print the list of supported options in selected device and exit:
+<table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -list_options true -f dshow -i video=&quot;Camera&quot;
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="dv1394"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-dv1394">26.4 dv1394</a></h2>
+
+<p>Linux DV 1394 input device.
+</p>
+<a name="fbdev"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-fbdev">26.5 fbdev</a></h2>
+
+<p>Linux framebuffer input device.
+</p>
+<p>The Linux framebuffer is a graphic hardware-independent abstraction
+layer to show graphics on a computer monitor, typically on the
+console. It is accessed through a file device node, usually
+&lsquo;<tt>/dev/fb0</tt>&rsquo;.
+</p>
+<p>For more detailed information read the file
+Documentation/fb/framebuffer.txt included in the Linux source tree.
+</p>
+<p>To record from the framebuffer device &lsquo;<tt>/dev/fb0</tt>&rsquo; with
+<code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f fbdev -r 10 -i /dev/fb0 out.avi
+</pre></td></tr></table>
+
+<p>You can take a single screenshot image with the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f fbdev -frames:v 1 -r 1 -i /dev/fb0 screenshot.jpeg
+</pre></td></tr></table>
+
+<p>See also <a href="http://linux-fbdev.sourceforge.net/">http://linux-fbdev.sourceforge.net/</a>, and fbset(1).
+</p>
+<a name="iec61883"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-iec61883">26.6 iec61883</a></h2>
+
+<p>FireWire DV/HDV input device using libiec61883.
+</p>
+<p>To enable this input device, you need libiec61883, libraw1394 and
+libavc1394 installed on your system. Use the configure option
+<code>--enable-libiec61883</code> to compile with the device enabled.
+</p>
+<p>The iec61883 capture device supports capturing from a video device
+connected via IEEE1394 (FireWire), using libiec61883 and the new Linux
+FireWire stack (juju). This is the default DV/HDV input method in Linux
+Kernel 2.6.37 and later, since the old FireWire stack was removed.
+</p>
+<p>Specify the FireWire port to be used as input file, or &quot;auto&quot;
+to choose the first port connected.
+</p>
+<a name="Options-11"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-11">26.6.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>dvtype</samp>&rsquo;</dt>
+<dd><p>Override autodetection of DV/HDV. This should only be used if auto
+detection does not work, or if usage of a different device type
+should be prohibited. Treating a DV device as HDV (or vice versa) will
+not work and result in undefined behavior.
+The values &lsquo;<samp>auto</samp>&rsquo;, &lsquo;<samp>dv</samp>&rsquo; and &lsquo;<samp>hdv</samp>&rsquo; are supported.
+</p>
+</dd>
+<dt> &lsquo;<samp>dvbuffer</samp>&rsquo;</dt>
+<dd><p>Set maxiumum size of buffer for incoming data, in frames. For DV, this
+is an exact value. For HDV, it is not frame exact, since HDV does
+not have a fixed frame size.
+</p>
+</dd>
+<dt> &lsquo;<samp>dvguid</samp>&rsquo;</dt>
+<dd><p>Select the capture device by specifying it&rsquo;s GUID. Capturing will only
+be performed from the specified device and fails if no device with the
+given GUID is found. This is useful to select the input if multiple
+devices are connected at the same time.
+Look at /sys/bus/firewire/devices to find out the GUIDs.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-44"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-44">26.6.2 Examples</a></h3>
+
+<ul>
+<li>
+Grab and show the input of a FireWire DV/HDV device.
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f iec61883 -i auto
+</pre></td></tr></table>
+
+</li><li>
+Grab and record the input of a FireWire DV/HDV device,
+using a packet buffer of 100000 packets if the source is HDV.
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f iec61883 -i auto -hdvbuffer 100000 out.mpg
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="jack"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-jack">26.7 jack</a></h2>
+
+<p>JACK input device.
+</p>
+<p>To enable this input device during configuration you need libjack
+installed on your system.
+</p>
+<p>A JACK input device creates one or more JACK writable clients, one for
+each audio channel, with name <var>client_name</var>:input_<var>N</var>, where
+<var>client_name</var> is the name provided by the application, and <var>N</var>
+is a number which identifies the channel.
+Each writable client will send the acquired data to the FFmpeg input
+device.
+</p>
+<p>Once you have created one or more JACK readable clients, you need to
+connect them to one or more JACK writable clients.
+</p>
+<p>To connect or disconnect JACK clients you can use the <code>jack_connect</code>
+and <code>jack_disconnect</code> programs, or do it through a graphical interface,
+for example with <code>qjackctl</code>.
+</p>
+<p>To list the JACK clients and their properties you can invoke the command
+<code>jack_lsp</code>.
+</p>
+<p>Follows an example which shows how to capture a JACK readable client
+with <code>ffmpeg</code>.
+</p><table><tr><td>&nbsp;</td><td><pre class="example"># Create a JACK writable client with name &quot;ffmpeg&quot;.
+$ ffmpeg -f jack -i ffmpeg -y out.wav
+
+# Start the sample jack_metro readable client.
+$ jack_metro -b 120 -d 0.2 -f 4000
+
+# List the current JACK clients.
+$ jack_lsp -c
+system:capture_1
+system:capture_2
+system:playback_1
+system:playback_2
+ffmpeg:input_1
+metro:120_bpm
+
+# Connect metro to the ffmpeg writable client.
+$ jack_connect metro:120_bpm ffmpeg:input_1
+</pre></td></tr></table>
+
+<p>For more information read:
+<a href="http://jackaudio.org/">http://jackaudio.org/</a>
+</p>
+<a name="lavfi"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-lavfi">26.8 lavfi</a></h2>
+
+<p>Libavfilter input virtual device.
+</p>
+<p>This input device reads data from the open output pads of a libavfilter
+filtergraph.
+</p>
+<p>For each filtergraph open output, the input device will create a
+corresponding stream which is mapped to the generated output. Currently
+only video data is supported. The filtergraph is specified through the
+option &lsquo;<samp>graph</samp>&rsquo;.
+</p>
+<a name="Options-14"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-14">26.8.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>graph</samp>&rsquo;</dt>
+<dd><p>Specify the filtergraph to use as input. Each video open output must be
+labelled by a unique string of the form &quot;out<var>N</var>&quot;, where <var>N</var> is a
+number starting from 0 corresponding to the mapped input stream
+generated by the device.
+The first unlabelled output is automatically assigned to the &quot;out0&quot;
+label, but all the others need to be specified explicitly.
+</p>
+<p>If not specified defaults to the filename specified for the input
+device.
+</p>
+</dd>
+<dt> &lsquo;<samp>graph_file</samp>&rsquo;</dt>
+<dd><p>Set the filename of the filtergraph to be read and sent to the other
+filters. Syntax of the filtergraph is the same as the one specified by
+the option <var>graph</var>.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-26"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-26">26.8.2 Examples</a></h3>
+
+<ul>
+<li>
+Create a color video stream and play it back with <code>ffplay</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi -graph &quot;color=c=pink [out0]&quot; dummy
+</pre></td></tr></table>
+
+</li><li>
+As the previous example, but use filename for specifying the graph
+description, and omit the &quot;out0&quot; label:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi color=c=pink
+</pre></td></tr></table>
+
+</li><li>
+Create three different video test filtered sources and play them:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi -graph &quot;testsrc [out0]; testsrc,hflip [out1]; testsrc,negate [out2]&quot; test3
+</pre></td></tr></table>
+
+</li><li>
+Read an audio stream from a file using the amovie source and play it
+back with <code>ffplay</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi &quot;amovie=test.wav&quot;
+</pre></td></tr></table>
+
+</li><li>
+Read an audio stream and a video stream and play it back with
+<code>ffplay</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi &quot;movie=test.avi[out0];amovie=test.wav[out1]&quot;
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="libdc1394"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-libdc1394">26.9 libdc1394</a></h2>
+
+<p>IIDC1394 input device, based on libdc1394 and libraw1394.
+</p>
+<a name="openal"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-openal">26.10 openal</a></h2>
+
+<p>The OpenAL input device provides audio capture on all systems with a
+working OpenAL 1.1 implementation.
+</p>
+<p>To enable this input device during configuration, you need OpenAL
+headers and libraries installed on your system, and need to configure
+FFmpeg with <code>--enable-openal</code>.
+</p>
+<p>OpenAL headers and libraries should be provided as part of your OpenAL
+implementation, or as an additional download (an SDK). Depending on your
+installation you may need to specify additional flags via the
+<code>--extra-cflags</code> and <code>--extra-ldflags</code> for allowing the build
+system to locate the OpenAL headers and libraries.
+</p>
+<p>An incomplete list of OpenAL implementations follows:
+</p>
+<dl compact="compact">
+<dt> <strong>Creative</strong></dt>
+<dd><p>The official Windows implementation, providing hardware acceleration
+with supported devices and software fallback.
+See <a href="http://openal.org/">http://openal.org/</a>.
+</p></dd>
+<dt> <strong>OpenAL Soft</strong></dt>
+<dd><p>Portable, open source (LGPL) software implementation. Includes
+backends for the most common sound APIs on the Windows, Linux,
+Solaris, and BSD operating systems.
+See <a href="http://kcat.strangesoft.net/openal.html">http://kcat.strangesoft.net/openal.html</a>.
+</p></dd>
+<dt> <strong>Apple</strong></dt>
+<dd><p>OpenAL is part of Core Audio, the official Mac OS X Audio interface.
+See <a href="http://developer.apple.com/technologies/mac/audio-and-video.html">http://developer.apple.com/technologies/mac/audio-and-video.html</a>
+</p></dd>
+</dl>
+
+<p>This device allows to capture from an audio input device handled
+through OpenAL.
+</p>
+<p>You need to specify the name of the device to capture in the provided
+filename. If the empty string is provided, the device will
+automatically select the default device. You can get the list of the
+supported devices by using the option <var>list_devices</var>.
+</p>
+<a name="Options-15"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-15">26.10.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>channels</samp>&rsquo;</dt>
+<dd><p>Set the number of channels in the captured audio. Only the values
+&lsquo;<samp>1</samp>&rsquo; (monaural) and &lsquo;<samp>2</samp>&rsquo; (stereo) are currently supported.
+Defaults to &lsquo;<samp>2</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_size</samp>&rsquo;</dt>
+<dd><p>Set the sample size (in bits) of the captured audio. Only the values
+&lsquo;<samp>8</samp>&rsquo; and &lsquo;<samp>16</samp>&rsquo; are currently supported. Defaults to
+&lsquo;<samp>16</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate</samp>&rsquo;</dt>
+<dd><p>Set the sample rate (in Hz) of the captured audio.
+Defaults to &lsquo;<samp>44.1k</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>list_devices</samp>&rsquo;</dt>
+<dd><p>If set to &lsquo;<samp>true</samp>&rsquo;, print a list of devices and exit.
+Defaults to &lsquo;<samp>false</samp>&rsquo;.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-85"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-85">26.10.2 Examples</a></h3>
+
+<p>Print the list of OpenAL supported devices and exit:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -list_devices true -f openal -i dummy out.ogg
+</pre></td></tr></table>
+
+<p>Capture from the OpenAL device &lsquo;<tt>DR-BT101 via PulseAudio</tt>&rsquo;:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out.ogg
+</pre></td></tr></table>
+
+<p>Capture from the default device (note the empty string &rdquo; as filename):
+</p><table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f openal -i '' out.ogg
+</pre></td></tr></table>
+
+<p>Capture from two devices simultaneously, writing to two different files,
+within the same <code>ffmpeg</code> command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out1.ogg -f openal -i 'ALSA Default' out2.ogg
+</pre></td></tr></table>
+<p>Note: not all OpenAL implementations support multiple simultaneous capture -
+try the latest OpenAL Soft if the above does not work.
+</p>
+<a name="oss-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-oss-1">26.11 oss</a></h2>
+
+<p>Open Sound System input device.
+</p>
+<p>The filename to provide to the input device is the device node
+representing the OSS input device, and is usually set to
+&lsquo;<tt>/dev/dsp</tt>&rsquo;.
+</p>
+<p>For example to grab from &lsquo;<tt>/dev/dsp</tt>&rsquo; using <code>ffmpeg</code> use the
+command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f oss -i /dev/dsp /tmp/oss.wav
+</pre></td></tr></table>
+
+<p>For more information about OSS see:
+<a href="http://manuals.opensound.com/usersguide/dsp.html">http://manuals.opensound.com/usersguide/dsp.html</a>
+</p>
+<a name="pulse"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-pulse">26.12 pulse</a></h2>
+
+<p>PulseAudio input device.
+</p>
+<p>To enable this output device you need to configure FFmpeg with <code>--enable-libpulse</code>.
+</p>
+<p>The filename to provide to the input device is a source device or the
+string &quot;default&quot;
+</p>
+<p>To list the PulseAudio source devices and their properties you can invoke
+the command <code>pactl list sources</code>.
+</p>
+<p>More information about PulseAudio can be found on <a href="http://www.pulseaudio.org">http://www.pulseaudio.org</a>.
+</p>
+<a name="Options-1"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-1">26.12.1 Options</a></h3>
+<dl compact="compact">
+<dt> &lsquo;<samp>server</samp>&rsquo;</dt>
+<dd><p>Connect to a specific PulseAudio server, specified by an IP address.
+Default server is used when not provided.
+</p>
+</dd>
+<dt> &lsquo;<samp>name</samp>&rsquo;</dt>
+<dd><p>Specify the application name PulseAudio will use when showing active clients,
+by default it is the <code>LIBAVFORMAT_IDENT</code> string.
+</p>
+</dd>
+<dt> &lsquo;<samp>stream_name</samp>&rsquo;</dt>
+<dd><p>Specify the stream name PulseAudio will use when showing active streams,
+by default it is &quot;record&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate</samp>&rsquo;</dt>
+<dd><p>Specify the samplerate in Hz, by default 48kHz is used.
+</p>
+</dd>
+<dt> &lsquo;<samp>channels</samp>&rsquo;</dt>
+<dd><p>Specify the channels in use, by default 2 (stereo) is set.
+</p>
+</dd>
+<dt> &lsquo;<samp>frame_size</samp>&rsquo;</dt>
+<dd><p>Specify the number of bytes per frame, by default it is set to 1024.
+</p>
+</dd>
+<dt> &lsquo;<samp>fragment_size</samp>&rsquo;</dt>
+<dd><p>Specify the minimal buffering fragment in PulseAudio, it will affect the
+audio latency. By default it is unset.
+</p></dd>
+</dl>
+
+<a name="Examples-52"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-52">26.12.2 Examples</a></h3>
+<p>Record a stream from default device:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f pulse -i default /tmp/pulse.wav
+</pre></td></tr></table>
+
+<a name="sndio-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-sndio-1">26.13 sndio</a></h2>
+
+<p>sndio input device.
+</p>
+<p>To enable this input device during configuration you need libsndio
+installed on your system.
+</p>
+<p>The filename to provide to the input device is the device node
+representing the sndio input device, and is usually set to
+&lsquo;<tt>/dev/audio0</tt>&rsquo;.
+</p>
+<p>For example to grab from &lsquo;<tt>/dev/audio0</tt>&rsquo; using <code>ffmpeg</code> use the
+command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f sndio -i /dev/audio0 /tmp/oss.wav
+</pre></td></tr></table>
+
+<a name="video4linux2_002c-v4l2"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-video4linux2_002c-v4l2">26.14 video4linux2, v4l2</a></h2>
+
+<p>Video4Linux2 input video device.
+</p>
+<p>&quot;v4l2&quot; can be used as alias for &quot;video4linux2&quot;.
+</p>
+<p>If FFmpeg is built with v4l-utils support (by using the
+<code>--enable-libv4l2</code> configure option), it is possible to use it with the
+<code>-use_libv4l2</code> input device option.
+</p>
+<p>The name of the device to grab is a file device node, usually Linux
+systems tend to automatically create such nodes when the device
+(e.g. an USB webcam) is plugged into the system, and has a name of the
+kind &lsquo;<tt>/dev/video<var>N</var></tt>&rsquo;, where <var>N</var> is a number associated to
+the device.
+</p>
+<p>Video4Linux2 devices usually support a limited set of
+<var>width</var>x<var>height</var> sizes and frame rates. You can check which are
+supported using <code>-list_formats all</code> for Video4Linux2 devices.
+Some devices, like TV cards, support one or more standards. It is possible
+to list all the supported standards using <code>-list_standards all</code>.
+</p>
+<p>The time base for the timestamps is 1 microsecond. Depending on the kernel
+version and configuration, the timestamps may be derived from the real time
+clock (origin at the Unix Epoch) or the monotonic clock (origin usually at
+boot time, unaffected by NTP or manual changes to the clock). The
+&lsquo;<samp>-timestamps abs</samp>&rsquo; or &lsquo;<samp>-ts abs</samp>&rsquo; option can be used to force
+conversion into the real time clock.
+</p>
+<p>Some usage examples of the video4linux2 device with <code>ffmpeg</code>
+and <code>ffplay</code>:
+</p><ul>
+<li>
+Grab and show the input of a video4linux2 device:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f video4linux2 -framerate 30 -video_size hd720 /dev/video0
+</pre></td></tr></table>
+
+</li><li>
+Grab and record the input of a video4linux2 device, leave the
+frame rate and size as previously set:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f video4linux2 -input_format mjpeg -i /dev/video0 out.mpeg
+</pre></td></tr></table>
+</li></ul>
+
+<p>For more information about Video4Linux, check <a href="http://linuxtv.org/">http://linuxtv.org/</a>.
+</p>
+<a name="Options-24"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-24">26.14.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>standard</samp>&rsquo;</dt>
+<dd><p>Set the standard. Must be the name of a supported standard. To get a
+list of the supported standards, use the &lsquo;<samp>list_standards</samp>&rsquo;
+option.
+</p>
+</dd>
+<dt> &lsquo;<samp>channel</samp>&rsquo;</dt>
+<dd><p>Set the input channel number. Default to -1, which means using the
+previously selected channel.
+</p>
+</dd>
+<dt> &lsquo;<samp>video_size</samp>&rsquo;</dt>
+<dd><p>Set the video frame size. The argument must be a string in the form
+<var>WIDTH</var>x<var>HEIGHT</var> or a valid size abbreviation.
+</p>
+</dd>
+<dt> &lsquo;<samp>pixel_format</samp>&rsquo;</dt>
+<dd><p>Select the pixel format (only valid for raw video input).
+</p>
+</dd>
+<dt> &lsquo;<samp>input_format</samp>&rsquo;</dt>
+<dd><p>Set the preferred pixel format (for raw video) or a codec name.
+This option allows to select the input format, when several are
+available.
+</p>
+</dd>
+<dt> &lsquo;<samp>framerate</samp>&rsquo;</dt>
+<dd><p>Set the preferred video frame rate.
+</p>
+</dd>
+<dt> &lsquo;<samp>list_formats</samp>&rsquo;</dt>
+<dd><p>List available formats (supported pixel formats, codecs, and frame
+sizes) and exit.
+</p>
+<p>Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>all</samp>&rsquo;</dt>
+<dd><p>Show all available (compressed and non-compressed) formats.
+</p>
+</dd>
+<dt> &lsquo;<samp>raw</samp>&rsquo;</dt>
+<dd><p>Show only raw video (non-compressed) formats.
+</p>
+</dd>
+<dt> &lsquo;<samp>compressed</samp>&rsquo;</dt>
+<dd><p>Show only compressed formats.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>list_standards</samp>&rsquo;</dt>
+<dd><p>List supported standards and exit.
+</p>
+<p>Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>all</samp>&rsquo;</dt>
+<dd><p>Show all supported standards.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>timestamps, ts</samp>&rsquo;</dt>
+<dd><p>Set type of timestamps for grabbed frames.
+</p>
+<p>Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>default</samp>&rsquo;</dt>
+<dd><p>Use timestamps from the kernel.
+</p>
+</dd>
+<dt> &lsquo;<samp>abs</samp>&rsquo;</dt>
+<dd><p>Use absolute timestamps (wall clock).
+</p>
+</dd>
+<dt> &lsquo;<samp>mono2abs</samp>&rsquo;</dt>
+<dd><p>Force conversion from monotonic to absolute timestamps.
+</p></dd>
+</dl>
+
+<p>Default value is <code>default</code>.
+</p></dd>
+</dl>
+
+<a name="vfwcap"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-vfwcap">26.15 vfwcap</a></h2>
+
+<p>VfW (Video for Windows) capture input device.
+</p>
+<p>The filename passed as input is the capture driver number, ranging from
+0 to 9. You may use &quot;list&quot; as filename to print a list of drivers. Any
+other filename will be interpreted as device number 0.
+</p>
+<a name="x11grab"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-x11grab">26.16 x11grab</a></h2>
+
+<p>X11 video input device.
+</p>
+<p>This device allows to capture a region of an X11 display.
+</p>
+<p>The filename passed as input has the syntax:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[<var>hostname</var>]:<var>display_number</var>.<var>screen_number</var>[+<var>x_offset</var>,<var>y_offset</var>]
+</pre></td></tr></table>
+
+<p><var>hostname</var>:<var>display_number</var>.<var>screen_number</var> specifies the
+X11 display name of the screen to grab from. <var>hostname</var> can be
+omitted, and defaults to &quot;localhost&quot;. The environment variable
+<code>DISPLAY</code> contains the default display name.
+</p>
+<p><var>x_offset</var> and <var>y_offset</var> specify the offsets of the grabbed
+area with respect to the top-left border of the X11 screen. They
+default to 0.
+</p>
+<p>Check the X11 documentation (e.g. man X) for more detailed information.
+</p>
+<p>Use the <code>dpyinfo</code> program for getting basic information about the
+properties of your X11 display (e.g. grep for &quot;name&quot; or &quot;dimensions&quot;).
+</p>
+<p>For example to grab from &lsquo;<tt>:0.0</tt>&rsquo; using <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0 out.mpg
+</pre></td></tr></table>
+
+<p>Grab at position <code>10,20</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0+10,20 out.mpg
+</pre></td></tr></table>
+
+<a name="Options-20"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-20">26.16.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>draw_mouse</samp>&rsquo;</dt>
+<dd><p>Specify whether to draw the mouse pointer. A value of <code>0</code> specify
+not to draw the pointer. Default value is <code>1</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>follow_mouse</samp>&rsquo;</dt>
+<dd><p>Make the grabbed area follow the mouse. The argument can be
+<code>centered</code> or a number of pixels <var>PIXELS</var>.
+</p>
+<p>When it is specified with &quot;centered&quot;, the grabbing region follows the mouse
+pointer and keeps the pointer at the center of region; otherwise, the region
+follows only when the mouse pointer reaches within <var>PIXELS</var> (greater than
+zero) to the edge of region.
+</p>
+<p>For example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -follow_mouse centered -framerate 25 -video_size cif -i :0.0 out.mpg
+</pre></td></tr></table>
+
+<p>To follow only when the mouse pointer reaches within 100 pixels to edge:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -follow_mouse 100 -framerate 25 -video_size cif -i :0.0 out.mpg
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>framerate</samp>&rsquo;</dt>
+<dd><p>Set the grabbing frame rate. Default value is <code>ntsc</code>,
+corresponding to a frame rate of <code>30000/1001</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>show_region</samp>&rsquo;</dt>
+<dd><p>Show grabbed region on screen.
+</p>
+<p>If <var>show_region</var> is specified with <code>1</code>, then the grabbing
+region will be indicated on screen. With this option, it is easy to
+know what is being grabbed if only a portion of the screen is grabbed.
+</p>
+<p>For example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -show_region 1 -framerate 25 -video_size cif -i :0.0+10,20 out.mpg
+</pre></td></tr></table>
+
+<p>With <var>follow_mouse</var>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -follow_mouse centered -show_region 1 -framerate 25 -video_size cif -i :0.0 out.mpg
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>video_size</samp>&rsquo;</dt>
+<dd><p>Set the video frame size. Default value is <code>vga</code>.
+</p></dd>
+</dl>
+
+<a name="Output-Devices"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Output-Devices">27. Output Devices</a></h1>
+
+<p>Output devices are configured elements in FFmpeg that can write
+multimedia data to an output device attached to your system.
+</p>
+<p>When you configure your FFmpeg build, all the supported output devices
+are enabled by default. You can list all available ones using the
+configure option &quot;&ndash;list-outdevs&quot;.
+</p>
+<p>You can disable all the output devices using the configure option
+&quot;&ndash;disable-outdevs&quot;, and selectively enable an output device using the
+option &quot;&ndash;enable-outdev=<var>OUTDEV</var>&quot;, or you can disable a particular
+input device using the option &quot;&ndash;disable-outdev=<var>OUTDEV</var>&quot;.
+</p>
+<p>The option &quot;-formats&quot; of the ff* tools will display the list of
+enabled output devices (amongst the muxers).
+</p>
+<p>A description of the currently available output devices follows.
+</p>
+<a name="alsa-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-alsa-1">27.1 alsa</a></h2>
+
+<p>ALSA (Advanced Linux Sound Architecture) output device.
+</p>
+<a name="Examples-61"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-61">27.1.1 Examples</a></h3>
+
+<ul>
+<li>
+Play a file on default ALSA device:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f alsa default
+</pre></td></tr></table>
+
+</li><li>
+Play a file on soundcard 1, audio device 7:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f alsa hw:1,7
+</pre></td></tr></table>
+</li></ul>
+
+<a name="caca"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-caca">27.2 caca</a></h2>
+
+<p>CACA output device.
+</p>
+<p>This output device allows to show a video stream in CACA window.
+Only one CACA window is allowed per application, so you can
+have only one instance of this output device in an application.
+</p>
+<p>To enable this output device you need to configure FFmpeg with
+<code>--enable-libcaca</code>.
+libcaca is a graphics library that outputs text instead of pixels.
+</p>
+<p>For more information about libcaca, check:
+<a href="http://caca.zoy.org/wiki/libcaca">http://caca.zoy.org/wiki/libcaca</a>
+</p>
+<a name="Options-17"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-17">27.2.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>window_title</samp>&rsquo;</dt>
+<dd><p>Set the CACA window title, if not specified default to the filename
+specified for the output device.
+</p>
+</dd>
+<dt> &lsquo;<samp>window_size</samp>&rsquo;</dt>
+<dd><p>Set the CACA window size, can be a string of the form
+<var>width</var>x<var>height</var> or a video size abbreviation.
+If not specified it defaults to the size of the input video.
+</p>
+</dd>
+<dt> &lsquo;<samp>driver</samp>&rsquo;</dt>
+<dd><p>Set display driver.
+</p>
+</dd>
+<dt> &lsquo;<samp>algorithm</samp>&rsquo;</dt>
+<dd><p>Set dithering algorithm. Dithering is necessary
+because the picture being rendered has usually far more colours than
+the available palette.
+The accepted values are listed with <code>-list_dither algorithms</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>antialias</samp>&rsquo;</dt>
+<dd><p>Set antialias method. Antialiasing smoothens the rendered
+image and avoids the commonly seen staircase effect.
+The accepted values are listed with <code>-list_dither antialiases</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>charset</samp>&rsquo;</dt>
+<dd><p>Set which characters are going to be used when rendering text.
+The accepted values are listed with <code>-list_dither charsets</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
+<dd><p>Set color to be used when rendering text.
+The accepted values are listed with <code>-list_dither colors</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>list_drivers</samp>&rsquo;</dt>
+<dd><p>If set to &lsquo;<samp>true</samp>&rsquo;, print a list of available drivers and exit.
+</p>
+</dd>
+<dt> &lsquo;<samp>list_dither</samp>&rsquo;</dt>
+<dd><p>List available dither options related to the argument.
+The argument must be one of <code>algorithms</code>, <code>antialiases</code>,
+<code>charsets</code>, <code>colors</code>.
+</p></dd>
+</dl>
+
+<a name="Examples-43"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-43">27.2.2 Examples</a></h3>
+
+<ul>
+<li>
+The following command shows the <code>ffmpeg</code> output is an
+CACA window, forcing its size to 80x25:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -vcodec rawvideo -pix_fmt rgb24 -window_size 80x25 -f caca -
+</pre></td></tr></table>
+
+</li><li>
+Show the list of available drivers and exit:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_drivers true -
+</pre></td></tr></table>
+
+</li><li>
+Show the list of available dither colors and exit:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_dither colors -
+</pre></td></tr></table>
+</li></ul>
+
+<a name="fbdev-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-fbdev-1">27.3 fbdev</a></h2>
+
+<p>Linux framebuffer output device.
+</p>
+<p>The Linux framebuffer is a graphic hardware-independent abstraction
+layer to show graphics on a computer monitor, typically on the
+console. It is accessed through a file device node, usually
+&lsquo;<tt>/dev/fb0</tt>&rsquo;.
+</p>
+<p>For more detailed information read the file
+&lsquo;<tt>Documentation/fb/framebuffer.txt</tt>&rsquo; included in the Linux source tree.
+</p>
+<a name="Options-29"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-29">27.3.1 Options</a></h3>
+<dl compact="compact">
+<dt> &lsquo;<samp>xoffset</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>yoffset</samp>&rsquo;</dt>
+<dd><p>Set x/y coordinate of top left corner. Default is 0.
+</p></dd>
+</dl>
+
+<a name="Examples-5"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-5">27.3.2 Examples</a></h3>
+<p>Play a file on framebuffer device &lsquo;<tt>/dev/fb0</tt>&rsquo;.
+Required pixel format depends on current framebuffer settings.
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i INPUT -vcodec rawvideo -pix_fmt bgra -f fbdev /dev/fb0
+</pre></td></tr></table>
+
+<p>See also <a href="http://linux-fbdev.sourceforge.net/">http://linux-fbdev.sourceforge.net/</a>, and fbset(1).
+</p>
+<a name="oss"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-oss">27.4 oss</a></h2>
+
+<p>OSS (Open Sound System) output device.
+</p>
+<a name="pulse-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-pulse-1">27.5 pulse</a></h2>
+
+<p>PulseAudio output device.
+</p>
+<p>To enable this output device you need to configure FFmpeg with <code>--enable-libpulse</code>.
+</p>
+<p>More information about PulseAudio can be found on <a href="http://www.pulseaudio.org">http://www.pulseaudio.org</a>
+</p>
+<a name="Options-3"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-3">27.5.1 Options</a></h3>
+<dl compact="compact">
+<dt> &lsquo;<samp>server</samp>&rsquo;</dt>
+<dd><p>Connect to a specific PulseAudio server, specified by an IP address.
+Default server is used when not provided.
+</p>
+</dd>
+<dt> &lsquo;<samp>name</samp>&rsquo;</dt>
+<dd><p>Specify the application name PulseAudio will use when showing active clients,
+by default it is the <code>LIBAVFORMAT_IDENT</code> string.
+</p>
+</dd>
+<dt> &lsquo;<samp>stream_name</samp>&rsquo;</dt>
+<dd><p>Specify the stream name PulseAudio will use when showing active streams,
+by default it is set to the specified output name.
+</p>
+</dd>
+<dt> &lsquo;<samp>device</samp>&rsquo;</dt>
+<dd><p>Specify the device to use. Default device is used when not provided.
+List of output devices can be obtained with command <code>pactl list sinks</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>buffer_size</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>buffer_duration</samp>&rsquo;</dt>
+<dd><p>Control the size and duration of the PulseAudio buffer. A small buffer
+gives more control, but requires more frequent updates.
+</p>
+<p>&lsquo;<samp>buffer_size</samp>&rsquo; specifies size in bytes while
+&lsquo;<samp>buffer_duration</samp>&rsquo; specifies duration in milliseconds.
+</p>
+<p>When both options are provided then the highest value is used
+(duration is recalculated to bytes using stream parameters). If they
+are set to 0 (which is default), the device will use the default
+PulseAudio duration value. By default PulseAudio set buffer duration
+to around 2 seconds.
+</p></dd>
+</dl>
+
+<a name="Examples-74"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-74">27.5.2 Examples</a></h3>
+<p>Play a file on default device on default server:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg  -i INPUT -f pulse &quot;stream name&quot;
+</pre></td></tr></table>
+
+<a name="sdl"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-sdl">27.6 sdl</a></h2>
+
+<p>SDL (Simple DirectMedia Layer) output device.
+</p>
+<p>This output device allows to show a video stream in an SDL
+window. Only one SDL window is allowed per application, so you can
+have only one instance of this output device in an application.
+</p>
+<p>To enable this output device you need libsdl installed on your system
+when configuring your build.
+</p>
+<p>For more information about SDL, check:
+<a href="http://www.libsdl.org/">http://www.libsdl.org/</a>
+</p>
+<a name="Options-25"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-25">27.6.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>window_title</samp>&rsquo;</dt>
+<dd><p>Set the SDL window title, if not specified default to the filename
+specified for the output device.
+</p>
+</dd>
+<dt> &lsquo;<samp>icon_title</samp>&rsquo;</dt>
+<dd><p>Set the name of the iconified SDL window, if not specified it is set
+to the same value of <var>window_title</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>window_size</samp>&rsquo;</dt>
+<dd><p>Set the SDL window size, can be a string of the form
+<var>width</var>x<var>height</var> or a video size abbreviation.
+If not specified it defaults to the size of the input video,
+downscaled according to the aspect ratio.
+</p>
+</dd>
+<dt> &lsquo;<samp>window_fullscreen</samp>&rsquo;</dt>
+<dd><p>Set fullscreen mode when non-zero value is provided.
+Default value is zero.
+</p></dd>
+</dl>
+
+<a name="Interactive-commands"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Interactive-commands">27.6.2 Interactive commands</a></h3>
+
+<p>The window created by the device can be controlled through the
+following interactive commands.
+</p>
+<dl compact="compact">
+<dt> &lt;q, ESC&gt;</dt>
+<dd><p>Quit the device immediately.
+</p></dd>
+</dl>
+
+<a name="Examples-84"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-84">27.6.3 Examples</a></h3>
+
+<p>The following command shows the <code>ffmpeg</code> output is an
+SDL window, forcing its size to the qcif format:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -vcodec rawvideo -pix_fmt yuv420p -window_size qcif -f sdl &quot;SDL output&quot;
+</pre></td></tr></table>
+
+<a name="sndio"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-sndio">27.7 sndio</a></h2>
+
+<p>sndio audio output device.
+</p>
+<a name="xv"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-xv">27.8 xv</a></h2>
+
+<p>XV (XVideo) output device.
+</p>
+<p>This output device allows to show a video stream in a X Window System
+window.
+</p>
+<a name="Options-2"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-2">27.8.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>display_name</samp>&rsquo;</dt>
+<dd><p>Specify the hardware display name, which determines the display and
+communications domain to be used.
+</p>
+<p>The display name or DISPLAY environment variable can be a string in
+the format <var>hostname</var>[:<var>number</var>[.<var>screen_number</var>]].
+</p>
+<p><var>hostname</var> specifies the name of the host machine on which the
+display is physically attached. <var>number</var> specifies the number of
+the display server on that host machine. <var>screen_number</var> specifies
+the screen to be used on that server.
+</p>
+<p>If unspecified, it defaults to the value of the DISPLAY environment
+variable.
+</p>
+<p>For example, <code>dual-headed:0.1</code> would specify screen 1 of display
+0 on the machine named &ldquo;dual-headed&rdquo;.
+</p>
+<p>Check the X11 specification for more detailed information about the
+display name format.
+</p>
+</dd>
+<dt> &lsquo;<samp>window_size</samp>&rsquo;</dt>
+<dd><p>Set the created window size, can be a string of the form
+<var>width</var>x<var>height</var> or a video size abbreviation. If not
+specified it defaults to the size of the input video.
+</p>
+</dd>
+<dt> &lsquo;<samp>window_x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>window_y</samp>&rsquo;</dt>
+<dd><p>Set the X and Y window offsets for the created window. They are both
+set to 0 by default. The values may be ignored by the window manager.
+</p>
+</dd>
+<dt> &lsquo;<samp>window_title</samp>&rsquo;</dt>
+<dd><p>Set the window title, if not specified default to the filename
+specified for the output device.
+</p></dd>
+</dl>
+
+<p>For more information about XVideo see <a href="http://www.x.org/">http://www.x.org/</a>.
+</p>
+<a name="Examples-20"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-20">27.8.2 Examples</a></h3>
+
+<ul>
+<li>
+Decode, display and encode video input with <code>ffmpeg</code> at the
+same time:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT OUTPUT -f xv display
+</pre></td></tr></table>
+
+</li><li>
+Decode and display the input video to multiple X11 windows:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f xv normal -vf negate -f xv negated
+</pre></td></tr></table>
+</li></ul>
+
+<a name="Resampler-Options"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Resampler-Options">28. Resampler Options</a></h1>
+
+<p>The audio resampler supports the following named options.
+</p>
+<p>Options may be set by specifying -<var>option</var> <var>value</var> in the
+FFmpeg tools, <var>option</var>=<var>value</var> for the aresample filter,
+by setting the value explicitly in the
+<code>SwrContext</code> options or using the &lsquo;<tt>libavutil/opt.h</tt>&rsquo; API for
+programmatic use.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>ich, in_channel_count</samp>&rsquo;</dt>
+<dd><p>Set the number of input channels. Default value is 0. Setting this
+value is not mandatory if the corresponding channel layout
+&lsquo;<samp>in_channel_layout</samp>&rsquo; is set.
+</p>
+</dd>
+<dt> &lsquo;<samp>och, out_channel_count</samp>&rsquo;</dt>
+<dd><p>Set the number of output channels. Default value is 0. Setting this
+value is not mandatory if the corresponding channel layout
+&lsquo;<samp>out_channel_layout</samp>&rsquo; is set.
+</p>
+</dd>
+<dt> &lsquo;<samp>uch, used_channel_count</samp>&rsquo;</dt>
+<dd><p>Set the number of used input channels. Default value is 0. This option is
+only used for special remapping.
+</p>
+</dd>
+<dt> &lsquo;<samp>isr, in_sample_rate</samp>&rsquo;</dt>
+<dd><p>Set the input sample rate. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>osr, out_sample_rate</samp>&rsquo;</dt>
+<dd><p>Set the output sample rate. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>isf, in_sample_fmt</samp>&rsquo;</dt>
+<dd><p>Specify the input sample format. It is set by default to <code>none</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>osf, out_sample_fmt</samp>&rsquo;</dt>
+<dd><p>Specify the output sample format. It is set by default to <code>none</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>tsf, internal_sample_fmt</samp>&rsquo;</dt>
+<dd><p>Set the internal sample format. Default value is <code>none</code>.
+This will automatically be chosen when it is not explicitly set.
+</p>
+</dd>
+<dt> &lsquo;<samp>icl, in_channel_layout</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ocl, out_channel_layout</samp>&rsquo;</dt>
+<dd><p>Set the input/output channel layout.
+</p>
+<p>See <a href="ffmpeg-utils.html#channel-layout-syntax">(ffmpeg-utils)channel layout syntax</a>
+for the required syntax.
+</p>
+</dd>
+<dt> &lsquo;<samp>clev, center_mix_level</samp>&rsquo;</dt>
+<dd><p>Set the center mix level. It is a value expressed in deciBel, and must be
+in the interval [-32,32].
+</p>
+</dd>
+<dt> &lsquo;<samp>slev, surround_mix_level</samp>&rsquo;</dt>
+<dd><p>Set the surround mix level. It is a value expressed in deciBel, and must
+be in the interval [-32,32].
+</p>
+</dd>
+<dt> &lsquo;<samp>lfe_mix_level</samp>&rsquo;</dt>
+<dd><p>Set LFE mix into non LFE level. It is used when there is a LFE input but no
+LFE output. It is a value expressed in deciBel, and must
+be in the interval [-32,32].
+</p>
+</dd>
+<dt> &lsquo;<samp>rmvol, rematrix_volume</samp>&rsquo;</dt>
+<dd><p>Set rematrix volume. Default value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>rematrix_maxval</samp>&rsquo;</dt>
+<dd><p>Set maximum output value for rematrixing.
+This can be used to prevent clipping vs. preventing volumn reduction
+A value of 1.0 prevents cliping.
+</p>
+</dd>
+<dt> &lsquo;<samp>flags, swr_flags</samp>&rsquo;</dt>
+<dd><p>Set flags used by the converter. Default value is 0.
+</p>
+<p>It supports the following individual flags:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>res</samp>&rsquo;</dt>
+<dd><p>force resampling, this flag forces resampling to be used even when the
+input and output sample rates match.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>dither_scale</samp>&rsquo;</dt>
+<dd><p>Set the dither scale. Default value is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>dither_method</samp>&rsquo;</dt>
+<dd><p>Set dither method. Default value is 0.
+</p>
+<p>Supported values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>rectangular</samp>&rsquo;</dt>
+<dd><p>select rectangular dither
+</p></dd>
+<dt> &lsquo;<samp>triangular</samp>&rsquo;</dt>
+<dd><p>select triangular dither
+</p></dd>
+<dt> &lsquo;<samp>triangular_hp</samp>&rsquo;</dt>
+<dd><p>select triangular dither with high pass
+</p></dd>
+<dt> &lsquo;<samp>lipshitz</samp>&rsquo;</dt>
+<dd><p>select lipshitz noise shaping dither
+</p></dd>
+<dt> &lsquo;<samp>shibata</samp>&rsquo;</dt>
+<dd><p>select shibata noise shaping dither
+</p></dd>
+<dt> &lsquo;<samp>low_shibata</samp>&rsquo;</dt>
+<dd><p>select low shibata noise shaping dither
+</p></dd>
+<dt> &lsquo;<samp>high_shibata</samp>&rsquo;</dt>
+<dd><p>select high shibata noise shaping dither
+</p></dd>
+<dt> &lsquo;<samp>f_weighted</samp>&rsquo;</dt>
+<dd><p>select f-weighted noise shaping dither
+</p></dd>
+<dt> &lsquo;<samp>modified_e_weighted</samp>&rsquo;</dt>
+<dd><p>select modified-e-weighted noise shaping dither
+</p></dd>
+<dt> &lsquo;<samp>improved_e_weighted</samp>&rsquo;</dt>
+<dd><p>select improved-e-weighted noise shaping dither
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>resampler</samp>&rsquo;</dt>
+<dd><p>Set resampling engine. Default value is swr.
+</p>
+<p>Supported values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>swr</samp>&rsquo;</dt>
+<dd><p>select the native SW Resampler; filter options precision and cheby are not
+applicable in this case.
+</p></dd>
+<dt> &lsquo;<samp>soxr</samp>&rsquo;</dt>
+<dd><p>select the SoX Resampler (where available); compensation, and filter options
+filter_size, phase_shift, filter_type &amp; kaiser_beta, are not applicable in this
+case.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>filter_size</samp>&rsquo;</dt>
+<dd><p>For swr only, set resampling filter size, default value is 32.
+</p>
+</dd>
+<dt> &lsquo;<samp>phase_shift</samp>&rsquo;</dt>
+<dd><p>For swr only, set resampling phase shift, default value is 10, and must be in
+the interval [0,30].
+</p>
+</dd>
+<dt> &lsquo;<samp>linear_interp</samp>&rsquo;</dt>
+<dd><p>Use Linear Interpolation if set to 1, default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>cutoff</samp>&rsquo;</dt>
+<dd><p>Set cutoff frequency (swr: 6dB point; soxr: 0dB point) ratio; must be a float
+value between 0 and 1.  Default value is 0.97 with swr, and 0.91 with soxr
+(which, with a sample-rate of 44100, preserves the entire audio band to 20kHz).
+</p>
+</dd>
+<dt> &lsquo;<samp>precision</samp>&rsquo;</dt>
+<dd><p>For soxr only, the precision in bits to which the resampled signal will be
+calculated.  The default value of 20 (which, with suitable dithering, is
+appropriate for a destination bit-depth of 16) gives SoX&rsquo;s &rsquo;High Quality&rsquo;; a
+value of 28 gives SoX&rsquo;s &rsquo;Very High Quality&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>cheby</samp>&rsquo;</dt>
+<dd><p>For soxr only, selects passband rolloff none (Chebyshev) &amp; higher-precision
+approximation for &rsquo;irrational&rsquo; ratios. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>async</samp>&rsquo;</dt>
+<dd><p>For swr only, simple 1 parameter audio sync to timestamps using stretching,
+squeezing, filling and trimming. Setting this to 1 will enable filling and
+trimming, larger values represent the maximum amount in samples that the data
+may be stretched or squeezed for each second.
+Default value is 0, thus no compensation is applied to make the samples match
+the audio timestamps.
+</p>
+</dd>
+<dt> &lsquo;<samp>first_pts</samp>&rsquo;</dt>
+<dd><p>For swr only, assume the first pts should be this value. The time unit is 1 / sample rate.
+This allows for padding/trimming at the start of stream. By default, no
+assumption is made about the first frame&rsquo;s expected pts, so no padding or
+trimming is done. For example, this could be set to 0 to pad the beginning with
+silence if an audio stream starts after the video stream or to trim any samples
+with a negative pts due to encoder delay.
+</p>
+</dd>
+<dt> &lsquo;<samp>min_comp</samp>&rsquo;</dt>
+<dd><p>For swr only, set the minimum difference between timestamps and audio data (in
+seconds) to trigger stretching/squeezing/filling or trimming of the
+data to make it match the timestamps. The default is that
+stretching/squeezing/filling and trimming is disabled
+(&lsquo;<samp>min_comp</samp>&rsquo; = <code>FLT_MAX</code>).
+</p>
+</dd>
+<dt> &lsquo;<samp>min_hard_comp</samp>&rsquo;</dt>
+<dd><p>For swr only, set the minimum difference between timestamps and audio data (in
+seconds) to trigger adding/dropping samples to make it match the
+timestamps.  This option effectively is a threshold to select between
+hard (trim/fill) and soft (squeeze/stretch) compensation. Note that
+all compensation is by default disabled through &lsquo;<samp>min_comp</samp>&rsquo;.
+The default is 0.1.
+</p>
+</dd>
+<dt> &lsquo;<samp>comp_duration</samp>&rsquo;</dt>
+<dd><p>For swr only, set duration (in seconds) over which data is stretched/squeezed
+to make it match the timestamps. Must be a non-negative double float value,
+default value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>max_soft_comp</samp>&rsquo;</dt>
+<dd><p>For swr only, set maximum factor by which data is stretched/squeezed to make it
+match the timestamps. Must be a non-negative double float value, default value
+is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>matrix_encoding</samp>&rsquo;</dt>
+<dd><p>Select matrixed stereo encoding.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>select none
+</p></dd>
+<dt> &lsquo;<samp>dolby</samp>&rsquo;</dt>
+<dd><p>select Dolby
+</p></dd>
+<dt> &lsquo;<samp>dplii</samp>&rsquo;</dt>
+<dd><p>select Dolby Pro Logic II
+</p></dd>
+</dl>
+
+<p>Default value is <code>none</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>filter_type</samp>&rsquo;</dt>
+<dd><p>For swr only, select resampling filter type. This only affects resampling
+operations.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>cubic</samp>&rsquo;</dt>
+<dd><p>select cubic
+</p></dd>
+<dt> &lsquo;<samp>blackman_nuttall</samp>&rsquo;</dt>
+<dd><p>select Blackman Nuttall Windowed Sinc
+</p></dd>
+<dt> &lsquo;<samp>kaiser</samp>&rsquo;</dt>
+<dd><p>select Kaiser Windowed Sinc
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>kaiser_beta</samp>&rsquo;</dt>
+<dd><p>For swr only, set Kaiser Window Beta value. Must be an integer in the
+interval [2,16], default value is 9.
+</p>
+</dd>
+<dt> &lsquo;<samp>output_sample_bits</samp>&rsquo;</dt>
+<dd><p>For swr only, set number of used output sample bits for dithering. Must be an integer in the
+interval [0,64], default value is 0, which means it&rsquo;s not used.
+</p>
+</dd>
+</dl>
+
+<p><a name="scaler_005foptions"></a>
+</p><a name="Scaler-Options"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Scaler-Options">29. Scaler Options</a></h1>
+
+<p>The video scaler supports the following named options.
+</p>
+<p>Options may be set by specifying -<var>option</var> <var>value</var> in the
+FFmpeg tools. For programmatic use, they can be set explicitly in the
+<code>SwsContext</code> options or through the &lsquo;<tt>libavutil/opt.h</tt>&rsquo; API.
+</p>
+<dl compact="compact">
+<dd>
+<p><a name="sws_005fflags"></a>
+</p></dd>
+<dt> &lsquo;<samp>sws_flags</samp>&rsquo;</dt>
+<dd><p>Set the scaler flags. This is also used to set the scaling
+algorithm. Only a single algorithm should be selected.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>fast_bilinear</samp>&rsquo;</dt>
+<dd><p>Select fast bilinear scaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>bilinear</samp>&rsquo;</dt>
+<dd><p>Select bilinear scaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>bicubic</samp>&rsquo;</dt>
+<dd><p>Select bicubic scaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>experimental</samp>&rsquo;</dt>
+<dd><p>Select experimental scaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>neighbor</samp>&rsquo;</dt>
+<dd><p>Select nearest neighbor rescaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>area</samp>&rsquo;</dt>
+<dd><p>Select averaging area rescaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>bicubiclin</samp>&rsquo;</dt>
+<dd><p>Select bicubic scaling algorithm for the luma component, bilinear for
+chroma components.
+</p>
+</dd>
+<dt> &lsquo;<samp>gauss</samp>&rsquo;</dt>
+<dd><p>Select Gaussian rescaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>sinc</samp>&rsquo;</dt>
+<dd><p>Select sinc rescaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>lanczos</samp>&rsquo;</dt>
+<dd><p>Select lanczos rescaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>spline</samp>&rsquo;</dt>
+<dd><p>Select natural bicubic spline rescaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>print_info</samp>&rsquo;</dt>
+<dd><p>Enable printing/debug logging.
+</p>
+</dd>
+<dt> &lsquo;<samp>accurate_rnd</samp>&rsquo;</dt>
+<dd><p>Enable accurate rounding.
+</p>
+</dd>
+<dt> &lsquo;<samp>full_chroma_int</samp>&rsquo;</dt>
+<dd><p>Enable full chroma interpolation.
+</p>
+</dd>
+<dt> &lsquo;<samp>full_chroma_inp</samp>&rsquo;</dt>
+<dd><p>Select full chroma input.
+</p>
+</dd>
+<dt> &lsquo;<samp>bitexact</samp>&rsquo;</dt>
+<dd><p>Enable bitexact output.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>srcw</samp>&rsquo;</dt>
+<dd><p>Set source width.
+</p>
+</dd>
+<dt> &lsquo;<samp>srch</samp>&rsquo;</dt>
+<dd><p>Set source height.
+</p>
+</dd>
+<dt> &lsquo;<samp>dstw</samp>&rsquo;</dt>
+<dd><p>Set destination width.
+</p>
+</dd>
+<dt> &lsquo;<samp>dsth</samp>&rsquo;</dt>
+<dd><p>Set destination height.
+</p>
+</dd>
+<dt> &lsquo;<samp>src_format</samp>&rsquo;</dt>
+<dd><p>Set source pixel format (must be expressed as an integer).
+</p>
+</dd>
+<dt> &lsquo;<samp>dst_format</samp>&rsquo;</dt>
+<dd><p>Set destination pixel format (must be expressed as an integer).
+</p>
+</dd>
+<dt> &lsquo;<samp>src_range</samp>&rsquo;</dt>
+<dd><p>Select source range.
+</p>
+</dd>
+<dt> &lsquo;<samp>dst_range</samp>&rsquo;</dt>
+<dd><p>Select destination range.
+</p>
+</dd>
+<dt> &lsquo;<samp>param0, param1</samp>&rsquo;</dt>
+<dd><p>Set scaling algorithm parameters. The specified values are specific of
+some scaling algorithms and ignored by others. The specified values
+are floating point number values.
+</p>
+</dd>
+<dt> &lsquo;<samp>sws_dither</samp>&rsquo;</dt>
+<dd><p>Set the dithering algorithm. Accepts one of the following
+values. Default value is &lsquo;<samp>auto</samp>&rsquo;.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>automatic choice
+</p>
+</dd>
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>no dithering
+</p>
+</dd>
+<dt> &lsquo;<samp>bayer</samp>&rsquo;</dt>
+<dd><p>bayer dither
+</p>
+</dd>
+<dt> &lsquo;<samp>ed</samp>&rsquo;</dt>
+<dd><p>error diffusion dither
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Filtering-Introduction"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Filtering-Introduction">30. Filtering Introduction</a></h1>
+
+<p>Filtering in FFmpeg is enabled through the libavfilter library.
+</p>
+<p>In libavfilter, a filter can have multiple inputs and multiple
+outputs.
+To illustrate the sorts of things that are possible, we consider the
+following filtergraph.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">                [main]
+input --&gt; split ---------------------&gt; overlay --&gt; output
+            |                             ^
+            |[tmp]                  [flip]|
+            +-----&gt; crop --&gt; vflip -------+
+</pre></td></tr></table>
+
+<p>This filtergraph splits the input 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:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -vf &quot;split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2&quot; OUTPUT
+</pre></td></tr></table>
+
+<p>The result will be that in output the top half of the video is mirrored
+onto the bottom half.
+</p>
+<p>Filters in the same linear chain are separated by commas, and distinct
+linear chains of filters are separated by semicolons. In our example,
+<var>crop,vflip</var> are in one linear chain, <var>split</var> and
+<var>overlay</var> are separately in another. The points where the linear
+chains join are labelled by names enclosed in square brackets. In the
+example, the split filter generates two outputs that are associated to
+the labels <var>[main]</var> and <var>[tmp]</var>.
+</p>
+<p>The stream sent to the second output of <var>split</var>, labelled as
+<var>[tmp]</var>, is processed through the <var>crop</var> filter, which crops
+away the lower half part of the video, and then vertically flipped. The
+<var>overlay</var> filter takes in input the first unchanged output of the
+split filter (which was labelled as <var>[main]</var>), and overlay on its
+lower half the output generated by the <var>crop,vflip</var> filterchain.
+</p>
+<p>Some filters take in input a list of parameters: they are specified
+after the filter name and an equal sign, and are separated from each other
+by a colon.
+</p>
+<p>There exist so-called <var>source filters</var> that do not have an
+audio/video input, and <var>sink filters</var> that will not have audio/video
+output.
+</p>
+
+<a name="graph2dot"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-graph2dot">31. graph2dot</a></h1>
+
+<p>The &lsquo;<tt>graph2dot</tt>&rsquo; program included in the FFmpeg &lsquo;<tt>tools</tt>&rsquo;
+directory can be used to parse a filtergraph description and issue a
+corresponding textual representation in the dot language.
+</p>
+<p>Invoke the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">graph2dot -h
+</pre></td></tr></table>
+
+<p>to see how to use &lsquo;<tt>graph2dot</tt>&rsquo;.
+</p>
+<p>You can then pass the dot description to the &lsquo;<tt>dot</tt>&rsquo; program (from
+the graphviz suite of programs) and obtain a graphical representation
+of the filtergraph.
+</p>
+<p>For example the sequence of commands:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">echo <var>GRAPH_DESCRIPTION</var> | \
+tools/graph2dot -o graph.tmp &amp;&amp; \
+dot -Tpng graph.tmp -o graph.png &amp;&amp; \
+display graph.png
+</pre></td></tr></table>
+
+<p>can be used to create and display an image representing the graph
+described by the <var>GRAPH_DESCRIPTION</var> string. Note that this string must be
+a complete self-contained graph, with its inputs and outputs explicitly defined.
+For example if your command line is of the form:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i infile -vf scale=640:360 outfile
+</pre></td></tr></table>
+<p>your <var>GRAPH_DESCRIPTION</var> string will need to be of the form:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">nullsrc,scale=640:360,nullsink
+</pre></td></tr></table>
+<p>you may also need to set the <var>nullsrc</var> parameters and add a <var>format</var>
+filter in order to simulate a specific input file.
+</p>
+
+<a name="Filtergraph-description"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Filtergraph-description">32. Filtergraph description</a></h1>
+
+<p>A filtergraph is a directed graph of connected filters. It can contain
+cycles, and there can be multiple links between a pair of
+filters. Each link has one input pad on one side connecting it to one
+filter from which it takes its input, and one output pad on the other
+side connecting it to the one filter accepting its output.
+</p>
+<p>Each filter in a filtergraph is an instance of a filter class
+registered in the application, which defines the features and the
+number of input and output pads of the filter.
+</p>
+<p>A filter with no input pads is called a &quot;source&quot;, a filter with no
+output pads is called a &quot;sink&quot;.
+</p>
+<p><a name="Filtergraph-syntax"></a>
+</p><a name="Filtergraph-syntax-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-Filtergraph-syntax-1">32.1 Filtergraph syntax</a></h2>
+
+<p>A filtergraph can be represented using a textual representation, which is
+recognized by the &lsquo;<samp>-filter</samp>&rsquo;/&lsquo;<samp>-vf</samp>&rsquo; and &lsquo;<samp>-filter_complex</samp>&rsquo;
+options in <code>ffmpeg</code> and &lsquo;<samp>-vf</samp>&rsquo; in <code>ffplay</code>, and by the
+<code>avfilter_graph_parse()</code>/<code>avfilter_graph_parse2()</code> function defined in
+&lsquo;<tt>libavfilter/avfilter.h</tt>&rsquo;.
+</p>
+<p>A filterchain consists of a sequence of connected filters, each one
+connected to the previous one in the sequence. A filterchain is
+represented by a list of &quot;,&quot;-separated filter descriptions.
+</p>
+<p>A filtergraph consists of a sequence of filterchains. A sequence of
+filterchains is represented by a list of &quot;;&quot;-separated filterchain
+descriptions.
+</p>
+<p>A filter is represented by a string of the form:
+[<var>in_link_1</var>]...[<var>in_link_N</var>]<var>filter_name</var>=<var>arguments</var>[<var>out_link_1</var>]...[<var>out_link_M</var>]
+</p>
+<p><var>filter_name</var> is the name of the filter class of which the
+described filter is an instance of, and has to be the name of one of
+the filter classes registered in the program.
+The name of the filter class is optionally followed by a string
+&quot;=<var>arguments</var>&quot;.
+</p>
+<p><var>arguments</var> is a string which contains the parameters used to
+initialize the filter instance. It may have one of the following forms:
+</p><ul>
+<li>
+A &rsquo;:&rsquo;-separated list of <var>key=value</var> pairs.
+
+</li><li>
+A &rsquo;:&rsquo;-separated list of <var>value</var>. In this case, the keys are assumed to be
+the option names in the order they are declared. E.g. the <code>fade</code> filter
+declares three options in this order &ndash; &lsquo;<samp>type</samp>&rsquo;, &lsquo;<samp>start_frame</samp>&rsquo; and
+&lsquo;<samp>nb_frames</samp>&rsquo;. Then the parameter list <var>in:0:30</var> means that the value
+<var>in</var> is assigned to the option &lsquo;<samp>type</samp>&rsquo;, <var>0</var> to
+&lsquo;<samp>start_frame</samp>&rsquo; and <var>30</var> to &lsquo;<samp>nb_frames</samp>&rsquo;.
+
+</li><li>
+A &rsquo;:&rsquo;-separated list of mixed direct <var>value</var> and long <var>key=value</var>
+pairs. The direct <var>value</var> must precede the <var>key=value</var> pairs, and
+follow the same constraints order of the previous point. The following
+<var>key=value</var> pairs can be set in any preferred order.
+
+</li></ul>
+
+<p>If the option value itself is a list of items (e.g. the <code>format</code> filter
+takes a list of pixel formats), the items in the list are usually separated by
+&rsquo;|&rsquo;.
+</p>
+<p>The list of arguments can be quoted using the character &quot;&rsquo;&quot; as initial
+and ending mark, and the character &rsquo;\&rsquo; for escaping the characters
+within the quoted text; otherwise the argument string is considered
+terminated when the next special character (belonging to the set
+&quot;[]=;,&quot;) is encountered.
+</p>
+<p>The name and arguments of the filter are optionally preceded and
+followed by a list of link labels.
+A link label allows to name a link and associate it to a filter output
+or input pad. The preceding labels <var>in_link_1</var>
+... <var>in_link_N</var>, are associated to the filter input pads,
+the following labels <var>out_link_1</var> ... <var>out_link_M</var>, are
+associated to the output pads.
+</p>
+<p>When two link labels with the same name are found in the
+filtergraph, a link between the corresponding input and output pad is
+created.
+</p>
+<p>If an output pad is not labelled, it is linked by default to the first
+unlabelled input pad of the next filter in the filterchain.
+For example in the filterchain:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">nullsrc, split[L1], [L2]overlay, nullsink
+</pre></td></tr></table>
+<p>the split filter instance has two output pads, and the overlay filter
+instance two input pads. The first output pad of split is labelled
+&quot;L1&quot;, the first input pad of overlay is labelled &quot;L2&quot;, and the second
+output pad of split is linked to the second input pad of overlay,
+which are both unlabelled.
+</p>
+<p>In a complete filterchain all the unlabelled filter input and output
+pads must be connected. A filtergraph is considered valid if all the
+filter input and output pads of all the filterchains are connected.
+</p>
+<p>Libavfilter will automatically insert <a href="#scale">scale</a> filters where format
+conversion is required. It is possible to specify swscale flags
+for those automatically inserted scalers by prepending
+<code>sws_flags=<var>flags</var>;</code>
+to the filtergraph description.
+</p>
+<p>Follows a BNF description for the filtergraph syntax:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>NAME</var>             ::= sequence of alphanumeric characters and '_'
+<var>LINKLABEL</var>        ::= &quot;[&quot; <var>NAME</var> &quot;]&quot;
+<var>LINKLABELS</var>       ::= <var>LINKLABEL</var> [<var>LINKLABELS</var>]
+<var>FILTER_ARGUMENTS</var> ::= sequence of chars (eventually quoted)
+<var>FILTER</var>           ::= [<var>LINKLABELS</var>] <var>NAME</var> [&quot;=&quot; <var>FILTER_ARGUMENTS</var>] [<var>LINKLABELS</var>]
+<var>FILTERCHAIN</var>      ::= <var>FILTER</var> [,<var>FILTERCHAIN</var>]
+<var>FILTERGRAPH</var>      ::= [sws_flags=<var>flags</var>;] <var>FILTERCHAIN</var> [;<var>FILTERGRAPH</var>]
+</pre></td></tr></table>
+
+<a name="Notes-on-filtergraph-escaping"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-Notes-on-filtergraph-escaping">32.2 Notes on filtergraph escaping</a></h2>
+
+<p>Some filter arguments require the use of special characters, typically
+<code>:</code> to separate key=value pairs in a named options list. In this
+case the user should perform a first level escaping when specifying
+the filter arguments. For example, consider the following literal
+string to be embedded in the <a href="#drawtext">drawtext</a> filter arguments:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">this is a 'string': may contain one, or more, special characters
+</pre></td></tr></table>
+
+<p>Since <code>:</code> is special for the filter arguments syntax, it needs to
+be escaped, so you get:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">text=this is a \'string\'\: may contain one, or more, special characters
+</pre></td></tr></table>
+
+<p>A second level of escaping is required when embedding the filter
+arguments in a filtergraph description, in order to escape all the
+filtergraph special characters. Thus the example above becomes:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">drawtext=text=this is a \\\'string\\\'\\: may contain one\, or more\, special characters
+</pre></td></tr></table>
+
+<p>Finally an additional level of escaping may be needed when writing the
+filtergraph description in a shell command, which depends on the
+escaping rules of the adopted shell. For example, assuming that
+<code>\</code> is special and needs to be escaped with another <code>\</code>, the
+previous string will finally result in:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">-vf &quot;drawtext=text=this is a \\\\\\'string\\\\\\'\\\\: may contain one\\, or more\\, special characters&quot;
+</pre></td></tr></table>
+
+<p>Sometimes, it might be more convenient to employ quoting in place of
+escaping. For example the string:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">Caesar: tu quoque, Brute, fili mi
+</pre></td></tr></table>
+
+<p>Can be quoted in the filter arguments as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">text='Caesar: tu quoque, Brute, fili mi'
+</pre></td></tr></table>
+
+<p>And finally inserted in a filtergraph like:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">drawtext=text=\'Caesar: tu quoque\, Brute\, fili mi\'
+</pre></td></tr></table>
+
+<p>See the &ldquo;Quoting and escaping&rdquo; section in the ffmpeg-utils manual
+for more information about the escaping and quoting rules adopted by
+FFmpeg.
+</p>
+<a name="Timeline-editing"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Timeline-editing">33. Timeline editing</a></h1>
+
+<p>Some filters support a generic &lsquo;<samp>enable</samp>&rsquo; option. For the filters
+supporting timeline editing, this option can be set to an expression which is
+evaluated before sending a frame to the filter. If the evaluation is non-zero,
+the filter will be enabled, otherwise the frame will be sent unchanged to the
+next filter in the filtergraph.
+</p>
+<p>The expression accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>timestamp expressed in seconds, NAN if the input timestamp is unknown
+</p>
+</dd>
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>sequential number of the input frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
+<dd><p>the position in the file of the input frame, NAN if unknown
+</p></dd>
+</dl>
+
+<p>Additionally, these filters support an &lsquo;<samp>enable</samp>&rsquo; command that can be used
+to re-define the expression.
+</p>
+<p>Like any other filtering option, the &lsquo;<samp>enable</samp>&rsquo; option follows the same
+rules.
+</p>
+<p>For example, to enable a blur filter (<a href="#smartblur">smartblur</a>) from 10 seconds to 3
+minutes, and a <a href="#curves">curves</a> filter starting at 3 seconds:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">smartblur = enable='between(t,10,3*60)',
+curves    = enable='gte(t,3)' : preset=cross_process
+</pre></td></tr></table>
+
+
+<a name="Audio-Filters"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Audio-Filters">34. Audio Filters</a></h1>
+
+<p>When you configure your FFmpeg build, you can disable any of the
+existing filters using <code>--disable-filters</code>.
+The configure output will show the audio filters included in your
+build.
+</p>
+<p>Below is a description of the currently available audio filters.
+</p>
+<a name="aconvert"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-aconvert">34.1 aconvert</a></h2>
+
+<p>Convert the input audio format to the specified formats.
+</p>
+<p><em>This filter is deprecated. Use <a href="#aformat">aformat</a> instead.</em>
+</p>
+<p>The filter accepts a string of the form:
+&quot;<var>sample_format</var>:<var>channel_layout</var>&quot;.
+</p>
+<p><var>sample_format</var> specifies the sample format, and can be a string or the
+corresponding numeric value defined in &lsquo;<tt>libavutil/samplefmt.h</tt>&rsquo;. Use &rsquo;p&rsquo;
+suffix for a planar sample format.
+</p>
+<p><var>channel_layout</var> specifies the channel layout, and can be a string
+or the corresponding number value defined in &lsquo;<tt>libavutil/channel_layout.h</tt>&rsquo;.
+</p>
+<p>The special parameter &quot;auto&quot;, signifies that the filter will
+automatically select the output format depending on the output filter.
+</p>
+<a name="Examples-38"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-38">34.1.1 Examples</a></h3>
+
+<ul>
+<li>
+Convert input to float, planar, stereo:
+<table><tr><td>&nbsp;</td><td><pre class="example">aconvert=fltp:stereo
+</pre></td></tr></table>
+
+</li><li>
+Convert input to unsigned 8-bit, automatically select out channel layout:
+<table><tr><td>&nbsp;</td><td><pre class="example">aconvert=u8:auto
+</pre></td></tr></table>
+</li></ul>
+
+<a name="adelay"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-adelay">34.2 adelay</a></h2>
+
+<p>Delay one or more audio channels.
+</p>
+<p>Samples in delayed channel are filled with silence.
+</p>
+<p>The filter accepts the following option:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>delays</samp>&rsquo;</dt>
+<dd><p>Set list of delays in milliseconds for each channel separated by &rsquo;|&rsquo;.
+At least one delay greater than 0 should be provided.
+Unused delays will be silently ignored. If number of given delays is
+smaller than number of channels all remaining channels will not be delayed.
+</p></dd>
+</dl>
+
+<a name="Examples-22"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-22">34.2.1 Examples</a></h3>
+
+<ul>
+<li>
+Delay first channel by 1.5 seconds, the third channel by 0.5 seconds and leave
+the second channel (and any other channels that may be present) unchanged.
+<table><tr><td>&nbsp;</td><td><pre class="example">adelay=1500|0|500
+</pre></td></tr></table>
+</li></ul>
+
+<a name="aecho"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-aecho">34.3 aecho</a></h2>
+
+<p>Apply echoing to the input audio.
+</p>
+<p>Echoes are reflected sound and can occur naturally amongst mountains
+(and sometimes large buildings) when talking or shouting; digital echo
+effects emulate this behaviour and are often used to help fill out the
+sound of a single instrument or vocal. The time difference between the
+original signal and the reflection is the <code>delay</code>, and the
+loudness of the reflected signal is the <code>decay</code>.
+Multiple echoes can have different delays and decays.
+</p>
+<p>A description of the accepted parameters follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>in_gain</samp>&rsquo;</dt>
+<dd><p>Set input gain of reflected signal. Default is <code>0.6</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>out_gain</samp>&rsquo;</dt>
+<dd><p>Set output gain of reflected signal. Default is <code>0.3</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>delays</samp>&rsquo;</dt>
+<dd><p>Set list of time intervals in milliseconds between original signal and reflections
+separated by &rsquo;|&rsquo;. Allowed range for each <code>delay</code> is <code>(0 - 90000.0]</code>.
+Default is <code>1000</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>decays</samp>&rsquo;</dt>
+<dd><p>Set list of loudnesses of reflected signals separated by &rsquo;|&rsquo;.
+Allowed range for each <code>decay</code> is <code>(0 - 1.0]</code>.
+Default is <code>0.5</code>.
+</p></dd>
+</dl>
+
+<a name="Examples-76"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-76">34.3.1 Examples</a></h3>
+
+<ul>
+<li>
+Make it sound as if there are twice as many instruments as are actually playing:
+<table><tr><td>&nbsp;</td><td><pre class="example">aecho=0.8:0.88:60:0.4
+</pre></td></tr></table>
+
+</li><li>
+If delay is very short, then it sound like a (metallic) robot playing music:
+<table><tr><td>&nbsp;</td><td><pre class="example">aecho=0.8:0.88:6:0.4
+</pre></td></tr></table>
+
+</li><li>
+A longer delay will sound like an open air concert in the mountains:
+<table><tr><td>&nbsp;</td><td><pre class="example">aecho=0.8:0.9:1000:0.3
+</pre></td></tr></table>
+
+</li><li>
+Same as above but with one more mountain:
+<table><tr><td>&nbsp;</td><td><pre class="example">aecho=0.8:0.9:1000|1800:0.3|0.25
+</pre></td></tr></table>
+</li></ul>
+
+<a name="aeval"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-aeval">34.4 aeval</a></h2>
+
+<p>Modify an audio signal according to the specified expressions.
+</p>
+<p>This filter accepts one or more expressions (one for each channel),
+which are evaluated and used to modify a corresponding audio signal.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>exprs</samp>&rsquo;</dt>
+<dd><p>Set the &rsquo;|&rsquo;-separated expressions list for each separate channel. If
+the number of input channels is greater than the number of
+expressions, the last specified expression is used for the remaining
+output channels.
+</p>
+</dd>
+<dt> &lsquo;<samp>channel_layout, c</samp>&rsquo;</dt>
+<dd><p>Set output channel layout. If not specified, the channel layout is
+specified by the number of expressions. If set to &lsquo;<samp>same</samp>&rsquo;, it will
+use by default the same input channel layout.
+</p></dd>
+</dl>
+
+<p>Each expression in <var>exprs</var> can contain the following constants and functions:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>ch</samp>&rsquo;</dt>
+<dd><p>channel number of the current expression
+</p>
+</dd>
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>number of the evaluated sample, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>sample rate
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>time of the evaluated sample expressed in seconds
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_in_channels</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>nb_out_channels</samp>&rsquo;</dt>
+<dd><p>input and output number of channels
+</p>
+</dd>
+<dt> &lsquo;<samp>val(CH)</samp>&rsquo;</dt>
+<dd><p>the value of input channel with number <var>CH</var>
+</p></dd>
+</dl>
+
+<p>Note: this filter is slow. For faster processing you should use a
+dedicated filter.
+</p>
+<a name="Examples-90"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-90">34.4.1 Examples</a></h3>
+
+<ul>
+<li>
+Half volume:
+<table><tr><td>&nbsp;</td><td><pre class="example">aeval=val(ch)/2:c=same
+</pre></td></tr></table>
+
+</li><li>
+Invert phase of the second channel:
+<table><tr><td>&nbsp;</td><td><pre class="example">eval=val(0)|-val(1)
+</pre></td></tr></table>
+</li></ul>
+
+<a name="afade"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-afade">34.5 afade</a></h2>
+
+<p>Apply fade-in/out effect to input audio.
+</p>
+<p>A description of the accepted parameters follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>type, t</samp>&rsquo;</dt>
+<dd><p>Specify the effect type, can be either <code>in</code> for fade-in, or
+<code>out</code> for a fade-out effect. Default is <code>in</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_sample, ss</samp>&rsquo;</dt>
+<dd><p>Specify the number of the start sample for starting to apply the fade
+effect. Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_samples, ns</samp>&rsquo;</dt>
+<dd><p>Specify the number of samples for which the fade effect has to last. At
+the end of the fade-in effect the output audio will have the same
+volume as the input audio, at the end of the fade-out transition
+the output audio will be silence. Default is 44100.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_time, st</samp>&rsquo;</dt>
+<dd><p>Specify time for starting to apply the fade effect. Default is 0.
+The accepted syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[-]HH[:MM[:SS[.m...]]]
+[-]S+[.m...]
+</pre></td></tr></table>
+<p>See also the function <code>av_parse_time()</code>.
+If set this option is used instead of <var>start_sample</var> one.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
+<dd><p>Specify the duration for which the fade effect has to last. Default is 0.
+The accepted syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[-]HH[:MM[:SS[.m...]]]
+[-]S+[.m...]
+</pre></td></tr></table>
+<p>See also the function <code>av_parse_time()</code>.
+At the end of the fade-in effect the output audio will have the same
+volume as the input audio, at the end of the fade-out transition
+the output audio will be silence.
+If set this option is used instead of <var>nb_samples</var> one.
+</p>
+</dd>
+<dt> &lsquo;<samp>curve</samp>&rsquo;</dt>
+<dd><p>Set curve for fade transition.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>tri</samp>&rsquo;</dt>
+<dd><p>select triangular, linear slope (default)
+</p></dd>
+<dt> &lsquo;<samp>qsin</samp>&rsquo;</dt>
+<dd><p>select quarter of sine wave
+</p></dd>
+<dt> &lsquo;<samp>hsin</samp>&rsquo;</dt>
+<dd><p>select half of sine wave
+</p></dd>
+<dt> &lsquo;<samp>esin</samp>&rsquo;</dt>
+<dd><p>select exponential sine wave
+</p></dd>
+<dt> &lsquo;<samp>log</samp>&rsquo;</dt>
+<dd><p>select logarithmic
+</p></dd>
+<dt> &lsquo;<samp>par</samp>&rsquo;</dt>
+<dd><p>select inverted parabola
+</p></dd>
+<dt> &lsquo;<samp>qua</samp>&rsquo;</dt>
+<dd><p>select quadratic
+</p></dd>
+<dt> &lsquo;<samp>cub</samp>&rsquo;</dt>
+<dd><p>select cubic
+</p></dd>
+<dt> &lsquo;<samp>squ</samp>&rsquo;</dt>
+<dd><p>select square root
+</p></dd>
+<dt> &lsquo;<samp>cbr</samp>&rsquo;</dt>
+<dd><p>select cubic root
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<a name="Examples-53"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-53">34.5.1 Examples</a></h3>
+
+<ul>
+<li>
+Fade in first 15 seconds of audio:
+<table><tr><td>&nbsp;</td><td><pre class="example">afade=t=in:ss=0:d=15
+</pre></td></tr></table>
+
+</li><li>
+Fade out last 25 seconds of a 900 seconds audio:
+<table><tr><td>&nbsp;</td><td><pre class="example">afade=t=out:st=875:d=25
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="aformat"></a>
+</p><a name="aformat-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-aformat-1">34.6 aformat</a></h2>
+
+<p>Set output format constraints for the input audio. The framework will
+negotiate the most appropriate format to minimize conversions.
+</p>
+<p>The filter accepts the following named parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sample_fmts</samp>&rsquo;</dt>
+<dd><p>A &rsquo;|&rsquo;-separated list of requested sample formats.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rates</samp>&rsquo;</dt>
+<dd><p>A &rsquo;|&rsquo;-separated list of requested sample rates.
+</p>
+</dd>
+<dt> &lsquo;<samp>channel_layouts</samp>&rsquo;</dt>
+<dd><p>A &rsquo;|&rsquo;-separated list of requested channel layouts.
+</p>
+<p>See <a href="ffmpeg-utils.html#channel-layout-syntax">(ffmpeg-utils)channel layout syntax</a>
+for the required syntax.
+</p></dd>
+</dl>
+
+<p>If a parameter is omitted, all values are allowed.
+</p>
+<p>For example to force the output to either unsigned 8-bit or signed 16-bit stereo:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">aformat=sample_fmts=u8|s16:channel_layouts=stereo
+</pre></td></tr></table>
+
+<a name="allpass"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-allpass">34.7 allpass</a></h2>
+
+<p>Apply a two-pole all-pass filter with central frequency (in Hz)
+<var>frequency</var>, and filter-width <var>width</var>.
+An all-pass filter changes the audio&rsquo;s frequency to phase relationship
+without changing its frequency to amplitude relationship.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set frequency in Hz.
+</p>
+</dd>
+<dt> &lsquo;<samp>width_type</samp>&rsquo;</dt>
+<dd><p>Set method to specify band-width of filter.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Hz
+</p></dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Q-Factor
+</p></dd>
+<dt> &lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>octave
+</p></dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>slope
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dd><p>Specify the band-width of a filter in width_type units.
+</p></dd>
+</dl>
+
+<a name="amerge"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-amerge">34.8 amerge</a></h2>
+
+<p>Merge two or more audio streams into a single multi-channel stream.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>inputs</samp>&rsquo;</dt>
+<dd><p>Set the number of inputs. Default is 2.
+</p>
+</dd>
+</dl>
+
+<p>If the channel layouts of the inputs are disjoint, and therefore compatible,
+the channel layout of the output will be set accordingly and the channels
+will be reordered as necessary. If the channel layouts of the inputs are not
+disjoint, the output will have all the channels of the first input then all
+the channels of the second input, in that order, and the channel layout of
+the output will be the default value corresponding to the total number of
+channels.
+</p>
+<p>For example, if the first input is in 2.1 (FL+FR+LF) and the second input
+is FC+BL+BR, then the output will be in 5.1, with the channels in the
+following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
+first input, b1 is the first channel of the second input).
+</p>
+<p>On the other hand, if both input are in stereo, the output channels will be
+in the default order: a1, a2, b1, b2, and the channel layout will be
+arbitrarily set to 4.0, which may or may not be the expected value.
+</p>
+<p>All inputs must have the same sample rate, and format.
+</p>
+<p>If inputs do not have the same duration, the output will stop with the
+shortest.
+</p>
+<a name="Examples-56"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-56">34.8.1 Examples</a></h3>
+
+<ul>
+<li>
+Merge two mono files into a stereo stream:
+<table><tr><td>&nbsp;</td><td><pre class="example">amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
+</pre></td></tr></table>
+
+</li><li>
+Multiple merges assuming 1 video stream and 6 audio streams in &lsquo;<tt>input.mkv</tt>&rsquo;:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.mkv -filter_complex &quot;[0:1][0:2][0:3][0:4][0:5][0:6] amerge=inputs=6&quot; -c:a pcm_s16le output.mkv
+</pre></td></tr></table>
+</li></ul>
+
+<a name="amix"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-amix">34.9 amix</a></h2>
+
+<p>Mixes multiple audio inputs into a single output.
+</p>
+<p>For example
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
+</pre></td></tr></table>
+<p>will mix 3 input audio streams to a single output with the same duration as the
+first input and a dropout transition time of 3 seconds.
+</p>
+<p>The filter accepts the following named parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>inputs</samp>&rsquo;</dt>
+<dd><p>Number of inputs. If unspecified, it defaults to 2.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration</samp>&rsquo;</dt>
+<dd><p>How to determine the end-of-stream.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>longest</samp>&rsquo;</dt>
+<dd><p>Duration of longest input. (default)
+</p>
+</dd>
+<dt> &lsquo;<samp>shortest</samp>&rsquo;</dt>
+<dd><p>Duration of shortest input.
+</p>
+</dd>
+<dt> &lsquo;<samp>first</samp>&rsquo;</dt>
+<dd><p>Duration of first input.
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>dropout_transition</samp>&rsquo;</dt>
+<dd><p>Transition time, in seconds, for volume renormalization when an input
+stream ends. The default value is 2 seconds.
+</p>
+</dd>
+</dl>
+
+<a name="anull"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-anull">34.10 anull</a></h2>
+
+<p>Pass the audio source unchanged to the output.
+</p>
+<a name="apad"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-apad">34.11 apad</a></h2>
+
+<p>Pad the end of a audio stream with silence, this can be used together with
+-shortest to extend audio streams to the same length as the video stream.
+</p>
+<a name="aphaser"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-aphaser">34.12 aphaser</a></h2>
+<p>Add a phasing effect to the input audio.
+</p>
+<p>A phaser filter creates series of peaks and troughs in the frequency spectrum.
+The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
+</p>
+<p>A description of the accepted parameters follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>in_gain</samp>&rsquo;</dt>
+<dd><p>Set input gain. Default is 0.4.
+</p>
+</dd>
+<dt> &lsquo;<samp>out_gain</samp>&rsquo;</dt>
+<dd><p>Set output gain. Default is 0.74
+</p>
+</dd>
+<dt> &lsquo;<samp>delay</samp>&rsquo;</dt>
+<dd><p>Set delay in milliseconds. Default is 3.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>decay</samp>&rsquo;</dt>
+<dd><p>Set decay. Default is 0.4.
+</p>
+</dd>
+<dt> &lsquo;<samp>speed</samp>&rsquo;</dt>
+<dd><p>Set modulation speed in Hz. Default is 0.5.
+</p>
+</dd>
+<dt> &lsquo;<samp>type</samp>&rsquo;</dt>
+<dd><p>Set modulation type. Default is triangular.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>triangular, t</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sinusoidal, s</samp>&rsquo;</dt>
+</dl>
+</dd>
+</dl>
+
+<p><a name="aresample"></a>
+</p><a name="aresample-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-aresample-1">34.13 aresample</a></h2>
+
+<p>Resample the input audio to the specified parameters, using the
+libswresample library. If none are specified then the filter will
+automatically convert between its input and output.
+</p>
+<p>This filter is also able to stretch/squeeze the audio data to make it match
+the timestamps or to inject silence / cut out audio to make it match the
+timestamps, do a combination of both or do neither.
+</p>
+<p>The filter accepts the syntax
+[<var>sample_rate</var>:]<var>resampler_options</var>, where <var>sample_rate</var>
+expresses a sample rate and <var>resampler_options</var> is a list of
+<var>key</var>=<var>value</var> pairs, separated by &quot;:&quot;. See the
+ffmpeg-resampler manual for the complete list of supported options.
+</p>
+<a name="Examples-18"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-18">34.13.1 Examples</a></h3>
+
+<ul>
+<li>
+Resample the input audio to 44100Hz:
+<table><tr><td>&nbsp;</td><td><pre class="example">aresample=44100
+</pre></td></tr></table>
+
+</li><li>
+Stretch/squeeze samples to the given timestamps, with a maximum of 1000
+samples per second compensation:
+<table><tr><td>&nbsp;</td><td><pre class="example">aresample=async=1000
+</pre></td></tr></table>
+</li></ul>
+
+<a name="asetnsamples"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-asetnsamples">34.14 asetnsamples</a></h2>
+
+<p>Set the number of samples per each output audio frame.
+</p>
+<p>The last output packet may contain a different number of samples, as
+the filter will flush all the remaining samples when the input audio
+signal its end.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>nb_out_samples, n</samp>&rsquo;</dt>
+<dd><p>Set the number of frames per each output audio frame. The number is
+intended as the number of samples <em>per each channel</em>.
+Default value is 1024.
+</p>
+</dd>
+<dt> &lsquo;<samp>pad, p</samp>&rsquo;</dt>
+<dd><p>If set to 1, the filter will pad the last audio frame with zeroes, so
+that the last frame will contain the same number of samples as the
+previous ones. Default value is 1.
+</p></dd>
+</dl>
+
+<p>For example, to set the number of per-frame samples to 1234 and
+disable padding for the last frame, use:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">asetnsamples=n=1234:p=0
+</pre></td></tr></table>
+
+<a name="asetrate"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-asetrate">34.15 asetrate</a></h2>
+
+<p>Set the sample rate without altering the PCM data.
+This will result in a change of speed and pitch.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>sample_rate, r</samp>&rsquo;</dt>
+<dd><p>Set the output sample rate. Default is 44100 Hz.
+</p></dd>
+</dl>
+
+<a name="ashowinfo"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-ashowinfo">34.16 ashowinfo</a></h2>
+
+<p>Show a line containing various information for each input audio frame.
+The input audio is not modified.
+</p>
+<p>The shown line contains a sequence of key/value pairs of the form
+<var>key</var>:<var>value</var>.
+</p>
+<p>A description of each shown parameter follows:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>sequential number of the input frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
+<dd><p>Presentation timestamp of the input frame, in time base units; the time base
+depends on the filter input pad, and is usually 1/<var>sample_rate</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>pts_time</samp>&rsquo;</dt>
+<dd><p>presentation timestamp of the input frame in seconds
+</p>
+</dd>
+<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
+<dd><p>position of the frame in the input stream, -1 if this information in
+unavailable and/or meaningless (for example in case of synthetic audio)
+</p>
+</dd>
+<dt> &lsquo;<samp>fmt</samp>&rsquo;</dt>
+<dd><p>sample format
+</p>
+</dd>
+<dt> &lsquo;<samp>chlayout</samp>&rsquo;</dt>
+<dd><p>channel layout
+</p>
+</dd>
+<dt> &lsquo;<samp>rate</samp>&rsquo;</dt>
+<dd><p>sample rate for the audio frame
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_samples</samp>&rsquo;</dt>
+<dd><p>number of samples (per channel) in the frame
+</p>
+</dd>
+<dt> &lsquo;<samp>checksum</samp>&rsquo;</dt>
+<dd><p>Adler-32 checksum (printed in hexadecimal) of the audio data. For planar audio
+the data is treated as if all the planes were concatenated.
+</p>
+</dd>
+<dt> &lsquo;<samp>plane_checksums</samp>&rsquo;</dt>
+<dd><p>A list of Adler-32 checksums for each data plane.
+</p></dd>
+</dl>
+
+<a name="astats"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-astats">34.17 astats</a></h2>
+
+<p>Display time domain statistical information about the audio channels.
+Statistics are calculated and displayed for each audio channel and,
+where applicable, an overall figure is also given.
+</p>
+<p>The filter accepts the following option:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>length</samp>&rsquo;</dt>
+<dd><p>Short window length in seconds, used for peak and trough RMS measurement.
+Default is <code>0.05</code> (50 miliseconds). Allowed range is <code>[0.1 - 10]</code>.
+</p></dd>
+</dl>
+
+<p>A description of each shown parameter follows:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>DC offset</samp>&rsquo;</dt>
+<dd><p>Mean amplitude displacement from zero.
+</p>
+</dd>
+<dt> &lsquo;<samp>Min level</samp>&rsquo;</dt>
+<dd><p>Minimal sample level.
+</p>
+</dd>
+<dt> &lsquo;<samp>Max level</samp>&rsquo;</dt>
+<dd><p>Maximal sample level.
+</p>
+</dd>
+<dt> &lsquo;<samp>Peak level dB</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>RMS level dB</samp>&rsquo;</dt>
+<dd><p>Standard peak and RMS level measured in dBFS.
+</p>
+</dd>
+<dt> &lsquo;<samp>RMS peak dB</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>RMS trough dB</samp>&rsquo;</dt>
+<dd><p>Peak and trough values for RMS level measured over a short window.
+</p>
+</dd>
+<dt> &lsquo;<samp>Crest factor</samp>&rsquo;</dt>
+<dd><p>Standard ratio of peak to RMS level (note: not in dB).
+</p>
+</dd>
+<dt> &lsquo;<samp>Flat factor</samp>&rsquo;</dt>
+<dd><p>Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
+(i.e. either <var>Min level</var> or <var>Max level</var>).
+</p>
+</dd>
+<dt> &lsquo;<samp>Peak count</samp>&rsquo;</dt>
+<dd><p>Number of occasions (not the number of samples) that the signal attained either
+<var>Min level</var> or <var>Max level</var>.
+</p></dd>
+</dl>
+
+<a name="astreamsync"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-astreamsync">34.18 astreamsync</a></h2>
+
+<p>Forward two audio streams and control the order the buffers are forwarded.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>expr, e</samp>&rsquo;</dt>
+<dd><p>Set the expression deciding which stream should be
+forwarded next: if the result is negative, the first stream is forwarded; if
+the result is positive or zero, the second stream is forwarded. It can use
+the following variables:
+</p>
+<dl compact="compact">
+<dt> <var>b1 b2</var></dt>
+<dd><p>number of buffers forwarded so far on each stream
+</p></dd>
+<dt> <var>s1 s2</var></dt>
+<dd><p>number of samples forwarded so far on each stream
+</p></dd>
+<dt> <var>t1 t2</var></dt>
+<dd><p>current timestamp of each stream
+</p></dd>
+</dl>
+
+<p>The default value is <code>t1-t2</code>, which means to always forward the stream
+that has a smaller timestamp.
+</p></dd>
+</dl>
+
+<a name="Examples-31"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-31">34.18.1 Examples</a></h3>
+
+<p>Stress-test <code>amerge</code> by randomly sending buffers on the wrong
+input, while avoiding too much of a desynchronization:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">amovie=file.ogg [a] ; amovie=file.mp3 [b] ;
+[a] [b] astreamsync=(2*random(1))-1+tanh(5*(t1-t2)) [a2] [b2] ;
+[a2] [b2] amerge
+</pre></td></tr></table>
+
+<a name="asyncts"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-asyncts">34.19 asyncts</a></h2>
+
+<p>Synchronize audio data with timestamps by squeezing/stretching it and/or
+dropping samples/adding silence when needed.
+</p>
+<p>This filter is not built by default, please use <a href="#aresample">aresample</a> to do squeezing/stretching.
+</p>
+<p>The filter accepts the following named parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>compensate</samp>&rsquo;</dt>
+<dd><p>Enable stretching/squeezing the data to make it match the timestamps. Disabled
+by default. When disabled, time gaps are covered with silence.
+</p>
+</dd>
+<dt> &lsquo;<samp>min_delta</samp>&rsquo;</dt>
+<dd><p>Minimum difference between timestamps and audio data (in seconds) to trigger
+adding/dropping samples. Default value is 0.1. If you get non-perfect sync with
+this filter, try setting this parameter to 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>max_comp</samp>&rsquo;</dt>
+<dd><p>Maximum compensation in samples per second. Relevant only with compensate=1.
+Default value 500.
+</p>
+</dd>
+<dt> &lsquo;<samp>first_pts</samp>&rsquo;</dt>
+<dd><p>Assume the first pts should be this value. The time base is 1 / sample rate.
+This allows for padding/trimming at the start of stream. By default, no
+assumption is made about the first frame&rsquo;s expected pts, so no padding or
+trimming is done. For example, this could be set to 0 to pad the beginning with
+silence if an audio stream starts after the video stream or to trim any samples
+with a negative pts due to encoder delay.
+</p>
+</dd>
+</dl>
+
+<a name="atempo"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-atempo">34.20 atempo</a></h2>
+
+<p>Adjust audio tempo.
+</p>
+<p>The filter accepts exactly one parameter, the audio tempo. If not
+specified then the filter will assume nominal 1.0 tempo. Tempo must
+be in the [0.5, 2.0] range.
+</p>
+<a name="Examples-39"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-39">34.20.1 Examples</a></h3>
+
+<ul>
+<li>
+Slow down audio to 80% tempo:
+<table><tr><td>&nbsp;</td><td><pre class="example">atempo=0.8
+</pre></td></tr></table>
+
+</li><li>
+To speed up audio to 125% tempo:
+<table><tr><td>&nbsp;</td><td><pre class="example">atempo=1.25
+</pre></td></tr></table>
+</li></ul>
+
+<a name="atrim"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-atrim">34.21 atrim</a></h2>
+
+<p>Trim the input so that the output contains one continuous subpart of the input.
+</p>
+<p>This filter accepts the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>start</samp>&rsquo;</dt>
+<dd><p>Specify time of the start of the kept section, i.e. the audio sample
+with the timestamp <var>start</var> will be the first sample in the output.
+</p>
+</dd>
+<dt> &lsquo;<samp>end</samp>&rsquo;</dt>
+<dd><p>Specify time of the first audio sample that will be dropped, i.e. the
+audio sample immediately preceding the one with the timestamp <var>end</var> will be
+the last sample in the output.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_pts</samp>&rsquo;</dt>
+<dd><p>Same as <var>start</var>, except this option sets the start timestamp in samples
+instead of seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>end_pts</samp>&rsquo;</dt>
+<dd><p>Same as <var>end</var>, except this option sets the end timestamp in samples instead
+of seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration</samp>&rsquo;</dt>
+<dd><p>Specify maximum duration of the output.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_sample</samp>&rsquo;</dt>
+<dd><p>Number of the first sample that should be passed to output.
+</p>
+</dd>
+<dt> &lsquo;<samp>end_sample</samp>&rsquo;</dt>
+<dd><p>Number of the first sample that should be dropped.
+</p></dd>
+</dl>
+
+<p>&lsquo;<samp>start</samp>&rsquo;, &lsquo;<samp>end</samp>&rsquo;, &lsquo;<samp>duration</samp>&rsquo; are expressed as time
+duration specifications, check the &quot;Time duration&quot; section in the
+ffmpeg-utils manual.
+</p>
+<p>Note that the first two sets of the start/end options and the &lsquo;<samp>duration</samp>&rsquo;
+option look at the frame timestamp, while the _sample options simply count the
+samples that pass through the filter. So start/end_pts and start/end_sample will
+give different results when the timestamps are wrong, inexact or do not start at
+zero. Also note that this filter does not modify the timestamps. If you wish
+that the output timestamps start at zero, insert the asetpts filter after the
+atrim filter.
+</p>
+<p>If multiple start or end options are set, this filter tries to be greedy and
+keep all samples that match at least one of the specified constraints. To keep
+only the part that matches all the constraints at once, chain multiple atrim
+filters.
+</p>
+<p>The defaults are such that all the input is kept. So it is possible to set e.g.
+just the end values to keep everything before the specified time.
+</p>
+<p>Examples:
+</p><ul>
+<li>
+drop everything except the second minute of input
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -af atrim=60:120
+</pre></td></tr></table>
+
+</li><li>
+keep only the first 1000 samples
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -af atrim=end_sample=1000
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="bandpass"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-bandpass">34.22 bandpass</a></h2>
+
+<p>Apply a two-pole Butterworth band-pass filter with central
+frequency <var>frequency</var>, and (3dB-point) band-width width.
+The <var>csg</var> option selects a constant skirt gain (peak gain = Q)
+instead of the default: constant 0dB peak gain.
+The filter roll off at 6dB per octave (20dB per decade).
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set the filter&rsquo;s central frequency. Default is <code>3000</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>csg</samp>&rsquo;</dt>
+<dd><p>Constant skirt gain if set to 1. Defaults to 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>width_type</samp>&rsquo;</dt>
+<dd><p>Set method to specify band-width of filter.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Hz
+</p></dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Q-Factor
+</p></dd>
+<dt> &lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>octave
+</p></dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>slope
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dd><p>Specify the band-width of a filter in width_type units.
+</p></dd>
+</dl>
+
+<a name="bandreject"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-bandreject">34.23 bandreject</a></h2>
+
+<p>Apply a two-pole Butterworth band-reject filter with central
+frequency <var>frequency</var>, and (3dB-point) band-width <var>width</var>.
+The filter roll off at 6dB per octave (20dB per decade).
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set the filter&rsquo;s central frequency. Default is <code>3000</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>width_type</samp>&rsquo;</dt>
+<dd><p>Set method to specify band-width of filter.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Hz
+</p></dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Q-Factor
+</p></dd>
+<dt> &lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>octave
+</p></dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>slope
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dd><p>Specify the band-width of a filter in width_type units.
+</p></dd>
+</dl>
+
+<a name="bass"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-bass">34.24 bass</a></h2>
+
+<p>Boost or cut the bass (lower) frequencies of the audio using a two-pole
+shelving filter with a response similar to that of a standard
+hi-fi&rsquo;s tone-controls. This is also known as shelving equalisation (EQ).
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>gain, g</samp>&rsquo;</dt>
+<dd><p>Give the gain at 0 Hz. Its useful range is about -20
+(for a large cut) to +20 (for a large boost).
+Beware of clipping when using a positive gain.
+</p>
+</dd>
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set the filter&rsquo;s central frequency and so can be used
+to extend or reduce the frequency range to be boosted or cut.
+The default value is <code>100</code> Hz.
+</p>
+</dd>
+<dt> &lsquo;<samp>width_type</samp>&rsquo;</dt>
+<dd><p>Set method to specify band-width of filter.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Hz
+</p></dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Q-Factor
+</p></dd>
+<dt> &lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>octave
+</p></dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>slope
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dd><p>Determine how steep is the filter&rsquo;s shelf transition.
+</p></dd>
+</dl>
+
+<a name="biquad"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-biquad">34.25 biquad</a></h2>
+
+<p>Apply a biquad IIR filter with the given coefficients.
+Where <var>b0</var>, <var>b1</var>, <var>b2</var> and <var>a0</var>, <var>a1</var>, <var>a2</var>
+are the numerator and denominator coefficients respectively.
+</p>
+<a name="channelmap"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-channelmap">34.26 channelmap</a></h2>
+
+<p>Remap input channels to new locations.
+</p>
+<p>This filter accepts the following named parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>channel_layout</samp>&rsquo;</dt>
+<dd><p>Channel layout of the output stream.
+</p>
+</dd>
+<dt> &lsquo;<samp>map</samp>&rsquo;</dt>
+<dd><p>Map channels from input to output. The argument is a &rsquo;|&rsquo;-separated list of
+mappings, each in the <code><var>in_channel</var>-<var>out_channel</var></code> or
+<var>in_channel</var> form. <var>in_channel</var> can be either the name of the input
+channel (e.g. FL for front left) or its index in the input channel layout.
+<var>out_channel</var> is the name of the output channel or its index in the output
+channel layout. If <var>out_channel</var> is not given then it is implicitly an
+index, starting with zero and increasing by one for each mapping.
+</p></dd>
+</dl>
+
+<p>If no mapping is present, the filter will implicitly map input channels to
+output channels preserving index.
+</p>
+<p>For example, assuming a 5.1+downmix input MOV file
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
+</pre></td></tr></table>
+<p>will create an output WAV file tagged as stereo from the downmix channels of
+the input.
+</p>
+<p>To fix a 5.1 WAV improperly encoded in AAC&rsquo;s native channel order
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:channel_layout=5.1' out.wav
+</pre></td></tr></table>
+
+<a name="channelsplit"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-channelsplit">34.27 channelsplit</a></h2>
+
+<p>Split each channel in input audio stream into a separate output stream.
+</p>
+<p>This filter accepts the following named parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>channel_layout</samp>&rsquo;</dt>
+<dd><p>Channel layout of the input stream. Default is &quot;stereo&quot;.
+</p></dd>
+</dl>
+
+<p>For example, assuming a stereo input MP3 file
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
+</pre></td></tr></table>
+<p>will create an output Matroska file with two audio streams, one containing only
+the left channel and the other the right channel.
+</p>
+<p>To split a 5.1 WAV file into per-channel files
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.wav -filter_complex
+'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
+-map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
+front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
+side_right.wav
+</pre></td></tr></table>
+
+<a name="compand"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-compand">34.28 compand</a></h2>
+
+<p>Compress or expand audio dynamic range.
+</p>
+<p>A description of the accepted options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>attacks</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>decays</samp>&rsquo;</dt>
+<dd><p>Set list of times in seconds for each channel over which the instantaneous
+level of the input signal is averaged to determine its volume.
+&lsquo;<samp>attacks</samp>&rsquo; refers to increase of volume and &lsquo;<samp>decays</samp>&rsquo; refers
+to decrease of volume.
+For most situations, the attack time (response to the audio getting louder)
+should be shorter than the decay time because the human ear is more sensitive
+to sudden loud audio than sudden soft audio.
+Typical value for attack is <code>0.3</code> seconds and for decay <code>0.8</code>
+seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>points</samp>&rsquo;</dt>
+<dd><p>Set list of points for transfer function, specified in dB relative to maximum
+possible signal amplitude.
+Each key points list need to be defined using the following syntax:
+<code>x0/y0 x1/y1 x2/y2 ...</code>.
+</p>
+<p>The input values must be in strictly increasing order but the transfer
+function does not have to be monotonically rising.
+The point <code>0/0</code> is assumed but may be overridden (by <code>0/out-dBn</code>).
+Typical values for the transfer function are <code>-70/-70 -60/-20</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>soft-knee</samp>&rsquo;</dt>
+<dd><p>Set amount for which the points at where adjacent line segments on the
+transfer function meet will be rounded. Defaults is <code>0.01</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>gain</samp>&rsquo;</dt>
+<dd><p>Set additional gain in dB to be applied at all points on the transfer function
+and allows easy adjustment of the overall gain.
+Default is <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>volume</samp>&rsquo;</dt>
+<dd><p>Set initial volume in dB to be assumed for each channel when filtering starts.
+This permits the user to supply a nominal level initially, so that,
+for example, a very large gain is not applied to initial signal levels before
+the companding has begun to operate. A typical value for audio which is
+initially quiet is -90 dB. Default is <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>delay</samp>&rsquo;</dt>
+<dd><p>Set delay in seconds. Default is <code>0</code>. The input audio
+is analysed immediately, but audio is delayed before being fed to the
+volume adjuster. Specifying a delay approximately equal to the attack/decay
+times allows the filter to effectively operate in predictive rather than
+reactive mode.
+</p></dd>
+</dl>
+
+<a name="Examples-79"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-79">34.28.1 Examples</a></h3>
+<ul>
+<li>
+Make music with both quiet and loud passages suitable for listening
+in a noisy environment:
+<table><tr><td>&nbsp;</td><td><pre class="example">compand=.3 .3:1 1:-90/-60 -60/-40 -40/-30 -20/-20:6:0:-90:0.2
+</pre></td></tr></table>
+
+</li><li>
+Noise-gate for when the noise is at a lower level than the signal:
+<table><tr><td>&nbsp;</td><td><pre class="example">compand=.1 .1:.2 .2:-900/-900 -50.1/-900 -50/-50:.01:0:-90:.1
+</pre></td></tr></table>
+
+</li><li>
+Here is another noise-gate, this time for when the noise is at a higher level
+than the signal (making it, in some ways, similar to squelch):
+<table><tr><td>&nbsp;</td><td><pre class="example">compand=.1 .1:.1 .1:-45.1/-45.1 -45/-900 0/-900:.01:45:-90:.1
+</pre></td></tr></table>
+</li></ul>
+
+<a name="earwax"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-earwax">34.29 earwax</a></h2>
+
+<p>Make audio easier to listen to on headphones.
+</p>
+<p>This filter adds &lsquo;cues&rsquo; to 44.1kHz stereo (i.e. audio CD format) audio
+so that when listened to on headphones the stereo image is moved from
+inside your head (standard for headphones) to outside and in front of
+the listener (standard for speakers).
+</p>
+<p>Ported from SoX.
+</p>
+<a name="equalizer"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-equalizer">34.30 equalizer</a></h2>
+
+<p>Apply a two-pole peaking equalisation (EQ) filter. With this
+filter, the signal-level at and around a selected frequency can
+be increased or decreased, whilst (unlike bandpass and bandreject
+filters) that at all other frequencies is unchanged.
+</p>
+<p>In order to produce complex equalisation curves, this filter can
+be given several times, each with a different central frequency.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set the filter&rsquo;s central frequency in Hz.
+</p>
+</dd>
+<dt> &lsquo;<samp>width_type</samp>&rsquo;</dt>
+<dd><p>Set method to specify band-width of filter.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Hz
+</p></dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Q-Factor
+</p></dd>
+<dt> &lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>octave
+</p></dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>slope
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dd><p>Specify the band-width of a filter in width_type units.
+</p>
+</dd>
+<dt> &lsquo;<samp>gain, g</samp>&rsquo;</dt>
+<dd><p>Set the required gain or attenuation in dB.
+Beware of clipping when using a positive gain.
+</p></dd>
+</dl>
+
+<a name="highpass"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-highpass">34.31 highpass</a></h2>
+
+<p>Apply a high-pass filter with 3dB point frequency.
+The filter can be either single-pole, or double-pole (the default).
+The filter roll off at 6dB per pole per octave (20dB per pole per decade).
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set frequency in Hz. Default is 3000.
+</p>
+</dd>
+<dt> &lsquo;<samp>poles, p</samp>&rsquo;</dt>
+<dd><p>Set number of poles. Default is 2.
+</p>
+</dd>
+<dt> &lsquo;<samp>width_type</samp>&rsquo;</dt>
+<dd><p>Set method to specify band-width of filter.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Hz
+</p></dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Q-Factor
+</p></dd>
+<dt> &lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>octave
+</p></dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>slope
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dd><p>Specify the band-width of a filter in width_type units.
+Applies only to double-pole filter.
+The default is 0.707q and gives a Butterworth response.
+</p></dd>
+</dl>
+
+<a name="join"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-join">34.32 join</a></h2>
+
+<p>Join multiple input streams into one multi-channel stream.
+</p>
+<p>The filter accepts the following named parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>inputs</samp>&rsquo;</dt>
+<dd><p>Number of input streams. Defaults to 2.
+</p>
+</dd>
+<dt> &lsquo;<samp>channel_layout</samp>&rsquo;</dt>
+<dd><p>Desired output channel layout. Defaults to stereo.
+</p>
+</dd>
+<dt> &lsquo;<samp>map</samp>&rsquo;</dt>
+<dd><p>Map channels from inputs to output. The argument is a &rsquo;|&rsquo;-separated list of
+mappings, each in the <code><var>input_idx</var>.<var>in_channel</var>-<var>out_channel</var></code>
+form. <var>input_idx</var> is the 0-based index of the input stream. <var>in_channel</var>
+can be either the name of the input channel (e.g. FL for front left) or its
+index in the specified input stream. <var>out_channel</var> is the name of the output
+channel.
+</p></dd>
+</dl>
+
+<p>The filter will attempt to guess the mappings when those are not specified
+explicitly. It does so by first trying to find an unused matching input channel
+and if that fails it picks the first unused input channel.
+</p>
+<p>E.g. to join 3 inputs (with properly set channel layouts)
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
+</pre></td></tr></table>
+
+<p>To build a 5.1 output from 6 single-channel streams:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
+'join=inputs=6:channel_layout=5.1:map=0.0-FL|1.0-FR|2.0-FC|3.0-SL|4.0-SR|5.0-LFE'
+out
+</pre></td></tr></table>
+
+<a name="ladspa"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-ladspa">34.33 ladspa</a></h2>
+
+<p>Load a LADSPA (Linux Audio Developer&rsquo;s Simple Plugin API) plugin.
+</p>
+<p>To enable compilation of this filter you need to configure FFmpeg with
+<code>--enable-ladspa</code>.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>file, f</samp>&rsquo;</dt>
+<dd><p>Specifies the name of LADSPA plugin library to load. If the environment
+variable <code>LADSPA_PATH</code> is defined, the LADSPA plugin is searched in
+each one of the directories specified by the colon separated list in
+<code>LADSPA_PATH</code>, otherwise in the standard LADSPA paths, which are in
+this order: &lsquo;<tt>HOME/.ladspa/lib/</tt>&rsquo;, &lsquo;<tt>/usr/local/lib/ladspa/</tt>&rsquo;,
+&lsquo;<tt>/usr/lib/ladspa/</tt>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>plugin, p</samp>&rsquo;</dt>
+<dd><p>Specifies the plugin within the library. Some libraries contain only
+one plugin, but others contain many of them. If this is not set filter
+will list all available plugins within the specified library.
+</p>
+</dd>
+<dt> &lsquo;<samp>controls, c</samp>&rsquo;</dt>
+<dd><p>Set the &rsquo;|&rsquo; separated list of controls which are zero or more floating point
+values that determine the behavior of the loaded plugin (for example delay,
+threshold or gain).
+Controls need to be defined using the following syntax:
+c0=<var>value0</var>|c1=<var>value1</var>|c2=<var>value2</var>|..., where
+<var>valuei</var> is the value set on the <var>i</var>-th control.
+If &lsquo;<samp>controls</samp>&rsquo; is set to <code>help</code>, all available controls and
+their valid ranges are printed.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate, s</samp>&rsquo;</dt>
+<dd><p>Specify the sample rate, default to 44100. Only used if plugin have
+zero inputs.
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_samples, n</samp>&rsquo;</dt>
+<dd><p>Set the number of samples per channel per each output frame, default
+is 1024. Only used if plugin have zero inputs.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
+<dd><p>Set the minimum duration of the sourced audio. See the function
+<code>av_parse_time()</code> for the accepted format, also check the &quot;Time duration&quot;
+section in the ffmpeg-utils manual.
+Note that the resulting duration may be greater than the specified duration,
+as the generated audio is always cut at the end of a complete frame.
+If not specified, or the expressed duration is negative, the audio is
+supposed to be generated forever.
+Only used if plugin have zero inputs.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-75"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-75">34.33.1 Examples</a></h3>
+
+<ul>
+<li>
+List all available plugins within amp (LADSPA example plugin) library:
+<table><tr><td>&nbsp;</td><td><pre class="example">ladspa=file=amp
+</pre></td></tr></table>
+
+</li><li>
+List all available controls and their valid ranges for <code>vcf_notch</code>
+plugin from <code>VCF</code> library:
+<table><tr><td>&nbsp;</td><td><pre class="example">ladspa=f=vcf:p=vcf_notch:c=help
+</pre></td></tr></table>
+
+</li><li>
+Simulate low quality audio equipment using <code>Computer Music Toolkit</code> (CMT)
+plugin library:
+<table><tr><td>&nbsp;</td><td><pre class="example">ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
+</pre></td></tr></table>
+
+</li><li>
+Add reverberation to the audio using TAP-plugins
+(Tom&rsquo;s Audio Processing plugins):
+<table><tr><td>&nbsp;</td><td><pre class="example">ladspa=file=tap_reverb:tap_reverb
+</pre></td></tr></table>
+
+</li><li>
+Generate white noise, with 0.2 amplitude:
+<table><tr><td>&nbsp;</td><td><pre class="example">ladspa=file=cmt:noise_source_white:c=c0=.2
+</pre></td></tr></table>
+
+</li><li>
+Generate 20 bpm clicks using plugin <code>C* Click - Metronome</code> from the
+<code>C* Audio Plugin Suite</code> (CAPS) library:
+<table><tr><td>&nbsp;</td><td><pre class="example">ladspa=file=caps:Click:c=c1=20'
+</pre></td></tr></table>
+
+</li><li>
+Apply <code>C* Eq10X2 - Stereo 10-band equaliser</code> effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
+</pre></td></tr></table>
+</li></ul>
+
+<a name="Commands-1"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Commands-1">34.33.2 Commands</a></h3>
+
+<p>This filter supports the following commands:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>cN</samp>&rsquo;</dt>
+<dd><p>Modify the <var>N</var>-th control value.
+</p>
+<p>If the specified value is not valid, it is ignored and prior one is kept.
+</p></dd>
+</dl>
+
+<a name="lowpass"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-lowpass">34.34 lowpass</a></h2>
+
+<p>Apply a low-pass filter with 3dB point frequency.
+The filter can be either single-pole or double-pole (the default).
+The filter roll off at 6dB per pole per octave (20dB per pole per decade).
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set frequency in Hz. Default is 500.
+</p>
+</dd>
+<dt> &lsquo;<samp>poles, p</samp>&rsquo;</dt>
+<dd><p>Set number of poles. Default is 2.
+</p>
+</dd>
+<dt> &lsquo;<samp>width_type</samp>&rsquo;</dt>
+<dd><p>Set method to specify band-width of filter.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Hz
+</p></dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Q-Factor
+</p></dd>
+<dt> &lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>octave
+</p></dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>slope
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dd><p>Specify the band-width of a filter in width_type units.
+Applies only to double-pole filter.
+The default is 0.707q and gives a Butterworth response.
+</p></dd>
+</dl>
+
+<a name="pan"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-pan">34.35 pan</a></h2>
+
+<p>Mix channels with specific gain levels. The filter accepts the output
+channel layout followed by a set of channels definitions.
+</p>
+<p>This filter is also designed to remap efficiently the channels of an audio
+stream.
+</p>
+<p>The filter accepts parameters of the form:
+&quot;<var>l</var>:<var>outdef</var>:<var>outdef</var>:...&quot;
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>l</samp>&rsquo;</dt>
+<dd><p>output channel layout or number of channels
+</p>
+</dd>
+<dt> &lsquo;<samp>outdef</samp>&rsquo;</dt>
+<dd><p>output channel specification, of the form:
+&quot;<var>out_name</var>=[<var>gain</var>*]<var>in_name</var>[+[<var>gain</var>*]<var>in_name</var>...]&quot;
+</p>
+</dd>
+<dt> &lsquo;<samp>out_name</samp>&rsquo;</dt>
+<dd><p>output channel to define, either a channel name (FL, FR, etc.) or a channel
+number (c0, c1, etc.)
+</p>
+</dd>
+<dt> &lsquo;<samp>gain</samp>&rsquo;</dt>
+<dd><p>multiplicative coefficient for the channel, 1 leaving the volume unchanged
+</p>
+</dd>
+<dt> &lsquo;<samp>in_name</samp>&rsquo;</dt>
+<dd><p>input channel to use, see out_name for details; it is not possible to mix
+named and numbered input channels
+</p></dd>
+</dl>
+
+<p>If the &lsquo;=&rsquo; in a channel specification is replaced by &lsquo;&lt;&rsquo;, then the gains for
+that specification will be renormalized so that the total is 1, thus
+avoiding clipping noise.
+</p>
+<a name="Mixing-examples"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Mixing-examples">34.35.1 Mixing examples</a></h3>
+
+<p>For example, if you want to down-mix from stereo to mono, but with a bigger
+factor for the left channel:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pan=1:c0=0.9*c0+0.1*c1
+</pre></td></tr></table>
+
+<p>A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
+7-channels surround:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pan=stereo: FL &lt; FL + 0.5*FC + 0.6*BL + 0.6*SL : FR &lt; FR + 0.5*FC + 0.6*BR + 0.6*SR
+</pre></td></tr></table>
+
+<p>Note that <code>ffmpeg</code> integrates a default down-mix (and up-mix) system
+that should be preferred (see &quot;-ac&quot; option) unless you have very specific
+needs.
+</p>
+<a name="Remapping-examples"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Remapping-examples">34.35.2 Remapping examples</a></h3>
+
+<p>The channel remapping will be effective if, and only if:
+</p>
+<ul>
+<li> gain coefficients are zeroes or ones,
+</li><li> only one input per channel output,
+</li></ul>
+
+<p>If all these conditions are satisfied, the filter will notify the user (&quot;Pure
+channel mapping detected&quot;), and use an optimized and lossless method to do the
+remapping.
+</p>
+<p>For example, if you have a 5.1 source and want a stereo audio stream by
+dropping the extra channels:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pan=&quot;stereo: c0=FL : c1=FR&quot;
+</pre></td></tr></table>
+
+<p>Given the same source, you can also switch front left and front right channels
+and keep the input channel layout:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pan=&quot;5.1: c0=c1 : c1=c0 : c2=c2 : c3=c3 : c4=c4 : c5=c5&quot;
+</pre></td></tr></table>
+
+<p>If the input is a stereo audio stream, you can mute the front left channel (and
+still keep the stereo channel layout) with:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pan=&quot;stereo:c1=c1&quot;
+</pre></td></tr></table>
+
+<p>Still with a stereo audio stream input, you can copy the right channel in both
+front left and right:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pan=&quot;stereo: c0=FR : c1=FR&quot;
+</pre></td></tr></table>
+
+<a name="replaygain"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-replaygain">34.36 replaygain</a></h2>
+
+<p>ReplayGain scanner filter. This filter takes an audio stream as an input and
+outputs it unchanged.
+At end of filtering it displays <code>track_gain</code> and <code>track_peak</code>.
+</p>
+<a name="resample"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-resample">34.37 resample</a></h2>
+
+<p>Convert the audio sample format, sample rate and channel layout. This filter is
+not meant to be used directly.
+</p>
+<a name="silencedetect"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-silencedetect">34.38 silencedetect</a></h2>
+
+<p>Detect silence in an audio stream.
+</p>
+<p>This filter logs a message when it detects that the input audio volume is less
+or equal to a noise tolerance value for a duration greater or equal to the
+minimum detected noise duration.
+</p>
+<p>The printed times and duration are expressed in seconds.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
+<dd><p>Set silence duration until notification (default is 2 seconds).
+</p>
+</dd>
+<dt> &lsquo;<samp>noise, n</samp>&rsquo;</dt>
+<dd><p>Set noise tolerance. Can be specified in dB (in case &quot;dB&quot; is appended to the
+specified value) or amplitude ratio. Default is -60dB, or 0.001.
+</p></dd>
+</dl>
+
+<a name="Examples-24"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-24">34.38.1 Examples</a></h3>
+
+<ul>
+<li>
+Detect 5 seconds of silence with -50dB noise tolerance:
+<table><tr><td>&nbsp;</td><td><pre class="example">silencedetect=n=-50dB:d=5
+</pre></td></tr></table>
+
+</li><li>
+Complete example with <code>ffmpeg</code> to detect silence with 0.0001 noise
+tolerance in &lsquo;<tt>silence.mp3</tt>&rsquo;:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
+</pre></td></tr></table>
+</li></ul>
+
+<a name="treble"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-treble">34.39 treble</a></h2>
+
+<p>Boost or cut treble (upper) frequencies of the audio using a two-pole
+shelving filter with a response similar to that of a standard
+hi-fi&rsquo;s tone-controls. This is also known as shelving equalisation (EQ).
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>gain, g</samp>&rsquo;</dt>
+<dd><p>Give the gain at whichever is the lower of ~22 kHz and the
+Nyquist frequency. Its useful range is about -20 (for a large cut)
+to +20 (for a large boost). Beware of clipping when using a positive gain.
+</p>
+</dd>
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set the filter&rsquo;s central frequency and so can be used
+to extend or reduce the frequency range to be boosted or cut.
+The default value is <code>3000</code> Hz.
+</p>
+</dd>
+<dt> &lsquo;<samp>width_type</samp>&rsquo;</dt>
+<dd><p>Set method to specify band-width of filter.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Hz
+</p></dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Q-Factor
+</p></dd>
+<dt> &lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>octave
+</p></dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>slope
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dd><p>Determine how steep is the filter&rsquo;s shelf transition.
+</p></dd>
+</dl>
+
+<a name="volume"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-volume">34.40 volume</a></h2>
+
+<p>Adjust the input audio volume.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>volume</samp>&rsquo;</dt>
+<dd><p>Expresses how the audio volume will be increased or decreased.
+</p>
+<p>Output values are clipped to the maximum value.
+</p>
+<p>The output audio volume is given by the relation:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>output_volume</var> = <var>volume</var> * <var>input_volume</var>
+</pre></td></tr></table>
+
+<p>Default value for <var>volume</var> is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>precision</samp>&rsquo;</dt>
+<dd><p>Set the mathematical precision.
+</p>
+<p>This determines which input sample formats will be allowed, which affects the
+precision of the volume scaling.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>fixed</samp>&rsquo;</dt>
+<dd><p>8-bit fixed-point; limits input sample format to U8, S16, and S32.
+</p></dd>
+<dt> &lsquo;<samp>float</samp>&rsquo;</dt>
+<dd><p>32-bit floating-point; limits input sample format to FLT. (default)
+</p></dd>
+<dt> &lsquo;<samp>double</samp>&rsquo;</dt>
+<dd><p>64-bit floating-point; limits input sample format to DBL.
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<a name="Examples-70"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-70">34.40.1 Examples</a></h3>
+
+<ul>
+<li>
+Halve the input audio volume:
+<table><tr><td>&nbsp;</td><td><pre class="example">volume=volume=0.5
+volume=volume=1/2
+volume=volume=-6.0206dB
+</pre></td></tr></table>
+
+<p>In all the above example the named key for &lsquo;<samp>volume</samp>&rsquo; can be
+omitted, for example like in:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">volume=0.5
+</pre></td></tr></table>
+
+</li><li>
+Increase input audio power by 6 decibels using fixed-point precision:
+<table><tr><td>&nbsp;</td><td><pre class="example">volume=volume=6dB:precision=fixed
+</pre></td></tr></table>
+</li></ul>
+
+<a name="volumedetect"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-volumedetect">34.41 volumedetect</a></h2>
+
+<p>Detect the volume of the input video.
+</p>
+<p>The filter has no parameters. The input is not modified. Statistics about
+the volume will be printed in the log when the input stream end is reached.
+</p>
+<p>In particular it will show the mean volume (root mean square), maximum
+volume (on a per-sample basis), and the beginning of a histogram of the
+registered volume values (from the maximum value to a cumulated 1/1000 of
+the samples).
+</p>
+<p>All volumes are in decibels relative to the maximum PCM value.
+</p>
+<a name="Examples-51"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-51">34.41.1 Examples</a></h3>
+
+<p>Here is an excerpt of the output:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[Parsed_volumedetect_0 &nbsp;0xa23120] mean_volume: -27 dB
+[Parsed_volumedetect_0 &nbsp;0xa23120] max_volume: -4 dB
+[Parsed_volumedetect_0 &nbsp;0xa23120] histogram_4db: 6
+[Parsed_volumedetect_0 &nbsp;0xa23120] histogram_5db: 62
+[Parsed_volumedetect_0 &nbsp;0xa23120] histogram_6db: 286
+[Parsed_volumedetect_0 &nbsp;0xa23120] histogram_7db: 1042
+[Parsed_volumedetect_0 &nbsp;0xa23120] histogram_8db: 2551
+[Parsed_volumedetect_0 &nbsp;0xa23120] histogram_9db: 4609
+[Parsed_volumedetect_0 &nbsp;0xa23120] histogram_10db: 8409
+</pre></td></tr></table>
+
+<p>It means that:
+</p><ul>
+<li>
+The mean square energy is approximately -27 dB, or 10^-2.7.
+</li><li>
+The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
+</li><li>
+There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
+</li></ul>
+
+<p>In other words, raising the volume by +4 dB does not cause any clipping,
+raising it by +5 dB causes clipping for 6 samples, etc.
+</p>
+
+<a name="Audio-Sources"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Audio-Sources">35. Audio Sources</a></h1>
+
+<p>Below is a description of the currently available audio sources.
+</p>
+<a name="abuffer"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-abuffer">35.1 abuffer</a></h2>
+
+<p>Buffer audio frames, and make them available to the filter chain.
+</p>
+<p>This source is mainly intended for a programmatic use, in particular
+through the interface defined in &lsquo;<tt>libavfilter/asrc_abuffer.h</tt>&rsquo;.
+</p>
+<p>It accepts the following named parameters:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>time_base</samp>&rsquo;</dt>
+<dd><p>Timebase which will be used for timestamps of submitted frames. It must be
+either a floating-point number or in <var>numerator</var>/<var>denominator</var> form.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate</samp>&rsquo;</dt>
+<dd><p>The sample rate of the incoming audio buffers.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_fmt</samp>&rsquo;</dt>
+<dd><p>The sample format of the incoming audio buffers.
+Either a sample format name or its corresponging integer representation from
+the enum AVSampleFormat in &lsquo;<tt>libavutil/samplefmt.h</tt>&rsquo;
+</p>
+</dd>
+<dt> &lsquo;<samp>channel_layout</samp>&rsquo;</dt>
+<dd><p>The channel layout of the incoming audio buffers.
+Either a channel layout name from channel_layout_map in
+&lsquo;<tt>libavutil/channel_layout.c</tt>&rsquo; or its corresponding integer representation
+from the AV_CH_LAYOUT_* macros in &lsquo;<tt>libavutil/channel_layout.h</tt>&rsquo;
+</p>
+</dd>
+<dt> &lsquo;<samp>channels</samp>&rsquo;</dt>
+<dd><p>The number of channels of the incoming audio buffers.
+If both <var>channels</var> and <var>channel_layout</var> are specified, then they
+must be consistent.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-46"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-46">35.1.1 Examples</a></h3>
+
+<table><tr><td>&nbsp;</td><td><pre class="example">abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
+</pre></td></tr></table>
+
+<p>will instruct the source to accept planar 16bit signed stereo at 44100Hz.
+Since the sample format with name &quot;s16p&quot; corresponds to the number
+6 and the &quot;stereo&quot; channel layout corresponds to the value 0x3, this is
+equivalent to:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
+</pre></td></tr></table>
+
+<a name="aevalsrc"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-aevalsrc">35.2 aevalsrc</a></h2>
+
+<p>Generate an audio signal specified by an expression.
+</p>
+<p>This source accepts in input one or more expressions (one for each
+channel), which are evaluated and used to generate a corresponding
+audio signal.
+</p>
+<p>This source accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>exprs</samp>&rsquo;</dt>
+<dd><p>Set the &rsquo;|&rsquo;-separated expressions list for each separate channel. In case the
+&lsquo;<samp>channel_layout</samp>&rsquo; option is not specified, the selected channel layout
+depends on the number of provided expressions. Otherwise the last
+specified expression is applied to the remaining output channels.
+</p>
+</dd>
+<dt> &lsquo;<samp>channel_layout, c</samp>&rsquo;</dt>
+<dd><p>Set the channel layout. The number of channels in the specified layout
+must be equal to the number of specified expressions.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
+<dd><p>Set the minimum duration of the sourced audio. See the function
+<code>av_parse_time()</code> for the accepted format.
+Note that the resulting duration may be greater than the specified
+duration, as the generated audio is always cut at the end of a
+complete frame.
+</p>
+<p>If not specified, or the expressed duration is negative, the audio is
+supposed to be generated forever.
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_samples, n</samp>&rsquo;</dt>
+<dd><p>Set the number of samples per channel per each output frame,
+default to 1024.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate, s</samp>&rsquo;</dt>
+<dd><p>Specify the sample rate, default to 44100.
+</p></dd>
+</dl>
+
+<p>Each expression in <var>exprs</var> can contain the following constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>number of the evaluated sample, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>time of the evaluated sample expressed in seconds, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>sample rate
+</p>
+</dd>
+</dl>
+
+<a name="Examples-32"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-32">35.2.1 Examples</a></h3>
+
+<ul>
+<li>
+Generate silence:
+<table><tr><td>&nbsp;</td><td><pre class="example">aevalsrc=0
+</pre></td></tr></table>
+
+</li><li>
+Generate a sin signal with frequency of 440 Hz, set sample rate to
+8000 Hz:
+<table><tr><td>&nbsp;</td><td><pre class="example">aevalsrc=&quot;sin(440*2*PI*t):s=8000&quot;
+</pre></td></tr></table>
+
+</li><li>
+Generate a two channels signal, specify the channel layout (Front
+Center + Back Center) explicitly:
+<table><tr><td>&nbsp;</td><td><pre class="example">aevalsrc=&quot;sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC&quot;
+</pre></td></tr></table>
+
+</li><li>
+Generate white noise:
+<table><tr><td>&nbsp;</td><td><pre class="example">aevalsrc=&quot;-2+random(0)&quot;
+</pre></td></tr></table>
+
+</li><li>
+Generate an amplitude modulated signal:
+<table><tr><td>&nbsp;</td><td><pre class="example">aevalsrc=&quot;sin(10*2*PI*t)*sin(880*2*PI*t)&quot;
+</pre></td></tr></table>
+
+</li><li>
+Generate 2.5 Hz binaural beats on a 360 Hz carrier:
+<table><tr><td>&nbsp;</td><td><pre class="example">aevalsrc=&quot;0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)&quot;
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="anullsrc"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-anullsrc">35.3 anullsrc</a></h2>
+
+<p>Null audio source, return unprocessed audio frames. It is mainly useful
+as a template and to be employed in analysis / debugging tools, or as
+the source for filters which ignore the input data (for example the sox
+synth filter).
+</p>
+<p>This source accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>channel_layout, cl</samp>&rsquo;</dt>
+<dd>
+<p>Specify the channel layout, and can be either an integer or a string
+representing a channel layout. The default value of <var>channel_layout</var>
+is &quot;stereo&quot;.
+</p>
+<p>Check the channel_layout_map definition in
+&lsquo;<tt>libavutil/channel_layout.c</tt>&rsquo; for the mapping between strings and
+channel layout values.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate, r</samp>&rsquo;</dt>
+<dd><p>Specify the sample rate, and defaults to 44100.
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_samples, n</samp>&rsquo;</dt>
+<dd><p>Set the number of samples per requested frames.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-91"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-91">35.3.1 Examples</a></h3>
+
+<ul>
+<li>
+Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
+<table><tr><td>&nbsp;</td><td><pre class="example">anullsrc=r=48000:cl=4
+</pre></td></tr></table>
+
+</li><li>
+Do the same operation with a more obvious syntax:
+<table><tr><td>&nbsp;</td><td><pre class="example">anullsrc=r=48000:cl=mono
+</pre></td></tr></table>
+</li></ul>
+
+<p>All the parameters need to be explicitly defined.
+</p>
+<a name="flite"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-flite">35.4 flite</a></h2>
+
+<p>Synthesize a voice utterance using the libflite library.
+</p>
+<p>To enable compilation of this filter you need to configure FFmpeg with
+<code>--enable-libflite</code>.
+</p>
+<p>Note that the flite library is not thread-safe.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>list_voices</samp>&rsquo;</dt>
+<dd><p>If set to 1, list the names of the available voices and exit
+immediately. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_samples, n</samp>&rsquo;</dt>
+<dd><p>Set the maximum number of samples per frame. Default value is 512.
+</p>
+</dd>
+<dt> &lsquo;<samp>textfile</samp>&rsquo;</dt>
+<dd><p>Set the filename containing the text to speak.
+</p>
+</dd>
+<dt> &lsquo;<samp>text</samp>&rsquo;</dt>
+<dd><p>Set the text to speak.
+</p>
+</dd>
+<dt> &lsquo;<samp>voice, v</samp>&rsquo;</dt>
+<dd><p>Set the voice to use for the speech synthesis. Default value is
+<code>kal</code>. See also the <var>list_voices</var> option.
+</p></dd>
+</dl>
+
+<a name="Examples-13"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-13">35.4.1 Examples</a></h3>
+
+<ul>
+<li>
+Read from file &lsquo;<tt>speech.txt</tt>&rsquo;, and synthetize the text using the
+standard flite voice:
+<table><tr><td>&nbsp;</td><td><pre class="example">flite=textfile=speech.txt
+</pre></td></tr></table>
+
+</li><li>
+Read the specified text selecting the <code>slt</code> voice:
+<table><tr><td>&nbsp;</td><td><pre class="example">flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
+</pre></td></tr></table>
+
+</li><li>
+Input text to ffmpeg:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
+</pre></td></tr></table>
+
+</li><li>
+Make &lsquo;<tt>ffplay</tt>&rsquo; speak the specified text, using <code>flite</code> and
+the <code>lavfi</code> device:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
+</pre></td></tr></table>
+</li></ul>
+
+<p>For more information about libflite, check:
+<a href="http://www.speech.cs.cmu.edu/flite/">http://www.speech.cs.cmu.edu/flite/</a>
+</p>
+<a name="sine"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-sine">35.5 sine</a></h2>
+
+<p>Generate an audio signal made of a sine wave with amplitude 1/8.
+</p>
+<p>The audio signal is bit-exact.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set the carrier frequency. Default is 440 Hz.
+</p>
+</dd>
+<dt> &lsquo;<samp>beep_factor, b</samp>&rsquo;</dt>
+<dd><p>Enable a periodic beep every second with frequency <var>beep_factor</var> times
+the carrier frequency. Default is 0, meaning the beep is disabled.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate, r</samp>&rsquo;</dt>
+<dd><p>Specify the sample rate, default is 44100.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
+<dd><p>Specify the duration of the generated audio stream.
+</p>
+</dd>
+<dt> &lsquo;<samp>samples_per_frame</samp>&rsquo;</dt>
+<dd><p>Set the number of samples per output frame, default is 1024.
+</p></dd>
+</dl>
+
+<a name="Examples-50"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-50">35.5.1 Examples</a></h3>
+
+<ul>
+<li>
+Generate a simple 440 Hz sine wave:
+<table><tr><td>&nbsp;</td><td><pre class="example">sine
+</pre></td></tr></table>
+
+</li><li>
+Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
+<table><tr><td>&nbsp;</td><td><pre class="example">sine=220:4:d=5
+sine=f=220:b=4:d=5
+sine=frequency=220:beep_factor=4:duration=5
+</pre></td></tr></table>
+
+</li></ul>
+
+
+<a name="Audio-Sinks"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Audio-Sinks">36. Audio Sinks</a></h1>
+
+<p>Below is a description of the currently available audio sinks.
+</p>
+<a name="abuffersink"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-abuffersink">36.1 abuffersink</a></h2>
+
+<p>Buffer audio frames, and make them available to the end of filter chain.
+</p>
+<p>This sink is mainly intended for programmatic use, in particular
+through the interface defined in &lsquo;<tt>libavfilter/buffersink.h</tt>&rsquo;
+or the options system.
+</p>
+<p>It accepts a pointer to an AVABufferSinkContext structure, which
+defines the incoming buffers&rsquo; formats, to be passed as the opaque
+parameter to <code>avfilter_init_filter</code> for initialization.
+</p>
+<a name="anullsink"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-anullsink">36.2 anullsink</a></h2>
+
+<p>Null audio sink, do absolutely nothing with the input audio. It is
+mainly useful as a template and to be employed in analysis / debugging
+tools.
+</p>
+
+<a name="Video-Filters"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Video-Filters">37. Video Filters</a></h1>
+
+<p>When you configure your FFmpeg build, you can disable any of the
+existing filters using <code>--disable-filters</code>.
+The configure output will show the video filters included in your
+build.
+</p>
+<p>Below is a description of the currently available video filters.
+</p>
+<a name="alphaextract"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-alphaextract">37.1 alphaextract</a></h2>
+
+<p>Extract the alpha component from the input as a grayscale video. This
+is especially useful with the <var>alphamerge</var> filter.
+</p>
+<a name="alphamerge"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-alphamerge">37.2 alphamerge</a></h2>
+
+<p>Add or replace the alpha component of the primary input with the
+grayscale value of a second input. This is intended for use with
+<var>alphaextract</var> to allow the transmission or storage of frame
+sequences that have alpha in a format that doesn&rsquo;t support an alpha
+channel.
+</p>
+<p>For example, to reconstruct full frames from a normal YUV-encoded video
+and a separate video created with <var>alphaextract</var>, you might use:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
+</pre></td></tr></table>
+
+<p>Since this filter is designed for reconstruction, it operates on frame
+sequences without considering timestamps, and terminates when either
+input reaches end of stream. This will cause problems if your encoding
+pipeline drops frames. If you&rsquo;re trying to apply an image as an
+overlay to a video stream, consider the <var>overlay</var> filter instead.
+</p>
+<a name="ass"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-ass">37.3 ass</a></h2>
+
+<p>Same as the <a href="#subtitles">subtitles</a> filter, except that it doesn&rsquo;t require libavcodec
+and libavformat to work. On the other hand, it is limited to ASS (Advanced
+Substation Alpha) subtitles files.
+</p>
+<a name="bbox"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-bbox">37.4 bbox</a></h2>
+
+<p>Compute the bounding box for the non-black pixels in the input frame
+luminance plane.
+</p>
+<p>This filter computes the bounding box containing all the pixels with a
+luminance value greater than the minimum allowed value.
+The parameters describing the bounding box are printed on the filter
+log.
+</p>
+<p>The filter accepts the following option:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>min_val</samp>&rsquo;</dt>
+<dd><p>Set the minimal luminance value. Default is <code>16</code>.
+</p></dd>
+</dl>
+
+<a name="blackdetect"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-blackdetect">37.5 blackdetect</a></h2>
+
+<p>Detect video intervals that are (almost) completely black. Can be
+useful to detect chapter transitions, commercials, or invalid
+recordings. Output lines contains the time for the start, end and
+duration of the detected black interval expressed in seconds.
+</p>
+<p>In order to display the output lines, you need to set the loglevel at
+least to the AV_LOG_INFO value.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>black_min_duration, d</samp>&rsquo;</dt>
+<dd><p>Set the minimum detected black duration expressed in seconds. It must
+be a non-negative floating point number.
+</p>
+<p>Default value is 2.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>picture_black_ratio_th, pic_th</samp>&rsquo;</dt>
+<dd><p>Set the threshold for considering a picture &quot;black&quot;.
+Express the minimum value for the ratio:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>nb_black_pixels</var> / <var>nb_pixels</var>
+</pre></td></tr></table>
+
+<p>for which a picture is considered black.
+Default value is 0.98.
+</p>
+</dd>
+<dt> &lsquo;<samp>pixel_black_th, pix_th</samp>&rsquo;</dt>
+<dd><p>Set the threshold for considering a pixel &quot;black&quot;.
+</p>
+<p>The threshold expresses the maximum pixel luminance value for which a
+pixel is considered &quot;black&quot;. The provided value is scaled according to
+the following equation:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>absolute_threshold</var> = <var>luminance_minimum_value</var> + <var>pixel_black_th</var> * <var>luminance_range_size</var>
+</pre></td></tr></table>
+
+<p><var>luminance_range_size</var> and <var>luminance_minimum_value</var> depend on
+the input video format, the range is [0-255] for YUV full-range
+formats and [16-235] for YUV non full-range formats.
+</p>
+<p>Default value is 0.10.
+</p></dd>
+</dl>
+
+<p>The following example sets the maximum pixel threshold to the minimum
+value, and detects only black intervals of 2 or more seconds:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">blackdetect=d=2:pix_th=0.00
+</pre></td></tr></table>
+
+<a name="blackframe"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-blackframe">37.6 blackframe</a></h2>
+
+<p>Detect frames that are (almost) completely black. Can be useful to
+detect chapter transitions or commercials. Output lines consist of
+the frame number of the detected frame, the percentage of blackness,
+the position in the file if known or -1 and the timestamp in seconds.
+</p>
+<p>In order to display the output lines, you need to set the loglevel at
+least to the AV_LOG_INFO value.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>amount</samp>&rsquo;</dt>
+<dd><p>Set the percentage of the pixels that have to be below the threshold, defaults
+to <code>98</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>threshold, thresh</samp>&rsquo;</dt>
+<dd><p>Set the threshold below which a pixel value is considered black, defaults to
+<code>32</code>.
+</p>
+</dd>
+</dl>
+
+<a name="blend"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-blend">37.7 blend</a></h2>
+
+<p>Blend two video frames into each other.
+</p>
+<p>It takes two input streams and outputs one stream, the first input is the
+&quot;top&quot; layer and second input is &quot;bottom&quot; layer.
+Output terminates when shortest input terminates.
+</p>
+<p>A description of the accepted options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>c0_mode</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c1_mode</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c2_mode</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c3_mode</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>all_mode</samp>&rsquo;</dt>
+<dd><p>Set blend mode for specific pixel component or all pixel components in case
+of <var>all_mode</var>. Default value is <code>normal</code>.
+</p>
+<p>Available values for component modes are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>addition</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>and</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>average</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>burn</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>darken</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>difference</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>divide</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dodge</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>exclusion</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>hardlight</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>lighten</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>multiply</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>negation</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>normal</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>or</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>overlay</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>phoenix</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>pinlight</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>reflect</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>screen</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>softlight</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>subtract</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vividlight</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>xor</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>c0_opacity</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c1_opacity</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c2_opacity</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c3_opacity</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>all_opacity</samp>&rsquo;</dt>
+<dd><p>Set blend opacity for specific pixel component or all pixel components in case
+of <var>all_opacity</var>. Only used in combination with pixel component blend modes.
+</p>
+</dd>
+<dt> &lsquo;<samp>c0_expr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c1_expr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c2_expr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c3_expr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>all_expr</samp>&rsquo;</dt>
+<dd><p>Set blend expression for specific pixel component or all pixel components in case
+of <var>all_expr</var>. Note that related mode options will be ignored if those are set.
+</p>
+<p>The expressions can use the following variables:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>N</samp>&rsquo;</dt>
+<dd><p>The sequential number of the filtered frame, starting from <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>X</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>Y</samp>&rsquo;</dt>
+<dd><p>the coordinates of the current sample
+</p>
+</dd>
+<dt> &lsquo;<samp>W</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>H</samp>&rsquo;</dt>
+<dd><p>the width and height of currently filtered plane
+</p>
+</dd>
+<dt> &lsquo;<samp>SW</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>SH</samp>&rsquo;</dt>
+<dd><p>Width and height scale depending on the currently filtered plane. It is the
+ratio between the corresponding luma plane number of pixels and the current
+plane ones. E.g. for YUV4:2:0 the values are <code>1,1</code> for the luma plane, and
+<code>0.5,0.5</code> for chroma planes.
+</p>
+</dd>
+<dt> &lsquo;<samp>T</samp>&rsquo;</dt>
+<dd><p>Time of the current frame, expressed in seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>TOP, A</samp>&rsquo;</dt>
+<dd><p>Value of pixel component at current location for first video frame (top layer).
+</p>
+</dd>
+<dt> &lsquo;<samp>BOTTOM, B</samp>&rsquo;</dt>
+<dd><p>Value of pixel component at current location for second video frame (bottom layer).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>shortest</samp>&rsquo;</dt>
+<dd><p>Force termination when the shortest input terminates. Default is <code>0</code>.
+</p></dd>
+<dt> &lsquo;<samp>repeatlast</samp>&rsquo;</dt>
+<dd><p>Continue applying the last bottom frame after the end of the stream. A value of
+<code>0</code> disable the filter after the last frame of the bottom layer is reached.
+Default is <code>1</code>.
+</p></dd>
+</dl>
+
+<a name="Examples-25"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-25">37.7.1 Examples</a></h3>
+
+<ul>
+<li>
+Apply transition from bottom layer to top layer in first 10 seconds:
+<table><tr><td>&nbsp;</td><td><pre class="example">blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
+</pre></td></tr></table>
+
+</li><li>
+Apply 1x1 checkerboard effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
+</pre></td></tr></table>
+
+</li><li>
+Apply uncover left effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">blend=all_expr='if(gte(N*SW+X,W),A,B)'
+</pre></td></tr></table>
+
+</li><li>
+Apply uncover down effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">blend=all_expr='if(gte(Y-N*SH,0),A,B)'
+</pre></td></tr></table>
+
+</li><li>
+Apply uncover up-left effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
+</pre></td></tr></table>
+</li></ul>
+
+<a name="boxblur"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-boxblur">37.8 boxblur</a></h2>
+
+<p>Apply boxblur algorithm to the input video.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>luma_radius, lr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>luma_power, lp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma_radius, cr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma_power, cp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>alpha_radius, ar</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>alpha_power, ap</samp>&rsquo;</dt>
+</dl>
+
+<p>A description of the accepted options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>luma_radius, lr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma_radius, cr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>alpha_radius, ar</samp>&rsquo;</dt>
+<dd><p>Set an expression for the box radius in pixels used for blurring the
+corresponding input plane.
+</p>
+<p>The radius value must be a non-negative number, and must not be
+greater than the value of the expression <code>min(w,h)/2</code> for the
+luma and alpha planes, and of <code>min(cw,ch)/2</code> for the chroma
+planes.
+</p>
+<p>Default value for &lsquo;<samp>luma_radius</samp>&rsquo; is &quot;2&quot;. If not specified,
+&lsquo;<samp>chroma_radius</samp>&rsquo; and &lsquo;<samp>alpha_radius</samp>&rsquo; default to the
+corresponding value set for &lsquo;<samp>luma_radius</samp>&rsquo;.
+</p>
+<p>The expressions can contain the following constants:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>the input width and height in pixels
+</p>
+</dd>
+<dt> &lsquo;<samp>cw</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ch</samp>&rsquo;</dt>
+<dd><p>the input chroma image width and height in pixels
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>luma_power, lp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma_power, cp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>alpha_power, ap</samp>&rsquo;</dt>
+<dd><p>Specify how many times the boxblur filter is applied to the
+corresponding plane.
+</p>
+<p>Default value for &lsquo;<samp>luma_power</samp>&rsquo; is 2. If not specified,
+&lsquo;<samp>chroma_power</samp>&rsquo; and &lsquo;<samp>alpha_power</samp>&rsquo; default to the
+corresponding value set for &lsquo;<samp>luma_power</samp>&rsquo;.
+</p>
+<p>A value of 0 will disable the effect.
+</p></dd>
+</dl>
+
+<a name="Examples-83"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-83">37.8.1 Examples</a></h3>
+
+<ul>
+<li>
+Apply a boxblur filter with luma, chroma, and alpha radius
+set to 2:
+<table><tr><td>&nbsp;</td><td><pre class="example">boxblur=luma_radius=2:luma_power=1
+boxblur=2:1
+</pre></td></tr></table>
+
+</li><li>
+Set luma radius to 2, alpha and chroma radius to 0:
+<table><tr><td>&nbsp;</td><td><pre class="example">boxblur=2:1:cr=0:ar=0
+</pre></td></tr></table>
+
+</li><li>
+Set luma and chroma radius to a fraction of the video dimension:
+<table><tr><td>&nbsp;</td><td><pre class="example">boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
+</pre></td></tr></table>
+</li></ul>
+
+<a name="colorbalance"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-colorbalance">37.9 colorbalance</a></h2>
+<p>Modify intensity of primary colors (red, green and blue) of input frames.
+</p>
+<p>The filter allows an input frame to be adjusted in the shadows, midtones or highlights
+regions for the red-cyan, green-magenta or blue-yellow balance.
+</p>
+<p>A positive adjustment value shifts the balance towards the primary color, a negative
+value towards the complementary color.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>rs</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>gs</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bs</samp>&rsquo;</dt>
+<dd><p>Adjust red, green and blue shadows (darkest pixels).
+</p>
+</dd>
+<dt> &lsquo;<samp>rm</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>gm</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bm</samp>&rsquo;</dt>
+<dd><p>Adjust red, green and blue midtones (medium pixels).
+</p>
+</dd>
+<dt> &lsquo;<samp>rh</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>gh</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bh</samp>&rsquo;</dt>
+<dd><p>Adjust red, green and blue highlights (brightest pixels).
+</p>
+<p>Allowed ranges for options are <code>[-1.0, 1.0]</code>. Defaults are <code>0</code>.
+</p></dd>
+</dl>
+
+<a name="Examples-57"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-57">37.9.1 Examples</a></h3>
+
+<ul>
+<li>
+Add red color cast to shadows:
+<table><tr><td>&nbsp;</td><td><pre class="example">colorbalance=rs=.3
+</pre></td></tr></table>
+</li></ul>
+
+<a name="colorchannelmixer"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-colorchannelmixer">37.10 colorchannelmixer</a></h2>
+
+<p>Adjust video input frames by re-mixing color channels.
+</p>
+<p>This filter modifies a color channel by adding the values associated to
+the other channels of the same pixels. For example if the value to
+modify is red, the output value will be:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>red</var>=<var>red</var>*<var>rr</var> + <var>blue</var>*<var>rb</var> + <var>green</var>*<var>rg</var> + <var>alpha</var>*<var>ra</var>
+</pre></td></tr></table>
+
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>rr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>rg</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>rb</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ra</samp>&rsquo;</dt>
+<dd><p>Adjust contribution of input red, green, blue and alpha channels for output red channel.
+Default is <code>1</code> for <var>rr</var>, and <code>0</code> for <var>rg</var>, <var>rb</var> and <var>ra</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>gr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>gg</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>gb</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ga</samp>&rsquo;</dt>
+<dd><p>Adjust contribution of input red, green, blue and alpha channels for output green channel.
+Default is <code>1</code> for <var>gg</var>, and <code>0</code> for <var>gr</var>, <var>gb</var> and <var>ga</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>br</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bg</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bb</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ba</samp>&rsquo;</dt>
+<dd><p>Adjust contribution of input red, green, blue and alpha channels for output blue channel.
+Default is <code>1</code> for <var>bb</var>, and <code>0</code> for <var>br</var>, <var>bg</var> and <var>ba</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>ar</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ag</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ab</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aa</samp>&rsquo;</dt>
+<dd><p>Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
+Default is <code>1</code> for <var>aa</var>, and <code>0</code> for <var>ar</var>, <var>ag</var> and <var>ab</var>.
+</p>
+<p>Allowed ranges for options are <code>[-2.0, 2.0]</code>.
+</p></dd>
+</dl>
+
+<a name="Examples-34"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-34">37.10.1 Examples</a></h3>
+
+<ul>
+<li>
+Convert source to grayscale:
+<table><tr><td>&nbsp;</td><td><pre class="example">colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
+</pre></td></tr></table>
+</li><li>
+Simulate sepia tones:
+<table><tr><td>&nbsp;</td><td><pre class="example">colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
+</pre></td></tr></table>
+</li></ul>
+
+<a name="colormatrix"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-colormatrix">37.11 colormatrix</a></h2>
+
+<p>Convert color matrix.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>src</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dst</samp>&rsquo;</dt>
+<dd><p>Specify the source and destination color matrix. Both values must be
+specified.
+</p>
+<p>The accepted values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>bt709</samp>&rsquo;</dt>
+<dd><p>BT.709
+</p>
+</dd>
+<dt> &lsquo;<samp>bt601</samp>&rsquo;</dt>
+<dd><p>BT.601
+</p>
+</dd>
+<dt> &lsquo;<samp>smpte240m</samp>&rsquo;</dt>
+<dd><p>SMPTE-240M
+</p>
+</dd>
+<dt> &lsquo;<samp>fcc</samp>&rsquo;</dt>
+<dd><p>FCC
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<p>For example to convert from BT.601 to SMPTE-240M, use the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">colormatrix=bt601:smpte240m
+</pre></td></tr></table>
+
+<a name="copy"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-copy">37.12 copy</a></h2>
+
+<p>Copy the input source unchanged to the output. Mainly useful for
+testing purposes.
+</p>
+<a name="crop"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-crop">37.13 crop</a></h2>
+
+<p>Crop the input video to given dimensions.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>w, out_w</samp>&rsquo;</dt>
+<dd><p>Width of the output video. It defaults to <code>iw</code>.
+This expression is evaluated only once during the filter
+configuration.
+</p>
+</dd>
+<dt> &lsquo;<samp>h, out_h</samp>&rsquo;</dt>
+<dd><p>Height of the output video. It defaults to <code>ih</code>.
+This expression is evaluated only once during the filter
+configuration.
+</p>
+</dd>
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dd><p>Horizontal position, in the input video, of the left edge of the output video.
+It defaults to <code>(in_w-out_w)/2</code>.
+This expression is evaluated per-frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>Vertical position, in the input video, of the top edge of the output video.
+It defaults to <code>(in_h-out_h)/2</code>.
+This expression is evaluated per-frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>keep_aspect</samp>&rsquo;</dt>
+<dd><p>If set to 1 will force the output display aspect ratio
+to be the same of the input, by changing the output sample aspect
+ratio. It defaults to 0.
+</p></dd>
+</dl>
+
+<p>The <var>out_w</var>, <var>out_h</var>, <var>x</var>, <var>y</var> parameters are
+expressions containing the following constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>the computed values for <var>x</var> and <var>y</var>. They are evaluated for
+each new frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>in_w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>in_h</samp>&rsquo;</dt>
+<dd><p>the input width and height
+</p>
+</dd>
+<dt> &lsquo;<samp>iw</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ih</samp>&rsquo;</dt>
+<dd><p>same as <var>in_w</var> and <var>in_h</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>out_w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>out_h</samp>&rsquo;</dt>
+<dd><p>the output (cropped) width and height
+</p>
+</dd>
+<dt> &lsquo;<samp>ow</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>oh</samp>&rsquo;</dt>
+<dd><p>same as <var>out_w</var> and <var>out_h</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>same as <var>iw</var> / <var>ih</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
+<dd><p>input sample aspect ratio
+</p>
+</dd>
+<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
+<dd><p>input display aspect ratio, it is the same as (<var>iw</var> / <var>ih</var>) * <var>sar</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>the number of input frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
+<dd><p>the position in the file of the input frame, NAN if unknown
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>timestamp expressed in seconds, NAN if the input timestamp is unknown
+</p>
+</dd>
+</dl>
+
+<p>The expression for <var>out_w</var> may depend on the value of <var>out_h</var>,
+and the expression for <var>out_h</var> may depend on <var>out_w</var>, but they
+cannot depend on <var>x</var> and <var>y</var>, as <var>x</var> and <var>y</var> are
+evaluated after <var>out_w</var> and <var>out_h</var>.
+</p>
+<p>The <var>x</var> and <var>y</var> parameters specify the expressions for the
+position of the top-left corner of the output (non-cropped) area. They
+are evaluated for each frame. If the evaluated value is not valid, it
+is approximated to the nearest valid value.
+</p>
+<p>The expression for <var>x</var> may depend on <var>y</var>, and the expression
+for <var>y</var> may depend on <var>x</var>.
+</p>
+<a name="Examples-8"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-8">37.13.1 Examples</a></h3>
+
+<ul>
+<li>
+Crop area with size 100x100 at position (12,34).
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=100:100:12:34
+</pre></td></tr></table>
+
+<p>Using named options, the example above becomes:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">crop=w=100:h=100:x=12:y=34
+</pre></td></tr></table>
+
+</li><li>
+Crop the central input area with size 100x100:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=100:100
+</pre></td></tr></table>
+
+</li><li>
+Crop the central input area with size 2/3 of the input video:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=2/3*in_w:2/3*in_h
+</pre></td></tr></table>
+
+</li><li>
+Crop the input video central square:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=out_w=in_h
+crop=in_h
+</pre></td></tr></table>
+
+</li><li>
+Delimit the rectangle with the top-left corner placed at position
+100:100 and the right-bottom corner corresponding to the right-bottom
+corner of the input image:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=in_w-100:in_h-100:100:100
+</pre></td></tr></table>
+
+</li><li>
+Crop 10 pixels from the left and right borders, and 20 pixels from
+the top and bottom borders
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=in_w-2*10:in_h-2*20
+</pre></td></tr></table>
+
+</li><li>
+Keep only the bottom right quarter of the input image:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=in_w/2:in_h/2:in_w/2:in_h/2
+</pre></td></tr></table>
+
+</li><li>
+Crop height for getting Greek harmony:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=in_w:1/PHI*in_w
+</pre></td></tr></table>
+
+</li><li>
+Appply trembling effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(n/10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(n/7)
+</pre></td></tr></table>
+
+</li><li>
+Apply erratic camera effect depending on timestamp:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(t*10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(t*13)&quot;
+</pre></td></tr></table>
+
+</li><li>
+Set x depending on the value of y:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=in_w/2:in_h/2:y:10+10*sin(n/10)
+</pre></td></tr></table>
+</li></ul>
+
+<a name="cropdetect"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-cropdetect">37.14 cropdetect</a></h2>
+
+<p>Auto-detect crop size.
+</p>
+<p>Calculate necessary cropping parameters and prints the recommended
+parameters through the logging system. The detected dimensions
+correspond to the non-black area of the input video.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>limit</samp>&rsquo;</dt>
+<dd><p>Set higher black value threshold, which can be optionally specified
+from nothing (0) to everything (255). An intensity value greater
+to the set value is considered non-black. Default value is 24.
+</p>
+</dd>
+<dt> &lsquo;<samp>round</samp>&rsquo;</dt>
+<dd><p>Set the value for which the width/height should be divisible by. The
+offset is automatically adjusted to center the video. Use 2 to get
+only even dimensions (needed for 4:2:2 video). 16 is best when
+encoding to most video codecs. Default value is 16.
+</p>
+</dd>
+<dt> &lsquo;<samp>reset_count, reset</samp>&rsquo;</dt>
+<dd><p>Set the counter that determines after how many frames cropdetect will
+reset the previously detected largest video area and start over to
+detect the current optimal crop area. Default value is 0.
+</p>
+<p>This can be useful when channel logos distort the video area. 0
+indicates never reset and return the largest area encountered during
+playback.
+</p></dd>
+</dl>
+
+<p><a name="curves"></a>
+</p><a name="curves-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-curves-1">37.15 curves</a></h2>
+
+<p>Apply color adjustments using curves.
+</p>
+<p>This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
+component (red, green and blue) has its values defined by <var>N</var> key points
+tied from each other using a smooth curve. The x-axis represents the pixel
+values from the input frame, and the y-axis the new pixel values to be set for
+the output frame.
+</p>
+<p>By default, a component curve is defined by the two points <var>(0;0)</var> and
+<var>(1;1)</var>. This creates a straight line where each original pixel value is
+&quot;adjusted&quot; to its own value, which means no change to the image.
+</p>
+<p>The filter allows you to redefine these two points and add some more. A new
+curve (using a natural cubic spline interpolation) will be define to pass
+smoothly through all these new coordinates. The new defined points needs to be
+strictly increasing over the x-axis, and their <var>x</var> and <var>y</var> values must
+be in the <var>[0;1]</var> interval.  If the computed curves happened to go outside
+the vector spaces, the values will be clipped accordingly.
+</p>
+<p>If there is no key point defined in <code>x=0</code>, the filter will automatically
+insert a <var>(0;0)</var> point. In the same way, if there is no key point defined
+in <code>x=1</code>, the filter will automatically insert a <var>(1;1)</var> point.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>preset</samp>&rsquo;</dt>
+<dd><p>Select one of the available color presets. This option can be used in addition
+to the &lsquo;<samp>r</samp>&rsquo;, &lsquo;<samp>g</samp>&rsquo;, &lsquo;<samp>b</samp>&rsquo; parameters; in this case, the later
+options takes priority on the preset values.
+Available presets are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>color_negative</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>cross_process</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>darker</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>increase_contrast</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>lighter</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>linear_contrast</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>medium_contrast</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>negative</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>strong_contrast</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vintage</samp>&rsquo;</dt>
+</dl>
+<p>Default is <code>none</code>.
+</p></dd>
+<dt> &lsquo;<samp>master, m</samp>&rsquo;</dt>
+<dd><p>Set the master key points. These points will define a second pass mapping. It
+is sometimes called a &quot;luminance&quot; or &quot;value&quot; mapping. It can be used with
+&lsquo;<samp>r</samp>&rsquo;, &lsquo;<samp>g</samp>&rsquo;, &lsquo;<samp>b</samp>&rsquo; or &lsquo;<samp>all</samp>&rsquo; since it acts like a
+post-processing LUT.
+</p></dd>
+<dt> &lsquo;<samp>red, r</samp>&rsquo;</dt>
+<dd><p>Set the key points for the red component.
+</p></dd>
+<dt> &lsquo;<samp>green, g</samp>&rsquo;</dt>
+<dd><p>Set the key points for the green component.
+</p></dd>
+<dt> &lsquo;<samp>blue, b</samp>&rsquo;</dt>
+<dd><p>Set the key points for the blue component.
+</p></dd>
+<dt> &lsquo;<samp>all</samp>&rsquo;</dt>
+<dd><p>Set the key points for all components (not including master).
+Can be used in addition to the other key points component
+options. In this case, the unset component(s) will fallback on this
+&lsquo;<samp>all</samp>&rsquo; setting.
+</p></dd>
+<dt> &lsquo;<samp>psfile</samp>&rsquo;</dt>
+<dd><p>Specify a Photoshop curves file (<code>.asv</code>) to import the settings from.
+</p></dd>
+</dl>
+
+<p>To avoid some filtergraph syntax conflicts, each key points list need to be
+defined using the following syntax: <code>x0/y0 x1/y1 x2/y2 ...</code>.
+</p>
+<a name="Examples-16"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-16">37.15.1 Examples</a></h3>
+
+<ul>
+<li>
+Increase slightly the middle level of blue:
+<table><tr><td>&nbsp;</td><td><pre class="example">curves=blue='0.5/0.58'
+</pre></td></tr></table>
+
+</li><li>
+Vintage effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">curves=r='0/0.11 .42/.51 1/0.95':g='0.50/0.48':b='0/0.22 .49/.44 1/0.8'
+</pre></td></tr></table>
+<p>Here we obtain the following coordinates for each components:
+</p><dl compact="compact">
+<dt> <var>red</var></dt>
+<dd><p><code>(0;0.11) (0.42;0.51) (1;0.95)</code>
+</p></dd>
+<dt> <var>green</var></dt>
+<dd><p><code>(0;0) (0.50;0.48) (1;1)</code>
+</p></dd>
+<dt> <var>blue</var></dt>
+<dd><p><code>(0;0.22) (0.49;0.44) (1;0.80)</code>
+</p></dd>
+</dl>
+
+</li><li>
+The previous example can also be achieved with the associated built-in preset:
+<table><tr><td>&nbsp;</td><td><pre class="example">curves=preset=vintage
+</pre></td></tr></table>
+
+</li><li>
+Or simply:
+<table><tr><td>&nbsp;</td><td><pre class="example">curves=vintage
+</pre></td></tr></table>
+
+</li><li>
+Use a Photoshop preset and redefine the points of the green component:
+<table><tr><td>&nbsp;</td><td><pre class="example">curves=psfile='MyCurvesPresets/purple.asv':green='0.45/0.53'
+</pre></td></tr></table>
+</li></ul>
+
+<a name="dctdnoiz"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-dctdnoiz">37.16 dctdnoiz</a></h2>
+
+<p>Denoise frames using 2D DCT (frequency domain filtering).
+</p>
+<p>This filter is not designed for real time and can be extremely slow.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>sigma, s</samp>&rsquo;</dt>
+<dd><p>Set the noise sigma constant.
+</p>
+<p>This <var>sigma</var> defines a hard threshold of <code>3 * sigma</code>; every DCT
+coefficient (absolute value) below this threshold with be dropped.
+</p>
+<p>If you need a more advanced filtering, see &lsquo;<samp>expr</samp>&rsquo;.
+</p>
+<p>Default is <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>overlap</samp>&rsquo;</dt>
+<dd><p>Set number overlapping pixels for each block. Each block is of size
+<code>16x16</code>. Since the filter can be slow, you may want to reduce this value,
+at the cost of a less effective filter and the risk of various artefacts.
+</p>
+<p>If the overlapping value doesn&rsquo;t allow to process the whole input width or
+height, a warning will be displayed and according borders won&rsquo;t be denoised.
+</p>
+<p>Default value is <code>15</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>expr, e</samp>&rsquo;</dt>
+<dd><p>Set the coefficient factor expression.
+</p>
+<p>For each coefficient of a DCT block, this expression will be evaluated as a
+multiplier value for the coefficient.
+</p>
+<p>If this is option is set, the &lsquo;<samp>sigma</samp>&rsquo; option will be ignored.
+</p>
+<p>The absolute value of the coefficient can be accessed through the <var>c</var>
+variable.
+</p></dd>
+</dl>
+
+<a name="Examples-3"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-3">37.16.1 Examples</a></h3>
+
+<p>Apply a denoise with a &lsquo;<samp>sigma</samp>&rsquo; of <code>4.5</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">dctdnoiz=4.5
+</pre></td></tr></table>
+
+<p>The same operation can be achieved using the expression system:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">dctdnoiz=e='gte(c, 4.5*3)'
+</pre></td></tr></table>
+
+<p><a name="decimate"></a>
+</p><a name="decimate-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-decimate-1">37.17 decimate</a></h2>
+
+<p>Drop duplicated frames at regular intervals.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>cycle</samp>&rsquo;</dt>
+<dd><p>Set the number of frames from which one will be dropped. Setting this to
+<var>N</var> means one frame in every batch of <var>N</var> frames will be dropped.
+Default is <code>5</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>dupthresh</samp>&rsquo;</dt>
+<dd><p>Set the threshold for duplicate detection. If the difference metric for a frame
+is less than or equal to this value, then it is declared as duplicate. Default
+is <code>1.1</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>scthresh</samp>&rsquo;</dt>
+<dd><p>Set scene change threshold. Default is <code>15</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>blockx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>blocky</samp>&rsquo;</dt>
+<dd><p>Set the size of the x and y-axis blocks used during metric calculations.
+Larger blocks give better noise suppression, but also give worse detection of
+small movements. Must be a power of two. Default is <code>32</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>ppsrc</samp>&rsquo;</dt>
+<dd><p>Mark main input as a pre-processed input and activate clean source input
+stream. This allows the input to be pre-processed with various filters to help
+the metrics calculation while keeping the frame selection lossless. When set to
+<code>1</code>, the first stream is for the pre-processed input, and the second
+stream is the clean source from where the kept frames are chosen. Default is
+<code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+<dd><p>Set whether or not chroma is considered in the metric calculations. Default is
+<code>1</code>.
+</p></dd>
+</dl>
+
+<a name="delogo"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-delogo">37.18 delogo</a></h2>
+
+<p>Suppress a TV station logo by a simple interpolation of the surrounding
+pixels. Just set a rectangle covering the logo and watch it disappear
+(and sometimes something even uglier appear - your mileage may vary).
+</p>
+<p>This filter accepts the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>Specify the top left corner coordinates of the logo. They must be
+specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Specify the width and height of the logo to clear. They must be
+specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>band, t</samp>&rsquo;</dt>
+<dd><p>Specify the thickness of the fuzzy edge of the rectangle (added to
+<var>w</var> and <var>h</var>). The default value is 4.
+</p>
+</dd>
+<dt> &lsquo;<samp>show</samp>&rsquo;</dt>
+<dd><p>When set to 1, a green rectangle is drawn on the screen to simplify
+finding the right <var>x</var>, <var>y</var>, <var>w</var>, and <var>h</var> parameters.
+The default value is 0.
+</p>
+<p>The rectangle is drawn on the outermost pixels which will be (partly)
+replaced with interpolated values. The values of the next pixels
+immediately outside this rectangle in each direction will be used to
+compute the interpolated pixel values inside the rectangle.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-67"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-67">37.18.1 Examples</a></h3>
+
+<ul>
+<li>
+Set a rectangle covering the area with top left corner coordinates 0,0
+and size 100x77, setting a band of size 10:
+<table><tr><td>&nbsp;</td><td><pre class="example">delogo=x=0:y=0:w=100:h=77:band=10
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="deshake"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-deshake">37.19 deshake</a></h2>
+
+<p>Attempt to fix small changes in horizontal and/or vertical shift. This
+filter helps remove camera shake from hand-holding a camera, bumping a
+tripod, moving on a vehicle, etc.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Specify a rectangular area where to limit the search for motion
+vectors.
+If desired the search for motion vectors can be limited to a
+rectangular area of the frame defined by its top left corner, width
+and height. These parameters have the same meaning as the drawbox
+filter which can be used to visualise the position of the bounding
+box.
+</p>
+<p>This is useful when simultaneous movement of subjects within the frame
+might be confused for camera motion by the motion vector search.
+</p>
+<p>If any or all of <var>x</var>, <var>y</var>, <var>w</var> and <var>h</var> are set to -1
+then the full frame is used. This allows later options to be set
+without specifying the bounding box for the motion vector search.
+</p>
+<p>Default - search the whole frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>rx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ry</samp>&rsquo;</dt>
+<dd><p>Specify the maximum extent of movement in x and y directions in the
+range 0-64 pixels. Default 16.
+</p>
+</dd>
+<dt> &lsquo;<samp>edge</samp>&rsquo;</dt>
+<dd><p>Specify how to generate pixels to fill blanks at the edge of the
+frame. Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>blank, 0</samp>&rsquo;</dt>
+<dd><p>Fill zeroes at blank locations
+</p></dd>
+<dt> &lsquo;<samp>original, 1</samp>&rsquo;</dt>
+<dd><p>Original image at blank locations
+</p></dd>
+<dt> &lsquo;<samp>clamp, 2</samp>&rsquo;</dt>
+<dd><p>Extruded edge value at blank locations
+</p></dd>
+<dt> &lsquo;<samp>mirror, 3</samp>&rsquo;</dt>
+<dd><p>Mirrored edge at blank locations
+</p></dd>
+</dl>
+<p>Default value is &lsquo;<samp>mirror</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>blocksize</samp>&rsquo;</dt>
+<dd><p>Specify the blocksize to use for motion search. Range 4-128 pixels,
+default 8.
+</p>
+</dd>
+<dt> &lsquo;<samp>contrast</samp>&rsquo;</dt>
+<dd><p>Specify the contrast threshold for blocks. Only blocks with more than
+the specified contrast (difference between darkest and lightest
+pixels) will be considered. Range 1-255, default 125.
+</p>
+</dd>
+<dt> &lsquo;<samp>search</samp>&rsquo;</dt>
+<dd><p>Specify the search strategy. Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>exhaustive, 0</samp>&rsquo;</dt>
+<dd><p>Set exhaustive search
+</p></dd>
+<dt> &lsquo;<samp>less, 1</samp>&rsquo;</dt>
+<dd><p>Set less exhaustive search.
+</p></dd>
+</dl>
+<p>Default value is &lsquo;<samp>exhaustive</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>filename</samp>&rsquo;</dt>
+<dd><p>If set then a detailed log of the motion search is written to the
+specified file.
+</p>
+</dd>
+<dt> &lsquo;<samp>opencl</samp>&rsquo;</dt>
+<dd><p>If set to 1, specify using OpenCL capabilities, only available if
+FFmpeg was configured with <code>--enable-opencl</code>. Default value is 0.
+</p>
+</dd>
+</dl>
+
+<a name="drawbox"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-drawbox">37.20 drawbox</a></h2>
+
+<p>Draw a colored box on the input image.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>The expressions which specify the top left corner coordinates of the box. Default to 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>height, h</samp>&rsquo;</dt>
+<dd><p>The expressions which specify the width and height of the box, if 0 they are interpreted as
+the input width and height. Default to 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>color, c</samp>&rsquo;</dt>
+<dd><p>Specify the color of the box to write. For the general syntax of this option,
+check the &quot;Color&quot; section in the ffmpeg-utils manual. If the special
+value <code>invert</code> is used, the box edge color is the same as the
+video with inverted luma.
+</p>
+</dd>
+<dt> &lsquo;<samp>thickness, t</samp>&rsquo;</dt>
+<dd><p>The expression which sets the thickness of the box edge. Default value is <code>3</code>.
+</p>
+<p>See below for the list of accepted constants.
+</p></dd>
+</dl>
+
+<p>The parameters for <var>x</var>, <var>y</var>, <var>w</var> and <var>h</var> and <var>t</var> are expressions containing the
+following constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
+<dd><p>The input display aspect ratio, it is the same as (<var>w</var> / <var>h</var>) * <var>sar</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>in_h, ih</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>in_w, iw</samp>&rsquo;</dt>
+<dd><p>The input width and height.
+</p>
+</dd>
+<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
+<dd><p>The input sample aspect ratio.
+</p>
+</dd>
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>The x and y offset coordinates where the box is drawn.
+</p>
+</dd>
+<dt> &lsquo;<samp>w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>The width and height of the drawn box.
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>The thickness of the drawn box.
+</p>
+<p>These constants allow the <var>x</var>, <var>y</var>, <var>w</var>, <var>h</var> and <var>t</var> expressions to refer to
+each other, so you may for example specify <code>y=x/dar</code> or <code>h=w/dar</code>.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-42"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-42">37.20.1 Examples</a></h3>
+
+<ul>
+<li>
+Draw a black box around the edge of the input image:
+<table><tr><td>&nbsp;</td><td><pre class="example">drawbox
+</pre></td></tr></table>
+
+</li><li>
+Draw a box with color red and an opacity of 50%:
+<table><tr><td>&nbsp;</td><td><pre class="example">drawbox=10:20:200:60:red@0.5
+</pre></td></tr></table>
+
+<p>The previous example can be specified as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">drawbox=x=10:y=20:w=200:h=60:color=red@0.5
+</pre></td></tr></table>
+
+</li><li>
+Fill the box with pink color:
+<table><tr><td>&nbsp;</td><td><pre class="example">drawbox=x=10:y=10:w=100:h=100:color=pink@0.5:t=max
+</pre></td></tr></table>
+
+</li><li>
+Draw a 2-pixel red 2.40:1 mask:
+<table><tr><td>&nbsp;</td><td><pre class="example">drawbox=x=-t:y=0.5*(ih-iw/2.4)-t:w=iw+t*2:h=iw/2.4+t*2:t=2:c=red
+</pre></td></tr></table>
+</li></ul>
+
+<a name="drawgrid"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-drawgrid">37.21 drawgrid</a></h2>
+
+<p>Draw a grid on the input image.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>height, h</samp>&rsquo;</dt>
+<dd><p>The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
+input width and height, respectively, minus <code>thickness</code>, so image gets
+framed. Default to 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>color, c</samp>&rsquo;</dt>
+<dd><p>Specify the color of the grid. For the general syntax of this option,
+check the &quot;Color&quot; section in the ffmpeg-utils manual. If the special
+value <code>invert</code> is used, the grid color is the same as the
+video with inverted luma.
+</p>
+</dd>
+<dt> &lsquo;<samp>thickness, t</samp>&rsquo;</dt>
+<dd><p>The expression which sets the thickness of the grid line. Default value is <code>1</code>.
+</p>
+<p>See below for the list of accepted constants.
+</p></dd>
+</dl>
+
+<p>The parameters for <var>x</var>, <var>y</var>, <var>w</var> and <var>h</var> and <var>t</var> are expressions containing the
+following constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
+<dd><p>The input display aspect ratio, it is the same as (<var>w</var> / <var>h</var>) * <var>sar</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>in_h, ih</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>in_w, iw</samp>&rsquo;</dt>
+<dd><p>The input grid cell width and height.
+</p>
+</dd>
+<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
+<dd><p>The input sample aspect ratio.
+</p>
+</dd>
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>The x and y coordinates of some point of grid intersection (meant to configure offset).
+</p>
+</dd>
+<dt> &lsquo;<samp>w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>The width and height of the drawn cell.
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>The thickness of the drawn cell.
+</p>
+<p>These constants allow the <var>x</var>, <var>y</var>, <var>w</var>, <var>h</var> and <var>t</var> expressions to refer to
+each other, so you may for example specify <code>y=x/dar</code> or <code>h=w/dar</code>.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-54"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-54">37.21.1 Examples</a></h3>
+
+<ul>
+<li>
+Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
+<table><tr><td>&nbsp;</td><td><pre class="example">drawgrid=width=100:height=100:thickness=2:color=red@0.5
+</pre></td></tr></table>
+
+</li><li>
+Draw a white 3x3 grid with an opacity of 50%:
+<table><tr><td>&nbsp;</td><td><pre class="example">drawgrid=w=iw/3:h=ih/3:t=2:c=white@0.5
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="drawtext"></a>
+</p><a name="drawtext-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-drawtext-1">37.22 drawtext</a></h2>
+
+<p>Draw text string or text from specified file on top of video using the
+libfreetype library.
+</p>
+<p>To enable compilation of this filter you need to configure FFmpeg with
+<code>--enable-libfreetype</code>.
+</p>
+<a name="Syntax"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Syntax">37.22.1 Syntax</a></h3>
+
+<p>The description of the accepted parameters follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>box</samp>&rsquo;</dt>
+<dd><p>Used to draw a box around text using background color.
+Value should be either 1 (enable) or 0 (disable).
+The default value of <var>box</var> is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>boxcolor</samp>&rsquo;</dt>
+<dd><p>The color to be used for drawing box around text. For the syntax of this
+option, check the &quot;Color&quot; section in the ffmpeg-utils manual.
+</p>
+<p>The default value of <var>boxcolor</var> is &quot;white&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>expansion</samp>&rsquo;</dt>
+<dd><p>Select how the <var>text</var> is expanded. Can be either <code>none</code>,
+<code>strftime</code> (deprecated) or
+<code>normal</code> (default). See the <a href="#drawtext_005fexpansion">Text expansion</a> section
+below for details.
+</p>
+</dd>
+<dt> &lsquo;<samp>fix_bounds</samp>&rsquo;</dt>
+<dd><p>If true, check and fix text coords to avoid clipping.
+</p>
+</dd>
+<dt> &lsquo;<samp>fontcolor</samp>&rsquo;</dt>
+<dd><p>The color to be used for drawing fonts. For the syntax of this option, check
+the &quot;Color&quot; section in the ffmpeg-utils manual.
+</p>
+<p>The default value of <var>fontcolor</var> is &quot;black&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>fontfile</samp>&rsquo;</dt>
+<dd><p>The font file to be used for drawing text. Path must be included.
+This parameter is mandatory.
+</p>
+</dd>
+<dt> &lsquo;<samp>fontsize</samp>&rsquo;</dt>
+<dd><p>The font size to be used for drawing text.
+The default value of <var>fontsize</var> is 16.
+</p>
+</dd>
+<dt> &lsquo;<samp>ft_load_flags</samp>&rsquo;</dt>
+<dd><p>Flags to be used for loading the fonts.
+</p>
+<p>The flags map the corresponding flags supported by libfreetype, and are
+a combination of the following values:
+</p><dl compact="compact">
+<dt> <var>default</var></dt>
+<dt> <var>no_scale</var></dt>
+<dt> <var>no_hinting</var></dt>
+<dt> <var>render</var></dt>
+<dt> <var>no_bitmap</var></dt>
+<dt> <var>vertical_layout</var></dt>
+<dt> <var>force_autohint</var></dt>
+<dt> <var>crop_bitmap</var></dt>
+<dt> <var>pedantic</var></dt>
+<dt> <var>ignore_global_advance_width</var></dt>
+<dt> <var>no_recurse</var></dt>
+<dt> <var>ignore_transform</var></dt>
+<dt> <var>monochrome</var></dt>
+<dt> <var>linear_design</var></dt>
+<dt> <var>no_autohint</var></dt>
+</dl>
+
+<p>Default value is &quot;render&quot;.
+</p>
+<p>For more information consult the documentation for the FT_LOAD_*
+libfreetype flags.
+</p>
+</dd>
+<dt> &lsquo;<samp>shadowcolor</samp>&rsquo;</dt>
+<dd><p>The color to be used for drawing a shadow behind the drawn text. For the
+syntax of this option, check the &quot;Color&quot; section in the ffmpeg-utils manual.
+</p>
+<p>The default value of <var>shadowcolor</var> is &quot;black&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>shadowx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>shadowy</samp>&rsquo;</dt>
+<dd><p>The x and y offsets for the text shadow position with respect to the
+position of the text. They can be either positive or negative
+values. Default value for both is &quot;0&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_number</samp>&rsquo;</dt>
+<dd><p>The starting frame number for the n/frame_num variable. The default value
+is &quot;0&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>tabsize</samp>&rsquo;</dt>
+<dd><p>The size in number of spaces to use for rendering the tab.
+Default value is 4.
+</p>
+</dd>
+<dt> &lsquo;<samp>timecode</samp>&rsquo;</dt>
+<dd><p>Set the initial timecode representation in &quot;hh:mm:ss[:;.]ff&quot;
+format. It can be used with or without text parameter. <var>timecode_rate</var>
+option must be specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>timecode_rate, rate, r</samp>&rsquo;</dt>
+<dd><p>Set the timecode frame rate (timecode only).
+</p>
+</dd>
+<dt> &lsquo;<samp>text</samp>&rsquo;</dt>
+<dd><p>The text string to be drawn. The text must be a sequence of UTF-8
+encoded characters.
+This parameter is mandatory if no file is specified with the parameter
+<var>textfile</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>textfile</samp>&rsquo;</dt>
+<dd><p>A text file containing text to be drawn. The text must be a sequence
+of UTF-8 encoded characters.
+</p>
+<p>This parameter is mandatory if no text string is specified with the
+parameter <var>text</var>.
+</p>
+<p>If both <var>text</var> and <var>textfile</var> are specified, an error is thrown.
+</p>
+</dd>
+<dt> &lsquo;<samp>reload</samp>&rsquo;</dt>
+<dd><p>If set to 1, the <var>textfile</var> will be reloaded before each frame.
+Be sure to update it atomically, or it may be read partially, or even fail.
+</p>
+</dd>
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>The expressions which specify the offsets where text will be drawn
+within the video frame. They are relative to the top/left border of the
+output image.
+</p>
+<p>The default value of <var>x</var> and <var>y</var> is &quot;0&quot;.
+</p>
+<p>See below for the list of accepted constants and functions.
+</p></dd>
+</dl>
+
+<p>The parameters for <var>x</var> and <var>y</var> are expressions containing the
+following constants and functions:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
+<dd><p>input display aspect ratio, it is the same as (<var>w</var> / <var>h</var>) * <var>sar</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>line_h, lh</samp>&rsquo;</dt>
+<dd><p>the height of each text line
+</p>
+</dd>
+<dt> &lsquo;<samp>main_h, h, H</samp>&rsquo;</dt>
+<dd><p>the input height
+</p>
+</dd>
+<dt> &lsquo;<samp>main_w, w, W</samp>&rsquo;</dt>
+<dd><p>the input width
+</p>
+</dd>
+<dt> &lsquo;<samp>max_glyph_a, ascent</samp>&rsquo;</dt>
+<dd><p>the maximum distance from the baseline to the highest/upper grid
+coordinate used to place a glyph outline point, for all the rendered
+glyphs.
+It is a positive value, due to the grid&rsquo;s orientation with the Y axis
+upwards.
+</p>
+</dd>
+<dt> &lsquo;<samp>max_glyph_d, descent</samp>&rsquo;</dt>
+<dd><p>the maximum distance from the baseline to the lowest grid coordinate
+used to place a glyph outline point, for all the rendered glyphs.
+This is a negative value, due to the grid&rsquo;s orientation, with the Y axis
+upwards.
+</p>
+</dd>
+<dt> &lsquo;<samp>max_glyph_h</samp>&rsquo;</dt>
+<dd><p>maximum glyph height, that is the maximum height for all the glyphs
+contained in the rendered text, it is equivalent to <var>ascent</var> -
+<var>descent</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>max_glyph_w</samp>&rsquo;</dt>
+<dd><p>maximum glyph width, that is the maximum width for all the glyphs
+contained in the rendered text
+</p>
+</dd>
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>the number of input frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>rand(min, max)</samp>&rsquo;</dt>
+<dd><p>return a random number included between <var>min</var> and <var>max</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
+<dd><p>input sample aspect ratio
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>timestamp expressed in seconds, NAN if the input timestamp is unknown
+</p>
+</dd>
+<dt> &lsquo;<samp>text_h, th</samp>&rsquo;</dt>
+<dd><p>the height of the rendered text
+</p>
+</dd>
+<dt> &lsquo;<samp>text_w, tw</samp>&rsquo;</dt>
+<dd><p>the width of the rendered text
+</p>
+</dd>
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>the x and y offset coordinates where the text is drawn.
+</p>
+<p>These parameters allow the <var>x</var> and <var>y</var> expressions to refer
+each other, so you can for example specify <code>y=x/dar</code>.
+</p></dd>
+</dl>
+
+<p>If libavfilter was built with <code>--enable-fontconfig</code>, then
+&lsquo;<samp>fontfile</samp>&rsquo; can be a fontconfig pattern or omitted.
+</p>
+<p><a name="drawtext_005fexpansion"></a>
+</p><a name="Text-expansion"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Text-expansion">37.22.2 Text expansion</a></h3>
+
+<p>If &lsquo;<samp>expansion</samp>&rsquo; is set to <code>strftime</code>,
+the filter recognizes strftime() sequences in the provided text and
+expands them accordingly. Check the documentation of strftime(). This
+feature is deprecated.
+</p>
+<p>If &lsquo;<samp>expansion</samp>&rsquo; is set to <code>none</code>, the text is printed verbatim.
+</p>
+<p>If &lsquo;<samp>expansion</samp>&rsquo; is set to <code>normal</code> (which is the default),
+the following expansion mechanism is used.
+</p>
+<p>The backslash character &rsquo;\&rsquo;, followed by any character, always expands to
+the second character.
+</p>
+<p>Sequence of the form <code>%{...}</code> are expanded. The text between the
+braces is a function name, possibly followed by arguments separated by &rsquo;:&rsquo;.
+If the arguments contain special characters or delimiters (&rsquo;:&rsquo; or &rsquo;}&rsquo;),
+they should be escaped.
+</p>
+<p>Note that they probably must also be escaped as the value for the
+&lsquo;<samp>text</samp>&rsquo; option in the filter argument string and as the filter
+argument in the filtergraph description, and possibly also for the shell,
+that makes up to four levels of escaping; using a text file avoids these
+problems.
+</p>
+<p>The following functions are available:
+</p>
+<dl compact="compact">
+<dt> <code>expr, e</code></dt>
+<dd><p>The expression evaluation result.
+</p>
+<p>It must take one argument specifying the expression to be evaluated,
+which accepts the same constants and functions as the <var>x</var> and
+<var>y</var> values. Note that not all constants should be used, for
+example the text size is not known when evaluating the expression, so
+the constants <var>text_w</var> and <var>text_h</var> will have an undefined
+value.
+</p>
+</dd>
+<dt> <code>gmtime</code></dt>
+<dd><p>The time at which the filter is running, expressed in UTC.
+It can accept an argument: a strftime() format string.
+</p>
+</dd>
+<dt> <code>localtime</code></dt>
+<dd><p>The time at which the filter is running, expressed in the local time zone.
+It can accept an argument: a strftime() format string.
+</p>
+</dd>
+<dt> <code>metadata</code></dt>
+<dd><p>Frame metadata. It must take one argument specifying metadata key.
+</p>
+</dd>
+<dt> <code>n, frame_num</code></dt>
+<dd><p>The frame number, starting from 0.
+</p>
+</dd>
+<dt> <code>pict_type</code></dt>
+<dd><p>A 1 character description of the current picture type.
+</p>
+</dd>
+<dt> <code>pts</code></dt>
+<dd><p>The timestamp of the current frame, in seconds, with microsecond accuracy.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-30"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-30">37.22.3 Examples</a></h3>
+
+<ul>
+<li>
+Draw &quot;Test Text&quot; with font FreeSerif, using the default values for the
+optional parameters.
+
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'&quot;
+</pre></td></tr></table>
+
+</li><li>
+Draw &rsquo;Test Text&rsquo; with font FreeSerif of size 24 at position x=100
+and y=50 (counting from the top-left corner of the screen), text is
+yellow with a red box around it. Both the text and the box have an
+opacity of 20%.
+
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
+          x=100: y=50: fontsize=24: fontcolor=yellow@0.2: box=1: boxcolor=red@0.2&quot;
+</pre></td></tr></table>
+
+<p>Note that the double quotes are not necessary if spaces are not used
+within the parameter list.
+</p>
+</li><li>
+Show the text at the center of the video frame:
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h-line_h)/2&quot;
+</pre></td></tr></table>
+
+</li><li>
+Show a text line sliding from right to left in the last row of the video
+frame. The file &lsquo;<tt>LONG_LINE</tt>&rsquo; is assumed to contain a single line
+with no newlines.
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t&quot;
+</pre></td></tr></table>
+
+</li><li>
+Show the content of file &lsquo;<tt>CREDITS</tt>&rsquo; off the bottom of the frame and scroll up.
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t&quot;
+</pre></td></tr></table>
+
+</li><li>
+Draw a single green letter &quot;g&quot;, at the center of the input video.
+The glyph baseline is placed at half screen height.
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent&quot;
+</pre></td></tr></table>
+
+</li><li>
+Show text for 1 second every 3 seconds:
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'&quot;
+</pre></td></tr></table>
+
+</li><li>
+Use fontconfig to set the font. Note that the colons need to be escaped.
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
+</pre></td></tr></table>
+
+</li><li>
+Print the date of a real-time encoding (see strftime(3)):
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext='fontfile=FreeSans.ttf:text=%{localtime:%a %b %d %Y}'
+</pre></td></tr></table>
+
+</li></ul>
+
+<p>For more information about libfreetype, check:
+<a href="http://www.freetype.org/">http://www.freetype.org/</a>.
+</p>
+<p>For more information about fontconfig, check:
+<a href="http://freedesktop.org/software/fontconfig/fontconfig-user.html">http://freedesktop.org/software/fontconfig/fontconfig-user.html</a>.
+</p>
+<a name="edgedetect"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-edgedetect">37.23 edgedetect</a></h2>
+
+<p>Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>low</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>high</samp>&rsquo;</dt>
+<dd><p>Set low and high threshold values used by the Canny thresholding
+algorithm.
+</p>
+<p>The high threshold selects the &quot;strong&quot; edge pixels, which are then
+connected through 8-connectivity with the &quot;weak&quot; edge pixels selected
+by the low threshold.
+</p>
+<p><var>low</var> and <var>high</var> threshold values must be choosen in the range
+[0,1], and <var>low</var> should be lesser or equal to <var>high</var>.
+</p>
+<p>Default value for <var>low</var> is <code>20/255</code>, and default value for <var>high</var>
+is <code>50/255</code>.
+</p></dd>
+</dl>
+
+<p>Example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">edgedetect=low=0.1:high=0.4
+</pre></td></tr></table>
+
+<a name="extractplanes"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-extractplanes">37.24 extractplanes</a></h2>
+
+<p>Extract color channel components from input video stream into
+separate grayscale video streams.
+</p>
+<p>The filter accepts the following option:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>planes</samp>&rsquo;</dt>
+<dd><p>Set plane(s) to extract.
+</p>
+<p>Available values for planes are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>u</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>v</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>r</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>g</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+</dl>
+
+<p>Choosing planes not available in the input will result in an error.
+That means you cannot select <code>r</code>, <code>g</code>, <code>b</code> planes
+with <code>y</code>, <code>u</code>, <code>v</code> planes at same time.
+</p></dd>
+</dl>
+
+<a name="Examples-11"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-11">37.24.1 Examples</a></h3>
+
+<ul>
+<li>
+Extract luma, u and v color channel component from input video frame
+into 3 grayscale outputs:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i video.avi -filter_complex 'extractplanes=y+u+v[y][u][v]' -map '[y]' y.avi -map '[u]' u.avi -map '[v]' v.avi
+</pre></td></tr></table>
+</li></ul>
+
+<a name="elbg"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-elbg">37.25 elbg</a></h2>
+
+<p>Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
+</p>
+<p>For each input image, the filter will compute the optimal mapping from
+the input to the output given the codebook length, that is the number
+of distinct output colors.
+</p>
+<p>This filter accepts the following options.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>codebook_length, l</samp>&rsquo;</dt>
+<dd><p>Set codebook length. The value must be a positive integer, and
+represents the number of distinct output colors. Default value is 256.
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_steps, n</samp>&rsquo;</dt>
+<dd><p>Set the maximum number of iterations to apply for computing the optimal
+mapping. The higher the value the better the result and the higher the
+computation time. Default value is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>seed, s</samp>&rsquo;</dt>
+<dd><p>Set a random seed, must be an integer included between 0 and
+UINT32_MAX. If not specified, or if explicitly set to -1, the filter
+will try to use a good random seed on a best effort basis.
+</p></dd>
+</dl>
+
+<a name="fade"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-fade">37.26 fade</a></h2>
+
+<p>Apply fade-in/out effect to input video.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>type, t</samp>&rsquo;</dt>
+<dd><p>The effect type &ndash; can be either &quot;in&quot; for fade-in, or &quot;out&quot; for a fade-out
+effect.
+Default is <code>in</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_frame, s</samp>&rsquo;</dt>
+<dd><p>Specify the number of the start frame for starting to apply the fade
+effect. Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_frames, n</samp>&rsquo;</dt>
+<dd><p>The number of frames for which the fade effect has to last. At the end of the
+fade-in effect the output video will have the same intensity as the input video,
+at the end of the fade-out transition the output video will be filled with the
+selected &lsquo;<samp>color</samp>&rsquo;.
+Default is 25.
+</p>
+</dd>
+<dt> &lsquo;<samp>alpha</samp>&rsquo;</dt>
+<dd><p>If set to 1, fade only alpha channel, if one exists on the input.
+Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_time, st</samp>&rsquo;</dt>
+<dd><p>Specify the timestamp (in seconds) of the frame to start to apply the fade
+effect. If both start_frame and start_time are specified, the fade will start at
+whichever comes last.  Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
+<dd><p>The number of seconds for which the fade effect has to last. At the end of the
+fade-in effect the output video will have the same intensity as the input video,
+at the end of the fade-out transition the output video will be filled with the
+selected &lsquo;<samp>color</samp>&rsquo;.
+If both duration and nb_frames are specified, duration is used. Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>color, c</samp>&rsquo;</dt>
+<dd><p>Specify the color of the fade. Default is &quot;black&quot;.
+</p></dd>
+</dl>
+
+<a name="Examples-14"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-14">37.26.1 Examples</a></h3>
+
+<ul>
+<li>
+Fade in first 30 frames of video:
+<table><tr><td>&nbsp;</td><td><pre class="example">fade=in:0:30
+</pre></td></tr></table>
+
+<p>The command above is equivalent to:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">fade=t=in:s=0:n=30
+</pre></td></tr></table>
+
+</li><li>
+Fade out last 45 frames of a 200-frame video:
+<table><tr><td>&nbsp;</td><td><pre class="example">fade=out:155:45
+fade=type=out:start_frame=155:nb_frames=45
+</pre></td></tr></table>
+
+</li><li>
+Fade in first 25 frames and fade out last 25 frames of a 1000-frame video:
+<table><tr><td>&nbsp;</td><td><pre class="example">fade=in:0:25, fade=out:975:25
+</pre></td></tr></table>
+
+</li><li>
+Make first 5 frames yellow, then fade in from frame 5-24:
+<table><tr><td>&nbsp;</td><td><pre class="example">fade=in:5:20:color=yellow
+</pre></td></tr></table>
+
+</li><li>
+Fade in alpha over first 25 frames of video:
+<table><tr><td>&nbsp;</td><td><pre class="example">fade=in:0:25:alpha=1
+</pre></td></tr></table>
+
+</li><li>
+Make first 5.5 seconds black, then fade in for 0.5 seconds:
+<table><tr><td>&nbsp;</td><td><pre class="example">fade=t=in:st=5.5:d=0.5
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="field"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-field">37.27 field</a></h2>
+
+<p>Extract a single field from an interlaced image using stride
+arithmetic to avoid wasting CPU time. The output frames are marked as
+non-interlaced.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>type</samp>&rsquo;</dt>
+<dd><p>Specify whether to extract the top (if the value is <code>0</code> or
+<code>top</code>) or the bottom field (if the value is <code>1</code> or
+<code>bottom</code>).
+</p></dd>
+</dl>
+
+<a name="fieldmatch"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-fieldmatch">37.28 fieldmatch</a></h2>
+
+<p>Field matching filter for inverse telecine. It is meant to reconstruct the
+progressive frames from a telecined stream. The filter does not drop duplicated
+frames, so to achieve a complete inverse telecine <code>fieldmatch</code> needs to be
+followed by a decimation filter such as <a href="#decimate">decimate</a> in the filtergraph.
+</p>
+<p>The separation of the field matching and the decimation is notably motivated by
+the possibility of inserting a de-interlacing filter fallback between the two.
+If the source has mixed telecined and real interlaced content,
+<code>fieldmatch</code> will not be able to match fields for the interlaced parts.
+But these remaining combed frames will be marked as interlaced, and thus can be
+de-interlaced by a later filter such as <a href="#yadif">yadif</a> before decimation.
+</p>
+<p>In addition to the various configuration options, <code>fieldmatch</code> can take an
+optional second stream, activated through the &lsquo;<samp>ppsrc</samp>&rsquo; option. If
+enabled, the frames reconstruction will be based on the fields and frames from
+this second stream. This allows the first input to be pre-processed in order to
+help the various algorithms of the filter, while keeping the output lossless
+(assuming the fields are matched properly). Typically, a field-aware denoiser,
+or brightness/contrast adjustments can help.
+</p>
+<p>Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
+and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
+which <code>fieldmatch</code> is based on. While the semantic and usage are very
+close, some behaviour and options names can differ.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>order</samp>&rsquo;</dt>
+<dd><p>Specify the assumed field order of the input stream. Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Auto detect parity (use FFmpeg&rsquo;s internal parity value).
+</p></dd>
+<dt> &lsquo;<samp>bff</samp>&rsquo;</dt>
+<dd><p>Assume bottom field first.
+</p></dd>
+<dt> &lsquo;<samp>tff</samp>&rsquo;</dt>
+<dd><p>Assume top field first.
+</p></dd>
+</dl>
+
+<p>Note that it is sometimes recommended not to trust the parity announced by the
+stream.
+</p>
+<p>Default value is <var>auto</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Set the matching mode or strategy to use. &lsquo;<samp>pc</samp>&rsquo; mode is the safest in the
+sense that it won&rsquo;t risk creating jerkiness due to duplicate frames when
+possible, but if there are bad edits or blended fields it will end up
+outputting combed frames when a good match might actually exist. On the other
+hand, &lsquo;<samp>pcn_ub</samp>&rsquo; mode is the most risky in terms of creating jerkiness,
+but will almost always find a good frame if there is one. The other values are
+all somewhere in between &lsquo;<samp>pc</samp>&rsquo; and &lsquo;<samp>pcn_ub</samp>&rsquo; in terms of risking
+jerkiness and creating duplicate frames versus finding good matches in sections
+with bad edits, orphaned fields, blended fields, etc.
+</p>
+<p>More details about p/c/n/u/b are available in <a href="#p_002fc_002fn_002fu_002fb-meaning">p/c/n/u/b meaning</a> section.
+</p>
+<p>Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>pc</samp>&rsquo;</dt>
+<dd><p>2-way matching (p/c)
+</p></dd>
+<dt> &lsquo;<samp>pc_n</samp>&rsquo;</dt>
+<dd><p>2-way matching, and trying 3rd match if still combed (p/c + n)
+</p></dd>
+<dt> &lsquo;<samp>pc_u</samp>&rsquo;</dt>
+<dd><p>2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
+</p></dd>
+<dt> &lsquo;<samp>pc_n_ub</samp>&rsquo;</dt>
+<dd><p>2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
+still combed (p/c + n + u/b)
+</p></dd>
+<dt> &lsquo;<samp>pcn</samp>&rsquo;</dt>
+<dd><p>3-way matching (p/c/n)
+</p></dd>
+<dt> &lsquo;<samp>pcn_ub</samp>&rsquo;</dt>
+<dd><p>3-way matching, and trying 4th/5th matches if all 3 of the original matches are
+detected as combed (p/c/n + u/b)
+</p></dd>
+</dl>
+
+<p>The parenthesis at the end indicate the matches that would be used for that
+mode assuming &lsquo;<samp>order</samp>&rsquo;=<var>tff</var> (and &lsquo;<samp>field</samp>&rsquo; on <var>auto</var> or
+<var>top</var>).
+</p>
+<p>In terms of speed &lsquo;<samp>pc</samp>&rsquo; mode is by far the fastest and &lsquo;<samp>pcn_ub</samp>&rsquo; is
+the slowest.
+</p>
+<p>Default value is <var>pc_n</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>ppsrc</samp>&rsquo;</dt>
+<dd><p>Mark the main input stream as a pre-processed input, and enable the secondary
+input stream as the clean source to pick the fields from. See the filter
+introduction for more details. It is similar to the &lsquo;<samp>clip2</samp>&rsquo; feature from
+VFM/TFM.
+</p>
+<p>Default value is <code>0</code> (disabled).
+</p>
+</dd>
+<dt> &lsquo;<samp>field</samp>&rsquo;</dt>
+<dd><p>Set the field to match from. It is recommended to set this to the same value as
+&lsquo;<samp>order</samp>&rsquo; unless you experience matching failures with that setting. In
+certain circumstances changing the field that is used to match from can have a
+large impact on matching performance. Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Automatic (same value as &lsquo;<samp>order</samp>&rsquo;).
+</p></dd>
+<dt> &lsquo;<samp>bottom</samp>&rsquo;</dt>
+<dd><p>Match from the bottom field.
+</p></dd>
+<dt> &lsquo;<samp>top</samp>&rsquo;</dt>
+<dd><p>Match from the top field.
+</p></dd>
+</dl>
+
+<p>Default value is <var>auto</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>mchroma</samp>&rsquo;</dt>
+<dd><p>Set whether or not chroma is included during the match comparisons. In most
+cases it is recommended to leave this enabled. You should set this to <code>0</code>
+only if your clip has bad chroma problems such as heavy rainbowing or other
+artifacts. Setting this to <code>0</code> could also be used to speed things up at
+the cost of some accuracy.
+</p>
+<p>Default value is <code>1</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>y0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y1</samp>&rsquo;</dt>
+<dd><p>These define an exclusion band which excludes the lines between &lsquo;<samp>y0</samp>&rsquo; and
+&lsquo;<samp>y1</samp>&rsquo; from being included in the field matching decision. An exclusion
+band can be used to ignore subtitles, a logo, or other things that may
+interfere with the matching. &lsquo;<samp>y0</samp>&rsquo; sets the starting scan line and
+&lsquo;<samp>y1</samp>&rsquo; sets the ending line; all lines in between &lsquo;<samp>y0</samp>&rsquo; and
+&lsquo;<samp>y1</samp>&rsquo; (including &lsquo;<samp>y0</samp>&rsquo; and &lsquo;<samp>y1</samp>&rsquo;) will be ignored. Setting
+&lsquo;<samp>y0</samp>&rsquo; and &lsquo;<samp>y1</samp>&rsquo; to the same value will disable the feature.
+&lsquo;<samp>y0</samp>&rsquo; and &lsquo;<samp>y1</samp>&rsquo; defaults to <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>scthresh</samp>&rsquo;</dt>
+<dd><p>Set the scene change detection threshold as a percentage of maximum change on
+the luma plane. Good values are in the <code>[8.0, 14.0]</code> range. Scene change
+detection is only relevant in case &lsquo;<samp>combmatch</samp>&rsquo;=<var>sc</var>.  The range for
+&lsquo;<samp>scthresh</samp>&rsquo; is <code>[0.0, 100.0]</code>.
+</p>
+<p>Default value is <code>12.0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>combmatch</samp>&rsquo;</dt>
+<dd><p>When &lsquo;<samp>combatch</samp>&rsquo; is not <var>none</var>, <code>fieldmatch</code> will take into
+account the combed scores of matches when deciding what match to use as the
+final match. Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>No final matching based on combed scores.
+</p></dd>
+<dt> &lsquo;<samp>sc</samp>&rsquo;</dt>
+<dd><p>Combed scores are only used when a scene change is detected.
+</p></dd>
+<dt> &lsquo;<samp>full</samp>&rsquo;</dt>
+<dd><p>Use combed scores all the time.
+</p></dd>
+</dl>
+
+<p>Default is <var>sc</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>combdbg</samp>&rsquo;</dt>
+<dd><p>Force <code>fieldmatch</code> to calculate the combed metrics for certain matches and
+print them. This setting is known as &lsquo;<samp>micout</samp>&rsquo; in TFM/VFM vocabulary.
+Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>No forced calculation.
+</p></dd>
+<dt> &lsquo;<samp>pcn</samp>&rsquo;</dt>
+<dd><p>Force p/c/n calculations.
+</p></dd>
+<dt> &lsquo;<samp>pcnub</samp>&rsquo;</dt>
+<dd><p>Force p/c/n/u/b calculations.
+</p></dd>
+</dl>
+
+<p>Default value is <var>none</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>cthresh</samp>&rsquo;</dt>
+<dd><p>This is the area combing threshold used for combed frame detection. This
+essentially controls how &quot;strong&quot; or &quot;visible&quot; combing must be to be detected.
+Larger values mean combing must be more visible and smaller values mean combing
+can be less visible or strong and still be detected. Valid settings are from
+<code>-1</code> (every pixel will be detected as combed) to <code>255</code> (no pixel will
+be detected as combed). This is basically a pixel difference value. A good
+range is <code>[8, 12]</code>.
+</p>
+<p>Default value is <code>9</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+<dd><p>Sets whether or not chroma is considered in the combed frame decision.  Only
+disable this if your source has chroma problems (rainbowing, etc.) that are
+causing problems for the combed frame detection with chroma enabled. Actually,
+using &lsquo;<samp>chroma</samp>&rsquo;=<var>0</var> is usually more reliable, except for the case
+where there is chroma only combing in the source.
+</p>
+<p>Default value is <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>blockx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>blocky</samp>&rsquo;</dt>
+<dd><p>Respectively set the x-axis and y-axis size of the window used during combed
+frame detection. This has to do with the size of the area in which
+&lsquo;<samp>combpel</samp>&rsquo; pixels are required to be detected as combed for a frame to be
+declared combed. See the &lsquo;<samp>combpel</samp>&rsquo; parameter description for more info.
+Possible values are any number that is a power of 2 starting at 4 and going up
+to 512.
+</p>
+<p>Default value is <code>16</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>combpel</samp>&rsquo;</dt>
+<dd><p>The number of combed pixels inside any of the &lsquo;<samp>blocky</samp>&rsquo; by
+&lsquo;<samp>blockx</samp>&rsquo; size blocks on the frame for the frame to be detected as
+combed. While &lsquo;<samp>cthresh</samp>&rsquo; controls how &quot;visible&quot; the combing must be, this
+setting controls &quot;how much&quot; combing there must be in any localized area (a
+window defined by the &lsquo;<samp>blockx</samp>&rsquo; and &lsquo;<samp>blocky</samp>&rsquo; settings) on the
+frame. Minimum value is <code>0</code> and maximum is <code>blocky x blockx</code> (at
+which point no frames will ever be detected as combed). This setting is known
+as &lsquo;<samp>MI</samp>&rsquo; in TFM/VFM vocabulary.
+</p>
+<p>Default value is <code>80</code>.
+</p></dd>
+</dl>
+
+<p><a name="p_002fc_002fn_002fu_002fb-meaning"></a>
+</p><a name="p_002fc_002fn_002fu_002fb-meaning-1"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-p_002fc_002fn_002fu_002fb-meaning-1">37.28.1 p/c/n/u/b meaning</a></h3>
+
+<a name="p_002fc_002fn"></a>
+<h4 class="subsubsection"><a href="ffmpeg-all.html#toc-p_002fc_002fn">37.28.1.1 p/c/n</a></h4>
+
+<p>We assume the following telecined stream:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">Top fields:     1 2 2 3 4
+Bottom fields:  1 2 3 4 4
+</pre></td></tr></table>
+
+<p>The numbers correspond to the progressive frame the fields relate to. Here, the
+first two frames are progressive, the 3rd and 4th are combed, and so on.
+</p>
+<p>When <code>fieldmatch</code> is configured to run a matching from bottom
+(&lsquo;<samp>field</samp>&rsquo;=<var>bottom</var>) this is how this input stream get transformed:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">Input stream:
+                T     1 2 2 3 4
+                B     1 2 3 4 4   &lt;-- matching reference
+
+Matches:              c c n n c
+
+Output stream:
+                T     1 2 3 4 4
+                B     1 2 3 4 4
+</pre></td></tr></table>
+
+<p>As a result of the field matching, we can see that some frames get duplicated.
+To perform a complete inverse telecine, you need to rely on a decimation filter
+after this operation. See for instance the <a href="#decimate">decimate</a> filter.
+</p>
+<p>The same operation now matching from top fields (&lsquo;<samp>field</samp>&rsquo;=<var>top</var>)
+looks like this:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">Input stream:
+                T     1 2 2 3 4   &lt;-- matching reference
+                B     1 2 3 4 4
+
+Matches:              c c p p c
+
+Output stream:
+                T     1 2 2 3 4
+                B     1 2 2 3 4
+</pre></td></tr></table>
+
+<p>In these examples, we can see what <var>p</var>, <var>c</var> and <var>n</var> mean;
+basically, they refer to the frame and field of the opposite parity:
+</p>
+<ul>
+<li> <var>p</var> matches the field of the opposite parity in the previous frame
+</li><li> <var>c</var> matches the field of the opposite parity in the current frame
+</li><li> <var>n</var> matches the field of the opposite parity in the next frame
+</li></ul>
+
+<a name="u_002fb"></a>
+<h4 class="subsubsection"><a href="ffmpeg-all.html#toc-u_002fb">37.28.1.2 u/b</a></h4>
+
+<p>The <var>u</var> and <var>b</var> matching are a bit special in the sense that they match
+from the opposite parity flag. In the following examples, we assume that we are
+currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
+&rsquo;x&rsquo; is placed above and below each matched fields.
+</p>
+<p>With bottom matching (&lsquo;<samp>field</samp>&rsquo;=<var>bottom</var>):
+</p><table><tr><td>&nbsp;</td><td><pre class="example">Match:           c         p           n          b          u
+
+                 x       x               x        x          x
+  Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
+  Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
+                 x         x           x        x              x
+
+Output frames:
+                 2          1          2          2          2
+                 2          2          2          1          3
+</pre></td></tr></table>
+
+<p>With top matching (&lsquo;<samp>field</samp>&rsquo;=<var>top</var>):
+</p><table><tr><td>&nbsp;</td><td><pre class="example">Match:           c         p           n          b          u
+
+                 x         x           x        x              x
+  Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
+  Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
+                 x       x               x        x          x
+
+Output frames:
+                 2          2          2          1          2
+                 2          1          3          2          2
+</pre></td></tr></table>
+
+<a name="Examples-35"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-35">37.28.2 Examples</a></h3>
+
+<p>Simple IVTC of a top field first telecined stream:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">fieldmatch=order=tff:combmatch=none, decimate
+</pre></td></tr></table>
+
+<p>Advanced IVTC, with fallback on <a href="#yadif">yadif</a> for still combed frames:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
+</pre></td></tr></table>
+
+<a name="fieldorder"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-fieldorder">37.29 fieldorder</a></h2>
+
+<p>Transform the field order of the input video.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>order</samp>&rsquo;</dt>
+<dd><p>Output field order. Valid values are <var>tff</var> for top field first or <var>bff</var>
+for bottom field first.
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>tff</samp>&rsquo;.
+</p>
+<p>Transformation is achieved by shifting the picture content up or down
+by one line, and filling the remaining line with appropriate picture content.
+This method is consistent with most broadcast field order converters.
+</p>
+<p>If the input video is not flagged as being interlaced, or it is already
+flagged as being of the required output field order then this filter does
+not alter the incoming video.
+</p>
+<p>This filter is very useful when converting to or from PAL DV material,
+which is bottom field first.
+</p>
+<p>For example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.vob -vf &quot;fieldorder=bff&quot; out.dv
+</pre></td></tr></table>
+
+<a name="fifo"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-fifo">37.30 fifo</a></h2>
+
+<p>Buffer input images and send them when they are requested.
+</p>
+<p>This filter is mainly useful when auto-inserted by the libavfilter
+framework.
+</p>
+<p>The filter does not take parameters.
+</p>
+<p><a name="format"></a>
+</p><a name="format-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-format-1">37.31 format</a></h2>
+
+<p>Convert the input video to one of the specified pixel formats.
+Libavfilter will try to pick one that is supported for the input to
+the next filter.
+</p>
+<p>This filter accepts the following parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>pix_fmts</samp>&rsquo;</dt>
+<dd><p>A &rsquo;|&rsquo;-separated list of pixel format names, for example
+&quot;pix_fmts=yuv420p|monow|rgb24&quot;.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-81"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-81">37.31.1 Examples</a></h3>
+
+<ul>
+<li>
+Convert the input video to the format <var>yuv420p</var>
+<table><tr><td>&nbsp;</td><td><pre class="example">format=pix_fmts=yuv420p
+</pre></td></tr></table>
+
+<p>Convert the input video to any of the formats in the list
+</p><table><tr><td>&nbsp;</td><td><pre class="example">format=pix_fmts=yuv420p|yuv444p|yuv410p
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="fps"></a>
+</p><a name="fps-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-fps-1">37.32 fps</a></h2>
+
+<p>Convert the video to specified constant frame rate by duplicating or dropping
+frames as necessary.
+</p>
+<p>This filter accepts the following named parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>fps</samp>&rsquo;</dt>
+<dd><p>Desired output frame rate. The default is <code>25</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>round</samp>&rsquo;</dt>
+<dd><p>Rounding method.
+</p>
+<p>Possible values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>zero round towards 0
+</p></dd>
+<dt> &lsquo;<samp>inf</samp>&rsquo;</dt>
+<dd><p>round away from 0
+</p></dd>
+<dt> &lsquo;<samp>down</samp>&rsquo;</dt>
+<dd><p>round towards -infinity
+</p></dd>
+<dt> &lsquo;<samp>up</samp>&rsquo;</dt>
+<dd><p>round towards +infinity
+</p></dd>
+<dt> &lsquo;<samp>near</samp>&rsquo;</dt>
+<dd><p>round to nearest
+</p></dd>
+</dl>
+<p>The default is <code>near</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_time</samp>&rsquo;</dt>
+<dd><p>Assume the first PTS should be the given value, in seconds. This allows for
+padding/trimming at the start of stream. By default, no assumption is made
+about the first frame&rsquo;s expected PTS, so no padding or trimming is done.
+For example, this could be set to 0 to pad the beginning with duplicates of
+the first frame if a video stream starts after the audio stream or to trim any
+frames with a negative PTS.
+</p>
+</dd>
+</dl>
+
+<p>Alternatively, the options can be specified as a flat string:
+<var>fps</var>[:<var>round</var>].
+</p>
+<p>See also the <a href="#setpts">setpts</a> filter.
+</p>
+<a name="Examples-6"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-6">37.32.1 Examples</a></h3>
+
+<ul>
+<li>
+A typical usage in order to set the fps to 25:
+<table><tr><td>&nbsp;</td><td><pre class="example">fps=fps=25
+</pre></td></tr></table>
+
+</li><li>
+Sets the fps to 24, using abbreviation and rounding method to round to nearest:
+<table><tr><td>&nbsp;</td><td><pre class="example">fps=fps=film:round=near
+</pre></td></tr></table>
+</li></ul>
+
+<a name="framestep"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-framestep">37.33 framestep</a></h2>
+
+<p>Select one frame every N-th frame.
+</p>
+<p>This filter accepts the following option:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>step</samp>&rsquo;</dt>
+<dd><p>Select frame after every <code>step</code> frames.
+Allowed values are positive integers higher than 0. Default value is <code>1</code>.
+</p></dd>
+</dl>
+
+<p><a name="frei0r"></a>
+</p><a name="frei0r-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-frei0r-1">37.34 frei0r</a></h2>
+
+<p>Apply a frei0r effect to the input video.
+</p>
+<p>To enable compilation of this filter you need to install the frei0r
+header and configure FFmpeg with <code>--enable-frei0r</code>.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filter_name</samp>&rsquo;</dt>
+<dd><p>The name to the frei0r effect to load. If the environment variable
+<code>FREI0R_PATH</code> is defined, the frei0r effect is searched in each one of the
+directories specified by the colon separated list in <code>FREIOR_PATH</code>,
+otherwise in the standard frei0r paths, which are in this order:
+&lsquo;<tt>HOME/.frei0r-1/lib/</tt>&rsquo;, &lsquo;<tt>/usr/local/lib/frei0r-1/</tt>&rsquo;,
+&lsquo;<tt>/usr/lib/frei0r-1/</tt>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>filter_params</samp>&rsquo;</dt>
+<dd><p>A &rsquo;|&rsquo;-separated list of parameters to pass to the frei0r effect.
+</p>
+</dd>
+</dl>
+
+<p>A frei0r effect parameter can be a boolean (whose values are specified
+with &quot;y&quot; and &quot;n&quot;), a double, a color (specified by the syntax
+<var>R</var>/<var>G</var>/<var>B</var>, (<var>R</var>, <var>G</var>, and <var>B</var> being float
+numbers from 0.0 to 1.0) or by a color description specified in the &quot;Color&quot;
+section in the ffmpeg-utils manual), a position (specified by the syntax <var>X</var>/<var>Y</var>,
+<var>X</var> and <var>Y</var> being float numbers) and a string.
+</p>
+<p>The number and kind of parameters depend on the loaded effect. If an
+effect parameter is not specified the default value is set.
+</p>
+<a name="Examples-73"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-73">37.34.1 Examples</a></h3>
+
+<ul>
+<li>
+Apply the distort0r effect, set the first two double parameters:
+<table><tr><td>&nbsp;</td><td><pre class="example">frei0r=filter_name=distort0r:filter_params=0.5|0.01
+</pre></td></tr></table>
+
+</li><li>
+Apply the colordistance effect, take a color as first parameter:
+<table><tr><td>&nbsp;</td><td><pre class="example">frei0r=colordistance:0.2/0.3/0.4
+frei0r=colordistance:violet
+frei0r=colordistance:0x112233
+</pre></td></tr></table>
+
+</li><li>
+Apply the perspective effect, specify the top left and top right image
+positions:
+<table><tr><td>&nbsp;</td><td><pre class="example">frei0r=perspective:0.2/0.2|0.8/0.2
+</pre></td></tr></table>
+</li></ul>
+
+<p>For more information see:
+<a href="http://frei0r.dyne.org">http://frei0r.dyne.org</a>
+</p>
+<a name="geq"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-geq">37.35 geq</a></h2>
+
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>lum_expr, lum</samp>&rsquo;</dt>
+<dd><p>Set the luminance expression.
+</p></dd>
+<dt> &lsquo;<samp>cb_expr, cb</samp>&rsquo;</dt>
+<dd><p>Set the chrominance blue expression.
+</p></dd>
+<dt> &lsquo;<samp>cr_expr, cr</samp>&rsquo;</dt>
+<dd><p>Set the chrominance red expression.
+</p></dd>
+<dt> &lsquo;<samp>alpha_expr, a</samp>&rsquo;</dt>
+<dd><p>Set the alpha expression.
+</p></dd>
+<dt> &lsquo;<samp>red_expr, r</samp>&rsquo;</dt>
+<dd><p>Set the red expression.
+</p></dd>
+<dt> &lsquo;<samp>green_expr, g</samp>&rsquo;</dt>
+<dd><p>Set the green expression.
+</p></dd>
+<dt> &lsquo;<samp>blue_expr, b</samp>&rsquo;</dt>
+<dd><p>Set the blue expression.
+</p></dd>
+</dl>
+
+<p>The colorspace is selected according to the specified options. If one
+of the &lsquo;<samp>lum_expr</samp>&rsquo;, &lsquo;<samp>cb_expr</samp>&rsquo;, or &lsquo;<samp>cr_expr</samp>&rsquo;
+options is specified, the filter will automatically select a YCbCr
+colorspace. If one of the &lsquo;<samp>red_expr</samp>&rsquo;, &lsquo;<samp>green_expr</samp>&rsquo;, or
+&lsquo;<samp>blue_expr</samp>&rsquo; options is specified, it will select an RGB
+colorspace.
+</p>
+<p>If one of the chrominance expression is not defined, it falls back on the other
+one. If no alpha expression is specified it will evaluate to opaque value.
+If none of chrominance expressions are specified, they will evaluate
+to the luminance expression.
+</p>
+<p>The expressions can use the following variables and functions:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>N</samp>&rsquo;</dt>
+<dd><p>The sequential number of the filtered frame, starting from <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>X</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>Y</samp>&rsquo;</dt>
+<dd><p>The coordinates of the current sample.
+</p>
+</dd>
+<dt> &lsquo;<samp>W</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>H</samp>&rsquo;</dt>
+<dd><p>The width and height of the image.
+</p>
+</dd>
+<dt> &lsquo;<samp>SW</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>SH</samp>&rsquo;</dt>
+<dd><p>Width and height scale depending on the currently filtered plane. It is the
+ratio between the corresponding luma plane number of pixels and the current
+plane ones. E.g. for YUV4:2:0 the values are <code>1,1</code> for the luma plane, and
+<code>0.5,0.5</code> for chroma planes.
+</p>
+</dd>
+<dt> &lsquo;<samp>T</samp>&rsquo;</dt>
+<dd><p>Time of the current frame, expressed in seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>p(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the value of the pixel at location (<var>x</var>,<var>y</var>) of the current
+plane.
+</p>
+</dd>
+<dt> &lsquo;<samp>lum(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the value of the pixel at location (<var>x</var>,<var>y</var>) of the luminance
+plane.
+</p>
+</dd>
+<dt> &lsquo;<samp>cb(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the value of the pixel at location (<var>x</var>,<var>y</var>) of the
+blue-difference chroma plane. Return 0 if there is no such plane.
+</p>
+</dd>
+<dt> &lsquo;<samp>cr(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the value of the pixel at location (<var>x</var>,<var>y</var>) of the
+red-difference chroma plane. Return 0 if there is no such plane.
+</p>
+</dd>
+<dt> &lsquo;<samp>r(x, y)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>g(x, y)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>b(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the value of the pixel at location (<var>x</var>,<var>y</var>) of the
+red/green/blue component. Return 0 if there is no such component.
+</p>
+</dd>
+<dt> &lsquo;<samp>alpha(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the value of the pixel at location (<var>x</var>,<var>y</var>) of the alpha
+plane. Return 0 if there is no such plane.
+</p></dd>
+</dl>
+
+<p>For functions, if <var>x</var> and <var>y</var> are outside the area, the value will be
+automatically clipped to the closer edge.
+</p>
+<a name="Examples-15"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-15">37.35.1 Examples</a></h3>
+
+<ul>
+<li>
+Flip the image horizontally:
+<table><tr><td>&nbsp;</td><td><pre class="example">geq=p(W-X\,Y)
+</pre></td></tr></table>
+
+</li><li>
+Generate a bidimensional sine wave, with angle <code>PI/3</code> and a
+wavelength of 100 pixels:
+<table><tr><td>&nbsp;</td><td><pre class="example">geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
+</pre></td></tr></table>
+
+</li><li>
+Generate a fancy enigmatic moving light:
+<table><tr><td>&nbsp;</td><td><pre class="example">nullsrc=s=256x256,geq=random(1)/hypot(X-cos(N*0.07)*W/2-W/2\,Y-sin(N*0.09)*H/2-H/2)^2*1000000*sin(N*0.02):128:128
+</pre></td></tr></table>
+
+</li><li>
+Generate a quick emboss effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
+</pre></td></tr></table>
+
+</li><li>
+Modify RGB components depending on pixel position:
+<table><tr><td>&nbsp;</td><td><pre class="example">geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
+</pre></td></tr></table>
+</li></ul>
+
+<a name="gradfun"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-gradfun">37.36 gradfun</a></h2>
+
+<p>Fix the banding artifacts that are sometimes introduced into nearly flat
+regions by truncation to 8bit color depth.
+Interpolate the gradients that should go where the bands are, and
+dither them.
+</p>
+<p>This filter is designed for playback only.  Do not use it prior to
+lossy compression, because compression tends to lose the dither and
+bring back the bands.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>strength</samp>&rsquo;</dt>
+<dd><p>The maximum amount by which the filter will change any one pixel. Also the
+threshold for detecting nearly flat regions. Acceptable values range from .51 to
+64, default value is 1.2, out-of-range values will be clipped to the valid
+range.
+</p>
+</dd>
+<dt> &lsquo;<samp>radius</samp>&rsquo;</dt>
+<dd><p>The neighborhood to fit the gradient to. A larger radius makes for smoother
+gradients, but also prevents the filter from modifying the pixels near detailed
+regions. Acceptable values are 8-32, default value is 16, out-of-range values
+will be clipped to the valid range.
+</p>
+</dd>
+</dl>
+
+<p>Alternatively, the options can be specified as a flat string:
+<var>strength</var>[:<var>radius</var>]
+</p>
+<a name="Examples-80"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-80">37.36.1 Examples</a></h3>
+
+<ul>
+<li>
+Apply the filter with a <code>3.5</code> strength and radius of <code>8</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">gradfun=3.5:8
+</pre></td></tr></table>
+
+</li><li>
+Specify radius, omitting the strength (which will fall-back to the default
+value):
+<table><tr><td>&nbsp;</td><td><pre class="example">gradfun=radius=8
+</pre></td></tr></table>
+
+</li></ul>
+
+<p><a name="haldclut"></a>
+</p><a name="haldclut-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-haldclut-1">37.37 haldclut</a></h2>
+
+<p>Apply a Hald CLUT to a video stream.
+</p>
+<p>First input is the video stream to process, and second one is the Hald CLUT.
+The Hald CLUT input can be a simple picture or a complete video stream.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>shortest</samp>&rsquo;</dt>
+<dd><p>Force termination when the shortest input terminates. Default is <code>0</code>.
+</p></dd>
+<dt> &lsquo;<samp>repeatlast</samp>&rsquo;</dt>
+<dd><p>Continue applying the last CLUT after the end of the stream. A value of
+<code>0</code> disable the filter after the last frame of the CLUT is reached.
+Default is <code>1</code>.
+</p></dd>
+</dl>
+
+<p><code>haldclut</code> also has the same interpolation options as <a href="#lut3d">lut3d</a> (both
+filters share the same internals).
+</p>
+<p>More information about the Hald CLUT can be found on Eskil Steenberg&rsquo;s website
+(Hald CLUT author) at <a href="http://www.quelsolaar.com/technology/clut.html">http://www.quelsolaar.com/technology/clut.html</a>.
+</p>
+<a name="Workflow-examples"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Workflow-examples">37.37.1 Workflow examples</a></h3>
+
+<a name="Hald-CLUT-video-stream"></a>
+<h4 class="subsubsection"><a href="ffmpeg-all.html#toc-Hald-CLUT-video-stream">37.37.1.1 Hald CLUT video stream</a></h4>
+
+<p>Generate an identity Hald CLUT stream altered with various effects:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f lavfi -i <a href="#haldclutsrc">haldclutsrc</a>=8 -vf &quot;hue=H=2*PI*t:s=sin(2*PI*t)+1, curves=cross_process&quot; -t 10 -c:v ffv1 clut.nut
+</pre></td></tr></table>
+
+<p>Note: make sure you use a lossless codec.
+</p>
+<p>Then use it with <code>haldclut</code> to apply it on some random stream:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
+</pre></td></tr></table>
+
+<p>The Hald CLUT will be applied to the 10 first seconds (duration of
+&lsquo;<tt>clut.nut</tt>&rsquo;), then the latest picture of that CLUT stream will be applied
+to the remaining frames of the <code>mandelbrot</code> stream.
+</p>
+<a name="Hald-CLUT-with-preview"></a>
+<h4 class="subsubsection"><a href="ffmpeg-all.html#toc-Hald-CLUT-with-preview">37.37.1.2 Hald CLUT with preview</a></h4>
+
+<p>A Hald CLUT is supposed to be a squared image of <code>Level*Level*Level</code> by
+<code>Level*Level*Level</code> pixels. For a given Hald CLUT, FFmpeg will select the
+biggest possible square starting at the top left of the picture. The remaining
+padding pixels (bottom or right) will be ignored. This area can be used to add
+a preview of the Hald CLUT.
+</p>
+<p>Typically, the following generated Hald CLUT will be supported by the
+<code>haldclut</code> filter:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f lavfi -i <a href="#haldclutsrc">haldclutsrc</a>=8 -vf &quot;
+   pad=iw+320 [padded_clut];
+   smptebars=s=320x256, split [a][b];
+   [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
+   [main][b] overlay=W-320&quot; -frames:v 1 clut.png
+</pre></td></tr></table>
+
+<p>It contains the original and a preview of the effect of the CLUT: SMPTE color
+bars are displayed on the right-top, and below the same color bars processed by
+the color changes.
+</p>
+<p>Then, the effect of this Hald CLUT can be visualized with:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay input.mkv -vf &quot;movie=clut.png, [in] haldclut&quot;
+</pre></td></tr></table>
+
+<a name="hflip"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-hflip">37.38 hflip</a></h2>
+
+<p>Flip the input video horizontally.
+</p>
+<p>For example to horizontally flip the input video with <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -vf &quot;hflip&quot; out.avi
+</pre></td></tr></table>
+
+<a name="histeq"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-histeq">37.39 histeq</a></h2>
+<p>This filter applies a global color histogram equalization on a
+per-frame basis.
+</p>
+<p>It can be used to correct video that has a compressed range of pixel
+intensities.  The filter redistributes the pixel intensities to
+equalize their distribution across the intensity range. It may be
+viewed as an &quot;automatically adjusting contrast filter&quot;. This filter is
+useful only for correcting degraded or poorly captured source
+video.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>strength</samp>&rsquo;</dt>
+<dd><p>Determine the amount of equalization to be applied.  As the strength
+is reduced, the distribution of pixel intensities more-and-more
+approaches that of the input frame. The value must be a float number
+in the range [0,1] and defaults to 0.200.
+</p>
+</dd>
+<dt> &lsquo;<samp>intensity</samp>&rsquo;</dt>
+<dd><p>Set the maximum intensity that can generated and scale the output
+values appropriately.  The strength should be set as desired and then
+the intensity can be limited if needed to avoid washing-out. The value
+must be a float number in the range [0,1] and defaults to 0.210.
+</p>
+</dd>
+<dt> &lsquo;<samp>antibanding</samp>&rsquo;</dt>
+<dd><p>Set the antibanding level. If enabled the filter will randomly vary
+the luminance of output pixels by a small amount to avoid banding of
+the histogram. Possible values are <code>none</code>, <code>weak</code> or
+<code>strong</code>. It defaults to <code>none</code>.
+</p></dd>
+</dl>
+
+<a name="histogram"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-histogram">37.40 histogram</a></h2>
+
+<p>Compute and draw a color distribution histogram for the input video.
+</p>
+<p>The computed histogram is a representation of distribution of color components
+in an image.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Set histogram mode.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>levels</samp>&rsquo;</dt>
+<dd><p>standard histogram that display color components distribution in an image.
+Displays color graph for each color component. Shows distribution
+of the Y, U, V, A or R, G, B components, depending on input format,
+in current frame. Bellow each graph is color component scale meter.
+</p>
+</dd>
+<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
+<dd><p>chroma values in vectorscope, if brighter more such chroma values are
+distributed in an image.
+Displays chroma values (U/V color placement) in two dimensional graph
+(which is called a vectorscope). It can be used to read of the hue and
+saturation of the current frame. At a same time it is a histogram.
+The whiter a pixel in the vectorscope, the more pixels of the input frame
+correspond to that pixel (that is the more pixels have this chroma value).
+The V component is displayed on the horizontal (X) axis, with the leftmost
+side being V = 0 and the rightmost side being V = 255.
+The U component is displayed on the vertical (Y) axis, with the top
+representing U = 0 and the bottom representing U = 255.
+</p>
+<p>The position of a white pixel in the graph corresponds to the chroma value
+of a pixel of the input clip. So the graph can be used to read of the
+hue (color flavor) and the saturation (the dominance of the hue in the color).
+As the hue of a color changes, it moves around the square. At the center of
+the square, the saturation is zero, which means that the corresponding pixel
+has no color. If you increase the amount of a specific color, while leaving
+the other colors unchanged, the saturation increases, and you move towards
+the edge of the square.
+</p>
+</dd>
+<dt> &lsquo;<samp>color2</samp>&rsquo;</dt>
+<dd><p>chroma values in vectorscope, similar as <code>color</code> but actual chroma values
+are displayed.
+</p>
+</dd>
+<dt> &lsquo;<samp>waveform</samp>&rsquo;</dt>
+<dd><p>per row/column color component graph. In row mode graph in the left side represents
+color component value 0 and right side represents value = 255. In column mode top
+side represents color component value = 0 and bottom side represents value = 255.
+</p></dd>
+</dl>
+<p>Default value is <code>levels</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>level_height</samp>&rsquo;</dt>
+<dd><p>Set height of level in <code>levels</code>. Default value is <code>200</code>.
+Allowed range is [50, 2048].
+</p>
+</dd>
+<dt> &lsquo;<samp>scale_height</samp>&rsquo;</dt>
+<dd><p>Set height of color scale in <code>levels</code>. Default value is <code>12</code>.
+Allowed range is [0, 40].
+</p>
+</dd>
+<dt> &lsquo;<samp>step</samp>&rsquo;</dt>
+<dd><p>Set step for <code>waveform</code> mode. Smaller values are useful to find out how much
+of same luminance values across input rows/columns are distributed.
+Default value is <code>10</code>. Allowed range is [1, 255].
+</p>
+</dd>
+<dt> &lsquo;<samp>waveform_mode</samp>&rsquo;</dt>
+<dd><p>Set mode for <code>waveform</code>. Can be either <code>row</code>, or <code>column</code>.
+Default is <code>row</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>waveform_mirror</samp>&rsquo;</dt>
+<dd><p>Set mirroring mode for <code>waveform</code>. <code>0</code> means unmirrored, <code>1</code>
+means mirrored. In mirrored mode, higher values will be represented on the left
+side for <code>row</code> mode and at the top for <code>column</code> mode. Default is
+<code>0</code> (unmirrored).
+</p>
+</dd>
+<dt> &lsquo;<samp>display_mode</samp>&rsquo;</dt>
+<dd><p>Set display mode for <code>waveform</code> and <code>levels</code>.
+It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>parade</samp>&rsquo;</dt>
+<dd><p>Display separate graph for the color components side by side in
+<code>row</code> waveform mode or one below other in <code>column</code> waveform mode
+for <code>waveform</code> histogram mode. For <code>levels</code> histogram mode
+per color component graphs are placed one bellow other.
+</p>
+<p>This display mode in <code>waveform</code> histogram mode makes it easy to spot
+color casts in the highlights and shadows of an image, by comparing the
+contours of the top and the bottom of each waveform.
+Since whites, grays, and blacks are characterized by
+exactly equal amounts of red, green, and blue, neutral areas of the
+picture should display three waveforms of roughly equal width/height.
+If not, the correction is easy to make by making adjustments to level the
+three waveforms.
+</p>
+</dd>
+<dt> &lsquo;<samp>overlay</samp>&rsquo;</dt>
+<dd><p>Presents information that&rsquo;s identical to that in the <code>parade</code>, except
+that the graphs representing color components are superimposed directly
+over one another.
+</p>
+<p>This display mode in <code>waveform</code> histogram mode can make it easier to spot
+the relative differences or similarities in overlapping areas of the color
+components that are supposed to be identical, such as neutral whites, grays,
+or blacks.
+</p></dd>
+</dl>
+<p>Default is <code>parade</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>levels_mode</samp>&rsquo;</dt>
+<dd><p>Set mode for <code>levels</code>. Can be either <code>linear</code>, or <code>logarithmic</code>.
+Default is <code>linear</code>.
+</p></dd>
+</dl>
+
+<a name="Examples-55"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-55">37.40.1 Examples</a></h3>
+
+<ul>
+<li>
+Calculate and draw histogram:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -i input -vf histogram
+</pre></td></tr></table>
+
+</li></ul>
+
+<p><a name="hqdn3d"></a>
+</p><a name="hqdn3d-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-hqdn3d-1">37.41 hqdn3d</a></h2>
+
+<p>High precision/quality 3d denoise filter. This filter aims to reduce
+image noise producing smooth images and making still images really
+still. It should enhance compressibility.
+</p>
+<p>It accepts the following optional parameters:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>luma_spatial</samp>&rsquo;</dt>
+<dd><p>a non-negative float number which specifies spatial luma strength,
+defaults to 4.0
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_spatial</samp>&rsquo;</dt>
+<dd><p>a non-negative float number which specifies spatial chroma strength,
+defaults to 3.0*<var>luma_spatial</var>/4.0
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_tmp</samp>&rsquo;</dt>
+<dd><p>a float number which specifies luma temporal strength, defaults to
+6.0*<var>luma_spatial</var>/4.0
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_tmp</samp>&rsquo;</dt>
+<dd><p>a float number which specifies chroma temporal strength, defaults to
+<var>luma_tmp</var>*<var>chroma_spatial</var>/<var>luma_spatial</var>
+</p></dd>
+</dl>
+
+<a name="hue"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-hue">37.42 hue</a></h2>
+
+<p>Modify the hue and/or the saturation of the input.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Specify the hue angle as a number of degrees. It accepts an expression,
+and defaults to &quot;0&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>Specify the saturation in the [-10,10] range. It accepts an expression and
+defaults to &quot;1&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>H</samp>&rsquo;</dt>
+<dd><p>Specify the hue angle as a number of radians. It accepts an
+expression, and defaults to &quot;0&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>Specify the brightness in the [-10,10] range. It accepts an expression and
+defaults to &quot;0&quot;.
+</p></dd>
+</dl>
+
+<p>&lsquo;<samp>h</samp>&rsquo; and &lsquo;<samp>H</samp>&rsquo; are mutually exclusive, and can&rsquo;t be
+specified at the same time.
+</p>
+<p>The &lsquo;<samp>b</samp>&rsquo;, &lsquo;<samp>h</samp>&rsquo;, &lsquo;<samp>H</samp>&rsquo; and &lsquo;<samp>s</samp>&rsquo; option values are
+expressions containing the following constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>frame count of the input frame starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
+<dd><p>presentation timestamp of the input frame expressed in time base units
+</p>
+</dd>
+<dt> &lsquo;<samp>r</samp>&rsquo;</dt>
+<dd><p>frame rate of the input video, NAN if the input frame rate is unknown
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>timestamp expressed in seconds, NAN if the input timestamp is unknown
+</p>
+</dd>
+<dt> &lsquo;<samp>tb</samp>&rsquo;</dt>
+<dd><p>time base of the input video
+</p></dd>
+</dl>
+
+<a name="Examples-66"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-66">37.42.1 Examples</a></h3>
+
+<ul>
+<li>
+Set the hue to 90 degrees and the saturation to 1.0:
+<table><tr><td>&nbsp;</td><td><pre class="example">hue=h=90:s=1
+</pre></td></tr></table>
+
+</li><li>
+Same command but expressing the hue in radians:
+<table><tr><td>&nbsp;</td><td><pre class="example">hue=H=PI/2:s=1
+</pre></td></tr></table>
+
+</li><li>
+Rotate hue and make the saturation swing between 0
+and 2 over a period of 1 second:
+<table><tr><td>&nbsp;</td><td><pre class="example">hue=&quot;H=2*PI*t: s=sin(2*PI*t)+1&quot;
+</pre></td></tr></table>
+
+</li><li>
+Apply a 3 seconds saturation fade-in effect starting at 0:
+<table><tr><td>&nbsp;</td><td><pre class="example">hue=&quot;s=min(t/3\,1)&quot;
+</pre></td></tr></table>
+
+<p>The general fade-in expression can be written as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">hue=&quot;s=min(0\, max((t-START)/DURATION\, 1))&quot;
+</pre></td></tr></table>
+
+</li><li>
+Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
+<table><tr><td>&nbsp;</td><td><pre class="example">hue=&quot;s=max(0\, min(1\, (8-t)/3))&quot;
+</pre></td></tr></table>
+
+<p>The general fade-out expression can be written as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">hue=&quot;s=max(0\, min(1\, (START+DURATION-t)/DURATION))&quot;
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="Commands"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Commands">37.42.2 Commands</a></h3>
+
+<p>This filter supports the following commands:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>H</samp>&rsquo;</dt>
+<dd><p>Modify the hue and/or the saturation and/or brightness of the input video.
+The command accepts the same syntax of the corresponding option.
+</p>
+<p>If the specified expression is not valid, it is kept at its current
+value.
+</p></dd>
+</dl>
+
+<a name="idet"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-idet">37.43 idet</a></h2>
+
+<p>Detect video interlacing type.
+</p>
+<p>This filter tries to detect if the input is interlaced or progressive,
+top or bottom field first.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>intl_thres</samp>&rsquo;</dt>
+<dd><p>Set interlacing threshold.
+</p></dd>
+<dt> &lsquo;<samp>prog_thres</samp>&rsquo;</dt>
+<dd><p>Set progressive threshold.
+</p></dd>
+</dl>
+
+<a name="il"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-il">37.44 il</a></h2>
+
+<p>Deinterleave or interleave fields.
+</p>
+<p>This filter allows to process interlaced images fields without
+deinterlacing them. Deinterleaving splits the input frame into 2
+fields (so called half pictures). Odd lines are moved to the top
+half of the output image, even lines to the bottom half.
+You can process (filter) them independently and then re-interleave them.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>luma_mode, l</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma_mode, c</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>alpha_mode, a</samp>&rsquo;</dt>
+<dd><p>Available values for <var>luma_mode</var>, <var>chroma_mode</var> and
+<var>alpha_mode</var> are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>Do nothing.
+</p>
+</dd>
+<dt> &lsquo;<samp>deinterleave, d</samp>&rsquo;</dt>
+<dd><p>Deinterleave fields, placing one above the other.
+</p>
+</dd>
+<dt> &lsquo;<samp>interleave, i</samp>&rsquo;</dt>
+<dd><p>Interleave fields. Reverse the effect of deinterleaving.
+</p></dd>
+</dl>
+<p>Default value is <code>none</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_swap, ls</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma_swap, cs</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>alpha_swap, as</samp>&rsquo;</dt>
+<dd><p>Swap luma/chroma/alpha fields. Exchange even &amp; odd lines. Default value is <code>0</code>.
+</p></dd>
+</dl>
+
+<a name="interlace"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-interlace">37.45 interlace</a></h2>
+
+<p>Simple interlacing filter from progressive contents. This interleaves upper (or
+lower) lines from odd frames with lower (or upper) lines from even frames,
+halving the frame rate and preserving image height.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">   Original        Original             New Frame
+   Frame 'j'      Frame 'j+1'             (tff)
+  ==========      ===========       ==================
+    Line 0  --------------------&gt;    Frame 'j' Line 0
+    Line 1          Line 1  ----&gt;   Frame 'j+1' Line 1
+    Line 2 ---------------------&gt;    Frame 'j' Line 2
+    Line 3          Line 3  ----&gt;   Frame 'j+1' Line 3
+     ...             ...                   ...
+New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
+</pre></td></tr></table>
+
+<p>It accepts the following optional parameters:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>scan</samp>&rsquo;</dt>
+<dd><p>determines whether the interlaced frame is taken from the even (tff - default)
+or odd (bff) lines of the progressive frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>lowpass</samp>&rsquo;</dt>
+<dd><p>Enable (default) or disable the vertical lowpass filter to avoid twitter
+interlacing and reduce moire patterns.
+</p></dd>
+</dl>
+
+<a name="kerndeint"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-kerndeint">37.46 kerndeint</a></h2>
+
+<p>Deinterlace input video by applying Donald Graft&rsquo;s adaptive kernel
+deinterling. Work on interlaced parts of a video to produce
+progressive frames.
+</p>
+<p>The description of the accepted parameters follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>thresh</samp>&rsquo;</dt>
+<dd><p>Set the threshold which affects the filter&rsquo;s tolerance when
+determining if a pixel line must be processed. It must be an integer
+in the range [0,255] and defaults to 10. A value of 0 will result in
+applying the process on every pixels.
+</p>
+</dd>
+<dt> &lsquo;<samp>map</samp>&rsquo;</dt>
+<dd><p>Paint pixels exceeding the threshold value to white if set to 1.
+Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>order</samp>&rsquo;</dt>
+<dd><p>Set the fields order. Swap fields if set to 1, leave fields alone if
+0. Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>sharp</samp>&rsquo;</dt>
+<dd><p>Enable additional sharpening if set to 1. Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>twoway</samp>&rsquo;</dt>
+<dd><p>Enable twoway sharpening if set to 1. Default is 0.
+</p></dd>
+</dl>
+
+<a name="Examples-48"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-48">37.46.1 Examples</a></h3>
+
+<ul>
+<li>
+Apply default values:
+<table><tr><td>&nbsp;</td><td><pre class="example">kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
+</pre></td></tr></table>
+
+</li><li>
+Enable additional sharpening:
+<table><tr><td>&nbsp;</td><td><pre class="example">kerndeint=sharp=1
+</pre></td></tr></table>
+
+</li><li>
+Paint processed pixels in white:
+<table><tr><td>&nbsp;</td><td><pre class="example">kerndeint=map=1
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="lut3d"></a>
+</p><a name="lut3d-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-lut3d-1">37.47 lut3d</a></h2>
+
+<p>Apply a 3D LUT to an input video.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>file</samp>&rsquo;</dt>
+<dd><p>Set the 3D LUT file name.
+</p>
+<p>Currently supported formats:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>3dl</samp>&rsquo;</dt>
+<dd><p>AfterEffects
+</p></dd>
+<dt> &lsquo;<samp>cube</samp>&rsquo;</dt>
+<dd><p>Iridas
+</p></dd>
+<dt> &lsquo;<samp>dat</samp>&rsquo;</dt>
+<dd><p>DaVinci
+</p></dd>
+<dt> &lsquo;<samp>m3d</samp>&rsquo;</dt>
+<dd><p>Pandora
+</p></dd>
+</dl>
+</dd>
+<dt> &lsquo;<samp>interp</samp>&rsquo;</dt>
+<dd><p>Select interpolation mode.
+</p>
+<p>Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>nearest</samp>&rsquo;</dt>
+<dd><p>Use values from the nearest defined point.
+</p></dd>
+<dt> &lsquo;<samp>trilinear</samp>&rsquo;</dt>
+<dd><p>Interpolate values using the 8 points defining a cube.
+</p></dd>
+<dt> &lsquo;<samp>tetrahedral</samp>&rsquo;</dt>
+<dd><p>Interpolate values using a tetrahedron.
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<a name="lut_002c-lutrgb_002c-lutyuv"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-lut_002c-lutrgb_002c-lutyuv">37.48 lut, lutrgb, lutyuv</a></h2>
+
+<p>Compute a look-up table for binding each pixel component input value
+to an output value, and apply it to input video.
+</p>
+<p><var>lutyuv</var> applies a lookup table to a YUV input video, <var>lutrgb</var>
+to an RGB input video.
+</p>
+<p>These filters accept the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>c0</samp>&rsquo;</dt>
+<dd><p>set first pixel component expression
+</p></dd>
+<dt> &lsquo;<samp>c1</samp>&rsquo;</dt>
+<dd><p>set second pixel component expression
+</p></dd>
+<dt> &lsquo;<samp>c2</samp>&rsquo;</dt>
+<dd><p>set third pixel component expression
+</p></dd>
+<dt> &lsquo;<samp>c3</samp>&rsquo;</dt>
+<dd><p>set fourth pixel component expression, corresponds to the alpha component
+</p>
+</dd>
+<dt> &lsquo;<samp>r</samp>&rsquo;</dt>
+<dd><p>set red component expression
+</p></dd>
+<dt> &lsquo;<samp>g</samp>&rsquo;</dt>
+<dd><p>set green component expression
+</p></dd>
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>set blue component expression
+</p></dd>
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>alpha component expression
+</p>
+</dd>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>set Y/luminance component expression
+</p></dd>
+<dt> &lsquo;<samp>u</samp>&rsquo;</dt>
+<dd><p>set U/Cb component expression
+</p></dd>
+<dt> &lsquo;<samp>v</samp>&rsquo;</dt>
+<dd><p>set V/Cr component expression
+</p></dd>
+</dl>
+
+<p>Each of them specifies the expression to use for computing the lookup table for
+the corresponding pixel component values.
+</p>
+<p>The exact component associated to each of the <var>c*</var> options depends on the
+format in input.
+</p>
+<p>The <var>lut</var> filter requires either YUV or RGB pixel formats in input,
+<var>lutrgb</var> requires RGB pixel formats in input, and <var>lutyuv</var> requires YUV.
+</p>
+<p>The expressions can contain the following constants and functions:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>the input width and height
+</p>
+</dd>
+<dt> &lsquo;<samp>val</samp>&rsquo;</dt>
+<dd><p>input value for the pixel component
+</p>
+</dd>
+<dt> &lsquo;<samp>clipval</samp>&rsquo;</dt>
+<dd><p>the input value clipped in the <var>minval</var>-<var>maxval</var> range
+</p>
+</dd>
+<dt> &lsquo;<samp>maxval</samp>&rsquo;</dt>
+<dd><p>maximum value for the pixel component
+</p>
+</dd>
+<dt> &lsquo;<samp>minval</samp>&rsquo;</dt>
+<dd><p>minimum value for the pixel component
+</p>
+</dd>
+<dt> &lsquo;<samp>negval</samp>&rsquo;</dt>
+<dd><p>the negated value for the pixel component value clipped in the
+<var>minval</var>-<var>maxval</var> range , it corresponds to the expression
+&quot;maxval-clipval+minval&quot;
+</p>
+</dd>
+<dt> &lsquo;<samp>clip(val)</samp>&rsquo;</dt>
+<dd><p>the computed value in <var>val</var> clipped in the
+<var>minval</var>-<var>maxval</var> range
+</p>
+</dd>
+<dt> &lsquo;<samp>gammaval(gamma)</samp>&rsquo;</dt>
+<dd><p>the computed gamma correction value of the pixel component value
+clipped in the <var>minval</var>-<var>maxval</var> range, corresponds to the
+expression
+&quot;pow((clipval-minval)/(maxval-minval)\,<var>gamma</var>)*(maxval-minval)+minval&quot;
+</p>
+</dd>
+</dl>
+
+<p>All expressions default to &quot;val&quot;.
+</p>
+<a name="Examples-10"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-10">37.48.1 Examples</a></h3>
+
+<ul>
+<li>
+Negate input video:
+<table><tr><td>&nbsp;</td><td><pre class="example">lutrgb=&quot;r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val&quot;
+lutyuv=&quot;y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val&quot;
+</pre></td></tr></table>
+
+<p>The above is the same as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">lutrgb=&quot;r=negval:g=negval:b=negval&quot;
+lutyuv=&quot;y=negval:u=negval:v=negval&quot;
+</pre></td></tr></table>
+
+</li><li>
+Negate luminance:
+<table><tr><td>&nbsp;</td><td><pre class="example">lutyuv=y=negval
+</pre></td></tr></table>
+
+</li><li>
+Remove chroma components, turns the video into a graytone image:
+<table><tr><td>&nbsp;</td><td><pre class="example">lutyuv=&quot;u=128:v=128&quot;
+</pre></td></tr></table>
+
+</li><li>
+Apply a luma burning effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">lutyuv=&quot;y=2*val&quot;
+</pre></td></tr></table>
+
+</li><li>
+Remove green and blue components:
+<table><tr><td>&nbsp;</td><td><pre class="example">lutrgb=&quot;g=0:b=0&quot;
+</pre></td></tr></table>
+
+</li><li>
+Set a constant alpha channel value on input:
+<table><tr><td>&nbsp;</td><td><pre class="example">format=rgba,lutrgb=a=&quot;maxval-minval/2&quot;
+</pre></td></tr></table>
+
+</li><li>
+Correct luminance gamma by a 0.5 factor:
+<table><tr><td>&nbsp;</td><td><pre class="example">lutyuv=y=gammaval(0.5)
+</pre></td></tr></table>
+
+</li><li>
+Discard least significant bits of luma:
+<table><tr><td>&nbsp;</td><td><pre class="example">lutyuv=y='bitand(val, 128+64+32)'
+</pre></td></tr></table>
+</li></ul>
+
+<a name="mergeplanes"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-mergeplanes">37.49 mergeplanes</a></h2>
+
+<p>Merge color channel components from several video streams.
+</p>
+<p>The filter accepts up to 4 input streams, and merge selected input
+planes to the output video.
+</p>
+<p>This filter accepts the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>mapping</samp>&rsquo;</dt>
+<dd><p>Set input to output plane mapping. Default is <code>0</code>.
+</p>
+<p>The mappings is specified as a bitmap. It should be specified as a
+hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. &rsquo;Aa&rsquo; describes the
+mapping for the first plane of the output stream. &rsquo;A&rsquo; sets the number of
+the input stream to use (from 0 to 3), and &rsquo;a&rsquo; the plane number of the
+corresponding input to use (from 0 to 3). The rest of the mappings is
+similar, &rsquo;Bb&rsquo; describes the mapping for the output stream second
+plane, &rsquo;Cc&rsquo; describes the mapping for the output stream third plane and
+&rsquo;Dd&rsquo; describes the mapping for the output stream fourth plane.
+</p>
+</dd>
+<dt> &lsquo;<samp>format</samp>&rsquo;</dt>
+<dd><p>Set output pixel format. Default is <code>yuva444p</code>.
+</p></dd>
+</dl>
+
+<a name="Examples-71"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-71">37.49.1 Examples</a></h3>
+
+<ul>
+<li>
+Merge three gray video streams of same width and height into single video stream:
+<table><tr><td>&nbsp;</td><td><pre class="example">[a0][a1][a2]mergeplanes=0x001020:yuv444p
+</pre></td></tr></table>
+
+</li><li>
+Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
+<table><tr><td>&nbsp;</td><td><pre class="example">[a0][a1]mergeplanes=0x00010210:yuva444p
+</pre></td></tr></table>
+
+</li><li>
+Swap Y and A plane in yuva444p stream:
+<table><tr><td>&nbsp;</td><td><pre class="example">format=yuva444p,mergeplanes=0x03010200:yuva444p
+</pre></td></tr></table>
+
+</li><li>
+Swap U and V plane in yuv420p stream:
+<table><tr><td>&nbsp;</td><td><pre class="example">format=yuv420p,mergeplanes=0x000201:yuv420p
+</pre></td></tr></table>
+
+</li><li>
+Cast a rgb24 clip to yuv444p:
+<table><tr><td>&nbsp;</td><td><pre class="example">format=rgb24,mergeplanes=0x000102:yuv444p
+</pre></td></tr></table>
+</li></ul>
+
+<a name="mcdeint"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-mcdeint">37.50 mcdeint</a></h2>
+
+<p>Apply motion-compensation deinterlacing.
+</p>
+<p>It needs one field per frame as input and must thus be used together
+with yadif=1/3 or equivalent.
+</p>
+<p>This filter accepts the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Set the deinterlacing mode.
+</p>
+<p>It accepts one of the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>fast</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>medium</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>slow</samp>&rsquo;</dt>
+<dd><p>use iterative motion estimation
+</p></dd>
+<dt> &lsquo;<samp>extra_slow</samp>&rsquo;</dt>
+<dd><p>like &lsquo;<samp>slow</samp>&rsquo;, but use multiple reference frames.
+</p></dd>
+</dl>
+<p>Default value is &lsquo;<samp>fast</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>parity</samp>&rsquo;</dt>
+<dd><p>Set the picture field parity assumed for the input video. It must be
+one of the following values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>0, tff</samp>&rsquo;</dt>
+<dd><p>assume top field first
+</p></dd>
+<dt> &lsquo;<samp>1, bff</samp>&rsquo;</dt>
+<dd><p>assume bottom field first
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>bff</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>qp</samp>&rsquo;</dt>
+<dd><p>Set per-block quantization parameter (QP) used by the internal
+encoder.
+</p>
+<p>Higher values should result in a smoother motion vector field but less
+optimal individual vectors. Default value is 1.
+</p></dd>
+</dl>
+
+<a name="mp"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-mp">37.51 mp</a></h2>
+
+<p>Apply an MPlayer filter to the input video.
+</p>
+<p>This filter provides a wrapper around some of the filters of
+MPlayer/MEncoder.
+</p>
+<p>This wrapper is considered experimental. Some of the wrapped filters
+may not work properly and we may drop support for them, as they will
+be implemented natively into FFmpeg. Thus you should avoid
+depending on them when writing portable scripts.
+</p>
+<p>The filter accepts the parameters:
+<var>filter_name</var>[:=]<var>filter_params</var>
+</p>
+<p><var>filter_name</var> is the name of a supported MPlayer filter,
+<var>filter_params</var> is a string containing the parameters accepted by
+the named filter.
+</p>
+<p>The list of the currently supported filters follows:
+</p><dl compact="compact">
+<dt> <var>eq2</var></dt>
+<dt> <var>eq</var></dt>
+<dt> <var>fspp</var></dt>
+<dt> <var>ilpack</var></dt>
+<dt> <var>pp7</var></dt>
+<dt> <var>softpulldown</var></dt>
+<dt> <var>uspp</var></dt>
+</dl>
+
+<p>The parameter syntax and behavior for the listed filters are the same
+of the corresponding MPlayer filters. For detailed instructions check
+the &quot;VIDEO FILTERS&quot; section in the MPlayer manual.
+</p>
+<a name="Examples-68"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-68">37.51.1 Examples</a></h3>
+
+<ul>
+<li>
+Adjust gamma, brightness, contrast:
+<table><tr><td>&nbsp;</td><td><pre class="example">mp=eq2=1.0:2:0.5
+</pre></td></tr></table>
+</li></ul>
+
+<p>See also mplayer(1), <a href="http://www.mplayerhq.hu/">http://www.mplayerhq.hu/</a>.
+</p>
+<a name="mpdecimate"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-mpdecimate">37.52 mpdecimate</a></h2>
+
+<p>Drop frames that do not differ greatly from the previous frame in
+order to reduce frame rate.
+</p>
+<p>The main use of this filter is for very-low-bitrate encoding
+(e.g. streaming over dialup modem), but it could in theory be used for
+fixing movies that were inverse-telecined incorrectly.
+</p>
+<p>A description of the accepted options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>max</samp>&rsquo;</dt>
+<dd><p>Set the maximum number of consecutive frames which can be dropped (if
+positive), or the minimum interval between dropped frames (if
+negative). If the value is 0, the frame is dropped unregarding the
+number of previous sequentially dropped frames.
+</p>
+<p>Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>hi</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>lo</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>frac</samp>&rsquo;</dt>
+<dd><p>Set the dropping threshold values.
+</p>
+<p>Values for &lsquo;<samp>hi</samp>&rsquo; and &lsquo;<samp>lo</samp>&rsquo; are for 8x8 pixel blocks and
+represent actual pixel value differences, so a threshold of 64
+corresponds to 1 unit of difference for each pixel, or the same spread
+out differently over the block.
+</p>
+<p>A frame is a candidate for dropping if no 8x8 blocks differ by more
+than a threshold of &lsquo;<samp>hi</samp>&rsquo;, and if no more than &lsquo;<samp>frac</samp>&rsquo; blocks (1
+meaning the whole image) differ by more than a threshold of &lsquo;<samp>lo</samp>&rsquo;.
+</p>
+<p>Default value for &lsquo;<samp>hi</samp>&rsquo; is 64*12, default value for &lsquo;<samp>lo</samp>&rsquo; is
+64*5, and default value for &lsquo;<samp>frac</samp>&rsquo; is 0.33.
+</p></dd>
+</dl>
+
+
+<a name="negate"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-negate">37.53 negate</a></h2>
+
+<p>Negate input video.
+</p>
+<p>This filter accepts an integer in input, if non-zero it negates the
+alpha component (if available). The default value in input is 0.
+</p>
+<a name="noformat"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-noformat">37.54 noformat</a></h2>
+
+<p>Force libavfilter not to use any of the specified pixel formats for the
+input to the next filter.
+</p>
+<p>This filter accepts the following parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>pix_fmts</samp>&rsquo;</dt>
+<dd><p>A &rsquo;|&rsquo;-separated list of pixel format names, for example
+&quot;pix_fmts=yuv420p|monow|rgb24&quot;.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-9"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-9">37.54.1 Examples</a></h3>
+
+<ul>
+<li>
+Force libavfilter to use a format different from <var>yuv420p</var> for the
+input to the vflip filter:
+<table><tr><td>&nbsp;</td><td><pre class="example">noformat=pix_fmts=yuv420p,vflip
+</pre></td></tr></table>
+
+</li><li>
+Convert the input video to any of the formats not contained in the list:
+<table><tr><td>&nbsp;</td><td><pre class="example">noformat=yuv420p|yuv444p|yuv410p
+</pre></td></tr></table>
+</li></ul>
+
+<a name="noise"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-noise">37.55 noise</a></h2>
+
+<p>Add noise on video input frame.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>all_seed</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c0_seed</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c1_seed</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c2_seed</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c3_seed</samp>&rsquo;</dt>
+<dd><p>Set noise seed for specific pixel component or all pixel components in case
+of <var>all_seed</var>. Default value is <code>123457</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>all_strength, alls</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c0_strength, c0s</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c1_strength, c1s</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c2_strength, c2s</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c3_strength, c3s</samp>&rsquo;</dt>
+<dd><p>Set noise strength for specific pixel component or all pixel components in case
+<var>all_strength</var>. Default value is <code>0</code>. Allowed range is [0, 100].
+</p>
+</dd>
+<dt> &lsquo;<samp>all_flags, allf</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c0_flags, c0f</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c1_flags, c1f</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c2_flags, c2f</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c3_flags, c3f</samp>&rsquo;</dt>
+<dd><p>Set pixel component flags or set flags for all components if <var>all_flags</var>.
+Available values for component flags are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>averaged temporal noise (smoother)
+</p></dd>
+<dt> &lsquo;<samp>p</samp>&rsquo;</dt>
+<dd><p>mix random noise with a (semi)regular pattern
+</p></dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>temporal noise (noise pattern changes between frames)
+</p></dd>
+<dt> &lsquo;<samp>u</samp>&rsquo;</dt>
+<dd><p>uniform noise (gaussian otherwise)
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<a name="Examples-86"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-86">37.55.1 Examples</a></h3>
+
+<p>Add temporal and uniform noise to input video:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">noise=alls=20:allf=t+u
+</pre></td></tr></table>
+
+<a name="null"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-null">37.56 null</a></h2>
+
+<p>Pass the video source unchanged to the output.
+</p>
+<a name="ocv"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-ocv">37.57 ocv</a></h2>
+
+<p>Apply video transform using libopencv.
+</p>
+<p>To enable this filter install libopencv library and headers and
+configure FFmpeg with <code>--enable-libopencv</code>.
+</p>
+<p>This filter accepts the following parameters:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filter_name</samp>&rsquo;</dt>
+<dd><p>The name of the libopencv filter to apply.
+</p>
+</dd>
+<dt> &lsquo;<samp>filter_params</samp>&rsquo;</dt>
+<dd><p>The parameters to pass to the libopencv filter. If not specified the default
+values are assumed.
+</p>
+</dd>
+</dl>
+
+<p>Refer to the official libopencv documentation for more precise
+information:
+<a href="http://opencv.willowgarage.com/documentation/c/image_filtering.html">http://opencv.willowgarage.com/documentation/c/image_filtering.html</a>
+</p>
+<p>Follows the list of supported libopencv filters.
+</p>
+<p><a name="dilate"></a>
+</p><a name="dilate-1"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-dilate-1">37.57.1 dilate</a></h3>
+
+<p>Dilate an image by using a specific structuring element.
+This filter corresponds to the libopencv function <code>cvDilate</code>.
+</p>
+<p>It accepts the parameters: <var>struct_el</var>|<var>nb_iterations</var>.
+</p>
+<p><var>struct_el</var> represents a structuring element, and has the syntax:
+<var>cols</var>x<var>rows</var>+<var>anchor_x</var>x<var>anchor_y</var>/<var>shape</var>
+</p>
+<p><var>cols</var> and <var>rows</var> represent the number of columns and rows of
+the structuring element, <var>anchor_x</var> and <var>anchor_y</var> the anchor
+point, and <var>shape</var> the shape for the structuring element, and
+can be one of the values &quot;rect&quot;, &quot;cross&quot;, &quot;ellipse&quot;, &quot;custom&quot;.
+</p>
+<p>If the value for <var>shape</var> is &quot;custom&quot;, it must be followed by a
+string of the form &quot;=<var>filename</var>&quot;. The file with name
+<var>filename</var> is assumed to represent a binary image, with each
+printable character corresponding to a bright pixel. When a custom
+<var>shape</var> is used, <var>cols</var> and <var>rows</var> are ignored, the number
+or columns and rows of the read file are assumed instead.
+</p>
+<p>The default value for <var>struct_el</var> is &quot;3x3+0x0/rect&quot;.
+</p>
+<p><var>nb_iterations</var> specifies the number of times the transform is
+applied to the image, and defaults to 1.
+</p>
+<p>Follow some example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"># use the default values
+ocv=dilate
+
+# dilate using a structuring element with a 5x5 cross, iterate two times
+ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
+
+# read the shape from the file diamond.shape, iterate two times
+# the file diamond.shape may contain a pattern of characters like this:
+#   *
+#  ***
+# *****
+#  ***
+#   *
+# the specified cols and rows are ignored (but not the anchor point coordinates)
+ocv=dilate:0x0+2x2/custom=diamond.shape|2
+</pre></td></tr></table>
+
+<a name="erode"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-erode">37.57.2 erode</a></h3>
+
+<p>Erode an image by using a specific structuring element.
+This filter corresponds to the libopencv function <code>cvErode</code>.
+</p>
+<p>The filter accepts the parameters: <var>struct_el</var>:<var>nb_iterations</var>,
+with the same syntax and semantics as the <a href="#dilate">dilate</a> filter.
+</p>
+<a name="smooth"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-smooth">37.57.3 smooth</a></h3>
+
+<p>Smooth the input video.
+</p>
+<p>The filter takes the following parameters:
+<var>type</var>|<var>param1</var>|<var>param2</var>|<var>param3</var>|<var>param4</var>.
+</p>
+<p><var>type</var> is the type of smooth filter to apply, and can be one of
+the following values: &quot;blur&quot;, &quot;blur_no_scale&quot;, &quot;median&quot;, &quot;gaussian&quot;,
+&quot;bilateral&quot;. The default value is &quot;gaussian&quot;.
+</p>
+<p><var>param1</var>, <var>param2</var>, <var>param3</var>, and <var>param4</var> are
+parameters whose meanings depend on smooth type. <var>param1</var> and
+<var>param2</var> accept integer positive values or 0, <var>param3</var> and
+<var>param4</var> accept float values.
+</p>
+<p>The default value for <var>param1</var> is 3, the default value for the
+other parameters is 0.
+</p>
+<p>These parameters correspond to the parameters assigned to the
+libopencv function <code>cvSmooth</code>.
+</p>
+<p><a name="overlay"></a>
+</p><a name="overlay-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-overlay-1">37.58 overlay</a></h2>
+
+<p>Overlay one video on top of another.
+</p>
+<p>It takes two inputs and one output, the first input is the &quot;main&quot;
+video on which the second input is overlayed.
+</p>
+<p>This filter accepts the following parameters:
+</p>
+<p>A description of the accepted options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>Set the expression for the x and y coordinates of the overlayed video
+on the main video. Default value is &quot;0&quot; for both expressions. In case
+the expression is invalid, it is set to a huge value (meaning that the
+overlay will not be displayed within the output visible area).
+</p>
+</dd>
+<dt> &lsquo;<samp>eval</samp>&rsquo;</dt>
+<dd><p>Set when the expressions for &lsquo;<samp>x</samp>&rsquo;, and &lsquo;<samp>y</samp>&rsquo; are evaluated.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>init</samp>&rsquo;</dt>
+<dd><p>only evaluate expressions once during the filter initialization or
+when a command is processed
+</p>
+</dd>
+<dt> &lsquo;<samp>frame</samp>&rsquo;</dt>
+<dd><p>evaluate expressions for each incoming frame
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>frame</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>shortest</samp>&rsquo;</dt>
+<dd><p>If set to 1, force the output to terminate when the shortest input
+terminates. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>format</samp>&rsquo;</dt>
+<dd><p>Set the format for the output video.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>yuv420</samp>&rsquo;</dt>
+<dd><p>force YUV420 output
+</p>
+</dd>
+<dt> &lsquo;<samp>yuv444</samp>&rsquo;</dt>
+<dd><p>force YUV444 output
+</p>
+</dd>
+<dt> &lsquo;<samp>rgb</samp>&rsquo;</dt>
+<dd><p>force RGB output
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>yuv420</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>rgb <em>(deprecated)</em></samp>&rsquo;</dt>
+<dd><p>If set to 1, force the filter to accept inputs in the RGB
+color space. Default value is 0. This option is deprecated, use
+&lsquo;<samp>format</samp>&rsquo; instead.
+</p>
+</dd>
+<dt> &lsquo;<samp>repeatlast</samp>&rsquo;</dt>
+<dd><p>If set to 1, force the filter to draw the last overlay frame over the
+main input until the end of the stream. A value of 0 disables this
+behavior. Default value is 1.
+</p></dd>
+</dl>
+
+<p>The &lsquo;<samp>x</samp>&rsquo;, and &lsquo;<samp>y</samp>&rsquo; expressions can contain the following
+parameters.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>main_w, W</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>main_h, H</samp>&rsquo;</dt>
+<dd><p>main input width and height
+</p>
+</dd>
+<dt> &lsquo;<samp>overlay_w, w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>overlay_h, h</samp>&rsquo;</dt>
+<dd><p>overlay input width and height
+</p>
+</dd>
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>the computed values for <var>x</var> and <var>y</var>. They are evaluated for
+each new frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values of the output
+format. For example for the pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and
+<var>vsub</var> is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>the number of input frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
+<dd><p>the position in the file of the input frame, NAN if unknown
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>timestamp expressed in seconds, NAN if the input timestamp is unknown
+</p></dd>
+</dl>
+
+<p>Note that the <var>n</var>, <var>pos</var>, <var>t</var> variables are available only
+when evaluation is done <em>per frame</em>, and will evaluate to NAN
+when &lsquo;<samp>eval</samp>&rsquo; is set to &lsquo;<samp>init</samp>&rsquo;.
+</p>
+<p>Be aware that frames are taken from each input video in timestamp
+order, hence, if their initial timestamps differ, it is a good idea
+to pass the two inputs through a <var>setpts=PTS-STARTPTS</var> filter to
+have them begin in the same zero timestamp, as it does the example for
+the <var>movie</var> filter.
+</p>
+<p>You can chain together more overlays but you should test the
+efficiency of such approach.
+</p>
+<a name="Commands-2"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Commands-2">37.58.1 Commands</a></h3>
+
+<p>This filter supports the following commands:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>Modify the x and y of the overlay input.
+The command accepts the same syntax of the corresponding option.
+</p>
+<p>If the specified expression is not valid, it is kept at its current
+value.
+</p></dd>
+</dl>
+
+<a name="Examples-82"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-82">37.58.2 Examples</a></h3>
+
+<ul>
+<li>
+Draw the overlay at 10 pixels from the bottom right corner of the main
+video:
+<table><tr><td>&nbsp;</td><td><pre class="example">overlay=main_w-overlay_w-10:main_h-overlay_h-10
+</pre></td></tr></table>
+
+<p>Using named options the example above becomes:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
+</pre></td></tr></table>
+
+</li><li>
+Insert a transparent PNG logo in the bottom left corner of the input,
+using the <code>ffmpeg</code> tool with the <code>-filter_complex</code> option:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
+</pre></td></tr></table>
+
+</li><li>
+Insert 2 different transparent PNG logos (second logo on bottom
+right corner) using the <code>ffmpeg</code> tool:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input -i logo1 -i logo2 -filter_complex 'overlay=x=10:y=H-h-10,overlay=x=W-w-10:y=H-h-10' output
+</pre></td></tr></table>
+
+</li><li>
+Add a transparent color layer on top of the main video, <code>WxH</code>
+must specify the size of the main input to the overlay filter:
+<table><tr><td>&nbsp;</td><td><pre class="example">color=color=red@.3:size=WxH [over]; [in][over] overlay [out]
+</pre></td></tr></table>
+
+</li><li>
+Play an original video and a filtered version (here with the deshake
+filter) side by side using the <code>ffplay</code> tool:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
+</pre></td></tr></table>
+
+<p>The above command is the same as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
+</pre></td></tr></table>
+
+</li><li>
+Make a sliding overlay appearing from the left to the right top part of the
+screen starting since time 2:
+<table><tr><td>&nbsp;</td><td><pre class="example">overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
+</pre></td></tr></table>
+
+</li><li>
+Compose output by putting two input videos side to side:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i left.avi -i right.avi -filter_complex &quot;
+nullsrc=size=200x100 [background];
+[0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
+[1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
+[background][left]       overlay=shortest=1       [background+left];
+[background+left][right] overlay=shortest=1:x=100 [left+right]
+&quot;
+</pre></td></tr></table>
+
+</li><li>
+Chain several overlays in cascade:
+<table><tr><td>&nbsp;</td><td><pre class="example">nullsrc=s=200x200 [bg];
+testsrc=s=100x100, split=4 [in0][in1][in2][in3];
+[in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
+[in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
+[in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
+[in3] null,       [mid2] overlay=100:100 [out0]
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="owdenoise"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-owdenoise">37.59 owdenoise</a></h2>
+
+<p>Apply Overcomplete Wavelet denoiser.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>depth</samp>&rsquo;</dt>
+<dd><p>Set depth.
+</p>
+<p>Larger depth values will denoise lower frequency components more, but
+slow down filtering.
+</p>
+<p>Must be an int in the range 8-16, default is <code>8</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_strength, ls</samp>&rsquo;</dt>
+<dd><p>Set luma strength.
+</p>
+<p>Must be a double value in the range 0-1000, default is <code>1.0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_strength, cs</samp>&rsquo;</dt>
+<dd><p>Set chroma strength.
+</p>
+<p>Must be a double value in the range 0-1000, default is <code>1.0</code>.
+</p></dd>
+</dl>
+
+<a name="pad"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-pad">37.60 pad</a></h2>
+
+<p>Add paddings to the input image, and place the original input at the
+given coordinates <var>x</var>, <var>y</var>.
+</p>
+<p>This filter accepts the following parameters:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>height, h</samp>&rsquo;</dt>
+<dd><p>Specify an expression for the size of the output image with the
+paddings added. If the value for <var>width</var> or <var>height</var> is 0, the
+corresponding input size is used for the output.
+</p>
+<p>The <var>width</var> expression can reference the value set by the
+<var>height</var> expression, and vice versa.
+</p>
+<p>The default value of <var>width</var> and <var>height</var> is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>Specify an expression for the offsets where to place the input image
+in the padded area with respect to the top/left border of the output
+image.
+</p>
+<p>The <var>x</var> expression can reference the value set by the <var>y</var>
+expression, and vice versa.
+</p>
+<p>The default value of <var>x</var> and <var>y</var> is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
+<dd><p>Specify the color of the padded area. For the syntax of this option,
+check the &quot;Color&quot; section in the ffmpeg-utils manual.
+</p>
+<p>The default value of <var>color</var> is &quot;black&quot;.
+</p></dd>
+</dl>
+
+<p>The value for the <var>width</var>, <var>height</var>, <var>x</var>, and <var>y</var>
+options are expressions containing the following constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>in_w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>in_h</samp>&rsquo;</dt>
+<dd><p>the input video width and height
+</p>
+</dd>
+<dt> &lsquo;<samp>iw</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ih</samp>&rsquo;</dt>
+<dd><p>same as <var>in_w</var> and <var>in_h</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>out_w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>out_h</samp>&rsquo;</dt>
+<dd><p>the output width and height, that is the size of the padded area as
+specified by the <var>width</var> and <var>height</var> expressions
+</p>
+</dd>
+<dt> &lsquo;<samp>ow</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>oh</samp>&rsquo;</dt>
+<dd><p>same as <var>out_w</var> and <var>out_h</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>x and y offsets as specified by the <var>x</var> and <var>y</var>
+expressions, or NAN if not yet specified
+</p>
+</dd>
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>same as <var>iw</var> / <var>ih</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
+<dd><p>input sample aspect ratio
+</p>
+</dd>
+<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
+<dd><p>input display aspect ratio, it is the same as (<var>iw</var> / <var>ih</var>) * <var>sar</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p></dd>
+</dl>
+
+<a name="Examples-87"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-87">37.60.1 Examples</a></h3>
+
+<ul>
+<li>
+Add paddings with color &quot;violet&quot; to the input video. Output video
+size is 640x480, the top-left corner of the input video is placed at
+column 0, row 40:
+<table><tr><td>&nbsp;</td><td><pre class="example">pad=640:480:0:40:violet
+</pre></td></tr></table>
+
+<p>The example above is equivalent to the following command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pad=width=640:height=480:x=0:y=40:color=violet
+</pre></td></tr></table>
+
+</li><li>
+Pad the input to get an output with dimensions increased by 3/2,
+and put the input video at the center of the padded area:
+<table><tr><td>&nbsp;</td><td><pre class="example">pad=&quot;3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2&quot;
+</pre></td></tr></table>
+
+</li><li>
+Pad the input to get a squared output with size equal to the maximum
+value between the input width and height, and put the input video at
+the center of the padded area:
+<table><tr><td>&nbsp;</td><td><pre class="example">pad=&quot;max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2&quot;
+</pre></td></tr></table>
+
+</li><li>
+Pad the input to get a final w/h ratio of 16:9:
+<table><tr><td>&nbsp;</td><td><pre class="example">pad=&quot;ih*16/9:ih:(ow-iw)/2:(oh-ih)/2&quot;
+</pre></td></tr></table>
+
+</li><li>
+In case of anamorphic video, in order to set the output display aspect
+correctly, it is necessary to use <var>sar</var> in the expression,
+according to the relation:
+<table><tr><td>&nbsp;</td><td><pre class="example">(ih * X / ih) * sar = output_dar
+X = output_dar / sar
+</pre></td></tr></table>
+
+<p>Thus the previous example needs to be modified to:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pad=&quot;ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2&quot;
+</pre></td></tr></table>
+
+</li><li>
+Double output size and put the input video in the bottom-right
+corner of the output padded area:
+<table><tr><td>&nbsp;</td><td><pre class="example">pad=&quot;2*iw:2*ih:ow-iw:oh-ih&quot;
+</pre></td></tr></table>
+</li></ul>
+
+<a name="perspective"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-perspective">37.61 perspective</a></h2>
+
+<p>Correct perspective of video not recorded perpendicular to the screen.
+</p>
+<p>A description of the accepted parameters follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>x0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>x1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>x2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>x3</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y3</samp>&rsquo;</dt>
+<dd><p>Set coordinates expression for top left, top right, bottom left and bottom right corners.
+Default values are <code>0:0:W:0:0:H:W:H</code> with which perspective will remain unchanged.
+</p>
+<p>The expressions can use the following variables:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>W</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>H</samp>&rsquo;</dt>
+<dd><p>the width and height of video frame.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>interpolation</samp>&rsquo;</dt>
+<dd><p>Set interpolation for perspective correction.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>linear</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>cubic</samp>&rsquo;</dt>
+</dl>
+
+<p>Default value is &lsquo;<samp>linear</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<a name="phase"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-phase">37.62 phase</a></h2>
+
+<p>Delay interlaced video by one field time so that the field order changes.
+</p>
+<p>The intended use is to fix PAL movies that have been captured with the
+opposite field order to the film-to-video transfer.
+</p>
+<p>A description of the accepted parameters follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Set phase mode.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>Capture field order top-first, transfer bottom-first.
+Filter will delay the bottom field.
+</p>
+</dd>
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>Capture field order bottom-first, transfer top-first.
+Filter will delay the top field.
+</p>
+</dd>
+<dt> &lsquo;<samp>p</samp>&rsquo;</dt>
+<dd><p>Capture and transfer with the same field order. This mode only exists
+for the documentation of the other options to refer to, but if you
+actually select it, the filter will faithfully do nothing.
+</p>
+</dd>
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>Capture field order determined automatically by field flags, transfer
+opposite.
+Filter selects among &lsquo;<samp>t</samp>&rsquo; and &lsquo;<samp>b</samp>&rsquo; modes on a frame by frame
+basis using field flags. If no field information is available,
+then this works just like &lsquo;<samp>u</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>u</samp>&rsquo;</dt>
+<dd><p>Capture unknown or varying, transfer opposite.
+Filter selects among &lsquo;<samp>t</samp>&rsquo; and &lsquo;<samp>b</samp>&rsquo; on a frame by frame basis by
+analyzing the images and selecting the alternative that produces best
+match between the fields.
+</p>
+</dd>
+<dt> &lsquo;<samp>T</samp>&rsquo;</dt>
+<dd><p>Capture top-first, transfer unknown or varying.
+Filter selects among &lsquo;<samp>t</samp>&rsquo; and &lsquo;<samp>p</samp>&rsquo; using image analysis.
+</p>
+</dd>
+<dt> &lsquo;<samp>B</samp>&rsquo;</dt>
+<dd><p>Capture bottom-first, transfer unknown or varying.
+Filter selects among &lsquo;<samp>b</samp>&rsquo; and &lsquo;<samp>p</samp>&rsquo; using image analysis.
+</p>
+</dd>
+<dt> &lsquo;<samp>A</samp>&rsquo;</dt>
+<dd><p>Capture determined by field flags, transfer unknown or varying.
+Filter selects among &lsquo;<samp>t</samp>&rsquo;, &lsquo;<samp>b</samp>&rsquo; and &lsquo;<samp>p</samp>&rsquo; using field flags and
+image analysis. If no field information is available, then this works just
+like &lsquo;<samp>U</samp>&rsquo;. This is the default mode.
+</p>
+</dd>
+<dt> &lsquo;<samp>U</samp>&rsquo;</dt>
+<dd><p>Both capture and transfer unknown or varying.
+Filter selects among &lsquo;<samp>t</samp>&rsquo;, &lsquo;<samp>b</samp>&rsquo; and &lsquo;<samp>p</samp>&rsquo; using image analysis only.
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<a name="pixdesctest"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-pixdesctest">37.63 pixdesctest</a></h2>
+
+<p>Pixel format descriptor test filter, mainly useful for internal
+testing. The output video should be equal to the input video.
+</p>
+<p>For example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">format=monow, pixdesctest
+</pre></td></tr></table>
+
+<p>can be used to test the monowhite pixel format descriptor definition.
+</p>
+<a name="pp"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-pp">37.64 pp</a></h2>
+
+<p>Enable the specified chain of postprocessing subfilters using libpostproc. This
+library should be automatically selected with a GPL build (<code>--enable-gpl</code>).
+Subfilters must be separated by &rsquo;/&rsquo; and can be disabled by prepending a &rsquo;-&rsquo;.
+Each subfilter and some options have a short and a long name that can be used
+interchangeably, i.e. dr/dering are the same.
+</p>
+<p>The filters accept the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>subfilters</samp>&rsquo;</dt>
+<dd><p>Set postprocessing subfilters string.
+</p></dd>
+</dl>
+
+<p>All subfilters share common options to determine their scope:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>a/autoq</samp>&rsquo;</dt>
+<dd><p>Honor the quality commands for this subfilter.
+</p>
+</dd>
+<dt> &lsquo;<samp>c/chrom</samp>&rsquo;</dt>
+<dd><p>Do chrominance filtering, too (default).
+</p>
+</dd>
+<dt> &lsquo;<samp>y/nochrom</samp>&rsquo;</dt>
+<dd><p>Do luminance filtering only (no chrominance).
+</p>
+</dd>
+<dt> &lsquo;<samp>n/noluma</samp>&rsquo;</dt>
+<dd><p>Do chrominance filtering only (no luminance).
+</p></dd>
+</dl>
+
+<p>These options can be appended after the subfilter name, separated by a &rsquo;|&rsquo;.
+</p>
+<p>Available subfilters are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>hb/hdeblock[|difference[|flatness]]</samp>&rsquo;</dt>
+<dd><p>Horizontal deblocking filter
+</p><dl compact="compact">
+<dt> &lsquo;<samp>difference</samp>&rsquo;</dt>
+<dd><p>Difference factor where higher values mean more deblocking (default: <code>32</code>).
+</p></dd>
+<dt> &lsquo;<samp>flatness</samp>&rsquo;</dt>
+<dd><p>Flatness threshold where lower values mean more deblocking (default: <code>39</code>).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>vb/vdeblock[|difference[|flatness]]</samp>&rsquo;</dt>
+<dd><p>Vertical deblocking filter
+</p><dl compact="compact">
+<dt> &lsquo;<samp>difference</samp>&rsquo;</dt>
+<dd><p>Difference factor where higher values mean more deblocking (default: <code>32</code>).
+</p></dd>
+<dt> &lsquo;<samp>flatness</samp>&rsquo;</dt>
+<dd><p>Flatness threshold where lower values mean more deblocking (default: <code>39</code>).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>ha/hadeblock[|difference[|flatness]]</samp>&rsquo;</dt>
+<dd><p>Accurate horizontal deblocking filter
+</p><dl compact="compact">
+<dt> &lsquo;<samp>difference</samp>&rsquo;</dt>
+<dd><p>Difference factor where higher values mean more deblocking (default: <code>32</code>).
+</p></dd>
+<dt> &lsquo;<samp>flatness</samp>&rsquo;</dt>
+<dd><p>Flatness threshold where lower values mean more deblocking (default: <code>39</code>).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>va/vadeblock[|difference[|flatness]]</samp>&rsquo;</dt>
+<dd><p>Accurate vertical deblocking filter
+</p><dl compact="compact">
+<dt> &lsquo;<samp>difference</samp>&rsquo;</dt>
+<dd><p>Difference factor where higher values mean more deblocking (default: <code>32</code>).
+</p></dd>
+<dt> &lsquo;<samp>flatness</samp>&rsquo;</dt>
+<dd><p>Flatness threshold where lower values mean more deblocking (default: <code>39</code>).
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<p>The horizontal and vertical deblocking filters share the difference and
+flatness values so you cannot set different horizontal and vertical
+thresholds.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>h1/x1hdeblock</samp>&rsquo;</dt>
+<dd><p>Experimental horizontal deblocking filter
+</p>
+</dd>
+<dt> &lsquo;<samp>v1/x1vdeblock</samp>&rsquo;</dt>
+<dd><p>Experimental vertical deblocking filter
+</p>
+</dd>
+<dt> &lsquo;<samp>dr/dering</samp>&rsquo;</dt>
+<dd><p>Deringing filter
+</p>
+</dd>
+<dt> &lsquo;<samp>tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>threshold1</samp>&rsquo;</dt>
+<dd><p>larger -&gt; stronger filtering
+</p></dd>
+<dt> &lsquo;<samp>threshold2</samp>&rsquo;</dt>
+<dd><p>larger -&gt; stronger filtering
+</p></dd>
+<dt> &lsquo;<samp>threshold3</samp>&rsquo;</dt>
+<dd><p>larger -&gt; stronger filtering
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>al/autolevels[:f/fullyrange], automatic brightness / contrast correction</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>f/fullyrange</samp>&rsquo;</dt>
+<dd><p>Stretch luminance to <code>0-255</code>.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>lb/linblenddeint</samp>&rsquo;</dt>
+<dd><p>Linear blend deinterlacing filter that deinterlaces the given block by
+filtering all lines with a <code>(1 2 1)</code> filter.
+</p>
+</dd>
+<dt> &lsquo;<samp>li/linipoldeint</samp>&rsquo;</dt>
+<dd><p>Linear interpolating deinterlacing filter that deinterlaces the given block by
+linearly interpolating every second line.
+</p>
+</dd>
+<dt> &lsquo;<samp>ci/cubicipoldeint</samp>&rsquo;</dt>
+<dd><p>Cubic interpolating deinterlacing filter deinterlaces the given block by
+cubically interpolating every second line.
+</p>
+</dd>
+<dt> &lsquo;<samp>md/mediandeint</samp>&rsquo;</dt>
+<dd><p>Median deinterlacing filter that deinterlaces the given block by applying a
+median filter to every second line.
+</p>
+</dd>
+<dt> &lsquo;<samp>fd/ffmpegdeint</samp>&rsquo;</dt>
+<dd><p>FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
+second line with a <code>(-1 4 2 4 -1)</code> filter.
+</p>
+</dd>
+<dt> &lsquo;<samp>l5/lowpass5</samp>&rsquo;</dt>
+<dd><p>Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
+block by filtering all lines with a <code>(-1 2 6 2 -1)</code> filter.
+</p>
+</dd>
+<dt> &lsquo;<samp>fq/forceQuant[|quantizer]</samp>&rsquo;</dt>
+<dd><p>Overrides the quantizer table from the input with the constant quantizer you
+specify.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>quantizer</samp>&rsquo;</dt>
+<dd><p>Quantizer to use
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>de/default</samp>&rsquo;</dt>
+<dd><p>Default pp filter combination (<code>hb|a,vb|a,dr|a</code>)
+</p>
+</dd>
+<dt> &lsquo;<samp>fa/fast</samp>&rsquo;</dt>
+<dd><p>Fast pp filter combination (<code>h1|a,v1|a,dr|a</code>)
+</p>
+</dd>
+<dt> &lsquo;<samp>ac</samp>&rsquo;</dt>
+<dd><p>High quality pp filter combination (<code>ha|a|128|7,va|a,dr|a</code>)
+</p></dd>
+</dl>
+
+<a name="Examples-7"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-7">37.64.1 Examples</a></h3>
+
+<ul>
+<li>
+Apply horizontal and vertical deblocking, deringing and automatic
+brightness/contrast:
+<table><tr><td>&nbsp;</td><td><pre class="example">pp=hb/vb/dr/al
+</pre></td></tr></table>
+
+</li><li>
+Apply default filters without brightness/contrast correction:
+<table><tr><td>&nbsp;</td><td><pre class="example">pp=de/-al
+</pre></td></tr></table>
+
+</li><li>
+Apply default filters and temporal denoiser:
+<table><tr><td>&nbsp;</td><td><pre class="example">pp=default/tmpnoise|1|2|3
+</pre></td></tr></table>
+
+</li><li>
+Apply deblocking on luminance only, and switch vertical deblocking on or off
+automatically depending on available CPU time:
+<table><tr><td>&nbsp;</td><td><pre class="example">pp=hb|y/vb|a
+</pre></td></tr></table>
+</li></ul>
+
+<a name="psnr"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-psnr">37.65 psnr</a></h2>
+
+<p>Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
+Ratio) between two input videos.
+</p>
+<p>This filter takes in input two input videos, the first input is
+considered the &quot;main&quot; source and is passed unchanged to the
+output. The second input is used as a &quot;reference&quot; video for computing
+the PSNR.
+</p>
+<p>Both video inputs must have the same resolution and pixel format for
+this filter to work correctly. Also it assumes that both inputs
+have the same number of frames, which are compared one by one.
+</p>
+<p>The obtained average PSNR is printed through the logging system.
+</p>
+<p>The filter stores the accumulated MSE (mean squared error) of each
+frame, and at the end of the processing it is averaged across all frames
+equally, and the following formula is applied to obtain the PSNR:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">PSNR = 10*log10(MAX^2/MSE)
+</pre></td></tr></table>
+
+<p>Where MAX is the average of the maximum values of each component of the
+image.
+</p>
+<p>The description of the accepted parameters follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>stats_file, f</samp>&rsquo;</dt>
+<dd><p>If specified the filter will use the named file to save the PSNR of
+each individual frame.
+</p></dd>
+</dl>
+
+<p>The file printed if <var>stats_file</var> is selected, contains a sequence of
+key/value pairs of the form <var>key</var>:<var>value</var> for each compared
+couple of frames.
+</p>
+<p>A description of each shown parameter follows:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>sequential number of the input frame, starting from 1
+</p>
+</dd>
+<dt> &lsquo;<samp>mse_avg</samp>&rsquo;</dt>
+<dd><p>Mean Square Error pixel-by-pixel average difference of the compared
+frames, averaged over all the image components.
+</p>
+</dd>
+<dt> &lsquo;<samp>mse_y, mse_u, mse_v, mse_r, mse_g, mse_g, mse_a</samp>&rsquo;</dt>
+<dd><p>Mean Square Error pixel-by-pixel average difference of the compared
+frames for the component specified by the suffix.
+</p>
+</dd>
+<dt> &lsquo;<samp>psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a</samp>&rsquo;</dt>
+<dd><p>Peak Signal to Noise ratio of the compared frames for the component
+specified by the suffix.
+</p></dd>
+</dl>
+
+<p>For example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
+[main][ref] psnr=&quot;stats_file=stats.log&quot; [out]
+</pre></td></tr></table>
+
+<p>On this example the input file being processed is compared with the
+reference file &lsquo;<tt>ref_movie.mpg</tt>&rsquo;. The PSNR of each individual frame
+is stored in &lsquo;<tt>stats.log</tt>&rsquo;.
+</p>
+<a name="pullup"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-pullup">37.66 pullup</a></h2>
+
+<p>Pulldown reversal (inverse telecine) filter, capable of handling mixed
+hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
+content.
+</p>
+<p>The pullup filter is designed to take advantage of future context in making
+its decisions. This filter is stateless in the sense that it does not lock
+onto a pattern to follow, but it instead looks forward to the following
+fields in order to identify matches and rebuild progressive frames.
+</p>
+<p>To produce content with an even framerate, insert the fps filter after
+pullup, use <code>fps=24000/1001</code> if the input frame rate is 29.97fps,
+<code>fps=24</code> for 30fps and the (rare) telecined 25fps input.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>jl</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>jr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>jt</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>jb</samp>&rsquo;</dt>
+<dd><p>These options set the amount of &quot;junk&quot; to ignore at the left, right, top, and
+bottom of the image, respectively. Left and right are in units of 8 pixels,
+while top and bottom are in units of 2 lines.
+The default is 8 pixels on each side.
+</p>
+</dd>
+<dt> &lsquo;<samp>sb</samp>&rsquo;</dt>
+<dd><p>Set the strict breaks. Setting this option to 1 will reduce the chances of
+filter generating an occasional mismatched frame, but it may also cause an
+excessive number of frames to be dropped during high motion sequences.
+Conversely, setting it to -1 will make filter match fields more easily.
+This may help processing of video where there is slight blurring between
+the fields, but may also cause there to be interlaced frames in the output.
+Default value is <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>mp</samp>&rsquo;</dt>
+<dd><p>Set the metric plane to use. It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>l</samp>&rsquo;</dt>
+<dd><p>Use luma plane.
+</p>
+</dd>
+<dt> &lsquo;<samp>u</samp>&rsquo;</dt>
+<dd><p>Use chroma blue plane.
+</p>
+</dd>
+<dt> &lsquo;<samp>v</samp>&rsquo;</dt>
+<dd><p>Use chroma red plane.
+</p></dd>
+</dl>
+
+<p>This option may be set to use chroma plane instead of the default luma plane
+for doing filter&rsquo;s computations. This may improve accuracy on very clean
+source material, but more likely will decrease accuracy, especially if there
+is chroma noise (rainbow effect) or any grayscale video.
+The main purpose of setting &lsquo;<samp>mp</samp>&rsquo; to a chroma plane is to reduce CPU
+load and make pullup usable in realtime on slow machines.
+</p></dd>
+</dl>
+
+<p>For best results (without duplicated frames in the output file) it is
+necessary to change the output frame rate. For example, to inverse
+telecine NTSC input:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input -vf pullup -r 24000/1001 ...
+</pre></td></tr></table>
+
+<a name="removelogo"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-removelogo">37.67 removelogo</a></h2>
+
+<p>Suppress a TV station logo, using an image file to determine which
+pixels comprise the logo. It works by filling in the pixels that
+comprise the logo with neighboring pixels.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filename, f</samp>&rsquo;</dt>
+<dd><p>Set the filter bitmap file, which can be any image format supported by
+libavformat. The width and height of the image file must match those of the
+video stream being processed.
+</p></dd>
+</dl>
+
+<p>Pixels in the provided bitmap image with a value of zero are not
+considered part of the logo, non-zero pixels are considered part of
+the logo. If you use white (255) for the logo and black (0) for the
+rest, you will be safe. For making the filter bitmap, it is
+recommended to take a screen capture of a black frame with the logo
+visible, and then using a threshold filter followed by the erode
+filter once or twice.
+</p>
+<p>If needed, little splotches can be fixed manually. Remember that if
+logo pixels are not covered, the filter quality will be much
+reduced. Marking too many pixels as part of the logo does not hurt as
+much, but it will increase the amount of blurring needed to cover over
+the image and will destroy more information than necessary, and extra
+pixels will slow things down on a large logo.
+</p>
+<a name="rotate"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-rotate">37.68 rotate</a></h2>
+
+<p>Rotate video by an arbitrary angle expressed in radians.
+</p>
+<p>The filter accepts the following options:
+</p>
+<p>A description of the optional parameters follows.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>angle, a</samp>&rsquo;</dt>
+<dd><p>Set an expression for the angle by which to rotate the input video
+clockwise, expressed as a number of radians. A negative value will
+result in a counter-clockwise rotation. By default it is set to &quot;0&quot;.
+</p>
+<p>This expression is evaluated for each frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>out_w, ow</samp>&rsquo;</dt>
+<dd><p>Set the output width expression, default value is &quot;iw&quot;.
+This expression is evaluated just once during configuration.
+</p>
+</dd>
+<dt> &lsquo;<samp>out_h, oh</samp>&rsquo;</dt>
+<dd><p>Set the output height expression, default value is &quot;ih&quot;.
+This expression is evaluated just once during configuration.
+</p>
+</dd>
+<dt> &lsquo;<samp>bilinear</samp>&rsquo;</dt>
+<dd><p>Enable bilinear interpolation if set to 1, a value of 0 disables
+it. Default value is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>fillcolor, c</samp>&rsquo;</dt>
+<dd><p>Set the color used to fill the output area not covered by the rotated
+image. For the generalsyntax of this option, check the &quot;Color&quot; section in the
+ffmpeg-utils manual. If the special value &quot;none&quot; is selected then no
+background is printed (useful for example if the background is never shown).
+</p>
+<p>Default value is &quot;black&quot;.
+</p></dd>
+</dl>
+
+<p>The expressions for the angle and the output size can contain the
+following constants and functions:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>sequential number of the input frame, starting from 0. It is always NAN
+before the first frame is filtered.
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>time in seconds of the input frame, it is set to 0 when the filter is
+configured. It is always NAN before the first frame is filtered.
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>in_w, iw</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>in_h, ih</samp>&rsquo;</dt>
+<dd><p>the input video width and heigth
+</p>
+</dd>
+<dt> &lsquo;<samp>out_w, ow</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>out_h, oh</samp>&rsquo;</dt>
+<dd><p>the output width and heigth, that is the size of the padded area as
+specified by the <var>width</var> and <var>height</var> expressions
+</p>
+</dd>
+<dt> &lsquo;<samp>rotw(a)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>roth(a)</samp>&rsquo;</dt>
+<dd><p>the minimal width/height required for completely containing the input
+video rotated by <var>a</var> radians.
+</p>
+<p>These are only available when computing the &lsquo;<samp>out_w</samp>&rsquo; and
+&lsquo;<samp>out_h</samp>&rsquo; expressions.
+</p></dd>
+</dl>
+
+<a name="Examples-78"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-78">37.68.1 Examples</a></h3>
+
+<ul>
+<li>
+Rotate the input by PI/6 radians clockwise:
+<table><tr><td>&nbsp;</td><td><pre class="example">rotate=PI/6
+</pre></td></tr></table>
+
+</li><li>
+Rotate the input by PI/6 radians counter-clockwise:
+<table><tr><td>&nbsp;</td><td><pre class="example">rotate=-PI/6
+</pre></td></tr></table>
+
+</li><li>
+Apply a constant rotation with period T, starting from an angle of PI/3:
+<table><tr><td>&nbsp;</td><td><pre class="example">rotate=PI/3+2*PI*t/T
+</pre></td></tr></table>
+
+</li><li>
+Make the input video rotation oscillating with a period of T
+seconds and an amplitude of A radians:
+<table><tr><td>&nbsp;</td><td><pre class="example">rotate=A*sin(2*PI/T*t)
+</pre></td></tr></table>
+
+</li><li>
+Rotate the video, output size is choosen so that the whole rotating
+input video is always completely contained in the output:
+<table><tr><td>&nbsp;</td><td><pre class="example">rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
+</pre></td></tr></table>
+
+</li><li>
+Rotate the video, reduce the output size so that no background is ever
+shown:
+<table><tr><td>&nbsp;</td><td><pre class="example">rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
+</pre></td></tr></table>
+</li></ul>
+
+<a name="Commands-3"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Commands-3">37.68.2 Commands</a></h3>
+
+<p>The filter supports the following commands:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>a, angle</samp>&rsquo;</dt>
+<dd><p>Set the angle expression.
+The command accepts the same syntax of the corresponding option.
+</p>
+<p>If the specified expression is not valid, it is kept at its current
+value.
+</p></dd>
+</dl>
+
+<a name="sab"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-sab">37.69 sab</a></h2>
+
+<p>Apply Shape Adaptive Blur.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>luma_radius, lr</samp>&rsquo;</dt>
+<dd><p>Set luma blur filter strength, must be a value in range 0.1-4.0, default
+value is 1.0. A greater value will result in a more blurred image, and
+in slower processing.
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_pre_filter_radius, lpfr</samp>&rsquo;</dt>
+<dd><p>Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
+value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_strength, ls</samp>&rsquo;</dt>
+<dd><p>Set luma maximum difference between pixels to still be considered, must
+be a value in the 0.1-100.0 range, default value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_radius, cr</samp>&rsquo;</dt>
+<dd><p>Set chroma blur filter strength, must be a value in range 0.1-4.0. A
+greater value will result in a more blurred image, and in slower
+processing.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_pre_filter_radius, cpfr</samp>&rsquo;</dt>
+<dd><p>Set chroma pre-filter radius, must be a value in the 0.1-2.0 range.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_strength, cs</samp>&rsquo;</dt>
+<dd><p>Set chroma maximum difference between pixels to still be considered,
+must be a value in the 0.1-100.0 range.
+</p></dd>
+</dl>
+
+<p>Each chroma option value, if not explicitly specified, is set to the
+corresponding luma option value.
+</p>
+<p><a name="scale"></a>
+</p><a name="scale-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-scale-1">37.70 scale</a></h2>
+
+<p>Scale (resize) the input video, using the libswscale library.
+</p>
+<p>The scale filter forces the output display aspect ratio to be the same
+of the input, by changing the output sample aspect ratio.
+</p>
+<p>If the input image format is different from the format requested by
+the next filter, the scale filter will convert the input to the
+requested format.
+</p>
+<a name="Options"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options">37.70.1 Options</a></h3>
+<p>The filter accepts the following options, or any of the options
+supported by the libswscale scaler.
+</p>
+<p>See <a href="ffmpeg-scaler.html#scaler_005foptions">(ffmpeg-scaler)scaler_options</a> for
+the complete list of scaler options.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>height, h</samp>&rsquo;</dt>
+<dd><p>Set the output video dimension expression. Default value is the input
+dimension.
+</p>
+<p>If the value is 0, the input width is used for the output.
+</p>
+<p>If one of the values is -1, the scale filter will use a value that
+maintains the aspect ratio of the input image, calculated from the
+other specified dimension. If both of them are -1, the input size is
+used
+</p>
+<p>See below for the list of accepted constants for use in the dimension
+expression.
+</p>
+</dd>
+<dt> &lsquo;<samp>interl</samp>&rsquo;</dt>
+<dd><p>Set the interlacing mode. It accepts the following values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>Force interlaced aware scaling.
+</p>
+</dd>
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>Do not apply interlaced scaling.
+</p>
+</dd>
+<dt> &lsquo;<samp>-1</samp>&rsquo;</dt>
+<dd><p>Select interlaced aware scaling depending on whether the source frames
+are flagged as interlaced or not.
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>0</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>flags</samp>&rsquo;</dt>
+<dd><p>Set libswscale scaling flags. See
+<a href="ffmpeg-scaler.html#sws_005fflags">(ffmpeg-scaler)sws_flags</a> for the
+complete list of values. If not explictly specified the filter applies
+the default flags.
+</p>
+</dd>
+<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
+<dd><p>Set the video size. For the syntax of this option, check the &quot;Video size&quot;
+section in the ffmpeg-utils manual.
+</p>
+</dd>
+<dt> &lsquo;<samp>in_color_matrix</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>out_color_matrix</samp>&rsquo;</dt>
+<dd><p>Set in/output YCbCr color space type.
+</p>
+<p>This allows the autodetected value to be overridden as well as allows forcing
+a specific value used for the output and encoder.
+</p>
+<p>If not specified, the color space type depends on the pixel format.
+</p>
+<p>Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Choose automatically.
+</p>
+</dd>
+<dt> &lsquo;<samp>bt709</samp>&rsquo;</dt>
+<dd><p>Format conforming to International Telecommunication Union (ITU)
+Recommendation BT.709.
+</p>
+</dd>
+<dt> &lsquo;<samp>fcc</samp>&rsquo;</dt>
+<dd><p>Set color space conforming to the United States Federal Communications
+Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
+</p>
+</dd>
+<dt> &lsquo;<samp>bt601</samp>&rsquo;</dt>
+<dd><p>Set color space conforming to:
+</p>
+<ul>
+<li>
+ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
+
+</li><li>
+ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
+
+</li><li>
+Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
+
+</li></ul>
+
+</dd>
+<dt> &lsquo;<samp>smpte240m</samp>&rsquo;</dt>
+<dd><p>Set color space conforming to SMPTE ST 240:1999.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>in_range</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>out_range</samp>&rsquo;</dt>
+<dd><p>Set in/output YCbCr sample range.
+</p>
+<p>This allows the autodetected value to be overridden as well as allows forcing
+a specific value used for the output and encoder. If not specified, the
+range depends on the pixel format. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Choose automatically.
+</p>
+</dd>
+<dt> &lsquo;<samp>jpeg/full/pc</samp>&rsquo;</dt>
+<dd><p>Set full range (0-255 in case of 8-bit luma).
+</p>
+</dd>
+<dt> &lsquo;<samp>mpeg/tv</samp>&rsquo;</dt>
+<dd><p>Set &quot;MPEG&quot; range (16-235 in case of 8-bit luma).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>force_original_aspect_ratio</samp>&rsquo;</dt>
+<dd><p>Enable decreasing or increasing output video width or height if necessary to
+keep the original aspect ratio. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>disable</samp>&rsquo;</dt>
+<dd><p>Scale the video as specified and disable this feature.
+</p>
+</dd>
+<dt> &lsquo;<samp>decrease</samp>&rsquo;</dt>
+<dd><p>The output video dimensions will automatically be decreased if needed.
+</p>
+</dd>
+<dt> &lsquo;<samp>increase</samp>&rsquo;</dt>
+<dd><p>The output video dimensions will automatically be increased if needed.
+</p>
+</dd>
+</dl>
+
+<p>One useful instance of this option is that when you know a specific device&rsquo;s
+maximum allowed resolution, you can use this to limit the output video to
+that, while retaining the aspect ratio. For example, device A allows
+1280x720 playback, and your video is 1920x800. Using this option (set it to
+decrease) and specifying 1280x720 to the command line makes the output
+1280x533.
+</p>
+<p>Please note that this is a different thing than specifying -1 for &lsquo;<samp>w</samp>&rsquo;
+or &lsquo;<samp>h</samp>&rsquo;, you still need to specify the output resolution for this option
+to work.
+</p>
+</dd>
+</dl>
+
+<p>The values of the &lsquo;<samp>w</samp>&rsquo; and &lsquo;<samp>h</samp>&rsquo; options are expressions
+containing the following constants:
+</p>
+<dl compact="compact">
+<dt> <var>in_w</var></dt>
+<dt> <var>in_h</var></dt>
+<dd><p>the input width and height
+</p>
+</dd>
+<dt> <var>iw</var></dt>
+<dt> <var>ih</var></dt>
+<dd><p>same as <var>in_w</var> and <var>in_h</var>
+</p>
+</dd>
+<dt> <var>out_w</var></dt>
+<dt> <var>out_h</var></dt>
+<dd><p>the output (scaled) width and height
+</p>
+</dd>
+<dt> <var>ow</var></dt>
+<dt> <var>oh</var></dt>
+<dd><p>same as <var>out_w</var> and <var>out_h</var>
+</p>
+</dd>
+<dt> <var>a</var></dt>
+<dd><p>same as <var>iw</var> / <var>ih</var>
+</p>
+</dd>
+<dt> <var>sar</var></dt>
+<dd><p>input sample aspect ratio
+</p>
+</dd>
+<dt> <var>dar</var></dt>
+<dd><p>input display aspect ratio. Calculated from <code>(iw / ih) * sar</code>.
+</p>
+</dd>
+<dt> <var>hsub</var></dt>
+<dt> <var>vsub</var></dt>
+<dd><p>horizontal and vertical input chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p>
+</dd>
+<dt> <var>ohsub</var></dt>
+<dt> <var>ovsub</var></dt>
+<dd><p>horizontal and vertical output chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p></dd>
+</dl>
+
+<a name="Examples-23"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-23">37.70.2 Examples</a></h3>
+
+<ul>
+<li>
+Scale the input video to a size of 200x100:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=w=200:h=100
+</pre></td></tr></table>
+
+<p>This is equivalent to:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">scale=200:100
+</pre></td></tr></table>
+
+<p>or:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">scale=200x100
+</pre></td></tr></table>
+
+</li><li>
+Specify a size abbreviation for the output size:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=qcif
+</pre></td></tr></table>
+
+<p>which can also be written as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">scale=size=qcif
+</pre></td></tr></table>
+
+</li><li>
+Scale the input to 2x:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=w=2*iw:h=2*ih
+</pre></td></tr></table>
+
+</li><li>
+The above is the same as:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=2*in_w:2*in_h
+</pre></td></tr></table>
+
+</li><li>
+Scale the input to 2x with forced interlaced scaling:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=2*iw:2*ih:interl=1
+</pre></td></tr></table>
+
+</li><li>
+Scale the input to half size:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=w=iw/2:h=ih/2
+</pre></td></tr></table>
+
+</li><li>
+Increase the width, and set the height to the same size:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=3/2*iw:ow
+</pre></td></tr></table>
+
+</li><li>
+Seek for Greek harmony:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=iw:1/PHI*iw
+scale=ih*PHI:ih
+</pre></td></tr></table>
+
+</li><li>
+Increase the height, and set the width to 3/2 of the height:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=w=3/2*oh:h=3/5*ih
+</pre></td></tr></table>
+
+</li><li>
+Increase the size, but make the size a multiple of the chroma
+subsample values:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=&quot;trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub&quot;
+</pre></td></tr></table>
+
+</li><li>
+Increase the width to a maximum of 500 pixels, keep the same input
+aspect ratio:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=w='min(500\, iw*3/2):h=-1'
+</pre></td></tr></table>
+</li></ul>
+
+<a name="separatefields"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-separatefields">37.71 separatefields</a></h2>
+
+<p>The <code>separatefields</code> takes a frame-based video input and splits
+each frame into its components fields, producing a new half height clip
+with twice the frame rate and twice the frame count.
+</p>
+<p>This filter use field-dominance information in frame to decide which
+of each pair of fields to place first in the output.
+If it gets it wrong use <a href="#setfield">setfield</a> filter before <code>separatefields</code> filter.
+</p>
+<a name="setdar_002c-setsar"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-setdar_002c-setsar">37.72 setdar, setsar</a></h2>
+
+<p>The <code>setdar</code> filter sets the Display Aspect Ratio for the filter
+output video.
+</p>
+<p>This is done by changing the specified Sample (aka Pixel) Aspect
+Ratio, according to the following equation:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>DAR</var> = <var>HORIZONTAL_RESOLUTION</var> / <var>VERTICAL_RESOLUTION</var> * <var>SAR</var>
+</pre></td></tr></table>
+
+<p>Keep in mind that the <code>setdar</code> filter does not modify the pixel
+dimensions of the video frame. Also the display aspect ratio set by
+this filter may be changed by later filters in the filterchain,
+e.g. in case of scaling or if another &quot;setdar&quot; or a &quot;setsar&quot; filter is
+applied.
+</p>
+<p>The <code>setsar</code> filter sets the Sample (aka Pixel) Aspect Ratio for
+the filter output video.
+</p>
+<p>Note that as a consequence of the application of this filter, the
+output display aspect ratio will change according to the equation
+above.
+</p>
+<p>Keep in mind that the sample aspect ratio set by the <code>setsar</code>
+filter may be changed by later filters in the filterchain, e.g. if
+another &quot;setsar&quot; or a &quot;setdar&quot; filter is applied.
+</p>
+<p>The filters accept the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>r, ratio, dar (<code>setdar</code> only), sar (<code>setsar</code> only)</samp>&rsquo;</dt>
+<dd><p>Set the aspect ratio used by the filter.
+</p>
+<p>The parameter can be a floating point number string, an expression, or
+a string of the form <var>num</var>:<var>den</var>, where <var>num</var> and
+<var>den</var> are the numerator and denominator of the aspect ratio. If
+the parameter is not specified, it is assumed the value &quot;0&quot;.
+In case the form &quot;<var>num</var>:<var>den</var>&quot; is used, the <code>:</code> character
+should be escaped.
+</p>
+</dd>
+<dt> &lsquo;<samp>max</samp>&rsquo;</dt>
+<dd><p>Set the maximum integer value to use for expressing numerator and
+denominator when reducing the expressed aspect ratio to a rational.
+Default value is <code>100</code>.
+</p>
+</dd>
+</dl>
+
+<p>The parameter <var>sar</var> is an expression containing
+the following constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>E, PI, PHI</samp>&rsquo;</dt>
+<dd><p>the corresponding mathematical approximated values for e
+(euler number), pi (greek PI), phi (golden ratio)
+</p>
+</dd>
+<dt> &lsquo;<samp>w, h</samp>&rsquo;</dt>
+<dd><p>the input width and height
+</p>
+</dd>
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>same as <var>w</var> / <var>h</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
+<dd><p>input sample aspect ratio
+</p>
+</dd>
+<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
+<dd><p>input display aspect ratio, it is the same as (<var>w</var> / <var>h</var>) * <var>sar</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub, vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p></dd>
+</dl>
+
+<a name="Examples-45"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-45">37.72.1 Examples</a></h3>
+
+<ul>
+<li>
+To change the display aspect ratio to 16:9, specify one of the following:
+<table><tr><td>&nbsp;</td><td><pre class="example">setdar=dar=1.77777
+setdar=dar=16/9
+setdar=dar=1.77777
+</pre></td></tr></table>
+
+</li><li>
+To change the sample aspect ratio to 10:11, specify:
+<table><tr><td>&nbsp;</td><td><pre class="example">setsar=sar=10/11
+</pre></td></tr></table>
+
+</li><li>
+To set a display aspect ratio of 16:9, and specify a maximum integer value of
+1000 in the aspect ratio reduction, use the command:
+<table><tr><td>&nbsp;</td><td><pre class="example">setdar=ratio=16/9:max=1000
+</pre></td></tr></table>
+
+</li></ul>
+
+<p><a name="setfield"></a>
+</p><a name="setfield-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-setfield-1">37.73 setfield</a></h2>
+
+<p>Force field for the output video frame.
+</p>
+<p>The <code>setfield</code> filter marks the interlace type field for the
+output frames. It does not change the input frame, but only sets the
+corresponding property, which affects how the frame is treated by
+following filters (e.g. <code>fieldorder</code> or <code>yadif</code>).
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Keep the same field property.
+</p>
+</dd>
+<dt> &lsquo;<samp>bff</samp>&rsquo;</dt>
+<dd><p>Mark the frame as bottom-field-first.
+</p>
+</dd>
+<dt> &lsquo;<samp>tff</samp>&rsquo;</dt>
+<dd><p>Mark the frame as top-field-first.
+</p>
+</dd>
+<dt> &lsquo;<samp>prog</samp>&rsquo;</dt>
+<dd><p>Mark the frame as progressive.
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<a name="showinfo"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-showinfo">37.74 showinfo</a></h2>
+
+<p>Show a line containing various information for each input video frame.
+The input video is not modified.
+</p>
+<p>The shown line contains a sequence of key/value pairs of the form
+<var>key</var>:<var>value</var>.
+</p>
+<p>A description of each shown parameter follows:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>sequential number of the input frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
+<dd><p>Presentation TimeStamp of the input frame, expressed as a number of
+time base units. The time base unit depends on the filter input pad.
+</p>
+</dd>
+<dt> &lsquo;<samp>pts_time</samp>&rsquo;</dt>
+<dd><p>Presentation TimeStamp of the input frame, expressed as a number of
+seconds
+</p>
+</dd>
+<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
+<dd><p>position of the frame in the input stream, -1 if this information in
+unavailable and/or meaningless (for example in case of synthetic video)
+</p>
+</dd>
+<dt> &lsquo;<samp>fmt</samp>&rsquo;</dt>
+<dd><p>pixel format name
+</p>
+</dd>
+<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
+<dd><p>sample aspect ratio of the input frame, expressed in the form
+<var>num</var>/<var>den</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>size of the input frame. For the syntax of this option, check the &quot;Video size&quot;
+section in the ffmpeg-utils manual.
+</p>
+</dd>
+<dt> &lsquo;<samp>i</samp>&rsquo;</dt>
+<dd><p>interlaced mode (&quot;P&quot; for &quot;progressive&quot;, &quot;T&quot; for top field first, &quot;B&quot;
+for bottom field first)
+</p>
+</dd>
+<dt> &lsquo;<samp>iskey</samp>&rsquo;</dt>
+<dd><p>1 if the frame is a key frame, 0 otherwise
+</p>
+</dd>
+<dt> &lsquo;<samp>type</samp>&rsquo;</dt>
+<dd><p>picture type of the input frame (&quot;I&quot; for an I-frame, &quot;P&quot; for a
+P-frame, &quot;B&quot; for a B-frame, &quot;?&quot; for unknown type).
+Check also the documentation of the <code>AVPictureType</code> enum and of
+the <code>av_get_picture_type_char</code> function defined in
+&lsquo;<tt>libavutil/avutil.h</tt>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>checksum</samp>&rsquo;</dt>
+<dd><p>Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame
+</p>
+</dd>
+<dt> &lsquo;<samp>plane_checksum</samp>&rsquo;</dt>
+<dd><p>Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
+expressed in the form &quot;[<var>c0</var> <var>c1</var> <var>c2</var> <var>c3</var>]&quot;
+</p></dd>
+</dl>
+
+<p><a name="smartblur"></a>
+</p><a name="smartblur-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-smartblur-1">37.75 smartblur</a></h2>
+
+<p>Blur the input video without impacting the outlines.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>luma_radius, lr</samp>&rsquo;</dt>
+<dd><p>Set the luma radius. The option value must be a float number in
+the range [0.1,5.0] that specifies the variance of the gaussian filter
+used to blur the image (slower if larger). Default value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_strength, ls</samp>&rsquo;</dt>
+<dd><p>Set the luma strength. The option value must be a float number
+in the range [-1.0,1.0] that configures the blurring. A value included
+in [0.0,1.0] will blur the image whereas a value included in
+[-1.0,0.0] will sharpen the image. Default value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_threshold, lt</samp>&rsquo;</dt>
+<dd><p>Set the luma threshold used as a coefficient to determine
+whether a pixel should be blurred or not. The option value must be an
+integer in the range [-30,30]. A value of 0 will filter all the image,
+a value included in [0,30] will filter flat areas and a value included
+in [-30,0] will filter edges. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_radius, cr</samp>&rsquo;</dt>
+<dd><p>Set the chroma radius. The option value must be a float number in
+the range [0.1,5.0] that specifies the variance of the gaussian filter
+used to blur the image (slower if larger). Default value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_strength, cs</samp>&rsquo;</dt>
+<dd><p>Set the chroma strength. The option value must be a float number
+in the range [-1.0,1.0] that configures the blurring. A value included
+in [0.0,1.0] will blur the image whereas a value included in
+[-1.0,0.0] will sharpen the image. Default value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_threshold, ct</samp>&rsquo;</dt>
+<dd><p>Set the chroma threshold used as a coefficient to determine
+whether a pixel should be blurred or not. The option value must be an
+integer in the range [-30,30]. A value of 0 will filter all the image,
+a value included in [0,30] will filter flat areas and a value included
+in [-30,0] will filter edges. Default value is 0.
+</p></dd>
+</dl>
+
+<p>If a chroma option is not explicitly set, the corresponding luma value
+is set.
+</p>
+<a name="stereo3d"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-stereo3d">37.76 stereo3d</a></h2>
+
+<p>Convert between different stereoscopic image formats.
+</p>
+<p>The filters accept the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>in</samp>&rsquo;</dt>
+<dd><p>Set stereoscopic image format of input.
+</p>
+<p>Available values for input image formats are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sbsl</samp>&rsquo;</dt>
+<dd><p>side by side parallel (left eye left, right eye right)
+</p>
+</dd>
+<dt> &lsquo;<samp>sbsr</samp>&rsquo;</dt>
+<dd><p>side by side crosseye (right eye left, left eye right)
+</p>
+</dd>
+<dt> &lsquo;<samp>sbs2l</samp>&rsquo;</dt>
+<dd><p>side by side parallel with half width resolution
+(left eye left, right eye right)
+</p>
+</dd>
+<dt> &lsquo;<samp>sbs2r</samp>&rsquo;</dt>
+<dd><p>side by side crosseye with half width resolution
+(right eye left, left eye right)
+</p>
+</dd>
+<dt> &lsquo;<samp>abl</samp>&rsquo;</dt>
+<dd><p>above-below (left eye above, right eye below)
+</p>
+</dd>
+<dt> &lsquo;<samp>abr</samp>&rsquo;</dt>
+<dd><p>above-below (right eye above, left eye below)
+</p>
+</dd>
+<dt> &lsquo;<samp>ab2l</samp>&rsquo;</dt>
+<dd><p>above-below with half height resolution
+(left eye above, right eye below)
+</p>
+</dd>
+<dt> &lsquo;<samp>ab2r</samp>&rsquo;</dt>
+<dd><p>above-below with half height resolution
+(right eye above, left eye below)
+</p>
+</dd>
+<dt> &lsquo;<samp>al</samp>&rsquo;</dt>
+<dd><p>alternating frames (left eye first, right eye second)
+</p>
+</dd>
+<dt> &lsquo;<samp>ar</samp>&rsquo;</dt>
+<dd><p>alternating frames (right eye first, left eye second)
+</p>
+<p>Default value is &lsquo;<samp>sbsl</samp>&rsquo;.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>out</samp>&rsquo;</dt>
+<dd><p>Set stereoscopic image format of output.
+</p>
+<p>Available values for output image formats are all the input formats as well as:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>arbg</samp>&rsquo;</dt>
+<dd><p>anaglyph red/blue gray
+(red filter on left eye, blue filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>argg</samp>&rsquo;</dt>
+<dd><p>anaglyph red/green gray
+(red filter on left eye, green filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>arcg</samp>&rsquo;</dt>
+<dd><p>anaglyph red/cyan gray
+(red filter on left eye, cyan filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>arch</samp>&rsquo;</dt>
+<dd><p>anaglyph red/cyan half colored
+(red filter on left eye, cyan filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>arcc</samp>&rsquo;</dt>
+<dd><p>anaglyph red/cyan color
+(red filter on left eye, cyan filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>arcd</samp>&rsquo;</dt>
+<dd><p>anaglyph red/cyan color optimized with the least squares projection of dubois
+(red filter on left eye, cyan filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>agmg</samp>&rsquo;</dt>
+<dd><p>anaglyph green/magenta gray
+(green filter on left eye, magenta filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>agmh</samp>&rsquo;</dt>
+<dd><p>anaglyph green/magenta half colored
+(green filter on left eye, magenta filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>agmc</samp>&rsquo;</dt>
+<dd><p>anaglyph green/magenta colored
+(green filter on left eye, magenta filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>agmd</samp>&rsquo;</dt>
+<dd><p>anaglyph green/magenta color optimized with the least squares projection of dubois
+(green filter on left eye, magenta filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>aybg</samp>&rsquo;</dt>
+<dd><p>anaglyph yellow/blue gray
+(yellow filter on left eye, blue filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>aybh</samp>&rsquo;</dt>
+<dd><p>anaglyph yellow/blue half colored
+(yellow filter on left eye, blue filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>aybc</samp>&rsquo;</dt>
+<dd><p>anaglyph yellow/blue colored
+(yellow filter on left eye, blue filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>aybd</samp>&rsquo;</dt>
+<dd><p>anaglyph yellow/blue color optimized with the least squares projection of dubois
+(yellow filter on left eye, blue filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>irl</samp>&rsquo;</dt>
+<dd><p>interleaved rows (left eye has top row, right eye starts on next row)
+</p>
+</dd>
+<dt> &lsquo;<samp>irr</samp>&rsquo;</dt>
+<dd><p>interleaved rows (right eye has top row, left eye starts on next row)
+</p>
+</dd>
+<dt> &lsquo;<samp>ml</samp>&rsquo;</dt>
+<dd><p>mono output (left eye only)
+</p>
+</dd>
+<dt> &lsquo;<samp>mr</samp>&rsquo;</dt>
+<dd><p>mono output (right eye only)
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>arcd</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<a name="Examples"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples">37.76.1 Examples</a></h3>
+
+<ul>
+<li>
+Convert input video from side by side parallel to anaglyph yellow/blue dubois:
+<table><tr><td>&nbsp;</td><td><pre class="example">stereo3d=sbsl:aybd
+</pre></td></tr></table>
+
+</li><li>
+Convert input video from above bellow (left eye above, right eye below) to side by side crosseye.
+<table><tr><td>&nbsp;</td><td><pre class="example">stereo3d=abl:sbsr
+</pre></td></tr></table>
+</li></ul>
+
+<a name="spp"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-spp">37.77 spp</a></h2>
+
+<p>Apply a simple postprocessing filter that compresses and decompresses the image
+at several (or - in the case of &lsquo;<samp>quality</samp>&rsquo; level <code>6</code> - all) shifts
+and average the results.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>quality</samp>&rsquo;</dt>
+<dd><p>Set quality. This option defines the number of levels for averaging. It accepts
+an integer in the range 0-6. If set to <code>0</code>, the filter will have no
+effect. A value of <code>6</code> means the higher quality. For each increment of
+that value the speed drops by a factor of approximately 2.  Default value is
+<code>3</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>qp</samp>&rsquo;</dt>
+<dd><p>Force a constant quantization parameter. If not set, the filter will use the QP
+from the video stream (if available).
+</p>
+</dd>
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Set thresholding mode. Available modes are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>hard</samp>&rsquo;</dt>
+<dd><p>Set hard thresholding (default).
+</p></dd>
+<dt> &lsquo;<samp>soft</samp>&rsquo;</dt>
+<dd><p>Set soft thresholding (better de-ringing effect, but likely blurrier).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>use_bframe_qp</samp>&rsquo;</dt>
+<dd><p>Enable the use of the QP from the B-Frames if set to <code>1</code>. Using this
+option may cause flicker since the B-Frames have often larger QP. Default is
+<code>0</code> (not enabled).
+</p></dd>
+</dl>
+
+<p><a name="subtitles"></a>
+</p><a name="subtitles-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-subtitles-1">37.78 subtitles</a></h2>
+
+<p>Draw subtitles on top of input video using the libass library.
+</p>
+<p>To enable compilation of this filter you need to configure FFmpeg with
+<code>--enable-libass</code>. This filter also requires a build with libavcodec and
+libavformat to convert the passed subtitles file to ASS (Advanced Substation
+Alpha) subtitles format.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filename, f</samp>&rsquo;</dt>
+<dd><p>Set the filename of the subtitle file to read. It must be specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>original_size</samp>&rsquo;</dt>
+<dd><p>Specify the size of the original video, the video for which the ASS file
+was composed. For the syntax of this option, check the &quot;Video size&quot; section in
+the ffmpeg-utils manual. Due to a misdesign in ASS aspect ratio arithmetic,
+this is necessary to correctly scale the fonts if the aspect ratio has been
+changed.
+</p>
+</dd>
+<dt> &lsquo;<samp>charenc</samp>&rsquo;</dt>
+<dd><p>Set subtitles input character encoding. <code>subtitles</code> filter only. Only
+useful if not UTF-8.
+</p></dd>
+</dl>
+
+<p>If the first key is not specified, it is assumed that the first value
+specifies the &lsquo;<samp>filename</samp>&rsquo;.
+</p>
+<p>For example, to render the file &lsquo;<tt>sub.srt</tt>&rsquo; on top of the input
+video, use the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">subtitles=sub.srt
+</pre></td></tr></table>
+
+<p>which is equivalent to:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">subtitles=filename=sub.srt
+</pre></td></tr></table>
+
+<a name="super2xsai"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-super2xsai">37.79 super2xsai</a></h2>
+
+<p>Scale the input by 2x and smooth using the Super2xSaI (Scale and
+Interpolate) pixel art scaling algorithm.
+</p>
+<p>Useful for enlarging pixel art images without reducing sharpness.
+</p>
+<a name="swapuv"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-swapuv">37.80 swapuv</a></h2>
+<p>Swap U &amp; V plane.
+</p>
+<a name="telecine"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-telecine">37.81 telecine</a></h2>
+
+<p>Apply telecine process to the video.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>first_field</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>top, t</samp>&rsquo;</dt>
+<dd><p>top field first
+</p></dd>
+<dt> &lsquo;<samp>bottom, b</samp>&rsquo;</dt>
+<dd><p>bottom field first
+The default value is <code>top</code>.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>pattern</samp>&rsquo;</dt>
+<dd><p>A string of numbers representing the pulldown pattern you wish to apply.
+The default value is <code>23</code>.
+</p></dd>
+</dl>
+
+<table><tr><td>&nbsp;</td><td><pre class="example">Some typical patterns:
+
+NTSC output (30i):
+27.5p: 32222
+24p: 23 (classic)
+24p: 2332 (preferred)
+20p: 33
+18p: 334
+16p: 3444
+
+PAL output (25i):
+27.5p: 12222
+24p: 222222222223 (&quot;Euro pulldown&quot;)
+16.67p: 33
+16p: 33333334
+</pre></td></tr></table>
+
+<a name="thumbnail"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-thumbnail">37.82 thumbnail</a></h2>
+<p>Select the most representative frame in a given sequence of consecutive frames.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>Set the frames batch size to analyze; in a set of <var>n</var> frames, the filter
+will pick one of them, and then handle the next batch of <var>n</var> frames until
+the end. Default is <code>100</code>.
+</p></dd>
+</dl>
+
+<p>Since the filter keeps track of the whole frames sequence, a bigger <var>n</var>
+value will result in a higher memory usage, so a high value is not recommended.
+</p>
+<a name="Examples-17"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-17">37.82.1 Examples</a></h3>
+
+<ul>
+<li>
+Extract one picture each 50 frames:
+<table><tr><td>&nbsp;</td><td><pre class="example">thumbnail=50
+</pre></td></tr></table>
+
+</li><li>
+Complete example of a thumbnail creation with <code>ffmpeg</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
+</pre></td></tr></table>
+</li></ul>
+
+<a name="tile"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-tile">37.83 tile</a></h2>
+
+<p>Tile several successive frames together.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>layout</samp>&rsquo;</dt>
+<dd><p>Set the grid size (i.e. the number of lines and columns). For the syntax of
+this option, check the &quot;Video size&quot; section in the ffmpeg-utils manual.
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_frames</samp>&rsquo;</dt>
+<dd><p>Set the maximum number of frames to render in the given area. It must be less
+than or equal to <var>w</var>x<var>h</var>. The default value is <code>0</code>, meaning all
+the area will be used.
+</p>
+</dd>
+<dt> &lsquo;<samp>margin</samp>&rsquo;</dt>
+<dd><p>Set the outer border margin in pixels.
+</p>
+</dd>
+<dt> &lsquo;<samp>padding</samp>&rsquo;</dt>
+<dd><p>Set the inner border thickness (i.e. the number of pixels between frames). For
+more advanced padding options (such as having different values for the edges),
+refer to the pad video filter.
+</p>
+</dd>
+<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
+<dd><p>Specify the color of the unused areaFor the syntax of this option, check the
+&quot;Color&quot; section in the ffmpeg-utils manual. The default value of <var>color</var>
+is &quot;black&quot;.
+</p></dd>
+</dl>
+
+<a name="Examples-33"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-33">37.83.1 Examples</a></h3>
+
+<ul>
+<li>
+Produce 8x8 PNG tiles of all keyframes (&lsquo;<samp>-skip_frame nokey</samp>&rsquo;) in a movie:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
+</pre></td></tr></table>
+<p>The &lsquo;<samp>-vsync 0</samp>&rsquo; is necessary to prevent <code>ffmpeg</code> from
+duplicating each output frame to accomodate the originally detected frame
+rate.
+</p>
+</li><li>
+Display <code>5</code> pictures in an area of <code>3x2</code> frames,
+with <code>7</code> pixels between them, and <code>2</code> pixels of initial margin, using
+mixed flat and named options:
+<table><tr><td>&nbsp;</td><td><pre class="example">tile=3x2:nb_frames=5:padding=7:margin=2
+</pre></td></tr></table>
+</li></ul>
+
+<a name="tinterlace"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-tinterlace">37.84 tinterlace</a></h2>
+
+<p>Perform various types of temporal field interlacing.
+</p>
+<p>Frames are counted starting from 1, so the first input frame is
+considered odd.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Specify the mode of the interlacing. This option can also be specified
+as a value alone. See below for a list of values for this option.
+</p>
+<p>Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>merge, 0</samp>&rsquo;</dt>
+<dd><p>Move odd frames into the upper field, even into the lower field,
+generating a double height frame at half frame rate.
+</p>
+</dd>
+<dt> &lsquo;<samp>drop_odd, 1</samp>&rsquo;</dt>
+<dd><p>Only output even frames, odd frames are dropped, generating a frame with
+unchanged height at half frame rate.
+</p>
+</dd>
+<dt> &lsquo;<samp>drop_even, 2</samp>&rsquo;</dt>
+<dd><p>Only output odd frames, even frames are dropped, generating a frame with
+unchanged height at half frame rate.
+</p>
+</dd>
+<dt> &lsquo;<samp>pad, 3</samp>&rsquo;</dt>
+<dd><p>Expand each frame to full height, but pad alternate lines with black,
+generating a frame with double height at the same input frame rate.
+</p>
+</dd>
+<dt> &lsquo;<samp>interleave_top, 4</samp>&rsquo;</dt>
+<dd><p>Interleave the upper field from odd frames with the lower field from
+even frames, generating a frame with unchanged height at half frame rate.
+</p>
+</dd>
+<dt> &lsquo;<samp>interleave_bottom, 5</samp>&rsquo;</dt>
+<dd><p>Interleave the lower field from odd frames with the upper field from
+even frames, generating a frame with unchanged height at half frame rate.
+</p>
+</dd>
+<dt> &lsquo;<samp>interlacex2, 6</samp>&rsquo;</dt>
+<dd><p>Double frame rate with unchanged height. Frames are inserted each
+containing the second temporal field from the previous input frame and
+the first temporal field from the next input frame. This mode relies on
+the top_field_first flag. Useful for interlaced video displays with no
+field synchronisation.
+</p></dd>
+</dl>
+
+<p>Numeric values are deprecated but are accepted for backward
+compatibility reasons.
+</p>
+<p>Default mode is <code>merge</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>flags</samp>&rsquo;</dt>
+<dd><p>Specify flags influencing the filter process.
+</p>
+<p>Available value for <var>flags</var> is:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>low_pass_filter, vlfp</samp>&rsquo;</dt>
+<dd><p>Enable vertical low-pass filtering in the filter.
+Vertical low-pass filtering is required when creating an interlaced
+destination from a progressive source which contains high-frequency
+vertical detail. Filtering will reduce interlace &rsquo;twitter&rsquo; and Moire
+patterning.
+</p>
+<p>Vertical low-pass filtering can only be enabled for &lsquo;<samp>mode</samp>&rsquo;
+<var>interleave_top</var> and <var>interleave_bottom</var>.
+</p>
+</dd>
+</dl>
+</dd>
+</dl>
+
+<a name="transpose"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-transpose">37.85 transpose</a></h2>
+
+<p>Transpose rows with columns in the input video and optionally flip it.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>dir</samp>&rsquo;</dt>
+<dd><p>Specify the transposition direction.
+</p>
+<p>Can assume the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0, 4, cclock_flip</samp>&rsquo;</dt>
+<dd><p>Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">L.R     L.l
+. . -&gt;  . .
+l.r     R.r
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>1, 5, clock</samp>&rsquo;</dt>
+<dd><p>Rotate by 90 degrees clockwise, that is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">L.R     l.L
+. . -&gt;  . .
+l.r     r.R
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>2, 6, cclock</samp>&rsquo;</dt>
+<dd><p>Rotate by 90 degrees counterclockwise, that is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">L.R     R.r
+. . -&gt;  . .
+l.r     L.l
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>3, 7, clock_flip</samp>&rsquo;</dt>
+<dd><p>Rotate by 90 degrees clockwise and vertically flip, that is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">L.R     r.R
+. . -&gt;  . .
+l.r     l.L
+</pre></td></tr></table>
+</dd>
+</dl>
+
+<p>For values between 4-7, the transposition is only done if the input
+video geometry is portrait and not landscape. These values are
+deprecated, the <code>passthrough</code> option should be used instead.
+</p>
+<p>Numerical values are deprecated, and should be dropped in favor of
+symbolic constants.
+</p>
+</dd>
+<dt> &lsquo;<samp>passthrough</samp>&rsquo;</dt>
+<dd><p>Do not apply the transposition if the input geometry matches the one
+specified by the specified value. It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>Always apply transposition.
+</p></dd>
+<dt> &lsquo;<samp>portrait</samp>&rsquo;</dt>
+<dd><p>Preserve portrait geometry (when <var>height</var> &gt;= <var>width</var>).
+</p></dd>
+<dt> &lsquo;<samp>landscape</samp>&rsquo;</dt>
+<dd><p>Preserve landscape geometry (when <var>width</var> &gt;= <var>height</var>).
+</p></dd>
+</dl>
+
+<p>Default value is <code>none</code>.
+</p></dd>
+</dl>
+
+<p>For example to rotate by 90 degrees clockwise and preserve portrait
+layout:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">transpose=dir=1:passthrough=portrait
+</pre></td></tr></table>
+
+<p>The command above can also be specified as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">transpose=1:portrait
+</pre></td></tr></table>
+
+<a name="trim"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-trim">37.86 trim</a></h2>
+<p>Trim the input so that the output contains one continuous subpart of the input.
+</p>
+<p>This filter accepts the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>start</samp>&rsquo;</dt>
+<dd><p>Specify time of the start of the kept section, i.e. the frame with the
+timestamp <var>start</var> will be the first frame in the output.
+</p>
+</dd>
+<dt> &lsquo;<samp>end</samp>&rsquo;</dt>
+<dd><p>Specify time of the first frame that will be dropped, i.e. the frame
+immediately preceding the one with the timestamp <var>end</var> will be the last
+frame in the output.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_pts</samp>&rsquo;</dt>
+<dd><p>Same as <var>start</var>, except this option sets the start timestamp in timebase
+units instead of seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>end_pts</samp>&rsquo;</dt>
+<dd><p>Same as <var>end</var>, except this option sets the end timestamp in timebase units
+instead of seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration</samp>&rsquo;</dt>
+<dd><p>Specify maximum duration of the output.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_frame</samp>&rsquo;</dt>
+<dd><p>Number of the first frame that should be passed to output.
+</p>
+</dd>
+<dt> &lsquo;<samp>end_frame</samp>&rsquo;</dt>
+<dd><p>Number of the first frame that should be dropped.
+</p></dd>
+</dl>
+
+<p>&lsquo;<samp>start</samp>&rsquo;, &lsquo;<samp>end</samp>&rsquo;, &lsquo;<samp>duration</samp>&rsquo; are expressed as time
+duration specifications, check the &quot;Time duration&quot; section in the
+ffmpeg-utils manual.
+</p>
+<p>Note that the first two sets of the start/end options and the &lsquo;<samp>duration</samp>&rsquo;
+option look at the frame timestamp, while the _frame variants simply count the
+frames that pass through the filter. Also note that this filter does not modify
+the timestamps. If you wish that the output timestamps start at zero, insert a
+setpts filter after the trim filter.
+</p>
+<p>If multiple start or end options are set, this filter tries to be greedy and
+keep all the frames that match at least one of the specified constraints. To keep
+only the part that matches all the constraints at once, chain multiple trim
+filters.
+</p>
+<p>The defaults are such that all the input is kept. So it is possible to set e.g.
+just the end values to keep everything before the specified time.
+</p>
+<p>Examples:
+</p><ul>
+<li>
+drop everything except the second minute of input
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -vf trim=60:120
+</pre></td></tr></table>
+
+</li><li>
+keep only the first second
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -vf trim=duration=1
+</pre></td></tr></table>
+
+</li></ul>
+
+
+<a name="unsharp"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-unsharp">37.87 unsharp</a></h2>
+
+<p>Sharpen or blur the input video.
+</p>
+<p>It accepts the following parameters:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>luma_msize_x, lx</samp>&rsquo;</dt>
+<dd><p>Set the luma matrix horizontal size. It must be an odd integer between
+3 and 63, default value is 5.
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_msize_y, ly</samp>&rsquo;</dt>
+<dd><p>Set the luma matrix vertical size. It must be an odd integer between 3
+and 63, default value is 5.
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_amount, la</samp>&rsquo;</dt>
+<dd><p>Set the luma effect strength. It can be a float number, reasonable
+values lay between -1.5 and 1.5.
+</p>
+<p>Negative values will blur the input video, while positive values will
+sharpen it, a value of zero will disable the effect.
+</p>
+<p>Default value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_msize_x, cx</samp>&rsquo;</dt>
+<dd><p>Set the chroma matrix horizontal size. It must be an odd integer
+between 3 and 63, default value is 5.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_msize_y, cy</samp>&rsquo;</dt>
+<dd><p>Set the chroma matrix vertical size. It must be an odd integer
+between 3 and 63, default value is 5.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_amount, ca</samp>&rsquo;</dt>
+<dd><p>Set the chroma effect strength. It can be a float number, reasonable
+values lay between -1.5 and 1.5.
+</p>
+<p>Negative values will blur the input video, while positive values will
+sharpen it, a value of zero will disable the effect.
+</p>
+<p>Default value is 0.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>opencl</samp>&rsquo;</dt>
+<dd><p>If set to 1, specify using OpenCL capabilities, only available if
+FFmpeg was configured with <code>--enable-opencl</code>. Default value is 0.
+</p>
+</dd>
+</dl>
+
+<p>All parameters are optional and default to the equivalent of the
+string &rsquo;5:5:1.0:5:5:0.0&rsquo;.
+</p>
+<a name="Examples-63"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-63">37.87.1 Examples</a></h3>
+
+<ul>
+<li>
+Apply strong luma sharpen effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
+</pre></td></tr></table>
+
+</li><li>
+Apply strong blur of both luma and chroma parameters:
+<table><tr><td>&nbsp;</td><td><pre class="example">unsharp=7:7:-2:7:7:-2
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="vidstabdetect"></a>
+</p><a name="vidstabdetect-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-vidstabdetect-1">37.88 vidstabdetect</a></h2>
+
+<p>Analyze video stabilization/deshaking. Perform pass 1 of 2, see
+<a href="#vidstabtransform">vidstabtransform</a> for pass 2.
+</p>
+<p>This filter generates a file with relative translation and rotation
+transform information about subsequent frames, which is then used by
+the <a href="#vidstabtransform">vidstabtransform</a> filter.
+</p>
+<p>To enable compilation of this filter you need to configure FFmpeg with
+<code>--enable-libvidstab</code>.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>result</samp>&rsquo;</dt>
+<dd><p>Set the path to the file used to write the transforms information.
+Default value is &lsquo;<tt>transforms.trf</tt>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>shakiness</samp>&rsquo;</dt>
+<dd><p>Set how shaky the video is and how quick the camera is. It accepts an
+integer in the range 1-10, a value of 1 means little shakiness, a
+value of 10 means strong shakiness. Default value is 5.
+</p>
+</dd>
+<dt> &lsquo;<samp>accuracy</samp>&rsquo;</dt>
+<dd><p>Set the accuracy of the detection process. It must be a value in the
+range 1-15. A value of 1 means low accuracy, a value of 15 means high
+accuracy. Default value is 9.
+</p>
+</dd>
+<dt> &lsquo;<samp>stepsize</samp>&rsquo;</dt>
+<dd><p>Set stepsize of the search process. The region around minimum is
+scanned with 1 pixel resolution. Default value is 6.
+</p>
+</dd>
+<dt> &lsquo;<samp>mincontrast</samp>&rsquo;</dt>
+<dd><p>Set minimum contrast. Below this value a local measurement field is
+discarded. Must be a floating point value in the range 0-1. Default
+value is 0.3.
+</p>
+</dd>
+<dt> &lsquo;<samp>tripod</samp>&rsquo;</dt>
+<dd><p>Set reference frame number for tripod mode.
+</p>
+<p>If enabled, the motion of the frames is compared to a reference frame
+in the filtered stream, identified by the specified number. The idea
+is to compensate all movements in a more-or-less static scene and keep
+the camera view absolutely still.
+</p>
+<p>If set to 0, it is disabled. The frames are counted starting from 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>show</samp>&rsquo;</dt>
+<dd><p>Show fields and transforms in the resulting frames. It accepts an
+integer in the range 0-2. Default value is 0, which disables any
+visualization.
+</p></dd>
+</dl>
+
+<a name="Examples-58"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-58">37.88.1 Examples</a></h3>
+
+<ul>
+<li>
+Use default values:
+<table><tr><td>&nbsp;</td><td><pre class="example">vidstabdetect
+</pre></td></tr></table>
+
+</li><li>
+Analyze strongly shaky movie and put the results in file
+&lsquo;<tt>mytransforms.trf</tt>&rsquo;:
+<table><tr><td>&nbsp;</td><td><pre class="example">vidstabdetect=shakiness=10:accuracy=15:result=&quot;mytransforms.trf&quot;
+</pre></td></tr></table>
+
+</li><li>
+Visualize the result of internal transformations in the resulting
+video:
+<table><tr><td>&nbsp;</td><td><pre class="example">vidstabdetect=show=1
+</pre></td></tr></table>
+
+</li><li>
+Analyze a video with medium shakiness using <code>ffmpeg</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="vidstabtransform"></a>
+</p><a name="vidstabtransform-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-vidstabtransform-1">37.89 vidstabtransform</a></h2>
+
+<p>Video stabilization/deshaking: pass 2 of 2,
+see <a href="#vidstabdetect">vidstabdetect</a> for pass 1.
+</p>
+<p>Read a file with transform information for each frame and
+apply/compensate them. Together with the <a href="#vidstabdetect">vidstabdetect</a>
+filter this can be used to deshake videos. See also
+<a href="http://public.hronopik.de/vid.stab">http://public.hronopik.de/vid.stab</a>. It is important to also use
+the unsharp filter, see below.
+</p>
+<p>To enable compilation of this filter you need to configure FFmpeg with
+<code>--enable-libvidstab</code>.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>input</samp>&rsquo;</dt>
+<dd><p>path to the file used to read the transforms (default: &lsquo;<tt>transforms.trf</tt>&rsquo;)
+</p>
+</dd>
+<dt> &lsquo;<samp>smoothing</samp>&rsquo;</dt>
+<dd><p>number of frames (value*2 + 1) used for lowpass filtering the camera movements
+(default: 10). For example a number of 10 means that 21 frames are used
+(10 in the past and 10 in the future) to smoothen the motion in the
+video. A larger values leads to a smoother video, but limits the
+acceleration of the camera (pan/tilt movements).
+</p>
+</dd>
+<dt> &lsquo;<samp>maxshift</samp>&rsquo;</dt>
+<dd><p>maximal number of pixels to translate frames (default: -1 no limit)
+</p>
+</dd>
+<dt> &lsquo;<samp>maxangle</samp>&rsquo;</dt>
+<dd><p>maximal angle in radians (degree*PI/180) to rotate frames (default: -1
+no limit)
+</p>
+</dd>
+<dt> &lsquo;<samp>crop</samp>&rsquo;</dt>
+<dd><p>How to deal with borders that may be visible due to movement
+compensation. Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>keep</samp>&rsquo;</dt>
+<dd><p>keep image information from previous frame (default)
+</p></dd>
+<dt> &lsquo;<samp>black</samp>&rsquo;</dt>
+<dd><p>fill the border black
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>invert</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>keep transforms normal (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>invert transforms
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>relative</samp>&rsquo;</dt>
+<dd><p>consider transforms as
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>absolute
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>relative to previous frame (default)
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>zoom</samp>&rsquo;</dt>
+<dd><p>percentage to zoom (default: 0)
+</p><dl compact="compact">
+<dt> &lsquo;<samp>&gt;0</samp>&rsquo;</dt>
+<dd><p>zoom in
+</p></dd>
+<dt> &lsquo;<samp>&lt;0</samp>&rsquo;</dt>
+<dd><p>zoom out
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>optzoom</samp>&rsquo;</dt>
+<dd><p>set optimal zooming to avoid borders
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>disabled
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>optimal static zoom value is determined (only very strong movements will lead to visible borders) (default)
+</p></dd>
+<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dd><p>optimal adaptive zoom value is determined (no borders will be visible)
+</p></dd>
+</dl>
+<p>Note that the value given at zoom is added to the one calculated
+here.
+</p>
+</dd>
+<dt> &lsquo;<samp>interpol</samp>&rsquo;</dt>
+<dd><p>type of interpolation
+</p>
+<p>Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>no</samp>&rsquo;</dt>
+<dd><p>no interpolation
+</p></dd>
+<dt> &lsquo;<samp>linear</samp>&rsquo;</dt>
+<dd><p>linear only horizontal
+</p></dd>
+<dt> &lsquo;<samp>bilinear</samp>&rsquo;</dt>
+<dd><p>linear in both directions (default)
+</p></dd>
+<dt> &lsquo;<samp>bicubic</samp>&rsquo;</dt>
+<dd><p>cubic in both directions (slow)
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>tripod</samp>&rsquo;</dt>
+<dd><p>virtual tripod mode means that the video is stabilized such that the
+camera stays stationary. Use also <code>tripod</code> option of
+<a href="#vidstabdetect">vidstabdetect</a>.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>off (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>virtual tripod mode: equivalent to <code>relative=0:smoothing=0</code>
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Examples-4"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-4">37.89.1 Examples</a></h3>
+
+<ul>
+<li>
+typical call with default default values:
+ (note the unsharp filter which is always recommended)
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
+</pre></td></tr></table>
+
+</li><li>
+zoom in a bit more and load transform data from a given file
+<table><tr><td>&nbsp;</td><td><pre class="example">vidstabtransform=zoom=5:input=&quot;mytransforms.trf&quot;
+</pre></td></tr></table>
+
+</li><li>
+smoothen the video even more
+<table><tr><td>&nbsp;</td><td><pre class="example">vidstabtransform=smoothing=30
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="vflip"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-vflip">37.90 vflip</a></h2>
+
+<p>Flip the input video vertically.
+</p>
+<p>For example, to vertically flip a video with <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -vf &quot;vflip&quot; out.avi
+</pre></td></tr></table>
+
+<a name="vignette"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-vignette">37.91 vignette</a></h2>
+
+<p>Make or reverse a natural vignetting effect.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>angle, a</samp>&rsquo;</dt>
+<dd><p>Set lens angle expression as a number of radians.
+</p>
+<p>The value is clipped in the <code>[0,PI/2]</code> range.
+</p>
+<p>Default value: <code>&quot;PI/5&quot;</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>x0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y0</samp>&rsquo;</dt>
+<dd><p>Set center coordinates expressions. Respectively <code>&quot;w/2&quot;</code> and <code>&quot;h/2&quot;</code>
+by default.
+</p>
+</dd>
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Set forward/backward mode.
+</p>
+<p>Available modes are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>forward</samp>&rsquo;</dt>
+<dd><p>The larger the distance from the central point, the darker the image becomes.
+</p>
+</dd>
+<dt> &lsquo;<samp>backward</samp>&rsquo;</dt>
+<dd><p>The larger the distance from the central point, the brighter the image becomes.
+This can be used to reverse a vignette effect, though there is no automatic
+detection to extract the lens &lsquo;<samp>angle</samp>&rsquo; and other settings (yet). It can
+also be used to create a burning effect.
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>forward</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>eval</samp>&rsquo;</dt>
+<dd><p>Set evaluation mode for the expressions (&lsquo;<samp>angle</samp>&rsquo;, &lsquo;<samp>x0</samp>&rsquo;, &lsquo;<samp>y0</samp>&rsquo;).
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>init</samp>&rsquo;</dt>
+<dd><p>Evaluate expressions only once during the filter initialization.
+</p>
+</dd>
+<dt> &lsquo;<samp>frame</samp>&rsquo;</dt>
+<dd><p>Evaluate expressions for each incoming frame. This is way slower than the
+&lsquo;<samp>init</samp>&rsquo; mode since it requires all the scalers to be re-computed, but it
+allows advanced dynamic expressions.
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>init</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>dither</samp>&rsquo;</dt>
+<dd><p>Set dithering to reduce the circular banding effects. Default is <code>1</code>
+(enabled).
+</p>
+</dd>
+<dt> &lsquo;<samp>aspect</samp>&rsquo;</dt>
+<dd><p>Set vignette aspect. This setting allows to adjust the shape of the vignette.
+Setting this value to the SAR of the input will make a rectangular vignetting
+following the dimensions of the video.
+</p>
+<p>Default is <code>1/1</code>.
+</p></dd>
+</dl>
+
+<a name="Expressions"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Expressions">37.91.1 Expressions</a></h3>
+
+<p>The &lsquo;<samp>alpha</samp>&rsquo;, &lsquo;<samp>x0</samp>&rsquo; and &lsquo;<samp>y0</samp>&rsquo; expressions can contain the
+following parameters.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>input width and height
+</p>
+</dd>
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>the number of input frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
+<dd><p>the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
+<var>TB</var> units, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>r</samp>&rsquo;</dt>
+<dd><p>frame rate of the input video, NAN if the input frame rate is unknown
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>the PTS (Presentation TimeStamp) of the filtered video frame,
+expressed in seconds, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>tb</samp>&rsquo;</dt>
+<dd><p>time base of the input video
+</p></dd>
+</dl>
+
+
+<a name="Examples-37"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-37">37.91.2 Examples</a></h3>
+
+<ul>
+<li>
+Apply simple strong vignetting effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">vignette=PI/4
+</pre></td></tr></table>
+
+</li><li>
+Make a flickering vignetting:
+<table><tr><td>&nbsp;</td><td><pre class="example">vignette='PI/4+random(1)*PI/50':eval=frame
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="w3fdif"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-w3fdif">37.92 w3fdif</a></h2>
+
+<p>Deinterlace the input video (&quot;w3fdif&quot; stands for &quot;Weston 3 Field
+Deinterlacing Filter&quot;).
+</p>
+<p>Based on the process described by Martin Weston for BBC R&amp;D, and
+implemented based on the de-interlace algorithm written by Jim
+Easterbrook for BBC R&amp;D, the Weston 3 field deinterlacing filter
+uses filter coefficients calculated by BBC R&amp;D.
+</p>
+<p>There are two sets of filter coefficients, so called &quot;simple&quot;:
+and &quot;complex&quot;. Which set of filter coefficients is used can
+be set by passing an optional parameter:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filter</samp>&rsquo;</dt>
+<dd><p>Set the interlacing filter coefficients. Accepts one of the following values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>simple</samp>&rsquo;</dt>
+<dd><p>Simple filter coefficient set.
+</p></dd>
+<dt> &lsquo;<samp>complex</samp>&rsquo;</dt>
+<dd><p>More-complex filter coefficient set.
+</p></dd>
+</dl>
+<p>Default value is &lsquo;<samp>complex</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>deint</samp>&rsquo;</dt>
+<dd><p>Specify which frames to deinterlace. Accept one of the following values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>all</samp>&rsquo;</dt>
+<dd><p>Deinterlace all frames,
+</p></dd>
+<dt> &lsquo;<samp>interlaced</samp>&rsquo;</dt>
+<dd><p>Only deinterlace frames marked as interlaced.
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>all</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<p><a name="yadif"></a>
+</p><a name="yadif-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-yadif-1">37.93 yadif</a></h2>
+
+<p>Deinterlace the input video (&quot;yadif&quot; means &quot;yet another deinterlacing
+filter&quot;).
+</p>
+<p>This filter accepts the following options:
+</p>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>The interlacing mode to adopt, accepts one of the following values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>0, send_frame</samp>&rsquo;</dt>
+<dd><p>output 1 frame for each frame
+</p></dd>
+<dt> &lsquo;<samp>1, send_field</samp>&rsquo;</dt>
+<dd><p>output 1 frame for each field
+</p></dd>
+<dt> &lsquo;<samp>2, send_frame_nospatial</samp>&rsquo;</dt>
+<dd><p>like <code>send_frame</code> but skip spatial interlacing check
+</p></dd>
+<dt> &lsquo;<samp>3, send_field_nospatial</samp>&rsquo;</dt>
+<dd><p>like <code>send_field</code> but skip spatial interlacing check
+</p></dd>
+</dl>
+
+<p>Default value is <code>send_frame</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>parity</samp>&rsquo;</dt>
+<dd><p>The picture field parity assumed for the input interlaced video, accepts one of
+the following values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>0, tff</samp>&rsquo;</dt>
+<dd><p>assume top field first
+</p></dd>
+<dt> &lsquo;<samp>1, bff</samp>&rsquo;</dt>
+<dd><p>assume bottom field first
+</p></dd>
+<dt> &lsquo;<samp>-1, auto</samp>&rsquo;</dt>
+<dd><p>enable automatic detection
+</p></dd>
+</dl>
+
+<p>Default value is <code>auto</code>.
+If interlacing is unknown or decoder does not export this information,
+top field first will be assumed.
+</p>
+</dd>
+<dt> &lsquo;<samp>deint</samp>&rsquo;</dt>
+<dd><p>Specify which frames to deinterlace. Accept one of the following
+values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>0, all</samp>&rsquo;</dt>
+<dd><p>deinterlace all frames
+</p></dd>
+<dt> &lsquo;<samp>1, interlaced</samp>&rsquo;</dt>
+<dd><p>only deinterlace frames marked as interlaced
+</p></dd>
+</dl>
+
+<p>Default value is <code>all</code>.
+</p></dd>
+</dl>
+
+
+<a name="Video-Sources"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Video-Sources">38. Video Sources</a></h1>
+
+<p>Below is a description of the currently available video sources.
+</p>
+<a name="buffer"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-buffer">38.1 buffer</a></h2>
+
+<p>Buffer video frames, and make them available to the filter chain.
+</p>
+<p>This source is mainly intended for a programmatic use, in particular
+through the interface defined in &lsquo;<tt>libavfilter/vsrc_buffer.h</tt>&rsquo;.
+</p>
+<p>This source accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>video_size</samp>&rsquo;</dt>
+<dd><p>Specify the size (width and height) of the buffered video frames. For the
+syntax of this option, check the &quot;Video size&quot; section in the ffmpeg-utils
+manual.
+</p>
+</dd>
+<dt> &lsquo;<samp>width</samp>&rsquo;</dt>
+<dd><p>Input video width.
+</p>
+</dd>
+<dt> &lsquo;<samp>height</samp>&rsquo;</dt>
+<dd><p>Input video height.
+</p>
+</dd>
+<dt> &lsquo;<samp>pix_fmt</samp>&rsquo;</dt>
+<dd><p>A string representing the pixel format of the buffered video frames.
+It may be a number corresponding to a pixel format, or a pixel format
+name.
+</p>
+</dd>
+<dt> &lsquo;<samp>time_base</samp>&rsquo;</dt>
+<dd><p>Specify the timebase assumed by the timestamps of the buffered frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>frame_rate</samp>&rsquo;</dt>
+<dd><p>Specify the frame rate expected for the video stream.
+</p>
+</dd>
+<dt> &lsquo;<samp>pixel_aspect, sar</samp>&rsquo;</dt>
+<dd><p>Specify the sample aspect ratio assumed by the video frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>sws_param</samp>&rsquo;</dt>
+<dd><p>Specify the optional parameters to be used for the scale filter which
+is automatically inserted when an input change is detected in the
+input size or format.
+</p></dd>
+</dl>
+
+<p>For example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
+</pre></td></tr></table>
+
+<p>will instruct the source to accept video frames with size 320x240 and
+with format &quot;yuv410p&quot;, assuming 1/24 as the timestamps timebase and
+square pixels (1:1 sample aspect ratio).
+Since the pixel format with name &quot;yuv410p&quot; corresponds to the number 6
+(check the enum AVPixelFormat definition in &lsquo;<tt>libavutil/pixfmt.h</tt>&rsquo;),
+this example corresponds to:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
+</pre></td></tr></table>
+
+<p>Alternatively, the options can be specified as a flat string, but this
+syntax is deprecated:
+</p>
+<p><var>width</var>:<var>height</var>:<var>pix_fmt</var>:<var>time_base.num</var>:<var>time_base.den</var>:<var>pixel_aspect.num</var>:<var>pixel_aspect.den</var>[:<var>sws_param</var>]
+</p>
+<a name="cellauto"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-cellauto">38.2 cellauto</a></h2>
+
+<p>Create a pattern generated by an elementary cellular automaton.
+</p>
+<p>The initial state of the cellular automaton can be defined through the
+&lsquo;<samp>filename</samp>&rsquo;, and &lsquo;<samp>pattern</samp>&rsquo; options. If such options are
+not specified an initial state is created randomly.
+</p>
+<p>At each new frame a new row in the video is filled with the result of
+the cellular automaton next generation. The behavior when the whole
+frame is filled is defined by the &lsquo;<samp>scroll</samp>&rsquo; option.
+</p>
+<p>This source accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filename, f</samp>&rsquo;</dt>
+<dd><p>Read the initial cellular automaton state, i.e. the starting row, from
+the specified file.
+In the file, each non-whitespace character is considered an alive
+cell, a newline will terminate the row, and further characters in the
+file will be ignored.
+</p>
+</dd>
+<dt> &lsquo;<samp>pattern, p</samp>&rsquo;</dt>
+<dd><p>Read the initial cellular automaton state, i.e. the starting row, from
+the specified string.
+</p>
+<p>Each non-whitespace character in the string is considered an alive
+cell, a newline will terminate the row, and further characters in the
+string will be ignored.
+</p>
+</dd>
+<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
+<dd><p>Set the video rate, that is the number of frames generated per second.
+Default is 25.
+</p>
+</dd>
+<dt> &lsquo;<samp>random_fill_ratio, ratio</samp>&rsquo;</dt>
+<dd><p>Set the random fill ratio for the initial cellular automaton row. It
+is a floating point number value ranging from 0 to 1, defaults to
+1/PHI.
+</p>
+<p>This option is ignored when a file or a pattern is specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>random_seed, seed</samp>&rsquo;</dt>
+<dd><p>Set the seed for filling randomly the initial row, must be an integer
+included between 0 and UINT32_MAX. If not specified, or if explicitly
+set to -1, the filter will try to use a good random seed on a best
+effort basis.
+</p>
+</dd>
+<dt> &lsquo;<samp>rule</samp>&rsquo;</dt>
+<dd><p>Set the cellular automaton rule, it is a number ranging from 0 to 255.
+Default value is 110.
+</p>
+</dd>
+<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
+<dd><p>Set the size of the output video. For the syntax of this option, check
+the &quot;Video size&quot; section in the ffmpeg-utils manual.
+</p>
+<p>If &lsquo;<samp>filename</samp>&rsquo; or &lsquo;<samp>pattern</samp>&rsquo; is specified, the size is set
+by default to the width of the specified initial state row, and the
+height is set to <var>width</var> * PHI.
+</p>
+<p>If &lsquo;<samp>size</samp>&rsquo; is set, it must contain the width of the specified
+pattern string, and the specified pattern will be centered in the
+larger row.
+</p>
+<p>If a filename or a pattern string is not specified, the size value
+defaults to &quot;320x518&quot; (used for a randomly generated initial state).
+</p>
+</dd>
+<dt> &lsquo;<samp>scroll</samp>&rsquo;</dt>
+<dd><p>If set to 1, scroll the output upward when all the rows in the output
+have been already filled. If set to 0, the new generated row will be
+written over the top row just after the bottom row is filled.
+Defaults to 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_full, full</samp>&rsquo;</dt>
+<dd><p>If set to 1, completely fill the output with generated rows before
+outputting the first frame.
+This is the default behavior, for disabling set the value to 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>stitch</samp>&rsquo;</dt>
+<dd><p>If set to 1, stitch the left and right row edges together.
+This is the default behavior, for disabling set the value to 0.
+</p></dd>
+</dl>
+
+<a name="Examples-77"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-77">38.2.1 Examples</a></h3>
+
+<ul>
+<li>
+Read the initial state from &lsquo;<tt>pattern</tt>&rsquo;, and specify an output of
+size 200x400.
+<table><tr><td>&nbsp;</td><td><pre class="example">cellauto=f=pattern:s=200x400
+</pre></td></tr></table>
+
+</li><li>
+Generate a random initial row with a width of 200 cells, with a fill
+ratio of 2/3:
+<table><tr><td>&nbsp;</td><td><pre class="example">cellauto=ratio=2/3:s=200x200
+</pre></td></tr></table>
+
+</li><li>
+Create a pattern generated by rule 18 starting by a single alive cell
+centered on an initial row with width 100:
+<table><tr><td>&nbsp;</td><td><pre class="example">cellauto=p=@:s=100x400:full=0:rule=18
+</pre></td></tr></table>
+
+</li><li>
+Specify a more elaborated initial pattern:
+<table><tr><td>&nbsp;</td><td><pre class="example">cellauto=p='@@ @ @@':s=100x400:full=0:rule=18
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="mandelbrot"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-mandelbrot">38.3 mandelbrot</a></h2>
+
+<p>Generate a Mandelbrot set fractal, and progressively zoom towards the
+point specified with <var>start_x</var> and <var>start_y</var>.
+</p>
+<p>This source accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>end_pts</samp>&rsquo;</dt>
+<dd><p>Set the terminal pts value. Default value is 400.
+</p>
+</dd>
+<dt> &lsquo;<samp>end_scale</samp>&rsquo;</dt>
+<dd><p>Set the terminal scale value.
+Must be a floating point value. Default value is 0.3.
+</p>
+</dd>
+<dt> &lsquo;<samp>inner</samp>&rsquo;</dt>
+<dd><p>Set the inner coloring mode, that is the algorithm used to draw the
+Mandelbrot fractal internal region.
+</p>
+<p>It shall assume one of the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>black</samp>&rsquo;</dt>
+<dd><p>Set black mode.
+</p></dd>
+<dt> &lsquo;<samp>convergence</samp>&rsquo;</dt>
+<dd><p>Show time until convergence.
+</p></dd>
+<dt> &lsquo;<samp>mincol</samp>&rsquo;</dt>
+<dd><p>Set color based on point closest to the origin of the iterations.
+</p></dd>
+<dt> &lsquo;<samp>period</samp>&rsquo;</dt>
+<dd><p>Set period mode.
+</p></dd>
+</dl>
+
+<p>Default value is <var>mincol</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>bailout</samp>&rsquo;</dt>
+<dd><p>Set the bailout value. Default value is 10.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>maxiter</samp>&rsquo;</dt>
+<dd><p>Set the maximum of iterations performed by the rendering
+algorithm. Default value is 7189.
+</p>
+</dd>
+<dt> &lsquo;<samp>outer</samp>&rsquo;</dt>
+<dd><p>Set outer coloring mode.
+It shall assume one of following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>iteration_count</samp>&rsquo;</dt>
+<dd><p>Set iteration cound mode.
+</p></dd>
+<dt> &lsquo;<samp>normalized_iteration_count</samp>&rsquo;</dt>
+<dd><p>set normalized iteration count mode.
+</p></dd>
+</dl>
+<p>Default value is <var>normalized_iteration_count</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
+<dd><p>Set frame rate, expressed as number of frames per second. Default
+value is &quot;25&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
+<dd><p>Set frame size. For the syntax of this option, check the &quot;Video
+size&quot; section in the ffmpeg-utils manual. Default value is &quot;640x480&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_scale</samp>&rsquo;</dt>
+<dd><p>Set the initial scale value. Default value is 3.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_x</samp>&rsquo;</dt>
+<dd><p>Set the initial x position. Must be a floating point value between
+-100 and 100. Default value is -0.743643887037158704752191506114774.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_y</samp>&rsquo;</dt>
+<dd><p>Set the initial y position. Must be a floating point value between
+-100 and 100. Default value is -0.131825904205311970493132056385139.
+</p></dd>
+</dl>
+
+<a name="mptestsrc"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-mptestsrc">38.4 mptestsrc</a></h2>
+
+<p>Generate various test patterns, as generated by the MPlayer test filter.
+</p>
+<p>The size of the generated video is fixed, and is 256x256.
+This source is useful in particular for testing encoding features.
+</p>
+<p>This source accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
+<dd><p>Specify the frame rate of the sourced video, as the number of frames
+generated per second. It has to be a string in the format
+<var>frame_rate_num</var>/<var>frame_rate_den</var>, an integer number, a float
+number or a valid video frame rate abbreviation. The default value is
+&quot;25&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
+<dd><p>Set the video duration of the sourced video. The accepted syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[-]HH:MM:SS[.m...]
+[-]S+[.m...]
+</pre></td></tr></table>
+<p>See also the function <code>av_parse_time()</code>.
+</p>
+<p>If not specified, or the expressed duration is negative, the video is
+supposed to be generated forever.
+</p>
+</dd>
+<dt> &lsquo;<samp>test, t</samp>&rsquo;</dt>
+<dd>
+<p>Set the number or the name of the test to perform. Supported tests are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>dc_luma</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dc_chroma</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>freq_luma</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>freq_chroma</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>amp_luma</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>amp_chroma</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>cbp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mv</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ring1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ring2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>all</samp>&rsquo;</dt>
+</dl>
+
+<p>Default value is &quot;all&quot;, which will cycle through the list of all tests.
+</p></dd>
+</dl>
+
+<p>For example the following:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">testsrc=t=dc_luma
+</pre></td></tr></table>
+
+<p>will generate a &quot;dc_luma&quot; test pattern.
+</p>
+<a name="frei0r_005fsrc"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-frei0r_005fsrc">38.5 frei0r_src</a></h2>
+
+<p>Provide a frei0r source.
+</p>
+<p>To enable compilation of this filter you need to install the frei0r
+header and configure FFmpeg with <code>--enable-frei0r</code>.
+</p>
+<p>This source accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>size</samp>&rsquo;</dt>
+<dd><p>The size of the video to generate. For the syntax of this option, check the
+&quot;Video size&quot; section in the ffmpeg-utils manual.
+</p>
+</dd>
+<dt> &lsquo;<samp>framerate</samp>&rsquo;</dt>
+<dd><p>Framerate of the generated video, may be a string of the form
+<var>num</var>/<var>den</var> or a frame rate abbreviation.
+</p>
+</dd>
+<dt> &lsquo;<samp>filter_name</samp>&rsquo;</dt>
+<dd><p>The name to the frei0r source to load. For more information regarding frei0r and
+how to set the parameters read the section <a href="#frei0r">frei0r</a> in the description of
+the video filters.
+</p>
+</dd>
+<dt> &lsquo;<samp>filter_params</samp>&rsquo;</dt>
+<dd><p>A &rsquo;|&rsquo;-separated list of parameters to pass to the frei0r source.
+</p>
+</dd>
+</dl>
+
+<p>For example, to generate a frei0r partik0l source with size 200x200
+and frame rate 10 which is overlayed on the overlay filter main input:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
+</pre></td></tr></table>
+
+<a name="life"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-life">38.6 life</a></h2>
+
+<p>Generate a life pattern.
+</p>
+<p>This source is based on a generalization of John Conway&rsquo;s life game.
+</p>
+<p>The sourced input represents a life grid, each pixel represents a cell
+which can be in one of two possible states, alive or dead. Every cell
+interacts with its eight neighbours, which are the cells that are
+horizontally, vertically, or diagonally adjacent.
+</p>
+<p>At each interaction the grid evolves according to the adopted rule,
+which specifies the number of neighbor alive cells which will make a
+cell stay alive or born. The &lsquo;<samp>rule</samp>&rsquo; option allows to specify
+the rule to adopt.
+</p>
+<p>This source accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filename, f</samp>&rsquo;</dt>
+<dd><p>Set the file from which to read the initial grid state. In the file,
+each non-whitespace character is considered an alive cell, and newline
+is used to delimit the end of each row.
+</p>
+<p>If this option is not specified, the initial grid is generated
+randomly.
+</p>
+</dd>
+<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
+<dd><p>Set the video rate, that is the number of frames generated per second.
+Default is 25.
+</p>
+</dd>
+<dt> &lsquo;<samp>random_fill_ratio, ratio</samp>&rsquo;</dt>
+<dd><p>Set the random fill ratio for the initial random grid. It is a
+floating point number value ranging from 0 to 1, defaults to 1/PHI.
+It is ignored when a file is specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>random_seed, seed</samp>&rsquo;</dt>
+<dd><p>Set the seed for filling the initial random grid, must be an integer
+included between 0 and UINT32_MAX. If not specified, or if explicitly
+set to -1, the filter will try to use a good random seed on a best
+effort basis.
+</p>
+</dd>
+<dt> &lsquo;<samp>rule</samp>&rsquo;</dt>
+<dd><p>Set the life rule.
+</p>
+<p>A rule can be specified with a code of the kind &quot;S<var>NS</var>/B<var>NB</var>&quot;,
+where <var>NS</var> and <var>NB</var> are sequences of numbers in the range 0-8,
+<var>NS</var> specifies the number of alive neighbor cells which make a
+live cell stay alive, and <var>NB</var> the number of alive neighbor cells
+which make a dead cell to become alive (i.e. to &quot;born&quot;).
+&quot;s&quot; and &quot;b&quot; can be used in place of &quot;S&quot; and &quot;B&quot;, respectively.
+</p>
+<p>Alternatively a rule can be specified by an 18-bits integer. The 9
+high order bits are used to encode the next cell state if it is alive
+for each number of neighbor alive cells, the low order bits specify
+the rule for &quot;borning&quot; new cells. Higher order bits encode for an
+higher number of neighbor cells.
+For example the number 6153 = <code>(12&lt;&lt;9)+9</code> specifies a stay alive
+rule of 12 and a born rule of 9, which corresponds to &quot;S23/B03&quot;.
+</p>
+<p>Default value is &quot;S23/B3&quot;, which is the original Conway&rsquo;s game of life
+rule, and will keep a cell alive if it has 2 or 3 neighbor alive
+cells, and will born a new cell if there are three alive cells around
+a dead cell.
+</p>
+</dd>
+<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
+<dd><p>Set the size of the output video. For the syntax of this option, check the
+&quot;Video size&quot; section in the ffmpeg-utils manual.
+</p>
+<p>If &lsquo;<samp>filename</samp>&rsquo; is specified, the size is set by default to the
+same size of the input file. If &lsquo;<samp>size</samp>&rsquo; is set, it must contain
+the size specified in the input file, and the initial grid defined in
+that file is centered in the larger resulting area.
+</p>
+<p>If a filename is not specified, the size value defaults to &quot;320x240&quot;
+(used for a randomly generated initial grid).
+</p>
+</dd>
+<dt> &lsquo;<samp>stitch</samp>&rsquo;</dt>
+<dd><p>If set to 1, stitch the left and right grid edges together, and the
+top and bottom edges also. Defaults to 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>mold</samp>&rsquo;</dt>
+<dd><p>Set cell mold speed. If set, a dead cell will go from &lsquo;<samp>death_color</samp>&rsquo; to
+&lsquo;<samp>mold_color</samp>&rsquo; with a step of &lsquo;<samp>mold</samp>&rsquo;. &lsquo;<samp>mold</samp>&rsquo; can have a
+value from 0 to 255.
+</p>
+</dd>
+<dt> &lsquo;<samp>life_color</samp>&rsquo;</dt>
+<dd><p>Set the color of living (or new born) cells.
+</p>
+</dd>
+<dt> &lsquo;<samp>death_color</samp>&rsquo;</dt>
+<dd><p>Set the color of dead cells. If &lsquo;<samp>mold</samp>&rsquo; is set, this is the first color
+used to represent a dead cell.
+</p>
+</dd>
+<dt> &lsquo;<samp>mold_color</samp>&rsquo;</dt>
+<dd><p>Set mold color, for definitely dead and moldy cells.
+</p>
+<p>For the syntax of these 3 color options, check the &quot;Color&quot; section in the
+ffmpeg-utils manual.
+</p></dd>
+</dl>
+
+<a name="Examples-2"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-2">38.6.1 Examples</a></h3>
+
+<ul>
+<li>
+Read a grid from &lsquo;<tt>pattern</tt>&rsquo;, and center it on a grid of size
+300x300 pixels:
+<table><tr><td>&nbsp;</td><td><pre class="example">life=f=pattern:s=300x300
+</pre></td></tr></table>
+
+</li><li>
+Generate a random grid of size 200x200, with a fill ratio of 2/3:
+<table><tr><td>&nbsp;</td><td><pre class="example">life=ratio=2/3:s=200x200
+</pre></td></tr></table>
+
+</li><li>
+Specify a custom rule for evolving a randomly generated grid:
+<table><tr><td>&nbsp;</td><td><pre class="example">life=rule=S14/B34
+</pre></td></tr></table>
+
+</li><li>
+Full example with slow death effect (mold) using <code>ffplay</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="color"></a>
+<a name="haldclutsrc"></a>
+<a name="nullsrc"></a>
+<a name="rgbtestsrc"></a>
+<a name="smptebars"></a>
+<a name="smptehdbars"></a>
+<a name="testsrc"></a>
+</p><a name="color_002c-haldclutsrc_002c-nullsrc_002c-rgbtestsrc_002c-smptebars_002c-smptehdbars_002c-testsrc"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-color_002c-haldclutsrc_002c-nullsrc_002c-rgbtestsrc_002c-smptebars_002c-smptehdbars_002c-testsrc">38.7 color, haldclutsrc, nullsrc, rgbtestsrc, smptebars, smptehdbars, testsrc</a></h2>
+
+<p>The <code>color</code> source provides an uniformly colored input.
+</p>
+<p>The <code>haldclutsrc</code> source provides an identity Hald CLUT. See also
+<a href="#haldclut">haldclut</a> filter.
+</p>
+<p>The <code>nullsrc</code> source returns unprocessed video frames. It is
+mainly useful to be employed in analysis / debugging tools, or as the
+source for filters which ignore the input data.
+</p>
+<p>The <code>rgbtestsrc</code> source generates an RGB test pattern useful for
+detecting RGB vs BGR issues. You should see a red, green and blue
+stripe from top to bottom.
+</p>
+<p>The <code>smptebars</code> source generates a color bars pattern, based on
+the SMPTE Engineering Guideline EG 1-1990.
+</p>
+<p>The <code>smptehdbars</code> source generates a color bars pattern, based on
+the SMPTE RP 219-2002.
+</p>
+<p>The <code>testsrc</code> source generates a test video pattern, showing a
+color pattern, a scrolling gradient and a timestamp. This is mainly
+intended for testing purposes.
+</p>
+<p>The sources accept the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>color, c</samp>&rsquo;</dt>
+<dd><p>Specify the color of the source, only available in the <code>color</code>
+source. For the syntax of this option, check the &quot;Color&quot; section in the
+ffmpeg-utils manual.
+</p>
+</dd>
+<dt> &lsquo;<samp>level</samp>&rsquo;</dt>
+<dd><p>Specify the level of the Hald CLUT, only available in the <code>haldclutsrc</code>
+source. A level of <code>N</code> generates a picture of <code>N*N*N</code> by <code>N*N*N</code>
+pixels to be used as identity matrix for 3D lookup tables. Each component is
+coded on a <code>1/(N*N)</code> scale.
+</p>
+</dd>
+<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
+<dd><p>Specify the size of the sourced video. For the syntax of this option, check the
+&quot;Video size&quot; section in the ffmpeg-utils manual. The default value is
+&quot;320x240&quot;.
+</p>
+<p>This option is not available with the <code>haldclutsrc</code> filter.
+</p>
+</dd>
+<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
+<dd><p>Specify the frame rate of the sourced video, as the number of frames
+generated per second. It has to be a string in the format
+<var>frame_rate_num</var>/<var>frame_rate_den</var>, an integer number, a float
+number or a valid video frame rate abbreviation. The default value is
+&quot;25&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
+<dd><p>Set the sample aspect ratio of the sourced video.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
+<dd><p>Set the video duration of the sourced video. The accepted syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[-]HH[:MM[:SS[.m...]]]
+[-]S+[.m...]
+</pre></td></tr></table>
+<p>See also the function <code>av_parse_time()</code>.
+</p>
+<p>If not specified, or the expressed duration is negative, the video is
+supposed to be generated forever.
+</p>
+</dd>
+<dt> &lsquo;<samp>decimals, n</samp>&rsquo;</dt>
+<dd><p>Set the number of decimals to show in the timestamp, only available in the
+<code>testsrc</code> source.
+</p>
+<p>The displayed timestamp value will correspond to the original
+timestamp value multiplied by the power of 10 of the specified
+value. Default value is 0.
+</p></dd>
+</dl>
+
+<p>For example the following:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">testsrc=duration=5.3:size=qcif:rate=10
+</pre></td></tr></table>
+
+<p>will generate a video with a duration of 5.3 seconds, with size
+176x144 and a frame rate of 10 frames per second.
+</p>
+<p>The following graph description will generate a red source
+with an opacity of 0.2, with size &quot;qcif&quot; and a frame rate of 10
+frames per second.
+</p><table><tr><td>&nbsp;</td><td><pre class="example">color=c=red@0.2:s=qcif:r=10
+</pre></td></tr></table>
+
+<p>If the input content is to be ignored, <code>nullsrc</code> can be used. The
+following command generates noise in the luminance plane by employing
+the <code>geq</code> filter:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">nullsrc=s=256x256, geq=random(1)*255:128:128
+</pre></td></tr></table>
+
+<a name="Commands-4"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Commands-4">38.7.1 Commands</a></h3>
+
+<p>The <code>color</code> source supports the following commands:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>c, color</samp>&rsquo;</dt>
+<dd><p>Set the color of the created image. Accepts the same syntax of the
+corresponding &lsquo;<samp>color</samp>&rsquo; option.
+</p></dd>
+</dl>
+
+
+<a name="Video-Sinks"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Video-Sinks">39. Video Sinks</a></h1>
+
+<p>Below is a description of the currently available video sinks.
+</p>
+<a name="buffersink"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-buffersink">39.1 buffersink</a></h2>
+
+<p>Buffer video frames, and make them available to the end of the filter
+graph.
+</p>
+<p>This sink is mainly intended for a programmatic use, in particular
+through the interface defined in &lsquo;<tt>libavfilter/buffersink.h</tt>&rsquo;
+or the options system.
+</p>
+<p>It accepts a pointer to an AVBufferSinkContext structure, which
+defines the incoming buffers&rsquo; formats, to be passed as the opaque
+parameter to <code>avfilter_init_filter</code> for initialization.
+</p>
+<a name="nullsink"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-nullsink">39.2 nullsink</a></h2>
+
+<p>Null video sink, do absolutely nothing with the input video. It is
+mainly useful as a template and to be employed in analysis / debugging
+tools.
+</p>
+
+<a name="Multimedia-Filters"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Multimedia-Filters">40. Multimedia Filters</a></h1>
+
+<p>Below is a description of the currently available multimedia filters.
+</p>
+<a name="avectorscope"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-avectorscope">40.1 avectorscope</a></h2>
+
+<p>Convert input audio to a video output, representing the audio vector
+scope.
+</p>
+<p>The filter is used to measure the difference between channels of stereo
+audio stream. A monoaural signal, consisting of identical left and right
+signal, results in straight vertical line. Any stereo separation is visible
+as a deviation from this line, creating a Lissajous figure.
+If the straight (or deviation from it) but horizontal line appears this
+indicates that the left and right channels are out of phase.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>mode, m</samp>&rsquo;</dt>
+<dd><p>Set the vectorscope mode.
+</p>
+<p>Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>lissajous</samp>&rsquo;</dt>
+<dd><p>Lissajous rotated by 45 degrees.
+</p>
+</dd>
+<dt> &lsquo;<samp>lissajous_xy</samp>&rsquo;</dt>
+<dd><p>Same as above but not rotated.
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>lissajous</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
+<dd><p>Set the video size for the output. For the syntax of this option, check the &quot;Video size&quot;
+section in the ffmpeg-utils manual. Default value is <code>400x400</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
+<dd><p>Set the output frame rate. Default value is <code>25</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>rc</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>gc</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bc</samp>&rsquo;</dt>
+<dd><p>Specify the red, green and blue contrast. Default values are <code>40</code>, <code>160</code> and <code>80</code>.
+Allowed range is <code>[0, 255]</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>rf</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>gf</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bf</samp>&rsquo;</dt>
+<dd><p>Specify the red, green and blue fade. Default values are <code>15</code>, <code>10</code> and <code>5</code>.
+Allowed range is <code>[0, 255]</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>zoom</samp>&rsquo;</dt>
+<dd><p>Set the zoom factor. Default value is <code>1</code>. Allowed range is <code>[1, 10]</code>.
+</p></dd>
+</dl>
+
+<a name="Examples-72"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-72">40.1.1 Examples</a></h3>
+
+<ul>
+<li>
+Complete example using <code>ffplay</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
+             [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
+</pre></td></tr></table>
+</li></ul>
+
+<a name="concat-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-concat-1">40.2 concat</a></h2>
+
+<p>Concatenate audio and video streams, joining them together one after the
+other.
+</p>
+<p>The filter works on segments of synchronized video and audio streams. All
+segments must have the same number of streams of each type, and that will
+also be the number of streams at output.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>Set the number of segments. Default is 2.
+</p>
+</dd>
+<dt> &lsquo;<samp>v</samp>&rsquo;</dt>
+<dd><p>Set the number of output video streams, that is also the number of video
+streams in each segment. Default is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>Set the number of output audio streams, that is also the number of video
+streams in each segment. Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>unsafe</samp>&rsquo;</dt>
+<dd><p>Activate unsafe mode: do not fail if segments have a different format.
+</p>
+</dd>
+</dl>
+
+<p>The filter has <var>v</var>+<var>a</var> outputs: first <var>v</var> video outputs, then
+<var>a</var> audio outputs.
+</p>
+<p>There are <var>n</var>x(<var>v</var>+<var>a</var>) inputs: first the inputs for the first
+segment, in the same order as the outputs, then the inputs for the second
+segment, etc.
+</p>
+<p>Related streams do not always have exactly the same duration, for various
+reasons including codec frame size or sloppy authoring. For that reason,
+related synchronized streams (e.g. a video and its audio track) should be
+concatenated at once. The concat filter will use the duration of the longest
+stream in each segment (except the last one), and if necessary pad shorter
+audio streams with silence.
+</p>
+<p>For this filter to work correctly, all segments must start at timestamp 0.
+</p>
+<p>All corresponding streams must have the same parameters in all segments; the
+filtering system will automatically select a common pixel format for video
+streams, and a common sample format, sample rate and channel layout for
+audio streams, but other settings, such as resolution, must be converted
+explicitly by the user.
+</p>
+<p>Different frame rates are acceptable but will result in variable frame rate
+at output; be sure to configure the output file to handle it.
+</p>
+<a name="Examples-29"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-29">40.2.1 Examples</a></h3>
+
+<ul>
+<li>
+Concatenate an opening, an episode and an ending, all in bilingual version
+(video in stream 0, audio in streams 1 and 2):
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
+  '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
+   concat=n=3:v=1:a=2 [v] [a1] [a2]' \
+  -map '[v]' -map '[a1]' -map '[a2]' output.mkv
+</pre></td></tr></table>
+
+</li><li>
+Concatenate two parts, handling audio and video separately, using the
+(a)movie sources, and adjusting the resolution:
+<table><tr><td>&nbsp;</td><td><pre class="example">movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
+movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
+[v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
+</pre></td></tr></table>
+<p>Note that a desync will happen at the stitch if the audio and video streams
+do not have exactly the same duration in the first file.
+</p>
+</li></ul>
+
+<a name="ebur128"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-ebur128">40.3 ebur128</a></h2>
+
+<p>EBU R128 scanner filter. This filter takes an audio stream as input and outputs
+it unchanged. By default, it logs a message at a frequency of 10Hz with the
+Momentary loudness (identified by <code>M</code>), Short-term loudness (<code>S</code>),
+Integrated loudness (<code>I</code>) and Loudness Range (<code>LRA</code>).
+</p>
+<p>The filter also has a video output (see the <var>video</var> option) with a real
+time graph to observe the loudness evolution. The graphic contains the logged
+message mentioned above, so it is not printed anymore when this option is set,
+unless the verbose logging is set. The main graphing area contains the
+short-term loudness (3 seconds of analysis), and the gauge on the right is for
+the momentary loudness (400 milliseconds).
+</p>
+<p>More information about the Loudness Recommendation EBU R128 on
+<a href="http://tech.ebu.ch/loudness">http://tech.ebu.ch/loudness</a>.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>video</samp>&rsquo;</dt>
+<dd><p>Activate the video output. The audio stream is passed unchanged whether this
+option is set or no. The video stream will be the first output stream if
+activated. Default is <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>size</samp>&rsquo;</dt>
+<dd><p>Set the video size. This option is for video only. For the syntax of this
+option, check the &quot;Video size&quot; section in the ffmpeg-utils manual. Default
+and minimum resolution is <code>640x480</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>meter</samp>&rsquo;</dt>
+<dd><p>Set the EBU scale meter. Default is <code>9</code>. Common values are <code>9</code> and
+<code>18</code>, respectively for EBU scale meter +9 and EBU scale meter +18. Any
+other integer value between this range is allowed.
+</p>
+</dd>
+<dt> &lsquo;<samp>metadata</samp>&rsquo;</dt>
+<dd><p>Set metadata injection. If set to <code>1</code>, the audio input will be segmented
+into 100ms output frames, each of them containing various loudness information
+in metadata.  All the metadata keys are prefixed with <code>lavfi.r128.</code>.
+</p>
+<p>Default is <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>framelog</samp>&rsquo;</dt>
+<dd><p>Force the frame logging level.
+</p>
+<p>Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>info</samp>&rsquo;</dt>
+<dd><p>information logging level
+</p></dd>
+<dt> &lsquo;<samp>verbose</samp>&rsquo;</dt>
+<dd><p>verbose logging level
+</p></dd>
+</dl>
+
+<p>By default, the logging level is set to <var>info</var>. If the &lsquo;<samp>video</samp>&rsquo; or
+the &lsquo;<samp>metadata</samp>&rsquo; options are set, it switches to <var>verbose</var>.
+</p></dd>
+</dl>
+
+<a name="Examples-92"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-92">40.3.1 Examples</a></h3>
+
+<ul>
+<li>
+Real-time graph using <code>ffplay</code>, with a EBU scale meter +18:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi -i &quot;amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]&quot;
+</pre></td></tr></table>
+
+</li><li>
+Run an analysis with <code>ffmpeg</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
+</pre></td></tr></table>
+</li></ul>
+
+<a name="interleave_002c-ainterleave"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-interleave_002c-ainterleave">40.4 interleave, ainterleave</a></h2>
+
+<p>Temporally interleave frames from several inputs.
+</p>
+<p><code>interleave</code> works with video inputs, <code>ainterleave</code> with audio.
+</p>
+<p>These filters read frames from several inputs and send the oldest
+queued frame to the output.
+</p>
+<p>Input streams must have a well defined, monotonically increasing frame
+timestamp values.
+</p>
+<p>In order to submit one frame to output, these filters need to enqueue
+at least one frame for each input, so they cannot work in case one
+input is not yet terminated and will not receive incoming frames.
+</p>
+<p>For example consider the case when one input is a <code>select</code> filter
+which always drop input frames. The <code>interleave</code> filter will keep
+reading from that input, but it will never be able to send new frames
+to output until the input will send an end-of-stream signal.
+</p>
+<p>Also, depending on inputs synchronization, the filters will drop
+frames in case one input receives more frames than the other ones, and
+the queue is already filled.
+</p>
+<p>These filters accept the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>nb_inputs, n</samp>&rsquo;</dt>
+<dd><p>Set the number of different inputs, it is 2 by default.
+</p></dd>
+</dl>
+
+<a name="Examples-21"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-21">40.4.1 Examples</a></h3>
+
+<ul>
+<li>
+Interleave frames belonging to different streams using <code>ffmpeg</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex &quot;[0:v][1:v] interleave&quot; out.avi
+</pre></td></tr></table>
+
+</li><li>
+Add flickering blur effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
+</pre></td></tr></table>
+</li></ul>
+
+<a name="perms_002c-aperms"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-perms_002c-aperms">40.5 perms, aperms</a></h2>
+
+<p>Set read/write permissions for the output frames.
+</p>
+<p>These filters are mainly aimed at developers to test direct path in the
+following filter in the filtergraph.
+</p>
+<p>The filters accept the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Select the permissions mode.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>Do nothing. This is the default.
+</p></dd>
+<dt> &lsquo;<samp>ro</samp>&rsquo;</dt>
+<dd><p>Set all the output frames read-only.
+</p></dd>
+<dt> &lsquo;<samp>rw</samp>&rsquo;</dt>
+<dd><p>Set all the output frames directly writable.
+</p></dd>
+<dt> &lsquo;<samp>toggle</samp>&rsquo;</dt>
+<dd><p>Make the frame read-only if writable, and writable if read-only.
+</p></dd>
+<dt> &lsquo;<samp>random</samp>&rsquo;</dt>
+<dd><p>Set each output frame read-only or writable randomly.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>seed</samp>&rsquo;</dt>
+<dd><p>Set the seed for the <var>random</var> mode, must be an integer included between
+<code>0</code> and <code>UINT32_MAX</code>. If not specified, or if explicitly set to
+<code>-1</code>, the filter will try to use a good random seed on a best effort
+basis.
+</p></dd>
+</dl>
+
+<p>Note: in case of auto-inserted filter between the permission filter and the
+following one, the permission might not be received as expected in that
+following filter. Inserting a <a href="#format">format</a> or <a href="#aformat">aformat</a> filter before the
+perms/aperms filter can avoid this problem.
+</p>
+<a name="select_002c-aselect"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-select_002c-aselect">40.6 select, aselect</a></h2>
+
+<p>Select frames to pass in output.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>expr, e</samp>&rsquo;</dt>
+<dd><p>Set expression, which is evaluated for each input frame.
+</p>
+<p>If the expression is evaluated to zero, the frame is discarded.
+</p>
+<p>If the evaluation result is negative or NaN, the frame is sent to the
+first output; otherwise it is sent to the output with index
+<code>ceil(val)-1</code>, assuming that the input index starts from 0.
+</p>
+<p>For example a value of <code>1.2</code> corresponds to the output with index
+<code>ceil(1.2)-1 = 2-1 = 1</code>, that is the second output.
+</p>
+</dd>
+<dt> &lsquo;<samp>outputs, n</samp>&rsquo;</dt>
+<dd><p>Set the number of outputs. The output to which to send the selected
+frame is based on the result of the evaluation. Default value is 1.
+</p></dd>
+</dl>
+
+<p>The expression can contain the following constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>the sequential number of the filtered frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>selected_n</samp>&rsquo;</dt>
+<dd><p>the sequential number of the selected frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>prev_selected_n</samp>&rsquo;</dt>
+<dd><p>the sequential number of the last selected frame, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>TB</samp>&rsquo;</dt>
+<dd><p>timebase of the input timestamps
+</p>
+</dd>
+<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
+<dd><p>the PTS (Presentation TimeStamp) of the filtered video frame,
+expressed in <var>TB</var> units, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>the PTS (Presentation TimeStamp) of the filtered video frame,
+expressed in seconds, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>prev_pts</samp>&rsquo;</dt>
+<dd><p>the PTS of the previously filtered video frame, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>prev_selected_pts</samp>&rsquo;</dt>
+<dd><p>the PTS of the last previously filtered video frame, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>prev_selected_t</samp>&rsquo;</dt>
+<dd><p>the PTS of the last previously selected video frame, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>start_pts</samp>&rsquo;</dt>
+<dd><p>the PTS of the first video frame in the video, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>start_t</samp>&rsquo;</dt>
+<dd><p>the time of the first video frame in the video, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>pict_type <em>(video only)</em></samp>&rsquo;</dt>
+<dd><p>the type of the filtered frame, can assume one of the following
+values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>I</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>P</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>B</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>S</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>SI</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>SP</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>BI</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>interlace_type <em>(video only)</em></samp>&rsquo;</dt>
+<dd><p>the frame interlace type, can assume one of the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>PROGRESSIVE</samp>&rsquo;</dt>
+<dd><p>the frame is progressive (not interlaced)
+</p></dd>
+<dt> &lsquo;<samp>TOPFIRST</samp>&rsquo;</dt>
+<dd><p>the frame is top-field-first
+</p></dd>
+<dt> &lsquo;<samp>BOTTOMFIRST</samp>&rsquo;</dt>
+<dd><p>the frame is bottom-field-first
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>consumed_sample_n <em>(audio only)</em></samp>&rsquo;</dt>
+<dd><p>the number of selected samples before the current frame
+</p>
+</dd>
+<dt> &lsquo;<samp>samples_n <em>(audio only)</em></samp>&rsquo;</dt>
+<dd><p>the number of samples in the current frame
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate <em>(audio only)</em></samp>&rsquo;</dt>
+<dd><p>the input sample rate
+</p>
+</dd>
+<dt> &lsquo;<samp>key</samp>&rsquo;</dt>
+<dd><p>1 if the filtered frame is a key-frame, 0 otherwise
+</p>
+</dd>
+<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
+<dd><p>the position in the file of the filtered frame, -1 if the information
+is not available (e.g. for synthetic video)
+</p>
+</dd>
+<dt> &lsquo;<samp>scene <em>(video only)</em></samp>&rsquo;</dt>
+<dd><p>value between 0 and 1 to indicate a new scene; a low value reflects a low
+probability for the current frame to introduce a new scene, while a higher
+value means the current frame is more likely to be one (see the example below)
+</p>
+</dd>
+</dl>
+
+<p>The default value of the select expression is &quot;1&quot;.
+</p>
+<a name="Examples-19"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-19">40.6.1 Examples</a></h3>
+
+<ul>
+<li>
+Select all frames in input:
+<table><tr><td>&nbsp;</td><td><pre class="example">select
+</pre></td></tr></table>
+
+<p>The example above is the same as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">select=1
+</pre></td></tr></table>
+
+</li><li>
+Skip all frames:
+<table><tr><td>&nbsp;</td><td><pre class="example">select=0
+</pre></td></tr></table>
+
+</li><li>
+Select only I-frames:
+<table><tr><td>&nbsp;</td><td><pre class="example">select='eq(pict_type\,I)'
+</pre></td></tr></table>
+
+</li><li>
+Select one frame every 100:
+<table><tr><td>&nbsp;</td><td><pre class="example">select='not(mod(n\,100))'
+</pre></td></tr></table>
+
+</li><li>
+Select only frames contained in the 10-20 time interval:
+<table><tr><td>&nbsp;</td><td><pre class="example">select=between(t\,10\,20)
+</pre></td></tr></table>
+
+</li><li>
+Select only I frames contained in the 10-20 time interval:
+<table><tr><td>&nbsp;</td><td><pre class="example">select=between(t\,10\,20)*eq(pict_type\,I)
+</pre></td></tr></table>
+
+</li><li>
+Select frames with a minimum distance of 10 seconds:
+<table><tr><td>&nbsp;</td><td><pre class="example">select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
+</pre></td></tr></table>
+
+</li><li>
+Use aselect to select only audio frames with samples number &gt; 100:
+<table><tr><td>&nbsp;</td><td><pre class="example">aselect='gt(samples_n\,100)'
+</pre></td></tr></table>
+
+</li><li>
+Create a mosaic of the first scenes:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
+</pre></td></tr></table>
+
+<p>Comparing <var>scene</var> against a value between 0.3 and 0.5 is generally a sane
+choice.
+</p>
+</li><li>
+Send even and odd frames to separate outputs, and compose them:
+<table><tr><td>&nbsp;</td><td><pre class="example">select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
+</pre></td></tr></table>
+</li></ul>
+
+<a name="sendcmd_002c-asendcmd"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-sendcmd_002c-asendcmd">40.7 sendcmd, asendcmd</a></h2>
+
+<p>Send commands to filters in the filtergraph.
+</p>
+<p>These filters read commands to be sent to other filters in the
+filtergraph.
+</p>
+<p><code>sendcmd</code> must be inserted between two video filters,
+<code>asendcmd</code> must be inserted between two audio filters, but apart
+from that they act the same way.
+</p>
+<p>The specification of commands can be provided in the filter arguments
+with the <var>commands</var> option, or in a file specified by the
+<var>filename</var> option.
+</p>
+<p>These filters accept the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>commands, c</samp>&rsquo;</dt>
+<dd><p>Set the commands to be read and sent to the other filters.
+</p></dd>
+<dt> &lsquo;<samp>filename, f</samp>&rsquo;</dt>
+<dd><p>Set the filename of the commands to be read and sent to the other
+filters.
+</p></dd>
+</dl>
+
+<a name="Commands-syntax"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Commands-syntax">40.7.1 Commands syntax</a></h3>
+
+<p>A commands description consists of a sequence of interval
+specifications, comprising a list of commands to be executed when a
+particular event related to that interval occurs. The occurring event
+is typically the current frame time entering or leaving a given time
+interval.
+</p>
+<p>An interval is specified by the following syntax:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>START</var>[-<var>END</var>] <var>COMMANDS</var>;
+</pre></td></tr></table>
+
+<p>The time interval is specified by the <var>START</var> and <var>END</var> times.
+<var>END</var> is optional and defaults to the maximum time.
+</p>
+<p>The current frame time is considered within the specified interval if
+it is included in the interval [<var>START</var>, <var>END</var>), that is when
+the time is greater or equal to <var>START</var> and is lesser than
+<var>END</var>.
+</p>
+<p><var>COMMANDS</var> consists of a sequence of one or more command
+specifications, separated by &quot;,&quot;, relating to that interval.  The
+syntax of a command specification is given by:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[<var>FLAGS</var>] <var>TARGET</var> <var>COMMAND</var> <var>ARG</var>
+</pre></td></tr></table>
+
+<p><var>FLAGS</var> is optional and specifies the type of events relating to
+the time interval which enable sending the specified command, and must
+be a non-null sequence of identifier flags separated by &quot;+&quot; or &quot;|&quot; and
+enclosed between &quot;[&quot; and &quot;]&quot;.
+</p>
+<p>The following flags are recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>enter</samp>&rsquo;</dt>
+<dd><p>The command is sent when the current frame timestamp enters the
+specified interval. In other words, the command is sent when the
+previous frame timestamp was not in the given interval, and the
+current is.
+</p>
+</dd>
+<dt> &lsquo;<samp>leave</samp>&rsquo;</dt>
+<dd><p>The command is sent when the current frame timestamp leaves the
+specified interval. In other words, the command is sent when the
+previous frame timestamp was in the given interval, and the
+current is not.
+</p></dd>
+</dl>
+
+<p>If <var>FLAGS</var> is not specified, a default value of <code>[enter]</code> is
+assumed.
+</p>
+<p><var>TARGET</var> specifies the target of the command, usually the name of
+the filter class or a specific filter instance name.
+</p>
+<p><var>COMMAND</var> specifies the name of the command for the target filter.
+</p>
+<p><var>ARG</var> is optional and specifies the optional list of argument for
+the given <var>COMMAND</var>.
+</p>
+<p>Between one interval specification and another, whitespaces, or
+sequences of characters starting with <code>#</code> until the end of line,
+are ignored and can be used to annotate comments.
+</p>
+<p>A simplified BNF description of the commands specification syntax
+follows:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>COMMAND_FLAG</var>  ::= &quot;enter&quot; | &quot;leave&quot;
+<var>COMMAND_FLAGS</var> ::= <var>COMMAND_FLAG</var> [(+|&quot;|&quot;)<var>COMMAND_FLAG</var>]
+<var>COMMAND</var>       ::= [&quot;[&quot; <var>COMMAND_FLAGS</var> &quot;]&quot;] <var>TARGET</var> <var>COMMAND</var> [<var>ARG</var>]
+<var>COMMANDS</var>      ::= <var>COMMAND</var> [,<var>COMMANDS</var>]
+<var>INTERVAL</var>      ::= <var>START</var>[-<var>END</var>] <var>COMMANDS</var>
+<var>INTERVALS</var>     ::= <var>INTERVAL</var>[;<var>INTERVALS</var>]
+</pre></td></tr></table>
+
+<a name="Examples-59"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-59">40.7.2 Examples</a></h3>
+
+<ul>
+<li>
+Specify audio tempo change at second 4:
+<table><tr><td>&nbsp;</td><td><pre class="example">asendcmd=c='4.0 atempo tempo 1.5',atempo
+</pre></td></tr></table>
+
+</li><li>
+Specify a list of drawtext and hue commands in a file.
+<table><tr><td>&nbsp;</td><td><pre class="example"># show text in the interval 5-10
+5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
+         [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
+
+# desaturate the image in the interval 15-20
+15.0-20.0 [enter] hue s 0,
+          [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
+          [leave] hue s 1,
+          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
+
+# apply an exponential saturation fade-out effect, starting from time 25
+25 [enter] hue s exp(25-t)
+</pre></td></tr></table>
+
+<p>A filtergraph allowing to read and process the above command list
+stored in a file &lsquo;<tt>test.cmd</tt>&rsquo;, can be specified with:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="setpts"></a>
+</p><a name="setpts_002c-asetpts"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-setpts_002c-asetpts">40.8 setpts, asetpts</a></h2>
+
+<p>Change the PTS (presentation timestamp) of the input frames.
+</p>
+<p><code>setpts</code> works on video frames, <code>asetpts</code> on audio frames.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>expr</samp>&rsquo;</dt>
+<dd><p>The expression which is evaluated for each frame to construct its timestamp.
+</p>
+</dd>
+</dl>
+
+<p>The expression is evaluated through the eval API and can contain the following
+constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>FRAME_RATE</samp>&rsquo;</dt>
+<dd><p>frame rate, only defined for constant frame-rate video
+</p>
+</dd>
+<dt> &lsquo;<samp>PTS</samp>&rsquo;</dt>
+<dd><p>the presentation timestamp in input
+</p>
+</dd>
+<dt> &lsquo;<samp>N</samp>&rsquo;</dt>
+<dd><p>the count of the input frame for video or the number of consumed samples,
+not including the current frame for audio, starting from 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>NB_CONSUMED_SAMPLES</samp>&rsquo;</dt>
+<dd><p>the number of consumed samples, not including the current frame (only
+audio)
+</p>
+</dd>
+<dt> &lsquo;<samp>NB_SAMPLES, S</samp>&rsquo;</dt>
+<dd><p>the number of samples in the current frame (only audio)
+</p>
+</dd>
+<dt> &lsquo;<samp>SAMPLE_RATE, SR</samp>&rsquo;</dt>
+<dd><p>audio sample rate
+</p>
+</dd>
+<dt> &lsquo;<samp>STARTPTS</samp>&rsquo;</dt>
+<dd><p>the PTS of the first frame
+</p>
+</dd>
+<dt> &lsquo;<samp>STARTT</samp>&rsquo;</dt>
+<dd><p>the time in seconds of the first frame
+</p>
+</dd>
+<dt> &lsquo;<samp>INTERLACED</samp>&rsquo;</dt>
+<dd><p>tell if the current frame is interlaced
+</p>
+</dd>
+<dt> &lsquo;<samp>T</samp>&rsquo;</dt>
+<dd><p>the time in seconds of the current frame
+</p>
+</dd>
+<dt> &lsquo;<samp>POS</samp>&rsquo;</dt>
+<dd><p>original position in the file of the frame, or undefined if undefined
+for the current frame
+</p>
+</dd>
+<dt> &lsquo;<samp>PREV_INPTS</samp>&rsquo;</dt>
+<dd><p>previous input PTS
+</p>
+</dd>
+<dt> &lsquo;<samp>PREV_INT</samp>&rsquo;</dt>
+<dd><p>previous input time in seconds
+</p>
+</dd>
+<dt> &lsquo;<samp>PREV_OUTPTS</samp>&rsquo;</dt>
+<dd><p>previous output PTS
+</p>
+</dd>
+<dt> &lsquo;<samp>PREV_OUTT</samp>&rsquo;</dt>
+<dd><p>previous output time in seconds
+</p>
+</dd>
+<dt> &lsquo;<samp>RTCTIME</samp>&rsquo;</dt>
+<dd><p>wallclock (RTC) time in microseconds. This is deprecated, use time(0)
+instead.
+</p>
+</dd>
+<dt> &lsquo;<samp>RTCSTART</samp>&rsquo;</dt>
+<dd><p>wallclock (RTC) time at the start of the movie in microseconds
+</p>
+</dd>
+<dt> &lsquo;<samp>TB</samp>&rsquo;</dt>
+<dd><p>timebase of the input timestamps
+</p>
+</dd>
+</dl>
+
+<a name="Examples-47"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-47">40.8.1 Examples</a></h3>
+
+<ul>
+<li>
+Start counting PTS from zero
+<table><tr><td>&nbsp;</td><td><pre class="example">setpts=PTS-STARTPTS
+</pre></td></tr></table>
+
+</li><li>
+Apply fast motion effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">setpts=0.5*PTS
+</pre></td></tr></table>
+
+</li><li>
+Apply slow motion effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">setpts=2.0*PTS
+</pre></td></tr></table>
+
+</li><li>
+Set fixed rate of 25 frames per second:
+<table><tr><td>&nbsp;</td><td><pre class="example">setpts=N/(25*TB)
+</pre></td></tr></table>
+
+</li><li>
+Set fixed rate 25 fps with some jitter:
+<table><tr><td>&nbsp;</td><td><pre class="example">setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
+</pre></td></tr></table>
+
+</li><li>
+Apply an offset of 10 seconds to the input PTS:
+<table><tr><td>&nbsp;</td><td><pre class="example">setpts=PTS+10/TB
+</pre></td></tr></table>
+
+</li><li>
+Generate timestamps from a &quot;live source&quot; and rebase onto the current timebase:
+<table><tr><td>&nbsp;</td><td><pre class="example">setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
+</pre></td></tr></table>
+
+</li><li>
+Generate timestamps by counting samples:
+<table><tr><td>&nbsp;</td><td><pre class="example">asetpts=N/SR/TB
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="settb_002c-asettb"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-settb_002c-asettb">40.9 settb, asettb</a></h2>
+
+<p>Set the timebase to use for the output frames timestamps.
+It is mainly useful for testing timebase configuration.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>expr, tb</samp>&rsquo;</dt>
+<dd><p>The expression which is evaluated into the output timebase.
+</p>
+</dd>
+</dl>
+
+<p>The value for &lsquo;<samp>tb</samp>&rsquo; is an arithmetic expression representing a
+rational. The expression can contain the constants &quot;AVTB&quot; (the default
+timebase), &quot;intb&quot; (the input timebase) and &quot;sr&quot; (the sample rate,
+audio only). Default value is &quot;intb&quot;.
+</p>
+<a name="Examples-65"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-65">40.9.1 Examples</a></h3>
+
+<ul>
+<li>
+Set the timebase to 1/25:
+<table><tr><td>&nbsp;</td><td><pre class="example">settb=expr=1/25
+</pre></td></tr></table>
+
+</li><li>
+Set the timebase to 1/10:
+<table><tr><td>&nbsp;</td><td><pre class="example">settb=expr=0.1
+</pre></td></tr></table>
+
+</li><li>
+Set the timebase to 1001/1000:
+<table><tr><td>&nbsp;</td><td><pre class="example">settb=1+0.001
+</pre></td></tr></table>
+
+</li><li>
+Set the timebase to 2*intb:
+<table><tr><td>&nbsp;</td><td><pre class="example">settb=2*intb
+</pre></td></tr></table>
+
+</li><li>
+Set the default timebase value:
+<table><tr><td>&nbsp;</td><td><pre class="example">settb=AVTB
+</pre></td></tr></table>
+</li></ul>
+
+<a name="showspectrum"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-showspectrum">40.10 showspectrum</a></h2>
+
+<p>Convert input audio to a video output, representing the audio frequency
+spectrum.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
+<dd><p>Specify the video size for the output. For the syntax of this option, check
+the &quot;Video size&quot; section in the ffmpeg-utils manual. Default value is
+<code>640x512</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>slide</samp>&rsquo;</dt>
+<dd><p>Specify if the spectrum should slide along the window. Default value is
+<code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Specify display mode.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>combined</samp>&rsquo;</dt>
+<dd><p>all channels are displayed in the same row
+</p></dd>
+<dt> &lsquo;<samp>separate</samp>&rsquo;</dt>
+<dd><p>all channels are displayed in separate rows
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>combined</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
+<dd><p>Specify display color mode.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>channel</samp>&rsquo;</dt>
+<dd><p>each channel is displayed in a separate color
+</p></dd>
+<dt> &lsquo;<samp>intensity</samp>&rsquo;</dt>
+<dd><p>each channel is is displayed using the same color scheme
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>channel</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>scale</samp>&rsquo;</dt>
+<dd><p>Specify scale used for calculating intensity color values.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>lin</samp>&rsquo;</dt>
+<dd><p>linear
+</p></dd>
+<dt> &lsquo;<samp>sqrt</samp>&rsquo;</dt>
+<dd><p>square root, default
+</p></dd>
+<dt> &lsquo;<samp>cbrt</samp>&rsquo;</dt>
+<dd><p>cubic root
+</p></dd>
+<dt> &lsquo;<samp>log</samp>&rsquo;</dt>
+<dd><p>logarithmic
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>sqrt</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>saturation</samp>&rsquo;</dt>
+<dd><p>Set saturation modifier for displayed colors. Negative values provide
+alternative color scheme. <code>0</code> is no saturation at all.
+Saturation must be in [-10.0, 10.0] range.
+Default value is <code>1</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>win_func</samp>&rsquo;</dt>
+<dd><p>Set window function.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>No samples pre-processing (do not expect this to be faster)
+</p></dd>
+<dt> &lsquo;<samp>hann</samp>&rsquo;</dt>
+<dd><p>Hann window
+</p></dd>
+<dt> &lsquo;<samp>hamming</samp>&rsquo;</dt>
+<dd><p>Hamming window
+</p></dd>
+<dt> &lsquo;<samp>blackman</samp>&rsquo;</dt>
+<dd><p>Blackman window
+</p></dd>
+</dl>
+
+<p>Default value is <code>hann</code>.
+</p></dd>
+</dl>
+
+<p>The usage is very similar to the showwaves filter; see the examples in that
+section.
+</p>
+<a name="Examples-88"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-88">40.10.1 Examples</a></h3>
+
+<ul>
+<li>
+Large window with logarithmic color scaling:
+<table><tr><td>&nbsp;</td><td><pre class="example">showspectrum=s=1280x480:scale=log
+</pre></td></tr></table>
+
+</li><li>
+Complete example for a colored and sliding spectrum per channel using <code>ffplay</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
+             [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
+</pre></td></tr></table>
+</li></ul>
+
+<a name="showwaves"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-showwaves">40.11 showwaves</a></h2>
+
+<p>Convert input audio to a video output, representing the samples waves.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
+<dd><p>Specify the video size for the output. For the syntax of this option, check
+the &quot;Video size&quot; section in the ffmpeg-utils manual. Default value
+is &quot;600x240&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Set display mode.
+</p>
+<p>Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>point</samp>&rsquo;</dt>
+<dd><p>Draw a point for each sample.
+</p>
+</dd>
+<dt> &lsquo;<samp>line</samp>&rsquo;</dt>
+<dd><p>Draw a vertical line for each sample.
+</p></dd>
+</dl>
+
+<p>Default value is <code>point</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>Set the number of samples which are printed on the same column. A
+larger value will decrease the frame rate. Must be a positive
+integer. This option can be set only if the value for <var>rate</var>
+is not explicitly specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
+<dd><p>Set the (approximate) output frame rate. This is done by setting the
+option <var>n</var>. Default value is &quot;25&quot;.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-36"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-36">40.11.1 Examples</a></h3>
+
+<ul>
+<li>
+Output the input file audio and the corresponding video representation
+at the same time:
+<table><tr><td>&nbsp;</td><td><pre class="example">amovie=a.mp3,asplit[out0],showwaves[out1]
+</pre></td></tr></table>
+
+</li><li>
+Create a synthetic signal and show it with showwaves, forcing a
+frame rate of 30 frames per second:
+<table><tr><td>&nbsp;</td><td><pre class="example">aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
+</pre></td></tr></table>
+</li></ul>
+
+<a name="split_002c-asplit"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-split_002c-asplit">40.12 split, asplit</a></h2>
+
+<p>Split input into several identical outputs.
+</p>
+<p><code>asplit</code> works with audio input, <code>split</code> with video.
+</p>
+<p>The filter accepts a single parameter which specifies the number of outputs. If
+unspecified, it defaults to 2.
+</p>
+<a name="Examples-1"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-1">40.12.1 Examples</a></h3>
+
+<ul>
+<li>
+Create two separate outputs from the same input:
+<table><tr><td>&nbsp;</td><td><pre class="example">[in] split [out0][out1]
+</pre></td></tr></table>
+
+</li><li>
+To create 3 or more outputs, you need to specify the number of
+outputs, like in:
+<table><tr><td>&nbsp;</td><td><pre class="example">[in] asplit=3 [out0][out1][out2]
+</pre></td></tr></table>
+
+</li><li>
+Create two separate outputs from the same input, one cropped and
+one padded:
+<table><tr><td>&nbsp;</td><td><pre class="example">[in] split [splitout1][splitout2];
+[splitout1] crop=100:100:0:0    [cropout];
+[splitout2] pad=200:200:100:100 [padout];
+</pre></td></tr></table>
+
+</li><li>
+Create 5 copies of the input audio with <code>ffmpeg</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
+</pre></td></tr></table>
+</li></ul>
+
+<a name="zmq_002c-azmq"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-zmq_002c-azmq">40.13 zmq, azmq</a></h2>
+
+<p>Receive commands sent through a libzmq client, and forward them to
+filters in the filtergraph.
+</p>
+<p><code>zmq</code> and <code>azmq</code> work as a pass-through filters. <code>zmq</code>
+must be inserted between two video filters, <code>azmq</code> between two
+audio filters.
+</p>
+<p>To enable these filters you need to install the libzmq library and
+headers and configure FFmpeg with <code>--enable-libzmq</code>.
+</p>
+<p>For more information about libzmq see:
+<a href="http://www.zeromq.org/">http://www.zeromq.org/</a>
+</p>
+<p>The <code>zmq</code> and <code>azmq</code> filters work as a libzmq server, which
+receives messages sent through a network interface defined by the
+&lsquo;<samp>bind_address</samp>&rsquo; option.
+</p>
+<p>The received message must be in the form:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>TARGET</var> <var>COMMAND</var> [<var>ARG</var>]
+</pre></td></tr></table>
+
+<p><var>TARGET</var> specifies the target of the command, usually the name of
+the filter class or a specific filter instance name.
+</p>
+<p><var>COMMAND</var> specifies the name of the command for the target filter.
+</p>
+<p><var>ARG</var> is optional and specifies the optional argument list for the
+given <var>COMMAND</var>.
+</p>
+<p>Upon reception, the message is processed and the corresponding command
+is injected into the filtergraph. Depending on the result, the filter
+will send a reply to the client, adopting the format:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>ERROR_CODE</var> <var>ERROR_REASON</var>
+<var>MESSAGE</var>
+</pre></td></tr></table>
+
+<p><var>MESSAGE</var> is optional.
+</p>
+<a name="Examples-64"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-64">40.13.1 Examples</a></h3>
+
+<p>Look at &lsquo;<tt>tools/zmqsend</tt>&rsquo; for an example of a zmq client which can
+be used to send commands processed by these filters.
+</p>
+<p>Consider the following filtergraph generated by <code>ffplay</code>
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay -dumpgraph 1 -f lavfi &quot;
+color=s=100x100:c=red  [l];
+color=s=100x100:c=blue [r];
+nullsrc=s=200x100, zmq [bg];
+[bg][l]   overlay      [bg+l];
+[bg+l][r] overlay=x=100 &quot;
+</pre></td></tr></table>
+
+<p>To change the color of the left side of the video, the following
+command can be used:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">echo Parsed_color_0 c yellow | tools/zmqsend
+</pre></td></tr></table>
+
+<p>To change the right side:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">echo Parsed_color_1 c pink | tools/zmqsend
+</pre></td></tr></table>
+
+
+<a name="Multimedia-Sources"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Multimedia-Sources">41. Multimedia Sources</a></h1>
+
+<p>Below is a description of the currently available multimedia sources.
+</p>
+<a name="amovie"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-amovie">41.1 amovie</a></h2>
+
+<p>This is the same as <a href="#movie">movie</a> source, except it selects an audio
+stream by default.
+</p>
+<p><a name="movie"></a>
+</p><a name="movie-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-movie-1">41.2 movie</a></h2>
+
+<p>Read audio and/or video stream(s) from a movie container.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filename</samp>&rsquo;</dt>
+<dd><p>The name of the resource to read (not necessarily a file but also a device or a
+stream accessed through some protocol).
+</p>
+</dd>
+<dt> &lsquo;<samp>format_name, f</samp>&rsquo;</dt>
+<dd><p>Specifies the format assumed for the movie to read, and can be either
+the name of a container or an input device. If not specified the
+format is guessed from <var>movie_name</var> or by probing.
+</p>
+</dd>
+<dt> &lsquo;<samp>seek_point, sp</samp>&rsquo;</dt>
+<dd><p>Specifies the seek point in seconds, the frames will be output
+starting from this seek point, the parameter is evaluated with
+<code>av_strtod</code> so the numerical value may be suffixed by an IS
+postfix. Default value is &quot;0&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>streams, s</samp>&rsquo;</dt>
+<dd><p>Specifies the streams to read. Several streams can be specified,
+separated by &quot;+&quot;. The source will then have as many outputs, in the
+same order. The syntax is explained in the &ldquo;Stream specifiers&rdquo;
+section in the ffmpeg manual. Two special names, &quot;dv&quot; and &quot;da&quot; specify
+respectively the default (best suited) video and audio stream. Default
+is &quot;dv&quot;, or &quot;da&quot; if the filter is called as &quot;amovie&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>stream_index, si</samp>&rsquo;</dt>
+<dd><p>Specifies the index of the video stream to read. If the value is -1,
+the best suited video stream will be automatically selected. Default
+value is &quot;-1&quot;. Deprecated. If the filter is called &quot;amovie&quot;, it will select
+audio instead of video.
+</p>
+</dd>
+<dt> &lsquo;<samp>loop</samp>&rsquo;</dt>
+<dd><p>Specifies how many times to read the stream in sequence.
+If the value is less than 1, the stream will be read again and again.
+Default value is &quot;1&quot;.
+</p>
+<p>Note that when the movie is looped the source timestamps are not
+changed, so it will generate non monotonically increasing timestamps.
+</p></dd>
+</dl>
+
+<p>This filter allows to overlay a second video on top of main input of
+a filtergraph as shown in this graph:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">input -----------&gt; deltapts0 --&gt; overlay --&gt; output
+                                    ^
+                                    |
+movie --&gt; scale--&gt; deltapts1 -------+
+</pre></td></tr></table>
+
+<a name="Examples-60"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-60">41.2.1 Examples</a></h3>
+
+<ul>
+<li>
+Skip 3.2 seconds from the start of the avi file in.avi, and overlay it
+on top of the input labelled as &quot;in&quot;:
+<table><tr><td>&nbsp;</td><td><pre class="example">movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
+[in] setpts=PTS-STARTPTS [main];
+[main][over] overlay=16:16 [out]
+</pre></td></tr></table>
+
+</li><li>
+Read from a video4linux2 device, and overlay it on top of the input
+labelled as &quot;in&quot;:
+<table><tr><td>&nbsp;</td><td><pre class="example">movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
+[in] setpts=PTS-STARTPTS [main];
+[main][over] overlay=16:16 [out]
+</pre></td></tr></table>
+
+</li><li>
+Read the first video stream and the audio stream with id 0x81 from
+dvd.vob; the video is connected to the pad named &quot;video&quot; and the audio is
+connected to the pad named &quot;audio&quot;:
+<table><tr><td>&nbsp;</td><td><pre class="example">movie=dvd.vob:s=v:0+#0x81 [video] [audio]
+</pre></td></tr></table>
+</li></ul>
+
+
+<a name="See-Also"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-See-Also">42. See Also</a></h1>
+
+<p><a href="ffmpeg.html">ffmpeg</a>
+<a href="ffplay.html">ffplay</a>, <a href="ffprobe.html">ffprobe</a>, <a href="ffserver.html">ffserver</a>,
+<a href="ffmpeg-utils.html">ffmpeg-utils</a>,
+<a href="ffmpeg-scaler.html">ffmpeg-scaler</a>,
+<a href="ffmpeg-resampler.html">ffmpeg-resampler</a>,
+<a href="ffmpeg-codecs.html">ffmpeg-codecs</a>,
+<a href="ffmpeg-bitstream-filters.html">ffmpeg-bitstream-filters</a>,
+<a href="ffmpeg-formats.html">ffmpeg-formats</a>,
+<a href="ffmpeg-devices.html">ffmpeg-devices</a>,
+<a href="ffmpeg-protocols.html">ffmpeg-protocols</a>,
+<a href="ffmpeg-filters.html">ffmpeg-filters</a>
+</p>
+
+<a name="Authors"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Authors">43. Authors</a></h1>
+
+<p>The FFmpeg developers.
+</p>
+<p>For details about the authorship, see the Git history of the project
+(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
+<code>git log</code> in the FFmpeg source directory, or browsing the
+online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
+</p>
+<p>Maintainers for the specific components are listed in the file
+&lsquo;<tt>MAINTAINERS</tt>&rsquo; in the source code tree.
+</p>
+
+<footer class="footer pagination-right">
+<span class="label label-info">This document was generated by <em>Kyle Schwarz</em> on <em>December 14, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies/ffmpeg/doc/ffmpeg-bitstream-filters.html b/dependencies/ffmpeg/doc/ffmpeg-bitstream-filters.html
new file mode 100644 (file)
index 0000000..83f2ed4
--- /dev/null
@@ -0,0 +1,225 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on December 14, 2013 by texi2html 1.82 -->
+<!--
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>FFmpeg documentation : FFmpeg Bitstream Filters </title>
+
+<meta name="description" content="FFmpeg Bitstream Filters Documentation: ">
+<meta name="keywords" content="FFmpeg documentation : FFmpeg Bitstream Filters ">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="default.css" />
+
+<link rel="icon" href="favicon.png" type="image/png" />
+</head>
+<body>
+<div id="container">
+<div id="body">
+
+<a name="SEC_Top"></a>
+<h1 class="settitle">FFmpeg Bitstream Filters Documentation</h1>
+
+<a name="SEC_Contents"></a>
+<h1>Table of Contents</h1>
+<div class="contents">
+
+<ul class="toc">
+  <li><a name="toc-Description" href="#Description">1. Description</a></li>
+  <li><a name="toc-Bitstream-Filters" href="#Bitstream-Filters">2. Bitstream Filters</a>
+  <ul class="toc">
+    <li><a name="toc-aac_005fadtstoasc" href="#aac_005fadtstoasc">2.1 aac_adtstoasc</a></li>
+    <li><a name="toc-chomp" href="#chomp">2.2 chomp</a></li>
+    <li><a name="toc-dump_005fextra" href="#dump_005fextra">2.3 dump_extra</a></li>
+    <li><a name="toc-h264_005fmp4toannexb" href="#h264_005fmp4toannexb">2.4 h264_mp4toannexb</a></li>
+    <li><a name="toc-imx_005fdump_005fheader" href="#imx_005fdump_005fheader">2.5 imx_dump_header</a></li>
+    <li><a name="toc-mjpeg2jpeg" href="#mjpeg2jpeg">2.6 mjpeg2jpeg</a></li>
+    <li><a name="toc-mjpega_005fdump_005fheader" href="#mjpega_005fdump_005fheader">2.7 mjpega_dump_header</a></li>
+    <li><a name="toc-movsub" href="#movsub">2.8 movsub</a></li>
+    <li><a name="toc-mp3_005fheader_005fdecompress" href="#mp3_005fheader_005fdecompress">2.9 mp3_header_decompress</a></li>
+    <li><a name="toc-noise" href="#noise">2.10 noise</a></li>
+    <li><a name="toc-remove_005fextra" href="#remove_005fextra">2.11 remove_extra</a></li>
+  </ul></li>
+  <li><a name="toc-See-Also" href="#See-Also">3. See Also</a></li>
+  <li><a name="toc-Authors" href="#Authors">4. Authors</a></li>
+</ul>
+</div>
+
+<a name="Description"></a>
+<h1 class="chapter"><a href="ffmpeg-bitstream-filters.html#toc-Description">1. Description</a></h1>
+
+<p>This document describes the bitstream filters provided by the
+libavcodec library.
+</p>
+<p>A bitstream filter operates on the encoded stream data, and performs
+bitstream level modifications without performing decoding.
+</p>
+
+<a name="Bitstream-Filters"></a>
+<h1 class="chapter"><a href="ffmpeg-bitstream-filters.html#toc-Bitstream-Filters">2. Bitstream Filters</a></h1>
+
+<p>When you configure your FFmpeg build, all the supported bitstream
+filters are enabled by default. You can list all available ones using
+the configure option <code>--list-bsfs</code>.
+</p>
+<p>You can disable all the bitstream filters using the configure option
+<code>--disable-bsfs</code>, and selectively enable any bitstream filter using
+the option <code>--enable-bsf=BSF</code>, or you can disable a particular
+bitstream filter using the option <code>--disable-bsf=BSF</code>.
+</p>
+<p>The option <code>-bsfs</code> of the ff* tools will display the list of
+all the supported bitstream filters included in your build.
+</p>
+<p>Below is a description of the currently available bitstream filters.
+</p>
+<a name="aac_005fadtstoasc"></a>
+<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-aac_005fadtstoasc">2.1 aac_adtstoasc</a></h2>
+
+<p>Convert MPEG-2/4 AAC ADTS to MPEG-4 Audio Specific Configuration
+bitstream filter.
+</p>
+<p>This filter creates an MPEG-4 AudioSpecificConfig from an MPEG-2/4
+ADTS header and removes the ADTS header.
+</p>
+<p>This is required for example when copying an AAC stream from a raw
+ADTS AAC container to a FLV or a MOV/MP4 file.
+</p>
+<a name="chomp"></a>
+<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-chomp">2.2 chomp</a></h2>
+
+<p>Remove zero padding at the end of a packet.
+</p>
+<a name="dump_005fextra"></a>
+<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-dump_005fextra">2.3 dump_extra</a></h2>
+
+<p>Add extradata to the beginning of the filtered packets.
+</p>
+<p>The additional argument specifies which packets should be filtered.
+It accepts the values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>add extradata to all key packets, but only if <var>local_header</var> is
+set in the &lsquo;<samp>flags2</samp>&rsquo; codec context field
+</p>
+</dd>
+<dt> &lsquo;<samp>k</samp>&rsquo;</dt>
+<dd><p>add extradata to all key packets
+</p>
+</dd>
+<dt> &lsquo;<samp>e</samp>&rsquo;</dt>
+<dd><p>add extradata to all packets
+</p></dd>
+</dl>
+
+<p>If not specified it is assumed &lsquo;<samp>k</samp>&rsquo;.
+</p>
+<p>For example the following <code>ffmpeg</code> command forces a global
+header (thus disabling individual packet headers) in the H.264 packets
+generated by the <code>libx264</code> encoder, but corrects them by adding
+the header stored in extradata to the key packets:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -map 0 -flags:v +global_header -c:v libx264 -bsf:v dump_extra out.ts
+</pre></td></tr></table>
+
+<a name="h264_005fmp4toannexb"></a>
+<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-h264_005fmp4toannexb">2.4 h264_mp4toannexb</a></h2>
+
+<p>Convert an H.264 bitstream from length prefixed mode to start code
+prefixed mode (as defined in the Annex B of the ITU-T H.264
+specification).
+</p>
+<p>This is required by some streaming formats, typically the MPEG-2
+transport stream format (&quot;mpegts&quot;).
+</p>
+<p>For example to remux an MP4 file containing an H.264 stream to mpegts
+format with <code>ffmpeg</code>, you can use the command:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT.mp4 -codec copy -bsf:v h264_mp4toannexb OUTPUT.ts
+</pre></td></tr></table>
+
+<a name="imx_005fdump_005fheader"></a>
+<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-imx_005fdump_005fheader">2.5 imx_dump_header</a></h2>
+
+<a name="mjpeg2jpeg"></a>
+<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-mjpeg2jpeg">2.6 mjpeg2jpeg</a></h2>
+
+<p>Convert MJPEG/AVI1 packets to full JPEG/JFIF packets.
+</p>
+<p>MJPEG is a video codec wherein each video frame is essentially a
+JPEG image. The individual frames can be extracted without loss,
+e.g. by
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i ../some_mjpeg.avi -c:v copy frames_%d.jpg
+</pre></td></tr></table>
+
+<p>Unfortunately, these chunks are incomplete JPEG images, because
+they lack the DHT segment required for decoding. Quoting from
+<a href="http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml">http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml</a>:
+</p>
+<p>Avery Lee, writing in the rec.video.desktop newsgroup in 2001,
+commented that &quot;MJPEG, or at least the MJPEG in AVIs having the
+MJPG fourcc, is restricted JPEG with a fixed &ndash; and *omitted* &ndash;
+Huffman table. The JPEG must be YCbCr colorspace, it must be 4:2:2,
+and it must use basic Huffman encoding, not arithmetic or
+progressive. . . . You can indeed extract the MJPEG frames and
+decode them with a regular JPEG decoder, but you have to prepend
+the DHT segment to them, or else the decoder won&rsquo;t have any idea
+how to decompress the data. The exact table necessary is given in
+the OpenDML spec.&quot;
+</p>
+<p>This bitstream filter patches the header of frames extracted from an MJPEG
+stream (carrying the AVI1 header ID and lacking a DHT segment) to
+produce fully qualified JPEG images.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i mjpeg-movie.avi -c:v copy -bsf:v mjpeg2jpeg frame_%d.jpg
+exiftran -i -9 frame*.jpg
+ffmpeg -i frame_%d.jpg -c:v copy rotated.avi
+</pre></td></tr></table>
+
+<a name="mjpega_005fdump_005fheader"></a>
+<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-mjpega_005fdump_005fheader">2.7 mjpega_dump_header</a></h2>
+
+<a name="movsub"></a>
+<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-movsub">2.8 movsub</a></h2>
+
+<a name="mp3_005fheader_005fdecompress"></a>
+<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-mp3_005fheader_005fdecompress">2.9 mp3_header_decompress</a></h2>
+
+<a name="noise"></a>
+<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-noise">2.10 noise</a></h2>
+
+<a name="remove_005fextra"></a>
+<h2 class="section"><a href="ffmpeg-bitstream-filters.html#toc-remove_005fextra">2.11 remove_extra</a></h2>
+
+
+<a name="See-Also"></a>
+<h1 class="chapter"><a href="ffmpeg-bitstream-filters.html#toc-See-Also">3. See Also</a></h1>
+
+<p><a href="ffmpeg.html">ffmpeg</a>, <a href="ffplay.html">ffplay</a>, <a href="ffprobe.html">ffprobe</a>, <a href="ffserver.html">ffserver</a>,
+<a href="libavcodec.html">libavcodec</a>
+</p>
+
+<a name="Authors"></a>
+<h1 class="chapter"><a href="ffmpeg-bitstream-filters.html#toc-Authors">4. Authors</a></h1>
+
+<p>The FFmpeg developers.
+</p>
+<p>For details about the authorship, see the Git history of the project
+(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
+<code>git log</code> in the FFmpeg source directory, or browsing the
+online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
+</p>
+<p>Maintainers for the specific components are listed in the file
+&lsquo;<tt>MAINTAINERS</tt>&rsquo; in the source code tree.
+</p>
+
+<footer class="footer pagination-right">
+<span class="label label-info">This document was generated by <em>Kyle Schwarz</em> on <em>December 14, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies/ffmpeg/doc/ffmpeg-codecs.html b/dependencies/ffmpeg/doc/ffmpeg-codecs.html
new file mode 100644 (file)
index 0000000..a6d724c
--- /dev/null
@@ -0,0 +1,4014 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on December 14, 2013 by texi2html 1.82 -->
+<!--
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>FFmpeg documentation : FFmpeg Codecs </title>
+
+<meta name="description" content="FFmpeg Codecs Documentation: ">
+<meta name="keywords" content="FFmpeg documentation : FFmpeg Codecs ">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="default.css" />
+
+<link rel="icon" href="favicon.png" type="image/png" />
+</head>
+<body>
+<div id="container">
+<div id="body">
+
+<a name="SEC_Top"></a>
+<h1 class="settitle">FFmpeg Codecs Documentation</h1>
+
+<a name="SEC_Contents"></a>
+<h1>Table of Contents</h1>
+<div class="contents">
+
+<ul class="toc">
+  <li><a name="toc-Description" href="#Description">1. Description</a></li>
+  <li><a name="toc-Codec-Options" href="#Codec-Options">2. Codec Options</a></li>
+  <li><a name="toc-Decoders" href="#Decoders">3. Decoders</a></li>
+  <li><a name="toc-Video-Decoders" href="#Video-Decoders">4. Video Decoders</a>
+  <ul class="toc">
+    <li><a name="toc-rawvideo" href="#rawvideo">4.1 rawvideo</a>
+    <ul class="toc">
+      <li><a name="toc-Options-17" href="#Options-17">4.1.1 Options</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Audio-Decoders" href="#Audio-Decoders">5. Audio Decoders</a>
+  <ul class="toc">
+    <li><a name="toc-ffwavesynth" href="#ffwavesynth">5.1 ffwavesynth</a></li>
+    <li><a name="toc-libcelt" href="#libcelt">5.2 libcelt</a></li>
+    <li><a name="toc-libgsm" href="#libgsm">5.3 libgsm</a></li>
+    <li><a name="toc-libilbc" href="#libilbc">5.4 libilbc</a>
+    <ul class="toc">
+      <li><a name="toc-Options-13" href="#Options-13">5.4.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libopencore_002damrnb" href="#libopencore_002damrnb">5.5 libopencore-amrnb</a></li>
+    <li><a name="toc-libopencore_002damrwb" href="#libopencore_002damrwb">5.6 libopencore-amrwb</a></li>
+    <li><a name="toc-libopus" href="#libopus">5.7 libopus</a></li>
+  </ul></li>
+  <li><a name="toc-Subtitles-Decoders" href="#Subtitles-Decoders">6. Subtitles Decoders</a>
+  <ul class="toc">
+    <li><a name="toc-dvdsub" href="#dvdsub">6.1 dvdsub</a>
+    <ul class="toc">
+      <li><a name="toc-Options-7" href="#Options-7">6.1.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libzvbi_002dteletext" href="#libzvbi_002dteletext">6.2 libzvbi-teletext</a>
+    <ul class="toc">
+      <li><a name="toc-Options-11" href="#Options-11">6.2.1 Options</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Encoders" href="#Encoders">7. Encoders</a></li>
+  <li><a name="toc-Audio-Encoders" href="#Audio-Encoders">8. Audio Encoders</a>
+  <ul class="toc">
+    <li><a name="toc-aac" href="#aac">8.1 aac</a>
+    <ul class="toc">
+      <li><a name="toc-Options-8" href="#Options-8">8.1.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-ac3-and-ac3_005ffixed" href="#ac3-and-ac3_005ffixed">8.2 ac3 and ac3_fixed</a>
+    <ul class="toc">
+      <li><a name="toc-AC_002d3-Metadata" href="#AC_002d3-Metadata">8.2.1 AC-3 Metadata</a>
+      <ul class="toc">
+        <li><a name="toc-Metadata-Control-Options" href="#Metadata-Control-Options">8.2.1.1 Metadata Control Options</a></li>
+        <li><a name="toc-Downmix-Levels" href="#Downmix-Levels">8.2.1.2 Downmix Levels</a></li>
+        <li><a name="toc-Audio-Production-Information" href="#Audio-Production-Information">8.2.1.3 Audio Production Information</a></li>
+        <li><a name="toc-Other-Metadata-Options" href="#Other-Metadata-Options">8.2.1.4 Other Metadata Options</a></li>
+      </ul></li>
+      <li><a name="toc-Extended-Bitstream-Information" href="#Extended-Bitstream-Information">8.2.2 Extended Bitstream Information</a>
+      <ul class="toc">
+        <li><a name="toc-Extended-Bitstream-Information-_002d-Part-1" href="#Extended-Bitstream-Information-_002d-Part-1">8.2.2.1 Extended Bitstream Information - Part 1</a></li>
+        <li><a name="toc-Extended-Bitstream-Information-_002d-Part-2" href="#Extended-Bitstream-Information-_002d-Part-2">8.2.2.2 Extended Bitstream Information - Part 2</a></li>
+      </ul></li>
+      <li><a name="toc-Other-AC_002d3-Encoding-Options" href="#Other-AC_002d3-Encoding-Options">8.2.3 Other AC-3 Encoding Options</a></li>
+      <li><a name="toc-Floating_002dPoint_002dOnly-AC_002d3-Encoding-Options" href="#Floating_002dPoint_002dOnly-AC_002d3-Encoding-Options">8.2.4 Floating-Point-Only AC-3 Encoding Options</a></li>
+    </ul></li>
+    <li><a name="toc-libfaac-1" href="#libfaac-1">8.3 libfaac</a>
+    <ul class="toc">
+      <li><a name="toc-Options-10" href="#Options-10">8.3.1 Options</a></li>
+      <li><a name="toc-Examples-1" href="#Examples-1">8.3.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-libfdk_005faac" href="#libfdk_005faac">8.4 libfdk_aac</a>
+    <ul class="toc">
+      <li><a name="toc-Options-5" href="#Options-5">8.4.1 Options</a></li>
+      <li><a name="toc-Examples-2" href="#Examples-2">8.4.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-libmp3lame-1" href="#libmp3lame-1">8.5 libmp3lame</a>
+    <ul class="toc">
+      <li><a name="toc-Options-12" href="#Options-12">8.5.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libopencore_002damrnb-1" href="#libopencore_002damrnb-1">8.6 libopencore-amrnb</a>
+    <ul class="toc">
+      <li><a name="toc-Options-9" href="#Options-9">8.6.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libshine-1" href="#libshine-1">8.7 libshine</a>
+    <ul class="toc">
+      <li><a name="toc-Options" href="#Options">8.7.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libtwolame" href="#libtwolame">8.8 libtwolame</a>
+    <ul class="toc">
+      <li><a name="toc-Options-1" href="#Options-1">8.8.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libvo_002daacenc-1" href="#libvo_002daacenc-1">8.9 libvo-aacenc</a>
+    <ul class="toc">
+      <li><a name="toc-Options-4" href="#Options-4">8.9.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libvo_002damrwbenc" href="#libvo_002damrwbenc">8.10 libvo-amrwbenc</a>
+    <ul class="toc">
+      <li><a name="toc-Options-15" href="#Options-15">8.10.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libopus-1" href="#libopus-1">8.11 libopus</a>
+    <ul class="toc">
+      <li><a name="toc-Option-Mapping" href="#Option-Mapping">8.11.1 Option Mapping</a></li>
+    </ul></li>
+    <li><a name="toc-libvorbis" href="#libvorbis">8.12 libvorbis</a>
+    <ul class="toc">
+      <li><a name="toc-Options-16" href="#Options-16">8.12.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libwavpack" href="#libwavpack">8.13 libwavpack</a></li>
+  </ul></li>
+  <li><a name="toc-Video-Encoders" href="#Video-Encoders">9. Video Encoders</a>
+  <ul class="toc">
+    <li><a name="toc-libtheora" href="#libtheora">9.1 libtheora</a>
+    <ul class="toc">
+      <li><a name="toc-Options-14" href="#Options-14">9.1.1 Options</a></li>
+      <li><a name="toc-Examples" href="#Examples">9.1.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-libvpx" href="#libvpx">9.2 libvpx</a>
+    <ul class="toc">
+      <li><a name="toc-Options-3" href="#Options-3">9.2.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libx264" href="#libx264">9.3 libx264</a>
+    <ul class="toc">
+      <li><a name="toc-Options-6" href="#Options-6">9.3.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libxvid" href="#libxvid">9.4 libxvid</a>
+    <ul class="toc">
+      <li><a name="toc-Options-2" href="#Options-2">9.4.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-png" href="#png">9.5 png</a>
+    <ul class="toc">
+      <li><a name="toc-Private-options" href="#Private-options">9.5.1 Private options</a></li>
+    </ul></li>
+    <li><a name="toc-ProRes" href="#ProRes">9.6 ProRes</a>
+    <ul class="toc">
+      <li><a name="toc-Private-Options-for-prores_002dks" href="#Private-Options-for-prores_002dks">9.6.1 Private Options for prores-ks</a></li>
+      <li><a name="toc-Speed-considerations" href="#Speed-considerations">9.6.2 Speed considerations</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-See-Also" href="#See-Also">10. See Also</a></li>
+  <li><a name="toc-Authors" href="#Authors">11. Authors</a></li>
+</ul>
+</div>
+
+<a name="Description"></a>
+<h1 class="chapter"><a href="ffmpeg-codecs.html#toc-Description">1. Description</a></h1>
+
+<p>This document describes the codecs (decoders and encoders) provided by
+the libavcodec library.
+</p>
+
+<p><a name="codec_002doptions"></a>
+</p><a name="Codec-Options"></a>
+<h1 class="chapter"><a href="ffmpeg-codecs.html#toc-Codec-Options">2. Codec Options</a></h1>
+
+<p>libavcodec provides some generic global options, which can be set on
+all the encoders and decoders. In addition each codec may support
+so-called private options, which are specific for a given codec.
+</p>
+<p>Sometimes, a global option may only affect a specific kind of codec,
+and may be unsensical or ignored by another, so you need to be aware
+of the meaning of the specified options. Also some options are
+meant only for decoding or encoding.
+</p>
+<p>Options may be set by specifying -<var>option</var> <var>value</var> in the
+FFmpeg tools, or by setting the value explicitly in the
+<code>AVCodecContext</code> options or using the &lsquo;<tt>libavutil/opt.h</tt>&rsquo; API
+for programmatic use.
+</p>
+<p>The list of supported options follow:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set bitrate in bits/s. Default value is 200K.
+</p>
+</dd>
+<dt> &lsquo;<samp>ab <var>integer</var> (<em>encoding,audio</em>)</samp>&rsquo;</dt>
+<dd><p>Set audio bitrate (in bits/s). Default value is 128K.
+</p>
+</dd>
+<dt> &lsquo;<samp>bt <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set video bitrate tolerance (in bits/s). In 1-pass mode, bitrate
+tolerance specifies how far ratecontrol is willing to deviate from the
+target average bitrate value. This is not related to min/max
+bitrate. Lowering tolerance too much has an adverse effect on quality.
+</p>
+</dd>
+<dt> &lsquo;<samp>flags <var>flags</var> (<em>decoding/encoding,audio,video,subtitles</em>)</samp>&rsquo;</dt>
+<dd><p>Set generic flags.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>mv4</samp>&rsquo;</dt>
+<dd><p>Use four motion vector by macroblock (mpeg4).
+</p></dd>
+<dt> &lsquo;<samp>qpel</samp>&rsquo;</dt>
+<dd><p>Use 1/4 pel motion compensation.
+</p></dd>
+<dt> &lsquo;<samp>loop</samp>&rsquo;</dt>
+<dd><p>Use loop filter.
+</p></dd>
+<dt> &lsquo;<samp>qscale</samp>&rsquo;</dt>
+<dd><p>Use fixed qscale.
+</p></dd>
+<dt> &lsquo;<samp>gmc</samp>&rsquo;</dt>
+<dd><p>Use gmc.
+</p></dd>
+<dt> &lsquo;<samp>mv0</samp>&rsquo;</dt>
+<dd><p>Always try a mb with mv=&lt;0,0&gt;.
+</p></dd>
+<dt> &lsquo;<samp>input_preserved</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>pass1</samp>&rsquo;</dt>
+<dd><p>Use internal 2pass ratecontrol in first pass mode.
+</p></dd>
+<dt> &lsquo;<samp>pass2</samp>&rsquo;</dt>
+<dd><p>Use internal 2pass ratecontrol in second pass mode.
+</p></dd>
+<dt> &lsquo;<samp>gray</samp>&rsquo;</dt>
+<dd><p>Only decode/encode grayscale.
+</p></dd>
+<dt> &lsquo;<samp>emu_edge</samp>&rsquo;</dt>
+<dd><p>Do not draw edges.
+</p></dd>
+<dt> &lsquo;<samp>psnr</samp>&rsquo;</dt>
+<dd><p>Set error[?] variables during encoding.
+</p></dd>
+<dt> &lsquo;<samp>truncated</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>naq</samp>&rsquo;</dt>
+<dd><p>Normalize adaptive quantization.
+</p></dd>
+<dt> &lsquo;<samp>ildct</samp>&rsquo;</dt>
+<dd><p>Use interlaced DCT.
+</p></dd>
+<dt> &lsquo;<samp>low_delay</samp>&rsquo;</dt>
+<dd><p>Force low delay.
+</p></dd>
+<dt> &lsquo;<samp>global_header</samp>&rsquo;</dt>
+<dd><p>Place global headers in extradata instead of every keyframe.
+</p></dd>
+<dt> &lsquo;<samp>bitexact</samp>&rsquo;</dt>
+<dd><p>Use only bitexact stuff (except (I)DCT).
+</p></dd>
+<dt> &lsquo;<samp>aic</samp>&rsquo;</dt>
+<dd><p>Apply H263 advanced intra coding / mpeg4 ac prediction.
+</p></dd>
+<dt> &lsquo;<samp>cbp</samp>&rsquo;</dt>
+<dd><p>Deprecated, use mpegvideo private options instead.
+</p></dd>
+<dt> &lsquo;<samp>qprd</samp>&rsquo;</dt>
+<dd><p>Deprecated, use mpegvideo private options instead.
+</p></dd>
+<dt> &lsquo;<samp>ilme</samp>&rsquo;</dt>
+<dd><p>Apply interlaced motion estimation.
+</p></dd>
+<dt> &lsquo;<samp>cgop</samp>&rsquo;</dt>
+<dd><p>Use closed gop.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>me_method <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set motion estimation method.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>zero motion estimation (fastest)
+</p></dd>
+<dt> &lsquo;<samp>full</samp>&rsquo;</dt>
+<dd><p>full motion estimation (slowest)
+</p></dd>
+<dt> &lsquo;<samp>epzs</samp>&rsquo;</dt>
+<dd><p>EPZS motion estimation (default)
+</p></dd>
+<dt> &lsquo;<samp>esa</samp>&rsquo;</dt>
+<dd><p>esa motion estimation (alias for full)
+</p></dd>
+<dt> &lsquo;<samp>tesa</samp>&rsquo;</dt>
+<dd><p>tesa motion estimation
+</p></dd>
+<dt> &lsquo;<samp>dia</samp>&rsquo;</dt>
+<dd><p>dia motion estimation (alias for epzs)
+</p></dd>
+<dt> &lsquo;<samp>log</samp>&rsquo;</dt>
+<dd><p>log motion estimation
+</p></dd>
+<dt> &lsquo;<samp>phods</samp>&rsquo;</dt>
+<dd><p>phods motion estimation
+</p></dd>
+<dt> &lsquo;<samp>x1</samp>&rsquo;</dt>
+<dd><p>X1 motion estimation
+</p></dd>
+<dt> &lsquo;<samp>hex</samp>&rsquo;</dt>
+<dd><p>hex motion estimation
+</p></dd>
+<dt> &lsquo;<samp>umh</samp>&rsquo;</dt>
+<dd><p>umh motion estimation
+</p></dd>
+<dt> &lsquo;<samp>iter</samp>&rsquo;</dt>
+<dd><p>iter motion estimation
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>extradata_size <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Set extradata size.
+</p>
+</dd>
+<dt> &lsquo;<samp>time_base <var>rational number</var></samp>&rsquo;</dt>
+<dd><p>Set codec time base.
+</p>
+<p>It is the fundamental unit of time (in seconds) in terms of which
+frame timestamps are represented. For fixed-fps content, timebase
+should be <code>1 / frame_rate</code> and timestamp increments should be
+identically 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>g <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set the group of picture size. Default value is 12.
+</p>
+</dd>
+<dt> &lsquo;<samp>ar <var>integer</var> (<em>decoding/encoding,audio</em>)</samp>&rsquo;</dt>
+<dd><p>Set audio sampling rate (in Hz).
+</p>
+</dd>
+<dt> &lsquo;<samp>ac <var>integer</var> (<em>decoding/encoding,audio</em>)</samp>&rsquo;</dt>
+<dd><p>Set number of audio channels.
+</p>
+</dd>
+<dt> &lsquo;<samp>cutoff <var>integer</var> (<em>encoding,audio</em>)</samp>&rsquo;</dt>
+<dd><p>Set cutoff bandwidth.
+</p>
+</dd>
+<dt> &lsquo;<samp>frame_size <var>integer</var> (<em>encoding,audio</em>)</samp>&rsquo;</dt>
+<dd><p>Set audio frame size.
+</p>
+<p>Each submitted frame except the last must contain exactly frame_size
+samples per channel. May be 0 when the codec has
+CODEC_CAP_VARIABLE_FRAME_SIZE set, in that case the frame size is not
+restricted. It is set by some decoders to indicate constant frame
+size.
+</p>
+</dd>
+<dt> &lsquo;<samp>frame_number <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Set the frame number.
+</p>
+</dd>
+<dt> &lsquo;<samp>delay <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qcomp <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set video quantizer scale compression (VBR). It is used as a constant
+in the ratecontrol equation. Recommended range for default rc_eq:
+0.0-1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>qblur <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set video quantizer scale blur (VBR).
+</p>
+</dd>
+<dt> &lsquo;<samp>qmin <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set min video quantizer scale (VBR). Must be included between -1 and
+69, default value is 2.
+</p>
+</dd>
+<dt> &lsquo;<samp>qmax <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set max video quantizer scale (VBR). Must be included between -1 and
+1024, default value is 31.
+</p>
+</dd>
+<dt> &lsquo;<samp>qdiff <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set max difference between the quantizer scale (VBR).
+</p>
+</dd>
+<dt> &lsquo;<samp>bf <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set max number of B frames between non-B-frames.
+</p>
+<p>Must be an integer between -1 and 16. 0 means that B-frames are
+disabled. If a value of -1 is used, it will choose an automatic value
+depending on the encoder.
+</p>
+<p>Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>b_qfactor <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set qp factor between P and B frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_strategy <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set ratecontrol method.
+</p>
+</dd>
+<dt> &lsquo;<samp>b_strategy <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set strategy to choose between I/P/B-frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>ps <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set RTP payload size in bytes.
+</p>
+</dd>
+<dt> &lsquo;<samp>mv_bits <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>header_bits <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>i_tex_bits <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>p_tex_bits <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>i_count <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>p_count <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>skip_count <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>misc_bits <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>frame_bits <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>codec_tag <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bug <var>flags</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Workaround not auto detected encoder bugs.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>autodetect</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>old_msmpeg4</samp>&rsquo;</dt>
+<dd><p>some old lavc generated msmpeg4v3 files (no autodetection)
+</p></dd>
+<dt> &lsquo;<samp>xvid_ilace</samp>&rsquo;</dt>
+<dd><p>Xvid interlacing bug (autodetected if fourcc==XVIX)
+</p></dd>
+<dt> &lsquo;<samp>ump4</samp>&rsquo;</dt>
+<dd><p>(autodetected if fourcc==UMP4)
+</p></dd>
+<dt> &lsquo;<samp>no_padding</samp>&rsquo;</dt>
+<dd><p>padding bug (autodetected)
+</p></dd>
+<dt> &lsquo;<samp>amv</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ac_vlc</samp>&rsquo;</dt>
+<dd><p>illegal vlc bug (autodetected per fourcc)
+</p></dd>
+<dt> &lsquo;<samp>qpel_chroma</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>std_qpel</samp>&rsquo;</dt>
+<dd><p>old standard qpel (autodetected per fourcc/version)
+</p></dd>
+<dt> &lsquo;<samp>qpel_chroma2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>direct_blocksize</samp>&rsquo;</dt>
+<dd><p>direct-qpel-blocksize bug (autodetected per fourcc/version)
+</p></dd>
+<dt> &lsquo;<samp>edge</samp>&rsquo;</dt>
+<dd><p>edge padding bug (autodetected per fourcc/version)
+</p></dd>
+<dt> &lsquo;<samp>hpel_chroma</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dc_clip</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ms</samp>&rsquo;</dt>
+<dd><p>Workaround various bugs in microsoft broken decoders.
+</p></dd>
+<dt> &lsquo;<samp>trunc</samp>&rsquo;</dt>
+<dd><p>trancated frames
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>lelim <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set single coefficient elimination threshold for luminance (negative
+values also consider DC coefficient).
+</p>
+</dd>
+<dt> &lsquo;<samp>celim <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set single coefficient elimination threshold for chrominance (negative
+values also consider dc coefficient)
+</p>
+</dd>
+<dt> &lsquo;<samp>strict <var>integer</var> (<em>decoding/encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd><p>Specify how strictly to follow the standards.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>very</samp>&rsquo;</dt>
+<dd><p>strictly conform to a older more strict version of the spec or reference software
+</p></dd>
+<dt> &lsquo;<samp>strict</samp>&rsquo;</dt>
+<dd><p>strictly conform to all the things in the spec no matter what consequences
+</p></dd>
+<dt> &lsquo;<samp>normal</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>unofficial</samp>&rsquo;</dt>
+<dd><p>allow unofficial extensions
+</p></dd>
+<dt> &lsquo;<samp>experimental</samp>&rsquo;</dt>
+<dd><p>allow non standardized experimental things, experimental
+(unfinished/work in progress/not well tested) decoders and encoders.
+Note: experimental decoders can pose a security risk, do not use this for
+decoding untrusted input.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>b_qoffset <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set QP offset between P and B frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>err_detect <var>flags</var> (<em>decoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set error detection flags.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>crccheck</samp>&rsquo;</dt>
+<dd><p>verify embedded CRCs
+</p></dd>
+<dt> &lsquo;<samp>bitstream</samp>&rsquo;</dt>
+<dd><p>detect bitstream specification deviations
+</p></dd>
+<dt> &lsquo;<samp>buffer</samp>&rsquo;</dt>
+<dd><p>detect improper bitstream length
+</p></dd>
+<dt> &lsquo;<samp>explode</samp>&rsquo;</dt>
+<dd><p>abort decoding on minor error detection
+</p></dd>
+<dt> &lsquo;<samp>careful</samp>&rsquo;</dt>
+<dd><p>consider things that violate the spec and have not been seen in the wild as errors
+</p></dd>
+<dt> &lsquo;<samp>compliant</samp>&rsquo;</dt>
+<dd><p>consider all spec non compliancies as errors
+</p></dd>
+<dt> &lsquo;<samp>aggressive</samp>&rsquo;</dt>
+<dd><p>consider things that a sane encoder should not do as an error
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>has_b_frames <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>block_align <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mpeg_quant <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Use MPEG quantizers instead of H.263.
+</p>
+</dd>
+<dt> &lsquo;<samp>qsquish <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>How to keep quantizer between qmin and qmax (0 = clip, 1 = use
+differentiable function).
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_qmod_amp <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set experimental quantizer modulation.
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_qmod_freq <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set experimental quantizer modulation.
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_override_count <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>rc_eq <var>string</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set rate control equation. When computing the expression, besides the
+standard functions defined in the section &rsquo;Expression Evaluation&rsquo;, the
+following functions are available: bits2qp(bits), qp2bits(qp). Also
+the following constants are available: iTex pTex tex mv fCode iCount
+mcVar var isI isP isB avgQP qComp avgIITex avgPITex avgPPTex avgBPTex
+avgTex.
+</p>
+</dd>
+<dt> &lsquo;<samp>maxrate <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set max bitrate tolerance (in bits/s). Requires bufsize to be set.
+</p>
+</dd>
+<dt> &lsquo;<samp>minrate <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set min bitrate tolerance (in bits/s). Most useful in setting up a CBR
+encode. It is of little use elsewise.
+</p>
+</dd>
+<dt> &lsquo;<samp>bufsize <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set ratecontrol buffer size (in bits).
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_buf_aggressivity <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Currently useless.
+</p>
+</dd>
+<dt> &lsquo;<samp>i_qfactor <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set QP factor between P and I frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>i_qoffset <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set QP offset between P and I frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_init_cplx <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set initial complexity for 1-pass encoding.
+</p>
+</dd>
+<dt> &lsquo;<samp>dct <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set DCT algorithm.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>autoselect a good one (default)
+</p></dd>
+<dt> &lsquo;<samp>fastint</samp>&rsquo;</dt>
+<dd><p>fast integer
+</p></dd>
+<dt> &lsquo;<samp>int</samp>&rsquo;</dt>
+<dd><p>accurate integer
+</p></dd>
+<dt> &lsquo;<samp>mmx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>altivec</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>faan</samp>&rsquo;</dt>
+<dd><p>floating point AAN DCT
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>lumi_mask <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Compress bright areas stronger than medium ones.
+</p>
+</dd>
+<dt> &lsquo;<samp>tcplx_mask <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set temporal complexity masking.
+</p>
+</dd>
+<dt> &lsquo;<samp>scplx_mask <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set spatial complexity masking.
+</p>
+</dd>
+<dt> &lsquo;<samp>p_mask <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set inter masking.
+</p>
+</dd>
+<dt> &lsquo;<samp>dark_mask <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Compress dark areas stronger than medium ones.
+</p>
+</dd>
+<dt> &lsquo;<samp>idct <var>integer</var> (<em>decoding/encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Select IDCT implementation.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>int</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>simple</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>simplemmx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>arm</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>altivec</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sh4</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>simplearm</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>simplearmv5te</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>simplearmv6</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>simpleneon</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>simplealpha</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ipp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>xvidmmx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>faani</samp>&rsquo;</dt>
+<dd><p>floating point AAN IDCT
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>slice_count <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ec <var>flags</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set error concealment strategy.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>guess_mvs</samp>&rsquo;</dt>
+<dd><p>iterative motion vector (MV) search (slow)
+</p></dd>
+<dt> &lsquo;<samp>deblock</samp>&rsquo;</dt>
+<dd><p>use strong deblock filter for damaged MBs
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>bits_per_coded_sample <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>pred <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set prediction method.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>left</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>plane</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>median</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>aspect <var>rational number</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set sample aspect ratio.
+</p>
+</dd>
+<dt> &lsquo;<samp>debug <var>flags</var> (<em>decoding/encoding,audio,video,subtitles</em>)</samp>&rsquo;</dt>
+<dd><p>Print specific debug info.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>pict</samp>&rsquo;</dt>
+<dd><p>picture info
+</p></dd>
+<dt> &lsquo;<samp>rc</samp>&rsquo;</dt>
+<dd><p>rate control
+</p></dd>
+<dt> &lsquo;<samp>bitstream</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mb_type</samp>&rsquo;</dt>
+<dd><p>macroblock (MB) type
+</p></dd>
+<dt> &lsquo;<samp>qp</samp>&rsquo;</dt>
+<dd><p>per-block quantization parameter (QP)
+</p></dd>
+<dt> &lsquo;<samp>mv</samp>&rsquo;</dt>
+<dd><p>motion vector
+</p></dd>
+<dt> &lsquo;<samp>dct_coeff</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>skip</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>startcode</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>er</samp>&rsquo;</dt>
+<dd><p>error recognition
+</p></dd>
+<dt> &lsquo;<samp>mmco</samp>&rsquo;</dt>
+<dd><p>memory management control operations (H.264)
+</p></dd>
+<dt> &lsquo;<samp>bugs</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vis_qp</samp>&rsquo;</dt>
+<dd><p>visualize quantization parameter (QP), lower QP are tinted greener
+</p></dd>
+<dt> &lsquo;<samp>vis_mb_type</samp>&rsquo;</dt>
+<dd><p>visualize block types
+</p></dd>
+<dt> &lsquo;<samp>buffers</samp>&rsquo;</dt>
+<dd><p>picture buffer allocations
+</p></dd>
+<dt> &lsquo;<samp>thread_ops</samp>&rsquo;</dt>
+<dd><p>threading operations
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>vismv <var>integer</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Visualize motion vectors (MVs).
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>pf</samp>&rsquo;</dt>
+<dd><p>forward predicted MVs of P-frames
+</p></dd>
+<dt> &lsquo;<samp>bf</samp>&rsquo;</dt>
+<dd><p>forward predicted MVs of B-frames
+</p></dd>
+<dt> &lsquo;<samp>bb</samp>&rsquo;</dt>
+<dd><p>backward predicted MVs of B-frames
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>cmp <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set full pel me compare function.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sad</samp>&rsquo;</dt>
+<dd><p>sum of absolute differences, fast (default)
+</p></dd>
+<dt> &lsquo;<samp>sse</samp>&rsquo;</dt>
+<dd><p>sum of squared errors
+</p></dd>
+<dt> &lsquo;<samp>satd</samp>&rsquo;</dt>
+<dd><p>sum of absolute Hadamard transformed differences
+</p></dd>
+<dt> &lsquo;<samp>dct</samp>&rsquo;</dt>
+<dd><p>sum of absolute DCT transformed differences
+</p></dd>
+<dt> &lsquo;<samp>psnr</samp>&rsquo;</dt>
+<dd><p>sum of squared quantization errors (avoid, low quality)
+</p></dd>
+<dt> &lsquo;<samp>bit</samp>&rsquo;</dt>
+<dd><p>number of bits needed for the block
+</p></dd>
+<dt> &lsquo;<samp>rd</samp>&rsquo;</dt>
+<dd><p>rate distortion optimal, slow
+</p></dd>
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>0
+</p></dd>
+<dt> &lsquo;<samp>vsad</samp>&rsquo;</dt>
+<dd><p>sum of absolute vertical differences
+</p></dd>
+<dt> &lsquo;<samp>vsse</samp>&rsquo;</dt>
+<dd><p>sum of squared vertical differences
+</p></dd>
+<dt> &lsquo;<samp>nsse</samp>&rsquo;</dt>
+<dd><p>noise preserving sum of squared differences
+</p></dd>
+<dt> &lsquo;<samp>w53</samp>&rsquo;</dt>
+<dd><p>5/3 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>w97</samp>&rsquo;</dt>
+<dd><p>9/7 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>dctmax</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>subcmp <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set sub pel me compare function.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sad</samp>&rsquo;</dt>
+<dd><p>sum of absolute differences, fast (default)
+</p></dd>
+<dt> &lsquo;<samp>sse</samp>&rsquo;</dt>
+<dd><p>sum of squared errors
+</p></dd>
+<dt> &lsquo;<samp>satd</samp>&rsquo;</dt>
+<dd><p>sum of absolute Hadamard transformed differences
+</p></dd>
+<dt> &lsquo;<samp>dct</samp>&rsquo;</dt>
+<dd><p>sum of absolute DCT transformed differences
+</p></dd>
+<dt> &lsquo;<samp>psnr</samp>&rsquo;</dt>
+<dd><p>sum of squared quantization errors (avoid, low quality)
+</p></dd>
+<dt> &lsquo;<samp>bit</samp>&rsquo;</dt>
+<dd><p>number of bits needed for the block
+</p></dd>
+<dt> &lsquo;<samp>rd</samp>&rsquo;</dt>
+<dd><p>rate distortion optimal, slow
+</p></dd>
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>0
+</p></dd>
+<dt> &lsquo;<samp>vsad</samp>&rsquo;</dt>
+<dd><p>sum of absolute vertical differences
+</p></dd>
+<dt> &lsquo;<samp>vsse</samp>&rsquo;</dt>
+<dd><p>sum of squared vertical differences
+</p></dd>
+<dt> &lsquo;<samp>nsse</samp>&rsquo;</dt>
+<dd><p>noise preserving sum of squared differences
+</p></dd>
+<dt> &lsquo;<samp>w53</samp>&rsquo;</dt>
+<dd><p>5/3 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>w97</samp>&rsquo;</dt>
+<dd><p>9/7 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>dctmax</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>mbcmp <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set macroblock compare function.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sad</samp>&rsquo;</dt>
+<dd><p>sum of absolute differences, fast (default)
+</p></dd>
+<dt> &lsquo;<samp>sse</samp>&rsquo;</dt>
+<dd><p>sum of squared errors
+</p></dd>
+<dt> &lsquo;<samp>satd</samp>&rsquo;</dt>
+<dd><p>sum of absolute Hadamard transformed differences
+</p></dd>
+<dt> &lsquo;<samp>dct</samp>&rsquo;</dt>
+<dd><p>sum of absolute DCT transformed differences
+</p></dd>
+<dt> &lsquo;<samp>psnr</samp>&rsquo;</dt>
+<dd><p>sum of squared quantization errors (avoid, low quality)
+</p></dd>
+<dt> &lsquo;<samp>bit</samp>&rsquo;</dt>
+<dd><p>number of bits needed for the block
+</p></dd>
+<dt> &lsquo;<samp>rd</samp>&rsquo;</dt>
+<dd><p>rate distortion optimal, slow
+</p></dd>
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>0
+</p></dd>
+<dt> &lsquo;<samp>vsad</samp>&rsquo;</dt>
+<dd><p>sum of absolute vertical differences
+</p></dd>
+<dt> &lsquo;<samp>vsse</samp>&rsquo;</dt>
+<dd><p>sum of squared vertical differences
+</p></dd>
+<dt> &lsquo;<samp>nsse</samp>&rsquo;</dt>
+<dd><p>noise preserving sum of squared differences
+</p></dd>
+<dt> &lsquo;<samp>w53</samp>&rsquo;</dt>
+<dd><p>5/3 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>w97</samp>&rsquo;</dt>
+<dd><p>9/7 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>dctmax</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>ildctcmp <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set interlaced dct compare function.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sad</samp>&rsquo;</dt>
+<dd><p>sum of absolute differences, fast (default)
+</p></dd>
+<dt> &lsquo;<samp>sse</samp>&rsquo;</dt>
+<dd><p>sum of squared errors
+</p></dd>
+<dt> &lsquo;<samp>satd</samp>&rsquo;</dt>
+<dd><p>sum of absolute Hadamard transformed differences
+</p></dd>
+<dt> &lsquo;<samp>dct</samp>&rsquo;</dt>
+<dd><p>sum of absolute DCT transformed differences
+</p></dd>
+<dt> &lsquo;<samp>psnr</samp>&rsquo;</dt>
+<dd><p>sum of squared quantization errors (avoid, low quality)
+</p></dd>
+<dt> &lsquo;<samp>bit</samp>&rsquo;</dt>
+<dd><p>number of bits needed for the block
+</p></dd>
+<dt> &lsquo;<samp>rd</samp>&rsquo;</dt>
+<dd><p>rate distortion optimal, slow
+</p></dd>
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>0
+</p></dd>
+<dt> &lsquo;<samp>vsad</samp>&rsquo;</dt>
+<dd><p>sum of absolute vertical differences
+</p></dd>
+<dt> &lsquo;<samp>vsse</samp>&rsquo;</dt>
+<dd><p>sum of squared vertical differences
+</p></dd>
+<dt> &lsquo;<samp>nsse</samp>&rsquo;</dt>
+<dd><p>noise preserving sum of squared differences
+</p></dd>
+<dt> &lsquo;<samp>w53</samp>&rsquo;</dt>
+<dd><p>5/3 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>w97</samp>&rsquo;</dt>
+<dd><p>9/7 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>dctmax</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>dia_size <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set diamond type &amp; size for motion estimation.
+</p>
+</dd>
+<dt> &lsquo;<samp>last_pred <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set amount of motion predictors from the previous frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>preme <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set pre motion estimation.
+</p>
+</dd>
+<dt> &lsquo;<samp>precmp <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set pre motion estimation compare function.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sad</samp>&rsquo;</dt>
+<dd><p>sum of absolute differences, fast (default)
+</p></dd>
+<dt> &lsquo;<samp>sse</samp>&rsquo;</dt>
+<dd><p>sum of squared errors
+</p></dd>
+<dt> &lsquo;<samp>satd</samp>&rsquo;</dt>
+<dd><p>sum of absolute Hadamard transformed differences
+</p></dd>
+<dt> &lsquo;<samp>dct</samp>&rsquo;</dt>
+<dd><p>sum of absolute DCT transformed differences
+</p></dd>
+<dt> &lsquo;<samp>psnr</samp>&rsquo;</dt>
+<dd><p>sum of squared quantization errors (avoid, low quality)
+</p></dd>
+<dt> &lsquo;<samp>bit</samp>&rsquo;</dt>
+<dd><p>number of bits needed for the block
+</p></dd>
+<dt> &lsquo;<samp>rd</samp>&rsquo;</dt>
+<dd><p>rate distortion optimal, slow
+</p></dd>
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>0
+</p></dd>
+<dt> &lsquo;<samp>vsad</samp>&rsquo;</dt>
+<dd><p>sum of absolute vertical differences
+</p></dd>
+<dt> &lsquo;<samp>vsse</samp>&rsquo;</dt>
+<dd><p>sum of squared vertical differences
+</p></dd>
+<dt> &lsquo;<samp>nsse</samp>&rsquo;</dt>
+<dd><p>noise preserving sum of squared differences
+</p></dd>
+<dt> &lsquo;<samp>w53</samp>&rsquo;</dt>
+<dd><p>5/3 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>w97</samp>&rsquo;</dt>
+<dd><p>9/7 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>dctmax</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>pre_dia_size <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set diamond type &amp; size for motion estimation pre-pass.
+</p>
+</dd>
+<dt> &lsquo;<samp>subq <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set sub pel motion estimation quality.
+</p>
+</dd>
+<dt> &lsquo;<samp>dtg_active_format <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>me_range <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set limit motion vectors range (1023 for DivX player).
+</p>
+</dd>
+<dt> &lsquo;<samp>ibias <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set intra quant bias.
+</p>
+</dd>
+<dt> &lsquo;<samp>pbias <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set inter quant bias.
+</p>
+</dd>
+<dt> &lsquo;<samp>color_table_id <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>global_quality <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>coder <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>vlc</samp>&rsquo;</dt>
+<dd><p>variable length coder / huffman coder
+</p></dd>
+<dt> &lsquo;<samp>ac</samp>&rsquo;</dt>
+<dd><p>arithmetic coder
+</p></dd>
+<dt> &lsquo;<samp>raw</samp>&rsquo;</dt>
+<dd><p>raw (no encoding)
+</p></dd>
+<dt> &lsquo;<samp>rle</samp>&rsquo;</dt>
+<dd><p>run-length coder
+</p></dd>
+<dt> &lsquo;<samp>deflate</samp>&rsquo;</dt>
+<dd><p>deflate-based coder
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>context <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set context model.
+</p>
+</dd>
+<dt> &lsquo;<samp>slice_flags <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>xvmc_acceleration <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mbd <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set macroblock decision algorithm (high quality mode).
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>simple</samp>&rsquo;</dt>
+<dd><p>use mbcmp (default)
+</p></dd>
+<dt> &lsquo;<samp>bits</samp>&rsquo;</dt>
+<dd><p>use fewest bits
+</p></dd>
+<dt> &lsquo;<samp>rd</samp>&rsquo;</dt>
+<dd><p>use best rate distortion
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>stream_codec_tag <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sc_threshold <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set scene change threshold.
+</p>
+</dd>
+<dt> &lsquo;<samp>lmin <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set min lagrange factor (VBR).
+</p>
+</dd>
+<dt> &lsquo;<samp>lmax <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set max lagrange factor (VBR).
+</p>
+</dd>
+<dt> &lsquo;<samp>nr <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set noise reduction.
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_init_occupancy <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set number of bits which should be loaded into the rc buffer before
+decoding starts.
+</p>
+</dd>
+<dt> &lsquo;<samp>flags2 <var>flags</var> (<em>decoding/encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>fast</samp>&rsquo;</dt>
+<dd><p>Allow non spec compliant speedup tricks.
+</p></dd>
+<dt> &lsquo;<samp>sgop</samp>&rsquo;</dt>
+<dd><p>Deprecated, use mpegvideo private options instead.
+</p></dd>
+<dt> &lsquo;<samp>noout</samp>&rsquo;</dt>
+<dd><p>Skip bitstream encoding.
+</p></dd>
+<dt> &lsquo;<samp>ignorecrop</samp>&rsquo;</dt>
+<dd><p>Ignore cropping information from sps.
+</p></dd>
+<dt> &lsquo;<samp>local_header</samp>&rsquo;</dt>
+<dd><p>Place global headers at every keyframe instead of in extradata.
+</p></dd>
+<dt> &lsquo;<samp>chunks</samp>&rsquo;</dt>
+<dd><p>Frame data might be split into multiple chunks.
+</p></dd>
+<dt> &lsquo;<samp>showall</samp>&rsquo;</dt>
+<dd><p>Show all frames before the first keyframe.
+</p></dd>
+<dt> &lsquo;<samp>skiprd</samp>&rsquo;</dt>
+<dd><p>Deprecated, use mpegvideo private options instead.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>error <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qns <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Deprecated, use mpegvideo private options instead.
+</p>
+</dd>
+<dt> &lsquo;<samp>threads <var>integer</var> (<em>decoding/encoding,video</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>detect a good number of threads
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>me_threshold <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set motion estimation threshold.
+</p>
+</dd>
+<dt> &lsquo;<samp>mb_threshold <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set macroblock threshold.
+</p>
+</dd>
+<dt> &lsquo;<samp>dc <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set intra_dc_precision.
+</p>
+</dd>
+<dt> &lsquo;<samp>nssew <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set nsse weight.
+</p>
+</dd>
+<dt> &lsquo;<samp>skip_top <var>integer</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set number of macroblock rows at the top which are skipped.
+</p>
+</dd>
+<dt> &lsquo;<samp>skip_bottom <var>integer</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set number of macroblock rows at the bottom which are skipped.
+</p>
+</dd>
+<dt> &lsquo;<samp>profile <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>unknown</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aac_main</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aac_low</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aac_ssr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aac_ltp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aac_he</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aac_he_v2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aac_ld</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aac_eld</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mpeg2_aac_low</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mpeg2_aac_he</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dts</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dts_es</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dts_96_24</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dts_hd_hra</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dts_hd_ma</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>level <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>unknown</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>lowres <var>integer</var> (<em>decoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd><p>Decode at 1= 1/2, 2=1/4, 3=1/8 resolutions.
+</p>
+</dd>
+<dt> &lsquo;<samp>skip_threshold <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set frame skip threshold.
+</p>
+</dd>
+<dt> &lsquo;<samp>skip_factor <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set frame skip factor.
+</p>
+</dd>
+<dt> &lsquo;<samp>skip_exp <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set frame skip exponent.
+</p>
+</dd>
+<dt> &lsquo;<samp>skipcmp <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set frame skip compare function.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sad</samp>&rsquo;</dt>
+<dd><p>sum of absolute differences, fast (default)
+</p></dd>
+<dt> &lsquo;<samp>sse</samp>&rsquo;</dt>
+<dd><p>sum of squared errors
+</p></dd>
+<dt> &lsquo;<samp>satd</samp>&rsquo;</dt>
+<dd><p>sum of absolute Hadamard transformed differences
+</p></dd>
+<dt> &lsquo;<samp>dct</samp>&rsquo;</dt>
+<dd><p>sum of absolute DCT transformed differences
+</p></dd>
+<dt> &lsquo;<samp>psnr</samp>&rsquo;</dt>
+<dd><p>sum of squared quantization errors (avoid, low quality)
+</p></dd>
+<dt> &lsquo;<samp>bit</samp>&rsquo;</dt>
+<dd><p>number of bits needed for the block
+</p></dd>
+<dt> &lsquo;<samp>rd</samp>&rsquo;</dt>
+<dd><p>rate distortion optimal, slow
+</p></dd>
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>0
+</p></dd>
+<dt> &lsquo;<samp>vsad</samp>&rsquo;</dt>
+<dd><p>sum of absolute vertical differences
+</p></dd>
+<dt> &lsquo;<samp>vsse</samp>&rsquo;</dt>
+<dd><p>sum of squared vertical differences
+</p></dd>
+<dt> &lsquo;<samp>nsse</samp>&rsquo;</dt>
+<dd><p>noise preserving sum of squared differences
+</p></dd>
+<dt> &lsquo;<samp>w53</samp>&rsquo;</dt>
+<dd><p>5/3 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>w97</samp>&rsquo;</dt>
+<dd><p>9/7 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>dctmax</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>border_mask <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Increase the quantizer for macroblocks close to borders.
+</p>
+</dd>
+<dt> &lsquo;<samp>mblmin <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set min macroblock lagrange factor (VBR).
+</p>
+</dd>
+<dt> &lsquo;<samp>mblmax <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set max macroblock lagrange factor (VBR).
+</p>
+</dd>
+<dt> &lsquo;<samp>mepc <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set motion estimation bitrate penalty compensation (1.0 = 256).
+</p>
+</dd>
+<dt> &lsquo;<samp>skip_loop_filter <var>integer</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>skip_idct        <var>integer</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>skip_frame       <var>integer</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Make decoder discard processing depending on the frame type selected
+by the option value.
+</p>
+<p>&lsquo;<samp>skip_loop_filter</samp>&rsquo; skips frame loop filtering, &lsquo;<samp>skip_idct</samp>&rsquo;
+skips frame IDCT/dequantization, &lsquo;<samp>skip_frame</samp>&rsquo; skips decoding.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>Discard no frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>default</samp>&rsquo;</dt>
+<dd><p>Discard useless frames like 0-sized frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>noref</samp>&rsquo;</dt>
+<dd><p>Discard all non-reference frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>bidir</samp>&rsquo;</dt>
+<dd><p>Discard all bidirectional frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>nokey</samp>&rsquo;</dt>
+<dd><p>Discard all frames excepts keyframes.
+</p>
+</dd>
+<dt> &lsquo;<samp>all</samp>&rsquo;</dt>
+<dd><p>Discard all frames.
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>default</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>bidir_refine <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Refine the two motion vectors used in bidirectional macroblocks.
+</p>
+</dd>
+<dt> &lsquo;<samp>brd_scale <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Downscale frames for dynamic B-frame decision.
+</p>
+</dd>
+<dt> &lsquo;<samp>keyint_min <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set minimum interval between IDR-frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>refs <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set reference frames to consider for motion compensation.
+</p>
+</dd>
+<dt> &lsquo;<samp>chromaoffset <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set chroma qp offset from luma.
+</p>
+</dd>
+<dt> &lsquo;<samp>trellis <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set rate-distortion optimal quantization.
+</p>
+</dd>
+<dt> &lsquo;<samp>sc_factor <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set value multiplied by qscale for each frame and added to
+scene_change_score.
+</p>
+</dd>
+<dt> &lsquo;<samp>mv0_threshold <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>b_sensitivity <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Adjust sensitivity of b_frame_strategy 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>compression_level <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>min_prediction_order <var>integer</var> (<em>encoding,audio</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>max_prediction_order <var>integer</var> (<em>encoding,audio</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>timecode_frame_start <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set GOP timecode frame start number, in non drop frame format.
+</p>
+</dd>
+<dt> &lsquo;<samp>request_channels <var>integer</var> (<em>decoding,audio</em>)</samp>&rsquo;</dt>
+<dd><p>Set desired number of audio channels.
+</p>
+</dd>
+<dt> &lsquo;<samp>bits_per_raw_sample <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>channel_layout <var>integer</var> (<em>decoding/encoding,audio</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Possible values:
+</p></dd>
+<dt> &lsquo;<samp>request_channel_layout <var>integer</var> (<em>decoding,audio</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Possible values:
+</p></dd>
+<dt> &lsquo;<samp>rc_max_vbv_use <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>rc_min_vbv_use <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ticks_per_frame <var>integer</var> (<em>decoding/encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>color_primaries <var>integer</var> (<em>decoding/encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>color_trc <var>integer</var> (<em>decoding/encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>colorspace <var>integer</var> (<em>decoding/encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>color_range <var>integer</var> (<em>decoding/encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma_sample_location <var>integer</var> (<em>decoding/encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>log_level_offset <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Set the log level offset.
+</p>
+</dd>
+<dt> &lsquo;<samp>slices <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Number of slices, used in parallelized encoding.
+</p>
+</dd>
+<dt> &lsquo;<samp>thread_type <var>flags</var> (<em>decoding/encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Select multithreading type.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>slice</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>frame</samp>&rsquo;</dt>
+</dl>
+</dd>
+<dt> &lsquo;<samp>audio_service_type <var>integer</var> (<em>encoding,audio</em>)</samp>&rsquo;</dt>
+<dd><p>Set audio service type.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>ma</samp>&rsquo;</dt>
+<dd><p>Main Audio Service
+</p></dd>
+<dt> &lsquo;<samp>ef</samp>&rsquo;</dt>
+<dd><p>Effects
+</p></dd>
+<dt> &lsquo;<samp>vi</samp>&rsquo;</dt>
+<dd><p>Visually Impaired
+</p></dd>
+<dt> &lsquo;<samp>hi</samp>&rsquo;</dt>
+<dd><p>Hearing Impaired
+</p></dd>
+<dt> &lsquo;<samp>di</samp>&rsquo;</dt>
+<dd><p>Dialogue
+</p></dd>
+<dt> &lsquo;<samp>co</samp>&rsquo;</dt>
+<dd><p>Commentary
+</p></dd>
+<dt> &lsquo;<samp>em</samp>&rsquo;</dt>
+<dd><p>Emergency
+</p></dd>
+<dt> &lsquo;<samp>vo</samp>&rsquo;</dt>
+<dd><p>Voice Over
+</p></dd>
+<dt> &lsquo;<samp>ka</samp>&rsquo;</dt>
+<dd><p>Karaoke
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>request_sample_fmt <var>sample_fmt</var> (<em>decoding,audio</em>)</samp>&rsquo;</dt>
+<dd><p>Set sample format audio decoders should prefer. Default value is
+<code>none</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>pkt_timebase <var>rational number</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sub_charenc <var>encoding</var> (<em>decoding,subtitles</em>)</samp>&rsquo;</dt>
+<dd><p>Set the input subtitles character encoding.
+</p>
+</dd>
+<dt> &lsquo;<samp>field_order  <var>field_order</var> (<em>video</em>)</samp>&rsquo;</dt>
+<dd><p>Set/override the field order of the video.
+Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>progressive</samp>&rsquo;</dt>
+<dd><p>Progressive video
+</p></dd>
+<dt> &lsquo;<samp>tt</samp>&rsquo;</dt>
+<dd><p>Interlaced video, top field coded and displayed first
+</p></dd>
+<dt> &lsquo;<samp>bb</samp>&rsquo;</dt>
+<dd><p>Interlaced video, bottom field coded and displayed first
+</p></dd>
+<dt> &lsquo;<samp>tb</samp>&rsquo;</dt>
+<dd><p>Interlaced video, top coded first, bottom displayed first
+</p></dd>
+<dt> &lsquo;<samp>bt</samp>&rsquo;</dt>
+<dd><p>Interlaced video, bottom coded first, top displayed first
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>skip_alpha <var>integer</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set to 1 to disable processing alpha (transparency). This works like the
+&lsquo;<samp>gray</samp>&rsquo; flag in the &lsquo;<samp>flags</samp>&rsquo; option which skips chroma information
+instead of alpha. Default is 0.
+</p></dd>
+</dl>
+
+
+<a name="Decoders"></a>
+<h1 class="chapter"><a href="ffmpeg-codecs.html#toc-Decoders">3. Decoders</a></h1>
+
+<p>Decoders are configured elements in FFmpeg which allow the decoding of
+multimedia streams.
+</p>
+<p>When you configure your FFmpeg build, all the supported native decoders
+are enabled by default. Decoders requiring an external library must be enabled
+manually via the corresponding <code>--enable-lib</code> option. You can list all
+available decoders using the configure option <code>--list-decoders</code>.
+</p>
+<p>You can disable all the decoders with the configure option
+<code>--disable-decoders</code> and selectively enable / disable single decoders
+with the options <code>--enable-decoder=<var>DECODER</var></code> /
+<code>--disable-decoder=<var>DECODER</var></code>.
+</p>
+<p>The option <code>-codecs</code> of the ff* tools will display the list of
+enabled decoders.
+</p>
+
+<a name="Video-Decoders"></a>
+<h1 class="chapter"><a href="ffmpeg-codecs.html#toc-Video-Decoders">4. Video Decoders</a></h1>
+
+<p>A description of some of the currently available video decoders
+follows.
+</p>
+<a name="rawvideo"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-rawvideo">4.1 rawvideo</a></h2>
+
+<p>Raw video decoder.
+</p>
+<p>This decoder decodes rawvideo streams.
+</p>
+<a name="Options-17"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-17">4.1.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>top <var>top_field_first</var></samp>&rsquo;</dt>
+<dd><p>Specify the assumed field type of the input video.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>-1</samp>&rsquo;</dt>
+<dd><p>the video is assumed to be progressive (default)
+</p></dd>
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>bottom-field-first is assumed
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>top-field-first is assumed
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+
+<a name="Audio-Decoders"></a>
+<h1 class="chapter"><a href="ffmpeg-codecs.html#toc-Audio-Decoders">5. Audio Decoders</a></h1>
+
+<a name="ffwavesynth"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-ffwavesynth">5.1 ffwavesynth</a></h2>
+
+<p>Internal wave synthetizer.
+</p>
+<p>This decoder generates wave patterns according to predefined sequences. Its
+use is purely internal and the format of the data it accepts is not publicly
+documented.
+</p>
+<a name="libcelt"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-libcelt">5.2 libcelt</a></h2>
+
+<p>libcelt decoder wrapper.
+</p>
+<p>libcelt allows libavcodec to decode the Xiph CELT ultra-low delay audio codec.
+Requires the presence of the libcelt headers and library during configuration.
+You need to explicitly configure the build with <code>--enable-libcelt</code>.
+</p>
+<a name="libgsm"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-libgsm">5.3 libgsm</a></h2>
+
+<p>libgsm decoder wrapper.
+</p>
+<p>libgsm allows libavcodec to decode the GSM full rate audio codec. Requires
+the presence of the libgsm headers and library during configuration. You need
+to explicitly configure the build with <code>--enable-libgsm</code>.
+</p>
+<p>This decoder supports both the ordinary GSM and the Microsoft variant.
+</p>
+<a name="libilbc"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-libilbc">5.4 libilbc</a></h2>
+
+<p>libilbc decoder wrapper.
+</p>
+<p>libilbc allows libavcodec to decode the Internet Low Bitrate Codec (iLBC)
+audio codec. Requires the presence of the libilbc headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libilbc</code>.
+</p>
+<a name="Options-13"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-13">5.4.1 Options</a></h3>
+
+<p>The following option is supported by the libilbc wrapper.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>enhance</samp>&rsquo;</dt>
+<dd>
+<p>Enable the enhancement of the decoded audio when set to 1. The default
+value is 0 (disabled).
+</p>
+</dd>
+</dl>
+
+<a name="libopencore_002damrnb"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-libopencore_002damrnb">5.5 libopencore-amrnb</a></h2>
+
+<p>libopencore-amrnb decoder wrapper.
+</p>
+<p>libopencore-amrnb allows libavcodec to decode the Adaptive Multi-Rate
+Narrowband audio codec. Using it requires the presence of the
+libopencore-amrnb headers and library during configuration. You need to
+explicitly configure the build with <code>--enable-libopencore-amrnb</code>.
+</p>
+<p>An FFmpeg native decoder for AMR-NB exists, so users can decode AMR-NB
+without this library.
+</p>
+<a name="libopencore_002damrwb"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-libopencore_002damrwb">5.6 libopencore-amrwb</a></h2>
+
+<p>libopencore-amrwb decoder wrapper.
+</p>
+<p>libopencore-amrwb allows libavcodec to decode the Adaptive Multi-Rate
+Wideband audio codec. Using it requires the presence of the
+libopencore-amrwb headers and library during configuration. You need to
+explicitly configure the build with <code>--enable-libopencore-amrwb</code>.
+</p>
+<p>An FFmpeg native decoder for AMR-WB exists, so users can decode AMR-WB
+without this library.
+</p>
+<a name="libopus"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-libopus">5.7 libopus</a></h2>
+
+<p>libopus decoder wrapper.
+</p>
+<p>libopus allows libavcodec to decode the Opus Interactive Audio Codec.
+Requires the presence of the libopus headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libopus</code>.
+</p>
+
+<a name="Subtitles-Decoders"></a>
+<h1 class="chapter"><a href="ffmpeg-codecs.html#toc-Subtitles-Decoders">6. Subtitles Decoders</a></h1>
+
+<a name="dvdsub"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-dvdsub">6.1 dvdsub</a></h2>
+
+<p>This codec decodes the bitmap subtitles used in DVDs; the same subtitles can
+also be found in VobSub file pairs and in some Matroska files.
+</p>
+<a name="Options-7"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-7">6.1.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>palette</samp>&rsquo;</dt>
+<dd><p>Specify the global palette used by the bitmaps. When stored in VobSub, the
+palette is normally specified in the index file; in Matroska, the palette is
+stored in the codec extra-data in the same format as in VobSub. In DVDs, the
+palette is stored in the IFO file, and therefore not available when reading
+from dumped VOB files.
+</p>
+<p>The format for this option is a string containing 16 24-bits hexadecimal
+numbers (without 0x prefix) separated by comas, for example <code>0d00ee,
+ee450d, 101010, eaeaea, 0ce60b, ec14ed, ebff0b, 0d617a, 7b7b7b, d1d1d1,
+7b2a0e, 0d950c, 0f007b, cf0dec, cfa80c, 7c127b</code>.
+</p></dd>
+</dl>
+
+<a name="libzvbi_002dteletext"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-libzvbi_002dteletext">6.2 libzvbi-teletext</a></h2>
+
+<p>Libzvbi allows libavcodec to decode DVB teletext pages and DVB teletext
+subtitles. Requires the presence of the libzvbi headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libzvbi</code>.
+</p>
+<a name="Options-11"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-11">6.2.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>txt_page</samp>&rsquo;</dt>
+<dd><p>List of teletext page numbers to decode. You may use the special * string to
+match all pages. Pages that do not match the specified list are dropped.
+Default value is *.
+</p></dd>
+<dt> &lsquo;<samp>txt_chop_top</samp>&rsquo;</dt>
+<dd><p>Discards the top teletext line. Default value is 1.
+</p></dd>
+<dt> &lsquo;<samp>txt_format</samp>&rsquo;</dt>
+<dd><p>Specifies the format of the decoded subtitles. The teletext decoder is capable
+of decoding the teletext pages to bitmaps or to simple text, you should use
+&quot;bitmap&quot; for teletext pages, because certain graphics and colors cannot be
+expressed in simple text. You might use &quot;text&quot; for teletext based subtitles if
+your application can handle simple text based subtitles. Default value is
+bitmap.
+</p></dd>
+<dt> &lsquo;<samp>txt_left</samp>&rsquo;</dt>
+<dd><p>X offset of generated bitmaps, default is 0.
+</p></dd>
+<dt> &lsquo;<samp>txt_top</samp>&rsquo;</dt>
+<dd><p>Y offset of generated bitmaps, default is 0.
+</p></dd>
+<dt> &lsquo;<samp>txt_chop_spaces</samp>&rsquo;</dt>
+<dd><p>Chops leading and trailing spaces and removes empty lines from the generated
+text. This option is useful for teletext based subtitles where empty spaces may
+be present at the start or at the end of the lines or empty lines may be
+present between the subtitle lines because of double-sized teletext charactes.
+Default value is 1.
+</p></dd>
+<dt> &lsquo;<samp>txt_duration</samp>&rsquo;</dt>
+<dd><p>Sets the display duration of the decoded teletext pages or subtitles in
+miliseconds. Default value is 30000 which is 30 seconds.
+</p></dd>
+<dt> &lsquo;<samp>txt_transparent</samp>&rsquo;</dt>
+<dd><p>Force transparent background of the generated teletext bitmaps. Default value
+is 0 which means an opaque (black) background.
+</p></dd>
+</dl>
+
+<a name="Encoders"></a>
+<h1 class="chapter"><a href="ffmpeg-codecs.html#toc-Encoders">7. Encoders</a></h1>
+
+<p>Encoders are configured elements in FFmpeg which allow the encoding of
+multimedia streams.
+</p>
+<p>When you configure your FFmpeg build, all the supported native encoders
+are enabled by default. Encoders requiring an external library must be enabled
+manually via the corresponding <code>--enable-lib</code> option. You can list all
+available encoders using the configure option <code>--list-encoders</code>.
+</p>
+<p>You can disable all the encoders with the configure option
+<code>--disable-encoders</code> and selectively enable / disable single encoders
+with the options <code>--enable-encoder=<var>ENCODER</var></code> /
+<code>--disable-encoder=<var>ENCODER</var></code>.
+</p>
+<p>The option <code>-codecs</code> of the ff* tools will display the list of
+enabled encoders.
+</p>
+
+<a name="Audio-Encoders"></a>
+<h1 class="chapter"><a href="ffmpeg-codecs.html#toc-Audio-Encoders">8. Audio Encoders</a></h1>
+
+<p>A description of some of the currently available audio encoders
+follows.
+</p>
+<p><a name="aacenc"></a>
+</p><a name="aac"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-aac">8.1 aac</a></h2>
+
+<p>Advanced Audio Coding (AAC) encoder.
+</p>
+<p>This encoder is an experimental FFmpeg-native AAC encoder. Currently only the
+low complexity (AAC-LC) profile is supported. To use this encoder, you must set
+&lsquo;<samp>strict</samp>&rsquo; option to &lsquo;<samp>experimental</samp>&rsquo; or lower.
+</p>
+<p>As this encoder is experimental, unexpected behavior may exist from time to
+time. For a more stable AAC encoder, see <a href="#libvo_002daacenc">libvo-aacenc</a>. However, be warned
+that it has a worse quality reported by some users.
+</p>
+<p>See also <a href="#libfdk_002daac_002denc">libfdk_aac</a> and <a href="#libfaac">libfaac</a>.
+</p>
+<a name="Options-8"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-8">8.1.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>Set bit rate in bits/s. Setting this automatically activates constant bit rate
+(CBR) mode.
+</p>
+</dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Set quality for variable bit rate (VBR) mode. This option is valid only using
+the <code>ffmpeg</code> command-line tool. For library interface users, use
+&lsquo;<samp>global_quality</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>stereo_mode</samp>&rsquo;</dt>
+<dd><p>Set stereo encoding mode. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Automatically selected by the encoder.
+</p>
+</dd>
+<dt> &lsquo;<samp>ms_off</samp>&rsquo;</dt>
+<dd><p>Disable middle/side encoding. This is the default.
+</p>
+</dd>
+<dt> &lsquo;<samp>ms_force</samp>&rsquo;</dt>
+<dd><p>Force middle/side encoding.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>aac_coder</samp>&rsquo;</dt>
+<dd><p>Set AAC encoder coding method. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>faac</samp>&rsquo;</dt>
+<dd><p>FAAC-inspired method.
+</p>
+<p>This method is a simplified reimplementation of the method used in FAAC, which
+sets thresholds proportional to the band energies, and then decreases all the
+thresholds with quantizer steps to find the appropriate quantization with
+distortion below threshold band by band.
+</p>
+<p>The quality of this method is comparable to the two loop searching method
+descibed below, but somewhat a little better and slower.
+</p>
+</dd>
+<dt> &lsquo;<samp>anmr</samp>&rsquo;</dt>
+<dd><p>Average noise to mask ratio (ANMR) trellis-based solution.
+</p>
+<p>This has a theoretic best quality out of all the coding methods, but at the
+cost of the slowest speed.
+</p>
+</dd>
+<dt> &lsquo;<samp>twoloop</samp>&rsquo;</dt>
+<dd><p>Two loop searching (TLS) method.
+</p>
+<p>This method first sets quantizers depending on band thresholds and then tries
+to find an optimal combination by adding or subtracting a specific value from
+all quantizers and adjusting some individual quantizer a little.
+</p>
+<p>This method produces similar quality with the FAAC method and is the default.
+</p>
+</dd>
+<dt> &lsquo;<samp>fast</samp>&rsquo;</dt>
+<dd><p>Constant quantizer method.
+</p>
+<p>This method sets a constant quantizer for all bands. This is the fastest of all
+the methods, yet produces the worst quality.
+</p>
+</dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="ac3-and-ac3_005ffixed"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-ac3-and-ac3_005ffixed">8.2 ac3 and ac3_fixed</a></h2>
+
+<p>AC-3 audio encoders.
+</p>
+<p>These encoders implement part of ATSC A/52:2010 and ETSI TS 102 366, as well as
+the undocumented RealAudio 3 (a.k.a. dnet).
+</p>
+<p>The <var>ac3</var> encoder uses floating-point math, while the <var>ac3_fixed</var>
+encoder only uses fixed-point integer math. This does not mean that one is
+always faster, just that one or the other may be better suited to a
+particular system. The floating-point encoder will generally produce better
+quality audio for a given bitrate. The <var>ac3_fixed</var> encoder is not the
+default codec for any of the output formats, so it must be specified explicitly
+using the option <code>-acodec ac3_fixed</code> in order to use it.
+</p>
+<a name="AC_002d3-Metadata"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-AC_002d3-Metadata">8.2.1 AC-3 Metadata</a></h3>
+
+<p>The AC-3 metadata options are used to set parameters that describe the audio,
+but in most cases do not affect the audio encoding itself. Some of the options
+do directly affect or influence the decoding and playback of the resulting
+bitstream, while others are just for informational purposes. A few of the
+options will add bits to the output stream that could otherwise be used for
+audio data, and will thus affect the quality of the output. Those will be
+indicated accordingly with a note in the option list below.
+</p>
+<p>These parameters are described in detail in several publicly-available
+documents.
+</p><ul>
+<li> <a href="http://www.atsc.org/cms/standards/a_52-2010.pdf">A/52:2010 - Digital Audio Compression (AC-3) (E-AC-3) Standard</a>
+</li><li> <a href="http://www.atsc.org/cms/standards/a_54a_with_corr_1.pdf">A/54 - Guide to the Use of the ATSC Digital Television Standard</a>
+</li><li> <a href="http://www.dolby.com/uploadedFiles/zz-_Shared_Assets/English_PDFs/Professional/18_Metadata.Guide.pdf">Dolby Metadata Guide</a>
+</li><li> <a href="http://www.dolby.com/uploadedFiles/zz-_Shared_Assets/English_PDFs/Professional/46_DDEncodingGuidelines.pdf">Dolby Digital Professional Encoding Guidelines</a>
+</li></ul>
+
+<a name="Metadata-Control-Options"></a>
+<h4 class="subsubsection"><a href="ffmpeg-codecs.html#toc-Metadata-Control-Options">8.2.1.1 Metadata Control Options</a></h4>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-per_frame_metadata <var>boolean</var></samp>&rsquo;</dt>
+<dd><p>Allow Per-Frame Metadata. Specifies if the encoder should check for changing
+metadata for each frame.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>The metadata values set at initialization will be used for every frame in the
+stream. (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>Metadata values can be changed before encoding each frame.
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Downmix-Levels"></a>
+<h4 class="subsubsection"><a href="ffmpeg-codecs.html#toc-Downmix-Levels">8.2.1.2 Downmix Levels</a></h4>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-center_mixlev <var>level</var></samp>&rsquo;</dt>
+<dd><p>Center Mix Level. The amount of gain the decoder should apply to the center
+channel when downmixing to stereo. This field will only be written to the
+bitstream if a center channel is present. The value is specified as a scale
+factor. There are 3 valid values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0.707</samp>&rsquo;</dt>
+<dd><p>Apply -3dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.595</samp>&rsquo;</dt>
+<dd><p>Apply -4.5dB gain (default)
+</p></dd>
+<dt> &lsquo;<samp>0.500</samp>&rsquo;</dt>
+<dd><p>Apply -6dB gain
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-surround_mixlev <var>level</var></samp>&rsquo;</dt>
+<dd><p>Surround Mix Level. The amount of gain the decoder should apply to the surround
+channel(s) when downmixing to stereo. This field will only be written to the
+bitstream if one or more surround channels are present. The value is specified
+as a scale factor.  There are 3 valid values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0.707</samp>&rsquo;</dt>
+<dd><p>Apply -3dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.500</samp>&rsquo;</dt>
+<dd><p>Apply -6dB gain (default)
+</p></dd>
+<dt> &lsquo;<samp>0.000</samp>&rsquo;</dt>
+<dd><p>Silence Surround Channel(s)
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Audio-Production-Information"></a>
+<h4 class="subsubsection"><a href="ffmpeg-codecs.html#toc-Audio-Production-Information">8.2.1.3 Audio Production Information</a></h4>
+<p>Audio Production Information is optional information describing the mixing
+environment.  Either none or both of the fields are written to the bitstream.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-mixing_level <var>number</var></samp>&rsquo;</dt>
+<dd><p>Mixing Level. Specifies peak sound pressure level (SPL) in the production
+environment when the mix was mastered. Valid values are 80 to 111, or -1 for
+unknown or not indicated. The default value is -1, but that value cannot be
+used if the Audio Production Information is written to the bitstream. Therefore,
+if the <code>room_type</code> option is not the default value, the <code>mixing_level</code>
+option must not be -1.
+</p>
+</dd>
+<dt> &lsquo;<samp>-room_type <var>type</var></samp>&rsquo;</dt>
+<dd><p>Room Type. Describes the equalization used during the final mixing session at
+the studio or on the dubbing stage. A large room is a dubbing stage with the
+industry standard X-curve equalization; a small room has flat equalization.
+This field will not be written to the bitstream if both the <code>mixing_level</code>
+option and the <code>room_type</code> option have the default values.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>notindicated</samp>&rsquo;</dt>
+<dd><p>Not Indicated (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>large</samp>&rsquo;</dt>
+<dd><p>Large Room
+</p></dd>
+<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>small</samp>&rsquo;</dt>
+<dd><p>Small Room
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Other-Metadata-Options"></a>
+<h4 class="subsubsection"><a href="ffmpeg-codecs.html#toc-Other-Metadata-Options">8.2.1.4 Other Metadata Options</a></h4>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-copyright <var>boolean</var></samp>&rsquo;</dt>
+<dd><p>Copyright Indicator. Specifies whether a copyright exists for this audio.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
+<dd><p>No Copyright Exists (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>on</samp>&rsquo;</dt>
+<dd><p>Copyright Exists
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-dialnorm <var>value</var></samp>&rsquo;</dt>
+<dd><p>Dialogue Normalization. Indicates how far the average dialogue level of the
+program is below digital 100% full scale (0 dBFS). This parameter determines a
+level shift during audio reproduction that sets the average volume of the
+dialogue to a preset level. The goal is to match volume level between program
+sources. A value of -31dB will result in no volume level change, relative to
+the source volume, during audio reproduction. Valid values are whole numbers in
+the range -31 to -1, with -31 being the default.
+</p>
+</dd>
+<dt> &lsquo;<samp>-dsur_mode <var>mode</var></samp>&rsquo;</dt>
+<dd><p>Dolby Surround Mode. Specifies whether the stereo signal uses Dolby Surround
+(Pro Logic). This field will only be written to the bitstream if the audio
+stream is stereo. Using this option does <b>NOT</b> mean the encoder will actually
+apply Dolby Surround processing.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>notindicated</samp>&rsquo;</dt>
+<dd><p>Not Indicated (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
+<dd><p>Not Dolby Surround Encoded
+</p></dd>
+<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>on</samp>&rsquo;</dt>
+<dd><p>Dolby Surround Encoded
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-original <var>boolean</var></samp>&rsquo;</dt>
+<dd><p>Original Bit Stream Indicator. Specifies whether this audio is from the
+original source and not a copy.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
+<dd><p>Not Original Source
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>on</samp>&rsquo;</dt>
+<dd><p>Original Source (default)
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Extended-Bitstream-Information"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Extended-Bitstream-Information">8.2.2 Extended Bitstream Information</a></h3>
+<p>The extended bitstream options are part of the Alternate Bit Stream Syntax as
+specified in Annex D of the A/52:2010 standard. It is grouped into 2 parts.
+If any one parameter in a group is specified, all values in that group will be
+written to the bitstream.  Default values are used for those that are written
+but have not been specified.  If the mixing levels are written, the decoder
+will use these values instead of the ones specified in the <code>center_mixlev</code>
+and <code>surround_mixlev</code> options if it supports the Alternate Bit Stream
+Syntax.
+</p>
+<a name="Extended-Bitstream-Information-_002d-Part-1"></a>
+<h4 class="subsubsection"><a href="ffmpeg-codecs.html#toc-Extended-Bitstream-Information-_002d-Part-1">8.2.2.1 Extended Bitstream Information - Part 1</a></h4>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-dmix_mode <var>mode</var></samp>&rsquo;</dt>
+<dd><p>Preferred Stereo Downmix Mode. Allows the user to select either Lt/Rt
+(Dolby Surround) or Lo/Ro (normal stereo) as the preferred stereo downmix mode.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>notindicated</samp>&rsquo;</dt>
+<dd><p>Not Indicated (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ltrt</samp>&rsquo;</dt>
+<dd><p>Lt/Rt Downmix Preferred
+</p></dd>
+<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>loro</samp>&rsquo;</dt>
+<dd><p>Lo/Ro Downmix Preferred
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-ltrt_cmixlev <var>level</var></samp>&rsquo;</dt>
+<dd><p>Lt/Rt Center Mix Level. The amount of gain the decoder should apply to the
+center channel when downmixing to stereo in Lt/Rt mode.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>1.414</samp>&rsquo;</dt>
+<dd><p>Apply +3dB gain
+</p></dd>
+<dt> &lsquo;<samp>1.189</samp>&rsquo;</dt>
+<dd><p>Apply +1.5dB gain
+</p></dd>
+<dt> &lsquo;<samp>1.000</samp>&rsquo;</dt>
+<dd><p>Apply 0dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.841</samp>&rsquo;</dt>
+<dd><p>Apply -1.5dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.707</samp>&rsquo;</dt>
+<dd><p>Apply -3.0dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.595</samp>&rsquo;</dt>
+<dd><p>Apply -4.5dB gain (default)
+</p></dd>
+<dt> &lsquo;<samp>0.500</samp>&rsquo;</dt>
+<dd><p>Apply -6.0dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.000</samp>&rsquo;</dt>
+<dd><p>Silence Center Channel
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-ltrt_surmixlev <var>level</var></samp>&rsquo;</dt>
+<dd><p>Lt/Rt Surround Mix Level. The amount of gain the decoder should apply to the
+surround channel(s) when downmixing to stereo in Lt/Rt mode.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0.841</samp>&rsquo;</dt>
+<dd><p>Apply -1.5dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.707</samp>&rsquo;</dt>
+<dd><p>Apply -3.0dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.595</samp>&rsquo;</dt>
+<dd><p>Apply -4.5dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.500</samp>&rsquo;</dt>
+<dd><p>Apply -6.0dB gain (default)
+</p></dd>
+<dt> &lsquo;<samp>0.000</samp>&rsquo;</dt>
+<dd><p>Silence Surround Channel(s)
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-loro_cmixlev <var>level</var></samp>&rsquo;</dt>
+<dd><p>Lo/Ro Center Mix Level. The amount of gain the decoder should apply to the
+center channel when downmixing to stereo in Lo/Ro mode.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>1.414</samp>&rsquo;</dt>
+<dd><p>Apply +3dB gain
+</p></dd>
+<dt> &lsquo;<samp>1.189</samp>&rsquo;</dt>
+<dd><p>Apply +1.5dB gain
+</p></dd>
+<dt> &lsquo;<samp>1.000</samp>&rsquo;</dt>
+<dd><p>Apply 0dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.841</samp>&rsquo;</dt>
+<dd><p>Apply -1.5dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.707</samp>&rsquo;</dt>
+<dd><p>Apply -3.0dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.595</samp>&rsquo;</dt>
+<dd><p>Apply -4.5dB gain (default)
+</p></dd>
+<dt> &lsquo;<samp>0.500</samp>&rsquo;</dt>
+<dd><p>Apply -6.0dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.000</samp>&rsquo;</dt>
+<dd><p>Silence Center Channel
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-loro_surmixlev <var>level</var></samp>&rsquo;</dt>
+<dd><p>Lo/Ro Surround Mix Level. The amount of gain the decoder should apply to the
+surround channel(s) when downmixing to stereo in Lo/Ro mode.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0.841</samp>&rsquo;</dt>
+<dd><p>Apply -1.5dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.707</samp>&rsquo;</dt>
+<dd><p>Apply -3.0dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.595</samp>&rsquo;</dt>
+<dd><p>Apply -4.5dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.500</samp>&rsquo;</dt>
+<dd><p>Apply -6.0dB gain (default)
+</p></dd>
+<dt> &lsquo;<samp>0.000</samp>&rsquo;</dt>
+<dd><p>Silence Surround Channel(s)
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Extended-Bitstream-Information-_002d-Part-2"></a>
+<h4 class="subsubsection"><a href="ffmpeg-codecs.html#toc-Extended-Bitstream-Information-_002d-Part-2">8.2.2.2 Extended Bitstream Information - Part 2</a></h4>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-dsurex_mode <var>mode</var></samp>&rsquo;</dt>
+<dd><p>Dolby Surround EX Mode. Indicates whether the stream uses Dolby Surround EX
+(7.1 matrixed to 5.1). Using this option does <b>NOT</b> mean the encoder will actually
+apply Dolby Surround EX processing.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>notindicated</samp>&rsquo;</dt>
+<dd><p>Not Indicated (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>on</samp>&rsquo;</dt>
+<dd><p>Dolby Surround EX Off
+</p></dd>
+<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
+<dd><p>Dolby Surround EX On
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-dheadphone_mode <var>mode</var></samp>&rsquo;</dt>
+<dd><p>Dolby Headphone Mode. Indicates whether the stream uses Dolby Headphone
+encoding (multi-channel matrixed to 2.0 for use with headphones). Using this
+option does <b>NOT</b> mean the encoder will actually apply Dolby Headphone
+processing.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>notindicated</samp>&rsquo;</dt>
+<dd><p>Not Indicated (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>on</samp>&rsquo;</dt>
+<dd><p>Dolby Headphone Off
+</p></dd>
+<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
+<dd><p>Dolby Headphone On
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-ad_conv_type <var>type</var></samp>&rsquo;</dt>
+<dd><p>A/D Converter Type. Indicates whether the audio has passed through HDCD A/D
+conversion.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>standard</samp>&rsquo;</dt>
+<dd><p>Standard A/D Converter (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>hdcd</samp>&rsquo;</dt>
+<dd><p>HDCD A/D Converter
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Other-AC_002d3-Encoding-Options"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Other-AC_002d3-Encoding-Options">8.2.3 Other AC-3 Encoding Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-stereo_rematrixing <var>boolean</var></samp>&rsquo;</dt>
+<dd><p>Stereo Rematrixing. Enables/Disables use of rematrixing for stereo input. This
+is an optional AC-3 feature that increases quality by selectively encoding
+the left/right channels as mid/side. This option is enabled by default, and it
+is highly recommended that it be left as enabled except for testing purposes.
+</p>
+</dd>
+</dl>
+
+<a name="Floating_002dPoint_002dOnly-AC_002d3-Encoding-Options"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Floating_002dPoint_002dOnly-AC_002d3-Encoding-Options">8.2.4 Floating-Point-Only AC-3 Encoding Options</a></h3>
+
+<p>These options are only valid for the floating-point encoder and do not exist
+for the fixed-point encoder due to the corresponding features not being
+implemented in fixed-point.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-channel_coupling <var>boolean</var></samp>&rsquo;</dt>
+<dd><p>Enables/Disables use of channel coupling, which is an optional AC-3 feature
+that increases quality by combining high frequency information from multiple
+channels into a single channel. The per-channel high frequency information is
+sent with less accuracy in both the frequency and time domains. This allows
+more bits to be used for lower frequencies while preserving enough information
+to reconstruct the high frequencies. This option is enabled by default for the
+floating-point encoder and should generally be left as enabled except for
+testing purposes or to increase encoding speed.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>-1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Selected by Encoder (default)
+</p></dd>
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
+<dd><p>Disable Channel Coupling
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>on</samp>&rsquo;</dt>
+<dd><p>Enable Channel Coupling
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-cpl_start_band <var>number</var></samp>&rsquo;</dt>
+<dd><p>Coupling Start Band. Sets the channel coupling start band, from 1 to 15. If a
+value higher than the bandwidth is used, it will be reduced to 1 less than the
+coupling end band. If <var>auto</var> is used, the start band will be determined by
+the encoder based on the bit rate, sample rate, and channel layout. This option
+has no effect if channel coupling is disabled.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>-1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Selected by Encoder (default)
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<p><a name="libfaac"></a>
+</p><a name="libfaac-1"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-libfaac-1">8.3 libfaac</a></h2>
+
+<p>libfaac AAC (Advanced Audio Coding) encoder wrapper.
+</p>
+<p>Requires the presence of the libfaac headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libfaac --enable-nonfree</code>.
+</p>
+<p>This encoder is considered to be of higher quality with respect to the
+<a href="#aacenc">the native experimental FFmpeg AAC encoder</a>.
+</p>
+<p>For more information see the libfaac project at
+<a href="http://www.audiocoding.com/faac.html/">http://www.audiocoding.com/faac.html/</a>.
+</p>
+<a name="Options-10"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-10">8.3.1 Options</a></h3>
+
+<p>The following shared FFmpeg codec options are recognized.
+</p>
+<p>The following options are supported by the libfaac wrapper. The
+<code>faac</code>-equivalent of the options are listed in parentheses.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b (<em>-b</em>)</samp>&rsquo;</dt>
+<dd><p>Set bit rate in bits/s for ABR (Average Bit Rate) mode. If the bit rate
+is not explicitly specified, it is automatically set to a suitable
+value depending on the selected profile. <code>faac</code> bitrate is
+expressed in kilobits/s.
+</p>
+<p>Note that libfaac does not support CBR (Constant Bit Rate) but only
+ABR (Average Bit Rate).
+</p>
+<p>If VBR mode is enabled this option is ignored.
+</p>
+</dd>
+<dt> &lsquo;<samp>ar (<em>-R</em>)</samp>&rsquo;</dt>
+<dd><p>Set audio sampling rate (in Hz).
+</p>
+</dd>
+<dt> &lsquo;<samp>ac (<em>-c</em>)</samp>&rsquo;</dt>
+<dd><p>Set the number of audio channels.
+</p>
+</dd>
+<dt> &lsquo;<samp>cutoff (<em>-C</em>)</samp>&rsquo;</dt>
+<dd><p>Set cutoff frequency. If not specified (or explicitly set to 0) it
+will use a value automatically computed by the library. Default value
+is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>profile</samp>&rsquo;</dt>
+<dd><p>Set audio profile.
+</p>
+<p>The following profiles are recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>aac_main</samp>&rsquo;</dt>
+<dd><p>Main AAC (Main)
+</p>
+</dd>
+<dt> &lsquo;<samp>aac_low</samp>&rsquo;</dt>
+<dd><p>Low Complexity AAC (LC)
+</p>
+</dd>
+<dt> &lsquo;<samp>aac_ssr</samp>&rsquo;</dt>
+<dd><p>Scalable Sample Rate (SSR)
+</p>
+</dd>
+<dt> &lsquo;<samp>aac_ltp</samp>&rsquo;</dt>
+<dd><p>Long Term Prediction (LTP)
+</p></dd>
+</dl>
+
+<p>If not specified it is set to &lsquo;<samp>aac_low</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>flags +qscale</samp>&rsquo;</dt>
+<dd><p>Set constant quality VBR (Variable Bit Rate) mode.
+</p>
+</dd>
+<dt> &lsquo;<samp>global_quality</samp>&rsquo;</dt>
+<dd><p>Set quality in VBR mode as an integer number of lambda units.
+</p>
+<p>Only relevant when VBR mode is enabled with <code>flags +qscale</code>.  The
+value is converted to QP units by dividing it by <code>FF_QP2LAMBDA</code>,
+and used to set the quality value used by libfaac. A reasonable range
+for the option value in QP units is [10-500], the higher the value the
+higher the quality.
+</p>
+</dd>
+<dt> &lsquo;<samp>q (<em>-q</em>)</samp>&rsquo;</dt>
+<dd><p>Enable VBR mode when set to a non-negative value, and set constant
+quality value as a double floating point value in QP units.
+</p>
+<p>The value sets the quality value used by libfaac. A reasonable range
+for the option value is [10-500], the higher the value the higher the
+quality.
+</p>
+<p>This option is valid only using the <code>ffmpeg</code> command-line
+tool. For library interface users, use &lsquo;<samp>global_quality</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<a name="Examples-1"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Examples-1">8.3.2 Examples</a></h3>
+
+<ul>
+<li>
+Use <code>ffmpeg</code> to convert an audio file to ABR 128 kbps AAC in an M4A (MP4)
+container:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.wav -codec:a libfaac -b:a 128k -output.m4a
+</pre></td></tr></table>
+
+</li><li>
+Use <code>ffmpeg</code> to convert an audio file to VBR AAC, using the
+LTP AAC profile:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.wav -c:a libfaac -profile:a aac_ltp -q:a 100 output.m4a
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="libfdk_002daac_002denc"></a>
+</p><a name="libfdk_005faac"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-libfdk_005faac">8.4 libfdk_aac</a></h2>
+
+<p>libfdk-aac AAC (Advanced Audio Coding) encoder wrapper.
+</p>
+<p>The libfdk-aac library is based on the Fraunhofer FDK AAC code from
+the Android project.
+</p>
+<p>Requires the presence of the libfdk-aac headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libfdk-aac</code>. The library is also incompatible with GPL,
+so if you allow the use of GPL, you should configure with
+<code>--enable-gpl --enable-nonfree --enable-libfdk-aac</code>.
+</p>
+<p>This encoder is considered to be of higher quality with respect to
+both <a href="#aacenc">the native experimental FFmpeg AAC encoder</a> and
+<a href="#libfaac">libfaac</a>.
+</p>
+<p>VBR encoding, enabled through the &lsquo;<samp>vbr</samp>&rsquo; or &lsquo;<samp>flags
++qscale</samp>&rsquo; options, is experimental and only works with some
+combinations of parameters.
+</p>
+<p>For more information see the fdk-aac project at
+<a href="http://sourceforge.net/p/opencore-amr/fdk-aac/">http://sourceforge.net/p/opencore-amr/fdk-aac/</a>.
+</p>
+<a name="Options-5"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-5">8.4.1 Options</a></h3>
+
+<p>The following options are mapped on the shared FFmpeg codec options.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>Set bit rate in bits/s. If the bitrate is not explicitly specified, it
+is automatically set to a suitable value depending on the selected
+profile.
+</p>
+<p>In case VBR mode is enabled the option is ignored.
+</p>
+</dd>
+<dt> &lsquo;<samp>ar</samp>&rsquo;</dt>
+<dd><p>Set audio sampling rate (in Hz).
+</p>
+</dd>
+<dt> &lsquo;<samp>channels</samp>&rsquo;</dt>
+<dd><p>Set the number of audio channels.
+</p>
+</dd>
+<dt> &lsquo;<samp>flags +qscale</samp>&rsquo;</dt>
+<dd><p>Enable fixed quality, VBR (Variable Bit Rate) mode.
+Note that VBR is implicitly enabled when the &lsquo;<samp>vbr</samp>&rsquo; value is
+positive.
+</p>
+</dd>
+<dt> &lsquo;<samp>cutoff</samp>&rsquo;</dt>
+<dd><p>Set cutoff frequency. If not specified (or explicitly set to 0) it
+will use a value automatically computed by the library. Default value
+is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>profile</samp>&rsquo;</dt>
+<dd><p>Set audio profile.
+</p>
+<p>The following profiles are recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>aac_low</samp>&rsquo;</dt>
+<dd><p>Low Complexity AAC (LC)
+</p>
+</dd>
+<dt> &lsquo;<samp>aac_he</samp>&rsquo;</dt>
+<dd><p>High Efficiency AAC (HE-AAC)
+</p>
+</dd>
+<dt> &lsquo;<samp>aac_he_v2</samp>&rsquo;</dt>
+<dd><p>High Efficiency AAC version 2 (HE-AACv2)
+</p>
+</dd>
+<dt> &lsquo;<samp>aac_ld</samp>&rsquo;</dt>
+<dd><p>Low Delay AAC (LD)
+</p>
+</dd>
+<dt> &lsquo;<samp>aac_eld</samp>&rsquo;</dt>
+<dd><p>Enhanced Low Delay AAC (ELD)
+</p></dd>
+</dl>
+
+<p>If not specified it is set to &lsquo;<samp>aac_low</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<p>The following are private options of the libfdk_aac encoder.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>afterburner</samp>&rsquo;</dt>
+<dd><p>Enable afterburner feature if set to 1, disabled if set to 0. This
+improves the quality but also the required processing power.
+</p>
+<p>Default value is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>eld_sbr</samp>&rsquo;</dt>
+<dd><p>Enable SBR (Spectral Band Replication) for ELD if set to 1, disabled
+if set to 0.
+</p>
+<p>Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>signaling</samp>&rsquo;</dt>
+<dd><p>Set SBR/PS signaling style.
+</p>
+<p>It can assume one of the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>default</samp>&rsquo;</dt>
+<dd><p>choose signaling implicitly (explicit hierarchical by default,
+implicit if global header is disabled)
+</p>
+</dd>
+<dt> &lsquo;<samp>implicit</samp>&rsquo;</dt>
+<dd><p>implicit backwards compatible signaling
+</p>
+</dd>
+<dt> &lsquo;<samp>explicit_sbr</samp>&rsquo;</dt>
+<dd><p>explicit SBR, implicit PS signaling
+</p>
+</dd>
+<dt> &lsquo;<samp>explicit_hierarchical</samp>&rsquo;</dt>
+<dd><p>explicit hierarchical signaling
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>default</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>latm</samp>&rsquo;</dt>
+<dd><p>Output LATM/LOAS encapsulated data if set to 1, disabled if set to 0.
+</p>
+<p>Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>header_period</samp>&rsquo;</dt>
+<dd><p>Set StreamMuxConfig and PCE repetition period (in frames) for sending
+in-band configuration buffers within LATM/LOAS transport layer.
+</p>
+<p>Must be a 16-bits non-negative integer.
+</p>
+<p>Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>vbr</samp>&rsquo;</dt>
+<dd><p>Set VBR mode, from 1 to 5. 1 is lowest quality (though still pretty
+good) and 5 is highest quality. A value of 0 will disable VBR, and CBR
+(Constant Bit Rate) is enabled.
+</p>
+<p>Currently only the &lsquo;<samp>aac_low</samp>&rsquo; profile supports VBR encoding.
+</p>
+<p>VBR modes 1-5 correspond to roughly the following average bit rates:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>32 kbps/channel
+</p></dd>
+<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dd><p>40 kbps/channel
+</p></dd>
+<dt> &lsquo;<samp>3</samp>&rsquo;</dt>
+<dd><p>48-56 kbps/channel
+</p></dd>
+<dt> &lsquo;<samp>4</samp>&rsquo;</dt>
+<dd><p>64 kbps/channel
+</p></dd>
+<dt> &lsquo;<samp>5</samp>&rsquo;</dt>
+<dd><p>about 80-96 kbps/channel
+</p></dd>
+</dl>
+
+<p>Default value is 0.
+</p></dd>
+</dl>
+
+<a name="Examples-2"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Examples-2">8.4.2 Examples</a></h3>
+
+<ul>
+<li>
+Use <code>ffmpeg</code> to convert an audio file to VBR AAC in an M4A (MP4)
+container:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.wav -codec:a libfdk_aac -vbr 3 output.m4a
+</pre></td></tr></table>
+
+</li><li>
+Use <code>ffmpeg</code> to convert an audio file to CBR 64k kbps AAC, using the
+High-Efficiency AAC profile:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.wav -c:a libfdk_aac -profile:a aac_he -b:a 64k output.m4a
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="libmp3lame"></a>
+</p><a name="libmp3lame-1"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-libmp3lame-1">8.5 libmp3lame</a></h2>
+
+<p>LAME (Lame Ain&rsquo;t an MP3 Encoder) MP3 encoder wrapper.
+</p>
+<p>Requires the presence of the libmp3lame headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libmp3lame</code>.
+</p>
+<p>See <a href="#libshine">libshine</a> for a fixed-point MP3 encoder, although with a
+lower quality.
+</p>
+<a name="Options-12"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-12">8.5.1 Options</a></h3>
+
+<p>The following options are supported by the libmp3lame wrapper. The
+<code>lame</code>-equivalent of the options are listed in parentheses.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b (<em>-b</em>)</samp>&rsquo;</dt>
+<dd><p>Set bitrate expressed in bits/s for CBR or ABR. LAME <code>bitrate</code> is
+expressed in kilobits/s.
+</p>
+</dd>
+<dt> &lsquo;<samp>q (<em>-V</em>)</samp>&rsquo;</dt>
+<dd><p>Set constant quality setting for VBR. This option is valid only
+using the <code>ffmpeg</code> command-line tool. For library interface
+users, use &lsquo;<samp>global_quality</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>compression_level (<em>-q</em>)</samp>&rsquo;</dt>
+<dd><p>Set algorithm quality. Valid arguments are integers in the 0-9 range,
+with 0 meaning highest quality but slowest, and 9 meaning fastest
+while producing the worst quality.
+</p>
+</dd>
+<dt> &lsquo;<samp>reservoir</samp>&rsquo;</dt>
+<dd><p>Enable use of bit reservoir when set to 1. Default value is 1. LAME
+has this enabled by default, but can be overriden by use
+&lsquo;<samp>--nores</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>joint_stereo (<em>-m j</em>)</samp>&rsquo;</dt>
+<dd><p>Enable the encoder to use (on a frame by frame basis) either L/R
+stereo or mid/side stereo. Default value is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>abr (<em>--abr</em>)</samp>&rsquo;</dt>
+<dd><p>Enable the encoder to use ABR when set to 1. The <code>lame</code>
+&lsquo;<samp>--abr</samp>&rsquo; sets the target bitrate, while this options only
+tells FFmpeg to use ABR still relies on &lsquo;<samp>b</samp>&rsquo; to set bitrate.
+</p>
+</dd>
+</dl>
+
+<a name="libopencore_002damrnb-1"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-libopencore_002damrnb-1">8.6 libopencore-amrnb</a></h2>
+
+<p>OpenCORE Adaptive Multi-Rate Narrowband encoder.
+</p>
+<p>Requires the presence of the libopencore-amrnb headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libopencore-amrnb --enable-version3</code>.
+</p>
+<p>This is a mono-only encoder. Officially it only supports 8000Hz sample rate,
+but you can override it by setting &lsquo;<samp>strict</samp>&rsquo; to &lsquo;<samp>unofficial</samp>&rsquo; or
+lower.
+</p>
+<a name="Options-9"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-9">8.6.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>Set bitrate in bits per second. Only the following bitrates are supported,
+otherwise libavcodec will round to the nearest valid bitrate.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>4750</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>5150</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>5900</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>6700</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>7400</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>7950</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>10200</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>12200</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>dtx</samp>&rsquo;</dt>
+<dd><p>Allow discontinuous transmission (generate comfort noise) when set to 1. The
+default value is 0 (disabled).
+</p>
+</dd>
+</dl>
+
+<p><a name="libshine"></a>
+</p><a name="libshine-1"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-libshine-1">8.7 libshine</a></h2>
+
+<p>Shine Fixed-Point MP3 encoder wrapper.
+</p>
+<p>Shine is a fixed-point MP3 encoder. It has a far better performance on
+platforms without an FPU, e.g. armel CPUs, and some phones and tablets.
+However, as it is more targeted on performance than quality, it is not on par
+with LAME and other production-grade encoders quality-wise. Also, according to
+the project&rsquo;s homepage, this encoder may not be free of bugs as the code was
+written a long time ago and the project was dead for at least 5 years.
+</p>
+<p>This encoder only supports stereo and mono input. This is also CBR-only.
+</p>
+<p>The original project (last updated in early 2007) is at
+<a href="http://sourceforge.net/projects/libshine-fxp/">http://sourceforge.net/projects/libshine-fxp/</a>. We only support the
+updated fork by the Savonet/Liquidsoap project at <a href="https://github.com/savonet/shine">https://github.com/savonet/shine</a>.
+</p>
+<p>Requires the presence of the libshine headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libshine</code>.
+</p>
+<p>See also <a href="#libmp3lame">libmp3lame</a>.
+</p>
+<a name="Options"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options">8.7.1 Options</a></h3>
+
+<p>The following options are supported by the libshine wrapper. The
+<code>shineenc</code>-equivalent of the options are listed in parentheses.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b (<em>-b</em>)</samp>&rsquo;</dt>
+<dd><p>Set bitrate expressed in bits/s for CBR. <code>shineenc</code> &lsquo;<samp>-b</samp>&rsquo; option
+is expressed in kilobits/s.
+</p>
+</dd>
+</dl>
+
+<a name="libtwolame"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-libtwolame">8.8 libtwolame</a></h2>
+
+<p>TwoLAME MP2 encoder wrapper.
+</p>
+<p>Requires the presence of the libtwolame headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libtwolame</code>.
+</p>
+<a name="Options-1"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-1">8.8.1 Options</a></h3>
+
+<p>The following options are supported by the libtwolame wrapper. The
+<code>twolame</code>-equivalent options follow the FFmpeg ones and are in
+parentheses.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b (<em>-b</em>)</samp>&rsquo;</dt>
+<dd><p>Set bitrate expressed in bits/s for CBR. <code>twolame</code> &lsquo;<samp>b</samp>&rsquo;
+option is expressed in kilobits/s. Default value is 128k.
+</p>
+</dd>
+<dt> &lsquo;<samp>q (<em>-V</em>)</samp>&rsquo;</dt>
+<dd><p>Set quality for experimental VBR support. Maximum value range is
+from -50 to 50, useful range is from -10 to 10. The higher the
+value, the better the quality. This option is valid only using the
+<code>ffmpeg</code> command-line tool. For library interface users,
+use &lsquo;<samp>global_quality</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>mode (<em>--mode</em>)</samp>&rsquo;</dt>
+<dd><p>Set the mode of the resulting audio. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Choose mode automatically based on the input. This is the default.
+</p></dd>
+<dt> &lsquo;<samp>stereo</samp>&rsquo;</dt>
+<dd><p>Stereo
+</p></dd>
+<dt> &lsquo;<samp>joint_stereo</samp>&rsquo;</dt>
+<dd><p>Joint stereo
+</p></dd>
+<dt> &lsquo;<samp>dual_channel</samp>&rsquo;</dt>
+<dd><p>Dual channel
+</p></dd>
+<dt> &lsquo;<samp>mono</samp>&rsquo;</dt>
+<dd><p>Mono
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>psymodel (<em>--psyc-mode</em>)</samp>&rsquo;</dt>
+<dd><p>Set psychoacoustic model to use in encoding. The argument must be
+an integer between -1 and 4, inclusive. The higher the value, the
+better the quality. The default value is 3.
+</p>
+</dd>
+<dt> &lsquo;<samp>energy_levels (<em>--energy</em>)</samp>&rsquo;</dt>
+<dd><p>Enable energy levels extensions when set to 1. The default value is
+0 (disabled).
+</p>
+</dd>
+<dt> &lsquo;<samp>error_protection (<em>--protect</em>)</samp>&rsquo;</dt>
+<dd><p>Enable CRC error protection when set to 1. The default value is 0
+(disabled).
+</p>
+</dd>
+<dt> &lsquo;<samp>copyright (<em>--copyright</em>)</samp>&rsquo;</dt>
+<dd><p>Set MPEG audio copyright flag when set to 1. The default value is 0
+(disabled).
+</p>
+</dd>
+<dt> &lsquo;<samp>original (<em>--original</em>)</samp>&rsquo;</dt>
+<dd><p>Set MPEG audio original flag when set to 1. The default value is 0
+(disabled).
+</p>
+</dd>
+</dl>
+
+<p><a name="libvo_002daacenc"></a>
+</p><a name="libvo_002daacenc-1"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-libvo_002daacenc-1">8.9 libvo-aacenc</a></h2>
+
+<p>VisualOn AAC encoder.
+</p>
+<p>Requires the presence of the libvo-aacenc headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libvo-aacenc --enable-version3</code>.
+</p>
+<p>This encoder is considered to be worse than the
+<a href="#aacenc">native experimental FFmpeg AAC encoder</a>, according to
+multiple sources.
+</p>
+<a name="Options-4"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-4">8.9.1 Options</a></h3>
+
+<p>The VisualOn AAC encoder only support encoding AAC-LC and up to 2
+channels. It is also CBR-only.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>Set bit rate in bits/s.
+</p>
+</dd>
+</dl>
+
+<a name="libvo_002damrwbenc"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-libvo_002damrwbenc">8.10 libvo-amrwbenc</a></h2>
+
+<p>VisualOn Adaptive Multi-Rate Wideband encoder.
+</p>
+<p>Requires the presence of the libvo-amrwbenc headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libvo-amrwbenc --enable-version3</code>.
+</p>
+<p>This is a mono-only encoder. Officially it only supports 16000Hz sample
+rate, but you can override it by setting &lsquo;<samp>strict</samp>&rsquo; to
+&lsquo;<samp>unofficial</samp>&rsquo; or lower.
+</p>
+<a name="Options-15"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-15">8.10.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>Set bitrate in bits/s. Only the following bitrates are supported, otherwise
+libavcodec will round to the nearest valid bitrate.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>6600</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>8850</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>12650</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>14250</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>15850</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>18250</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>19850</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>23050</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>23850</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>dtx</samp>&rsquo;</dt>
+<dd><p>Allow discontinuous transmission (generate comfort noise) when set to 1. The
+default value is 0 (disabled).
+</p>
+</dd>
+</dl>
+
+<a name="libopus-1"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-libopus-1">8.11 libopus</a></h2>
+
+<p>libopus Opus Interactive Audio Codec encoder wrapper.
+</p>
+<p>Requires the presence of the libopus headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libopus</code>.
+</p>
+<a name="Option-Mapping"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Option-Mapping">8.11.1 Option Mapping</a></h3>
+
+<p>Most libopus options are modeled after the <code>opusenc</code> utility from
+opus-tools. The following is an option mapping chart describing options
+supported by the libopus wrapper, and their <code>opusenc</code>-equivalent
+in parentheses.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b (<em>bitrate</em>)</samp>&rsquo;</dt>
+<dd><p>Set the bit rate in bits/s.  FFmpeg&rsquo;s &lsquo;<samp>b</samp>&rsquo; option is
+expressed in bits/s, while <code>opusenc</code>&rsquo;s &lsquo;<samp>bitrate</samp>&rsquo; in
+kilobits/s.
+</p>
+</dd>
+<dt> &lsquo;<samp>vbr (<em>vbr</em>, <em>hard-cbr</em>, and <em>cvbr</em>)</samp>&rsquo;</dt>
+<dd><p>Set VBR mode. The FFmpeg &lsquo;<samp>vbr</samp>&rsquo; option has the following
+valid arguments, with the their <code>opusenc</code> equivalent options
+in parentheses:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>off (<em>hard-cbr</em>)</samp>&rsquo;</dt>
+<dd><p>Use constant bit rate encoding.
+</p>
+</dd>
+<dt> &lsquo;<samp>on (<em>vbr</em>)</samp>&rsquo;</dt>
+<dd><p>Use variable bit rate encoding (the default).
+</p>
+</dd>
+<dt> &lsquo;<samp>constrained (<em>cvbr</em>)</samp>&rsquo;</dt>
+<dd><p>Use constrained variable bit rate encoding.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>compression_level (<em>comp</em>)</samp>&rsquo;</dt>
+<dd><p>Set encoding algorithm complexity. Valid options are integers in
+the 0-10 range. 0 gives the fastest encodes but lower quality, while 10
+gives the highest quality but slowest encoding. The default is 10.
+</p>
+</dd>
+<dt> &lsquo;<samp>frame_duration (<em>framesize</em>)</samp>&rsquo;</dt>
+<dd><p>Set maximum frame size, or duration of a frame in milliseconds. The
+argument must be exactly the following: 2.5, 5, 10, 20, 40, 60. Smaller
+frame sizes achieve lower latency but less quality at a given bitrate.
+Sizes greater than 20ms are only interesting at fairly low bitrates.
+The default is 20ms.
+</p>
+</dd>
+<dt> &lsquo;<samp>packet_loss (<em>expect-loss</em>)</samp>&rsquo;</dt>
+<dd><p>Set expected packet loss percentage. The default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>application (N.A.)</samp>&rsquo;</dt>
+<dd><p>Set intended application type. Valid options are listed below:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>voip</samp>&rsquo;</dt>
+<dd><p>Favor improved speech intelligibility.
+</p></dd>
+<dt> &lsquo;<samp>audio</samp>&rsquo;</dt>
+<dd><p>Favor faithfulness to the input (the default).
+</p></dd>
+<dt> &lsquo;<samp>lowdelay</samp>&rsquo;</dt>
+<dd><p>Restrict to only the lowest delay modes.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>cutoff (N.A.)</samp>&rsquo;</dt>
+<dd><p>Set cutoff bandwidth in Hz. The argument must be exactly one of the
+following: 4000, 6000, 8000, 12000, or 20000, corresponding to
+narrowband, mediumband, wideband, super wideband, and fullband
+respectively. The default is 0 (cutoff disabled).
+</p>
+</dd>
+</dl>
+
+<a name="libvorbis"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-libvorbis">8.12 libvorbis</a></h2>
+
+<p>libvorbis encoder wrapper.
+</p>
+<p>Requires the presence of the libvorbisenc headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libvorbis</code>.
+</p>
+<a name="Options-16"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-16">8.12.1 Options</a></h3>
+
+<p>The following options are supported by the libvorbis wrapper. The
+<code>oggenc</code>-equivalent of the options are listed in parentheses.
+</p>
+<p>To get a more accurate and extensive documentation of the libvorbis
+options, consult the libvorbisenc&rsquo;s and <code>oggenc</code>&rsquo;s documentations.
+See <a href="http://xiph.org/vorbis/">http://xiph.org/vorbis/</a>,
+<a href="http://wiki.xiph.org/Vorbis-tools">http://wiki.xiph.org/Vorbis-tools</a>, and oggenc(1).
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b (<em>-b</em>)</samp>&rsquo;</dt>
+<dd><p>Set bitrate expressed in bits/s for ABR. <code>oggenc</code> &lsquo;<samp>-b</samp>&rsquo; is
+expressed in kilobits/s.
+</p>
+</dd>
+<dt> &lsquo;<samp>q (<em>-q</em>)</samp>&rsquo;</dt>
+<dd><p>Set constant quality setting for VBR. The value should be a float
+number in the range of -1.0 to 10.0. The higher the value, the better
+the quality. The default value is &lsquo;<samp>3.0</samp>&rsquo;.
+</p>
+<p>This option is valid only using the <code>ffmpeg</code> command-line tool.
+For library interface users, use &lsquo;<samp>global_quality</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>cutoff (<em>--advanced-encode-option lowpass_frequency=N</em>)</samp>&rsquo;</dt>
+<dd><p>Set cutoff bandwidth in Hz, a value of 0 disables cutoff. <code>oggenc</code>&rsquo;s
+related option is expressed in kHz. The default value is &lsquo;<samp>0</samp>&rsquo; (cutoff
+disabled).
+</p>
+</dd>
+<dt> &lsquo;<samp>minrate (<em>-m</em>)</samp>&rsquo;</dt>
+<dd><p>Set minimum bitrate expressed in bits/s. <code>oggenc</code> &lsquo;<samp>-m</samp>&rsquo; is
+expressed in kilobits/s.
+</p>
+</dd>
+<dt> &lsquo;<samp>maxrate (<em>-M</em>)</samp>&rsquo;</dt>
+<dd><p>Set maximum bitrate expressed in bits/s. <code>oggenc</code> &lsquo;<samp>-M</samp>&rsquo; is
+expressed in kilobits/s. This only has effect on ABR mode.
+</p>
+</dd>
+<dt> &lsquo;<samp>iblock (<em>--advanced-encode-option impulse_noisetune=N</em>)</samp>&rsquo;</dt>
+<dd><p>Set noise floor bias for impulse blocks. The value is a float number from
+-15.0 to 0.0. A negative bias instructs the encoder to pay special attention
+to the crispness of transients in the encoded audio. The tradeoff for better
+transient response is a higher bitrate.
+</p>
+</dd>
+</dl>
+
+<a name="libwavpack"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-libwavpack">8.13 libwavpack</a></h2>
+
+<p>A wrapper providing WavPack encoding through libwavpack.
+</p>
+<p>Only lossless mode using 32-bit integer samples is supported currently.
+The &lsquo;<samp>compression_level</samp>&rsquo; option can be used to control speed vs.
+compression tradeoff, with the values mapped to libwavpack as follows:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>Fast mode - corresponding to the wavpack &lsquo;<samp>-f</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>Normal (default) settings.
+</p>
+</dd>
+<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dd><p>High quality - corresponding to the wavpack &lsquo;<samp>-h</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>3</samp>&rsquo;</dt>
+<dd><p>Very high quality - corresponding to the wavpack &lsquo;<samp>-hh</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>4-8</samp>&rsquo;</dt>
+<dd><p>Same as 3, but with extra processing enabled - corresponding to the wavpack
+&lsquo;<samp>-x</samp>&rsquo; option. I.e. 4 is the same as &lsquo;<samp>-x2</samp>&rsquo; and 8 is the same as
+&lsquo;<samp>-x6</samp>&rsquo;.
+</p>
+</dd>
+</dl>
+
+
+<a name="Video-Encoders"></a>
+<h1 class="chapter"><a href="ffmpeg-codecs.html#toc-Video-Encoders">9. Video Encoders</a></h1>
+
+<p>A description of some of the currently available video encoders
+follows.
+</p>
+<a name="libtheora"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-libtheora">9.1 libtheora</a></h2>
+
+<p>libtheora Theora encoder wrapper.
+</p>
+<p>Requires the presence of the libtheora headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libtheora</code>.
+</p>
+<p>For more informations about the libtheora project see
+<a href="http://www.theora.org/">http://www.theora.org/</a>.
+</p>
+<a name="Options-14"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-14">9.1.1 Options</a></h3>
+
+<p>The following global options are mapped to internal libtheora options
+which affect the quality and the bitrate of the encoded stream.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>Set the video bitrate in bit/s for CBR (Constant Bit Rate) mode.  In
+case VBR (Variable Bit Rate) mode is enabled this option is ignored.
+</p>
+</dd>
+<dt> &lsquo;<samp>flags</samp>&rsquo;</dt>
+<dd><p>Used to enable constant quality mode (VBR) encoding through the
+&lsquo;<samp>qscale</samp>&rsquo; flag, and to enable the <code>pass1</code> and <code>pass2</code>
+modes.
+</p>
+</dd>
+<dt> &lsquo;<samp>g</samp>&rsquo;</dt>
+<dd><p>Set the GOP size.
+</p>
+</dd>
+<dt> &lsquo;<samp>global_quality</samp>&rsquo;</dt>
+<dd><p>Set the global quality as an integer in lambda units.
+</p>
+<p>Only relevant when VBR mode is enabled with <code>flags +qscale</code>. The
+value is converted to QP units by dividing it by <code>FF_QP2LAMBDA</code>,
+clipped in the [0 - 10] range, and then multiplied by 6.3 to get a
+value in the native libtheora range [0-63]. A higher value corresponds
+to a higher quality.
+</p>
+</dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Enable VBR mode when set to a non-negative value, and set constant
+quality value as a double floating point value in QP units.
+</p>
+<p>The value is clipped in the [0-10] range, and then multiplied by 6.3
+to get a value in the native libtheora range [0-63].
+</p>
+<p>This option is valid only using the <code>ffmpeg</code> command-line
+tool. For library interface users, use &lsquo;<samp>global_quality</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<a name="Examples"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Examples">9.1.2 Examples</a></h3>
+
+<ul>
+<li>
+Set maximum constant quality (VBR) encoding with <code>ffmpeg</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -codec:v libtheora -q:v 10 OUTPUT.ogg
+</pre></td></tr></table>
+
+</li><li>
+Use <code>ffmpeg</code> to convert a CBR 1000 kbps Theora video stream:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -codec:v libtheora -b:v 1000k OUTPUT.ogg
+</pre></td></tr></table>
+</li></ul>
+
+<a name="libvpx"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-libvpx">9.2 libvpx</a></h2>
+
+<p>VP8 format supported through libvpx.
+</p>
+<p>Requires the presence of the libvpx headers and library during configuration.
+You need to explicitly configure the build with <code>--enable-libvpx</code>.
+</p>
+<a name="Options-3"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-3">9.2.1 Options</a></h3>
+
+<p>Mapping from FFmpeg to libvpx options with conversion notes in parentheses.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>threads</samp>&rsquo;</dt>
+<dd><p>g_threads
+</p>
+</dd>
+<dt> &lsquo;<samp>profile</samp>&rsquo;</dt>
+<dd><p>g_profile
+</p>
+</dd>
+<dt> &lsquo;<samp>vb</samp>&rsquo;</dt>
+<dd><p>rc_target_bitrate
+</p>
+</dd>
+<dt> &lsquo;<samp>g</samp>&rsquo;</dt>
+<dd><p>kf_max_dist
+</p>
+</dd>
+<dt> &lsquo;<samp>keyint_min</samp>&rsquo;</dt>
+<dd><p>kf_min_dist
+</p>
+</dd>
+<dt> &lsquo;<samp>qmin</samp>&rsquo;</dt>
+<dd><p>rc_min_quantizer
+</p>
+</dd>
+<dt> &lsquo;<samp>qmax</samp>&rsquo;</dt>
+<dd><p>rc_max_quantizer
+</p>
+</dd>
+<dt> &lsquo;<samp>bufsize, vb</samp>&rsquo;</dt>
+<dd><p>rc_buf_sz
+<code>(bufsize * 1000 / vb)</code>
+</p>
+<p>rc_buf_optimal_sz
+<code>(bufsize * 1000 / vb * 5 / 6)</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_init_occupancy, vb</samp>&rsquo;</dt>
+<dd><p>rc_buf_initial_sz
+<code>(rc_init_occupancy * 1000 / vb)</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_buffer_aggressivity</samp>&rsquo;</dt>
+<dd><p>rc_undershoot_pct
+</p>
+</dd>
+<dt> &lsquo;<samp>skip_threshold</samp>&rsquo;</dt>
+<dd><p>rc_dropframe_thresh
+</p>
+</dd>
+<dt> &lsquo;<samp>qcomp</samp>&rsquo;</dt>
+<dd><p>rc_2pass_vbr_bias_pct
+</p>
+</dd>
+<dt> &lsquo;<samp>maxrate, vb</samp>&rsquo;</dt>
+<dd><p>rc_2pass_vbr_maxsection_pct
+<code>(maxrate * 100 / vb)</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>minrate, vb</samp>&rsquo;</dt>
+<dd><p>rc_2pass_vbr_minsection_pct
+<code>(minrate * 100 / vb)</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>minrate, maxrate, vb</samp>&rsquo;</dt>
+<dd><p><code>VPX_CBR</code>
+<code>(minrate == maxrate == vb)</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>crf</samp>&rsquo;</dt>
+<dd><p><code>VPX_CQ</code>, <code>VP8E_SET_CQ_LEVEL</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>quality</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp><var>best</var></samp>&rsquo;</dt>
+<dd><p><code>VPX_DL_BEST_QUALITY</code>
+</p></dd>
+<dt> &lsquo;<samp><var>good</var></samp>&rsquo;</dt>
+<dd><p><code>VPX_DL_GOOD_QUALITY</code>
+</p></dd>
+<dt> &lsquo;<samp><var>realtime</var></samp>&rsquo;</dt>
+<dd><p><code>VPX_DL_REALTIME</code>
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>speed</samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_CPUUSED</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>nr</samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_NOISE_SENSITIVITY</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>mb_threshold</samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_STATIC_THRESHOLD</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>slices</samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_TOKEN_PARTITIONS</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>max-intra-rate</samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_MAX_INTRA_BITRATE_PCT</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>force_key_frames</samp>&rsquo;</dt>
+<dd><p><code>VPX_EFLAG_FORCE_KF</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>Alternate reference frame related</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>vp8flags altref</samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_ENABLEAUTOALTREF</code>
+</p></dd>
+<dt> &lsquo;<samp><var>arnr_max_frames</var></samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_ARNR_MAXFRAMES</code>
+</p></dd>
+<dt> &lsquo;<samp><var>arnr_type</var></samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_ARNR_TYPE</code>
+</p></dd>
+<dt> &lsquo;<samp><var>arnr_strength</var></samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_ARNR_STRENGTH</code>
+</p></dd>
+<dt> &lsquo;<samp><var>rc_lookahead</var></samp>&rsquo;</dt>
+<dd><p>g_lag_in_frames
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>vp8flags error_resilient</samp>&rsquo;</dt>
+<dd><p>g_error_resilient
+</p>
+</dd>
+</dl>
+
+<p>For more information about libvpx see:
+<a href="http://www.webmproject.org/">http://www.webmproject.org/</a>
+</p>
+<a name="libx264"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-libx264">9.3 libx264</a></h2>
+
+<p>x264 H.264/MPEG-4 AVC encoder wrapper.
+</p>
+<p>This encoder requires the presence of the libx264 headers and library
+during configuration. You need to explicitly configure the build with
+<code>--enable-libx264</code>.
+</p>
+<p>libx264 supports an impressive number of features, including 8x8 and
+4x4 adaptive spatial transform, adaptive B-frame placement, CAVLC/CABAC
+entropy coding, interlacing (MBAFF), lossless mode, psy optimizations
+for detail retention (adaptive quantization, psy-RD, psy-trellis).
+</p>
+<p>Many libx264 encoder options are mapped to FFmpeg global codec
+options, while unique encoder options are provided through private
+options. Additionally the &lsquo;<samp>x264opts</samp>&rsquo; and &lsquo;<samp>x264-params</samp>&rsquo;
+private options allows to pass a list of key=value tuples as accepted
+by the libx264 <code>x264_param_parse</code> function.
+</p>
+<p>The x264 project website is at
+<a href="http://www.videolan.org/developers/x264.html">http://www.videolan.org/developers/x264.html</a>.
+</p>
+<a name="Options-6"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-6">9.3.1 Options</a></h3>
+
+<p>The following options are supported by the libx264 wrapper. The
+<code>x264</code>-equivalent options or values are listed in parentheses
+for easy migration.
+</p>
+<p>To reduce the duplication of documentation, only the private options
+and some others requiring special attention are documented here. For
+the documentation of the undocumented generic options, see
+<a href="#codec_002doptions">the Codec Options chapter</a>.
+</p>
+<p>To get a more accurate and extensive documentation of the libx264
+options, invoke the command <code>x264 --full-help</code> or consult
+the libx264 documentation.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b (<em>bitrate</em>)</samp>&rsquo;</dt>
+<dd><p>Set bitrate in bits/s. Note that FFmpeg&rsquo;s &lsquo;<samp>b</samp>&rsquo; option is
+expressed in bits/s, while <code>x264</code>&rsquo;s &lsquo;<samp>bitrate</samp>&rsquo; is in
+kilobits/s.
+</p>
+</dd>
+<dt> &lsquo;<samp>bf (<em>bframes</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>g (<em>keyint</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qmax (<em>qpmax</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qmin (<em>qpmin</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qdiff (<em>qpstep</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qblur (<em>qblur</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qcomp (<em>qcomp</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>refs (<em>ref</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sc_threshold (<em>scenecut</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>trellis (<em>trellis</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>nr  (<em>nr</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>me_range (<em>merange</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>me_method (<em>me</em>)</samp>&rsquo;</dt>
+<dd><p>Set motion estimation method. Possible values in the decreasing order
+of speed:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>dia (<em>dia</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>epzs (<em>dia</em>)</samp>&rsquo;</dt>
+<dd><p>Diamond search with radius 1 (fastest). &lsquo;<samp>epzs</samp>&rsquo; is an alias for
+&lsquo;<samp>dia</samp>&rsquo;.
+</p></dd>
+<dt> &lsquo;<samp>hex (<em>hex</em>)</samp>&rsquo;</dt>
+<dd><p>Hexagonal search with radius 2.
+</p></dd>
+<dt> &lsquo;<samp>umh (<em>umh</em>)</samp>&rsquo;</dt>
+<dd><p>Uneven multi-hexagon search.
+</p></dd>
+<dt> &lsquo;<samp>esa (<em>esa</em>)</samp>&rsquo;</dt>
+<dd><p>Exhaustive search.
+</p></dd>
+<dt> &lsquo;<samp>tesa (<em>tesa</em>)</samp>&rsquo;</dt>
+<dd><p>Hadamard exhaustive search (slowest).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>subq (<em>subme</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>b_strategy (<em>b-adapt</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>keyint_min (<em>min-keyint</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>coder</samp>&rsquo;</dt>
+<dd><p>Set entropy encoder. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>ac</samp>&rsquo;</dt>
+<dd><p>Enable CABAC.
+</p>
+</dd>
+<dt> &lsquo;<samp>vlc</samp>&rsquo;</dt>
+<dd><p>Enable CAVLC and disable CABAC. It generates the same effect as
+<code>x264</code>&rsquo;s &lsquo;<samp>--no-cabac</samp>&rsquo; option.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>cmp</samp>&rsquo;</dt>
+<dd><p>Set full pixel motion estimation comparation algorithm. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+<dd><p>Enable chroma in motion estimation.
+</p>
+</dd>
+<dt> &lsquo;<samp>sad</samp>&rsquo;</dt>
+<dd><p>Ignore chroma in motion estimation. It generates the same effect as
+<code>x264</code>&rsquo;s &lsquo;<samp>--no-chroma-me</samp>&rsquo; option.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>threads (<em>threads</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>thread_type</samp>&rsquo;</dt>
+<dd><p>Set multithreading technique. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>slice</samp>&rsquo;</dt>
+<dd><p>Slice-based multithreading. It generates the same effect as
+<code>x264</code>&rsquo;s &lsquo;<samp>--sliced-threads</samp>&rsquo; option.
+</p></dd>
+<dt> &lsquo;<samp>frame</samp>&rsquo;</dt>
+<dd><p>Frame-based multithreading.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>flags</samp>&rsquo;</dt>
+<dd><p>Set encoding flags. It can be used to disable closed GOP and enable
+open GOP by setting it to <code>-cgop</code>. The result is similar to
+the behavior of <code>x264</code>&rsquo;s &lsquo;<samp>--open-gop</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_init_occupancy (<em>vbv-init</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>preset (<em>preset</em>)</samp>&rsquo;</dt>
+<dd><p>Set the encoding preset.
+</p>
+</dd>
+<dt> &lsquo;<samp>tune (<em>tune</em>)</samp>&rsquo;</dt>
+<dd><p>Set tuning of the encoding params.
+</p>
+</dd>
+<dt> &lsquo;<samp>profile (<em>profile</em>)</samp>&rsquo;</dt>
+<dd><p>Set profile restrictions.
+</p>
+</dd>
+<dt> &lsquo;<samp>fastfirstpass</samp>&rsquo;</dt>
+<dd><p>Enable fast settings when encoding first pass, when set to 1. When set
+to 0, it has the same effect of <code>x264</code>&rsquo;s
+&lsquo;<samp>--slow-firstpass</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>crf (<em>crf</em>)</samp>&rsquo;</dt>
+<dd><p>Set the quality for constant quality mode.
+</p>
+</dd>
+<dt> &lsquo;<samp>crf_max (<em>crf-max</em>)</samp>&rsquo;</dt>
+<dd><p>In CRF mode, prevents VBV from lowering quality beyond this point.
+</p>
+</dd>
+<dt> &lsquo;<samp>qp (<em>qp</em>)</samp>&rsquo;</dt>
+<dd><p>Set constant quantization rate control method parameter.
+</p>
+</dd>
+<dt> &lsquo;<samp>aq-mode (<em>aq-mode</em>)</samp>&rsquo;</dt>
+<dd><p>Set AQ method. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>none (<em>0</em>)</samp>&rsquo;</dt>
+<dd><p>Disabled.
+</p>
+</dd>
+<dt> &lsquo;<samp>variance (<em>1</em>)</samp>&rsquo;</dt>
+<dd><p>Variance AQ (complexity mask).
+</p>
+</dd>
+<dt> &lsquo;<samp>autovariance (<em>2</em>)</samp>&rsquo;</dt>
+<dd><p>Auto-variance AQ (experimental).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>aq-strength (<em>aq-strength</em>)</samp>&rsquo;</dt>
+<dd><p>Set AQ strength, reduce blocking and blurring in flat and textured areas.
+</p>
+</dd>
+<dt> &lsquo;<samp>psy</samp>&rsquo;</dt>
+<dd><p>Use psychovisual optimizations when set to 1. When set to 0, it has the
+same effect as <code>x264</code>&rsquo;s &lsquo;<samp>--no-psy</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>psy-rd  (<em>psy-rd</em>)</samp>&rsquo;</dt>
+<dd><p>Set strength of psychovisual optimization, in
+<var>psy-rd</var>:<var>psy-trellis</var> format.
+</p>
+</dd>
+<dt> &lsquo;<samp>rc-lookahead (<em>rc-lookahead</em>)</samp>&rsquo;</dt>
+<dd><p>Set number of frames to look ahead for frametype and ratecontrol.
+</p>
+</dd>
+<dt> &lsquo;<samp>weightb</samp>&rsquo;</dt>
+<dd><p>Enable weighted prediction for B-frames when set to 1. When set to 0,
+it has the same effect as <code>x264</code>&rsquo;s &lsquo;<samp>--no-weightb</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>weightp (<em>weightp</em>)</samp>&rsquo;</dt>
+<dd><p>Set weighted prediction method for P-frames. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>none (<em>0</em>)</samp>&rsquo;</dt>
+<dd><p>Disabled
+</p></dd>
+<dt> &lsquo;<samp>simple (<em>1</em>)</samp>&rsquo;</dt>
+<dd><p>Enable only weighted refs
+</p></dd>
+<dt> &lsquo;<samp>smart (<em>2</em>)</samp>&rsquo;</dt>
+<dd><p>Enable both weighted refs and duplicates
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>ssim (<em>ssim</em>)</samp>&rsquo;</dt>
+<dd><p>Enable calculation and printing SSIM stats after the encoding.
+</p>
+</dd>
+<dt> &lsquo;<samp>intra-refresh (<em>intra-refresh</em>)</samp>&rsquo;</dt>
+<dd><p>Enable the use of Periodic Intra Refresh instead of IDR frames when set
+to 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>bluray-compat (<em>bluray-compat</em>)</samp>&rsquo;</dt>
+<dd><p>Configure the encoder to be compatible with the bluray standard.
+It is a shorthand for setting &quot;bluray-compat=1 force-cfr=1&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>b-bias (<em>b-bias</em>)</samp>&rsquo;</dt>
+<dd><p>Set the influence on how often B-frames are used.
+</p>
+</dd>
+<dt> &lsquo;<samp>b-pyramid (<em>b-pyramid</em>)</samp>&rsquo;</dt>
+<dd><p>Set method for keeping of some B-frames as references. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>none (<em>none</em>)</samp>&rsquo;</dt>
+<dd><p>Disabled.
+</p></dd>
+<dt> &lsquo;<samp>strict (<em>strict</em>)</samp>&rsquo;</dt>
+<dd><p>Strictly hierarchical pyramid.
+</p></dd>
+<dt> &lsquo;<samp>normal (<em>normal</em>)</samp>&rsquo;</dt>
+<dd><p>Non-strict (not Blu-ray compatible).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>mixed-refs</samp>&rsquo;</dt>
+<dd><p>Enable the use of one reference per partition, as opposed to one
+reference per macroblock when set to 1. When set to 0, it has the
+same effect as <code>x264</code>&rsquo;s &lsquo;<samp>--no-mixed-refs</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>8x8dct</samp>&rsquo;</dt>
+<dd><p>Enable adaptive spatial transform (high profile 8x8 transform)
+when set to 1. When set to 0, it has the same effect as
+<code>x264</code>&rsquo;s &lsquo;<samp>--no-8x8dct</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>fast-pskip</samp>&rsquo;</dt>
+<dd><p>Enable early SKIP detection on P-frames when set to 1. When set
+to 0, it has the same effect as <code>x264</code>&rsquo;s
+&lsquo;<samp>--no-fast-pskip</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>aud (<em>aud</em>)</samp>&rsquo;</dt>
+<dd><p>Enable use of access unit delimiters when set to 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>mbtree</samp>&rsquo;</dt>
+<dd><p>Enable use macroblock tree ratecontrol when set to 1. When set
+to 0, it has the same effect as <code>x264</code>&rsquo;s
+&lsquo;<samp>--no-mbtree</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>deblock (<em>deblock</em>)</samp>&rsquo;</dt>
+<dd><p>Set loop filter parameters, in <var>alpha</var>:<var>beta</var> form.
+</p>
+</dd>
+<dt> &lsquo;<samp>cplxblur (<em>cplxblur</em>)</samp>&rsquo;</dt>
+<dd><p>Set fluctuations reduction in QP (before curve compression).
+</p>
+</dd>
+<dt> &lsquo;<samp>partitions (<em>partitions</em>)</samp>&rsquo;</dt>
+<dd><p>Set partitions to consider as a comma-separated list of. Possible
+values in the list:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>p8x8</samp>&rsquo;</dt>
+<dd><p>8x8 P-frame partition.
+</p></dd>
+<dt> &lsquo;<samp>p4x4</samp>&rsquo;</dt>
+<dd><p>4x4 P-frame partition.
+</p></dd>
+<dt> &lsquo;<samp>b8x8</samp>&rsquo;</dt>
+<dd><p>4x4 B-frame partition.
+</p></dd>
+<dt> &lsquo;<samp>i8x8</samp>&rsquo;</dt>
+<dd><p>8x8 I-frame partition.
+</p></dd>
+<dt> &lsquo;<samp>i4x4</samp>&rsquo;</dt>
+<dd><p>4x4 I-frame partition.
+(Enabling &lsquo;<samp>p4x4</samp>&rsquo; requires &lsquo;<samp>p8x8</samp>&rsquo; to be enabled. Enabling
+&lsquo;<samp>i8x8</samp>&rsquo; requires adaptive spatial transform (&lsquo;<samp>8x8dct</samp>&rsquo;
+option) to be enabled.)
+</p></dd>
+<dt> &lsquo;<samp>none (<em>none</em>)</samp>&rsquo;</dt>
+<dd><p>Do not consider any partitions.
+</p></dd>
+<dt> &lsquo;<samp>all (<em>all</em>)</samp>&rsquo;</dt>
+<dd><p>Consider every partition.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>direct-pred (<em>direct</em>)</samp>&rsquo;</dt>
+<dd><p>Set direct MV prediction mode. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>none (<em>none</em>)</samp>&rsquo;</dt>
+<dd><p>Disable MV prediction.
+</p></dd>
+<dt> &lsquo;<samp>spatial (<em>spatial</em>)</samp>&rsquo;</dt>
+<dd><p>Enable spatial predicting.
+</p></dd>
+<dt> &lsquo;<samp>temporal (<em>temporal</em>)</samp>&rsquo;</dt>
+<dd><p>Enable temporal predicting.
+</p></dd>
+<dt> &lsquo;<samp>auto (<em>auto</em>)</samp>&rsquo;</dt>
+<dd><p>Automatically decided.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>slice-max-size (<em>slice-max-size</em>)</samp>&rsquo;</dt>
+<dd><p>Set the limit of the size of each slice in bytes. If not specified
+but RTP payload size (&lsquo;<samp>ps</samp>&rsquo;) is specified, that is used.
+</p>
+</dd>
+<dt> &lsquo;<samp>stats (<em>stats</em>)</samp>&rsquo;</dt>
+<dd><p>Set the file name for multi-pass stats.
+</p>
+</dd>
+<dt> &lsquo;<samp>nal-hrd (<em>nal-hrd</em>)</samp>&rsquo;</dt>
+<dd><p>Set signal HRD information (requires &lsquo;<samp>vbv-bufsize</samp>&rsquo; to be set).
+Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>none (<em>none</em>)</samp>&rsquo;</dt>
+<dd><p>Disable HRD information signaling.
+</p></dd>
+<dt> &lsquo;<samp>vbr (<em>vbr</em>)</samp>&rsquo;</dt>
+<dd><p>Variable bit rate.
+</p></dd>
+<dt> &lsquo;<samp>cbr (<em>cbr</em>)</samp>&rsquo;</dt>
+<dd><p>Constant bit rate (not allowed in MP4 container).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>x264opts (N.A.)</samp>&rsquo;</dt>
+<dd><p>Set any x264 option, see <code>x264 --fullhelp</code> for a list.
+</p>
+<p>Argument is a list of <var>key</var>=<var>value</var> couples separated by
+&quot;:&quot;. In <var>filter</var> and <var>psy-rd</var> options that use &quot;:&quot; as a separator
+themselves, use &quot;,&quot; instead. They accept it as well since long ago but this
+is kept undocumented for some reason.
+</p>
+<p>For example to specify libx264 encoding options with <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i foo.mpg -vcodec libx264 -x264opts keyint=123:min-keyint=20 -an out.mkv
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>x264-params (N.A.)</samp>&rsquo;</dt>
+<dd><p>Override the x264 configuration using a :-separated list of key=value
+parameters.
+</p>
+<p>This option is functionally the same as the &lsquo;<samp>x264opts</samp>&rsquo;, but is
+duplicated for compability with the Libav fork.
+</p>
+<p>For example to specify libx264 encoding options with <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -c:v libx264 -x264-params level=30:bframes=0:weightp=0:\
+cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:\
+no-fast-pskip=1:subq=6:8x8dct=0:trellis=0 OUTPUT
+</pre></td></tr></table>
+</dd>
+</dl>
+
+<p>Encoding ffpresets for common usages are provided so they can be used with the
+general presets system (e.g. passing the &lsquo;<samp>pre</samp>&rsquo; option).
+</p>
+<a name="libxvid"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-libxvid">9.4 libxvid</a></h2>
+
+<p>Xvid MPEG-4 Part 2 encoder wrapper.
+</p>
+<p>This encoder requires the presence of the libxvidcore headers and library
+during configuration. You need to explicitly configure the build with
+<code>--enable-libxvid --enable-gpl</code>.
+</p>
+<p>The native <code>mpeg4</code> encoder supports the MPEG-4 Part 2 format, so
+users can encode to this format without this library.
+</p>
+<a name="Options-2"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-2">9.4.1 Options</a></h3>
+
+<p>The following options are supported by the libxvid wrapper. Some of
+the following options are listed but are not documented, and
+correspond to shared codec options. See <a href="#codec_002doptions">the Codec Options chapter</a> for their documentation. The other shared options
+which are not listed have no effect for the libxvid encoder.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>g</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qmin</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qmax</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mpeg_quant</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>threads</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bf</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>b_qfactor</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>b_qoffset</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>flags</samp>&rsquo;</dt>
+<dd><p>Set specific encoding flags. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>mv4</samp>&rsquo;</dt>
+<dd><p>Use four motion vector by macroblock.
+</p>
+</dd>
+<dt> &lsquo;<samp>aic</samp>&rsquo;</dt>
+<dd><p>Enable high quality AC prediction.
+</p>
+</dd>
+<dt> &lsquo;<samp>gray</samp>&rsquo;</dt>
+<dd><p>Only encode grayscale.
+</p>
+</dd>
+<dt> &lsquo;<samp>gmc</samp>&rsquo;</dt>
+<dd><p>Enable the use of global motion compensation (GMC).
+</p>
+</dd>
+<dt> &lsquo;<samp>qpel</samp>&rsquo;</dt>
+<dd><p>Enable quarter-pixel motion compensation.
+</p>
+</dd>
+<dt> &lsquo;<samp>cgop</samp>&rsquo;</dt>
+<dd><p>Enable closed GOP.
+</p>
+</dd>
+<dt> &lsquo;<samp>global_header</samp>&rsquo;</dt>
+<dd><p>Place global headers in extradata instead of every keyframe.
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>trellis</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>me_method</samp>&rsquo;</dt>
+<dd><p>Set motion estimation method. Possible values in decreasing order of
+speed and increasing order of quality:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>Use no motion estimation (default).
+</p>
+</dd>
+<dt> &lsquo;<samp>phods</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>x1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>log</samp>&rsquo;</dt>
+<dd><p>Enable advanced diamond zonal search for 16x16 blocks and half-pixel
+refinement for 16x16 blocks. &lsquo;<samp>x1</samp>&rsquo; and &lsquo;<samp>log</samp>&rsquo; are aliases for
+&lsquo;<samp>phods</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>epzs</samp>&rsquo;</dt>
+<dd><p>Enable all of the things described above, plus advanced diamond zonal
+search for 8x8 blocks, half-pixel refinement for 8x8 blocks, and motion
+estimation on chroma planes.
+</p>
+</dd>
+<dt> &lsquo;<samp>full</samp>&rsquo;</dt>
+<dd><p>Enable all of the things described above, plus extended 16x16 and 8x8
+blocks search.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>mbd</samp>&rsquo;</dt>
+<dd><p>Set macroblock decision algorithm. Possible values in the increasing
+order of quality:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>simple</samp>&rsquo;</dt>
+<dd><p>Use macroblock comparing function algorithm (default).
+</p>
+</dd>
+<dt> &lsquo;<samp>bits</samp>&rsquo;</dt>
+<dd><p>Enable rate distortion-based half pixel and quarter pixel refinement for
+16x16 blocks.
+</p>
+</dd>
+<dt> &lsquo;<samp>rd</samp>&rsquo;</dt>
+<dd><p>Enable all of the things described above, plus rate distortion-based
+half pixel and quarter pixel refinement for 8x8 blocks, and rate
+distortion-based search using square pattern.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>lumi_aq</samp>&rsquo;</dt>
+<dd><p>Enable lumi masking adaptive quantization when set to 1. Default is 0
+(disabled).
+</p>
+</dd>
+<dt> &lsquo;<samp>variance_aq</samp>&rsquo;</dt>
+<dd><p>Enable variance adaptive quantization when set to 1. Default is 0
+(disabled).
+</p>
+<p>When combined with &lsquo;<samp>lumi_aq</samp>&rsquo;, the resulting quality will not
+be better than any of the two specified individually. In other
+words, the resulting quality will be the worse one of the two
+effects.
+</p>
+</dd>
+<dt> &lsquo;<samp>ssim</samp>&rsquo;</dt>
+<dd><p>Set structural similarity (SSIM) displaying method. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
+<dd><p>Disable displaying of SSIM information.
+</p>
+</dd>
+<dt> &lsquo;<samp>avg</samp>&rsquo;</dt>
+<dd><p>Output average SSIM at the end of encoding to stdout. The format of
+showing the average SSIM is:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">Average SSIM: %f
+</pre></td></tr></table>
+
+<p>For users who are not familiar with C, %f means a float number, or
+a decimal (e.g. 0.939232).
+</p>
+</dd>
+<dt> &lsquo;<samp>frame</samp>&rsquo;</dt>
+<dd><p>Output both per-frame SSIM data during encoding and average SSIM at
+the end of encoding to stdout. The format of per-frame information
+is:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">       SSIM: avg: %1.3f min: %1.3f max: %1.3f
+</pre></td></tr></table>
+
+<p>For users who are not familiar with C, %1.3f means a float number
+rounded to 3 digits after the dot (e.g. 0.932).
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>ssim_acc</samp>&rsquo;</dt>
+<dd><p>Set SSIM accuracy. Valid options are integers within the range of
+0-4, while 0 gives the most accurate result and 4 computes the
+fastest.
+</p>
+</dd>
+</dl>
+
+<a name="png"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-png">9.5 png</a></h2>
+
+<p>PNG image encoder.
+</p>
+<a name="Private-options"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Private-options">9.5.1 Private options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>dpi <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Set physical density of pixels, in dots per inch, unset by default
+</p></dd>
+<dt> &lsquo;<samp>dpm <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Set physical density of pixels, in dots per meter, unset by default
+</p></dd>
+</dl>
+
+<a name="ProRes"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-ProRes">9.6 ProRes</a></h2>
+
+<p>Apple ProRes encoder.
+</p>
+<p>FFmpeg contains 2 ProRes encoders, the prores-aw and prores-ks encoder.
+The used encoder can be choosen with the <code>-vcodec</code> option.
+</p>
+<a name="Private-Options-for-prores_002dks"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Private-Options-for-prores_002dks">9.6.1 Private Options for prores-ks</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>profile <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Select the ProRes profile to encode
+</p><dl compact="compact">
+<dt> &lsquo;<samp>proxy</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>lt</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>standard</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>hq</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>4444</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>quant_mat <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Select quantization matrix.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>default</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>proxy</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>lt</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>standard</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>hq</samp>&rsquo;</dt>
+</dl>
+<p>If set to <var>auto</var>, the matrix matching the profile will be picked.
+If not set, the matrix providing the highest quality, <var>default</var>, will be
+picked.
+</p>
+</dd>
+<dt> &lsquo;<samp>bits_per_mb <var>integer</var></samp>&rsquo;</dt>
+<dd><p>How many bits to allot for coding one macroblock. Different profiles use
+between 200 and 2400 bits per macroblock, the maximum is 8000.
+</p>
+</dd>
+<dt> &lsquo;<samp>mbs_per_slice <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Number of macroblocks in each slice (1-8); the default value (8)
+should be good in almost all situations.
+</p>
+</dd>
+<dt> &lsquo;<samp>vendor <var>string</var></samp>&rsquo;</dt>
+<dd><p>Override the 4-byte vendor ID.
+A custom vendor ID like <var>apl0</var> would claim the stream was produced by
+the Apple encoder.
+</p>
+</dd>
+<dt> &lsquo;<samp>alpha_bits <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Specify number of bits for alpha component.
+Possible values are <var>0</var>, <var>8</var> and <var>16</var>.
+Use <var>0</var> to disable alpha plane coding.
+</p>
+</dd>
+</dl>
+
+<a name="Speed-considerations"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Speed-considerations">9.6.2 Speed considerations</a></h3>
+
+<p>In the default mode of operation the encoder has to honor frame constraints
+(i.e. not produc frames with size bigger than requested) while still making
+output picture as good as possible.
+A frame containing a lot of small details is harder to compress and the encoder
+would spend more time searching for appropriate quantizers for each slice.
+</p>
+<p>Setting a higher &lsquo;<samp>bits_per_mb</samp>&rsquo; limit will improve the speed.
+</p>
+<p>For the fastest encoding speed set the &lsquo;<samp>qscale</samp>&rsquo; parameter (4 is the
+recommended value) and do not set a size constraint.
+</p>
+
+<a name="See-Also"></a>
+<h1 class="chapter"><a href="ffmpeg-codecs.html#toc-See-Also">10. See Also</a></h1>
+
+<p><a href="ffmpeg.html">ffmpeg</a>, <a href="ffplay.html">ffplay</a>, <a href="ffprobe.html">ffprobe</a>, <a href="ffserver.html">ffserver</a>,
+<a href="libavcodec.html">libavcodec</a>
+</p>
+
+<a name="Authors"></a>
+<h1 class="chapter"><a href="ffmpeg-codecs.html#toc-Authors">11. Authors</a></h1>
+
+<p>The FFmpeg developers.
+</p>
+<p>For details about the authorship, see the Git history of the project
+(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
+<code>git log</code> in the FFmpeg source directory, or browsing the
+online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
+</p>
+<p>Maintainers for the specific components are listed in the file
+&lsquo;<tt>MAINTAINERS</tt>&rsquo; in the source code tree.
+</p>
+
+<footer class="footer pagination-right">
+<span class="label label-info">This document was generated by <em>Kyle Schwarz</em> on <em>December 14, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies/ffmpeg/doc/ffmpeg-devices.html b/dependencies/ffmpeg/doc/ffmpeg-devices.html
new file mode 100644 (file)
index 0000000..af14b70
--- /dev/null
@@ -0,0 +1,1332 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on December 14, 2013 by texi2html 1.82 -->
+<!--
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>FFmpeg documentation : FFmpeg Devices </title>
+
+<meta name="description" content="FFmpeg Devices Documentation: ">
+<meta name="keywords" content="FFmpeg documentation : FFmpeg Devices ">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="default.css" />
+
+<link rel="icon" href="favicon.png" type="image/png" />
+</head>
+<body>
+<div id="container">
+<div id="body">
+
+<a name="SEC_Top"></a>
+<h1 class="settitle">FFmpeg Devices Documentation</h1>
+
+<a name="SEC_Contents"></a>
+<h1>Table of Contents</h1>
+<div class="contents">
+
+<ul class="toc">
+  <li><a name="toc-Description" href="#Description">1. Description</a></li>
+  <li><a name="toc-Device-Options" href="#Device-Options">2. Device Options</a></li>
+  <li><a name="toc-Input-Devices" href="#Input-Devices">3. Input Devices</a>
+  <ul class="toc">
+    <li><a name="toc-alsa" href="#alsa">3.1 alsa</a></li>
+    <li><a name="toc-bktr" href="#bktr">3.2 bktr</a></li>
+    <li><a name="toc-dshow" href="#dshow">3.3 dshow</a>
+    <ul class="toc">
+      <li><a name="toc-Options-4" href="#Options-4">3.3.1 Options</a></li>
+      <li><a name="toc-Examples-6" href="#Examples-6">3.3.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-dv1394" href="#dv1394">3.4 dv1394</a></li>
+    <li><a name="toc-fbdev" href="#fbdev">3.5 fbdev</a></li>
+    <li><a name="toc-iec61883" href="#iec61883">3.6 iec61883</a>
+    <ul class="toc">
+      <li><a name="toc-Options" href="#Options">3.6.1 Options</a></li>
+      <li><a name="toc-Examples" href="#Examples">3.6.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-jack" href="#jack">3.7 jack</a></li>
+    <li><a name="toc-lavfi" href="#lavfi">3.8 lavfi</a>
+    <ul class="toc">
+      <li><a name="toc-Options-9" href="#Options-9">3.8.1 Options</a></li>
+      <li><a name="toc-Examples-10" href="#Examples-10">3.8.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-libdc1394" href="#libdc1394">3.9 libdc1394</a></li>
+    <li><a name="toc-openal" href="#openal">3.10 openal</a>
+    <ul class="toc">
+      <li><a name="toc-Options-3" href="#Options-3">3.10.1 Options</a></li>
+      <li><a name="toc-Examples-7" href="#Examples-7">3.10.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-oss" href="#oss">3.11 oss</a></li>
+    <li><a name="toc-pulse-1" href="#pulse-1">3.12 pulse</a>
+    <ul class="toc">
+      <li><a name="toc-Options-8" href="#Options-8">3.12.1 Options</a></li>
+      <li><a name="toc-Examples-8" href="#Examples-8">3.12.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sndio" href="#sndio">3.13 sndio</a></li>
+    <li><a name="toc-video4linux2_002c-v4l2" href="#video4linux2_002c-v4l2">3.14 video4linux2, v4l2</a>
+    <ul class="toc">
+      <li><a name="toc-Options-2" href="#Options-2">3.14.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-vfwcap" href="#vfwcap">3.15 vfwcap</a></li>
+    <li><a name="toc-x11grab" href="#x11grab">3.16 x11grab</a>
+    <ul class="toc">
+      <li><a name="toc-Options-11" href="#Options-11">3.16.1 Options</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Output-Devices" href="#Output-Devices">4. Output Devices</a>
+  <ul class="toc">
+    <li><a name="toc-alsa-1" href="#alsa-1">4.1 alsa</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-9" href="#Examples-9">4.1.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-caca" href="#caca">4.2 caca</a>
+    <ul class="toc">
+      <li><a name="toc-Options-7" href="#Options-7">4.2.1 Options</a></li>
+      <li><a name="toc-Examples-3" href="#Examples-3">4.2.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-fbdev-1" href="#fbdev-1">4.3 fbdev</a>
+    <ul class="toc">
+      <li><a name="toc-Options-10" href="#Options-10">4.3.1 Options</a></li>
+      <li><a name="toc-Examples-5" href="#Examples-5">4.3.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-oss-1" href="#oss-1">4.4 oss</a></li>
+    <li><a name="toc-pulse" href="#pulse">4.5 pulse</a>
+    <ul class="toc">
+      <li><a name="toc-Options-5" href="#Options-5">4.5.1 Options</a></li>
+      <li><a name="toc-Examples-4" href="#Examples-4">4.5.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sdl" href="#sdl">4.6 sdl</a>
+    <ul class="toc">
+      <li><a name="toc-Options-1" href="#Options-1">4.6.1 Options</a></li>
+      <li><a name="toc-Interactive-commands" href="#Interactive-commands">4.6.2 Interactive commands</a></li>
+      <li><a name="toc-Examples-2" href="#Examples-2">4.6.3 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sndio-1" href="#sndio-1">4.7 sndio</a></li>
+    <li><a name="toc-xv" href="#xv">4.8 xv</a>
+    <ul class="toc">
+      <li><a name="toc-Options-6" href="#Options-6">4.8.1 Options</a></li>
+      <li><a name="toc-Examples-1" href="#Examples-1">4.8.2 Examples</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-See-Also" href="#See-Also">5. See Also</a></li>
+  <li><a name="toc-Authors" href="#Authors">6. Authors</a></li>
+</ul>
+</div>
+
+<a name="Description"></a>
+<h1 class="chapter"><a href="ffmpeg-devices.html#toc-Description">1. Description</a></h1>
+
+<p>This document describes the input and output devices provided by the
+libavdevice library.
+</p>
+
+<a name="Device-Options"></a>
+<h1 class="chapter"><a href="ffmpeg-devices.html#toc-Device-Options">2. Device Options</a></h1>
+
+<p>The libavdevice library provides the same interface as
+libavformat. Namely, an input device is considered like a demuxer, and
+an output device like a muxer, and the interface and generic device
+options are the same provided by libavformat (see the ffmpeg-formats
+manual).
+</p>
+<p>In addition each input or output device may support so-called private
+options, which are specific for that component.
+</p>
+<p>Options may be set by specifying -<var>option</var> <var>value</var> in the
+FFmpeg tools, or by setting the value explicitly in the device
+<code>AVFormatContext</code> options or using the &lsquo;<tt>libavutil/opt.h</tt>&rsquo; API
+for programmatic use.
+</p>
+
+<a name="Input-Devices"></a>
+<h1 class="chapter"><a href="ffmpeg-devices.html#toc-Input-Devices">3. Input Devices</a></h1>
+
+<p>Input devices are configured elements in FFmpeg which allow to access
+the data coming from a multimedia device attached to your system.
+</p>
+<p>When you configure your FFmpeg build, all the supported input devices
+are enabled by default. You can list all available ones using the
+configure option &quot;&ndash;list-indevs&quot;.
+</p>
+<p>You can disable all the input devices using the configure option
+&quot;&ndash;disable-indevs&quot;, and selectively enable an input device using the
+option &quot;&ndash;enable-indev=<var>INDEV</var>&quot;, or you can disable a particular
+input device using the option &quot;&ndash;disable-indev=<var>INDEV</var>&quot;.
+</p>
+<p>The option &quot;-formats&quot; of the ff* tools will display the list of
+supported input devices (amongst the demuxers).
+</p>
+<p>A description of the currently available input devices follows.
+</p>
+<a name="alsa"></a>
+<h2 class="section"><a href="ffmpeg-devices.html#toc-alsa">3.1 alsa</a></h2>
+
+<p>ALSA (Advanced Linux Sound Architecture) input device.
+</p>
+<p>To enable this input device during configuration you need libasound
+installed on your system.
+</p>
+<p>This device allows capturing from an ALSA device. The name of the
+device to capture has to be an ALSA card identifier.
+</p>
+<p>An ALSA identifier has the syntax:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">hw:<var>CARD</var>[,<var>DEV</var>[,<var>SUBDEV</var>]]
+</pre></td></tr></table>
+
+<p>where the <var>DEV</var> and <var>SUBDEV</var> components are optional.
+</p>
+<p>The three arguments (in order: <var>CARD</var>,<var>DEV</var>,<var>SUBDEV</var>)
+specify card number or identifier, device number and subdevice number
+(-1 means any).
+</p>
+<p>To see the list of cards currently recognized by your system check the
+files &lsquo;<tt>/proc/asound/cards</tt>&rsquo; and &lsquo;<tt>/proc/asound/devices</tt>&rsquo;.
+</p>
+<p>For example to capture with <code>ffmpeg</code> from an ALSA device with
+card id 0, you may run the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f alsa -i hw:0 alsaout.wav
+</pre></td></tr></table>
+
+<p>For more information see:
+<a href="http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html">http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html</a>
+</p>
+<a name="bktr"></a>
+<h2 class="section"><a href="ffmpeg-devices.html#toc-bktr">3.2 bktr</a></h2>
+
+<p>BSD video input device.
+</p>
+<a name="dshow"></a>
+<h2 class="section"><a href="ffmpeg-devices.html#toc-dshow">3.3 dshow</a></h2>
+
+<p>Windows DirectShow input device.
+</p>
+<p>DirectShow support is enabled when FFmpeg is built with the mingw-w64 project.
+Currently only audio and video devices are supported.
+</p>
+<p>Multiple devices may be opened as separate inputs, but they may also be
+opened on the same input, which should improve synchronism between them.
+</p>
+<p>The input name should be in the format:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example"><var>TYPE</var>=<var>NAME</var>[:<var>TYPE</var>=<var>NAME</var>]
+</pre></td></tr></table>
+
+<p>where <var>TYPE</var> can be either <var>audio</var> or <var>video</var>,
+and <var>NAME</var> is the device&rsquo;s name.
+</p>
+<a name="Options-4"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Options-4">3.3.1 Options</a></h3>
+
+<p>If no options are specified, the device&rsquo;s defaults are used.
+If the device does not support the requested options, it will
+fail to open.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>video_size</samp>&rsquo;</dt>
+<dd><p>Set the video size in the captured video.
+</p>
+</dd>
+<dt> &lsquo;<samp>framerate</samp>&rsquo;</dt>
+<dd><p>Set the frame rate in the captured video.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate</samp>&rsquo;</dt>
+<dd><p>Set the sample rate (in Hz) of the captured audio.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_size</samp>&rsquo;</dt>
+<dd><p>Set the sample size (in bits) of the captured audio.
+</p>
+</dd>
+<dt> &lsquo;<samp>channels</samp>&rsquo;</dt>
+<dd><p>Set the number of channels in the captured audio.
+</p>
+</dd>
+<dt> &lsquo;<samp>list_devices</samp>&rsquo;</dt>
+<dd><p>If set to &lsquo;<samp>true</samp>&rsquo;, print a list of devices and exit.
+</p>
+</dd>
+<dt> &lsquo;<samp>list_options</samp>&rsquo;</dt>
+<dd><p>If set to &lsquo;<samp>true</samp>&rsquo;, print a list of selected device&rsquo;s options
+and exit.
+</p>
+</dd>
+<dt> &lsquo;<samp>video_device_number</samp>&rsquo;</dt>
+<dd><p>Set video device number for devices with same name (starts at 0,
+defaults to 0).
+</p>
+</dd>
+<dt> &lsquo;<samp>audio_device_number</samp>&rsquo;</dt>
+<dd><p>Set audio device number for devices with same name (starts at 0,
+defaults to 0).
+</p>
+</dd>
+<dt> &lsquo;<samp>pixel_format</samp>&rsquo;</dt>
+<dd><p>Select pixel format to be used by DirectShow. This may only be set when
+the video codec is not set or set to rawvideo.
+</p>
+</dd>
+<dt> &lsquo;<samp>audio_buffer_size</samp>&rsquo;</dt>
+<dd><p>Set audio device buffer size in milliseconds (which can directly
+impact latency, depending on the device).
+Defaults to using the audio device&rsquo;s
+default buffer size (typically some multiple of 500ms).
+Setting this value too low can degrade performance.
+See also
+<a href="http://msdn.microsoft.com/en-us/library/windows/desktop/dd377582(v=vs.85).aspx">http://msdn.microsoft.com/en-us/library/windows/desktop/dd377582(v=vs.85).aspx</a>
+</p>
+</dd>
+</dl>
+
+<a name="Examples-6"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Examples-6">3.3.2 Examples</a></h3>
+
+<ul>
+<li>
+Print the list of DirectShow supported devices and exit:
+<table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -list_devices true -f dshow -i dummy
+</pre></td></tr></table>
+
+</li><li>
+Open video device <var>Camera</var>:
+<table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f dshow -i video=&quot;Camera&quot;
+</pre></td></tr></table>
+
+</li><li>
+Open second video device with name <var>Camera</var>:
+<table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f dshow -video_device_number 1 -i video=&quot;Camera&quot;
+</pre></td></tr></table>
+
+</li><li>
+Open video device <var>Camera</var> and audio device <var>Microphone</var>:
+<table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f dshow -i video=&quot;Camera&quot;:audio=&quot;Microphone&quot;
+</pre></td></tr></table>
+
+</li><li>
+Print the list of supported options in selected device and exit:
+<table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -list_options true -f dshow -i video=&quot;Camera&quot;
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="dv1394"></a>
+<h2 class="section"><a href="ffmpeg-devices.html#toc-dv1394">3.4 dv1394</a></h2>
+
+<p>Linux DV 1394 input device.
+</p>
+<a name="fbdev"></a>
+<h2 class="section"><a href="ffmpeg-devices.html#toc-fbdev">3.5 fbdev</a></h2>
+
+<p>Linux framebuffer input device.
+</p>
+<p>The Linux framebuffer is a graphic hardware-independent abstraction
+layer to show graphics on a computer monitor, typically on the
+console. It is accessed through a file device node, usually
+&lsquo;<tt>/dev/fb0</tt>&rsquo;.
+</p>
+<p>For more detailed information read the file
+Documentation/fb/framebuffer.txt included in the Linux source tree.
+</p>
+<p>To record from the framebuffer device &lsquo;<tt>/dev/fb0</tt>&rsquo; with
+<code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f fbdev -r 10 -i /dev/fb0 out.avi
+</pre></td></tr></table>
+
+<p>You can take a single screenshot image with the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f fbdev -frames:v 1 -r 1 -i /dev/fb0 screenshot.jpeg
+</pre></td></tr></table>
+
+<p>See also <a href="http://linux-fbdev.sourceforge.net/">http://linux-fbdev.sourceforge.net/</a>, and fbset(1).
+</p>
+<a name="iec61883"></a>
+<h2 class="section"><a href="ffmpeg-devices.html#toc-iec61883">3.6 iec61883</a></h2>
+
+<p>FireWire DV/HDV input device using libiec61883.
+</p>
+<p>To enable this input device, you need libiec61883, libraw1394 and
+libavc1394 installed on your system. Use the configure option
+<code>--enable-libiec61883</code> to compile with the device enabled.
+</p>
+<p>The iec61883 capture device supports capturing from a video device
+connected via IEEE1394 (FireWire), using libiec61883 and the new Linux
+FireWire stack (juju). This is the default DV/HDV input method in Linux
+Kernel 2.6.37 and later, since the old FireWire stack was removed.
+</p>
+<p>Specify the FireWire port to be used as input file, or &quot;auto&quot;
+to choose the first port connected.
+</p>
+<a name="Options"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Options">3.6.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>dvtype</samp>&rsquo;</dt>
+<dd><p>Override autodetection of DV/HDV. This should only be used if auto
+detection does not work, or if usage of a different device type
+should be prohibited. Treating a DV device as HDV (or vice versa) will
+not work and result in undefined behavior.
+The values &lsquo;<samp>auto</samp>&rsquo;, &lsquo;<samp>dv</samp>&rsquo; and &lsquo;<samp>hdv</samp>&rsquo; are supported.
+</p>
+</dd>
+<dt> &lsquo;<samp>dvbuffer</samp>&rsquo;</dt>
+<dd><p>Set maxiumum size of buffer for incoming data, in frames. For DV, this
+is an exact value. For HDV, it is not frame exact, since HDV does
+not have a fixed frame size.
+</p>
+</dd>
+<dt> &lsquo;<samp>dvguid</samp>&rsquo;</dt>
+<dd><p>Select the capture device by specifying it&rsquo;s GUID. Capturing will only
+be performed from the specified device and fails if no device with the
+given GUID is found. This is useful to select the input if multiple
+devices are connected at the same time.
+Look at /sys/bus/firewire/devices to find out the GUIDs.
+</p>
+</dd>
+</dl>
+
+<a name="Examples"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Examples">3.6.2 Examples</a></h3>
+
+<ul>
+<li>
+Grab and show the input of a FireWire DV/HDV device.
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f iec61883 -i auto
+</pre></td></tr></table>
+
+</li><li>
+Grab and record the input of a FireWire DV/HDV device,
+using a packet buffer of 100000 packets if the source is HDV.
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f iec61883 -i auto -hdvbuffer 100000 out.mpg
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="jack"></a>
+<h2 class="section"><a href="ffmpeg-devices.html#toc-jack">3.7 jack</a></h2>
+
+<p>JACK input device.
+</p>
+<p>To enable this input device during configuration you need libjack
+installed on your system.
+</p>
+<p>A JACK input device creates one or more JACK writable clients, one for
+each audio channel, with name <var>client_name</var>:input_<var>N</var>, where
+<var>client_name</var> is the name provided by the application, and <var>N</var>
+is a number which identifies the channel.
+Each writable client will send the acquired data to the FFmpeg input
+device.
+</p>
+<p>Once you have created one or more JACK readable clients, you need to
+connect them to one or more JACK writable clients.
+</p>
+<p>To connect or disconnect JACK clients you can use the <code>jack_connect</code>
+and <code>jack_disconnect</code> programs, or do it through a graphical interface,
+for example with <code>qjackctl</code>.
+</p>
+<p>To list the JACK clients and their properties you can invoke the command
+<code>jack_lsp</code>.
+</p>
+<p>Follows an example which shows how to capture a JACK readable client
+with <code>ffmpeg</code>.
+</p><table><tr><td>&nbsp;</td><td><pre class="example"># Create a JACK writable client with name &quot;ffmpeg&quot;.
+$ ffmpeg -f jack -i ffmpeg -y out.wav
+
+# Start the sample jack_metro readable client.
+$ jack_metro -b 120 -d 0.2 -f 4000
+
+# List the current JACK clients.
+$ jack_lsp -c
+system:capture_1
+system:capture_2
+system:playback_1
+system:playback_2
+ffmpeg:input_1
+metro:120_bpm
+
+# Connect metro to the ffmpeg writable client.
+$ jack_connect metro:120_bpm ffmpeg:input_1
+</pre></td></tr></table>
+
+<p>For more information read:
+<a href="http://jackaudio.org/">http://jackaudio.org/</a>
+</p>
+<a name="lavfi"></a>
+<h2 class="section"><a href="ffmpeg-devices.html#toc-lavfi">3.8 lavfi</a></h2>
+
+<p>Libavfilter input virtual device.
+</p>
+<p>This input device reads data from the open output pads of a libavfilter
+filtergraph.
+</p>
+<p>For each filtergraph open output, the input device will create a
+corresponding stream which is mapped to the generated output. Currently
+only video data is supported. The filtergraph is specified through the
+option &lsquo;<samp>graph</samp>&rsquo;.
+</p>
+<a name="Options-9"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Options-9">3.8.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>graph</samp>&rsquo;</dt>
+<dd><p>Specify the filtergraph to use as input. Each video open output must be
+labelled by a unique string of the form &quot;out<var>N</var>&quot;, where <var>N</var> is a
+number starting from 0 corresponding to the mapped input stream
+generated by the device.
+The first unlabelled output is automatically assigned to the &quot;out0&quot;
+label, but all the others need to be specified explicitly.
+</p>
+<p>If not specified defaults to the filename specified for the input
+device.
+</p>
+</dd>
+<dt> &lsquo;<samp>graph_file</samp>&rsquo;</dt>
+<dd><p>Set the filename of the filtergraph to be read and sent to the other
+filters. Syntax of the filtergraph is the same as the one specified by
+the option <var>graph</var>.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-10"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Examples-10">3.8.2 Examples</a></h3>
+
+<ul>
+<li>
+Create a color video stream and play it back with <code>ffplay</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi -graph &quot;color=c=pink [out0]&quot; dummy
+</pre></td></tr></table>
+
+</li><li>
+As the previous example, but use filename for specifying the graph
+description, and omit the &quot;out0&quot; label:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi color=c=pink
+</pre></td></tr></table>
+
+</li><li>
+Create three different video test filtered sources and play them:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi -graph &quot;testsrc [out0]; testsrc,hflip [out1]; testsrc,negate [out2]&quot; test3
+</pre></td></tr></table>
+
+</li><li>
+Read an audio stream from a file using the amovie source and play it
+back with <code>ffplay</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi &quot;amovie=test.wav&quot;
+</pre></td></tr></table>
+
+</li><li>
+Read an audio stream and a video stream and play it back with
+<code>ffplay</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi &quot;movie=test.avi[out0];amovie=test.wav[out1]&quot;
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="libdc1394"></a>
+<h2 class="section"><a href="ffmpeg-devices.html#toc-libdc1394">3.9 libdc1394</a></h2>
+
+<p>IIDC1394 input device, based on libdc1394 and libraw1394.
+</p>
+<a name="openal"></a>
+<h2 class="section"><a href="ffmpeg-devices.html#toc-openal">3.10 openal</a></h2>
+
+<p>The OpenAL input device provides audio capture on all systems with a
+working OpenAL 1.1 implementation.
+</p>
+<p>To enable this input device during configuration, you need OpenAL
+headers and libraries installed on your system, and need to configure
+FFmpeg with <code>--enable-openal</code>.
+</p>
+<p>OpenAL headers and libraries should be provided as part of your OpenAL
+implementation, or as an additional download (an SDK). Depending on your
+installation you may need to specify additional flags via the
+<code>--extra-cflags</code> and <code>--extra-ldflags</code> for allowing the build
+system to locate the OpenAL headers and libraries.
+</p>
+<p>An incomplete list of OpenAL implementations follows:
+</p>
+<dl compact="compact">
+<dt> <strong>Creative</strong></dt>
+<dd><p>The official Windows implementation, providing hardware acceleration
+with supported devices and software fallback.
+See <a href="http://openal.org/">http://openal.org/</a>.
+</p></dd>
+<dt> <strong>OpenAL Soft</strong></dt>
+<dd><p>Portable, open source (LGPL) software implementation. Includes
+backends for the most common sound APIs on the Windows, Linux,
+Solaris, and BSD operating systems.
+See <a href="http://kcat.strangesoft.net/openal.html">http://kcat.strangesoft.net/openal.html</a>.
+</p></dd>
+<dt> <strong>Apple</strong></dt>
+<dd><p>OpenAL is part of Core Audio, the official Mac OS X Audio interface.
+See <a href="http://developer.apple.com/technologies/mac/audio-and-video.html">http://developer.apple.com/technologies/mac/audio-and-video.html</a>
+</p></dd>
+</dl>
+
+<p>This device allows to capture from an audio input device handled
+through OpenAL.
+</p>
+<p>You need to specify the name of the device to capture in the provided
+filename. If the empty string is provided, the device will
+automatically select the default device. You can get the list of the
+supported devices by using the option <var>list_devices</var>.
+</p>
+<a name="Options-3"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Options-3">3.10.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>channels</samp>&rsquo;</dt>
+<dd><p>Set the number of channels in the captured audio. Only the values
+&lsquo;<samp>1</samp>&rsquo; (monaural) and &lsquo;<samp>2</samp>&rsquo; (stereo) are currently supported.
+Defaults to &lsquo;<samp>2</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_size</samp>&rsquo;</dt>
+<dd><p>Set the sample size (in bits) of the captured audio. Only the values
+&lsquo;<samp>8</samp>&rsquo; and &lsquo;<samp>16</samp>&rsquo; are currently supported. Defaults to
+&lsquo;<samp>16</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate</samp>&rsquo;</dt>
+<dd><p>Set the sample rate (in Hz) of the captured audio.
+Defaults to &lsquo;<samp>44.1k</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>list_devices</samp>&rsquo;</dt>
+<dd><p>If set to &lsquo;<samp>true</samp>&rsquo;, print a list of devices and exit.
+Defaults to &lsquo;<samp>false</samp>&rsquo;.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-7"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Examples-7">3.10.2 Examples</a></h3>
+
+<p>Print the list of OpenAL supported devices and exit:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -list_devices true -f openal -i dummy out.ogg
+</pre></td></tr></table>
+
+<p>Capture from the OpenAL device &lsquo;<tt>DR-BT101 via PulseAudio</tt>&rsquo;:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out.ogg
+</pre></td></tr></table>
+
+<p>Capture from the default device (note the empty string &rdquo; as filename):
+</p><table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f openal -i '' out.ogg
+</pre></td></tr></table>
+
+<p>Capture from two devices simultaneously, writing to two different files,
+within the same <code>ffmpeg</code> command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out1.ogg -f openal -i 'ALSA Default' out2.ogg
+</pre></td></tr></table>
+<p>Note: not all OpenAL implementations support multiple simultaneous capture -
+try the latest OpenAL Soft if the above does not work.
+</p>
+<a name="oss"></a>
+<h2 class="section"><a href="ffmpeg-devices.html#toc-oss">3.11 oss</a></h2>
+
+<p>Open Sound System input device.
+</p>
+<p>The filename to provide to the input device is the device node
+representing the OSS input device, and is usually set to
+&lsquo;<tt>/dev/dsp</tt>&rsquo;.
+</p>
+<p>For example to grab from &lsquo;<tt>/dev/dsp</tt>&rsquo; using <code>ffmpeg</code> use the
+command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f oss -i /dev/dsp /tmp/oss.wav
+</pre></td></tr></table>
+
+<p>For more information about OSS see:
+<a href="http://manuals.opensound.com/usersguide/dsp.html">http://manuals.opensound.com/usersguide/dsp.html</a>
+</p>
+<a name="pulse-1"></a>
+<h2 class="section"><a href="ffmpeg-devices.html#toc-pulse-1">3.12 pulse</a></h2>
+
+<p>PulseAudio input device.
+</p>
+<p>To enable this output device you need to configure FFmpeg with <code>--enable-libpulse</code>.
+</p>
+<p>The filename to provide to the input device is a source device or the
+string &quot;default&quot;
+</p>
+<p>To list the PulseAudio source devices and their properties you can invoke
+the command <code>pactl list sources</code>.
+</p>
+<p>More information about PulseAudio can be found on <a href="http://www.pulseaudio.org">http://www.pulseaudio.org</a>.
+</p>
+<a name="Options-8"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Options-8">3.12.1 Options</a></h3>
+<dl compact="compact">
+<dt> &lsquo;<samp>server</samp>&rsquo;</dt>
+<dd><p>Connect to a specific PulseAudio server, specified by an IP address.
+Default server is used when not provided.
+</p>
+</dd>
+<dt> &lsquo;<samp>name</samp>&rsquo;</dt>
+<dd><p>Specify the application name PulseAudio will use when showing active clients,
+by default it is the <code>LIBAVFORMAT_IDENT</code> string.
+</p>
+</dd>
+<dt> &lsquo;<samp>stream_name</samp>&rsquo;</dt>
+<dd><p>Specify the stream name PulseAudio will use when showing active streams,
+by default it is &quot;record&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate</samp>&rsquo;</dt>
+<dd><p>Specify the samplerate in Hz, by default 48kHz is used.
+</p>
+</dd>
+<dt> &lsquo;<samp>channels</samp>&rsquo;</dt>
+<dd><p>Specify the channels in use, by default 2 (stereo) is set.
+</p>
+</dd>
+<dt> &lsquo;<samp>frame_size</samp>&rsquo;</dt>
+<dd><p>Specify the number of bytes per frame, by default it is set to 1024.
+</p>
+</dd>
+<dt> &lsquo;<samp>fragment_size</samp>&rsquo;</dt>
+<dd><p>Specify the minimal buffering fragment in PulseAudio, it will affect the
+audio latency. By default it is unset.
+</p></dd>
+</dl>
+
+<a name="Examples-8"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Examples-8">3.12.2 Examples</a></h3>
+<p>Record a stream from default device:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f pulse -i default /tmp/pulse.wav
+</pre></td></tr></table>
+
+<a name="sndio"></a>
+<h2 class="section"><a href="ffmpeg-devices.html#toc-sndio">3.13 sndio</a></h2>
+
+<p>sndio input device.
+</p>
+<p>To enable this input device during configuration you need libsndio
+installed on your system.
+</p>
+<p>The filename to provide to the input device is the device node
+representing the sndio input device, and is usually set to
+&lsquo;<tt>/dev/audio0</tt>&rsquo;.
+</p>
+<p>For example to grab from &lsquo;<tt>/dev/audio0</tt>&rsquo; using <code>ffmpeg</code> use the
+command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f sndio -i /dev/audio0 /tmp/oss.wav
+</pre></td></tr></table>
+
+<a name="video4linux2_002c-v4l2"></a>
+<h2 class="section"><a href="ffmpeg-devices.html#toc-video4linux2_002c-v4l2">3.14 video4linux2, v4l2</a></h2>
+
+<p>Video4Linux2 input video device.
+</p>
+<p>&quot;v4l2&quot; can be used as alias for &quot;video4linux2&quot;.
+</p>
+<p>If FFmpeg is built with v4l-utils support (by using the
+<code>--enable-libv4l2</code> configure option), it is possible to use it with the
+<code>-use_libv4l2</code> input device option.
+</p>
+<p>The name of the device to grab is a file device node, usually Linux
+systems tend to automatically create such nodes when the device
+(e.g. an USB webcam) is plugged into the system, and has a name of the
+kind &lsquo;<tt>/dev/video<var>N</var></tt>&rsquo;, where <var>N</var> is a number associated to
+the device.
+</p>
+<p>Video4Linux2 devices usually support a limited set of
+<var>width</var>x<var>height</var> sizes and frame rates. You can check which are
+supported using <code>-list_formats all</code> for Video4Linux2 devices.
+Some devices, like TV cards, support one or more standards. It is possible
+to list all the supported standards using <code>-list_standards all</code>.
+</p>
+<p>The time base for the timestamps is 1 microsecond. Depending on the kernel
+version and configuration, the timestamps may be derived from the real time
+clock (origin at the Unix Epoch) or the monotonic clock (origin usually at
+boot time, unaffected by NTP or manual changes to the clock). The
+&lsquo;<samp>-timestamps abs</samp>&rsquo; or &lsquo;<samp>-ts abs</samp>&rsquo; option can be used to force
+conversion into the real time clock.
+</p>
+<p>Some usage examples of the video4linux2 device with <code>ffmpeg</code>
+and <code>ffplay</code>:
+</p><ul>
+<li>
+Grab and show the input of a video4linux2 device:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f video4linux2 -framerate 30 -video_size hd720 /dev/video0
+</pre></td></tr></table>
+
+</li><li>
+Grab and record the input of a video4linux2 device, leave the
+frame rate and size as previously set:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f video4linux2 -input_format mjpeg -i /dev/video0 out.mpeg
+</pre></td></tr></table>
+</li></ul>
+
+<p>For more information about Video4Linux, check <a href="http://linuxtv.org/">http://linuxtv.org/</a>.
+</p>
+<a name="Options-2"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Options-2">3.14.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>standard</samp>&rsquo;</dt>
+<dd><p>Set the standard. Must be the name of a supported standard. To get a
+list of the supported standards, use the &lsquo;<samp>list_standards</samp>&rsquo;
+option.
+</p>
+</dd>
+<dt> &lsquo;<samp>channel</samp>&rsquo;</dt>
+<dd><p>Set the input channel number. Default to -1, which means using the
+previously selected channel.
+</p>
+</dd>
+<dt> &lsquo;<samp>video_size</samp>&rsquo;</dt>
+<dd><p>Set the video frame size. The argument must be a string in the form
+<var>WIDTH</var>x<var>HEIGHT</var> or a valid size abbreviation.
+</p>
+</dd>
+<dt> &lsquo;<samp>pixel_format</samp>&rsquo;</dt>
+<dd><p>Select the pixel format (only valid for raw video input).
+</p>
+</dd>
+<dt> &lsquo;<samp>input_format</samp>&rsquo;</dt>
+<dd><p>Set the preferred pixel format (for raw video) or a codec name.
+This option allows to select the input format, when several are
+available.
+</p>
+</dd>
+<dt> &lsquo;<samp>framerate</samp>&rsquo;</dt>
+<dd><p>Set the preferred video frame rate.
+</p>
+</dd>
+<dt> &lsquo;<samp>list_formats</samp>&rsquo;</dt>
+<dd><p>List available formats (supported pixel formats, codecs, and frame
+sizes) and exit.
+</p>
+<p>Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>all</samp>&rsquo;</dt>
+<dd><p>Show all available (compressed and non-compressed) formats.
+</p>
+</dd>
+<dt> &lsquo;<samp>raw</samp>&rsquo;</dt>
+<dd><p>Show only raw video (non-compressed) formats.
+</p>
+</dd>
+<dt> &lsquo;<samp>compressed</samp>&rsquo;</dt>
+<dd><p>Show only compressed formats.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>list_standards</samp>&rsquo;</dt>
+<dd><p>List supported standards and exit.
+</p>
+<p>Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>all</samp>&rsquo;</dt>
+<dd><p>Show all supported standards.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>timestamps, ts</samp>&rsquo;</dt>
+<dd><p>Set type of timestamps for grabbed frames.
+</p>
+<p>Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>default</samp>&rsquo;</dt>
+<dd><p>Use timestamps from the kernel.
+</p>
+</dd>
+<dt> &lsquo;<samp>abs</samp>&rsquo;</dt>
+<dd><p>Use absolute timestamps (wall clock).
+</p>
+</dd>
+<dt> &lsquo;<samp>mono2abs</samp>&rsquo;</dt>
+<dd><p>Force conversion from monotonic to absolute timestamps.
+</p></dd>
+</dl>
+
+<p>Default value is <code>default</code>.
+</p></dd>
+</dl>
+
+<a name="vfwcap"></a>
+<h2 class="section"><a href="ffmpeg-devices.html#toc-vfwcap">3.15 vfwcap</a></h2>
+
+<p>VfW (Video for Windows) capture input device.
+</p>
+<p>The filename passed as input is the capture driver number, ranging from
+0 to 9. You may use &quot;list&quot; as filename to print a list of drivers. Any
+other filename will be interpreted as device number 0.
+</p>
+<a name="x11grab"></a>
+<h2 class="section"><a href="ffmpeg-devices.html#toc-x11grab">3.16 x11grab</a></h2>
+
+<p>X11 video input device.
+</p>
+<p>This device allows to capture a region of an X11 display.
+</p>
+<p>The filename passed as input has the syntax:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[<var>hostname</var>]:<var>display_number</var>.<var>screen_number</var>[+<var>x_offset</var>,<var>y_offset</var>]
+</pre></td></tr></table>
+
+<p><var>hostname</var>:<var>display_number</var>.<var>screen_number</var> specifies the
+X11 display name of the screen to grab from. <var>hostname</var> can be
+omitted, and defaults to &quot;localhost&quot;. The environment variable
+<code>DISPLAY</code> contains the default display name.
+</p>
+<p><var>x_offset</var> and <var>y_offset</var> specify the offsets of the grabbed
+area with respect to the top-left border of the X11 screen. They
+default to 0.
+</p>
+<p>Check the X11 documentation (e.g. man X) for more detailed information.
+</p>
+<p>Use the <code>dpyinfo</code> program for getting basic information about the
+properties of your X11 display (e.g. grep for &quot;name&quot; or &quot;dimensions&quot;).
+</p>
+<p>For example to grab from &lsquo;<tt>:0.0</tt>&rsquo; using <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0 out.mpg
+</pre></td></tr></table>
+
+<p>Grab at position <code>10,20</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0+10,20 out.mpg
+</pre></td></tr></table>
+
+<a name="Options-11"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Options-11">3.16.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>draw_mouse</samp>&rsquo;</dt>
+<dd><p>Specify whether to draw the mouse pointer. A value of <code>0</code> specify
+not to draw the pointer. Default value is <code>1</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>follow_mouse</samp>&rsquo;</dt>
+<dd><p>Make the grabbed area follow the mouse. The argument can be
+<code>centered</code> or a number of pixels <var>PIXELS</var>.
+</p>
+<p>When it is specified with &quot;centered&quot;, the grabbing region follows the mouse
+pointer and keeps the pointer at the center of region; otherwise, the region
+follows only when the mouse pointer reaches within <var>PIXELS</var> (greater than
+zero) to the edge of region.
+</p>
+<p>For example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -follow_mouse centered -framerate 25 -video_size cif -i :0.0 out.mpg
+</pre></td></tr></table>
+
+<p>To follow only when the mouse pointer reaches within 100 pixels to edge:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -follow_mouse 100 -framerate 25 -video_size cif -i :0.0 out.mpg
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>framerate</samp>&rsquo;</dt>
+<dd><p>Set the grabbing frame rate. Default value is <code>ntsc</code>,
+corresponding to a frame rate of <code>30000/1001</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>show_region</samp>&rsquo;</dt>
+<dd><p>Show grabbed region on screen.
+</p>
+<p>If <var>show_region</var> is specified with <code>1</code>, then the grabbing
+region will be indicated on screen. With this option, it is easy to
+know what is being grabbed if only a portion of the screen is grabbed.
+</p>
+<p>For example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -show_region 1 -framerate 25 -video_size cif -i :0.0+10,20 out.mpg
+</pre></td></tr></table>
+
+<p>With <var>follow_mouse</var>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -follow_mouse centered -show_region 1 -framerate 25 -video_size cif -i :0.0 out.mpg
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>video_size</samp>&rsquo;</dt>
+<dd><p>Set the video frame size. Default value is <code>vga</code>.
+</p></dd>
+</dl>
+
+<a name="Output-Devices"></a>
+<h1 class="chapter"><a href="ffmpeg-devices.html#toc-Output-Devices">4. Output Devices</a></h1>
+
+<p>Output devices are configured elements in FFmpeg that can write
+multimedia data to an output device attached to your system.
+</p>
+<p>When you configure your FFmpeg build, all the supported output devices
+are enabled by default. You can list all available ones using the
+configure option &quot;&ndash;list-outdevs&quot;.
+</p>
+<p>You can disable all the output devices using the configure option
+&quot;&ndash;disable-outdevs&quot;, and selectively enable an output device using the
+option &quot;&ndash;enable-outdev=<var>OUTDEV</var>&quot;, or you can disable a particular
+input device using the option &quot;&ndash;disable-outdev=<var>OUTDEV</var>&quot;.
+</p>
+<p>The option &quot;-formats&quot; of the ff* tools will display the list of
+enabled output devices (amongst the muxers).
+</p>
+<p>A description of the currently available output devices follows.
+</p>
+<a name="alsa-1"></a>
+<h2 class="section"><a href="ffmpeg-devices.html#toc-alsa-1">4.1 alsa</a></h2>
+
+<p>ALSA (Advanced Linux Sound Architecture) output device.
+</p>
+<a name="Examples-9"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Examples-9">4.1.1 Examples</a></h3>
+
+<ul>
+<li>
+Play a file on default ALSA device:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f alsa default
+</pre></td></tr></table>
+
+</li><li>
+Play a file on soundcard 1, audio device 7:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f alsa hw:1,7
+</pre></td></tr></table>
+</li></ul>
+
+<a name="caca"></a>
+<h2 class="section"><a href="ffmpeg-devices.html#toc-caca">4.2 caca</a></h2>
+
+<p>CACA output device.
+</p>
+<p>This output device allows to show a video stream in CACA window.
+Only one CACA window is allowed per application, so you can
+have only one instance of this output device in an application.
+</p>
+<p>To enable this output device you need to configure FFmpeg with
+<code>--enable-libcaca</code>.
+libcaca is a graphics library that outputs text instead of pixels.
+</p>
+<p>For more information about libcaca, check:
+<a href="http://caca.zoy.org/wiki/libcaca">http://caca.zoy.org/wiki/libcaca</a>
+</p>
+<a name="Options-7"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Options-7">4.2.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>window_title</samp>&rsquo;</dt>
+<dd><p>Set the CACA window title, if not specified default to the filename
+specified for the output device.
+</p>
+</dd>
+<dt> &lsquo;<samp>window_size</samp>&rsquo;</dt>
+<dd><p>Set the CACA window size, can be a string of the form
+<var>width</var>x<var>height</var> or a video size abbreviation.
+If not specified it defaults to the size of the input video.
+</p>
+</dd>
+<dt> &lsquo;<samp>driver</samp>&rsquo;</dt>
+<dd><p>Set display driver.
+</p>
+</dd>
+<dt> &lsquo;<samp>algorithm</samp>&rsquo;</dt>
+<dd><p>Set dithering algorithm. Dithering is necessary
+because the picture being rendered has usually far more colours than
+the available palette.
+The accepted values are listed with <code>-list_dither algorithms</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>antialias</samp>&rsquo;</dt>
+<dd><p>Set antialias method. Antialiasing smoothens the rendered
+image and avoids the commonly seen staircase effect.
+The accepted values are listed with <code>-list_dither antialiases</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>charset</samp>&rsquo;</dt>
+<dd><p>Set which characters are going to be used when rendering text.
+The accepted values are listed with <code>-list_dither charsets</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
+<dd><p>Set color to be used when rendering text.
+The accepted values are listed with <code>-list_dither colors</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>list_drivers</samp>&rsquo;</dt>
+<dd><p>If set to &lsquo;<samp>true</samp>&rsquo;, print a list of available drivers and exit.
+</p>
+</dd>
+<dt> &lsquo;<samp>list_dither</samp>&rsquo;</dt>
+<dd><p>List available dither options related to the argument.
+The argument must be one of <code>algorithms</code>, <code>antialiases</code>,
+<code>charsets</code>, <code>colors</code>.
+</p></dd>
+</dl>
+
+<a name="Examples-3"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Examples-3">4.2.2 Examples</a></h3>
+
+<ul>
+<li>
+The following command shows the <code>ffmpeg</code> output is an
+CACA window, forcing its size to 80x25:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -vcodec rawvideo -pix_fmt rgb24 -window_size 80x25 -f caca -
+</pre></td></tr></table>
+
+</li><li>
+Show the list of available drivers and exit:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_drivers true -
+</pre></td></tr></table>
+
+</li><li>
+Show the list of available dither colors and exit:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_dither colors -
+</pre></td></tr></table>
+</li></ul>
+
+<a name="fbdev-1"></a>
+<h2 class="section"><a href="ffmpeg-devices.html#toc-fbdev-1">4.3 fbdev</a></h2>
+
+<p>Linux framebuffer output device.
+</p>
+<p>The Linux framebuffer is a graphic hardware-independent abstraction
+layer to show graphics on a computer monitor, typically on the
+console. It is accessed through a file device node, usually
+&lsquo;<tt>/dev/fb0</tt>&rsquo;.
+</p>
+<p>For more detailed information read the file
+&lsquo;<tt>Documentation/fb/framebuffer.txt</tt>&rsquo; included in the Linux source tree.
+</p>
+<a name="Options-10"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Options-10">4.3.1 Options</a></h3>
+<dl compact="compact">
+<dt> &lsquo;<samp>xoffset</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>yoffset</samp>&rsquo;</dt>
+<dd><p>Set x/y coordinate of top left corner. Default is 0.
+</p></dd>
+</dl>
+
+<a name="Examples-5"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Examples-5">4.3.2 Examples</a></h3>
+<p>Play a file on framebuffer device &lsquo;<tt>/dev/fb0</tt>&rsquo;.
+Required pixel format depends on current framebuffer settings.
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i INPUT -vcodec rawvideo -pix_fmt bgra -f fbdev /dev/fb0
+</pre></td></tr></table>
+
+<p>See also <a href="http://linux-fbdev.sourceforge.net/">http://linux-fbdev.sourceforge.net/</a>, and fbset(1).
+</p>
+<a name="oss-1"></a>
+<h2 class="section"><a href="ffmpeg-devices.html#toc-oss-1">4.4 oss</a></h2>
+
+<p>OSS (Open Sound System) output device.
+</p>
+<a name="pulse"></a>
+<h2 class="section"><a href="ffmpeg-devices.html#toc-pulse">4.5 pulse</a></h2>
+
+<p>PulseAudio output device.
+</p>
+<p>To enable this output device you need to configure FFmpeg with <code>--enable-libpulse</code>.
+</p>
+<p>More information about PulseAudio can be found on <a href="http://www.pulseaudio.org">http://www.pulseaudio.org</a>
+</p>
+<a name="Options-5"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Options-5">4.5.1 Options</a></h3>
+<dl compact="compact">
+<dt> &lsquo;<samp>server</samp>&rsquo;</dt>
+<dd><p>Connect to a specific PulseAudio server, specified by an IP address.
+Default server is used when not provided.
+</p>
+</dd>
+<dt> &lsquo;<samp>name</samp>&rsquo;</dt>
+<dd><p>Specify the application name PulseAudio will use when showing active clients,
+by default it is the <code>LIBAVFORMAT_IDENT</code> string.
+</p>
+</dd>
+<dt> &lsquo;<samp>stream_name</samp>&rsquo;</dt>
+<dd><p>Specify the stream name PulseAudio will use when showing active streams,
+by default it is set to the specified output name.
+</p>
+</dd>
+<dt> &lsquo;<samp>device</samp>&rsquo;</dt>
+<dd><p>Specify the device to use. Default device is used when not provided.
+List of output devices can be obtained with command <code>pactl list sinks</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>buffer_size</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>buffer_duration</samp>&rsquo;</dt>
+<dd><p>Control the size and duration of the PulseAudio buffer. A small buffer
+gives more control, but requires more frequent updates.
+</p>
+<p>&lsquo;<samp>buffer_size</samp>&rsquo; specifies size in bytes while
+&lsquo;<samp>buffer_duration</samp>&rsquo; specifies duration in milliseconds.
+</p>
+<p>When both options are provided then the highest value is used
+(duration is recalculated to bytes using stream parameters). If they
+are set to 0 (which is default), the device will use the default
+PulseAudio duration value. By default PulseAudio set buffer duration
+to around 2 seconds.
+</p></dd>
+</dl>
+
+<a name="Examples-4"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Examples-4">4.5.2 Examples</a></h3>
+<p>Play a file on default device on default server:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg  -i INPUT -f pulse &quot;stream name&quot;
+</pre></td></tr></table>
+
+<a name="sdl"></a>
+<h2 class="section"><a href="ffmpeg-devices.html#toc-sdl">4.6 sdl</a></h2>
+
+<p>SDL (Simple DirectMedia Layer) output device.
+</p>
+<p>This output device allows to show a video stream in an SDL
+window. Only one SDL window is allowed per application, so you can
+have only one instance of this output device in an application.
+</p>
+<p>To enable this output device you need libsdl installed on your system
+when configuring your build.
+</p>
+<p>For more information about SDL, check:
+<a href="http://www.libsdl.org/">http://www.libsdl.org/</a>
+</p>
+<a name="Options-1"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Options-1">4.6.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>window_title</samp>&rsquo;</dt>
+<dd><p>Set the SDL window title, if not specified default to the filename
+specified for the output device.
+</p>
+</dd>
+<dt> &lsquo;<samp>icon_title</samp>&rsquo;</dt>
+<dd><p>Set the name of the iconified SDL window, if not specified it is set
+to the same value of <var>window_title</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>window_size</samp>&rsquo;</dt>
+<dd><p>Set the SDL window size, can be a string of the form
+<var>width</var>x<var>height</var> or a video size abbreviation.
+If not specified it defaults to the size of the input video,
+downscaled according to the aspect ratio.
+</p>
+</dd>
+<dt> &lsquo;<samp>window_fullscreen</samp>&rsquo;</dt>
+<dd><p>Set fullscreen mode when non-zero value is provided.
+Default value is zero.
+</p></dd>
+</dl>
+
+<a name="Interactive-commands"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Interactive-commands">4.6.2 Interactive commands</a></h3>
+
+<p>The window created by the device can be controlled through the
+following interactive commands.
+</p>
+<dl compact="compact">
+<dt> &lt;q, ESC&gt;</dt>
+<dd><p>Quit the device immediately.
+</p></dd>
+</dl>
+
+<a name="Examples-2"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Examples-2">4.6.3 Examples</a></h3>
+
+<p>The following command shows the <code>ffmpeg</code> output is an
+SDL window, forcing its size to the qcif format:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -vcodec rawvideo -pix_fmt yuv420p -window_size qcif -f sdl &quot;SDL output&quot;
+</pre></td></tr></table>
+
+<a name="sndio-1"></a>
+<h2 class="section"><a href="ffmpeg-devices.html#toc-sndio-1">4.7 sndio</a></h2>
+
+<p>sndio audio output device.
+</p>
+<a name="xv"></a>
+<h2 class="section"><a href="ffmpeg-devices.html#toc-xv">4.8 xv</a></h2>
+
+<p>XV (XVideo) output device.
+</p>
+<p>This output device allows to show a video stream in a X Window System
+window.
+</p>
+<a name="Options-6"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Options-6">4.8.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>display_name</samp>&rsquo;</dt>
+<dd><p>Specify the hardware display name, which determines the display and
+communications domain to be used.
+</p>
+<p>The display name or DISPLAY environment variable can be a string in
+the format <var>hostname</var>[:<var>number</var>[.<var>screen_number</var>]].
+</p>
+<p><var>hostname</var> specifies the name of the host machine on which the
+display is physically attached. <var>number</var> specifies the number of
+the display server on that host machine. <var>screen_number</var> specifies
+the screen to be used on that server.
+</p>
+<p>If unspecified, it defaults to the value of the DISPLAY environment
+variable.
+</p>
+<p>For example, <code>dual-headed:0.1</code> would specify screen 1 of display
+0 on the machine named &ldquo;dual-headed&rdquo;.
+</p>
+<p>Check the X11 specification for more detailed information about the
+display name format.
+</p>
+</dd>
+<dt> &lsquo;<samp>window_size</samp>&rsquo;</dt>
+<dd><p>Set the created window size, can be a string of the form
+<var>width</var>x<var>height</var> or a video size abbreviation. If not
+specified it defaults to the size of the input video.
+</p>
+</dd>
+<dt> &lsquo;<samp>window_x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>window_y</samp>&rsquo;</dt>
+<dd><p>Set the X and Y window offsets for the created window. They are both
+set to 0 by default. The values may be ignored by the window manager.
+</p>
+</dd>
+<dt> &lsquo;<samp>window_title</samp>&rsquo;</dt>
+<dd><p>Set the window title, if not specified default to the filename
+specified for the output device.
+</p></dd>
+</dl>
+
+<p>For more information about XVideo see <a href="http://www.x.org/">http://www.x.org/</a>.
+</p>
+<a name="Examples-1"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Examples-1">4.8.2 Examples</a></h3>
+
+<ul>
+<li>
+Decode, display and encode video input with <code>ffmpeg</code> at the
+same time:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT OUTPUT -f xv display
+</pre></td></tr></table>
+
+</li><li>
+Decode and display the input video to multiple X11 windows:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f xv normal -vf negate -f xv negated
+</pre></td></tr></table>
+</li></ul>
+
+
+<a name="See-Also"></a>
+<h1 class="chapter"><a href="ffmpeg-devices.html#toc-See-Also">5. See Also</a></h1>
+
+<p><a href="ffmpeg.html">ffmpeg</a>, <a href="ffplay.html">ffplay</a>, <a href="ffprobe.html">ffprobe</a>, <a href="ffserver.html">ffserver</a>,
+<a href="libavdevice.html">libavdevice</a>
+</p>
+
+<a name="Authors"></a>
+<h1 class="chapter"><a href="ffmpeg-devices.html#toc-Authors">6. Authors</a></h1>
+
+<p>The FFmpeg developers.
+</p>
+<p>For details about the authorship, see the Git history of the project
+(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
+<code>git log</code> in the FFmpeg source directory, or browsing the
+online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
+</p>
+<p>Maintainers for the specific components are listed in the file
+&lsquo;<tt>MAINTAINERS</tt>&rsquo; in the source code tree.
+</p>
+
+<footer class="footer pagination-right">
+<span class="label label-info">This document was generated by <em>Kyle Schwarz</em> on <em>December 14, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies/ffmpeg/doc/ffmpeg-filters.html b/dependencies/ffmpeg/doc/ffmpeg-filters.html
new file mode 100644 (file)
index 0000000..2fa91de
--- /dev/null
@@ -0,0 +1,11546 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on December 14, 2013 by texi2html 1.82 -->
+<!--
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>FFmpeg documentation : FFmpeg Filters </title>
+
+<meta name="description" content="FFmpeg Filters Documentation: ">
+<meta name="keywords" content="FFmpeg documentation : FFmpeg Filters ">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="default.css" />
+
+<link rel="icon" href="favicon.png" type="image/png" />
+</head>
+<body>
+<div id="container">
+<div id="body">
+
+<a name="SEC_Top"></a>
+<h1 class="settitle">FFmpeg Filters Documentation</h1>
+
+<a name="SEC_Contents"></a>
+<h1>Table of Contents</h1>
+<div class="contents">
+
+<ul class="toc">
+  <li><a name="toc-Description" href="#Description">1. Description</a></li>
+  <li><a name="toc-Filtering-Introduction" href="#Filtering-Introduction">2. Filtering Introduction</a></li>
+  <li><a name="toc-graph2dot" href="#graph2dot">3. graph2dot</a></li>
+  <li><a name="toc-Filtergraph-description" href="#Filtergraph-description">4. Filtergraph description</a>
+  <ul class="toc">
+    <li><a name="toc-Filtergraph-syntax-1" href="#Filtergraph-syntax-1">4.1 Filtergraph syntax</a></li>
+    <li><a name="toc-Notes-on-filtergraph-escaping" href="#Notes-on-filtergraph-escaping">4.2 Notes on filtergraph escaping</a></li>
+  </ul></li>
+  <li><a name="toc-Timeline-editing" href="#Timeline-editing">5. Timeline editing</a></li>
+  <li><a name="toc-Audio-Filters" href="#Audio-Filters">6. Audio Filters</a>
+  <ul class="toc">
+    <li><a name="toc-aconvert" href="#aconvert">6.1 aconvert</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-41" href="#Examples-41">6.1.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-adelay" href="#adelay">6.2 adelay</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-31" href="#Examples-31">6.2.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-aecho" href="#aecho">6.3 aecho</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-26" href="#Examples-26">6.3.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-aeval" href="#aeval">6.4 aeval</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-49" href="#Examples-49">6.4.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-afade" href="#afade">6.5 afade</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-38" href="#Examples-38">6.5.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-aformat-1" href="#aformat-1">6.6 aformat</a></li>
+    <li><a name="toc-allpass" href="#allpass">6.7 allpass</a></li>
+    <li><a name="toc-amerge" href="#amerge">6.8 amerge</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-5" href="#Examples-5">6.8.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-amix" href="#amix">6.9 amix</a></li>
+    <li><a name="toc-anull" href="#anull">6.10 anull</a></li>
+    <li><a name="toc-apad" href="#apad">6.11 apad</a></li>
+    <li><a name="toc-aphaser" href="#aphaser">6.12 aphaser</a></li>
+    <li><a name="toc-aresample-1" href="#aresample-1">6.13 aresample</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-62" href="#Examples-62">6.13.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-asetnsamples" href="#asetnsamples">6.14 asetnsamples</a></li>
+    <li><a name="toc-asetrate" href="#asetrate">6.15 asetrate</a></li>
+    <li><a name="toc-ashowinfo" href="#ashowinfo">6.16 ashowinfo</a></li>
+    <li><a name="toc-astats" href="#astats">6.17 astats</a></li>
+    <li><a name="toc-astreamsync" href="#astreamsync">6.18 astreamsync</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-68" href="#Examples-68">6.18.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-asyncts" href="#asyncts">6.19 asyncts</a></li>
+    <li><a name="toc-atempo" href="#atempo">6.20 atempo</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-71" href="#Examples-71">6.20.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-atrim" href="#atrim">6.21 atrim</a></li>
+    <li><a name="toc-bandpass" href="#bandpass">6.22 bandpass</a></li>
+    <li><a name="toc-bandreject" href="#bandreject">6.23 bandreject</a></li>
+    <li><a name="toc-bass" href="#bass">6.24 bass</a></li>
+    <li><a name="toc-biquad" href="#biquad">6.25 biquad</a></li>
+    <li><a name="toc-channelmap" href="#channelmap">6.26 channelmap</a></li>
+    <li><a name="toc-channelsplit" href="#channelsplit">6.27 channelsplit</a></li>
+    <li><a name="toc-compand" href="#compand">6.28 compand</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-24" href="#Examples-24">6.28.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-earwax" href="#earwax">6.29 earwax</a></li>
+    <li><a name="toc-equalizer" href="#equalizer">6.30 equalizer</a></li>
+    <li><a name="toc-highpass" href="#highpass">6.31 highpass</a></li>
+    <li><a name="toc-join" href="#join">6.32 join</a></li>
+    <li><a name="toc-ladspa" href="#ladspa">6.33 ladspa</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-23" href="#Examples-23">6.33.1 Examples</a></li>
+      <li><a name="toc-Commands-2" href="#Commands-2">6.33.2 Commands</a></li>
+    </ul></li>
+    <li><a name="toc-lowpass" href="#lowpass">6.34 lowpass</a></li>
+    <li><a name="toc-pan" href="#pan">6.35 pan</a>
+    <ul class="toc">
+      <li><a name="toc-Mixing-examples" href="#Mixing-examples">6.35.1 Mixing examples</a></li>
+      <li><a name="toc-Remapping-examples" href="#Remapping-examples">6.35.2 Remapping examples</a></li>
+    </ul></li>
+    <li><a name="toc-replaygain" href="#replaygain">6.36 replaygain</a></li>
+    <li><a name="toc-resample" href="#resample">6.37 resample</a></li>
+    <li><a name="toc-silencedetect" href="#silencedetect">6.38 silencedetect</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-66" href="#Examples-66">6.38.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-treble" href="#treble">6.39 treble</a></li>
+    <li><a name="toc-volume" href="#volume">6.40 volume</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-14" href="#Examples-14">6.40.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-volumedetect" href="#volumedetect">6.41 volumedetect</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-8" href="#Examples-8">6.41.1 Examples</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Audio-Sources" href="#Audio-Sources">7. Audio Sources</a>
+  <ul class="toc">
+    <li><a name="toc-abuffer" href="#abuffer">7.1 abuffer</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-55" href="#Examples-55">7.1.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-aevalsrc" href="#aevalsrc">7.2 aevalsrc</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-1" href="#Examples-1">7.2.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-anullsrc" href="#anullsrc">7.3 anullsrc</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-39" href="#Examples-39">7.3.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-flite" href="#flite">7.4 flite</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-20" href="#Examples-20">7.4.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sine" href="#sine">7.5 sine</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-58" href="#Examples-58">7.5.1 Examples</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Audio-Sinks" href="#Audio-Sinks">8. Audio Sinks</a>
+  <ul class="toc">
+    <li><a name="toc-abuffersink" href="#abuffersink">8.1 abuffersink</a></li>
+    <li><a name="toc-anullsink" href="#anullsink">8.2 anullsink</a></li>
+  </ul></li>
+  <li><a name="toc-Video-Filters" href="#Video-Filters">9. Video Filters</a>
+  <ul class="toc">
+    <li><a name="toc-alphaextract" href="#alphaextract">9.1 alphaextract</a></li>
+    <li><a name="toc-alphamerge" href="#alphamerge">9.2 alphamerge</a></li>
+    <li><a name="toc-ass" href="#ass">9.3 ass</a></li>
+    <li><a name="toc-bbox" href="#bbox">9.4 bbox</a></li>
+    <li><a name="toc-blackdetect" href="#blackdetect">9.5 blackdetect</a></li>
+    <li><a name="toc-blackframe" href="#blackframe">9.6 blackframe</a></li>
+    <li><a name="toc-blend" href="#blend">9.7 blend</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-21" href="#Examples-21">9.7.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-boxblur" href="#boxblur">9.8 boxblur</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-4" href="#Examples-4">9.8.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-colorbalance" href="#colorbalance">9.9 colorbalance</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-37" href="#Examples-37">9.9.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-colorchannelmixer" href="#colorchannelmixer">9.10 colorchannelmixer</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-35" href="#Examples-35">9.10.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-colormatrix" href="#colormatrix">9.11 colormatrix</a></li>
+    <li><a name="toc-copy" href="#copy">9.12 copy</a></li>
+    <li><a name="toc-crop" href="#crop">9.13 crop</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-36" href="#Examples-36">9.13.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-cropdetect" href="#cropdetect">9.14 cropdetect</a></li>
+    <li><a name="toc-curves-1" href="#curves-1">9.15 curves</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-2" href="#Examples-2">9.15.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-dctdnoiz" href="#dctdnoiz">9.16 dctdnoiz</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-22" href="#Examples-22">9.16.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-decimate-1" href="#decimate-1">9.17 decimate</a></li>
+    <li><a name="toc-delogo" href="#delogo">9.18 delogo</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-50" href="#Examples-50">9.18.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-deshake" href="#deshake">9.19 deshake</a></li>
+    <li><a name="toc-drawbox" href="#drawbox">9.20 drawbox</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-60" href="#Examples-60">9.20.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-drawgrid" href="#drawgrid">9.21 drawgrid</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-28" href="#Examples-28">9.21.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-drawtext-1" href="#drawtext-1">9.22 drawtext</a>
+    <ul class="toc">
+      <li><a name="toc-Syntax" href="#Syntax">9.22.1 Syntax</a></li>
+      <li><a name="toc-Text-expansion" href="#Text-expansion">9.22.2 Text expansion</a></li>
+      <li><a name="toc-Examples-32" href="#Examples-32">9.22.3 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-edgedetect" href="#edgedetect">9.23 edgedetect</a></li>
+    <li><a name="toc-extractplanes" href="#extractplanes">9.24 extractplanes</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-54" href="#Examples-54">9.24.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-elbg" href="#elbg">9.25 elbg</a></li>
+    <li><a name="toc-fade" href="#fade">9.26 fade</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-47" href="#Examples-47">9.26.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-field" href="#field">9.27 field</a></li>
+    <li><a name="toc-fieldmatch" href="#fieldmatch">9.28 fieldmatch</a>
+    <ul class="toc">
+      <li><a name="toc-p_002fc_002fn_002fu_002fb-meaning-1" href="#p_002fc_002fn_002fu_002fb-meaning-1">9.28.1 p/c/n/u/b meaning</a>
+      <ul class="toc">
+        <li><a name="toc-p_002fc_002fn" href="#p_002fc_002fn">9.28.1.1 p/c/n</a></li>
+        <li><a name="toc-u_002fb" href="#u_002fb">9.28.1.2 u/b</a></li>
+      </ul></li>
+      <li><a name="toc-Examples-10" href="#Examples-10">9.28.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-fieldorder" href="#fieldorder">9.29 fieldorder</a></li>
+    <li><a name="toc-fifo" href="#fifo">9.30 fifo</a></li>
+    <li><a name="toc-format-1" href="#format-1">9.31 format</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-65" href="#Examples-65">9.31.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-fps-1" href="#fps-1">9.32 fps</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-72" href="#Examples-72">9.32.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-framestep" href="#framestep">9.33 framestep</a></li>
+    <li><a name="toc-frei0r-1" href="#frei0r-1">9.34 frei0r</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-42" href="#Examples-42">9.34.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-geq" href="#geq">9.35 geq</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-7" href="#Examples-7">9.35.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-gradfun" href="#gradfun">9.36 gradfun</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-11" href="#Examples-11">9.36.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-haldclut-1" href="#haldclut-1">9.37 haldclut</a>
+    <ul class="toc">
+      <li><a name="toc-Workflow-examples" href="#Workflow-examples">9.37.1 Workflow examples</a>
+      <ul class="toc">
+        <li><a name="toc-Hald-CLUT-video-stream" href="#Hald-CLUT-video-stream">9.37.1.1 Hald CLUT video stream</a></li>
+        <li><a name="toc-Hald-CLUT-with-preview" href="#Hald-CLUT-with-preview">9.37.1.2 Hald CLUT with preview</a></li>
+      </ul>
+</li>
+    </ul></li>
+    <li><a name="toc-hflip" href="#hflip">9.38 hflip</a></li>
+    <li><a name="toc-histeq" href="#histeq">9.39 histeq</a></li>
+    <li><a name="toc-histogram" href="#histogram">9.40 histogram</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-45" href="#Examples-45">9.40.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-hqdn3d-1" href="#hqdn3d-1">9.41 hqdn3d</a></li>
+    <li><a name="toc-hue" href="#hue">9.42 hue</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-52" href="#Examples-52">9.42.1 Examples</a></li>
+      <li><a name="toc-Commands" href="#Commands">9.42.2 Commands</a></li>
+    </ul></li>
+    <li><a name="toc-idet" href="#idet">9.43 idet</a></li>
+    <li><a name="toc-il" href="#il">9.44 il</a></li>
+    <li><a name="toc-interlace" href="#interlace">9.45 interlace</a></li>
+    <li><a name="toc-kerndeint" href="#kerndeint">9.46 kerndeint</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-29" href="#Examples-29">9.46.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-lut3d-1" href="#lut3d-1">9.47 lut3d</a></li>
+    <li><a name="toc-lut_002c-lutrgb_002c-lutyuv" href="#lut_002c-lutrgb_002c-lutyuv">9.48 lut, lutrgb, lutyuv</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-40" href="#Examples-40">9.48.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mergeplanes" href="#mergeplanes">9.49 mergeplanes</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-34" href="#Examples-34">9.49.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mcdeint" href="#mcdeint">9.50 mcdeint</a></li>
+    <li><a name="toc-mp" href="#mp">9.51 mp</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-46" href="#Examples-46">9.51.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mpdecimate" href="#mpdecimate">9.52 mpdecimate</a></li>
+    <li><a name="toc-negate" href="#negate">9.53 negate</a></li>
+    <li><a name="toc-noformat" href="#noformat">9.54 noformat</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-18" href="#Examples-18">9.54.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-noise" href="#noise">9.55 noise</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-48" href="#Examples-48">9.55.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-null" href="#null">9.56 null</a></li>
+    <li><a name="toc-ocv" href="#ocv">9.57 ocv</a>
+    <ul class="toc">
+      <li><a name="toc-dilate-1" href="#dilate-1">9.57.1 dilate</a></li>
+      <li><a name="toc-erode" href="#erode">9.57.2 erode</a></li>
+      <li><a name="toc-smooth" href="#smooth">9.57.3 smooth</a></li>
+    </ul></li>
+    <li><a name="toc-overlay-1" href="#overlay-1">9.58 overlay</a>
+    <ul class="toc">
+      <li><a name="toc-Commands-1" href="#Commands-1">9.58.1 Commands</a></li>
+      <li><a name="toc-Examples-30" href="#Examples-30">9.58.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-owdenoise" href="#owdenoise">9.59 owdenoise</a></li>
+    <li><a name="toc-pad" href="#pad">9.60 pad</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-59" href="#Examples-59">9.60.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-perspective" href="#perspective">9.61 perspective</a></li>
+    <li><a name="toc-phase" href="#phase">9.62 phase</a></li>
+    <li><a name="toc-pixdesctest" href="#pixdesctest">9.63 pixdesctest</a></li>
+    <li><a name="toc-pp" href="#pp">9.64 pp</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-12" href="#Examples-12">9.64.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-psnr" href="#psnr">9.65 psnr</a></li>
+    <li><a name="toc-pullup" href="#pullup">9.66 pullup</a></li>
+    <li><a name="toc-removelogo" href="#removelogo">9.67 removelogo</a></li>
+    <li><a name="toc-rotate" href="#rotate">9.68 rotate</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-33" href="#Examples-33">9.68.1 Examples</a></li>
+      <li><a name="toc-Commands-4" href="#Commands-4">9.68.2 Commands</a></li>
+    </ul></li>
+    <li><a name="toc-sab" href="#sab">9.69 sab</a></li>
+    <li><a name="toc-scale-1" href="#scale-1">9.70 scale</a>
+    <ul class="toc">
+      <li><a name="toc-Options" href="#Options">9.70.1 Options</a></li>
+      <li><a name="toc-Examples-44" href="#Examples-44">9.70.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-separatefields" href="#separatefields">9.71 separatefields</a></li>
+    <li><a name="toc-setdar_002c-setsar" href="#setdar_002c-setsar">9.72 setdar, setsar</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-16" href="#Examples-16">9.72.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-setfield-1" href="#setfield-1">9.73 setfield</a></li>
+    <li><a name="toc-showinfo" href="#showinfo">9.74 showinfo</a></li>
+    <li><a name="toc-smartblur-1" href="#smartblur-1">9.75 smartblur</a></li>
+    <li><a name="toc-stereo3d" href="#stereo3d">9.76 stereo3d</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-73" href="#Examples-73">9.76.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-spp" href="#spp">9.77 spp</a></li>
+    <li><a name="toc-subtitles-1" href="#subtitles-1">9.78 subtitles</a></li>
+    <li><a name="toc-super2xsai" href="#super2xsai">9.79 super2xsai</a></li>
+    <li><a name="toc-swapuv" href="#swapuv">9.80 swapuv</a></li>
+    <li><a name="toc-telecine" href="#telecine">9.81 telecine</a></li>
+    <li><a name="toc-thumbnail" href="#thumbnail">9.82 thumbnail</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-53" href="#Examples-53">9.82.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-tile" href="#tile">9.83 tile</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-67" href="#Examples-67">9.83.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-tinterlace" href="#tinterlace">9.84 tinterlace</a></li>
+    <li><a name="toc-transpose" href="#transpose">9.85 transpose</a></li>
+    <li><a name="toc-trim" href="#trim">9.86 trim</a></li>
+    <li><a name="toc-unsharp" href="#unsharp">9.87 unsharp</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-9" href="#Examples-9">9.87.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-vidstabdetect-1" href="#vidstabdetect-1">9.88 vidstabdetect</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-57" href="#Examples-57">9.88.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-vidstabtransform-1" href="#vidstabtransform-1">9.89 vidstabtransform</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-56" href="#Examples-56">9.89.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-vflip" href="#vflip">9.90 vflip</a></li>
+    <li><a name="toc-vignette" href="#vignette">9.91 vignette</a>
+    <ul class="toc">
+      <li><a name="toc-Expressions" href="#Expressions">9.91.1 Expressions</a></li>
+      <li><a name="toc-Examples-51" href="#Examples-51">9.91.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-w3fdif" href="#w3fdif">9.92 w3fdif</a></li>
+    <li><a name="toc-yadif-1" href="#yadif-1">9.93 yadif</a></li>
+  </ul></li>
+  <li><a name="toc-Video-Sources" href="#Video-Sources">10. Video Sources</a>
+  <ul class="toc">
+    <li><a name="toc-buffer" href="#buffer">10.1 buffer</a></li>
+    <li><a name="toc-cellauto" href="#cellauto">10.2 cellauto</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-70" href="#Examples-70">10.2.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mandelbrot" href="#mandelbrot">10.3 mandelbrot</a></li>
+    <li><a name="toc-mptestsrc" href="#mptestsrc">10.4 mptestsrc</a></li>
+    <li><a name="toc-frei0r_005fsrc" href="#frei0r_005fsrc">10.5 frei0r_src</a></li>
+    <li><a name="toc-life" href="#life">10.6 life</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-6" href="#Examples-6">10.6.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-color_002c-haldclutsrc_002c-nullsrc_002c-rgbtestsrc_002c-smptebars_002c-smptehdbars_002c-testsrc" href="#color_002c-haldclutsrc_002c-nullsrc_002c-rgbtestsrc_002c-smptebars_002c-smptehdbars_002c-testsrc">10.7 color, haldclutsrc, nullsrc, rgbtestsrc, smptebars, smptehdbars, testsrc</a>
+    <ul class="toc">
+      <li><a name="toc-Commands-3" href="#Commands-3">10.7.1 Commands</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Video-Sinks" href="#Video-Sinks">11. Video Sinks</a>
+  <ul class="toc">
+    <li><a name="toc-buffersink" href="#buffersink">11.1 buffersink</a></li>
+    <li><a name="toc-nullsink" href="#nullsink">11.2 nullsink</a></li>
+  </ul></li>
+  <li><a name="toc-Multimedia-Filters" href="#Multimedia-Filters">12. Multimedia Filters</a>
+  <ul class="toc">
+    <li><a name="toc-avectorscope" href="#avectorscope">12.1 avectorscope</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-69" href="#Examples-69">12.1.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-concat" href="#concat">12.2 concat</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-64" href="#Examples-64">12.2.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-ebur128" href="#ebur128">12.3 ebur128</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-25" href="#Examples-25">12.3.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-interleave_002c-ainterleave" href="#interleave_002c-ainterleave">12.4 interleave, ainterleave</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-19" href="#Examples-19">12.4.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-perms_002c-aperms" href="#perms_002c-aperms">12.5 perms, aperms</a></li>
+    <li><a name="toc-select_002c-aselect" href="#select_002c-aselect">12.6 select, aselect</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-43" href="#Examples-43">12.6.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sendcmd_002c-asendcmd" href="#sendcmd_002c-asendcmd">12.7 sendcmd, asendcmd</a>
+    <ul class="toc">
+      <li><a name="toc-Commands-syntax" href="#Commands-syntax">12.7.1 Commands syntax</a></li>
+      <li><a name="toc-Examples-13" href="#Examples-13">12.7.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-setpts_002c-asetpts" href="#setpts_002c-asetpts">12.8 setpts, asetpts</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-17" href="#Examples-17">12.8.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-settb_002c-asettb" href="#settb_002c-asettb">12.9 settb, asettb</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-15" href="#Examples-15">12.9.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-showspectrum" href="#showspectrum">12.10 showspectrum</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-63" href="#Examples-63">12.10.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-showwaves" href="#showwaves">12.11 showwaves</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-61" href="#Examples-61">12.11.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-split_002c-asplit" href="#split_002c-asplit">12.12 split, asplit</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-27" href="#Examples-27">12.12.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-zmq_002c-azmq" href="#zmq_002c-azmq">12.13 zmq, azmq</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-3" href="#Examples-3">12.13.1 Examples</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Multimedia-Sources" href="#Multimedia-Sources">13. Multimedia Sources</a>
+  <ul class="toc">
+    <li><a name="toc-amovie" href="#amovie">13.1 amovie</a></li>
+    <li><a name="toc-movie-1" href="#movie-1">13.2 movie</a>
+    <ul class="toc">
+      <li><a name="toc-Examples" href="#Examples">13.2.1 Examples</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-See-Also" href="#See-Also">14. See Also</a></li>
+  <li><a name="toc-Authors" href="#Authors">15. Authors</a></li>
+</ul>
+</div>
+
+<a name="Description"></a>
+<h1 class="chapter"><a href="ffmpeg-filters.html#toc-Description">1. Description</a></h1>
+
+<p>This document describes filters, sources, and sinks provided by the
+libavfilter library.
+</p>
+
+<a name="Filtering-Introduction"></a>
+<h1 class="chapter"><a href="ffmpeg-filters.html#toc-Filtering-Introduction">2. Filtering Introduction</a></h1>
+
+<p>Filtering in FFmpeg is enabled through the libavfilter library.
+</p>
+<p>In libavfilter, a filter can have multiple inputs and multiple
+outputs.
+To illustrate the sorts of things that are possible, we consider the
+following filtergraph.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">                [main]
+input --&gt; split ---------------------&gt; overlay --&gt; output
+            |                             ^
+            |[tmp]                  [flip]|
+            +-----&gt; crop --&gt; vflip -------+
+</pre></td></tr></table>
+
+<p>This filtergraph splits the input 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:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -vf &quot;split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2&quot; OUTPUT
+</pre></td></tr></table>
+
+<p>The result will be that in output the top half of the video is mirrored
+onto the bottom half.
+</p>
+<p>Filters in the same linear chain are separated by commas, and distinct
+linear chains of filters are separated by semicolons. In our example,
+<var>crop,vflip</var> are in one linear chain, <var>split</var> and
+<var>overlay</var> are separately in another. The points where the linear
+chains join are labelled by names enclosed in square brackets. In the
+example, the split filter generates two outputs that are associated to
+the labels <var>[main]</var> and <var>[tmp]</var>.
+</p>
+<p>The stream sent to the second output of <var>split</var>, labelled as
+<var>[tmp]</var>, is processed through the <var>crop</var> filter, which crops
+away the lower half part of the video, and then vertically flipped. The
+<var>overlay</var> filter takes in input the first unchanged output of the
+split filter (which was labelled as <var>[main]</var>), and overlay on its
+lower half the output generated by the <var>crop,vflip</var> filterchain.
+</p>
+<p>Some filters take in input a list of parameters: they are specified
+after the filter name and an equal sign, and are separated from each other
+by a colon.
+</p>
+<p>There exist so-called <var>source filters</var> that do not have an
+audio/video input, and <var>sink filters</var> that will not have audio/video
+output.
+</p>
+
+<a name="graph2dot"></a>
+<h1 class="chapter"><a href="ffmpeg-filters.html#toc-graph2dot">3. graph2dot</a></h1>
+
+<p>The &lsquo;<tt>graph2dot</tt>&rsquo; program included in the FFmpeg &lsquo;<tt>tools</tt>&rsquo;
+directory can be used to parse a filtergraph description and issue a
+corresponding textual representation in the dot language.
+</p>
+<p>Invoke the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">graph2dot -h
+</pre></td></tr></table>
+
+<p>to see how to use &lsquo;<tt>graph2dot</tt>&rsquo;.
+</p>
+<p>You can then pass the dot description to the &lsquo;<tt>dot</tt>&rsquo; program (from
+the graphviz suite of programs) and obtain a graphical representation
+of the filtergraph.
+</p>
+<p>For example the sequence of commands:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">echo <var>GRAPH_DESCRIPTION</var> | \
+tools/graph2dot -o graph.tmp &amp;&amp; \
+dot -Tpng graph.tmp -o graph.png &amp;&amp; \
+display graph.png
+</pre></td></tr></table>
+
+<p>can be used to create and display an image representing the graph
+described by the <var>GRAPH_DESCRIPTION</var> string. Note that this string must be
+a complete self-contained graph, with its inputs and outputs explicitly defined.
+For example if your command line is of the form:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i infile -vf scale=640:360 outfile
+</pre></td></tr></table>
+<p>your <var>GRAPH_DESCRIPTION</var> string will need to be of the form:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">nullsrc,scale=640:360,nullsink
+</pre></td></tr></table>
+<p>you may also need to set the <var>nullsrc</var> parameters and add a <var>format</var>
+filter in order to simulate a specific input file.
+</p>
+
+<a name="Filtergraph-description"></a>
+<h1 class="chapter"><a href="ffmpeg-filters.html#toc-Filtergraph-description">4. Filtergraph description</a></h1>
+
+<p>A filtergraph is a directed graph of connected filters. It can contain
+cycles, and there can be multiple links between a pair of
+filters. Each link has one input pad on one side connecting it to one
+filter from which it takes its input, and one output pad on the other
+side connecting it to the one filter accepting its output.
+</p>
+<p>Each filter in a filtergraph is an instance of a filter class
+registered in the application, which defines the features and the
+number of input and output pads of the filter.
+</p>
+<p>A filter with no input pads is called a &quot;source&quot;, a filter with no
+output pads is called a &quot;sink&quot;.
+</p>
+<p><a name="Filtergraph-syntax"></a>
+</p><a name="Filtergraph-syntax-1"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-Filtergraph-syntax-1">4.1 Filtergraph syntax</a></h2>
+
+<p>A filtergraph can be represented using a textual representation, which is
+recognized by the &lsquo;<samp>-filter</samp>&rsquo;/&lsquo;<samp>-vf</samp>&rsquo; and &lsquo;<samp>-filter_complex</samp>&rsquo;
+options in <code>ffmpeg</code> and &lsquo;<samp>-vf</samp>&rsquo; in <code>ffplay</code>, and by the
+<code>avfilter_graph_parse()</code>/<code>avfilter_graph_parse2()</code> function defined in
+&lsquo;<tt>libavfilter/avfilter.h</tt>&rsquo;.
+</p>
+<p>A filterchain consists of a sequence of connected filters, each one
+connected to the previous one in the sequence. A filterchain is
+represented by a list of &quot;,&quot;-separated filter descriptions.
+</p>
+<p>A filtergraph consists of a sequence of filterchains. A sequence of
+filterchains is represented by a list of &quot;;&quot;-separated filterchain
+descriptions.
+</p>
+<p>A filter is represented by a string of the form:
+[<var>in_link_1</var>]...[<var>in_link_N</var>]<var>filter_name</var>=<var>arguments</var>[<var>out_link_1</var>]...[<var>out_link_M</var>]
+</p>
+<p><var>filter_name</var> is the name of the filter class of which the
+described filter is an instance of, and has to be the name of one of
+the filter classes registered in the program.
+The name of the filter class is optionally followed by a string
+&quot;=<var>arguments</var>&quot;.
+</p>
+<p><var>arguments</var> is a string which contains the parameters used to
+initialize the filter instance. It may have one of the following forms:
+</p><ul>
+<li>
+A &rsquo;:&rsquo;-separated list of <var>key=value</var> pairs.
+
+</li><li>
+A &rsquo;:&rsquo;-separated list of <var>value</var>. In this case, the keys are assumed to be
+the option names in the order they are declared. E.g. the <code>fade</code> filter
+declares three options in this order &ndash; &lsquo;<samp>type</samp>&rsquo;, &lsquo;<samp>start_frame</samp>&rsquo; and
+&lsquo;<samp>nb_frames</samp>&rsquo;. Then the parameter list <var>in:0:30</var> means that the value
+<var>in</var> is assigned to the option &lsquo;<samp>type</samp>&rsquo;, <var>0</var> to
+&lsquo;<samp>start_frame</samp>&rsquo; and <var>30</var> to &lsquo;<samp>nb_frames</samp>&rsquo;.
+
+</li><li>
+A &rsquo;:&rsquo;-separated list of mixed direct <var>value</var> and long <var>key=value</var>
+pairs. The direct <var>value</var> must precede the <var>key=value</var> pairs, and
+follow the same constraints order of the previous point. The following
+<var>key=value</var> pairs can be set in any preferred order.
+
+</li></ul>
+
+<p>If the option value itself is a list of items (e.g. the <code>format</code> filter
+takes a list of pixel formats), the items in the list are usually separated by
+&rsquo;|&rsquo;.
+</p>
+<p>The list of arguments can be quoted using the character &quot;&rsquo;&quot; as initial
+and ending mark, and the character &rsquo;\&rsquo; for escaping the characters
+within the quoted text; otherwise the argument string is considered
+terminated when the next special character (belonging to the set
+&quot;[]=;,&quot;) is encountered.
+</p>
+<p>The name and arguments of the filter are optionally preceded and
+followed by a list of link labels.
+A link label allows to name a link and associate it to a filter output
+or input pad. The preceding labels <var>in_link_1</var>
+... <var>in_link_N</var>, are associated to the filter input pads,
+the following labels <var>out_link_1</var> ... <var>out_link_M</var>, are
+associated to the output pads.
+</p>
+<p>When two link labels with the same name are found in the
+filtergraph, a link between the corresponding input and output pad is
+created.
+</p>
+<p>If an output pad is not labelled, it is linked by default to the first
+unlabelled input pad of the next filter in the filterchain.
+For example in the filterchain:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">nullsrc, split[L1], [L2]overlay, nullsink
+</pre></td></tr></table>
+<p>the split filter instance has two output pads, and the overlay filter
+instance two input pads. The first output pad of split is labelled
+&quot;L1&quot;, the first input pad of overlay is labelled &quot;L2&quot;, and the second
+output pad of split is linked to the second input pad of overlay,
+which are both unlabelled.
+</p>
+<p>In a complete filterchain all the unlabelled filter input and output
+pads must be connected. A filtergraph is considered valid if all the
+filter input and output pads of all the filterchains are connected.
+</p>
+<p>Libavfilter will automatically insert <a href="#scale">scale</a> filters where format
+conversion is required. It is possible to specify swscale flags
+for those automatically inserted scalers by prepending
+<code>sws_flags=<var>flags</var>;</code>
+to the filtergraph description.
+</p>
+<p>Follows a BNF description for the filtergraph syntax:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>NAME</var>             ::= sequence of alphanumeric characters and '_'
+<var>LINKLABEL</var>        ::= &quot;[&quot; <var>NAME</var> &quot;]&quot;
+<var>LINKLABELS</var>       ::= <var>LINKLABEL</var> [<var>LINKLABELS</var>]
+<var>FILTER_ARGUMENTS</var> ::= sequence of chars (eventually quoted)
+<var>FILTER</var>           ::= [<var>LINKLABELS</var>] <var>NAME</var> [&quot;=&quot; <var>FILTER_ARGUMENTS</var>] [<var>LINKLABELS</var>]
+<var>FILTERCHAIN</var>      ::= <var>FILTER</var> [,<var>FILTERCHAIN</var>]
+<var>FILTERGRAPH</var>      ::= [sws_flags=<var>flags</var>;] <var>FILTERCHAIN</var> [;<var>FILTERGRAPH</var>]
+</pre></td></tr></table>
+
+<a name="Notes-on-filtergraph-escaping"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-Notes-on-filtergraph-escaping">4.2 Notes on filtergraph escaping</a></h2>
+
+<p>Some filter arguments require the use of special characters, typically
+<code>:</code> to separate key=value pairs in a named options list. In this
+case the user should perform a first level escaping when specifying
+the filter arguments. For example, consider the following literal
+string to be embedded in the <a href="#drawtext">drawtext</a> filter arguments:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">this is a 'string': may contain one, or more, special characters
+</pre></td></tr></table>
+
+<p>Since <code>:</code> is special for the filter arguments syntax, it needs to
+be escaped, so you get:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">text=this is a \'string\'\: may contain one, or more, special characters
+</pre></td></tr></table>
+
+<p>A second level of escaping is required when embedding the filter
+arguments in a filtergraph description, in order to escape all the
+filtergraph special characters. Thus the example above becomes:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">drawtext=text=this is a \\\'string\\\'\\: may contain one\, or more\, special characters
+</pre></td></tr></table>
+
+<p>Finally an additional level of escaping may be needed when writing the
+filtergraph description in a shell command, which depends on the
+escaping rules of the adopted shell. For example, assuming that
+<code>\</code> is special and needs to be escaped with another <code>\</code>, the
+previous string will finally result in:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">-vf &quot;drawtext=text=this is a \\\\\\'string\\\\\\'\\\\: may contain one\\, or more\\, special characters&quot;
+</pre></td></tr></table>
+
+<p>Sometimes, it might be more convenient to employ quoting in place of
+escaping. For example the string:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">Caesar: tu quoque, Brute, fili mi
+</pre></td></tr></table>
+
+<p>Can be quoted in the filter arguments as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">text='Caesar: tu quoque, Brute, fili mi'
+</pre></td></tr></table>
+
+<p>And finally inserted in a filtergraph like:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">drawtext=text=\'Caesar: tu quoque\, Brute\, fili mi\'
+</pre></td></tr></table>
+
+<p>See the &ldquo;Quoting and escaping&rdquo; section in the ffmpeg-utils manual
+for more information about the escaping and quoting rules adopted by
+FFmpeg.
+</p>
+<a name="Timeline-editing"></a>
+<h1 class="chapter"><a href="ffmpeg-filters.html#toc-Timeline-editing">5. Timeline editing</a></h1>
+
+<p>Some filters support a generic &lsquo;<samp>enable</samp>&rsquo; option. For the filters
+supporting timeline editing, this option can be set to an expression which is
+evaluated before sending a frame to the filter. If the evaluation is non-zero,
+the filter will be enabled, otherwise the frame will be sent unchanged to the
+next filter in the filtergraph.
+</p>
+<p>The expression accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>timestamp expressed in seconds, NAN if the input timestamp is unknown
+</p>
+</dd>
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>sequential number of the input frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
+<dd><p>the position in the file of the input frame, NAN if unknown
+</p></dd>
+</dl>
+
+<p>Additionally, these filters support an &lsquo;<samp>enable</samp>&rsquo; command that can be used
+to re-define the expression.
+</p>
+<p>Like any other filtering option, the &lsquo;<samp>enable</samp>&rsquo; option follows the same
+rules.
+</p>
+<p>For example, to enable a blur filter (<a href="#smartblur">smartblur</a>) from 10 seconds to 3
+minutes, and a <a href="#curves">curves</a> filter starting at 3 seconds:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">smartblur = enable='between(t,10,3*60)',
+curves    = enable='gte(t,3)' : preset=cross_process
+</pre></td></tr></table>
+
+
+<a name="Audio-Filters"></a>
+<h1 class="chapter"><a href="ffmpeg-filters.html#toc-Audio-Filters">6. Audio Filters</a></h1>
+
+<p>When you configure your FFmpeg build, you can disable any of the
+existing filters using <code>--disable-filters</code>.
+The configure output will show the audio filters included in your
+build.
+</p>
+<p>Below is a description of the currently available audio filters.
+</p>
+<a name="aconvert"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-aconvert">6.1 aconvert</a></h2>
+
+<p>Convert the input audio format to the specified formats.
+</p>
+<p><em>This filter is deprecated. Use <a href="#aformat">aformat</a> instead.</em>
+</p>
+<p>The filter accepts a string of the form:
+&quot;<var>sample_format</var>:<var>channel_layout</var>&quot;.
+</p>
+<p><var>sample_format</var> specifies the sample format, and can be a string or the
+corresponding numeric value defined in &lsquo;<tt>libavutil/samplefmt.h</tt>&rsquo;. Use &rsquo;p&rsquo;
+suffix for a planar sample format.
+</p>
+<p><var>channel_layout</var> specifies the channel layout, and can be a string
+or the corresponding number value defined in &lsquo;<tt>libavutil/channel_layout.h</tt>&rsquo;.
+</p>
+<p>The special parameter &quot;auto&quot;, signifies that the filter will
+automatically select the output format depending on the output filter.
+</p>
+<a name="Examples-41"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-41">6.1.1 Examples</a></h3>
+
+<ul>
+<li>
+Convert input to float, planar, stereo:
+<table><tr><td>&nbsp;</td><td><pre class="example">aconvert=fltp:stereo
+</pre></td></tr></table>
+
+</li><li>
+Convert input to unsigned 8-bit, automatically select out channel layout:
+<table><tr><td>&nbsp;</td><td><pre class="example">aconvert=u8:auto
+</pre></td></tr></table>
+</li></ul>
+
+<a name="adelay"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-adelay">6.2 adelay</a></h2>
+
+<p>Delay one or more audio channels.
+</p>
+<p>Samples in delayed channel are filled with silence.
+</p>
+<p>The filter accepts the following option:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>delays</samp>&rsquo;</dt>
+<dd><p>Set list of delays in milliseconds for each channel separated by &rsquo;|&rsquo;.
+At least one delay greater than 0 should be provided.
+Unused delays will be silently ignored. If number of given delays is
+smaller than number of channels all remaining channels will not be delayed.
+</p></dd>
+</dl>
+
+<a name="Examples-31"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-31">6.2.1 Examples</a></h3>
+
+<ul>
+<li>
+Delay first channel by 1.5 seconds, the third channel by 0.5 seconds and leave
+the second channel (and any other channels that may be present) unchanged.
+<table><tr><td>&nbsp;</td><td><pre class="example">adelay=1500|0|500
+</pre></td></tr></table>
+</li></ul>
+
+<a name="aecho"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-aecho">6.3 aecho</a></h2>
+
+<p>Apply echoing to the input audio.
+</p>
+<p>Echoes are reflected sound and can occur naturally amongst mountains
+(and sometimes large buildings) when talking or shouting; digital echo
+effects emulate this behaviour and are often used to help fill out the
+sound of a single instrument or vocal. The time difference between the
+original signal and the reflection is the <code>delay</code>, and the
+loudness of the reflected signal is the <code>decay</code>.
+Multiple echoes can have different delays and decays.
+</p>
+<p>A description of the accepted parameters follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>in_gain</samp>&rsquo;</dt>
+<dd><p>Set input gain of reflected signal. Default is <code>0.6</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>out_gain</samp>&rsquo;</dt>
+<dd><p>Set output gain of reflected signal. Default is <code>0.3</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>delays</samp>&rsquo;</dt>
+<dd><p>Set list of time intervals in milliseconds between original signal and reflections
+separated by &rsquo;|&rsquo;. Allowed range for each <code>delay</code> is <code>(0 - 90000.0]</code>.
+Default is <code>1000</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>decays</samp>&rsquo;</dt>
+<dd><p>Set list of loudnesses of reflected signals separated by &rsquo;|&rsquo;.
+Allowed range for each <code>decay</code> is <code>(0 - 1.0]</code>.
+Default is <code>0.5</code>.
+</p></dd>
+</dl>
+
+<a name="Examples-26"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-26">6.3.1 Examples</a></h3>
+
+<ul>
+<li>
+Make it sound as if there are twice as many instruments as are actually playing:
+<table><tr><td>&nbsp;</td><td><pre class="example">aecho=0.8:0.88:60:0.4
+</pre></td></tr></table>
+
+</li><li>
+If delay is very short, then it sound like a (metallic) robot playing music:
+<table><tr><td>&nbsp;</td><td><pre class="example">aecho=0.8:0.88:6:0.4
+</pre></td></tr></table>
+
+</li><li>
+A longer delay will sound like an open air concert in the mountains:
+<table><tr><td>&nbsp;</td><td><pre class="example">aecho=0.8:0.9:1000:0.3
+</pre></td></tr></table>
+
+</li><li>
+Same as above but with one more mountain:
+<table><tr><td>&nbsp;</td><td><pre class="example">aecho=0.8:0.9:1000|1800:0.3|0.25
+</pre></td></tr></table>
+</li></ul>
+
+<a name="aeval"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-aeval">6.4 aeval</a></h2>
+
+<p>Modify an audio signal according to the specified expressions.
+</p>
+<p>This filter accepts one or more expressions (one for each channel),
+which are evaluated and used to modify a corresponding audio signal.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>exprs</samp>&rsquo;</dt>
+<dd><p>Set the &rsquo;|&rsquo;-separated expressions list for each separate channel. If
+the number of input channels is greater than the number of
+expressions, the last specified expression is used for the remaining
+output channels.
+</p>
+</dd>
+<dt> &lsquo;<samp>channel_layout, c</samp>&rsquo;</dt>
+<dd><p>Set output channel layout. If not specified, the channel layout is
+specified by the number of expressions. If set to &lsquo;<samp>same</samp>&rsquo;, it will
+use by default the same input channel layout.
+</p></dd>
+</dl>
+
+<p>Each expression in <var>exprs</var> can contain the following constants and functions:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>ch</samp>&rsquo;</dt>
+<dd><p>channel number of the current expression
+</p>
+</dd>
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>number of the evaluated sample, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>sample rate
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>time of the evaluated sample expressed in seconds
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_in_channels</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>nb_out_channels</samp>&rsquo;</dt>
+<dd><p>input and output number of channels
+</p>
+</dd>
+<dt> &lsquo;<samp>val(CH)</samp>&rsquo;</dt>
+<dd><p>the value of input channel with number <var>CH</var>
+</p></dd>
+</dl>
+
+<p>Note: this filter is slow. For faster processing you should use a
+dedicated filter.
+</p>
+<a name="Examples-49"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-49">6.4.1 Examples</a></h3>
+
+<ul>
+<li>
+Half volume:
+<table><tr><td>&nbsp;</td><td><pre class="example">aeval=val(ch)/2:c=same
+</pre></td></tr></table>
+
+</li><li>
+Invert phase of the second channel:
+<table><tr><td>&nbsp;</td><td><pre class="example">eval=val(0)|-val(1)
+</pre></td></tr></table>
+</li></ul>
+
+<a name="afade"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-afade">6.5 afade</a></h2>
+
+<p>Apply fade-in/out effect to input audio.
+</p>
+<p>A description of the accepted parameters follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>type, t</samp>&rsquo;</dt>
+<dd><p>Specify the effect type, can be either <code>in</code> for fade-in, or
+<code>out</code> for a fade-out effect. Default is <code>in</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_sample, ss</samp>&rsquo;</dt>
+<dd><p>Specify the number of the start sample for starting to apply the fade
+effect. Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_samples, ns</samp>&rsquo;</dt>
+<dd><p>Specify the number of samples for which the fade effect has to last. At
+the end of the fade-in effect the output audio will have the same
+volume as the input audio, at the end of the fade-out transition
+the output audio will be silence. Default is 44100.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_time, st</samp>&rsquo;</dt>
+<dd><p>Specify time for starting to apply the fade effect. Default is 0.
+The accepted syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[-]HH[:MM[:SS[.m...]]]
+[-]S+[.m...]
+</pre></td></tr></table>
+<p>See also the function <code>av_parse_time()</code>.
+If set this option is used instead of <var>start_sample</var> one.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
+<dd><p>Specify the duration for which the fade effect has to last. Default is 0.
+The accepted syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[-]HH[:MM[:SS[.m...]]]
+[-]S+[.m...]
+</pre></td></tr></table>
+<p>See also the function <code>av_parse_time()</code>.
+At the end of the fade-in effect the output audio will have the same
+volume as the input audio, at the end of the fade-out transition
+the output audio will be silence.
+If set this option is used instead of <var>nb_samples</var> one.
+</p>
+</dd>
+<dt> &lsquo;<samp>curve</samp>&rsquo;</dt>
+<dd><p>Set curve for fade transition.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>tri</samp>&rsquo;</dt>
+<dd><p>select triangular, linear slope (default)
+</p></dd>
+<dt> &lsquo;<samp>qsin</samp>&rsquo;</dt>
+<dd><p>select quarter of sine wave
+</p></dd>
+<dt> &lsquo;<samp>hsin</samp>&rsquo;</dt>
+<dd><p>select half of sine wave
+</p></dd>
+<dt> &lsquo;<samp>esin</samp>&rsquo;</dt>
+<dd><p>select exponential sine wave
+</p></dd>
+<dt> &lsquo;<samp>log</samp>&rsquo;</dt>
+<dd><p>select logarithmic
+</p></dd>
+<dt> &lsquo;<samp>par</samp>&rsquo;</dt>
+<dd><p>select inverted parabola
+</p></dd>
+<dt> &lsquo;<samp>qua</samp>&rsquo;</dt>
+<dd><p>select quadratic
+</p></dd>
+<dt> &lsquo;<samp>cub</samp>&rsquo;</dt>
+<dd><p>select cubic
+</p></dd>
+<dt> &lsquo;<samp>squ</samp>&rsquo;</dt>
+<dd><p>select square root
+</p></dd>
+<dt> &lsquo;<samp>cbr</samp>&rsquo;</dt>
+<dd><p>select cubic root
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<a name="Examples-38"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-38">6.5.1 Examples</a></h3>
+
+<ul>
+<li>
+Fade in first 15 seconds of audio:
+<table><tr><td>&nbsp;</td><td><pre class="example">afade=t=in:ss=0:d=15
+</pre></td></tr></table>
+
+</li><li>
+Fade out last 25 seconds of a 900 seconds audio:
+<table><tr><td>&nbsp;</td><td><pre class="example">afade=t=out:st=875:d=25
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="aformat"></a>
+</p><a name="aformat-1"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-aformat-1">6.6 aformat</a></h2>
+
+<p>Set output format constraints for the input audio. The framework will
+negotiate the most appropriate format to minimize conversions.
+</p>
+<p>The filter accepts the following named parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sample_fmts</samp>&rsquo;</dt>
+<dd><p>A &rsquo;|&rsquo;-separated list of requested sample formats.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rates</samp>&rsquo;</dt>
+<dd><p>A &rsquo;|&rsquo;-separated list of requested sample rates.
+</p>
+</dd>
+<dt> &lsquo;<samp>channel_layouts</samp>&rsquo;</dt>
+<dd><p>A &rsquo;|&rsquo;-separated list of requested channel layouts.
+</p>
+<p>See <a href="ffmpeg-utils.html#channel-layout-syntax">(ffmpeg-utils)channel layout syntax</a>
+for the required syntax.
+</p></dd>
+</dl>
+
+<p>If a parameter is omitted, all values are allowed.
+</p>
+<p>For example to force the output to either unsigned 8-bit or signed 16-bit stereo:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">aformat=sample_fmts=u8|s16:channel_layouts=stereo
+</pre></td></tr></table>
+
+<a name="allpass"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-allpass">6.7 allpass</a></h2>
+
+<p>Apply a two-pole all-pass filter with central frequency (in Hz)
+<var>frequency</var>, and filter-width <var>width</var>.
+An all-pass filter changes the audio&rsquo;s frequency to phase relationship
+without changing its frequency to amplitude relationship.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set frequency in Hz.
+</p>
+</dd>
+<dt> &lsquo;<samp>width_type</samp>&rsquo;</dt>
+<dd><p>Set method to specify band-width of filter.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Hz
+</p></dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Q-Factor
+</p></dd>
+<dt> &lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>octave
+</p></dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>slope
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dd><p>Specify the band-width of a filter in width_type units.
+</p></dd>
+</dl>
+
+<a name="amerge"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-amerge">6.8 amerge</a></h2>
+
+<p>Merge two or more audio streams into a single multi-channel stream.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>inputs</samp>&rsquo;</dt>
+<dd><p>Set the number of inputs. Default is 2.
+</p>
+</dd>
+</dl>
+
+<p>If the channel layouts of the inputs are disjoint, and therefore compatible,
+the channel layout of the output will be set accordingly and the channels
+will be reordered as necessary. If the channel layouts of the inputs are not
+disjoint, the output will have all the channels of the first input then all
+the channels of the second input, in that order, and the channel layout of
+the output will be the default value corresponding to the total number of
+channels.
+</p>
+<p>For example, if the first input is in 2.1 (FL+FR+LF) and the second input
+is FC+BL+BR, then the output will be in 5.1, with the channels in the
+following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
+first input, b1 is the first channel of the second input).
+</p>
+<p>On the other hand, if both input are in stereo, the output channels will be
+in the default order: a1, a2, b1, b2, and the channel layout will be
+arbitrarily set to 4.0, which may or may not be the expected value.
+</p>
+<p>All inputs must have the same sample rate, and format.
+</p>
+<p>If inputs do not have the same duration, the output will stop with the
+shortest.
+</p>
+<a name="Examples-5"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-5">6.8.1 Examples</a></h3>
+
+<ul>
+<li>
+Merge two mono files into a stereo stream:
+<table><tr><td>&nbsp;</td><td><pre class="example">amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
+</pre></td></tr></table>
+
+</li><li>
+Multiple merges assuming 1 video stream and 6 audio streams in &lsquo;<tt>input.mkv</tt>&rsquo;:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.mkv -filter_complex &quot;[0:1][0:2][0:3][0:4][0:5][0:6] amerge=inputs=6&quot; -c:a pcm_s16le output.mkv
+</pre></td></tr></table>
+</li></ul>
+
+<a name="amix"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-amix">6.9 amix</a></h2>
+
+<p>Mixes multiple audio inputs into a single output.
+</p>
+<p>For example
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
+</pre></td></tr></table>
+<p>will mix 3 input audio streams to a single output with the same duration as the
+first input and a dropout transition time of 3 seconds.
+</p>
+<p>The filter accepts the following named parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>inputs</samp>&rsquo;</dt>
+<dd><p>Number of inputs. If unspecified, it defaults to 2.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration</samp>&rsquo;</dt>
+<dd><p>How to determine the end-of-stream.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>longest</samp>&rsquo;</dt>
+<dd><p>Duration of longest input. (default)
+</p>
+</dd>
+<dt> &lsquo;<samp>shortest</samp>&rsquo;</dt>
+<dd><p>Duration of shortest input.
+</p>
+</dd>
+<dt> &lsquo;<samp>first</samp>&rsquo;</dt>
+<dd><p>Duration of first input.
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>dropout_transition</samp>&rsquo;</dt>
+<dd><p>Transition time, in seconds, for volume renormalization when an input
+stream ends. The default value is 2 seconds.
+</p>
+</dd>
+</dl>
+
+<a name="anull"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-anull">6.10 anull</a></h2>
+
+<p>Pass the audio source unchanged to the output.
+</p>
+<a name="apad"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-apad">6.11 apad</a></h2>
+
+<p>Pad the end of a audio stream with silence, this can be used together with
+-shortest to extend audio streams to the same length as the video stream.
+</p>
+<a name="aphaser"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-aphaser">6.12 aphaser</a></h2>
+<p>Add a phasing effect to the input audio.
+</p>
+<p>A phaser filter creates series of peaks and troughs in the frequency spectrum.
+The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
+</p>
+<p>A description of the accepted parameters follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>in_gain</samp>&rsquo;</dt>
+<dd><p>Set input gain. Default is 0.4.
+</p>
+</dd>
+<dt> &lsquo;<samp>out_gain</samp>&rsquo;</dt>
+<dd><p>Set output gain. Default is 0.74
+</p>
+</dd>
+<dt> &lsquo;<samp>delay</samp>&rsquo;</dt>
+<dd><p>Set delay in milliseconds. Default is 3.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>decay</samp>&rsquo;</dt>
+<dd><p>Set decay. Default is 0.4.
+</p>
+</dd>
+<dt> &lsquo;<samp>speed</samp>&rsquo;</dt>
+<dd><p>Set modulation speed in Hz. Default is 0.5.
+</p>
+</dd>
+<dt> &lsquo;<samp>type</samp>&rsquo;</dt>
+<dd><p>Set modulation type. Default is triangular.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>triangular, t</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sinusoidal, s</samp>&rsquo;</dt>
+</dl>
+</dd>
+</dl>
+
+<p><a name="aresample"></a>
+</p><a name="aresample-1"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-aresample-1">6.13 aresample</a></h2>
+
+<p>Resample the input audio to the specified parameters, using the
+libswresample library. If none are specified then the filter will
+automatically convert between its input and output.
+</p>
+<p>This filter is also able to stretch/squeeze the audio data to make it match
+the timestamps or to inject silence / cut out audio to make it match the
+timestamps, do a combination of both or do neither.
+</p>
+<p>The filter accepts the syntax
+[<var>sample_rate</var>:]<var>resampler_options</var>, where <var>sample_rate</var>
+expresses a sample rate and <var>resampler_options</var> is a list of
+<var>key</var>=<var>value</var> pairs, separated by &quot;:&quot;. See the
+ffmpeg-resampler manual for the complete list of supported options.
+</p>
+<a name="Examples-62"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-62">6.13.1 Examples</a></h3>
+
+<ul>
+<li>
+Resample the input audio to 44100Hz:
+<table><tr><td>&nbsp;</td><td><pre class="example">aresample=44100
+</pre></td></tr></table>
+
+</li><li>
+Stretch/squeeze samples to the given timestamps, with a maximum of 1000
+samples per second compensation:
+<table><tr><td>&nbsp;</td><td><pre class="example">aresample=async=1000
+</pre></td></tr></table>
+</li></ul>
+
+<a name="asetnsamples"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-asetnsamples">6.14 asetnsamples</a></h2>
+
+<p>Set the number of samples per each output audio frame.
+</p>
+<p>The last output packet may contain a different number of samples, as
+the filter will flush all the remaining samples when the input audio
+signal its end.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>nb_out_samples, n</samp>&rsquo;</dt>
+<dd><p>Set the number of frames per each output audio frame. The number is
+intended as the number of samples <em>per each channel</em>.
+Default value is 1024.
+</p>
+</dd>
+<dt> &lsquo;<samp>pad, p</samp>&rsquo;</dt>
+<dd><p>If set to 1, the filter will pad the last audio frame with zeroes, so
+that the last frame will contain the same number of samples as the
+previous ones. Default value is 1.
+</p></dd>
+</dl>
+
+<p>For example, to set the number of per-frame samples to 1234 and
+disable padding for the last frame, use:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">asetnsamples=n=1234:p=0
+</pre></td></tr></table>
+
+<a name="asetrate"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-asetrate">6.15 asetrate</a></h2>
+
+<p>Set the sample rate without altering the PCM data.
+This will result in a change of speed and pitch.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>sample_rate, r</samp>&rsquo;</dt>
+<dd><p>Set the output sample rate. Default is 44100 Hz.
+</p></dd>
+</dl>
+
+<a name="ashowinfo"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-ashowinfo">6.16 ashowinfo</a></h2>
+
+<p>Show a line containing various information for each input audio frame.
+The input audio is not modified.
+</p>
+<p>The shown line contains a sequence of key/value pairs of the form
+<var>key</var>:<var>value</var>.
+</p>
+<p>A description of each shown parameter follows:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>sequential number of the input frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
+<dd><p>Presentation timestamp of the input frame, in time base units; the time base
+depends on the filter input pad, and is usually 1/<var>sample_rate</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>pts_time</samp>&rsquo;</dt>
+<dd><p>presentation timestamp of the input frame in seconds
+</p>
+</dd>
+<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
+<dd><p>position of the frame in the input stream, -1 if this information in
+unavailable and/or meaningless (for example in case of synthetic audio)
+</p>
+</dd>
+<dt> &lsquo;<samp>fmt</samp>&rsquo;</dt>
+<dd><p>sample format
+</p>
+</dd>
+<dt> &lsquo;<samp>chlayout</samp>&rsquo;</dt>
+<dd><p>channel layout
+</p>
+</dd>
+<dt> &lsquo;<samp>rate</samp>&rsquo;</dt>
+<dd><p>sample rate for the audio frame
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_samples</samp>&rsquo;</dt>
+<dd><p>number of samples (per channel) in the frame
+</p>
+</dd>
+<dt> &lsquo;<samp>checksum</samp>&rsquo;</dt>
+<dd><p>Adler-32 checksum (printed in hexadecimal) of the audio data. For planar audio
+the data is treated as if all the planes were concatenated.
+</p>
+</dd>
+<dt> &lsquo;<samp>plane_checksums</samp>&rsquo;</dt>
+<dd><p>A list of Adler-32 checksums for each data plane.
+</p></dd>
+</dl>
+
+<a name="astats"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-astats">6.17 astats</a></h2>
+
+<p>Display time domain statistical information about the audio channels.
+Statistics are calculated and displayed for each audio channel and,
+where applicable, an overall figure is also given.
+</p>
+<p>The filter accepts the following option:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>length</samp>&rsquo;</dt>
+<dd><p>Short window length in seconds, used for peak and trough RMS measurement.
+Default is <code>0.05</code> (50 miliseconds). Allowed range is <code>[0.1 - 10]</code>.
+</p></dd>
+</dl>
+
+<p>A description of each shown parameter follows:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>DC offset</samp>&rsquo;</dt>
+<dd><p>Mean amplitude displacement from zero.
+</p>
+</dd>
+<dt> &lsquo;<samp>Min level</samp>&rsquo;</dt>
+<dd><p>Minimal sample level.
+</p>
+</dd>
+<dt> &lsquo;<samp>Max level</samp>&rsquo;</dt>
+<dd><p>Maximal sample level.
+</p>
+</dd>
+<dt> &lsquo;<samp>Peak level dB</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>RMS level dB</samp>&rsquo;</dt>
+<dd><p>Standard peak and RMS level measured in dBFS.
+</p>
+</dd>
+<dt> &lsquo;<samp>RMS peak dB</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>RMS trough dB</samp>&rsquo;</dt>
+<dd><p>Peak and trough values for RMS level measured over a short window.
+</p>
+</dd>
+<dt> &lsquo;<samp>Crest factor</samp>&rsquo;</dt>
+<dd><p>Standard ratio of peak to RMS level (note: not in dB).
+</p>
+</dd>
+<dt> &lsquo;<samp>Flat factor</samp>&rsquo;</dt>
+<dd><p>Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
+(i.e. either <var>Min level</var> or <var>Max level</var>).
+</p>
+</dd>
+<dt> &lsquo;<samp>Peak count</samp>&rsquo;</dt>
+<dd><p>Number of occasions (not the number of samples) that the signal attained either
+<var>Min level</var> or <var>Max level</var>.
+</p></dd>
+</dl>
+
+<a name="astreamsync"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-astreamsync">6.18 astreamsync</a></h2>
+
+<p>Forward two audio streams and control the order the buffers are forwarded.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>expr, e</samp>&rsquo;</dt>
+<dd><p>Set the expression deciding which stream should be
+forwarded next: if the result is negative, the first stream is forwarded; if
+the result is positive or zero, the second stream is forwarded. It can use
+the following variables:
+</p>
+<dl compact="compact">
+<dt> <var>b1 b2</var></dt>
+<dd><p>number of buffers forwarded so far on each stream
+</p></dd>
+<dt> <var>s1 s2</var></dt>
+<dd><p>number of samples forwarded so far on each stream
+</p></dd>
+<dt> <var>t1 t2</var></dt>
+<dd><p>current timestamp of each stream
+</p></dd>
+</dl>
+
+<p>The default value is <code>t1-t2</code>, which means to always forward the stream
+that has a smaller timestamp.
+</p></dd>
+</dl>
+
+<a name="Examples-68"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-68">6.18.1 Examples</a></h3>
+
+<p>Stress-test <code>amerge</code> by randomly sending buffers on the wrong
+input, while avoiding too much of a desynchronization:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">amovie=file.ogg [a] ; amovie=file.mp3 [b] ;
+[a] [b] astreamsync=(2*random(1))-1+tanh(5*(t1-t2)) [a2] [b2] ;
+[a2] [b2] amerge
+</pre></td></tr></table>
+
+<a name="asyncts"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-asyncts">6.19 asyncts</a></h2>
+
+<p>Synchronize audio data with timestamps by squeezing/stretching it and/or
+dropping samples/adding silence when needed.
+</p>
+<p>This filter is not built by default, please use <a href="#aresample">aresample</a> to do squeezing/stretching.
+</p>
+<p>The filter accepts the following named parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>compensate</samp>&rsquo;</dt>
+<dd><p>Enable stretching/squeezing the data to make it match the timestamps. Disabled
+by default. When disabled, time gaps are covered with silence.
+</p>
+</dd>
+<dt> &lsquo;<samp>min_delta</samp>&rsquo;</dt>
+<dd><p>Minimum difference between timestamps and audio data (in seconds) to trigger
+adding/dropping samples. Default value is 0.1. If you get non-perfect sync with
+this filter, try setting this parameter to 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>max_comp</samp>&rsquo;</dt>
+<dd><p>Maximum compensation in samples per second. Relevant only with compensate=1.
+Default value 500.
+</p>
+</dd>
+<dt> &lsquo;<samp>first_pts</samp>&rsquo;</dt>
+<dd><p>Assume the first pts should be this value. The time base is 1 / sample rate.
+This allows for padding/trimming at the start of stream. By default, no
+assumption is made about the first frame&rsquo;s expected pts, so no padding or
+trimming is done. For example, this could be set to 0 to pad the beginning with
+silence if an audio stream starts after the video stream or to trim any samples
+with a negative pts due to encoder delay.
+</p>
+</dd>
+</dl>
+
+<a name="atempo"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-atempo">6.20 atempo</a></h2>
+
+<p>Adjust audio tempo.
+</p>
+<p>The filter accepts exactly one parameter, the audio tempo. If not
+specified then the filter will assume nominal 1.0 tempo. Tempo must
+be in the [0.5, 2.0] range.
+</p>
+<a name="Examples-71"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-71">6.20.1 Examples</a></h3>
+
+<ul>
+<li>
+Slow down audio to 80% tempo:
+<table><tr><td>&nbsp;</td><td><pre class="example">atempo=0.8
+</pre></td></tr></table>
+
+</li><li>
+To speed up audio to 125% tempo:
+<table><tr><td>&nbsp;</td><td><pre class="example">atempo=1.25
+</pre></td></tr></table>
+</li></ul>
+
+<a name="atrim"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-atrim">6.21 atrim</a></h2>
+
+<p>Trim the input so that the output contains one continuous subpart of the input.
+</p>
+<p>This filter accepts the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>start</samp>&rsquo;</dt>
+<dd><p>Specify time of the start of the kept section, i.e. the audio sample
+with the timestamp <var>start</var> will be the first sample in the output.
+</p>
+</dd>
+<dt> &lsquo;<samp>end</samp>&rsquo;</dt>
+<dd><p>Specify time of the first audio sample that will be dropped, i.e. the
+audio sample immediately preceding the one with the timestamp <var>end</var> will be
+the last sample in the output.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_pts</samp>&rsquo;</dt>
+<dd><p>Same as <var>start</var>, except this option sets the start timestamp in samples
+instead of seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>end_pts</samp>&rsquo;</dt>
+<dd><p>Same as <var>end</var>, except this option sets the end timestamp in samples instead
+of seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration</samp>&rsquo;</dt>
+<dd><p>Specify maximum duration of the output.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_sample</samp>&rsquo;</dt>
+<dd><p>Number of the first sample that should be passed to output.
+</p>
+</dd>
+<dt> &lsquo;<samp>end_sample</samp>&rsquo;</dt>
+<dd><p>Number of the first sample that should be dropped.
+</p></dd>
+</dl>
+
+<p>&lsquo;<samp>start</samp>&rsquo;, &lsquo;<samp>end</samp>&rsquo;, &lsquo;<samp>duration</samp>&rsquo; are expressed as time
+duration specifications, check the &quot;Time duration&quot; section in the
+ffmpeg-utils manual.
+</p>
+<p>Note that the first two sets of the start/end options and the &lsquo;<samp>duration</samp>&rsquo;
+option look at the frame timestamp, while the _sample options simply count the
+samples that pass through the filter. So start/end_pts and start/end_sample will
+give different results when the timestamps are wrong, inexact or do not start at
+zero. Also note that this filter does not modify the timestamps. If you wish
+that the output timestamps start at zero, insert the asetpts filter after the
+atrim filter.
+</p>
+<p>If multiple start or end options are set, this filter tries to be greedy and
+keep all samples that match at least one of the specified constraints. To keep
+only the part that matches all the constraints at once, chain multiple atrim
+filters.
+</p>
+<p>The defaults are such that all the input is kept. So it is possible to set e.g.
+just the end values to keep everything before the specified time.
+</p>
+<p>Examples:
+</p><ul>
+<li>
+drop everything except the second minute of input
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -af atrim=60:120
+</pre></td></tr></table>
+
+</li><li>
+keep only the first 1000 samples
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -af atrim=end_sample=1000
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="bandpass"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-bandpass">6.22 bandpass</a></h2>
+
+<p>Apply a two-pole Butterworth band-pass filter with central
+frequency <var>frequency</var>, and (3dB-point) band-width width.
+The <var>csg</var> option selects a constant skirt gain (peak gain = Q)
+instead of the default: constant 0dB peak gain.
+The filter roll off at 6dB per octave (20dB per decade).
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set the filter&rsquo;s central frequency. Default is <code>3000</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>csg</samp>&rsquo;</dt>
+<dd><p>Constant skirt gain if set to 1. Defaults to 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>width_type</samp>&rsquo;</dt>
+<dd><p>Set method to specify band-width of filter.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Hz
+</p></dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Q-Factor
+</p></dd>
+<dt> &lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>octave
+</p></dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>slope
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dd><p>Specify the band-width of a filter in width_type units.
+</p></dd>
+</dl>
+
+<a name="bandreject"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-bandreject">6.23 bandreject</a></h2>
+
+<p>Apply a two-pole Butterworth band-reject filter with central
+frequency <var>frequency</var>, and (3dB-point) band-width <var>width</var>.
+The filter roll off at 6dB per octave (20dB per decade).
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set the filter&rsquo;s central frequency. Default is <code>3000</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>width_type</samp>&rsquo;</dt>
+<dd><p>Set method to specify band-width of filter.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Hz
+</p></dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Q-Factor
+</p></dd>
+<dt> &lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>octave
+</p></dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>slope
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dd><p>Specify the band-width of a filter in width_type units.
+</p></dd>
+</dl>
+
+<a name="bass"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-bass">6.24 bass</a></h2>
+
+<p>Boost or cut the bass (lower) frequencies of the audio using a two-pole
+shelving filter with a response similar to that of a standard
+hi-fi&rsquo;s tone-controls. This is also known as shelving equalisation (EQ).
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>gain, g</samp>&rsquo;</dt>
+<dd><p>Give the gain at 0 Hz. Its useful range is about -20
+(for a large cut) to +20 (for a large boost).
+Beware of clipping when using a positive gain.
+</p>
+</dd>
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set the filter&rsquo;s central frequency and so can be used
+to extend or reduce the frequency range to be boosted or cut.
+The default value is <code>100</code> Hz.
+</p>
+</dd>
+<dt> &lsquo;<samp>width_type</samp>&rsquo;</dt>
+<dd><p>Set method to specify band-width of filter.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Hz
+</p></dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Q-Factor
+</p></dd>
+<dt> &lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>octave
+</p></dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>slope
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dd><p>Determine how steep is the filter&rsquo;s shelf transition.
+</p></dd>
+</dl>
+
+<a name="biquad"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-biquad">6.25 biquad</a></h2>
+
+<p>Apply a biquad IIR filter with the given coefficients.
+Where <var>b0</var>, <var>b1</var>, <var>b2</var> and <var>a0</var>, <var>a1</var>, <var>a2</var>
+are the numerator and denominator coefficients respectively.
+</p>
+<a name="channelmap"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-channelmap">6.26 channelmap</a></h2>
+
+<p>Remap input channels to new locations.
+</p>
+<p>This filter accepts the following named parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>channel_layout</samp>&rsquo;</dt>
+<dd><p>Channel layout of the output stream.
+</p>
+</dd>
+<dt> &lsquo;<samp>map</samp>&rsquo;</dt>
+<dd><p>Map channels from input to output. The argument is a &rsquo;|&rsquo;-separated list of
+mappings, each in the <code><var>in_channel</var>-<var>out_channel</var></code> or
+<var>in_channel</var> form. <var>in_channel</var> can be either the name of the input
+channel (e.g. FL for front left) or its index in the input channel layout.
+<var>out_channel</var> is the name of the output channel or its index in the output
+channel layout. If <var>out_channel</var> is not given then it is implicitly an
+index, starting with zero and increasing by one for each mapping.
+</p></dd>
+</dl>
+
+<p>If no mapping is present, the filter will implicitly map input channels to
+output channels preserving index.
+</p>
+<p>For example, assuming a 5.1+downmix input MOV file
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
+</pre></td></tr></table>
+<p>will create an output WAV file tagged as stereo from the downmix channels of
+the input.
+</p>
+<p>To fix a 5.1 WAV improperly encoded in AAC&rsquo;s native channel order
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:channel_layout=5.1' out.wav
+</pre></td></tr></table>
+
+<a name="channelsplit"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-channelsplit">6.27 channelsplit</a></h2>
+
+<p>Split each channel in input audio stream into a separate output stream.
+</p>
+<p>This filter accepts the following named parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>channel_layout</samp>&rsquo;</dt>
+<dd><p>Channel layout of the input stream. Default is &quot;stereo&quot;.
+</p></dd>
+</dl>
+
+<p>For example, assuming a stereo input MP3 file
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
+</pre></td></tr></table>
+<p>will create an output Matroska file with two audio streams, one containing only
+the left channel and the other the right channel.
+</p>
+<p>To split a 5.1 WAV file into per-channel files
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.wav -filter_complex
+'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
+-map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
+front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
+side_right.wav
+</pre></td></tr></table>
+
+<a name="compand"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-compand">6.28 compand</a></h2>
+
+<p>Compress or expand audio dynamic range.
+</p>
+<p>A description of the accepted options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>attacks</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>decays</samp>&rsquo;</dt>
+<dd><p>Set list of times in seconds for each channel over which the instantaneous
+level of the input signal is averaged to determine its volume.
+&lsquo;<samp>attacks</samp>&rsquo; refers to increase of volume and &lsquo;<samp>decays</samp>&rsquo; refers
+to decrease of volume.
+For most situations, the attack time (response to the audio getting louder)
+should be shorter than the decay time because the human ear is more sensitive
+to sudden loud audio than sudden soft audio.
+Typical value for attack is <code>0.3</code> seconds and for decay <code>0.8</code>
+seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>points</samp>&rsquo;</dt>
+<dd><p>Set list of points for transfer function, specified in dB relative to maximum
+possible signal amplitude.
+Each key points list need to be defined using the following syntax:
+<code>x0/y0 x1/y1 x2/y2 ...</code>.
+</p>
+<p>The input values must be in strictly increasing order but the transfer
+function does not have to be monotonically rising.
+The point <code>0/0</code> is assumed but may be overridden (by <code>0/out-dBn</code>).
+Typical values for the transfer function are <code>-70/-70 -60/-20</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>soft-knee</samp>&rsquo;</dt>
+<dd><p>Set amount for which the points at where adjacent line segments on the
+transfer function meet will be rounded. Defaults is <code>0.01</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>gain</samp>&rsquo;</dt>
+<dd><p>Set additional gain in dB to be applied at all points on the transfer function
+and allows easy adjustment of the overall gain.
+Default is <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>volume</samp>&rsquo;</dt>
+<dd><p>Set initial volume in dB to be assumed for each channel when filtering starts.
+This permits the user to supply a nominal level initially, so that,
+for example, a very large gain is not applied to initial signal levels before
+the companding has begun to operate. A typical value for audio which is
+initially quiet is -90 dB. Default is <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>delay</samp>&rsquo;</dt>
+<dd><p>Set delay in seconds. Default is <code>0</code>. The input audio
+is analysed immediately, but audio is delayed before being fed to the
+volume adjuster. Specifying a delay approximately equal to the attack/decay
+times allows the filter to effectively operate in predictive rather than
+reactive mode.
+</p></dd>
+</dl>
+
+<a name="Examples-24"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-24">6.28.1 Examples</a></h3>
+<ul>
+<li>
+Make music with both quiet and loud passages suitable for listening
+in a noisy environment:
+<table><tr><td>&nbsp;</td><td><pre class="example">compand=.3 .3:1 1:-90/-60 -60/-40 -40/-30 -20/-20:6:0:-90:0.2
+</pre></td></tr></table>
+
+</li><li>
+Noise-gate for when the noise is at a lower level than the signal:
+<table><tr><td>&nbsp;</td><td><pre class="example">compand=.1 .1:.2 .2:-900/-900 -50.1/-900 -50/-50:.01:0:-90:.1
+</pre></td></tr></table>
+
+</li><li>
+Here is another noise-gate, this time for when the noise is at a higher level
+than the signal (making it, in some ways, similar to squelch):
+<table><tr><td>&nbsp;</td><td><pre class="example">compand=.1 .1:.1 .1:-45.1/-45.1 -45/-900 0/-900:.01:45:-90:.1
+</pre></td></tr></table>
+</li></ul>
+
+<a name="earwax"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-earwax">6.29 earwax</a></h2>
+
+<p>Make audio easier to listen to on headphones.
+</p>
+<p>This filter adds &lsquo;cues&rsquo; to 44.1kHz stereo (i.e. audio CD format) audio
+so that when listened to on headphones the stereo image is moved from
+inside your head (standard for headphones) to outside and in front of
+the listener (standard for speakers).
+</p>
+<p>Ported from SoX.
+</p>
+<a name="equalizer"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-equalizer">6.30 equalizer</a></h2>
+
+<p>Apply a two-pole peaking equalisation (EQ) filter. With this
+filter, the signal-level at and around a selected frequency can
+be increased or decreased, whilst (unlike bandpass and bandreject
+filters) that at all other frequencies is unchanged.
+</p>
+<p>In order to produce complex equalisation curves, this filter can
+be given several times, each with a different central frequency.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set the filter&rsquo;s central frequency in Hz.
+</p>
+</dd>
+<dt> &lsquo;<samp>width_type</samp>&rsquo;</dt>
+<dd><p>Set method to specify band-width of filter.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Hz
+</p></dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Q-Factor
+</p></dd>
+<dt> &lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>octave
+</p></dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>slope
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dd><p>Specify the band-width of a filter in width_type units.
+</p>
+</dd>
+<dt> &lsquo;<samp>gain, g</samp>&rsquo;</dt>
+<dd><p>Set the required gain or attenuation in dB.
+Beware of clipping when using a positive gain.
+</p></dd>
+</dl>
+
+<a name="highpass"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-highpass">6.31 highpass</a></h2>
+
+<p>Apply a high-pass filter with 3dB point frequency.
+The filter can be either single-pole, or double-pole (the default).
+The filter roll off at 6dB per pole per octave (20dB per pole per decade).
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set frequency in Hz. Default is 3000.
+</p>
+</dd>
+<dt> &lsquo;<samp>poles, p</samp>&rsquo;</dt>
+<dd><p>Set number of poles. Default is 2.
+</p>
+</dd>
+<dt> &lsquo;<samp>width_type</samp>&rsquo;</dt>
+<dd><p>Set method to specify band-width of filter.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Hz
+</p></dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Q-Factor
+</p></dd>
+<dt> &lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>octave
+</p></dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>slope
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dd><p>Specify the band-width of a filter in width_type units.
+Applies only to double-pole filter.
+The default is 0.707q and gives a Butterworth response.
+</p></dd>
+</dl>
+
+<a name="join"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-join">6.32 join</a></h2>
+
+<p>Join multiple input streams into one multi-channel stream.
+</p>
+<p>The filter accepts the following named parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>inputs</samp>&rsquo;</dt>
+<dd><p>Number of input streams. Defaults to 2.
+</p>
+</dd>
+<dt> &lsquo;<samp>channel_layout</samp>&rsquo;</dt>
+<dd><p>Desired output channel layout. Defaults to stereo.
+</p>
+</dd>
+<dt> &lsquo;<samp>map</samp>&rsquo;</dt>
+<dd><p>Map channels from inputs to output. The argument is a &rsquo;|&rsquo;-separated list of
+mappings, each in the <code><var>input_idx</var>.<var>in_channel</var>-<var>out_channel</var></code>
+form. <var>input_idx</var> is the 0-based index of the input stream. <var>in_channel</var>
+can be either the name of the input channel (e.g. FL for front left) or its
+index in the specified input stream. <var>out_channel</var> is the name of the output
+channel.
+</p></dd>
+</dl>
+
+<p>The filter will attempt to guess the mappings when those are not specified
+explicitly. It does so by first trying to find an unused matching input channel
+and if that fails it picks the first unused input channel.
+</p>
+<p>E.g. to join 3 inputs (with properly set channel layouts)
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
+</pre></td></tr></table>
+
+<p>To build a 5.1 output from 6 single-channel streams:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
+'join=inputs=6:channel_layout=5.1:map=0.0-FL|1.0-FR|2.0-FC|3.0-SL|4.0-SR|5.0-LFE'
+out
+</pre></td></tr></table>
+
+<a name="ladspa"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-ladspa">6.33 ladspa</a></h2>
+
+<p>Load a LADSPA (Linux Audio Developer&rsquo;s Simple Plugin API) plugin.
+</p>
+<p>To enable compilation of this filter you need to configure FFmpeg with
+<code>--enable-ladspa</code>.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>file, f</samp>&rsquo;</dt>
+<dd><p>Specifies the name of LADSPA plugin library to load. If the environment
+variable <code>LADSPA_PATH</code> is defined, the LADSPA plugin is searched in
+each one of the directories specified by the colon separated list in
+<code>LADSPA_PATH</code>, otherwise in the standard LADSPA paths, which are in
+this order: &lsquo;<tt>HOME/.ladspa/lib/</tt>&rsquo;, &lsquo;<tt>/usr/local/lib/ladspa/</tt>&rsquo;,
+&lsquo;<tt>/usr/lib/ladspa/</tt>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>plugin, p</samp>&rsquo;</dt>
+<dd><p>Specifies the plugin within the library. Some libraries contain only
+one plugin, but others contain many of them. If this is not set filter
+will list all available plugins within the specified library.
+</p>
+</dd>
+<dt> &lsquo;<samp>controls, c</samp>&rsquo;</dt>
+<dd><p>Set the &rsquo;|&rsquo; separated list of controls which are zero or more floating point
+values that determine the behavior of the loaded plugin (for example delay,
+threshold or gain).
+Controls need to be defined using the following syntax:
+c0=<var>value0</var>|c1=<var>value1</var>|c2=<var>value2</var>|..., where
+<var>valuei</var> is the value set on the <var>i</var>-th control.
+If &lsquo;<samp>controls</samp>&rsquo; is set to <code>help</code>, all available controls and
+their valid ranges are printed.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate, s</samp>&rsquo;</dt>
+<dd><p>Specify the sample rate, default to 44100. Only used if plugin have
+zero inputs.
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_samples, n</samp>&rsquo;</dt>
+<dd><p>Set the number of samples per channel per each output frame, default
+is 1024. Only used if plugin have zero inputs.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
+<dd><p>Set the minimum duration of the sourced audio. See the function
+<code>av_parse_time()</code> for the accepted format, also check the &quot;Time duration&quot;
+section in the ffmpeg-utils manual.
+Note that the resulting duration may be greater than the specified duration,
+as the generated audio is always cut at the end of a complete frame.
+If not specified, or the expressed duration is negative, the audio is
+supposed to be generated forever.
+Only used if plugin have zero inputs.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-23"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-23">6.33.1 Examples</a></h3>
+
+<ul>
+<li>
+List all available plugins within amp (LADSPA example plugin) library:
+<table><tr><td>&nbsp;</td><td><pre class="example">ladspa=file=amp
+</pre></td></tr></table>
+
+</li><li>
+List all available controls and their valid ranges for <code>vcf_notch</code>
+plugin from <code>VCF</code> library:
+<table><tr><td>&nbsp;</td><td><pre class="example">ladspa=f=vcf:p=vcf_notch:c=help
+</pre></td></tr></table>
+
+</li><li>
+Simulate low quality audio equipment using <code>Computer Music Toolkit</code> (CMT)
+plugin library:
+<table><tr><td>&nbsp;</td><td><pre class="example">ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
+</pre></td></tr></table>
+
+</li><li>
+Add reverberation to the audio using TAP-plugins
+(Tom&rsquo;s Audio Processing plugins):
+<table><tr><td>&nbsp;</td><td><pre class="example">ladspa=file=tap_reverb:tap_reverb
+</pre></td></tr></table>
+
+</li><li>
+Generate white noise, with 0.2 amplitude:
+<table><tr><td>&nbsp;</td><td><pre class="example">ladspa=file=cmt:noise_source_white:c=c0=.2
+</pre></td></tr></table>
+
+</li><li>
+Generate 20 bpm clicks using plugin <code>C* Click - Metronome</code> from the
+<code>C* Audio Plugin Suite</code> (CAPS) library:
+<table><tr><td>&nbsp;</td><td><pre class="example">ladspa=file=caps:Click:c=c1=20'
+</pre></td></tr></table>
+
+</li><li>
+Apply <code>C* Eq10X2 - Stereo 10-band equaliser</code> effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
+</pre></td></tr></table>
+</li></ul>
+
+<a name="Commands-2"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Commands-2">6.33.2 Commands</a></h3>
+
+<p>This filter supports the following commands:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>cN</samp>&rsquo;</dt>
+<dd><p>Modify the <var>N</var>-th control value.
+</p>
+<p>If the specified value is not valid, it is ignored and prior one is kept.
+</p></dd>
+</dl>
+
+<a name="lowpass"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-lowpass">6.34 lowpass</a></h2>
+
+<p>Apply a low-pass filter with 3dB point frequency.
+The filter can be either single-pole or double-pole (the default).
+The filter roll off at 6dB per pole per octave (20dB per pole per decade).
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set frequency in Hz. Default is 500.
+</p>
+</dd>
+<dt> &lsquo;<samp>poles, p</samp>&rsquo;</dt>
+<dd><p>Set number of poles. Default is 2.
+</p>
+</dd>
+<dt> &lsquo;<samp>width_type</samp>&rsquo;</dt>
+<dd><p>Set method to specify band-width of filter.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Hz
+</p></dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Q-Factor
+</p></dd>
+<dt> &lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>octave
+</p></dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>slope
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dd><p>Specify the band-width of a filter in width_type units.
+Applies only to double-pole filter.
+The default is 0.707q and gives a Butterworth response.
+</p></dd>
+</dl>
+
+<a name="pan"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-pan">6.35 pan</a></h2>
+
+<p>Mix channels with specific gain levels. The filter accepts the output
+channel layout followed by a set of channels definitions.
+</p>
+<p>This filter is also designed to remap efficiently the channels of an audio
+stream.
+</p>
+<p>The filter accepts parameters of the form:
+&quot;<var>l</var>:<var>outdef</var>:<var>outdef</var>:...&quot;
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>l</samp>&rsquo;</dt>
+<dd><p>output channel layout or number of channels
+</p>
+</dd>
+<dt> &lsquo;<samp>outdef</samp>&rsquo;</dt>
+<dd><p>output channel specification, of the form:
+&quot;<var>out_name</var>=[<var>gain</var>*]<var>in_name</var>[+[<var>gain</var>*]<var>in_name</var>...]&quot;
+</p>
+</dd>
+<dt> &lsquo;<samp>out_name</samp>&rsquo;</dt>
+<dd><p>output channel to define, either a channel name (FL, FR, etc.) or a channel
+number (c0, c1, etc.)
+</p>
+</dd>
+<dt> &lsquo;<samp>gain</samp>&rsquo;</dt>
+<dd><p>multiplicative coefficient for the channel, 1 leaving the volume unchanged
+</p>
+</dd>
+<dt> &lsquo;<samp>in_name</samp>&rsquo;</dt>
+<dd><p>input channel to use, see out_name for details; it is not possible to mix
+named and numbered input channels
+</p></dd>
+</dl>
+
+<p>If the &lsquo;=&rsquo; in a channel specification is replaced by &lsquo;&lt;&rsquo;, then the gains for
+that specification will be renormalized so that the total is 1, thus
+avoiding clipping noise.
+</p>
+<a name="Mixing-examples"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Mixing-examples">6.35.1 Mixing examples</a></h3>
+
+<p>For example, if you want to down-mix from stereo to mono, but with a bigger
+factor for the left channel:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pan=1:c0=0.9*c0+0.1*c1
+</pre></td></tr></table>
+
+<p>A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
+7-channels surround:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pan=stereo: FL &lt; FL + 0.5*FC + 0.6*BL + 0.6*SL : FR &lt; FR + 0.5*FC + 0.6*BR + 0.6*SR
+</pre></td></tr></table>
+
+<p>Note that <code>ffmpeg</code> integrates a default down-mix (and up-mix) system
+that should be preferred (see &quot;-ac&quot; option) unless you have very specific
+needs.
+</p>
+<a name="Remapping-examples"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Remapping-examples">6.35.2 Remapping examples</a></h3>
+
+<p>The channel remapping will be effective if, and only if:
+</p>
+<ul>
+<li> gain coefficients are zeroes or ones,
+</li><li> only one input per channel output,
+</li></ul>
+
+<p>If all these conditions are satisfied, the filter will notify the user (&quot;Pure
+channel mapping detected&quot;), and use an optimized and lossless method to do the
+remapping.
+</p>
+<p>For example, if you have a 5.1 source and want a stereo audio stream by
+dropping the extra channels:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pan=&quot;stereo: c0=FL : c1=FR&quot;
+</pre></td></tr></table>
+
+<p>Given the same source, you can also switch front left and front right channels
+and keep the input channel layout:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pan=&quot;5.1: c0=c1 : c1=c0 : c2=c2 : c3=c3 : c4=c4 : c5=c5&quot;
+</pre></td></tr></table>
+
+<p>If the input is a stereo audio stream, you can mute the front left channel (and
+still keep the stereo channel layout) with:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pan=&quot;stereo:c1=c1&quot;
+</pre></td></tr></table>
+
+<p>Still with a stereo audio stream input, you can copy the right channel in both
+front left and right:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pan=&quot;stereo: c0=FR : c1=FR&quot;
+</pre></td></tr></table>
+
+<a name="replaygain"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-replaygain">6.36 replaygain</a></h2>
+
+<p>ReplayGain scanner filter. This filter takes an audio stream as an input and
+outputs it unchanged.
+At end of filtering it displays <code>track_gain</code> and <code>track_peak</code>.
+</p>
+<a name="resample"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-resample">6.37 resample</a></h2>
+
+<p>Convert the audio sample format, sample rate and channel layout. This filter is
+not meant to be used directly.
+</p>
+<a name="silencedetect"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-silencedetect">6.38 silencedetect</a></h2>
+
+<p>Detect silence in an audio stream.
+</p>
+<p>This filter logs a message when it detects that the input audio volume is less
+or equal to a noise tolerance value for a duration greater or equal to the
+minimum detected noise duration.
+</p>
+<p>The printed times and duration are expressed in seconds.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
+<dd><p>Set silence duration until notification (default is 2 seconds).
+</p>
+</dd>
+<dt> &lsquo;<samp>noise, n</samp>&rsquo;</dt>
+<dd><p>Set noise tolerance. Can be specified in dB (in case &quot;dB&quot; is appended to the
+specified value) or amplitude ratio. Default is -60dB, or 0.001.
+</p></dd>
+</dl>
+
+<a name="Examples-66"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-66">6.38.1 Examples</a></h3>
+
+<ul>
+<li>
+Detect 5 seconds of silence with -50dB noise tolerance:
+<table><tr><td>&nbsp;</td><td><pre class="example">silencedetect=n=-50dB:d=5
+</pre></td></tr></table>
+
+</li><li>
+Complete example with <code>ffmpeg</code> to detect silence with 0.0001 noise
+tolerance in &lsquo;<tt>silence.mp3</tt>&rsquo;:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
+</pre></td></tr></table>
+</li></ul>
+
+<a name="treble"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-treble">6.39 treble</a></h2>
+
+<p>Boost or cut treble (upper) frequencies of the audio using a two-pole
+shelving filter with a response similar to that of a standard
+hi-fi&rsquo;s tone-controls. This is also known as shelving equalisation (EQ).
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>gain, g</samp>&rsquo;</dt>
+<dd><p>Give the gain at whichever is the lower of ~22 kHz and the
+Nyquist frequency. Its useful range is about -20 (for a large cut)
+to +20 (for a large boost). Beware of clipping when using a positive gain.
+</p>
+</dd>
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set the filter&rsquo;s central frequency and so can be used
+to extend or reduce the frequency range to be boosted or cut.
+The default value is <code>3000</code> Hz.
+</p>
+</dd>
+<dt> &lsquo;<samp>width_type</samp>&rsquo;</dt>
+<dd><p>Set method to specify band-width of filter.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Hz
+</p></dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Q-Factor
+</p></dd>
+<dt> &lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>octave
+</p></dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>slope
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dd><p>Determine how steep is the filter&rsquo;s shelf transition.
+</p></dd>
+</dl>
+
+<a name="volume"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-volume">6.40 volume</a></h2>
+
+<p>Adjust the input audio volume.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>volume</samp>&rsquo;</dt>
+<dd><p>Expresses how the audio volume will be increased or decreased.
+</p>
+<p>Output values are clipped to the maximum value.
+</p>
+<p>The output audio volume is given by the relation:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>output_volume</var> = <var>volume</var> * <var>input_volume</var>
+</pre></td></tr></table>
+
+<p>Default value for <var>volume</var> is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>precision</samp>&rsquo;</dt>
+<dd><p>Set the mathematical precision.
+</p>
+<p>This determines which input sample formats will be allowed, which affects the
+precision of the volume scaling.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>fixed</samp>&rsquo;</dt>
+<dd><p>8-bit fixed-point; limits input sample format to U8, S16, and S32.
+</p></dd>
+<dt> &lsquo;<samp>float</samp>&rsquo;</dt>
+<dd><p>32-bit floating-point; limits input sample format to FLT. (default)
+</p></dd>
+<dt> &lsquo;<samp>double</samp>&rsquo;</dt>
+<dd><p>64-bit floating-point; limits input sample format to DBL.
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<a name="Examples-14"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-14">6.40.1 Examples</a></h3>
+
+<ul>
+<li>
+Halve the input audio volume:
+<table><tr><td>&nbsp;</td><td><pre class="example">volume=volume=0.5
+volume=volume=1/2
+volume=volume=-6.0206dB
+</pre></td></tr></table>
+
+<p>In all the above example the named key for &lsquo;<samp>volume</samp>&rsquo; can be
+omitted, for example like in:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">volume=0.5
+</pre></td></tr></table>
+
+</li><li>
+Increase input audio power by 6 decibels using fixed-point precision:
+<table><tr><td>&nbsp;</td><td><pre class="example">volume=volume=6dB:precision=fixed
+</pre></td></tr></table>
+</li></ul>
+
+<a name="volumedetect"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-volumedetect">6.41 volumedetect</a></h2>
+
+<p>Detect the volume of the input video.
+</p>
+<p>The filter has no parameters. The input is not modified. Statistics about
+the volume will be printed in the log when the input stream end is reached.
+</p>
+<p>In particular it will show the mean volume (root mean square), maximum
+volume (on a per-sample basis), and the beginning of a histogram of the
+registered volume values (from the maximum value to a cumulated 1/1000 of
+the samples).
+</p>
+<p>All volumes are in decibels relative to the maximum PCM value.
+</p>
+<a name="Examples-8"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-8">6.41.1 Examples</a></h3>
+
+<p>Here is an excerpt of the output:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[Parsed_volumedetect_0 &nbsp;0xa23120] mean_volume: -27 dB
+[Parsed_volumedetect_0 &nbsp;0xa23120] max_volume: -4 dB
+[Parsed_volumedetect_0 &nbsp;0xa23120] histogram_4db: 6
+[Parsed_volumedetect_0 &nbsp;0xa23120] histogram_5db: 62
+[Parsed_volumedetect_0 &nbsp;0xa23120] histogram_6db: 286
+[Parsed_volumedetect_0 &nbsp;0xa23120] histogram_7db: 1042
+[Parsed_volumedetect_0 &nbsp;0xa23120] histogram_8db: 2551
+[Parsed_volumedetect_0 &nbsp;0xa23120] histogram_9db: 4609
+[Parsed_volumedetect_0 &nbsp;0xa23120] histogram_10db: 8409
+</pre></td></tr></table>
+
+<p>It means that:
+</p><ul>
+<li>
+The mean square energy is approximately -27 dB, or 10^-2.7.
+</li><li>
+The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
+</li><li>
+There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
+</li></ul>
+
+<p>In other words, raising the volume by +4 dB does not cause any clipping,
+raising it by +5 dB causes clipping for 6 samples, etc.
+</p>
+
+<a name="Audio-Sources"></a>
+<h1 class="chapter"><a href="ffmpeg-filters.html#toc-Audio-Sources">7. Audio Sources</a></h1>
+
+<p>Below is a description of the currently available audio sources.
+</p>
+<a name="abuffer"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-abuffer">7.1 abuffer</a></h2>
+
+<p>Buffer audio frames, and make them available to the filter chain.
+</p>
+<p>This source is mainly intended for a programmatic use, in particular
+through the interface defined in &lsquo;<tt>libavfilter/asrc_abuffer.h</tt>&rsquo;.
+</p>
+<p>It accepts the following named parameters:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>time_base</samp>&rsquo;</dt>
+<dd><p>Timebase which will be used for timestamps of submitted frames. It must be
+either a floating-point number or in <var>numerator</var>/<var>denominator</var> form.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate</samp>&rsquo;</dt>
+<dd><p>The sample rate of the incoming audio buffers.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_fmt</samp>&rsquo;</dt>
+<dd><p>The sample format of the incoming audio buffers.
+Either a sample format name or its corresponging integer representation from
+the enum AVSampleFormat in &lsquo;<tt>libavutil/samplefmt.h</tt>&rsquo;
+</p>
+</dd>
+<dt> &lsquo;<samp>channel_layout</samp>&rsquo;</dt>
+<dd><p>The channel layout of the incoming audio buffers.
+Either a channel layout name from channel_layout_map in
+&lsquo;<tt>libavutil/channel_layout.c</tt>&rsquo; or its corresponding integer representation
+from the AV_CH_LAYOUT_* macros in &lsquo;<tt>libavutil/channel_layout.h</tt>&rsquo;
+</p>
+</dd>
+<dt> &lsquo;<samp>channels</samp>&rsquo;</dt>
+<dd><p>The number of channels of the incoming audio buffers.
+If both <var>channels</var> and <var>channel_layout</var> are specified, then they
+must be consistent.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-55"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-55">7.1.1 Examples</a></h3>
+
+<table><tr><td>&nbsp;</td><td><pre class="example">abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
+</pre></td></tr></table>
+
+<p>will instruct the source to accept planar 16bit signed stereo at 44100Hz.
+Since the sample format with name &quot;s16p&quot; corresponds to the number
+6 and the &quot;stereo&quot; channel layout corresponds to the value 0x3, this is
+equivalent to:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
+</pre></td></tr></table>
+
+<a name="aevalsrc"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-aevalsrc">7.2 aevalsrc</a></h2>
+
+<p>Generate an audio signal specified by an expression.
+</p>
+<p>This source accepts in input one or more expressions (one for each
+channel), which are evaluated and used to generate a corresponding
+audio signal.
+</p>
+<p>This source accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>exprs</samp>&rsquo;</dt>
+<dd><p>Set the &rsquo;|&rsquo;-separated expressions list for each separate channel. In case the
+&lsquo;<samp>channel_layout</samp>&rsquo; option is not specified, the selected channel layout
+depends on the number of provided expressions. Otherwise the last
+specified expression is applied to the remaining output channels.
+</p>
+</dd>
+<dt> &lsquo;<samp>channel_layout, c</samp>&rsquo;</dt>
+<dd><p>Set the channel layout. The number of channels in the specified layout
+must be equal to the number of specified expressions.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
+<dd><p>Set the minimum duration of the sourced audio. See the function
+<code>av_parse_time()</code> for the accepted format.
+Note that the resulting duration may be greater than the specified
+duration, as the generated audio is always cut at the end of a
+complete frame.
+</p>
+<p>If not specified, or the expressed duration is negative, the audio is
+supposed to be generated forever.
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_samples, n</samp>&rsquo;</dt>
+<dd><p>Set the number of samples per channel per each output frame,
+default to 1024.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate, s</samp>&rsquo;</dt>
+<dd><p>Specify the sample rate, default to 44100.
+</p></dd>
+</dl>
+
+<p>Each expression in <var>exprs</var> can contain the following constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>number of the evaluated sample, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>time of the evaluated sample expressed in seconds, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>sample rate
+</p>
+</dd>
+</dl>
+
+<a name="Examples-1"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-1">7.2.1 Examples</a></h3>
+
+<ul>
+<li>
+Generate silence:
+<table><tr><td>&nbsp;</td><td><pre class="example">aevalsrc=0
+</pre></td></tr></table>
+
+</li><li>
+Generate a sin signal with frequency of 440 Hz, set sample rate to
+8000 Hz:
+<table><tr><td>&nbsp;</td><td><pre class="example">aevalsrc=&quot;sin(440*2*PI*t):s=8000&quot;
+</pre></td></tr></table>
+
+</li><li>
+Generate a two channels signal, specify the channel layout (Front
+Center + Back Center) explicitly:
+<table><tr><td>&nbsp;</td><td><pre class="example">aevalsrc=&quot;sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC&quot;
+</pre></td></tr></table>
+
+</li><li>
+Generate white noise:
+<table><tr><td>&nbsp;</td><td><pre class="example">aevalsrc=&quot;-2+random(0)&quot;
+</pre></td></tr></table>
+
+</li><li>
+Generate an amplitude modulated signal:
+<table><tr><td>&nbsp;</td><td><pre class="example">aevalsrc=&quot;sin(10*2*PI*t)*sin(880*2*PI*t)&quot;
+</pre></td></tr></table>
+
+</li><li>
+Generate 2.5 Hz binaural beats on a 360 Hz carrier:
+<table><tr><td>&nbsp;</td><td><pre class="example">aevalsrc=&quot;0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)&quot;
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="anullsrc"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-anullsrc">7.3 anullsrc</a></h2>
+
+<p>Null audio source, return unprocessed audio frames. It is mainly useful
+as a template and to be employed in analysis / debugging tools, or as
+the source for filters which ignore the input data (for example the sox
+synth filter).
+</p>
+<p>This source accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>channel_layout, cl</samp>&rsquo;</dt>
+<dd>
+<p>Specify the channel layout, and can be either an integer or a string
+representing a channel layout. The default value of <var>channel_layout</var>
+is &quot;stereo&quot;.
+</p>
+<p>Check the channel_layout_map definition in
+&lsquo;<tt>libavutil/channel_layout.c</tt>&rsquo; for the mapping between strings and
+channel layout values.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate, r</samp>&rsquo;</dt>
+<dd><p>Specify the sample rate, and defaults to 44100.
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_samples, n</samp>&rsquo;</dt>
+<dd><p>Set the number of samples per requested frames.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-39"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-39">7.3.1 Examples</a></h3>
+
+<ul>
+<li>
+Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
+<table><tr><td>&nbsp;</td><td><pre class="example">anullsrc=r=48000:cl=4
+</pre></td></tr></table>
+
+</li><li>
+Do the same operation with a more obvious syntax:
+<table><tr><td>&nbsp;</td><td><pre class="example">anullsrc=r=48000:cl=mono
+</pre></td></tr></table>
+</li></ul>
+
+<p>All the parameters need to be explicitly defined.
+</p>
+<a name="flite"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-flite">7.4 flite</a></h2>
+
+<p>Synthesize a voice utterance using the libflite library.
+</p>
+<p>To enable compilation of this filter you need to configure FFmpeg with
+<code>--enable-libflite</code>.
+</p>
+<p>Note that the flite library is not thread-safe.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>list_voices</samp>&rsquo;</dt>
+<dd><p>If set to 1, list the names of the available voices and exit
+immediately. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_samples, n</samp>&rsquo;</dt>
+<dd><p>Set the maximum number of samples per frame. Default value is 512.
+</p>
+</dd>
+<dt> &lsquo;<samp>textfile</samp>&rsquo;</dt>
+<dd><p>Set the filename containing the text to speak.
+</p>
+</dd>
+<dt> &lsquo;<samp>text</samp>&rsquo;</dt>
+<dd><p>Set the text to speak.
+</p>
+</dd>
+<dt> &lsquo;<samp>voice, v</samp>&rsquo;</dt>
+<dd><p>Set the voice to use for the speech synthesis. Default value is
+<code>kal</code>. See also the <var>list_voices</var> option.
+</p></dd>
+</dl>
+
+<a name="Examples-20"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-20">7.4.1 Examples</a></h3>
+
+<ul>
+<li>
+Read from file &lsquo;<tt>speech.txt</tt>&rsquo;, and synthetize the text using the
+standard flite voice:
+<table><tr><td>&nbsp;</td><td><pre class="example">flite=textfile=speech.txt
+</pre></td></tr></table>
+
+</li><li>
+Read the specified text selecting the <code>slt</code> voice:
+<table><tr><td>&nbsp;</td><td><pre class="example">flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
+</pre></td></tr></table>
+
+</li><li>
+Input text to ffmpeg:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
+</pre></td></tr></table>
+
+</li><li>
+Make &lsquo;<tt>ffplay</tt>&rsquo; speak the specified text, using <code>flite</code> and
+the <code>lavfi</code> device:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
+</pre></td></tr></table>
+</li></ul>
+
+<p>For more information about libflite, check:
+<a href="http://www.speech.cs.cmu.edu/flite/">http://www.speech.cs.cmu.edu/flite/</a>
+</p>
+<a name="sine"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-sine">7.5 sine</a></h2>
+
+<p>Generate an audio signal made of a sine wave with amplitude 1/8.
+</p>
+<p>The audio signal is bit-exact.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set the carrier frequency. Default is 440 Hz.
+</p>
+</dd>
+<dt> &lsquo;<samp>beep_factor, b</samp>&rsquo;</dt>
+<dd><p>Enable a periodic beep every second with frequency <var>beep_factor</var> times
+the carrier frequency. Default is 0, meaning the beep is disabled.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate, r</samp>&rsquo;</dt>
+<dd><p>Specify the sample rate, default is 44100.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
+<dd><p>Specify the duration of the generated audio stream.
+</p>
+</dd>
+<dt> &lsquo;<samp>samples_per_frame</samp>&rsquo;</dt>
+<dd><p>Set the number of samples per output frame, default is 1024.
+</p></dd>
+</dl>
+
+<a name="Examples-58"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-58">7.5.1 Examples</a></h3>
+
+<ul>
+<li>
+Generate a simple 440 Hz sine wave:
+<table><tr><td>&nbsp;</td><td><pre class="example">sine
+</pre></td></tr></table>
+
+</li><li>
+Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
+<table><tr><td>&nbsp;</td><td><pre class="example">sine=220:4:d=5
+sine=f=220:b=4:d=5
+sine=frequency=220:beep_factor=4:duration=5
+</pre></td></tr></table>
+
+</li></ul>
+
+
+<a name="Audio-Sinks"></a>
+<h1 class="chapter"><a href="ffmpeg-filters.html#toc-Audio-Sinks">8. Audio Sinks</a></h1>
+
+<p>Below is a description of the currently available audio sinks.
+</p>
+<a name="abuffersink"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-abuffersink">8.1 abuffersink</a></h2>
+
+<p>Buffer audio frames, and make them available to the end of filter chain.
+</p>
+<p>This sink is mainly intended for programmatic use, in particular
+through the interface defined in &lsquo;<tt>libavfilter/buffersink.h</tt>&rsquo;
+or the options system.
+</p>
+<p>It accepts a pointer to an AVABufferSinkContext structure, which
+defines the incoming buffers&rsquo; formats, to be passed as the opaque
+parameter to <code>avfilter_init_filter</code> for initialization.
+</p>
+<a name="anullsink"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-anullsink">8.2 anullsink</a></h2>
+
+<p>Null audio sink, do absolutely nothing with the input audio. It is
+mainly useful as a template and to be employed in analysis / debugging
+tools.
+</p>
+
+<a name="Video-Filters"></a>
+<h1 class="chapter"><a href="ffmpeg-filters.html#toc-Video-Filters">9. Video Filters</a></h1>
+
+<p>When you configure your FFmpeg build, you can disable any of the
+existing filters using <code>--disable-filters</code>.
+The configure output will show the video filters included in your
+build.
+</p>
+<p>Below is a description of the currently available video filters.
+</p>
+<a name="alphaextract"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-alphaextract">9.1 alphaextract</a></h2>
+
+<p>Extract the alpha component from the input as a grayscale video. This
+is especially useful with the <var>alphamerge</var> filter.
+</p>
+<a name="alphamerge"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-alphamerge">9.2 alphamerge</a></h2>
+
+<p>Add or replace the alpha component of the primary input with the
+grayscale value of a second input. This is intended for use with
+<var>alphaextract</var> to allow the transmission or storage of frame
+sequences that have alpha in a format that doesn&rsquo;t support an alpha
+channel.
+</p>
+<p>For example, to reconstruct full frames from a normal YUV-encoded video
+and a separate video created with <var>alphaextract</var>, you might use:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
+</pre></td></tr></table>
+
+<p>Since this filter is designed for reconstruction, it operates on frame
+sequences without considering timestamps, and terminates when either
+input reaches end of stream. This will cause problems if your encoding
+pipeline drops frames. If you&rsquo;re trying to apply an image as an
+overlay to a video stream, consider the <var>overlay</var> filter instead.
+</p>
+<a name="ass"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-ass">9.3 ass</a></h2>
+
+<p>Same as the <a href="#subtitles">subtitles</a> filter, except that it doesn&rsquo;t require libavcodec
+and libavformat to work. On the other hand, it is limited to ASS (Advanced
+Substation Alpha) subtitles files.
+</p>
+<a name="bbox"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-bbox">9.4 bbox</a></h2>
+
+<p>Compute the bounding box for the non-black pixels in the input frame
+luminance plane.
+</p>
+<p>This filter computes the bounding box containing all the pixels with a
+luminance value greater than the minimum allowed value.
+The parameters describing the bounding box are printed on the filter
+log.
+</p>
+<p>The filter accepts the following option:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>min_val</samp>&rsquo;</dt>
+<dd><p>Set the minimal luminance value. Default is <code>16</code>.
+</p></dd>
+</dl>
+
+<a name="blackdetect"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-blackdetect">9.5 blackdetect</a></h2>
+
+<p>Detect video intervals that are (almost) completely black. Can be
+useful to detect chapter transitions, commercials, or invalid
+recordings. Output lines contains the time for the start, end and
+duration of the detected black interval expressed in seconds.
+</p>
+<p>In order to display the output lines, you need to set the loglevel at
+least to the AV_LOG_INFO value.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>black_min_duration, d</samp>&rsquo;</dt>
+<dd><p>Set the minimum detected black duration expressed in seconds. It must
+be a non-negative floating point number.
+</p>
+<p>Default value is 2.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>picture_black_ratio_th, pic_th</samp>&rsquo;</dt>
+<dd><p>Set the threshold for considering a picture &quot;black&quot;.
+Express the minimum value for the ratio:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>nb_black_pixels</var> / <var>nb_pixels</var>
+</pre></td></tr></table>
+
+<p>for which a picture is considered black.
+Default value is 0.98.
+</p>
+</dd>
+<dt> &lsquo;<samp>pixel_black_th, pix_th</samp>&rsquo;</dt>
+<dd><p>Set the threshold for considering a pixel &quot;black&quot;.
+</p>
+<p>The threshold expresses the maximum pixel luminance value for which a
+pixel is considered &quot;black&quot;. The provided value is scaled according to
+the following equation:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>absolute_threshold</var> = <var>luminance_minimum_value</var> + <var>pixel_black_th</var> * <var>luminance_range_size</var>
+</pre></td></tr></table>
+
+<p><var>luminance_range_size</var> and <var>luminance_minimum_value</var> depend on
+the input video format, the range is [0-255] for YUV full-range
+formats and [16-235] for YUV non full-range formats.
+</p>
+<p>Default value is 0.10.
+</p></dd>
+</dl>
+
+<p>The following example sets the maximum pixel threshold to the minimum
+value, and detects only black intervals of 2 or more seconds:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">blackdetect=d=2:pix_th=0.00
+</pre></td></tr></table>
+
+<a name="blackframe"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-blackframe">9.6 blackframe</a></h2>
+
+<p>Detect frames that are (almost) completely black. Can be useful to
+detect chapter transitions or commercials. Output lines consist of
+the frame number of the detected frame, the percentage of blackness,
+the position in the file if known or -1 and the timestamp in seconds.
+</p>
+<p>In order to display the output lines, you need to set the loglevel at
+least to the AV_LOG_INFO value.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>amount</samp>&rsquo;</dt>
+<dd><p>Set the percentage of the pixels that have to be below the threshold, defaults
+to <code>98</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>threshold, thresh</samp>&rsquo;</dt>
+<dd><p>Set the threshold below which a pixel value is considered black, defaults to
+<code>32</code>.
+</p>
+</dd>
+</dl>
+
+<a name="blend"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-blend">9.7 blend</a></h2>
+
+<p>Blend two video frames into each other.
+</p>
+<p>It takes two input streams and outputs one stream, the first input is the
+&quot;top&quot; layer and second input is &quot;bottom&quot; layer.
+Output terminates when shortest input terminates.
+</p>
+<p>A description of the accepted options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>c0_mode</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c1_mode</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c2_mode</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c3_mode</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>all_mode</samp>&rsquo;</dt>
+<dd><p>Set blend mode for specific pixel component or all pixel components in case
+of <var>all_mode</var>. Default value is <code>normal</code>.
+</p>
+<p>Available values for component modes are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>addition</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>and</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>average</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>burn</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>darken</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>difference</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>divide</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dodge</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>exclusion</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>hardlight</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>lighten</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>multiply</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>negation</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>normal</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>or</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>overlay</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>phoenix</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>pinlight</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>reflect</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>screen</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>softlight</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>subtract</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vividlight</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>xor</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>c0_opacity</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c1_opacity</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c2_opacity</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c3_opacity</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>all_opacity</samp>&rsquo;</dt>
+<dd><p>Set blend opacity for specific pixel component or all pixel components in case
+of <var>all_opacity</var>. Only used in combination with pixel component blend modes.
+</p>
+</dd>
+<dt> &lsquo;<samp>c0_expr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c1_expr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c2_expr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c3_expr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>all_expr</samp>&rsquo;</dt>
+<dd><p>Set blend expression for specific pixel component or all pixel components in case
+of <var>all_expr</var>. Note that related mode options will be ignored if those are set.
+</p>
+<p>The expressions can use the following variables:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>N</samp>&rsquo;</dt>
+<dd><p>The sequential number of the filtered frame, starting from <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>X</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>Y</samp>&rsquo;</dt>
+<dd><p>the coordinates of the current sample
+</p>
+</dd>
+<dt> &lsquo;<samp>W</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>H</samp>&rsquo;</dt>
+<dd><p>the width and height of currently filtered plane
+</p>
+</dd>
+<dt> &lsquo;<samp>SW</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>SH</samp>&rsquo;</dt>
+<dd><p>Width and height scale depending on the currently filtered plane. It is the
+ratio between the corresponding luma plane number of pixels and the current
+plane ones. E.g. for YUV4:2:0 the values are <code>1,1</code> for the luma plane, and
+<code>0.5,0.5</code> for chroma planes.
+</p>
+</dd>
+<dt> &lsquo;<samp>T</samp>&rsquo;</dt>
+<dd><p>Time of the current frame, expressed in seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>TOP, A</samp>&rsquo;</dt>
+<dd><p>Value of pixel component at current location for first video frame (top layer).
+</p>
+</dd>
+<dt> &lsquo;<samp>BOTTOM, B</samp>&rsquo;</dt>
+<dd><p>Value of pixel component at current location for second video frame (bottom layer).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>shortest</samp>&rsquo;</dt>
+<dd><p>Force termination when the shortest input terminates. Default is <code>0</code>.
+</p></dd>
+<dt> &lsquo;<samp>repeatlast</samp>&rsquo;</dt>
+<dd><p>Continue applying the last bottom frame after the end of the stream. A value of
+<code>0</code> disable the filter after the last frame of the bottom layer is reached.
+Default is <code>1</code>.
+</p></dd>
+</dl>
+
+<a name="Examples-21"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-21">9.7.1 Examples</a></h3>
+
+<ul>
+<li>
+Apply transition from bottom layer to top layer in first 10 seconds:
+<table><tr><td>&nbsp;</td><td><pre class="example">blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
+</pre></td></tr></table>
+
+</li><li>
+Apply 1x1 checkerboard effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
+</pre></td></tr></table>
+
+</li><li>
+Apply uncover left effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">blend=all_expr='if(gte(N*SW+X,W),A,B)'
+</pre></td></tr></table>
+
+</li><li>
+Apply uncover down effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">blend=all_expr='if(gte(Y-N*SH,0),A,B)'
+</pre></td></tr></table>
+
+</li><li>
+Apply uncover up-left effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
+</pre></td></tr></table>
+</li></ul>
+
+<a name="boxblur"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-boxblur">9.8 boxblur</a></h2>
+
+<p>Apply boxblur algorithm to the input video.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>luma_radius, lr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>luma_power, lp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma_radius, cr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma_power, cp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>alpha_radius, ar</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>alpha_power, ap</samp>&rsquo;</dt>
+</dl>
+
+<p>A description of the accepted options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>luma_radius, lr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma_radius, cr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>alpha_radius, ar</samp>&rsquo;</dt>
+<dd><p>Set an expression for the box radius in pixels used for blurring the
+corresponding input plane.
+</p>
+<p>The radius value must be a non-negative number, and must not be
+greater than the value of the expression <code>min(w,h)/2</code> for the
+luma and alpha planes, and of <code>min(cw,ch)/2</code> for the chroma
+planes.
+</p>
+<p>Default value for &lsquo;<samp>luma_radius</samp>&rsquo; is &quot;2&quot;. If not specified,
+&lsquo;<samp>chroma_radius</samp>&rsquo; and &lsquo;<samp>alpha_radius</samp>&rsquo; default to the
+corresponding value set for &lsquo;<samp>luma_radius</samp>&rsquo;.
+</p>
+<p>The expressions can contain the following constants:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>the input width and height in pixels
+</p>
+</dd>
+<dt> &lsquo;<samp>cw</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ch</samp>&rsquo;</dt>
+<dd><p>the input chroma image width and height in pixels
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>luma_power, lp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma_power, cp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>alpha_power, ap</samp>&rsquo;</dt>
+<dd><p>Specify how many times the boxblur filter is applied to the
+corresponding plane.
+</p>
+<p>Default value for &lsquo;<samp>luma_power</samp>&rsquo; is 2. If not specified,
+&lsquo;<samp>chroma_power</samp>&rsquo; and &lsquo;<samp>alpha_power</samp>&rsquo; default to the
+corresponding value set for &lsquo;<samp>luma_power</samp>&rsquo;.
+</p>
+<p>A value of 0 will disable the effect.
+</p></dd>
+</dl>
+
+<a name="Examples-4"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-4">9.8.1 Examples</a></h3>
+
+<ul>
+<li>
+Apply a boxblur filter with luma, chroma, and alpha radius
+set to 2:
+<table><tr><td>&nbsp;</td><td><pre class="example">boxblur=luma_radius=2:luma_power=1
+boxblur=2:1
+</pre></td></tr></table>
+
+</li><li>
+Set luma radius to 2, alpha and chroma radius to 0:
+<table><tr><td>&nbsp;</td><td><pre class="example">boxblur=2:1:cr=0:ar=0
+</pre></td></tr></table>
+
+</li><li>
+Set luma and chroma radius to a fraction of the video dimension:
+<table><tr><td>&nbsp;</td><td><pre class="example">boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
+</pre></td></tr></table>
+</li></ul>
+
+<a name="colorbalance"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-colorbalance">9.9 colorbalance</a></h2>
+<p>Modify intensity of primary colors (red, green and blue) of input frames.
+</p>
+<p>The filter allows an input frame to be adjusted in the shadows, midtones or highlights
+regions for the red-cyan, green-magenta or blue-yellow balance.
+</p>
+<p>A positive adjustment value shifts the balance towards the primary color, a negative
+value towards the complementary color.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>rs</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>gs</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bs</samp>&rsquo;</dt>
+<dd><p>Adjust red, green and blue shadows (darkest pixels).
+</p>
+</dd>
+<dt> &lsquo;<samp>rm</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>gm</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bm</samp>&rsquo;</dt>
+<dd><p>Adjust red, green and blue midtones (medium pixels).
+</p>
+</dd>
+<dt> &lsquo;<samp>rh</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>gh</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bh</samp>&rsquo;</dt>
+<dd><p>Adjust red, green and blue highlights (brightest pixels).
+</p>
+<p>Allowed ranges for options are <code>[-1.0, 1.0]</code>. Defaults are <code>0</code>.
+</p></dd>
+</dl>
+
+<a name="Examples-37"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-37">9.9.1 Examples</a></h3>
+
+<ul>
+<li>
+Add red color cast to shadows:
+<table><tr><td>&nbsp;</td><td><pre class="example">colorbalance=rs=.3
+</pre></td></tr></table>
+</li></ul>
+
+<a name="colorchannelmixer"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-colorchannelmixer">9.10 colorchannelmixer</a></h2>
+
+<p>Adjust video input frames by re-mixing color channels.
+</p>
+<p>This filter modifies a color channel by adding the values associated to
+the other channels of the same pixels. For example if the value to
+modify is red, the output value will be:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>red</var>=<var>red</var>*<var>rr</var> + <var>blue</var>*<var>rb</var> + <var>green</var>*<var>rg</var> + <var>alpha</var>*<var>ra</var>
+</pre></td></tr></table>
+
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>rr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>rg</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>rb</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ra</samp>&rsquo;</dt>
+<dd><p>Adjust contribution of input red, green, blue and alpha channels for output red channel.
+Default is <code>1</code> for <var>rr</var>, and <code>0</code> for <var>rg</var>, <var>rb</var> and <var>ra</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>gr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>gg</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>gb</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ga</samp>&rsquo;</dt>
+<dd><p>Adjust contribution of input red, green, blue and alpha channels for output green channel.
+Default is <code>1</code> for <var>gg</var>, and <code>0</code> for <var>gr</var>, <var>gb</var> and <var>ga</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>br</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bg</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bb</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ba</samp>&rsquo;</dt>
+<dd><p>Adjust contribution of input red, green, blue and alpha channels for output blue channel.
+Default is <code>1</code> for <var>bb</var>, and <code>0</code> for <var>br</var>, <var>bg</var> and <var>ba</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>ar</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ag</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ab</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aa</samp>&rsquo;</dt>
+<dd><p>Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
+Default is <code>1</code> for <var>aa</var>, and <code>0</code> for <var>ar</var>, <var>ag</var> and <var>ab</var>.
+</p>
+<p>Allowed ranges for options are <code>[-2.0, 2.0]</code>.
+</p></dd>
+</dl>
+
+<a name="Examples-35"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-35">9.10.1 Examples</a></h3>
+
+<ul>
+<li>
+Convert source to grayscale:
+<table><tr><td>&nbsp;</td><td><pre class="example">colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
+</pre></td></tr></table>
+</li><li>
+Simulate sepia tones:
+<table><tr><td>&nbsp;</td><td><pre class="example">colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
+</pre></td></tr></table>
+</li></ul>
+
+<a name="colormatrix"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-colormatrix">9.11 colormatrix</a></h2>
+
+<p>Convert color matrix.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>src</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dst</samp>&rsquo;</dt>
+<dd><p>Specify the source and destination color matrix. Both values must be
+specified.
+</p>
+<p>The accepted values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>bt709</samp>&rsquo;</dt>
+<dd><p>BT.709
+</p>
+</dd>
+<dt> &lsquo;<samp>bt601</samp>&rsquo;</dt>
+<dd><p>BT.601
+</p>
+</dd>
+<dt> &lsquo;<samp>smpte240m</samp>&rsquo;</dt>
+<dd><p>SMPTE-240M
+</p>
+</dd>
+<dt> &lsquo;<samp>fcc</samp>&rsquo;</dt>
+<dd><p>FCC
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<p>For example to convert from BT.601 to SMPTE-240M, use the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">colormatrix=bt601:smpte240m
+</pre></td></tr></table>
+
+<a name="copy"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-copy">9.12 copy</a></h2>
+
+<p>Copy the input source unchanged to the output. Mainly useful for
+testing purposes.
+</p>
+<a name="crop"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-crop">9.13 crop</a></h2>
+
+<p>Crop the input video to given dimensions.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>w, out_w</samp>&rsquo;</dt>
+<dd><p>Width of the output video. It defaults to <code>iw</code>.
+This expression is evaluated only once during the filter
+configuration.
+</p>
+</dd>
+<dt> &lsquo;<samp>h, out_h</samp>&rsquo;</dt>
+<dd><p>Height of the output video. It defaults to <code>ih</code>.
+This expression is evaluated only once during the filter
+configuration.
+</p>
+</dd>
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dd><p>Horizontal position, in the input video, of the left edge of the output video.
+It defaults to <code>(in_w-out_w)/2</code>.
+This expression is evaluated per-frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>Vertical position, in the input video, of the top edge of the output video.
+It defaults to <code>(in_h-out_h)/2</code>.
+This expression is evaluated per-frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>keep_aspect</samp>&rsquo;</dt>
+<dd><p>If set to 1 will force the output display aspect ratio
+to be the same of the input, by changing the output sample aspect
+ratio. It defaults to 0.
+</p></dd>
+</dl>
+
+<p>The <var>out_w</var>, <var>out_h</var>, <var>x</var>, <var>y</var> parameters are
+expressions containing the following constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>the computed values for <var>x</var> and <var>y</var>. They are evaluated for
+each new frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>in_w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>in_h</samp>&rsquo;</dt>
+<dd><p>the input width and height
+</p>
+</dd>
+<dt> &lsquo;<samp>iw</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ih</samp>&rsquo;</dt>
+<dd><p>same as <var>in_w</var> and <var>in_h</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>out_w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>out_h</samp>&rsquo;</dt>
+<dd><p>the output (cropped) width and height
+</p>
+</dd>
+<dt> &lsquo;<samp>ow</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>oh</samp>&rsquo;</dt>
+<dd><p>same as <var>out_w</var> and <var>out_h</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>same as <var>iw</var> / <var>ih</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
+<dd><p>input sample aspect ratio
+</p>
+</dd>
+<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
+<dd><p>input display aspect ratio, it is the same as (<var>iw</var> / <var>ih</var>) * <var>sar</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>the number of input frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
+<dd><p>the position in the file of the input frame, NAN if unknown
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>timestamp expressed in seconds, NAN if the input timestamp is unknown
+</p>
+</dd>
+</dl>
+
+<p>The expression for <var>out_w</var> may depend on the value of <var>out_h</var>,
+and the expression for <var>out_h</var> may depend on <var>out_w</var>, but they
+cannot depend on <var>x</var> and <var>y</var>, as <var>x</var> and <var>y</var> are
+evaluated after <var>out_w</var> and <var>out_h</var>.
+</p>
+<p>The <var>x</var> and <var>y</var> parameters specify the expressions for the
+position of the top-left corner of the output (non-cropped) area. They
+are evaluated for each frame. If the evaluated value is not valid, it
+is approximated to the nearest valid value.
+</p>
+<p>The expression for <var>x</var> may depend on <var>y</var>, and the expression
+for <var>y</var> may depend on <var>x</var>.
+</p>
+<a name="Examples-36"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-36">9.13.1 Examples</a></h3>
+
+<ul>
+<li>
+Crop area with size 100x100 at position (12,34).
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=100:100:12:34
+</pre></td></tr></table>
+
+<p>Using named options, the example above becomes:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">crop=w=100:h=100:x=12:y=34
+</pre></td></tr></table>
+
+</li><li>
+Crop the central input area with size 100x100:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=100:100
+</pre></td></tr></table>
+
+</li><li>
+Crop the central input area with size 2/3 of the input video:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=2/3*in_w:2/3*in_h
+</pre></td></tr></table>
+
+</li><li>
+Crop the input video central square:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=out_w=in_h
+crop=in_h
+</pre></td></tr></table>
+
+</li><li>
+Delimit the rectangle with the top-left corner placed at position
+100:100 and the right-bottom corner corresponding to the right-bottom
+corner of the input image:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=in_w-100:in_h-100:100:100
+</pre></td></tr></table>
+
+</li><li>
+Crop 10 pixels from the left and right borders, and 20 pixels from
+the top and bottom borders
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=in_w-2*10:in_h-2*20
+</pre></td></tr></table>
+
+</li><li>
+Keep only the bottom right quarter of the input image:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=in_w/2:in_h/2:in_w/2:in_h/2
+</pre></td></tr></table>
+
+</li><li>
+Crop height for getting Greek harmony:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=in_w:1/PHI*in_w
+</pre></td></tr></table>
+
+</li><li>
+Appply trembling effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(n/10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(n/7)
+</pre></td></tr></table>
+
+</li><li>
+Apply erratic camera effect depending on timestamp:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(t*10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(t*13)&quot;
+</pre></td></tr></table>
+
+</li><li>
+Set x depending on the value of y:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=in_w/2:in_h/2:y:10+10*sin(n/10)
+</pre></td></tr></table>
+</li></ul>
+
+<a name="cropdetect"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-cropdetect">9.14 cropdetect</a></h2>
+
+<p>Auto-detect crop size.
+</p>
+<p>Calculate necessary cropping parameters and prints the recommended
+parameters through the logging system. The detected dimensions
+correspond to the non-black area of the input video.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>limit</samp>&rsquo;</dt>
+<dd><p>Set higher black value threshold, which can be optionally specified
+from nothing (0) to everything (255). An intensity value greater
+to the set value is considered non-black. Default value is 24.
+</p>
+</dd>
+<dt> &lsquo;<samp>round</samp>&rsquo;</dt>
+<dd><p>Set the value for which the width/height should be divisible by. The
+offset is automatically adjusted to center the video. Use 2 to get
+only even dimensions (needed for 4:2:2 video). 16 is best when
+encoding to most video codecs. Default value is 16.
+</p>
+</dd>
+<dt> &lsquo;<samp>reset_count, reset</samp>&rsquo;</dt>
+<dd><p>Set the counter that determines after how many frames cropdetect will
+reset the previously detected largest video area and start over to
+detect the current optimal crop area. Default value is 0.
+</p>
+<p>This can be useful when channel logos distort the video area. 0
+indicates never reset and return the largest area encountered during
+playback.
+</p></dd>
+</dl>
+
+<p><a name="curves"></a>
+</p><a name="curves-1"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-curves-1">9.15 curves</a></h2>
+
+<p>Apply color adjustments using curves.
+</p>
+<p>This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
+component (red, green and blue) has its values defined by <var>N</var> key points
+tied from each other using a smooth curve. The x-axis represents the pixel
+values from the input frame, and the y-axis the new pixel values to be set for
+the output frame.
+</p>
+<p>By default, a component curve is defined by the two points <var>(0;0)</var> and
+<var>(1;1)</var>. This creates a straight line where each original pixel value is
+&quot;adjusted&quot; to its own value, which means no change to the image.
+</p>
+<p>The filter allows you to redefine these two points and add some more. A new
+curve (using a natural cubic spline interpolation) will be define to pass
+smoothly through all these new coordinates. The new defined points needs to be
+strictly increasing over the x-axis, and their <var>x</var> and <var>y</var> values must
+be in the <var>[0;1]</var> interval.  If the computed curves happened to go outside
+the vector spaces, the values will be clipped accordingly.
+</p>
+<p>If there is no key point defined in <code>x=0</code>, the filter will automatically
+insert a <var>(0;0)</var> point. In the same way, if there is no key point defined
+in <code>x=1</code>, the filter will automatically insert a <var>(1;1)</var> point.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>preset</samp>&rsquo;</dt>
+<dd><p>Select one of the available color presets. This option can be used in addition
+to the &lsquo;<samp>r</samp>&rsquo;, &lsquo;<samp>g</samp>&rsquo;, &lsquo;<samp>b</samp>&rsquo; parameters; in this case, the later
+options takes priority on the preset values.
+Available presets are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>color_negative</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>cross_process</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>darker</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>increase_contrast</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>lighter</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>linear_contrast</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>medium_contrast</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>negative</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>strong_contrast</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vintage</samp>&rsquo;</dt>
+</dl>
+<p>Default is <code>none</code>.
+</p></dd>
+<dt> &lsquo;<samp>master, m</samp>&rsquo;</dt>
+<dd><p>Set the master key points. These points will define a second pass mapping. It
+is sometimes called a &quot;luminance&quot; or &quot;value&quot; mapping. It can be used with
+&lsquo;<samp>r</samp>&rsquo;, &lsquo;<samp>g</samp>&rsquo;, &lsquo;<samp>b</samp>&rsquo; or &lsquo;<samp>all</samp>&rsquo; since it acts like a
+post-processing LUT.
+</p></dd>
+<dt> &lsquo;<samp>red, r</samp>&rsquo;</dt>
+<dd><p>Set the key points for the red component.
+</p></dd>
+<dt> &lsquo;<samp>green, g</samp>&rsquo;</dt>
+<dd><p>Set the key points for the green component.
+</p></dd>
+<dt> &lsquo;<samp>blue, b</samp>&rsquo;</dt>
+<dd><p>Set the key points for the blue component.
+</p></dd>
+<dt> &lsquo;<samp>all</samp>&rsquo;</dt>
+<dd><p>Set the key points for all components (not including master).
+Can be used in addition to the other key points component
+options. In this case, the unset component(s) will fallback on this
+&lsquo;<samp>all</samp>&rsquo; setting.
+</p></dd>
+<dt> &lsquo;<samp>psfile</samp>&rsquo;</dt>
+<dd><p>Specify a Photoshop curves file (<code>.asv</code>) to import the settings from.
+</p></dd>
+</dl>
+
+<p>To avoid some filtergraph syntax conflicts, each key points list need to be
+defined using the following syntax: <code>x0/y0 x1/y1 x2/y2 ...</code>.
+</p>
+<a name="Examples-2"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-2">9.15.1 Examples</a></h3>
+
+<ul>
+<li>
+Increase slightly the middle level of blue:
+<table><tr><td>&nbsp;</td><td><pre class="example">curves=blue='0.5/0.58'
+</pre></td></tr></table>
+
+</li><li>
+Vintage effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">curves=r='0/0.11 .42/.51 1/0.95':g='0.50/0.48':b='0/0.22 .49/.44 1/0.8'
+</pre></td></tr></table>
+<p>Here we obtain the following coordinates for each components:
+</p><dl compact="compact">
+<dt> <var>red</var></dt>
+<dd><p><code>(0;0.11) (0.42;0.51) (1;0.95)</code>
+</p></dd>
+<dt> <var>green</var></dt>
+<dd><p><code>(0;0) (0.50;0.48) (1;1)</code>
+</p></dd>
+<dt> <var>blue</var></dt>
+<dd><p><code>(0;0.22) (0.49;0.44) (1;0.80)</code>
+</p></dd>
+</dl>
+
+</li><li>
+The previous example can also be achieved with the associated built-in preset:
+<table><tr><td>&nbsp;</td><td><pre class="example">curves=preset=vintage
+</pre></td></tr></table>
+
+</li><li>
+Or simply:
+<table><tr><td>&nbsp;</td><td><pre class="example">curves=vintage
+</pre></td></tr></table>
+
+</li><li>
+Use a Photoshop preset and redefine the points of the green component:
+<table><tr><td>&nbsp;</td><td><pre class="example">curves=psfile='MyCurvesPresets/purple.asv':green='0.45/0.53'
+</pre></td></tr></table>
+</li></ul>
+
+<a name="dctdnoiz"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-dctdnoiz">9.16 dctdnoiz</a></h2>
+
+<p>Denoise frames using 2D DCT (frequency domain filtering).
+</p>
+<p>This filter is not designed for real time and can be extremely slow.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>sigma, s</samp>&rsquo;</dt>
+<dd><p>Set the noise sigma constant.
+</p>
+<p>This <var>sigma</var> defines a hard threshold of <code>3 * sigma</code>; every DCT
+coefficient (absolute value) below this threshold with be dropped.
+</p>
+<p>If you need a more advanced filtering, see &lsquo;<samp>expr</samp>&rsquo;.
+</p>
+<p>Default is <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>overlap</samp>&rsquo;</dt>
+<dd><p>Set number overlapping pixels for each block. Each block is of size
+<code>16x16</code>. Since the filter can be slow, you may want to reduce this value,
+at the cost of a less effective filter and the risk of various artefacts.
+</p>
+<p>If the overlapping value doesn&rsquo;t allow to process the whole input width or
+height, a warning will be displayed and according borders won&rsquo;t be denoised.
+</p>
+<p>Default value is <code>15</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>expr, e</samp>&rsquo;</dt>
+<dd><p>Set the coefficient factor expression.
+</p>
+<p>For each coefficient of a DCT block, this expression will be evaluated as a
+multiplier value for the coefficient.
+</p>
+<p>If this is option is set, the &lsquo;<samp>sigma</samp>&rsquo; option will be ignored.
+</p>
+<p>The absolute value of the coefficient can be accessed through the <var>c</var>
+variable.
+</p></dd>
+</dl>
+
+<a name="Examples-22"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-22">9.16.1 Examples</a></h3>
+
+<p>Apply a denoise with a &lsquo;<samp>sigma</samp>&rsquo; of <code>4.5</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">dctdnoiz=4.5
+</pre></td></tr></table>
+
+<p>The same operation can be achieved using the expression system:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">dctdnoiz=e='gte(c, 4.5*3)'
+</pre></td></tr></table>
+
+<p><a name="decimate"></a>
+</p><a name="decimate-1"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-decimate-1">9.17 decimate</a></h2>
+
+<p>Drop duplicated frames at regular intervals.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>cycle</samp>&rsquo;</dt>
+<dd><p>Set the number of frames from which one will be dropped. Setting this to
+<var>N</var> means one frame in every batch of <var>N</var> frames will be dropped.
+Default is <code>5</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>dupthresh</samp>&rsquo;</dt>
+<dd><p>Set the threshold for duplicate detection. If the difference metric for a frame
+is less than or equal to this value, then it is declared as duplicate. Default
+is <code>1.1</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>scthresh</samp>&rsquo;</dt>
+<dd><p>Set scene change threshold. Default is <code>15</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>blockx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>blocky</samp>&rsquo;</dt>
+<dd><p>Set the size of the x and y-axis blocks used during metric calculations.
+Larger blocks give better noise suppression, but also give worse detection of
+small movements. Must be a power of two. Default is <code>32</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>ppsrc</samp>&rsquo;</dt>
+<dd><p>Mark main input as a pre-processed input and activate clean source input
+stream. This allows the input to be pre-processed with various filters to help
+the metrics calculation while keeping the frame selection lossless. When set to
+<code>1</code>, the first stream is for the pre-processed input, and the second
+stream is the clean source from where the kept frames are chosen. Default is
+<code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+<dd><p>Set whether or not chroma is considered in the metric calculations. Default is
+<code>1</code>.
+</p></dd>
+</dl>
+
+<a name="delogo"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-delogo">9.18 delogo</a></h2>
+
+<p>Suppress a TV station logo by a simple interpolation of the surrounding
+pixels. Just set a rectangle covering the logo and watch it disappear
+(and sometimes something even uglier appear - your mileage may vary).
+</p>
+<p>This filter accepts the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>Specify the top left corner coordinates of the logo. They must be
+specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Specify the width and height of the logo to clear. They must be
+specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>band, t</samp>&rsquo;</dt>
+<dd><p>Specify the thickness of the fuzzy edge of the rectangle (added to
+<var>w</var> and <var>h</var>). The default value is 4.
+</p>
+</dd>
+<dt> &lsquo;<samp>show</samp>&rsquo;</dt>
+<dd><p>When set to 1, a green rectangle is drawn on the screen to simplify
+finding the right <var>x</var>, <var>y</var>, <var>w</var>, and <var>h</var> parameters.
+The default value is 0.
+</p>
+<p>The rectangle is drawn on the outermost pixels which will be (partly)
+replaced with interpolated values. The values of the next pixels
+immediately outside this rectangle in each direction will be used to
+compute the interpolated pixel values inside the rectangle.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-50"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-50">9.18.1 Examples</a></h3>
+
+<ul>
+<li>
+Set a rectangle covering the area with top left corner coordinates 0,0
+and size 100x77, setting a band of size 10:
+<table><tr><td>&nbsp;</td><td><pre class="example">delogo=x=0:y=0:w=100:h=77:band=10
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="deshake"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-deshake">9.19 deshake</a></h2>
+
+<p>Attempt to fix small changes in horizontal and/or vertical shift. This
+filter helps remove camera shake from hand-holding a camera, bumping a
+tripod, moving on a vehicle, etc.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Specify a rectangular area where to limit the search for motion
+vectors.
+If desired the search for motion vectors can be limited to a
+rectangular area of the frame defined by its top left corner, width
+and height. These parameters have the same meaning as the drawbox
+filter which can be used to visualise the position of the bounding
+box.
+</p>
+<p>This is useful when simultaneous movement of subjects within the frame
+might be confused for camera motion by the motion vector search.
+</p>
+<p>If any or all of <var>x</var>, <var>y</var>, <var>w</var> and <var>h</var> are set to -1
+then the full frame is used. This allows later options to be set
+without specifying the bounding box for the motion vector search.
+</p>
+<p>Default - search the whole frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>rx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ry</samp>&rsquo;</dt>
+<dd><p>Specify the maximum extent of movement in x and y directions in the
+range 0-64 pixels. Default 16.
+</p>
+</dd>
+<dt> &lsquo;<samp>edge</samp>&rsquo;</dt>
+<dd><p>Specify how to generate pixels to fill blanks at the edge of the
+frame. Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>blank, 0</samp>&rsquo;</dt>
+<dd><p>Fill zeroes at blank locations
+</p></dd>
+<dt> &lsquo;<samp>original, 1</samp>&rsquo;</dt>
+<dd><p>Original image at blank locations
+</p></dd>
+<dt> &lsquo;<samp>clamp, 2</samp>&rsquo;</dt>
+<dd><p>Extruded edge value at blank locations
+</p></dd>
+<dt> &lsquo;<samp>mirror, 3</samp>&rsquo;</dt>
+<dd><p>Mirrored edge at blank locations
+</p></dd>
+</dl>
+<p>Default value is &lsquo;<samp>mirror</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>blocksize</samp>&rsquo;</dt>
+<dd><p>Specify the blocksize to use for motion search. Range 4-128 pixels,
+default 8.
+</p>
+</dd>
+<dt> &lsquo;<samp>contrast</samp>&rsquo;</dt>
+<dd><p>Specify the contrast threshold for blocks. Only blocks with more than
+the specified contrast (difference between darkest and lightest
+pixels) will be considered. Range 1-255, default 125.
+</p>
+</dd>
+<dt> &lsquo;<samp>search</samp>&rsquo;</dt>
+<dd><p>Specify the search strategy. Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>exhaustive, 0</samp>&rsquo;</dt>
+<dd><p>Set exhaustive search
+</p></dd>
+<dt> &lsquo;<samp>less, 1</samp>&rsquo;</dt>
+<dd><p>Set less exhaustive search.
+</p></dd>
+</dl>
+<p>Default value is &lsquo;<samp>exhaustive</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>filename</samp>&rsquo;</dt>
+<dd><p>If set then a detailed log of the motion search is written to the
+specified file.
+</p>
+</dd>
+<dt> &lsquo;<samp>opencl</samp>&rsquo;</dt>
+<dd><p>If set to 1, specify using OpenCL capabilities, only available if
+FFmpeg was configured with <code>--enable-opencl</code>. Default value is 0.
+</p>
+</dd>
+</dl>
+
+<a name="drawbox"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-drawbox">9.20 drawbox</a></h2>
+
+<p>Draw a colored box on the input image.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>The expressions which specify the top left corner coordinates of the box. Default to 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>height, h</samp>&rsquo;</dt>
+<dd><p>The expressions which specify the width and height of the box, if 0 they are interpreted as
+the input width and height. Default to 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>color, c</samp>&rsquo;</dt>
+<dd><p>Specify the color of the box to write. For the general syntax of this option,
+check the &quot;Color&quot; section in the ffmpeg-utils manual. If the special
+value <code>invert</code> is used, the box edge color is the same as the
+video with inverted luma.
+</p>
+</dd>
+<dt> &lsquo;<samp>thickness, t</samp>&rsquo;</dt>
+<dd><p>The expression which sets the thickness of the box edge. Default value is <code>3</code>.
+</p>
+<p>See below for the list of accepted constants.
+</p></dd>
+</dl>
+
+<p>The parameters for <var>x</var>, <var>y</var>, <var>w</var> and <var>h</var> and <var>t</var> are expressions containing the
+following constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
+<dd><p>The input display aspect ratio, it is the same as (<var>w</var> / <var>h</var>) * <var>sar</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>in_h, ih</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>in_w, iw</samp>&rsquo;</dt>
+<dd><p>The input width and height.
+</p>
+</dd>
+<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
+<dd><p>The input sample aspect ratio.
+</p>
+</dd>
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>The x and y offset coordinates where the box is drawn.
+</p>
+</dd>
+<dt> &lsquo;<samp>w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>The width and height of the drawn box.
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>The thickness of the drawn box.
+</p>
+<p>These constants allow the <var>x</var>, <var>y</var>, <var>w</var>, <var>h</var> and <var>t</var> expressions to refer to
+each other, so you may for example specify <code>y=x/dar</code> or <code>h=w/dar</code>.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-60"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-60">9.20.1 Examples</a></h3>
+
+<ul>
+<li>
+Draw a black box around the edge of the input image:
+<table><tr><td>&nbsp;</td><td><pre class="example">drawbox
+</pre></td></tr></table>
+
+</li><li>
+Draw a box with color red and an opacity of 50%:
+<table><tr><td>&nbsp;</td><td><pre class="example">drawbox=10:20:200:60:red@0.5
+</pre></td></tr></table>
+
+<p>The previous example can be specified as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">drawbox=x=10:y=20:w=200:h=60:color=red@0.5
+</pre></td></tr></table>
+
+</li><li>
+Fill the box with pink color:
+<table><tr><td>&nbsp;</td><td><pre class="example">drawbox=x=10:y=10:w=100:h=100:color=pink@0.5:t=max
+</pre></td></tr></table>
+
+</li><li>
+Draw a 2-pixel red 2.40:1 mask:
+<table><tr><td>&nbsp;</td><td><pre class="example">drawbox=x=-t:y=0.5*(ih-iw/2.4)-t:w=iw+t*2:h=iw/2.4+t*2:t=2:c=red
+</pre></td></tr></table>
+</li></ul>
+
+<a name="drawgrid"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-drawgrid">9.21 drawgrid</a></h2>
+
+<p>Draw a grid on the input image.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>height, h</samp>&rsquo;</dt>
+<dd><p>The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
+input width and height, respectively, minus <code>thickness</code>, so image gets
+framed. Default to 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>color, c</samp>&rsquo;</dt>
+<dd><p>Specify the color of the grid. For the general syntax of this option,
+check the &quot;Color&quot; section in the ffmpeg-utils manual. If the special
+value <code>invert</code> is used, the grid color is the same as the
+video with inverted luma.
+</p>
+</dd>
+<dt> &lsquo;<samp>thickness, t</samp>&rsquo;</dt>
+<dd><p>The expression which sets the thickness of the grid line. Default value is <code>1</code>.
+</p>
+<p>See below for the list of accepted constants.
+</p></dd>
+</dl>
+
+<p>The parameters for <var>x</var>, <var>y</var>, <var>w</var> and <var>h</var> and <var>t</var> are expressions containing the
+following constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
+<dd><p>The input display aspect ratio, it is the same as (<var>w</var> / <var>h</var>) * <var>sar</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>in_h, ih</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>in_w, iw</samp>&rsquo;</dt>
+<dd><p>The input grid cell width and height.
+</p>
+</dd>
+<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
+<dd><p>The input sample aspect ratio.
+</p>
+</dd>
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>The x and y coordinates of some point of grid intersection (meant to configure offset).
+</p>
+</dd>
+<dt> &lsquo;<samp>w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>The width and height of the drawn cell.
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>The thickness of the drawn cell.
+</p>
+<p>These constants allow the <var>x</var>, <var>y</var>, <var>w</var>, <var>h</var> and <var>t</var> expressions to refer to
+each other, so you may for example specify <code>y=x/dar</code> or <code>h=w/dar</code>.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-28"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-28">9.21.1 Examples</a></h3>
+
+<ul>
+<li>
+Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
+<table><tr><td>&nbsp;</td><td><pre class="example">drawgrid=width=100:height=100:thickness=2:color=red@0.5
+</pre></td></tr></table>
+
+</li><li>
+Draw a white 3x3 grid with an opacity of 50%:
+<table><tr><td>&nbsp;</td><td><pre class="example">drawgrid=w=iw/3:h=ih/3:t=2:c=white@0.5
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="drawtext"></a>
+</p><a name="drawtext-1"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-drawtext-1">9.22 drawtext</a></h2>
+
+<p>Draw text string or text from specified file on top of video using the
+libfreetype library.
+</p>
+<p>To enable compilation of this filter you need to configure FFmpeg with
+<code>--enable-libfreetype</code>.
+</p>
+<a name="Syntax"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Syntax">9.22.1 Syntax</a></h3>
+
+<p>The description of the accepted parameters follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>box</samp>&rsquo;</dt>
+<dd><p>Used to draw a box around text using background color.
+Value should be either 1 (enable) or 0 (disable).
+The default value of <var>box</var> is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>boxcolor</samp>&rsquo;</dt>
+<dd><p>The color to be used for drawing box around text. For the syntax of this
+option, check the &quot;Color&quot; section in the ffmpeg-utils manual.
+</p>
+<p>The default value of <var>boxcolor</var> is &quot;white&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>expansion</samp>&rsquo;</dt>
+<dd><p>Select how the <var>text</var> is expanded. Can be either <code>none</code>,
+<code>strftime</code> (deprecated) or
+<code>normal</code> (default). See the <a href="#drawtext_005fexpansion">Text expansion</a> section
+below for details.
+</p>
+</dd>
+<dt> &lsquo;<samp>fix_bounds</samp>&rsquo;</dt>
+<dd><p>If true, check and fix text coords to avoid clipping.
+</p>
+</dd>
+<dt> &lsquo;<samp>fontcolor</samp>&rsquo;</dt>
+<dd><p>The color to be used for drawing fonts. For the syntax of this option, check
+the &quot;Color&quot; section in the ffmpeg-utils manual.
+</p>
+<p>The default value of <var>fontcolor</var> is &quot;black&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>fontfile</samp>&rsquo;</dt>
+<dd><p>The font file to be used for drawing text. Path must be included.
+This parameter is mandatory.
+</p>
+</dd>
+<dt> &lsquo;<samp>fontsize</samp>&rsquo;</dt>
+<dd><p>The font size to be used for drawing text.
+The default value of <var>fontsize</var> is 16.
+</p>
+</dd>
+<dt> &lsquo;<samp>ft_load_flags</samp>&rsquo;</dt>
+<dd><p>Flags to be used for loading the fonts.
+</p>
+<p>The flags map the corresponding flags supported by libfreetype, and are
+a combination of the following values:
+</p><dl compact="compact">
+<dt> <var>default</var></dt>
+<dt> <var>no_scale</var></dt>
+<dt> <var>no_hinting</var></dt>
+<dt> <var>render</var></dt>
+<dt> <var>no_bitmap</var></dt>
+<dt> <var>vertical_layout</var></dt>
+<dt> <var>force_autohint</var></dt>
+<dt> <var>crop_bitmap</var></dt>
+<dt> <var>pedantic</var></dt>
+<dt> <var>ignore_global_advance_width</var></dt>
+<dt> <var>no_recurse</var></dt>
+<dt> <var>ignore_transform</var></dt>
+<dt> <var>monochrome</var></dt>
+<dt> <var>linear_design</var></dt>
+<dt> <var>no_autohint</var></dt>
+</dl>
+
+<p>Default value is &quot;render&quot;.
+</p>
+<p>For more information consult the documentation for the FT_LOAD_*
+libfreetype flags.
+</p>
+</dd>
+<dt> &lsquo;<samp>shadowcolor</samp>&rsquo;</dt>
+<dd><p>The color to be used for drawing a shadow behind the drawn text. For the
+syntax of this option, check the &quot;Color&quot; section in the ffmpeg-utils manual.
+</p>
+<p>The default value of <var>shadowcolor</var> is &quot;black&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>shadowx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>shadowy</samp>&rsquo;</dt>
+<dd><p>The x and y offsets for the text shadow position with respect to the
+position of the text. They can be either positive or negative
+values. Default value for both is &quot;0&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_number</samp>&rsquo;</dt>
+<dd><p>The starting frame number for the n/frame_num variable. The default value
+is &quot;0&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>tabsize</samp>&rsquo;</dt>
+<dd><p>The size in number of spaces to use for rendering the tab.
+Default value is 4.
+</p>
+</dd>
+<dt> &lsquo;<samp>timecode</samp>&rsquo;</dt>
+<dd><p>Set the initial timecode representation in &quot;hh:mm:ss[:;.]ff&quot;
+format. It can be used with or without text parameter. <var>timecode_rate</var>
+option must be specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>timecode_rate, rate, r</samp>&rsquo;</dt>
+<dd><p>Set the timecode frame rate (timecode only).
+</p>
+</dd>
+<dt> &lsquo;<samp>text</samp>&rsquo;</dt>
+<dd><p>The text string to be drawn. The text must be a sequence of UTF-8
+encoded characters.
+This parameter is mandatory if no file is specified with the parameter
+<var>textfile</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>textfile</samp>&rsquo;</dt>
+<dd><p>A text file containing text to be drawn. The text must be a sequence
+of UTF-8 encoded characters.
+</p>
+<p>This parameter is mandatory if no text string is specified with the
+parameter <var>text</var>.
+</p>
+<p>If both <var>text</var> and <var>textfile</var> are specified, an error is thrown.
+</p>
+</dd>
+<dt> &lsquo;<samp>reload</samp>&rsquo;</dt>
+<dd><p>If set to 1, the <var>textfile</var> will be reloaded before each frame.
+Be sure to update it atomically, or it may be read partially, or even fail.
+</p>
+</dd>
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>The expressions which specify the offsets where text will be drawn
+within the video frame. They are relative to the top/left border of the
+output image.
+</p>
+<p>The default value of <var>x</var> and <var>y</var> is &quot;0&quot;.
+</p>
+<p>See below for the list of accepted constants and functions.
+</p></dd>
+</dl>
+
+<p>The parameters for <var>x</var> and <var>y</var> are expressions containing the
+following constants and functions:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
+<dd><p>input display aspect ratio, it is the same as (<var>w</var> / <var>h</var>) * <var>sar</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>line_h, lh</samp>&rsquo;</dt>
+<dd><p>the height of each text line
+</p>
+</dd>
+<dt> &lsquo;<samp>main_h, h, H</samp>&rsquo;</dt>
+<dd><p>the input height
+</p>
+</dd>
+<dt> &lsquo;<samp>main_w, w, W</samp>&rsquo;</dt>
+<dd><p>the input width
+</p>
+</dd>
+<dt> &lsquo;<samp>max_glyph_a, ascent</samp>&rsquo;</dt>
+<dd><p>the maximum distance from the baseline to the highest/upper grid
+coordinate used to place a glyph outline point, for all the rendered
+glyphs.
+It is a positive value, due to the grid&rsquo;s orientation with the Y axis
+upwards.
+</p>
+</dd>
+<dt> &lsquo;<samp>max_glyph_d, descent</samp>&rsquo;</dt>
+<dd><p>the maximum distance from the baseline to the lowest grid coordinate
+used to place a glyph outline point, for all the rendered glyphs.
+This is a negative value, due to the grid&rsquo;s orientation, with the Y axis
+upwards.
+</p>
+</dd>
+<dt> &lsquo;<samp>max_glyph_h</samp>&rsquo;</dt>
+<dd><p>maximum glyph height, that is the maximum height for all the glyphs
+contained in the rendered text, it is equivalent to <var>ascent</var> -
+<var>descent</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>max_glyph_w</samp>&rsquo;</dt>
+<dd><p>maximum glyph width, that is the maximum width for all the glyphs
+contained in the rendered text
+</p>
+</dd>
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>the number of input frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>rand(min, max)</samp>&rsquo;</dt>
+<dd><p>return a random number included between <var>min</var> and <var>max</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
+<dd><p>input sample aspect ratio
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>timestamp expressed in seconds, NAN if the input timestamp is unknown
+</p>
+</dd>
+<dt> &lsquo;<samp>text_h, th</samp>&rsquo;</dt>
+<dd><p>the height of the rendered text
+</p>
+</dd>
+<dt> &lsquo;<samp>text_w, tw</samp>&rsquo;</dt>
+<dd><p>the width of the rendered text
+</p>
+</dd>
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>the x and y offset coordinates where the text is drawn.
+</p>
+<p>These parameters allow the <var>x</var> and <var>y</var> expressions to refer
+each other, so you can for example specify <code>y=x/dar</code>.
+</p></dd>
+</dl>
+
+<p>If libavfilter was built with <code>--enable-fontconfig</code>, then
+&lsquo;<samp>fontfile</samp>&rsquo; can be a fontconfig pattern or omitted.
+</p>
+<p><a name="drawtext_005fexpansion"></a>
+</p><a name="Text-expansion"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Text-expansion">9.22.2 Text expansion</a></h3>
+
+<p>If &lsquo;<samp>expansion</samp>&rsquo; is set to <code>strftime</code>,
+the filter recognizes strftime() sequences in the provided text and
+expands them accordingly. Check the documentation of strftime(). This
+feature is deprecated.
+</p>
+<p>If &lsquo;<samp>expansion</samp>&rsquo; is set to <code>none</code>, the text is printed verbatim.
+</p>
+<p>If &lsquo;<samp>expansion</samp>&rsquo; is set to <code>normal</code> (which is the default),
+the following expansion mechanism is used.
+</p>
+<p>The backslash character &rsquo;\&rsquo;, followed by any character, always expands to
+the second character.
+</p>
+<p>Sequence of the form <code>%{...}</code> are expanded. The text between the
+braces is a function name, possibly followed by arguments separated by &rsquo;:&rsquo;.
+If the arguments contain special characters or delimiters (&rsquo;:&rsquo; or &rsquo;}&rsquo;),
+they should be escaped.
+</p>
+<p>Note that they probably must also be escaped as the value for the
+&lsquo;<samp>text</samp>&rsquo; option in the filter argument string and as the filter
+argument in the filtergraph description, and possibly also for the shell,
+that makes up to four levels of escaping; using a text file avoids these
+problems.
+</p>
+<p>The following functions are available:
+</p>
+<dl compact="compact">
+<dt> <code>expr, e</code></dt>
+<dd><p>The expression evaluation result.
+</p>
+<p>It must take one argument specifying the expression to be evaluated,
+which accepts the same constants and functions as the <var>x</var> and
+<var>y</var> values. Note that not all constants should be used, for
+example the text size is not known when evaluating the expression, so
+the constants <var>text_w</var> and <var>text_h</var> will have an undefined
+value.
+</p>
+</dd>
+<dt> <code>gmtime</code></dt>
+<dd><p>The time at which the filter is running, expressed in UTC.
+It can accept an argument: a strftime() format string.
+</p>
+</dd>
+<dt> <code>localtime</code></dt>
+<dd><p>The time at which the filter is running, expressed in the local time zone.
+It can accept an argument: a strftime() format string.
+</p>
+</dd>
+<dt> <code>metadata</code></dt>
+<dd><p>Frame metadata. It must take one argument specifying metadata key.
+</p>
+</dd>
+<dt> <code>n, frame_num</code></dt>
+<dd><p>The frame number, starting from 0.
+</p>
+</dd>
+<dt> <code>pict_type</code></dt>
+<dd><p>A 1 character description of the current picture type.
+</p>
+</dd>
+<dt> <code>pts</code></dt>
+<dd><p>The timestamp of the current frame, in seconds, with microsecond accuracy.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-32"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-32">9.22.3 Examples</a></h3>
+
+<ul>
+<li>
+Draw &quot;Test Text&quot; with font FreeSerif, using the default values for the
+optional parameters.
+
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'&quot;
+</pre></td></tr></table>
+
+</li><li>
+Draw &rsquo;Test Text&rsquo; with font FreeSerif of size 24 at position x=100
+and y=50 (counting from the top-left corner of the screen), text is
+yellow with a red box around it. Both the text and the box have an
+opacity of 20%.
+
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
+          x=100: y=50: fontsize=24: fontcolor=yellow@0.2: box=1: boxcolor=red@0.2&quot;
+</pre></td></tr></table>
+
+<p>Note that the double quotes are not necessary if spaces are not used
+within the parameter list.
+</p>
+</li><li>
+Show the text at the center of the video frame:
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h-line_h)/2&quot;
+</pre></td></tr></table>
+
+</li><li>
+Show a text line sliding from right to left in the last row of the video
+frame. The file &lsquo;<tt>LONG_LINE</tt>&rsquo; is assumed to contain a single line
+with no newlines.
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t&quot;
+</pre></td></tr></table>
+
+</li><li>
+Show the content of file &lsquo;<tt>CREDITS</tt>&rsquo; off the bottom of the frame and scroll up.
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t&quot;
+</pre></td></tr></table>
+
+</li><li>
+Draw a single green letter &quot;g&quot;, at the center of the input video.
+The glyph baseline is placed at half screen height.
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent&quot;
+</pre></td></tr></table>
+
+</li><li>
+Show text for 1 second every 3 seconds:
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'&quot;
+</pre></td></tr></table>
+
+</li><li>
+Use fontconfig to set the font. Note that the colons need to be escaped.
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
+</pre></td></tr></table>
+
+</li><li>
+Print the date of a real-time encoding (see strftime(3)):
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext='fontfile=FreeSans.ttf:text=%{localtime:%a %b %d %Y}'
+</pre></td></tr></table>
+
+</li></ul>
+
+<p>For more information about libfreetype, check:
+<a href="http://www.freetype.org/">http://www.freetype.org/</a>.
+</p>
+<p>For more information about fontconfig, check:
+<a href="http://freedesktop.org/software/fontconfig/fontconfig-user.html">http://freedesktop.org/software/fontconfig/fontconfig-user.html</a>.
+</p>
+<a name="edgedetect"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-edgedetect">9.23 edgedetect</a></h2>
+
+<p>Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>low</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>high</samp>&rsquo;</dt>
+<dd><p>Set low and high threshold values used by the Canny thresholding
+algorithm.
+</p>
+<p>The high threshold selects the &quot;strong&quot; edge pixels, which are then
+connected through 8-connectivity with the &quot;weak&quot; edge pixels selected
+by the low threshold.
+</p>
+<p><var>low</var> and <var>high</var> threshold values must be choosen in the range
+[0,1], and <var>low</var> should be lesser or equal to <var>high</var>.
+</p>
+<p>Default value for <var>low</var> is <code>20/255</code>, and default value for <var>high</var>
+is <code>50/255</code>.
+</p></dd>
+</dl>
+
+<p>Example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">edgedetect=low=0.1:high=0.4
+</pre></td></tr></table>
+
+<a name="extractplanes"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-extractplanes">9.24 extractplanes</a></h2>
+
+<p>Extract color channel components from input video stream into
+separate grayscale video streams.
+</p>
+<p>The filter accepts the following option:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>planes</samp>&rsquo;</dt>
+<dd><p>Set plane(s) to extract.
+</p>
+<p>Available values for planes are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>u</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>v</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>r</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>g</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+</dl>
+
+<p>Choosing planes not available in the input will result in an error.
+That means you cannot select <code>r</code>, <code>g</code>, <code>b</code> planes
+with <code>y</code>, <code>u</code>, <code>v</code> planes at same time.
+</p></dd>
+</dl>
+
+<a name="Examples-54"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-54">9.24.1 Examples</a></h3>
+
+<ul>
+<li>
+Extract luma, u and v color channel component from input video frame
+into 3 grayscale outputs:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i video.avi -filter_complex 'extractplanes=y+u+v[y][u][v]' -map '[y]' y.avi -map '[u]' u.avi -map '[v]' v.avi
+</pre></td></tr></table>
+</li></ul>
+
+<a name="elbg"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-elbg">9.25 elbg</a></h2>
+
+<p>Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
+</p>
+<p>For each input image, the filter will compute the optimal mapping from
+the input to the output given the codebook length, that is the number
+of distinct output colors.
+</p>
+<p>This filter accepts the following options.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>codebook_length, l</samp>&rsquo;</dt>
+<dd><p>Set codebook length. The value must be a positive integer, and
+represents the number of distinct output colors. Default value is 256.
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_steps, n</samp>&rsquo;</dt>
+<dd><p>Set the maximum number of iterations to apply for computing the optimal
+mapping. The higher the value the better the result and the higher the
+computation time. Default value is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>seed, s</samp>&rsquo;</dt>
+<dd><p>Set a random seed, must be an integer included between 0 and
+UINT32_MAX. If not specified, or if explicitly set to -1, the filter
+will try to use a good random seed on a best effort basis.
+</p></dd>
+</dl>
+
+<a name="fade"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-fade">9.26 fade</a></h2>
+
+<p>Apply fade-in/out effect to input video.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>type, t</samp>&rsquo;</dt>
+<dd><p>The effect type &ndash; can be either &quot;in&quot; for fade-in, or &quot;out&quot; for a fade-out
+effect.
+Default is <code>in</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_frame, s</samp>&rsquo;</dt>
+<dd><p>Specify the number of the start frame for starting to apply the fade
+effect. Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_frames, n</samp>&rsquo;</dt>
+<dd><p>The number of frames for which the fade effect has to last. At the end of the
+fade-in effect the output video will have the same intensity as the input video,
+at the end of the fade-out transition the output video will be filled with the
+selected &lsquo;<samp>color</samp>&rsquo;.
+Default is 25.
+</p>
+</dd>
+<dt> &lsquo;<samp>alpha</samp>&rsquo;</dt>
+<dd><p>If set to 1, fade only alpha channel, if one exists on the input.
+Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_time, st</samp>&rsquo;</dt>
+<dd><p>Specify the timestamp (in seconds) of the frame to start to apply the fade
+effect. If both start_frame and start_time are specified, the fade will start at
+whichever comes last.  Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
+<dd><p>The number of seconds for which the fade effect has to last. At the end of the
+fade-in effect the output video will have the same intensity as the input video,
+at the end of the fade-out transition the output video will be filled with the
+selected &lsquo;<samp>color</samp>&rsquo;.
+If both duration and nb_frames are specified, duration is used. Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>color, c</samp>&rsquo;</dt>
+<dd><p>Specify the color of the fade. Default is &quot;black&quot;.
+</p></dd>
+</dl>
+
+<a name="Examples-47"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-47">9.26.1 Examples</a></h3>
+
+<ul>
+<li>
+Fade in first 30 frames of video:
+<table><tr><td>&nbsp;</td><td><pre class="example">fade=in:0:30
+</pre></td></tr></table>
+
+<p>The command above is equivalent to:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">fade=t=in:s=0:n=30
+</pre></td></tr></table>
+
+</li><li>
+Fade out last 45 frames of a 200-frame video:
+<table><tr><td>&nbsp;</td><td><pre class="example">fade=out:155:45
+fade=type=out:start_frame=155:nb_frames=45
+</pre></td></tr></table>
+
+</li><li>
+Fade in first 25 frames and fade out last 25 frames of a 1000-frame video:
+<table><tr><td>&nbsp;</td><td><pre class="example">fade=in:0:25, fade=out:975:25
+</pre></td></tr></table>
+
+</li><li>
+Make first 5 frames yellow, then fade in from frame 5-24:
+<table><tr><td>&nbsp;</td><td><pre class="example">fade=in:5:20:color=yellow
+</pre></td></tr></table>
+
+</li><li>
+Fade in alpha over first 25 frames of video:
+<table><tr><td>&nbsp;</td><td><pre class="example">fade=in:0:25:alpha=1
+</pre></td></tr></table>
+
+</li><li>
+Make first 5.5 seconds black, then fade in for 0.5 seconds:
+<table><tr><td>&nbsp;</td><td><pre class="example">fade=t=in:st=5.5:d=0.5
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="field"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-field">9.27 field</a></h2>
+
+<p>Extract a single field from an interlaced image using stride
+arithmetic to avoid wasting CPU time. The output frames are marked as
+non-interlaced.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>type</samp>&rsquo;</dt>
+<dd><p>Specify whether to extract the top (if the value is <code>0</code> or
+<code>top</code>) or the bottom field (if the value is <code>1</code> or
+<code>bottom</code>).
+</p></dd>
+</dl>
+
+<a name="fieldmatch"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-fieldmatch">9.28 fieldmatch</a></h2>
+
+<p>Field matching filter for inverse telecine. It is meant to reconstruct the
+progressive frames from a telecined stream. The filter does not drop duplicated
+frames, so to achieve a complete inverse telecine <code>fieldmatch</code> needs to be
+followed by a decimation filter such as <a href="#decimate">decimate</a> in the filtergraph.
+</p>
+<p>The separation of the field matching and the decimation is notably motivated by
+the possibility of inserting a de-interlacing filter fallback between the two.
+If the source has mixed telecined and real interlaced content,
+<code>fieldmatch</code> will not be able to match fields for the interlaced parts.
+But these remaining combed frames will be marked as interlaced, and thus can be
+de-interlaced by a later filter such as <a href="#yadif">yadif</a> before decimation.
+</p>
+<p>In addition to the various configuration options, <code>fieldmatch</code> can take an
+optional second stream, activated through the &lsquo;<samp>ppsrc</samp>&rsquo; option. If
+enabled, the frames reconstruction will be based on the fields and frames from
+this second stream. This allows the first input to be pre-processed in order to
+help the various algorithms of the filter, while keeping the output lossless
+(assuming the fields are matched properly). Typically, a field-aware denoiser,
+or brightness/contrast adjustments can help.
+</p>
+<p>Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
+and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
+which <code>fieldmatch</code> is based on. While the semantic and usage are very
+close, some behaviour and options names can differ.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>order</samp>&rsquo;</dt>
+<dd><p>Specify the assumed field order of the input stream. Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Auto detect parity (use FFmpeg&rsquo;s internal parity value).
+</p></dd>
+<dt> &lsquo;<samp>bff</samp>&rsquo;</dt>
+<dd><p>Assume bottom field first.
+</p></dd>
+<dt> &lsquo;<samp>tff</samp>&rsquo;</dt>
+<dd><p>Assume top field first.
+</p></dd>
+</dl>
+
+<p>Note that it is sometimes recommended not to trust the parity announced by the
+stream.
+</p>
+<p>Default value is <var>auto</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Set the matching mode or strategy to use. &lsquo;<samp>pc</samp>&rsquo; mode is the safest in the
+sense that it won&rsquo;t risk creating jerkiness due to duplicate frames when
+possible, but if there are bad edits or blended fields it will end up
+outputting combed frames when a good match might actually exist. On the other
+hand, &lsquo;<samp>pcn_ub</samp>&rsquo; mode is the most risky in terms of creating jerkiness,
+but will almost always find a good frame if there is one. The other values are
+all somewhere in between &lsquo;<samp>pc</samp>&rsquo; and &lsquo;<samp>pcn_ub</samp>&rsquo; in terms of risking
+jerkiness and creating duplicate frames versus finding good matches in sections
+with bad edits, orphaned fields, blended fields, etc.
+</p>
+<p>More details about p/c/n/u/b are available in <a href="#p_002fc_002fn_002fu_002fb-meaning">p/c/n/u/b meaning</a> section.
+</p>
+<p>Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>pc</samp>&rsquo;</dt>
+<dd><p>2-way matching (p/c)
+</p></dd>
+<dt> &lsquo;<samp>pc_n</samp>&rsquo;</dt>
+<dd><p>2-way matching, and trying 3rd match if still combed (p/c + n)
+</p></dd>
+<dt> &lsquo;<samp>pc_u</samp>&rsquo;</dt>
+<dd><p>2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
+</p></dd>
+<dt> &lsquo;<samp>pc_n_ub</samp>&rsquo;</dt>
+<dd><p>2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
+still combed (p/c + n + u/b)
+</p></dd>
+<dt> &lsquo;<samp>pcn</samp>&rsquo;</dt>
+<dd><p>3-way matching (p/c/n)
+</p></dd>
+<dt> &lsquo;<samp>pcn_ub</samp>&rsquo;</dt>
+<dd><p>3-way matching, and trying 4th/5th matches if all 3 of the original matches are
+detected as combed (p/c/n + u/b)
+</p></dd>
+</dl>
+
+<p>The parenthesis at the end indicate the matches that would be used for that
+mode assuming &lsquo;<samp>order</samp>&rsquo;=<var>tff</var> (and &lsquo;<samp>field</samp>&rsquo; on <var>auto</var> or
+<var>top</var>).
+</p>
+<p>In terms of speed &lsquo;<samp>pc</samp>&rsquo; mode is by far the fastest and &lsquo;<samp>pcn_ub</samp>&rsquo; is
+the slowest.
+</p>
+<p>Default value is <var>pc_n</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>ppsrc</samp>&rsquo;</dt>
+<dd><p>Mark the main input stream as a pre-processed input, and enable the secondary
+input stream as the clean source to pick the fields from. See the filter
+introduction for more details. It is similar to the &lsquo;<samp>clip2</samp>&rsquo; feature from
+VFM/TFM.
+</p>
+<p>Default value is <code>0</code> (disabled).
+</p>
+</dd>
+<dt> &lsquo;<samp>field</samp>&rsquo;</dt>
+<dd><p>Set the field to match from. It is recommended to set this to the same value as
+&lsquo;<samp>order</samp>&rsquo; unless you experience matching failures with that setting. In
+certain circumstances changing the field that is used to match from can have a
+large impact on matching performance. Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Automatic (same value as &lsquo;<samp>order</samp>&rsquo;).
+</p></dd>
+<dt> &lsquo;<samp>bottom</samp>&rsquo;</dt>
+<dd><p>Match from the bottom field.
+</p></dd>
+<dt> &lsquo;<samp>top</samp>&rsquo;</dt>
+<dd><p>Match from the top field.
+</p></dd>
+</dl>
+
+<p>Default value is <var>auto</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>mchroma</samp>&rsquo;</dt>
+<dd><p>Set whether or not chroma is included during the match comparisons. In most
+cases it is recommended to leave this enabled. You should set this to <code>0</code>
+only if your clip has bad chroma problems such as heavy rainbowing or other
+artifacts. Setting this to <code>0</code> could also be used to speed things up at
+the cost of some accuracy.
+</p>
+<p>Default value is <code>1</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>y0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y1</samp>&rsquo;</dt>
+<dd><p>These define an exclusion band which excludes the lines between &lsquo;<samp>y0</samp>&rsquo; and
+&lsquo;<samp>y1</samp>&rsquo; from being included in the field matching decision. An exclusion
+band can be used to ignore subtitles, a logo, or other things that may
+interfere with the matching. &lsquo;<samp>y0</samp>&rsquo; sets the starting scan line and
+&lsquo;<samp>y1</samp>&rsquo; sets the ending line; all lines in between &lsquo;<samp>y0</samp>&rsquo; and
+&lsquo;<samp>y1</samp>&rsquo; (including &lsquo;<samp>y0</samp>&rsquo; and &lsquo;<samp>y1</samp>&rsquo;) will be ignored. Setting
+&lsquo;<samp>y0</samp>&rsquo; and &lsquo;<samp>y1</samp>&rsquo; to the same value will disable the feature.
+&lsquo;<samp>y0</samp>&rsquo; and &lsquo;<samp>y1</samp>&rsquo; defaults to <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>scthresh</samp>&rsquo;</dt>
+<dd><p>Set the scene change detection threshold as a percentage of maximum change on
+the luma plane. Good values are in the <code>[8.0, 14.0]</code> range. Scene change
+detection is only relevant in case &lsquo;<samp>combmatch</samp>&rsquo;=<var>sc</var>.  The range for
+&lsquo;<samp>scthresh</samp>&rsquo; is <code>[0.0, 100.0]</code>.
+</p>
+<p>Default value is <code>12.0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>combmatch</samp>&rsquo;</dt>
+<dd><p>When &lsquo;<samp>combatch</samp>&rsquo; is not <var>none</var>, <code>fieldmatch</code> will take into
+account the combed scores of matches when deciding what match to use as the
+final match. Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>No final matching based on combed scores.
+</p></dd>
+<dt> &lsquo;<samp>sc</samp>&rsquo;</dt>
+<dd><p>Combed scores are only used when a scene change is detected.
+</p></dd>
+<dt> &lsquo;<samp>full</samp>&rsquo;</dt>
+<dd><p>Use combed scores all the time.
+</p></dd>
+</dl>
+
+<p>Default is <var>sc</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>combdbg</samp>&rsquo;</dt>
+<dd><p>Force <code>fieldmatch</code> to calculate the combed metrics for certain matches and
+print them. This setting is known as &lsquo;<samp>micout</samp>&rsquo; in TFM/VFM vocabulary.
+Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>No forced calculation.
+</p></dd>
+<dt> &lsquo;<samp>pcn</samp>&rsquo;</dt>
+<dd><p>Force p/c/n calculations.
+</p></dd>
+<dt> &lsquo;<samp>pcnub</samp>&rsquo;</dt>
+<dd><p>Force p/c/n/u/b calculations.
+</p></dd>
+</dl>
+
+<p>Default value is <var>none</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>cthresh</samp>&rsquo;</dt>
+<dd><p>This is the area combing threshold used for combed frame detection. This
+essentially controls how &quot;strong&quot; or &quot;visible&quot; combing must be to be detected.
+Larger values mean combing must be more visible and smaller values mean combing
+can be less visible or strong and still be detected. Valid settings are from
+<code>-1</code> (every pixel will be detected as combed) to <code>255</code> (no pixel will
+be detected as combed). This is basically a pixel difference value. A good
+range is <code>[8, 12]</code>.
+</p>
+<p>Default value is <code>9</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+<dd><p>Sets whether or not chroma is considered in the combed frame decision.  Only
+disable this if your source has chroma problems (rainbowing, etc.) that are
+causing problems for the combed frame detection with chroma enabled. Actually,
+using &lsquo;<samp>chroma</samp>&rsquo;=<var>0</var> is usually more reliable, except for the case
+where there is chroma only combing in the source.
+</p>
+<p>Default value is <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>blockx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>blocky</samp>&rsquo;</dt>
+<dd><p>Respectively set the x-axis and y-axis size of the window used during combed
+frame detection. This has to do with the size of the area in which
+&lsquo;<samp>combpel</samp>&rsquo; pixels are required to be detected as combed for a frame to be
+declared combed. See the &lsquo;<samp>combpel</samp>&rsquo; parameter description for more info.
+Possible values are any number that is a power of 2 starting at 4 and going up
+to 512.
+</p>
+<p>Default value is <code>16</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>combpel</samp>&rsquo;</dt>
+<dd><p>The number of combed pixels inside any of the &lsquo;<samp>blocky</samp>&rsquo; by
+&lsquo;<samp>blockx</samp>&rsquo; size blocks on the frame for the frame to be detected as
+combed. While &lsquo;<samp>cthresh</samp>&rsquo; controls how &quot;visible&quot; the combing must be, this
+setting controls &quot;how much&quot; combing there must be in any localized area (a
+window defined by the &lsquo;<samp>blockx</samp>&rsquo; and &lsquo;<samp>blocky</samp>&rsquo; settings) on the
+frame. Minimum value is <code>0</code> and maximum is <code>blocky x blockx</code> (at
+which point no frames will ever be detected as combed). This setting is known
+as &lsquo;<samp>MI</samp>&rsquo; in TFM/VFM vocabulary.
+</p>
+<p>Default value is <code>80</code>.
+</p></dd>
+</dl>
+
+<p><a name="p_002fc_002fn_002fu_002fb-meaning"></a>
+</p><a name="p_002fc_002fn_002fu_002fb-meaning-1"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-p_002fc_002fn_002fu_002fb-meaning-1">9.28.1 p/c/n/u/b meaning</a></h3>
+
+<a name="p_002fc_002fn"></a>
+<h4 class="subsubsection"><a href="ffmpeg-filters.html#toc-p_002fc_002fn">9.28.1.1 p/c/n</a></h4>
+
+<p>We assume the following telecined stream:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">Top fields:     1 2 2 3 4
+Bottom fields:  1 2 3 4 4
+</pre></td></tr></table>
+
+<p>The numbers correspond to the progressive frame the fields relate to. Here, the
+first two frames are progressive, the 3rd and 4th are combed, and so on.
+</p>
+<p>When <code>fieldmatch</code> is configured to run a matching from bottom
+(&lsquo;<samp>field</samp>&rsquo;=<var>bottom</var>) this is how this input stream get transformed:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">Input stream:
+                T     1 2 2 3 4
+                B     1 2 3 4 4   &lt;-- matching reference
+
+Matches:              c c n n c
+
+Output stream:
+                T     1 2 3 4 4
+                B     1 2 3 4 4
+</pre></td></tr></table>
+
+<p>As a result of the field matching, we can see that some frames get duplicated.
+To perform a complete inverse telecine, you need to rely on a decimation filter
+after this operation. See for instance the <a href="#decimate">decimate</a> filter.
+</p>
+<p>The same operation now matching from top fields (&lsquo;<samp>field</samp>&rsquo;=<var>top</var>)
+looks like this:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">Input stream:
+                T     1 2 2 3 4   &lt;-- matching reference
+                B     1 2 3 4 4
+
+Matches:              c c p p c
+
+Output stream:
+                T     1 2 2 3 4
+                B     1 2 2 3 4
+</pre></td></tr></table>
+
+<p>In these examples, we can see what <var>p</var>, <var>c</var> and <var>n</var> mean;
+basically, they refer to the frame and field of the opposite parity:
+</p>
+<ul>
+<li> <var>p</var> matches the field of the opposite parity in the previous frame
+</li><li> <var>c</var> matches the field of the opposite parity in the current frame
+</li><li> <var>n</var> matches the field of the opposite parity in the next frame
+</li></ul>
+
+<a name="u_002fb"></a>
+<h4 class="subsubsection"><a href="ffmpeg-filters.html#toc-u_002fb">9.28.1.2 u/b</a></h4>
+
+<p>The <var>u</var> and <var>b</var> matching are a bit special in the sense that they match
+from the opposite parity flag. In the following examples, we assume that we are
+currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
+&rsquo;x&rsquo; is placed above and below each matched fields.
+</p>
+<p>With bottom matching (&lsquo;<samp>field</samp>&rsquo;=<var>bottom</var>):
+</p><table><tr><td>&nbsp;</td><td><pre class="example">Match:           c         p           n          b          u
+
+                 x       x               x        x          x
+  Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
+  Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
+                 x         x           x        x              x
+
+Output frames:
+                 2          1          2          2          2
+                 2          2          2          1          3
+</pre></td></tr></table>
+
+<p>With top matching (&lsquo;<samp>field</samp>&rsquo;=<var>top</var>):
+</p><table><tr><td>&nbsp;</td><td><pre class="example">Match:           c         p           n          b          u
+
+                 x         x           x        x              x
+  Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
+  Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
+                 x       x               x        x          x
+
+Output frames:
+                 2          2          2          1          2
+                 2          1          3          2          2
+</pre></td></tr></table>
+
+<a name="Examples-10"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-10">9.28.2 Examples</a></h3>
+
+<p>Simple IVTC of a top field first telecined stream:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">fieldmatch=order=tff:combmatch=none, decimate
+</pre></td></tr></table>
+
+<p>Advanced IVTC, with fallback on <a href="#yadif">yadif</a> for still combed frames:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
+</pre></td></tr></table>
+
+<a name="fieldorder"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-fieldorder">9.29 fieldorder</a></h2>
+
+<p>Transform the field order of the input video.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>order</samp>&rsquo;</dt>
+<dd><p>Output field order. Valid values are <var>tff</var> for top field first or <var>bff</var>
+for bottom field first.
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>tff</samp>&rsquo;.
+</p>
+<p>Transformation is achieved by shifting the picture content up or down
+by one line, and filling the remaining line with appropriate picture content.
+This method is consistent with most broadcast field order converters.
+</p>
+<p>If the input video is not flagged as being interlaced, or it is already
+flagged as being of the required output field order then this filter does
+not alter the incoming video.
+</p>
+<p>This filter is very useful when converting to or from PAL DV material,
+which is bottom field first.
+</p>
+<p>For example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.vob -vf &quot;fieldorder=bff&quot; out.dv
+</pre></td></tr></table>
+
+<a name="fifo"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-fifo">9.30 fifo</a></h2>
+
+<p>Buffer input images and send them when they are requested.
+</p>
+<p>This filter is mainly useful when auto-inserted by the libavfilter
+framework.
+</p>
+<p>The filter does not take parameters.
+</p>
+<p><a name="format"></a>
+</p><a name="format-1"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-format-1">9.31 format</a></h2>
+
+<p>Convert the input video to one of the specified pixel formats.
+Libavfilter will try to pick one that is supported for the input to
+the next filter.
+</p>
+<p>This filter accepts the following parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>pix_fmts</samp>&rsquo;</dt>
+<dd><p>A &rsquo;|&rsquo;-separated list of pixel format names, for example
+&quot;pix_fmts=yuv420p|monow|rgb24&quot;.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-65"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-65">9.31.1 Examples</a></h3>
+
+<ul>
+<li>
+Convert the input video to the format <var>yuv420p</var>
+<table><tr><td>&nbsp;</td><td><pre class="example">format=pix_fmts=yuv420p
+</pre></td></tr></table>
+
+<p>Convert the input video to any of the formats in the list
+</p><table><tr><td>&nbsp;</td><td><pre class="example">format=pix_fmts=yuv420p|yuv444p|yuv410p
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="fps"></a>
+</p><a name="fps-1"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-fps-1">9.32 fps</a></h2>
+
+<p>Convert the video to specified constant frame rate by duplicating or dropping
+frames as necessary.
+</p>
+<p>This filter accepts the following named parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>fps</samp>&rsquo;</dt>
+<dd><p>Desired output frame rate. The default is <code>25</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>round</samp>&rsquo;</dt>
+<dd><p>Rounding method.
+</p>
+<p>Possible values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>zero round towards 0
+</p></dd>
+<dt> &lsquo;<samp>inf</samp>&rsquo;</dt>
+<dd><p>round away from 0
+</p></dd>
+<dt> &lsquo;<samp>down</samp>&rsquo;</dt>
+<dd><p>round towards -infinity
+</p></dd>
+<dt> &lsquo;<samp>up</samp>&rsquo;</dt>
+<dd><p>round towards +infinity
+</p></dd>
+<dt> &lsquo;<samp>near</samp>&rsquo;</dt>
+<dd><p>round to nearest
+</p></dd>
+</dl>
+<p>The default is <code>near</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_time</samp>&rsquo;</dt>
+<dd><p>Assume the first PTS should be the given value, in seconds. This allows for
+padding/trimming at the start of stream. By default, no assumption is made
+about the first frame&rsquo;s expected PTS, so no padding or trimming is done.
+For example, this could be set to 0 to pad the beginning with duplicates of
+the first frame if a video stream starts after the audio stream or to trim any
+frames with a negative PTS.
+</p>
+</dd>
+</dl>
+
+<p>Alternatively, the options can be specified as a flat string:
+<var>fps</var>[:<var>round</var>].
+</p>
+<p>See also the <a href="#setpts">setpts</a> filter.
+</p>
+<a name="Examples-72"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-72">9.32.1 Examples</a></h3>
+
+<ul>
+<li>
+A typical usage in order to set the fps to 25:
+<table><tr><td>&nbsp;</td><td><pre class="example">fps=fps=25
+</pre></td></tr></table>
+
+</li><li>
+Sets the fps to 24, using abbreviation and rounding method to round to nearest:
+<table><tr><td>&nbsp;</td><td><pre class="example">fps=fps=film:round=near
+</pre></td></tr></table>
+</li></ul>
+
+<a name="framestep"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-framestep">9.33 framestep</a></h2>
+
+<p>Select one frame every N-th frame.
+</p>
+<p>This filter accepts the following option:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>step</samp>&rsquo;</dt>
+<dd><p>Select frame after every <code>step</code> frames.
+Allowed values are positive integers higher than 0. Default value is <code>1</code>.
+</p></dd>
+</dl>
+
+<p><a name="frei0r"></a>
+</p><a name="frei0r-1"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-frei0r-1">9.34 frei0r</a></h2>
+
+<p>Apply a frei0r effect to the input video.
+</p>
+<p>To enable compilation of this filter you need to install the frei0r
+header and configure FFmpeg with <code>--enable-frei0r</code>.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filter_name</samp>&rsquo;</dt>
+<dd><p>The name to the frei0r effect to load. If the environment variable
+<code>FREI0R_PATH</code> is defined, the frei0r effect is searched in each one of the
+directories specified by the colon separated list in <code>FREIOR_PATH</code>,
+otherwise in the standard frei0r paths, which are in this order:
+&lsquo;<tt>HOME/.frei0r-1/lib/</tt>&rsquo;, &lsquo;<tt>/usr/local/lib/frei0r-1/</tt>&rsquo;,
+&lsquo;<tt>/usr/lib/frei0r-1/</tt>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>filter_params</samp>&rsquo;</dt>
+<dd><p>A &rsquo;|&rsquo;-separated list of parameters to pass to the frei0r effect.
+</p>
+</dd>
+</dl>
+
+<p>A frei0r effect parameter can be a boolean (whose values are specified
+with &quot;y&quot; and &quot;n&quot;), a double, a color (specified by the syntax
+<var>R</var>/<var>G</var>/<var>B</var>, (<var>R</var>, <var>G</var>, and <var>B</var> being float
+numbers from 0.0 to 1.0) or by a color description specified in the &quot;Color&quot;
+section in the ffmpeg-utils manual), a position (specified by the syntax <var>X</var>/<var>Y</var>,
+<var>X</var> and <var>Y</var> being float numbers) and a string.
+</p>
+<p>The number and kind of parameters depend on the loaded effect. If an
+effect parameter is not specified the default value is set.
+</p>
+<a name="Examples-42"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-42">9.34.1 Examples</a></h3>
+
+<ul>
+<li>
+Apply the distort0r effect, set the first two double parameters:
+<table><tr><td>&nbsp;</td><td><pre class="example">frei0r=filter_name=distort0r:filter_params=0.5|0.01
+</pre></td></tr></table>
+
+</li><li>
+Apply the colordistance effect, take a color as first parameter:
+<table><tr><td>&nbsp;</td><td><pre class="example">frei0r=colordistance:0.2/0.3/0.4
+frei0r=colordistance:violet
+frei0r=colordistance:0x112233
+</pre></td></tr></table>
+
+</li><li>
+Apply the perspective effect, specify the top left and top right image
+positions:
+<table><tr><td>&nbsp;</td><td><pre class="example">frei0r=perspective:0.2/0.2|0.8/0.2
+</pre></td></tr></table>
+</li></ul>
+
+<p>For more information see:
+<a href="http://frei0r.dyne.org">http://frei0r.dyne.org</a>
+</p>
+<a name="geq"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-geq">9.35 geq</a></h2>
+
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>lum_expr, lum</samp>&rsquo;</dt>
+<dd><p>Set the luminance expression.
+</p></dd>
+<dt> &lsquo;<samp>cb_expr, cb</samp>&rsquo;</dt>
+<dd><p>Set the chrominance blue expression.
+</p></dd>
+<dt> &lsquo;<samp>cr_expr, cr</samp>&rsquo;</dt>
+<dd><p>Set the chrominance red expression.
+</p></dd>
+<dt> &lsquo;<samp>alpha_expr, a</samp>&rsquo;</dt>
+<dd><p>Set the alpha expression.
+</p></dd>
+<dt> &lsquo;<samp>red_expr, r</samp>&rsquo;</dt>
+<dd><p>Set the red expression.
+</p></dd>
+<dt> &lsquo;<samp>green_expr, g</samp>&rsquo;</dt>
+<dd><p>Set the green expression.
+</p></dd>
+<dt> &lsquo;<samp>blue_expr, b</samp>&rsquo;</dt>
+<dd><p>Set the blue expression.
+</p></dd>
+</dl>
+
+<p>The colorspace is selected according to the specified options. If one
+of the &lsquo;<samp>lum_expr</samp>&rsquo;, &lsquo;<samp>cb_expr</samp>&rsquo;, or &lsquo;<samp>cr_expr</samp>&rsquo;
+options is specified, the filter will automatically select a YCbCr
+colorspace. If one of the &lsquo;<samp>red_expr</samp>&rsquo;, &lsquo;<samp>green_expr</samp>&rsquo;, or
+&lsquo;<samp>blue_expr</samp>&rsquo; options is specified, it will select an RGB
+colorspace.
+</p>
+<p>If one of the chrominance expression is not defined, it falls back on the other
+one. If no alpha expression is specified it will evaluate to opaque value.
+If none of chrominance expressions are specified, they will evaluate
+to the luminance expression.
+</p>
+<p>The expressions can use the following variables and functions:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>N</samp>&rsquo;</dt>
+<dd><p>The sequential number of the filtered frame, starting from <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>X</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>Y</samp>&rsquo;</dt>
+<dd><p>The coordinates of the current sample.
+</p>
+</dd>
+<dt> &lsquo;<samp>W</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>H</samp>&rsquo;</dt>
+<dd><p>The width and height of the image.
+</p>
+</dd>
+<dt> &lsquo;<samp>SW</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>SH</samp>&rsquo;</dt>
+<dd><p>Width and height scale depending on the currently filtered plane. It is the
+ratio between the corresponding luma plane number of pixels and the current
+plane ones. E.g. for YUV4:2:0 the values are <code>1,1</code> for the luma plane, and
+<code>0.5,0.5</code> for chroma planes.
+</p>
+</dd>
+<dt> &lsquo;<samp>T</samp>&rsquo;</dt>
+<dd><p>Time of the current frame, expressed in seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>p(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the value of the pixel at location (<var>x</var>,<var>y</var>) of the current
+plane.
+</p>
+</dd>
+<dt> &lsquo;<samp>lum(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the value of the pixel at location (<var>x</var>,<var>y</var>) of the luminance
+plane.
+</p>
+</dd>
+<dt> &lsquo;<samp>cb(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the value of the pixel at location (<var>x</var>,<var>y</var>) of the
+blue-difference chroma plane. Return 0 if there is no such plane.
+</p>
+</dd>
+<dt> &lsquo;<samp>cr(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the value of the pixel at location (<var>x</var>,<var>y</var>) of the
+red-difference chroma plane. Return 0 if there is no such plane.
+</p>
+</dd>
+<dt> &lsquo;<samp>r(x, y)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>g(x, y)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>b(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the value of the pixel at location (<var>x</var>,<var>y</var>) of the
+red/green/blue component. Return 0 if there is no such component.
+</p>
+</dd>
+<dt> &lsquo;<samp>alpha(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the value of the pixel at location (<var>x</var>,<var>y</var>) of the alpha
+plane. Return 0 if there is no such plane.
+</p></dd>
+</dl>
+
+<p>For functions, if <var>x</var> and <var>y</var> are outside the area, the value will be
+automatically clipped to the closer edge.
+</p>
+<a name="Examples-7"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-7">9.35.1 Examples</a></h3>
+
+<ul>
+<li>
+Flip the image horizontally:
+<table><tr><td>&nbsp;</td><td><pre class="example">geq=p(W-X\,Y)
+</pre></td></tr></table>
+
+</li><li>
+Generate a bidimensional sine wave, with angle <code>PI/3</code> and a
+wavelength of 100 pixels:
+<table><tr><td>&nbsp;</td><td><pre class="example">geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
+</pre></td></tr></table>
+
+</li><li>
+Generate a fancy enigmatic moving light:
+<table><tr><td>&nbsp;</td><td><pre class="example">nullsrc=s=256x256,geq=random(1)/hypot(X-cos(N*0.07)*W/2-W/2\,Y-sin(N*0.09)*H/2-H/2)^2*1000000*sin(N*0.02):128:128
+</pre></td></tr></table>
+
+</li><li>
+Generate a quick emboss effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
+</pre></td></tr></table>
+
+</li><li>
+Modify RGB components depending on pixel position:
+<table><tr><td>&nbsp;</td><td><pre class="example">geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
+</pre></td></tr></table>
+</li></ul>
+
+<a name="gradfun"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-gradfun">9.36 gradfun</a></h2>
+
+<p>Fix the banding artifacts that are sometimes introduced into nearly flat
+regions by truncation to 8bit color depth.
+Interpolate the gradients that should go where the bands are, and
+dither them.
+</p>
+<p>This filter is designed for playback only.  Do not use it prior to
+lossy compression, because compression tends to lose the dither and
+bring back the bands.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>strength</samp>&rsquo;</dt>
+<dd><p>The maximum amount by which the filter will change any one pixel. Also the
+threshold for detecting nearly flat regions. Acceptable values range from .51 to
+64, default value is 1.2, out-of-range values will be clipped to the valid
+range.
+</p>
+</dd>
+<dt> &lsquo;<samp>radius</samp>&rsquo;</dt>
+<dd><p>The neighborhood to fit the gradient to. A larger radius makes for smoother
+gradients, but also prevents the filter from modifying the pixels near detailed
+regions. Acceptable values are 8-32, default value is 16, out-of-range values
+will be clipped to the valid range.
+</p>
+</dd>
+</dl>
+
+<p>Alternatively, the options can be specified as a flat string:
+<var>strength</var>[:<var>radius</var>]
+</p>
+<a name="Examples-11"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-11">9.36.1 Examples</a></h3>
+
+<ul>
+<li>
+Apply the filter with a <code>3.5</code> strength and radius of <code>8</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">gradfun=3.5:8
+</pre></td></tr></table>
+
+</li><li>
+Specify radius, omitting the strength (which will fall-back to the default
+value):
+<table><tr><td>&nbsp;</td><td><pre class="example">gradfun=radius=8
+</pre></td></tr></table>
+
+</li></ul>
+
+<p><a name="haldclut"></a>
+</p><a name="haldclut-1"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-haldclut-1">9.37 haldclut</a></h2>
+
+<p>Apply a Hald CLUT to a video stream.
+</p>
+<p>First input is the video stream to process, and second one is the Hald CLUT.
+The Hald CLUT input can be a simple picture or a complete video stream.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>shortest</samp>&rsquo;</dt>
+<dd><p>Force termination when the shortest input terminates. Default is <code>0</code>.
+</p></dd>
+<dt> &lsquo;<samp>repeatlast</samp>&rsquo;</dt>
+<dd><p>Continue applying the last CLUT after the end of the stream. A value of
+<code>0</code> disable the filter after the last frame of the CLUT is reached.
+Default is <code>1</code>.
+</p></dd>
+</dl>
+
+<p><code>haldclut</code> also has the same interpolation options as <a href="#lut3d">lut3d</a> (both
+filters share the same internals).
+</p>
+<p>More information about the Hald CLUT can be found on Eskil Steenberg&rsquo;s website
+(Hald CLUT author) at <a href="http://www.quelsolaar.com/technology/clut.html">http://www.quelsolaar.com/technology/clut.html</a>.
+</p>
+<a name="Workflow-examples"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Workflow-examples">9.37.1 Workflow examples</a></h3>
+
+<a name="Hald-CLUT-video-stream"></a>
+<h4 class="subsubsection"><a href="ffmpeg-filters.html#toc-Hald-CLUT-video-stream">9.37.1.1 Hald CLUT video stream</a></h4>
+
+<p>Generate an identity Hald CLUT stream altered with various effects:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f lavfi -i <a href="#haldclutsrc">haldclutsrc</a>=8 -vf &quot;hue=H=2*PI*t:s=sin(2*PI*t)+1, curves=cross_process&quot; -t 10 -c:v ffv1 clut.nut
+</pre></td></tr></table>
+
+<p>Note: make sure you use a lossless codec.
+</p>
+<p>Then use it with <code>haldclut</code> to apply it on some random stream:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
+</pre></td></tr></table>
+
+<p>The Hald CLUT will be applied to the 10 first seconds (duration of
+&lsquo;<tt>clut.nut</tt>&rsquo;), then the latest picture of that CLUT stream will be applied
+to the remaining frames of the <code>mandelbrot</code> stream.
+</p>
+<a name="Hald-CLUT-with-preview"></a>
+<h4 class="subsubsection"><a href="ffmpeg-filters.html#toc-Hald-CLUT-with-preview">9.37.1.2 Hald CLUT with preview</a></h4>
+
+<p>A Hald CLUT is supposed to be a squared image of <code>Level*Level*Level</code> by
+<code>Level*Level*Level</code> pixels. For a given Hald CLUT, FFmpeg will select the
+biggest possible square starting at the top left of the picture. The remaining
+padding pixels (bottom or right) will be ignored. This area can be used to add
+a preview of the Hald CLUT.
+</p>
+<p>Typically, the following generated Hald CLUT will be supported by the
+<code>haldclut</code> filter:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f lavfi -i <a href="#haldclutsrc">haldclutsrc</a>=8 -vf &quot;
+   pad=iw+320 [padded_clut];
+   smptebars=s=320x256, split [a][b];
+   [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
+   [main][b] overlay=W-320&quot; -frames:v 1 clut.png
+</pre></td></tr></table>
+
+<p>It contains the original and a preview of the effect of the CLUT: SMPTE color
+bars are displayed on the right-top, and below the same color bars processed by
+the color changes.
+</p>
+<p>Then, the effect of this Hald CLUT can be visualized with:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay input.mkv -vf &quot;movie=clut.png, [in] haldclut&quot;
+</pre></td></tr></table>
+
+<a name="hflip"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-hflip">9.38 hflip</a></h2>
+
+<p>Flip the input video horizontally.
+</p>
+<p>For example to horizontally flip the input video with <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -vf &quot;hflip&quot; out.avi
+</pre></td></tr></table>
+
+<a name="histeq"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-histeq">9.39 histeq</a></h2>
+<p>This filter applies a global color histogram equalization on a
+per-frame basis.
+</p>
+<p>It can be used to correct video that has a compressed range of pixel
+intensities.  The filter redistributes the pixel intensities to
+equalize their distribution across the intensity range. It may be
+viewed as an &quot;automatically adjusting contrast filter&quot;. This filter is
+useful only for correcting degraded or poorly captured source
+video.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>strength</samp>&rsquo;</dt>
+<dd><p>Determine the amount of equalization to be applied.  As the strength
+is reduced, the distribution of pixel intensities more-and-more
+approaches that of the input frame. The value must be a float number
+in the range [0,1] and defaults to 0.200.
+</p>
+</dd>
+<dt> &lsquo;<samp>intensity</samp>&rsquo;</dt>
+<dd><p>Set the maximum intensity that can generated and scale the output
+values appropriately.  The strength should be set as desired and then
+the intensity can be limited if needed to avoid washing-out. The value
+must be a float number in the range [0,1] and defaults to 0.210.
+</p>
+</dd>
+<dt> &lsquo;<samp>antibanding</samp>&rsquo;</dt>
+<dd><p>Set the antibanding level. If enabled the filter will randomly vary
+the luminance of output pixels by a small amount to avoid banding of
+the histogram. Possible values are <code>none</code>, <code>weak</code> or
+<code>strong</code>. It defaults to <code>none</code>.
+</p></dd>
+</dl>
+
+<a name="histogram"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-histogram">9.40 histogram</a></h2>
+
+<p>Compute and draw a color distribution histogram for the input video.
+</p>
+<p>The computed histogram is a representation of distribution of color components
+in an image.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Set histogram mode.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>levels</samp>&rsquo;</dt>
+<dd><p>standard histogram that display color components distribution in an image.
+Displays color graph for each color component. Shows distribution
+of the Y, U, V, A or R, G, B components, depending on input format,
+in current frame. Bellow each graph is color component scale meter.
+</p>
+</dd>
+<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
+<dd><p>chroma values in vectorscope, if brighter more such chroma values are
+distributed in an image.
+Displays chroma values (U/V color placement) in two dimensional graph
+(which is called a vectorscope). It can be used to read of the hue and
+saturation of the current frame. At a same time it is a histogram.
+The whiter a pixel in the vectorscope, the more pixels of the input frame
+correspond to that pixel (that is the more pixels have this chroma value).
+The V component is displayed on the horizontal (X) axis, with the leftmost
+side being V = 0 and the rightmost side being V = 255.
+The U component is displayed on the vertical (Y) axis, with the top
+representing U = 0 and the bottom representing U = 255.
+</p>
+<p>The position of a white pixel in the graph corresponds to the chroma value
+of a pixel of the input clip. So the graph can be used to read of the
+hue (color flavor) and the saturation (the dominance of the hue in the color).
+As the hue of a color changes, it moves around the square. At the center of
+the square, the saturation is zero, which means that the corresponding pixel
+has no color. If you increase the amount of a specific color, while leaving
+the other colors unchanged, the saturation increases, and you move towards
+the edge of the square.
+</p>
+</dd>
+<dt> &lsquo;<samp>color2</samp>&rsquo;</dt>
+<dd><p>chroma values in vectorscope, similar as <code>color</code> but actual chroma values
+are displayed.
+</p>
+</dd>
+<dt> &lsquo;<samp>waveform</samp>&rsquo;</dt>
+<dd><p>per row/column color component graph. In row mode graph in the left side represents
+color component value 0 and right side represents value = 255. In column mode top
+side represents color component value = 0 and bottom side represents value = 255.
+</p></dd>
+</dl>
+<p>Default value is <code>levels</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>level_height</samp>&rsquo;</dt>
+<dd><p>Set height of level in <code>levels</code>. Default value is <code>200</code>.
+Allowed range is [50, 2048].
+</p>
+</dd>
+<dt> &lsquo;<samp>scale_height</samp>&rsquo;</dt>
+<dd><p>Set height of color scale in <code>levels</code>. Default value is <code>12</code>.
+Allowed range is [0, 40].
+</p>
+</dd>
+<dt> &lsquo;<samp>step</samp>&rsquo;</dt>
+<dd><p>Set step for <code>waveform</code> mode. Smaller values are useful to find out how much
+of same luminance values across input rows/columns are distributed.
+Default value is <code>10</code>. Allowed range is [1, 255].
+</p>
+</dd>
+<dt> &lsquo;<samp>waveform_mode</samp>&rsquo;</dt>
+<dd><p>Set mode for <code>waveform</code>. Can be either <code>row</code>, or <code>column</code>.
+Default is <code>row</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>waveform_mirror</samp>&rsquo;</dt>
+<dd><p>Set mirroring mode for <code>waveform</code>. <code>0</code> means unmirrored, <code>1</code>
+means mirrored. In mirrored mode, higher values will be represented on the left
+side for <code>row</code> mode and at the top for <code>column</code> mode. Default is
+<code>0</code> (unmirrored).
+</p>
+</dd>
+<dt> &lsquo;<samp>display_mode</samp>&rsquo;</dt>
+<dd><p>Set display mode for <code>waveform</code> and <code>levels</code>.
+It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>parade</samp>&rsquo;</dt>
+<dd><p>Display separate graph for the color components side by side in
+<code>row</code> waveform mode or one below other in <code>column</code> waveform mode
+for <code>waveform</code> histogram mode. For <code>levels</code> histogram mode
+per color component graphs are placed one bellow other.
+</p>
+<p>This display mode in <code>waveform</code> histogram mode makes it easy to spot
+color casts in the highlights and shadows of an image, by comparing the
+contours of the top and the bottom of each waveform.
+Since whites, grays, and blacks are characterized by
+exactly equal amounts of red, green, and blue, neutral areas of the
+picture should display three waveforms of roughly equal width/height.
+If not, the correction is easy to make by making adjustments to level the
+three waveforms.
+</p>
+</dd>
+<dt> &lsquo;<samp>overlay</samp>&rsquo;</dt>
+<dd><p>Presents information that&rsquo;s identical to that in the <code>parade</code>, except
+that the graphs representing color components are superimposed directly
+over one another.
+</p>
+<p>This display mode in <code>waveform</code> histogram mode can make it easier to spot
+the relative differences or similarities in overlapping areas of the color
+components that are supposed to be identical, such as neutral whites, grays,
+or blacks.
+</p></dd>
+</dl>
+<p>Default is <code>parade</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>levels_mode</samp>&rsquo;</dt>
+<dd><p>Set mode for <code>levels</code>. Can be either <code>linear</code>, or <code>logarithmic</code>.
+Default is <code>linear</code>.
+</p></dd>
+</dl>
+
+<a name="Examples-45"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-45">9.40.1 Examples</a></h3>
+
+<ul>
+<li>
+Calculate and draw histogram:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -i input -vf histogram
+</pre></td></tr></table>
+
+</li></ul>
+
+<p><a name="hqdn3d"></a>
+</p><a name="hqdn3d-1"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-hqdn3d-1">9.41 hqdn3d</a></h2>
+
+<p>High precision/quality 3d denoise filter. This filter aims to reduce
+image noise producing smooth images and making still images really
+still. It should enhance compressibility.
+</p>
+<p>It accepts the following optional parameters:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>luma_spatial</samp>&rsquo;</dt>
+<dd><p>a non-negative float number which specifies spatial luma strength,
+defaults to 4.0
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_spatial</samp>&rsquo;</dt>
+<dd><p>a non-negative float number which specifies spatial chroma strength,
+defaults to 3.0*<var>luma_spatial</var>/4.0
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_tmp</samp>&rsquo;</dt>
+<dd><p>a float number which specifies luma temporal strength, defaults to
+6.0*<var>luma_spatial</var>/4.0
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_tmp</samp>&rsquo;</dt>
+<dd><p>a float number which specifies chroma temporal strength, defaults to
+<var>luma_tmp</var>*<var>chroma_spatial</var>/<var>luma_spatial</var>
+</p></dd>
+</dl>
+
+<a name="hue"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-hue">9.42 hue</a></h2>
+
+<p>Modify the hue and/or the saturation of the input.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Specify the hue angle as a number of degrees. It accepts an expression,
+and defaults to &quot;0&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>Specify the saturation in the [-10,10] range. It accepts an expression and
+defaults to &quot;1&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>H</samp>&rsquo;</dt>
+<dd><p>Specify the hue angle as a number of radians. It accepts an
+expression, and defaults to &quot;0&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>Specify the brightness in the [-10,10] range. It accepts an expression and
+defaults to &quot;0&quot;.
+</p></dd>
+</dl>
+
+<p>&lsquo;<samp>h</samp>&rsquo; and &lsquo;<samp>H</samp>&rsquo; are mutually exclusive, and can&rsquo;t be
+specified at the same time.
+</p>
+<p>The &lsquo;<samp>b</samp>&rsquo;, &lsquo;<samp>h</samp>&rsquo;, &lsquo;<samp>H</samp>&rsquo; and &lsquo;<samp>s</samp>&rsquo; option values are
+expressions containing the following constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>frame count of the input frame starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
+<dd><p>presentation timestamp of the input frame expressed in time base units
+</p>
+</dd>
+<dt> &lsquo;<samp>r</samp>&rsquo;</dt>
+<dd><p>frame rate of the input video, NAN if the input frame rate is unknown
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>timestamp expressed in seconds, NAN if the input timestamp is unknown
+</p>
+</dd>
+<dt> &lsquo;<samp>tb</samp>&rsquo;</dt>
+<dd><p>time base of the input video
+</p></dd>
+</dl>
+
+<a name="Examples-52"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-52">9.42.1 Examples</a></h3>
+
+<ul>
+<li>
+Set the hue to 90 degrees and the saturation to 1.0:
+<table><tr><td>&nbsp;</td><td><pre class="example">hue=h=90:s=1
+</pre></td></tr></table>
+
+</li><li>
+Same command but expressing the hue in radians:
+<table><tr><td>&nbsp;</td><td><pre class="example">hue=H=PI/2:s=1
+</pre></td></tr></table>
+
+</li><li>
+Rotate hue and make the saturation swing between 0
+and 2 over a period of 1 second:
+<table><tr><td>&nbsp;</td><td><pre class="example">hue=&quot;H=2*PI*t: s=sin(2*PI*t)+1&quot;
+</pre></td></tr></table>
+
+</li><li>
+Apply a 3 seconds saturation fade-in effect starting at 0:
+<table><tr><td>&nbsp;</td><td><pre class="example">hue=&quot;s=min(t/3\,1)&quot;
+</pre></td></tr></table>
+
+<p>The general fade-in expression can be written as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">hue=&quot;s=min(0\, max((t-START)/DURATION\, 1))&quot;
+</pre></td></tr></table>
+
+</li><li>
+Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
+<table><tr><td>&nbsp;</td><td><pre class="example">hue=&quot;s=max(0\, min(1\, (8-t)/3))&quot;
+</pre></td></tr></table>
+
+<p>The general fade-out expression can be written as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">hue=&quot;s=max(0\, min(1\, (START+DURATION-t)/DURATION))&quot;
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="Commands"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Commands">9.42.2 Commands</a></h3>
+
+<p>This filter supports the following commands:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>H</samp>&rsquo;</dt>
+<dd><p>Modify the hue and/or the saturation and/or brightness of the input video.
+The command accepts the same syntax of the corresponding option.
+</p>
+<p>If the specified expression is not valid, it is kept at its current
+value.
+</p></dd>
+</dl>
+
+<a name="idet"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-idet">9.43 idet</a></h2>
+
+<p>Detect video interlacing type.
+</p>
+<p>This filter tries to detect if the input is interlaced or progressive,
+top or bottom field first.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>intl_thres</samp>&rsquo;</dt>
+<dd><p>Set interlacing threshold.
+</p></dd>
+<dt> &lsquo;<samp>prog_thres</samp>&rsquo;</dt>
+<dd><p>Set progressive threshold.
+</p></dd>
+</dl>
+
+<a name="il"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-il">9.44 il</a></h2>
+
+<p>Deinterleave or interleave fields.
+</p>
+<p>This filter allows to process interlaced images fields without
+deinterlacing them. Deinterleaving splits the input frame into 2
+fields (so called half pictures). Odd lines are moved to the top
+half of the output image, even lines to the bottom half.
+You can process (filter) them independently and then re-interleave them.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>luma_mode, l</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma_mode, c</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>alpha_mode, a</samp>&rsquo;</dt>
+<dd><p>Available values for <var>luma_mode</var>, <var>chroma_mode</var> and
+<var>alpha_mode</var> are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>Do nothing.
+</p>
+</dd>
+<dt> &lsquo;<samp>deinterleave, d</samp>&rsquo;</dt>
+<dd><p>Deinterleave fields, placing one above the other.
+</p>
+</dd>
+<dt> &lsquo;<samp>interleave, i</samp>&rsquo;</dt>
+<dd><p>Interleave fields. Reverse the effect of deinterleaving.
+</p></dd>
+</dl>
+<p>Default value is <code>none</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_swap, ls</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma_swap, cs</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>alpha_swap, as</samp>&rsquo;</dt>
+<dd><p>Swap luma/chroma/alpha fields. Exchange even &amp; odd lines. Default value is <code>0</code>.
+</p></dd>
+</dl>
+
+<a name="interlace"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-interlace">9.45 interlace</a></h2>
+
+<p>Simple interlacing filter from progressive contents. This interleaves upper (or
+lower) lines from odd frames with lower (or upper) lines from even frames,
+halving the frame rate and preserving image height.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">   Original        Original             New Frame
+   Frame 'j'      Frame 'j+1'             (tff)
+  ==========      ===========       ==================
+    Line 0  --------------------&gt;    Frame 'j' Line 0
+    Line 1          Line 1  ----&gt;   Frame 'j+1' Line 1
+    Line 2 ---------------------&gt;    Frame 'j' Line 2
+    Line 3          Line 3  ----&gt;   Frame 'j+1' Line 3
+     ...             ...                   ...
+New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
+</pre></td></tr></table>
+
+<p>It accepts the following optional parameters:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>scan</samp>&rsquo;</dt>
+<dd><p>determines whether the interlaced frame is taken from the even (tff - default)
+or odd (bff) lines of the progressive frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>lowpass</samp>&rsquo;</dt>
+<dd><p>Enable (default) or disable the vertical lowpass filter to avoid twitter
+interlacing and reduce moire patterns.
+</p></dd>
+</dl>
+
+<a name="kerndeint"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-kerndeint">9.46 kerndeint</a></h2>
+
+<p>Deinterlace input video by applying Donald Graft&rsquo;s adaptive kernel
+deinterling. Work on interlaced parts of a video to produce
+progressive frames.
+</p>
+<p>The description of the accepted parameters follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>thresh</samp>&rsquo;</dt>
+<dd><p>Set the threshold which affects the filter&rsquo;s tolerance when
+determining if a pixel line must be processed. It must be an integer
+in the range [0,255] and defaults to 10. A value of 0 will result in
+applying the process on every pixels.
+</p>
+</dd>
+<dt> &lsquo;<samp>map</samp>&rsquo;</dt>
+<dd><p>Paint pixels exceeding the threshold value to white if set to 1.
+Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>order</samp>&rsquo;</dt>
+<dd><p>Set the fields order. Swap fields if set to 1, leave fields alone if
+0. Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>sharp</samp>&rsquo;</dt>
+<dd><p>Enable additional sharpening if set to 1. Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>twoway</samp>&rsquo;</dt>
+<dd><p>Enable twoway sharpening if set to 1. Default is 0.
+</p></dd>
+</dl>
+
+<a name="Examples-29"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-29">9.46.1 Examples</a></h3>
+
+<ul>
+<li>
+Apply default values:
+<table><tr><td>&nbsp;</td><td><pre class="example">kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
+</pre></td></tr></table>
+
+</li><li>
+Enable additional sharpening:
+<table><tr><td>&nbsp;</td><td><pre class="example">kerndeint=sharp=1
+</pre></td></tr></table>
+
+</li><li>
+Paint processed pixels in white:
+<table><tr><td>&nbsp;</td><td><pre class="example">kerndeint=map=1
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="lut3d"></a>
+</p><a name="lut3d-1"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-lut3d-1">9.47 lut3d</a></h2>
+
+<p>Apply a 3D LUT to an input video.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>file</samp>&rsquo;</dt>
+<dd><p>Set the 3D LUT file name.
+</p>
+<p>Currently supported formats:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>3dl</samp>&rsquo;</dt>
+<dd><p>AfterEffects
+</p></dd>
+<dt> &lsquo;<samp>cube</samp>&rsquo;</dt>
+<dd><p>Iridas
+</p></dd>
+<dt> &lsquo;<samp>dat</samp>&rsquo;</dt>
+<dd><p>DaVinci
+</p></dd>
+<dt> &lsquo;<samp>m3d</samp>&rsquo;</dt>
+<dd><p>Pandora
+</p></dd>
+</dl>
+</dd>
+<dt> &lsquo;<samp>interp</samp>&rsquo;</dt>
+<dd><p>Select interpolation mode.
+</p>
+<p>Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>nearest</samp>&rsquo;</dt>
+<dd><p>Use values from the nearest defined point.
+</p></dd>
+<dt> &lsquo;<samp>trilinear</samp>&rsquo;</dt>
+<dd><p>Interpolate values using the 8 points defining a cube.
+</p></dd>
+<dt> &lsquo;<samp>tetrahedral</samp>&rsquo;</dt>
+<dd><p>Interpolate values using a tetrahedron.
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<a name="lut_002c-lutrgb_002c-lutyuv"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-lut_002c-lutrgb_002c-lutyuv">9.48 lut, lutrgb, lutyuv</a></h2>
+
+<p>Compute a look-up table for binding each pixel component input value
+to an output value, and apply it to input video.
+</p>
+<p><var>lutyuv</var> applies a lookup table to a YUV input video, <var>lutrgb</var>
+to an RGB input video.
+</p>
+<p>These filters accept the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>c0</samp>&rsquo;</dt>
+<dd><p>set first pixel component expression
+</p></dd>
+<dt> &lsquo;<samp>c1</samp>&rsquo;</dt>
+<dd><p>set second pixel component expression
+</p></dd>
+<dt> &lsquo;<samp>c2</samp>&rsquo;</dt>
+<dd><p>set third pixel component expression
+</p></dd>
+<dt> &lsquo;<samp>c3</samp>&rsquo;</dt>
+<dd><p>set fourth pixel component expression, corresponds to the alpha component
+</p>
+</dd>
+<dt> &lsquo;<samp>r</samp>&rsquo;</dt>
+<dd><p>set red component expression
+</p></dd>
+<dt> &lsquo;<samp>g</samp>&rsquo;</dt>
+<dd><p>set green component expression
+</p></dd>
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>set blue component expression
+</p></dd>
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>alpha component expression
+</p>
+</dd>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>set Y/luminance component expression
+</p></dd>
+<dt> &lsquo;<samp>u</samp>&rsquo;</dt>
+<dd><p>set U/Cb component expression
+</p></dd>
+<dt> &lsquo;<samp>v</samp>&rsquo;</dt>
+<dd><p>set V/Cr component expression
+</p></dd>
+</dl>
+
+<p>Each of them specifies the expression to use for computing the lookup table for
+the corresponding pixel component values.
+</p>
+<p>The exact component associated to each of the <var>c*</var> options depends on the
+format in input.
+</p>
+<p>The <var>lut</var> filter requires either YUV or RGB pixel formats in input,
+<var>lutrgb</var> requires RGB pixel formats in input, and <var>lutyuv</var> requires YUV.
+</p>
+<p>The expressions can contain the following constants and functions:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>the input width and height
+</p>
+</dd>
+<dt> &lsquo;<samp>val</samp>&rsquo;</dt>
+<dd><p>input value for the pixel component
+</p>
+</dd>
+<dt> &lsquo;<samp>clipval</samp>&rsquo;</dt>
+<dd><p>the input value clipped in the <var>minval</var>-<var>maxval</var> range
+</p>
+</dd>
+<dt> &lsquo;<samp>maxval</samp>&rsquo;</dt>
+<dd><p>maximum value for the pixel component
+</p>
+</dd>
+<dt> &lsquo;<samp>minval</samp>&rsquo;</dt>
+<dd><p>minimum value for the pixel component
+</p>
+</dd>
+<dt> &lsquo;<samp>negval</samp>&rsquo;</dt>
+<dd><p>the negated value for the pixel component value clipped in the
+<var>minval</var>-<var>maxval</var> range , it corresponds to the expression
+&quot;maxval-clipval+minval&quot;
+</p>
+</dd>
+<dt> &lsquo;<samp>clip(val)</samp>&rsquo;</dt>
+<dd><p>the computed value in <var>val</var> clipped in the
+<var>minval</var>-<var>maxval</var> range
+</p>
+</dd>
+<dt> &lsquo;<samp>gammaval(gamma)</samp>&rsquo;</dt>
+<dd><p>the computed gamma correction value of the pixel component value
+clipped in the <var>minval</var>-<var>maxval</var> range, corresponds to the
+expression
+&quot;pow((clipval-minval)/(maxval-minval)\,<var>gamma</var>)*(maxval-minval)+minval&quot;
+</p>
+</dd>
+</dl>
+
+<p>All expressions default to &quot;val&quot;.
+</p>
+<a name="Examples-40"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-40">9.48.1 Examples</a></h3>
+
+<ul>
+<li>
+Negate input video:
+<table><tr><td>&nbsp;</td><td><pre class="example">lutrgb=&quot;r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val&quot;
+lutyuv=&quot;y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val&quot;
+</pre></td></tr></table>
+
+<p>The above is the same as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">lutrgb=&quot;r=negval:g=negval:b=negval&quot;
+lutyuv=&quot;y=negval:u=negval:v=negval&quot;
+</pre></td></tr></table>
+
+</li><li>
+Negate luminance:
+<table><tr><td>&nbsp;</td><td><pre class="example">lutyuv=y=negval
+</pre></td></tr></table>
+
+</li><li>
+Remove chroma components, turns the video into a graytone image:
+<table><tr><td>&nbsp;</td><td><pre class="example">lutyuv=&quot;u=128:v=128&quot;
+</pre></td></tr></table>
+
+</li><li>
+Apply a luma burning effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">lutyuv=&quot;y=2*val&quot;
+</pre></td></tr></table>
+
+</li><li>
+Remove green and blue components:
+<table><tr><td>&nbsp;</td><td><pre class="example">lutrgb=&quot;g=0:b=0&quot;
+</pre></td></tr></table>
+
+</li><li>
+Set a constant alpha channel value on input:
+<table><tr><td>&nbsp;</td><td><pre class="example">format=rgba,lutrgb=a=&quot;maxval-minval/2&quot;
+</pre></td></tr></table>
+
+</li><li>
+Correct luminance gamma by a 0.5 factor:
+<table><tr><td>&nbsp;</td><td><pre class="example">lutyuv=y=gammaval(0.5)
+</pre></td></tr></table>
+
+</li><li>
+Discard least significant bits of luma:
+<table><tr><td>&nbsp;</td><td><pre class="example">lutyuv=y='bitand(val, 128+64+32)'
+</pre></td></tr></table>
+</li></ul>
+
+<a name="mergeplanes"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-mergeplanes">9.49 mergeplanes</a></h2>
+
+<p>Merge color channel components from several video streams.
+</p>
+<p>The filter accepts up to 4 input streams, and merge selected input
+planes to the output video.
+</p>
+<p>This filter accepts the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>mapping</samp>&rsquo;</dt>
+<dd><p>Set input to output plane mapping. Default is <code>0</code>.
+</p>
+<p>The mappings is specified as a bitmap. It should be specified as a
+hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. &rsquo;Aa&rsquo; describes the
+mapping for the first plane of the output stream. &rsquo;A&rsquo; sets the number of
+the input stream to use (from 0 to 3), and &rsquo;a&rsquo; the plane number of the
+corresponding input to use (from 0 to 3). The rest of the mappings is
+similar, &rsquo;Bb&rsquo; describes the mapping for the output stream second
+plane, &rsquo;Cc&rsquo; describes the mapping for the output stream third plane and
+&rsquo;Dd&rsquo; describes the mapping for the output stream fourth plane.
+</p>
+</dd>
+<dt> &lsquo;<samp>format</samp>&rsquo;</dt>
+<dd><p>Set output pixel format. Default is <code>yuva444p</code>.
+</p></dd>
+</dl>
+
+<a name="Examples-34"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-34">9.49.1 Examples</a></h3>
+
+<ul>
+<li>
+Merge three gray video streams of same width and height into single video stream:
+<table><tr><td>&nbsp;</td><td><pre class="example">[a0][a1][a2]mergeplanes=0x001020:yuv444p
+</pre></td></tr></table>
+
+</li><li>
+Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
+<table><tr><td>&nbsp;</td><td><pre class="example">[a0][a1]mergeplanes=0x00010210:yuva444p
+</pre></td></tr></table>
+
+</li><li>
+Swap Y and A plane in yuva444p stream:
+<table><tr><td>&nbsp;</td><td><pre class="example">format=yuva444p,mergeplanes=0x03010200:yuva444p
+</pre></td></tr></table>
+
+</li><li>
+Swap U and V plane in yuv420p stream:
+<table><tr><td>&nbsp;</td><td><pre class="example">format=yuv420p,mergeplanes=0x000201:yuv420p
+</pre></td></tr></table>
+
+</li><li>
+Cast a rgb24 clip to yuv444p:
+<table><tr><td>&nbsp;</td><td><pre class="example">format=rgb24,mergeplanes=0x000102:yuv444p
+</pre></td></tr></table>
+</li></ul>
+
+<a name="mcdeint"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-mcdeint">9.50 mcdeint</a></h2>
+
+<p>Apply motion-compensation deinterlacing.
+</p>
+<p>It needs one field per frame as input and must thus be used together
+with yadif=1/3 or equivalent.
+</p>
+<p>This filter accepts the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Set the deinterlacing mode.
+</p>
+<p>It accepts one of the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>fast</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>medium</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>slow</samp>&rsquo;</dt>
+<dd><p>use iterative motion estimation
+</p></dd>
+<dt> &lsquo;<samp>extra_slow</samp>&rsquo;</dt>
+<dd><p>like &lsquo;<samp>slow</samp>&rsquo;, but use multiple reference frames.
+</p></dd>
+</dl>
+<p>Default value is &lsquo;<samp>fast</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>parity</samp>&rsquo;</dt>
+<dd><p>Set the picture field parity assumed for the input video. It must be
+one of the following values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>0, tff</samp>&rsquo;</dt>
+<dd><p>assume top field first
+</p></dd>
+<dt> &lsquo;<samp>1, bff</samp>&rsquo;</dt>
+<dd><p>assume bottom field first
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>bff</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>qp</samp>&rsquo;</dt>
+<dd><p>Set per-block quantization parameter (QP) used by the internal
+encoder.
+</p>
+<p>Higher values should result in a smoother motion vector field but less
+optimal individual vectors. Default value is 1.
+</p></dd>
+</dl>
+
+<a name="mp"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-mp">9.51 mp</a></h2>
+
+<p>Apply an MPlayer filter to the input video.
+</p>
+<p>This filter provides a wrapper around some of the filters of
+MPlayer/MEncoder.
+</p>
+<p>This wrapper is considered experimental. Some of the wrapped filters
+may not work properly and we may drop support for them, as they will
+be implemented natively into FFmpeg. Thus you should avoid
+depending on them when writing portable scripts.
+</p>
+<p>The filter accepts the parameters:
+<var>filter_name</var>[:=]<var>filter_params</var>
+</p>
+<p><var>filter_name</var> is the name of a supported MPlayer filter,
+<var>filter_params</var> is a string containing the parameters accepted by
+the named filter.
+</p>
+<p>The list of the currently supported filters follows:
+</p><dl compact="compact">
+<dt> <var>eq2</var></dt>
+<dt> <var>eq</var></dt>
+<dt> <var>fspp</var></dt>
+<dt> <var>ilpack</var></dt>
+<dt> <var>pp7</var></dt>
+<dt> <var>softpulldown</var></dt>
+<dt> <var>uspp</var></dt>
+</dl>
+
+<p>The parameter syntax and behavior for the listed filters are the same
+of the corresponding MPlayer filters. For detailed instructions check
+the &quot;VIDEO FILTERS&quot; section in the MPlayer manual.
+</p>
+<a name="Examples-46"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-46">9.51.1 Examples</a></h3>
+
+<ul>
+<li>
+Adjust gamma, brightness, contrast:
+<table><tr><td>&nbsp;</td><td><pre class="example">mp=eq2=1.0:2:0.5
+</pre></td></tr></table>
+</li></ul>
+
+<p>See also mplayer(1), <a href="http://www.mplayerhq.hu/">http://www.mplayerhq.hu/</a>.
+</p>
+<a name="mpdecimate"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-mpdecimate">9.52 mpdecimate</a></h2>
+
+<p>Drop frames that do not differ greatly from the previous frame in
+order to reduce frame rate.
+</p>
+<p>The main use of this filter is for very-low-bitrate encoding
+(e.g. streaming over dialup modem), but it could in theory be used for
+fixing movies that were inverse-telecined incorrectly.
+</p>
+<p>A description of the accepted options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>max</samp>&rsquo;</dt>
+<dd><p>Set the maximum number of consecutive frames which can be dropped (if
+positive), or the minimum interval between dropped frames (if
+negative). If the value is 0, the frame is dropped unregarding the
+number of previous sequentially dropped frames.
+</p>
+<p>Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>hi</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>lo</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>frac</samp>&rsquo;</dt>
+<dd><p>Set the dropping threshold values.
+</p>
+<p>Values for &lsquo;<samp>hi</samp>&rsquo; and &lsquo;<samp>lo</samp>&rsquo; are for 8x8 pixel blocks and
+represent actual pixel value differences, so a threshold of 64
+corresponds to 1 unit of difference for each pixel, or the same spread
+out differently over the block.
+</p>
+<p>A frame is a candidate for dropping if no 8x8 blocks differ by more
+than a threshold of &lsquo;<samp>hi</samp>&rsquo;, and if no more than &lsquo;<samp>frac</samp>&rsquo; blocks (1
+meaning the whole image) differ by more than a threshold of &lsquo;<samp>lo</samp>&rsquo;.
+</p>
+<p>Default value for &lsquo;<samp>hi</samp>&rsquo; is 64*12, default value for &lsquo;<samp>lo</samp>&rsquo; is
+64*5, and default value for &lsquo;<samp>frac</samp>&rsquo; is 0.33.
+</p></dd>
+</dl>
+
+
+<a name="negate"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-negate">9.53 negate</a></h2>
+
+<p>Negate input video.
+</p>
+<p>This filter accepts an integer in input, if non-zero it negates the
+alpha component (if available). The default value in input is 0.
+</p>
+<a name="noformat"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-noformat">9.54 noformat</a></h2>
+
+<p>Force libavfilter not to use any of the specified pixel formats for the
+input to the next filter.
+</p>
+<p>This filter accepts the following parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>pix_fmts</samp>&rsquo;</dt>
+<dd><p>A &rsquo;|&rsquo;-separated list of pixel format names, for example
+&quot;pix_fmts=yuv420p|monow|rgb24&quot;.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-18"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-18">9.54.1 Examples</a></h3>
+
+<ul>
+<li>
+Force libavfilter to use a format different from <var>yuv420p</var> for the
+input to the vflip filter:
+<table><tr><td>&nbsp;</td><td><pre class="example">noformat=pix_fmts=yuv420p,vflip
+</pre></td></tr></table>
+
+</li><li>
+Convert the input video to any of the formats not contained in the list:
+<table><tr><td>&nbsp;</td><td><pre class="example">noformat=yuv420p|yuv444p|yuv410p
+</pre></td></tr></table>
+</li></ul>
+
+<a name="noise"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-noise">9.55 noise</a></h2>
+
+<p>Add noise on video input frame.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>all_seed</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c0_seed</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c1_seed</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c2_seed</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c3_seed</samp>&rsquo;</dt>
+<dd><p>Set noise seed for specific pixel component or all pixel components in case
+of <var>all_seed</var>. Default value is <code>123457</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>all_strength, alls</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c0_strength, c0s</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c1_strength, c1s</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c2_strength, c2s</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c3_strength, c3s</samp>&rsquo;</dt>
+<dd><p>Set noise strength for specific pixel component or all pixel components in case
+<var>all_strength</var>. Default value is <code>0</code>. Allowed range is [0, 100].
+</p>
+</dd>
+<dt> &lsquo;<samp>all_flags, allf</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c0_flags, c0f</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c1_flags, c1f</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c2_flags, c2f</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c3_flags, c3f</samp>&rsquo;</dt>
+<dd><p>Set pixel component flags or set flags for all components if <var>all_flags</var>.
+Available values for component flags are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>averaged temporal noise (smoother)
+</p></dd>
+<dt> &lsquo;<samp>p</samp>&rsquo;</dt>
+<dd><p>mix random noise with a (semi)regular pattern
+</p></dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>temporal noise (noise pattern changes between frames)
+</p></dd>
+<dt> &lsquo;<samp>u</samp>&rsquo;</dt>
+<dd><p>uniform noise (gaussian otherwise)
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<a name="Examples-48"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-48">9.55.1 Examples</a></h3>
+
+<p>Add temporal and uniform noise to input video:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">noise=alls=20:allf=t+u
+</pre></td></tr></table>
+
+<a name="null"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-null">9.56 null</a></h2>
+
+<p>Pass the video source unchanged to the output.
+</p>
+<a name="ocv"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-ocv">9.57 ocv</a></h2>
+
+<p>Apply video transform using libopencv.
+</p>
+<p>To enable this filter install libopencv library and headers and
+configure FFmpeg with <code>--enable-libopencv</code>.
+</p>
+<p>This filter accepts the following parameters:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filter_name</samp>&rsquo;</dt>
+<dd><p>The name of the libopencv filter to apply.
+</p>
+</dd>
+<dt> &lsquo;<samp>filter_params</samp>&rsquo;</dt>
+<dd><p>The parameters to pass to the libopencv filter. If not specified the default
+values are assumed.
+</p>
+</dd>
+</dl>
+
+<p>Refer to the official libopencv documentation for more precise
+information:
+<a href="http://opencv.willowgarage.com/documentation/c/image_filtering.html">http://opencv.willowgarage.com/documentation/c/image_filtering.html</a>
+</p>
+<p>Follows the list of supported libopencv filters.
+</p>
+<p><a name="dilate"></a>
+</p><a name="dilate-1"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-dilate-1">9.57.1 dilate</a></h3>
+
+<p>Dilate an image by using a specific structuring element.
+This filter corresponds to the libopencv function <code>cvDilate</code>.
+</p>
+<p>It accepts the parameters: <var>struct_el</var>|<var>nb_iterations</var>.
+</p>
+<p><var>struct_el</var> represents a structuring element, and has the syntax:
+<var>cols</var>x<var>rows</var>+<var>anchor_x</var>x<var>anchor_y</var>/<var>shape</var>
+</p>
+<p><var>cols</var> and <var>rows</var> represent the number of columns and rows of
+the structuring element, <var>anchor_x</var> and <var>anchor_y</var> the anchor
+point, and <var>shape</var> the shape for the structuring element, and
+can be one of the values &quot;rect&quot;, &quot;cross&quot;, &quot;ellipse&quot;, &quot;custom&quot;.
+</p>
+<p>If the value for <var>shape</var> is &quot;custom&quot;, it must be followed by a
+string of the form &quot;=<var>filename</var>&quot;. The file with name
+<var>filename</var> is assumed to represent a binary image, with each
+printable character corresponding to a bright pixel. When a custom
+<var>shape</var> is used, <var>cols</var> and <var>rows</var> are ignored, the number
+or columns and rows of the read file are assumed instead.
+</p>
+<p>The default value for <var>struct_el</var> is &quot;3x3+0x0/rect&quot;.
+</p>
+<p><var>nb_iterations</var> specifies the number of times the transform is
+applied to the image, and defaults to 1.
+</p>
+<p>Follow some example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"># use the default values
+ocv=dilate
+
+# dilate using a structuring element with a 5x5 cross, iterate two times
+ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
+
+# read the shape from the file diamond.shape, iterate two times
+# the file diamond.shape may contain a pattern of characters like this:
+#   *
+#  ***
+# *****
+#  ***
+#   *
+# the specified cols and rows are ignored (but not the anchor point coordinates)
+ocv=dilate:0x0+2x2/custom=diamond.shape|2
+</pre></td></tr></table>
+
+<a name="erode"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-erode">9.57.2 erode</a></h3>
+
+<p>Erode an image by using a specific structuring element.
+This filter corresponds to the libopencv function <code>cvErode</code>.
+</p>
+<p>The filter accepts the parameters: <var>struct_el</var>:<var>nb_iterations</var>,
+with the same syntax and semantics as the <a href="#dilate">dilate</a> filter.
+</p>
+<a name="smooth"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-smooth">9.57.3 smooth</a></h3>
+
+<p>Smooth the input video.
+</p>
+<p>The filter takes the following parameters:
+<var>type</var>|<var>param1</var>|<var>param2</var>|<var>param3</var>|<var>param4</var>.
+</p>
+<p><var>type</var> is the type of smooth filter to apply, and can be one of
+the following values: &quot;blur&quot;, &quot;blur_no_scale&quot;, &quot;median&quot;, &quot;gaussian&quot;,
+&quot;bilateral&quot;. The default value is &quot;gaussian&quot;.
+</p>
+<p><var>param1</var>, <var>param2</var>, <var>param3</var>, and <var>param4</var> are
+parameters whose meanings depend on smooth type. <var>param1</var> and
+<var>param2</var> accept integer positive values or 0, <var>param3</var> and
+<var>param4</var> accept float values.
+</p>
+<p>The default value for <var>param1</var> is 3, the default value for the
+other parameters is 0.
+</p>
+<p>These parameters correspond to the parameters assigned to the
+libopencv function <code>cvSmooth</code>.
+</p>
+<p><a name="overlay"></a>
+</p><a name="overlay-1"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-overlay-1">9.58 overlay</a></h2>
+
+<p>Overlay one video on top of another.
+</p>
+<p>It takes two inputs and one output, the first input is the &quot;main&quot;
+video on which the second input is overlayed.
+</p>
+<p>This filter accepts the following parameters:
+</p>
+<p>A description of the accepted options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>Set the expression for the x and y coordinates of the overlayed video
+on the main video. Default value is &quot;0&quot; for both expressions. In case
+the expression is invalid, it is set to a huge value (meaning that the
+overlay will not be displayed within the output visible area).
+</p>
+</dd>
+<dt> &lsquo;<samp>eval</samp>&rsquo;</dt>
+<dd><p>Set when the expressions for &lsquo;<samp>x</samp>&rsquo;, and &lsquo;<samp>y</samp>&rsquo; are evaluated.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>init</samp>&rsquo;</dt>
+<dd><p>only evaluate expressions once during the filter initialization or
+when a command is processed
+</p>
+</dd>
+<dt> &lsquo;<samp>frame</samp>&rsquo;</dt>
+<dd><p>evaluate expressions for each incoming frame
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>frame</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>shortest</samp>&rsquo;</dt>
+<dd><p>If set to 1, force the output to terminate when the shortest input
+terminates. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>format</samp>&rsquo;</dt>
+<dd><p>Set the format for the output video.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>yuv420</samp>&rsquo;</dt>
+<dd><p>force YUV420 output
+</p>
+</dd>
+<dt> &lsquo;<samp>yuv444</samp>&rsquo;</dt>
+<dd><p>force YUV444 output
+</p>
+</dd>
+<dt> &lsquo;<samp>rgb</samp>&rsquo;</dt>
+<dd><p>force RGB output
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>yuv420</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>rgb <em>(deprecated)</em></samp>&rsquo;</dt>
+<dd><p>If set to 1, force the filter to accept inputs in the RGB
+color space. Default value is 0. This option is deprecated, use
+&lsquo;<samp>format</samp>&rsquo; instead.
+</p>
+</dd>
+<dt> &lsquo;<samp>repeatlast</samp>&rsquo;</dt>
+<dd><p>If set to 1, force the filter to draw the last overlay frame over the
+main input until the end of the stream. A value of 0 disables this
+behavior. Default value is 1.
+</p></dd>
+</dl>
+
+<p>The &lsquo;<samp>x</samp>&rsquo;, and &lsquo;<samp>y</samp>&rsquo; expressions can contain the following
+parameters.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>main_w, W</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>main_h, H</samp>&rsquo;</dt>
+<dd><p>main input width and height
+</p>
+</dd>
+<dt> &lsquo;<samp>overlay_w, w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>overlay_h, h</samp>&rsquo;</dt>
+<dd><p>overlay input width and height
+</p>
+</dd>
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>the computed values for <var>x</var> and <var>y</var>. They are evaluated for
+each new frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values of the output
+format. For example for the pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and
+<var>vsub</var> is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>the number of input frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
+<dd><p>the position in the file of the input frame, NAN if unknown
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>timestamp expressed in seconds, NAN if the input timestamp is unknown
+</p></dd>
+</dl>
+
+<p>Note that the <var>n</var>, <var>pos</var>, <var>t</var> variables are available only
+when evaluation is done <em>per frame</em>, and will evaluate to NAN
+when &lsquo;<samp>eval</samp>&rsquo; is set to &lsquo;<samp>init</samp>&rsquo;.
+</p>
+<p>Be aware that frames are taken from each input video in timestamp
+order, hence, if their initial timestamps differ, it is a good idea
+to pass the two inputs through a <var>setpts=PTS-STARTPTS</var> filter to
+have them begin in the same zero timestamp, as it does the example for
+the <var>movie</var> filter.
+</p>
+<p>You can chain together more overlays but you should test the
+efficiency of such approach.
+</p>
+<a name="Commands-1"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Commands-1">9.58.1 Commands</a></h3>
+
+<p>This filter supports the following commands:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>Modify the x and y of the overlay input.
+The command accepts the same syntax of the corresponding option.
+</p>
+<p>If the specified expression is not valid, it is kept at its current
+value.
+</p></dd>
+</dl>
+
+<a name="Examples-30"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-30">9.58.2 Examples</a></h3>
+
+<ul>
+<li>
+Draw the overlay at 10 pixels from the bottom right corner of the main
+video:
+<table><tr><td>&nbsp;</td><td><pre class="example">overlay=main_w-overlay_w-10:main_h-overlay_h-10
+</pre></td></tr></table>
+
+<p>Using named options the example above becomes:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
+</pre></td></tr></table>
+
+</li><li>
+Insert a transparent PNG logo in the bottom left corner of the input,
+using the <code>ffmpeg</code> tool with the <code>-filter_complex</code> option:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
+</pre></td></tr></table>
+
+</li><li>
+Insert 2 different transparent PNG logos (second logo on bottom
+right corner) using the <code>ffmpeg</code> tool:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input -i logo1 -i logo2 -filter_complex 'overlay=x=10:y=H-h-10,overlay=x=W-w-10:y=H-h-10' output
+</pre></td></tr></table>
+
+</li><li>
+Add a transparent color layer on top of the main video, <code>WxH</code>
+must specify the size of the main input to the overlay filter:
+<table><tr><td>&nbsp;</td><td><pre class="example">color=color=red@.3:size=WxH [over]; [in][over] overlay [out]
+</pre></td></tr></table>
+
+</li><li>
+Play an original video and a filtered version (here with the deshake
+filter) side by side using the <code>ffplay</code> tool:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
+</pre></td></tr></table>
+
+<p>The above command is the same as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
+</pre></td></tr></table>
+
+</li><li>
+Make a sliding overlay appearing from the left to the right top part of the
+screen starting since time 2:
+<table><tr><td>&nbsp;</td><td><pre class="example">overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
+</pre></td></tr></table>
+
+</li><li>
+Compose output by putting two input videos side to side:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i left.avi -i right.avi -filter_complex &quot;
+nullsrc=size=200x100 [background];
+[0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
+[1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
+[background][left]       overlay=shortest=1       [background+left];
+[background+left][right] overlay=shortest=1:x=100 [left+right]
+&quot;
+</pre></td></tr></table>
+
+</li><li>
+Chain several overlays in cascade:
+<table><tr><td>&nbsp;</td><td><pre class="example">nullsrc=s=200x200 [bg];
+testsrc=s=100x100, split=4 [in0][in1][in2][in3];
+[in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
+[in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
+[in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
+[in3] null,       [mid2] overlay=100:100 [out0]
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="owdenoise"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-owdenoise">9.59 owdenoise</a></h2>
+
+<p>Apply Overcomplete Wavelet denoiser.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>depth</samp>&rsquo;</dt>
+<dd><p>Set depth.
+</p>
+<p>Larger depth values will denoise lower frequency components more, but
+slow down filtering.
+</p>
+<p>Must be an int in the range 8-16, default is <code>8</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_strength, ls</samp>&rsquo;</dt>
+<dd><p>Set luma strength.
+</p>
+<p>Must be a double value in the range 0-1000, default is <code>1.0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_strength, cs</samp>&rsquo;</dt>
+<dd><p>Set chroma strength.
+</p>
+<p>Must be a double value in the range 0-1000, default is <code>1.0</code>.
+</p></dd>
+</dl>
+
+<a name="pad"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-pad">9.60 pad</a></h2>
+
+<p>Add paddings to the input image, and place the original input at the
+given coordinates <var>x</var>, <var>y</var>.
+</p>
+<p>This filter accepts the following parameters:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>height, h</samp>&rsquo;</dt>
+<dd><p>Specify an expression for the size of the output image with the
+paddings added. If the value for <var>width</var> or <var>height</var> is 0, the
+corresponding input size is used for the output.
+</p>
+<p>The <var>width</var> expression can reference the value set by the
+<var>height</var> expression, and vice versa.
+</p>
+<p>The default value of <var>width</var> and <var>height</var> is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>Specify an expression for the offsets where to place the input image
+in the padded area with respect to the top/left border of the output
+image.
+</p>
+<p>The <var>x</var> expression can reference the value set by the <var>y</var>
+expression, and vice versa.
+</p>
+<p>The default value of <var>x</var> and <var>y</var> is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
+<dd><p>Specify the color of the padded area. For the syntax of this option,
+check the &quot;Color&quot; section in the ffmpeg-utils manual.
+</p>
+<p>The default value of <var>color</var> is &quot;black&quot;.
+</p></dd>
+</dl>
+
+<p>The value for the <var>width</var>, <var>height</var>, <var>x</var>, and <var>y</var>
+options are expressions containing the following constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>in_w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>in_h</samp>&rsquo;</dt>
+<dd><p>the input video width and height
+</p>
+</dd>
+<dt> &lsquo;<samp>iw</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ih</samp>&rsquo;</dt>
+<dd><p>same as <var>in_w</var> and <var>in_h</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>out_w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>out_h</samp>&rsquo;</dt>
+<dd><p>the output width and height, that is the size of the padded area as
+specified by the <var>width</var> and <var>height</var> expressions
+</p>
+</dd>
+<dt> &lsquo;<samp>ow</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>oh</samp>&rsquo;</dt>
+<dd><p>same as <var>out_w</var> and <var>out_h</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>x and y offsets as specified by the <var>x</var> and <var>y</var>
+expressions, or NAN if not yet specified
+</p>
+</dd>
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>same as <var>iw</var> / <var>ih</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
+<dd><p>input sample aspect ratio
+</p>
+</dd>
+<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
+<dd><p>input display aspect ratio, it is the same as (<var>iw</var> / <var>ih</var>) * <var>sar</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p></dd>
+</dl>
+
+<a name="Examples-59"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-59">9.60.1 Examples</a></h3>
+
+<ul>
+<li>
+Add paddings with color &quot;violet&quot; to the input video. Output video
+size is 640x480, the top-left corner of the input video is placed at
+column 0, row 40:
+<table><tr><td>&nbsp;</td><td><pre class="example">pad=640:480:0:40:violet
+</pre></td></tr></table>
+
+<p>The example above is equivalent to the following command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pad=width=640:height=480:x=0:y=40:color=violet
+</pre></td></tr></table>
+
+</li><li>
+Pad the input to get an output with dimensions increased by 3/2,
+and put the input video at the center of the padded area:
+<table><tr><td>&nbsp;</td><td><pre class="example">pad=&quot;3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2&quot;
+</pre></td></tr></table>
+
+</li><li>
+Pad the input to get a squared output with size equal to the maximum
+value between the input width and height, and put the input video at
+the center of the padded area:
+<table><tr><td>&nbsp;</td><td><pre class="example">pad=&quot;max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2&quot;
+</pre></td></tr></table>
+
+</li><li>
+Pad the input to get a final w/h ratio of 16:9:
+<table><tr><td>&nbsp;</td><td><pre class="example">pad=&quot;ih*16/9:ih:(ow-iw)/2:(oh-ih)/2&quot;
+</pre></td></tr></table>
+
+</li><li>
+In case of anamorphic video, in order to set the output display aspect
+correctly, it is necessary to use <var>sar</var> in the expression,
+according to the relation:
+<table><tr><td>&nbsp;</td><td><pre class="example">(ih * X / ih) * sar = output_dar
+X = output_dar / sar
+</pre></td></tr></table>
+
+<p>Thus the previous example needs to be modified to:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pad=&quot;ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2&quot;
+</pre></td></tr></table>
+
+</li><li>
+Double output size and put the input video in the bottom-right
+corner of the output padded area:
+<table><tr><td>&nbsp;</td><td><pre class="example">pad=&quot;2*iw:2*ih:ow-iw:oh-ih&quot;
+</pre></td></tr></table>
+</li></ul>
+
+<a name="perspective"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-perspective">9.61 perspective</a></h2>
+
+<p>Correct perspective of video not recorded perpendicular to the screen.
+</p>
+<p>A description of the accepted parameters follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>x0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>x1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>x2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>x3</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y3</samp>&rsquo;</dt>
+<dd><p>Set coordinates expression for top left, top right, bottom left and bottom right corners.
+Default values are <code>0:0:W:0:0:H:W:H</code> with which perspective will remain unchanged.
+</p>
+<p>The expressions can use the following variables:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>W</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>H</samp>&rsquo;</dt>
+<dd><p>the width and height of video frame.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>interpolation</samp>&rsquo;</dt>
+<dd><p>Set interpolation for perspective correction.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>linear</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>cubic</samp>&rsquo;</dt>
+</dl>
+
+<p>Default value is &lsquo;<samp>linear</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<a name="phase"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-phase">9.62 phase</a></h2>
+
+<p>Delay interlaced video by one field time so that the field order changes.
+</p>
+<p>The intended use is to fix PAL movies that have been captured with the
+opposite field order to the film-to-video transfer.
+</p>
+<p>A description of the accepted parameters follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Set phase mode.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>Capture field order top-first, transfer bottom-first.
+Filter will delay the bottom field.
+</p>
+</dd>
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>Capture field order bottom-first, transfer top-first.
+Filter will delay the top field.
+</p>
+</dd>
+<dt> &lsquo;<samp>p</samp>&rsquo;</dt>
+<dd><p>Capture and transfer with the same field order. This mode only exists
+for the documentation of the other options to refer to, but if you
+actually select it, the filter will faithfully do nothing.
+</p>
+</dd>
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>Capture field order determined automatically by field flags, transfer
+opposite.
+Filter selects among &lsquo;<samp>t</samp>&rsquo; and &lsquo;<samp>b</samp>&rsquo; modes on a frame by frame
+basis using field flags. If no field information is available,
+then this works just like &lsquo;<samp>u</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>u</samp>&rsquo;</dt>
+<dd><p>Capture unknown or varying, transfer opposite.
+Filter selects among &lsquo;<samp>t</samp>&rsquo; and &lsquo;<samp>b</samp>&rsquo; on a frame by frame basis by
+analyzing the images and selecting the alternative that produces best
+match between the fields.
+</p>
+</dd>
+<dt> &lsquo;<samp>T</samp>&rsquo;</dt>
+<dd><p>Capture top-first, transfer unknown or varying.
+Filter selects among &lsquo;<samp>t</samp>&rsquo; and &lsquo;<samp>p</samp>&rsquo; using image analysis.
+</p>
+</dd>
+<dt> &lsquo;<samp>B</samp>&rsquo;</dt>
+<dd><p>Capture bottom-first, transfer unknown or varying.
+Filter selects among &lsquo;<samp>b</samp>&rsquo; and &lsquo;<samp>p</samp>&rsquo; using image analysis.
+</p>
+</dd>
+<dt> &lsquo;<samp>A</samp>&rsquo;</dt>
+<dd><p>Capture determined by field flags, transfer unknown or varying.
+Filter selects among &lsquo;<samp>t</samp>&rsquo;, &lsquo;<samp>b</samp>&rsquo; and &lsquo;<samp>p</samp>&rsquo; using field flags and
+image analysis. If no field information is available, then this works just
+like &lsquo;<samp>U</samp>&rsquo;. This is the default mode.
+</p>
+</dd>
+<dt> &lsquo;<samp>U</samp>&rsquo;</dt>
+<dd><p>Both capture and transfer unknown or varying.
+Filter selects among &lsquo;<samp>t</samp>&rsquo;, &lsquo;<samp>b</samp>&rsquo; and &lsquo;<samp>p</samp>&rsquo; using image analysis only.
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<a name="pixdesctest"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-pixdesctest">9.63 pixdesctest</a></h2>
+
+<p>Pixel format descriptor test filter, mainly useful for internal
+testing. The output video should be equal to the input video.
+</p>
+<p>For example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">format=monow, pixdesctest
+</pre></td></tr></table>
+
+<p>can be used to test the monowhite pixel format descriptor definition.
+</p>
+<a name="pp"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-pp">9.64 pp</a></h2>
+
+<p>Enable the specified chain of postprocessing subfilters using libpostproc. This
+library should be automatically selected with a GPL build (<code>--enable-gpl</code>).
+Subfilters must be separated by &rsquo;/&rsquo; and can be disabled by prepending a &rsquo;-&rsquo;.
+Each subfilter and some options have a short and a long name that can be used
+interchangeably, i.e. dr/dering are the same.
+</p>
+<p>The filters accept the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>subfilters</samp>&rsquo;</dt>
+<dd><p>Set postprocessing subfilters string.
+</p></dd>
+</dl>
+
+<p>All subfilters share common options to determine their scope:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>a/autoq</samp>&rsquo;</dt>
+<dd><p>Honor the quality commands for this subfilter.
+</p>
+</dd>
+<dt> &lsquo;<samp>c/chrom</samp>&rsquo;</dt>
+<dd><p>Do chrominance filtering, too (default).
+</p>
+</dd>
+<dt> &lsquo;<samp>y/nochrom</samp>&rsquo;</dt>
+<dd><p>Do luminance filtering only (no chrominance).
+</p>
+</dd>
+<dt> &lsquo;<samp>n/noluma</samp>&rsquo;</dt>
+<dd><p>Do chrominance filtering only (no luminance).
+</p></dd>
+</dl>
+
+<p>These options can be appended after the subfilter name, separated by a &rsquo;|&rsquo;.
+</p>
+<p>Available subfilters are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>hb/hdeblock[|difference[|flatness]]</samp>&rsquo;</dt>
+<dd><p>Horizontal deblocking filter
+</p><dl compact="compact">
+<dt> &lsquo;<samp>difference</samp>&rsquo;</dt>
+<dd><p>Difference factor where higher values mean more deblocking (default: <code>32</code>).
+</p></dd>
+<dt> &lsquo;<samp>flatness</samp>&rsquo;</dt>
+<dd><p>Flatness threshold where lower values mean more deblocking (default: <code>39</code>).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>vb/vdeblock[|difference[|flatness]]</samp>&rsquo;</dt>
+<dd><p>Vertical deblocking filter
+</p><dl compact="compact">
+<dt> &lsquo;<samp>difference</samp>&rsquo;</dt>
+<dd><p>Difference factor where higher values mean more deblocking (default: <code>32</code>).
+</p></dd>
+<dt> &lsquo;<samp>flatness</samp>&rsquo;</dt>
+<dd><p>Flatness threshold where lower values mean more deblocking (default: <code>39</code>).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>ha/hadeblock[|difference[|flatness]]</samp>&rsquo;</dt>
+<dd><p>Accurate horizontal deblocking filter
+</p><dl compact="compact">
+<dt> &lsquo;<samp>difference</samp>&rsquo;</dt>
+<dd><p>Difference factor where higher values mean more deblocking (default: <code>32</code>).
+</p></dd>
+<dt> &lsquo;<samp>flatness</samp>&rsquo;</dt>
+<dd><p>Flatness threshold where lower values mean more deblocking (default: <code>39</code>).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>va/vadeblock[|difference[|flatness]]</samp>&rsquo;</dt>
+<dd><p>Accurate vertical deblocking filter
+</p><dl compact="compact">
+<dt> &lsquo;<samp>difference</samp>&rsquo;</dt>
+<dd><p>Difference factor where higher values mean more deblocking (default: <code>32</code>).
+</p></dd>
+<dt> &lsquo;<samp>flatness</samp>&rsquo;</dt>
+<dd><p>Flatness threshold where lower values mean more deblocking (default: <code>39</code>).
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<p>The horizontal and vertical deblocking filters share the difference and
+flatness values so you cannot set different horizontal and vertical
+thresholds.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>h1/x1hdeblock</samp>&rsquo;</dt>
+<dd><p>Experimental horizontal deblocking filter
+</p>
+</dd>
+<dt> &lsquo;<samp>v1/x1vdeblock</samp>&rsquo;</dt>
+<dd><p>Experimental vertical deblocking filter
+</p>
+</dd>
+<dt> &lsquo;<samp>dr/dering</samp>&rsquo;</dt>
+<dd><p>Deringing filter
+</p>
+</dd>
+<dt> &lsquo;<samp>tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>threshold1</samp>&rsquo;</dt>
+<dd><p>larger -&gt; stronger filtering
+</p></dd>
+<dt> &lsquo;<samp>threshold2</samp>&rsquo;</dt>
+<dd><p>larger -&gt; stronger filtering
+</p></dd>
+<dt> &lsquo;<samp>threshold3</samp>&rsquo;</dt>
+<dd><p>larger -&gt; stronger filtering
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>al/autolevels[:f/fullyrange], automatic brightness / contrast correction</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>f/fullyrange</samp>&rsquo;</dt>
+<dd><p>Stretch luminance to <code>0-255</code>.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>lb/linblenddeint</samp>&rsquo;</dt>
+<dd><p>Linear blend deinterlacing filter that deinterlaces the given block by
+filtering all lines with a <code>(1 2 1)</code> filter.
+</p>
+</dd>
+<dt> &lsquo;<samp>li/linipoldeint</samp>&rsquo;</dt>
+<dd><p>Linear interpolating deinterlacing filter that deinterlaces the given block by
+linearly interpolating every second line.
+</p>
+</dd>
+<dt> &lsquo;<samp>ci/cubicipoldeint</samp>&rsquo;</dt>
+<dd><p>Cubic interpolating deinterlacing filter deinterlaces the given block by
+cubically interpolating every second line.
+</p>
+</dd>
+<dt> &lsquo;<samp>md/mediandeint</samp>&rsquo;</dt>
+<dd><p>Median deinterlacing filter that deinterlaces the given block by applying a
+median filter to every second line.
+</p>
+</dd>
+<dt> &lsquo;<samp>fd/ffmpegdeint</samp>&rsquo;</dt>
+<dd><p>FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
+second line with a <code>(-1 4 2 4 -1)</code> filter.
+</p>
+</dd>
+<dt> &lsquo;<samp>l5/lowpass5</samp>&rsquo;</dt>
+<dd><p>Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
+block by filtering all lines with a <code>(-1 2 6 2 -1)</code> filter.
+</p>
+</dd>
+<dt> &lsquo;<samp>fq/forceQuant[|quantizer]</samp>&rsquo;</dt>
+<dd><p>Overrides the quantizer table from the input with the constant quantizer you
+specify.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>quantizer</samp>&rsquo;</dt>
+<dd><p>Quantizer to use
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>de/default</samp>&rsquo;</dt>
+<dd><p>Default pp filter combination (<code>hb|a,vb|a,dr|a</code>)
+</p>
+</dd>
+<dt> &lsquo;<samp>fa/fast</samp>&rsquo;</dt>
+<dd><p>Fast pp filter combination (<code>h1|a,v1|a,dr|a</code>)
+</p>
+</dd>
+<dt> &lsquo;<samp>ac</samp>&rsquo;</dt>
+<dd><p>High quality pp filter combination (<code>ha|a|128|7,va|a,dr|a</code>)
+</p></dd>
+</dl>
+
+<a name="Examples-12"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-12">9.64.1 Examples</a></h3>
+
+<ul>
+<li>
+Apply horizontal and vertical deblocking, deringing and automatic
+brightness/contrast:
+<table><tr><td>&nbsp;</td><td><pre class="example">pp=hb/vb/dr/al
+</pre></td></tr></table>
+
+</li><li>
+Apply default filters without brightness/contrast correction:
+<table><tr><td>&nbsp;</td><td><pre class="example">pp=de/-al
+</pre></td></tr></table>
+
+</li><li>
+Apply default filters and temporal denoiser:
+<table><tr><td>&nbsp;</td><td><pre class="example">pp=default/tmpnoise|1|2|3
+</pre></td></tr></table>
+
+</li><li>
+Apply deblocking on luminance only, and switch vertical deblocking on or off
+automatically depending on available CPU time:
+<table><tr><td>&nbsp;</td><td><pre class="example">pp=hb|y/vb|a
+</pre></td></tr></table>
+</li></ul>
+
+<a name="psnr"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-psnr">9.65 psnr</a></h2>
+
+<p>Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
+Ratio) between two input videos.
+</p>
+<p>This filter takes in input two input videos, the first input is
+considered the &quot;main&quot; source and is passed unchanged to the
+output. The second input is used as a &quot;reference&quot; video for computing
+the PSNR.
+</p>
+<p>Both video inputs must have the same resolution and pixel format for
+this filter to work correctly. Also it assumes that both inputs
+have the same number of frames, which are compared one by one.
+</p>
+<p>The obtained average PSNR is printed through the logging system.
+</p>
+<p>The filter stores the accumulated MSE (mean squared error) of each
+frame, and at the end of the processing it is averaged across all frames
+equally, and the following formula is applied to obtain the PSNR:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">PSNR = 10*log10(MAX^2/MSE)
+</pre></td></tr></table>
+
+<p>Where MAX is the average of the maximum values of each component of the
+image.
+</p>
+<p>The description of the accepted parameters follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>stats_file, f</samp>&rsquo;</dt>
+<dd><p>If specified the filter will use the named file to save the PSNR of
+each individual frame.
+</p></dd>
+</dl>
+
+<p>The file printed if <var>stats_file</var> is selected, contains a sequence of
+key/value pairs of the form <var>key</var>:<var>value</var> for each compared
+couple of frames.
+</p>
+<p>A description of each shown parameter follows:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>sequential number of the input frame, starting from 1
+</p>
+</dd>
+<dt> &lsquo;<samp>mse_avg</samp>&rsquo;</dt>
+<dd><p>Mean Square Error pixel-by-pixel average difference of the compared
+frames, averaged over all the image components.
+</p>
+</dd>
+<dt> &lsquo;<samp>mse_y, mse_u, mse_v, mse_r, mse_g, mse_g, mse_a</samp>&rsquo;</dt>
+<dd><p>Mean Square Error pixel-by-pixel average difference of the compared
+frames for the component specified by the suffix.
+</p>
+</dd>
+<dt> &lsquo;<samp>psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a</samp>&rsquo;</dt>
+<dd><p>Peak Signal to Noise ratio of the compared frames for the component
+specified by the suffix.
+</p></dd>
+</dl>
+
+<p>For example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
+[main][ref] psnr=&quot;stats_file=stats.log&quot; [out]
+</pre></td></tr></table>
+
+<p>On this example the input file being processed is compared with the
+reference file &lsquo;<tt>ref_movie.mpg</tt>&rsquo;. The PSNR of each individual frame
+is stored in &lsquo;<tt>stats.log</tt>&rsquo;.
+</p>
+<a name="pullup"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-pullup">9.66 pullup</a></h2>
+
+<p>Pulldown reversal (inverse telecine) filter, capable of handling mixed
+hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
+content.
+</p>
+<p>The pullup filter is designed to take advantage of future context in making
+its decisions. This filter is stateless in the sense that it does not lock
+onto a pattern to follow, but it instead looks forward to the following
+fields in order to identify matches and rebuild progressive frames.
+</p>
+<p>To produce content with an even framerate, insert the fps filter after
+pullup, use <code>fps=24000/1001</code> if the input frame rate is 29.97fps,
+<code>fps=24</code> for 30fps and the (rare) telecined 25fps input.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>jl</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>jr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>jt</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>jb</samp>&rsquo;</dt>
+<dd><p>These options set the amount of &quot;junk&quot; to ignore at the left, right, top, and
+bottom of the image, respectively. Left and right are in units of 8 pixels,
+while top and bottom are in units of 2 lines.
+The default is 8 pixels on each side.
+</p>
+</dd>
+<dt> &lsquo;<samp>sb</samp>&rsquo;</dt>
+<dd><p>Set the strict breaks. Setting this option to 1 will reduce the chances of
+filter generating an occasional mismatched frame, but it may also cause an
+excessive number of frames to be dropped during high motion sequences.
+Conversely, setting it to -1 will make filter match fields more easily.
+This may help processing of video where there is slight blurring between
+the fields, but may also cause there to be interlaced frames in the output.
+Default value is <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>mp</samp>&rsquo;</dt>
+<dd><p>Set the metric plane to use. It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>l</samp>&rsquo;</dt>
+<dd><p>Use luma plane.
+</p>
+</dd>
+<dt> &lsquo;<samp>u</samp>&rsquo;</dt>
+<dd><p>Use chroma blue plane.
+</p>
+</dd>
+<dt> &lsquo;<samp>v</samp>&rsquo;</dt>
+<dd><p>Use chroma red plane.
+</p></dd>
+</dl>
+
+<p>This option may be set to use chroma plane instead of the default luma plane
+for doing filter&rsquo;s computations. This may improve accuracy on very clean
+source material, but more likely will decrease accuracy, especially if there
+is chroma noise (rainbow effect) or any grayscale video.
+The main purpose of setting &lsquo;<samp>mp</samp>&rsquo; to a chroma plane is to reduce CPU
+load and make pullup usable in realtime on slow machines.
+</p></dd>
+</dl>
+
+<p>For best results (without duplicated frames in the output file) it is
+necessary to change the output frame rate. For example, to inverse
+telecine NTSC input:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input -vf pullup -r 24000/1001 ...
+</pre></td></tr></table>
+
+<a name="removelogo"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-removelogo">9.67 removelogo</a></h2>
+
+<p>Suppress a TV station logo, using an image file to determine which
+pixels comprise the logo. It works by filling in the pixels that
+comprise the logo with neighboring pixels.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filename, f</samp>&rsquo;</dt>
+<dd><p>Set the filter bitmap file, which can be any image format supported by
+libavformat. The width and height of the image file must match those of the
+video stream being processed.
+</p></dd>
+</dl>
+
+<p>Pixels in the provided bitmap image with a value of zero are not
+considered part of the logo, non-zero pixels are considered part of
+the logo. If you use white (255) for the logo and black (0) for the
+rest, you will be safe. For making the filter bitmap, it is
+recommended to take a screen capture of a black frame with the logo
+visible, and then using a threshold filter followed by the erode
+filter once or twice.
+</p>
+<p>If needed, little splotches can be fixed manually. Remember that if
+logo pixels are not covered, the filter quality will be much
+reduced. Marking too many pixels as part of the logo does not hurt as
+much, but it will increase the amount of blurring needed to cover over
+the image and will destroy more information than necessary, and extra
+pixels will slow things down on a large logo.
+</p>
+<a name="rotate"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-rotate">9.68 rotate</a></h2>
+
+<p>Rotate video by an arbitrary angle expressed in radians.
+</p>
+<p>The filter accepts the following options:
+</p>
+<p>A description of the optional parameters follows.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>angle, a</samp>&rsquo;</dt>
+<dd><p>Set an expression for the angle by which to rotate the input video
+clockwise, expressed as a number of radians. A negative value will
+result in a counter-clockwise rotation. By default it is set to &quot;0&quot;.
+</p>
+<p>This expression is evaluated for each frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>out_w, ow</samp>&rsquo;</dt>
+<dd><p>Set the output width expression, default value is &quot;iw&quot;.
+This expression is evaluated just once during configuration.
+</p>
+</dd>
+<dt> &lsquo;<samp>out_h, oh</samp>&rsquo;</dt>
+<dd><p>Set the output height expression, default value is &quot;ih&quot;.
+This expression is evaluated just once during configuration.
+</p>
+</dd>
+<dt> &lsquo;<samp>bilinear</samp>&rsquo;</dt>
+<dd><p>Enable bilinear interpolation if set to 1, a value of 0 disables
+it. Default value is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>fillcolor, c</samp>&rsquo;</dt>
+<dd><p>Set the color used to fill the output area not covered by the rotated
+image. For the generalsyntax of this option, check the &quot;Color&quot; section in the
+ffmpeg-utils manual. If the special value &quot;none&quot; is selected then no
+background is printed (useful for example if the background is never shown).
+</p>
+<p>Default value is &quot;black&quot;.
+</p></dd>
+</dl>
+
+<p>The expressions for the angle and the output size can contain the
+following constants and functions:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>sequential number of the input frame, starting from 0. It is always NAN
+before the first frame is filtered.
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>time in seconds of the input frame, it is set to 0 when the filter is
+configured. It is always NAN before the first frame is filtered.
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>in_w, iw</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>in_h, ih</samp>&rsquo;</dt>
+<dd><p>the input video width and heigth
+</p>
+</dd>
+<dt> &lsquo;<samp>out_w, ow</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>out_h, oh</samp>&rsquo;</dt>
+<dd><p>the output width and heigth, that is the size of the padded area as
+specified by the <var>width</var> and <var>height</var> expressions
+</p>
+</dd>
+<dt> &lsquo;<samp>rotw(a)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>roth(a)</samp>&rsquo;</dt>
+<dd><p>the minimal width/height required for completely containing the input
+video rotated by <var>a</var> radians.
+</p>
+<p>These are only available when computing the &lsquo;<samp>out_w</samp>&rsquo; and
+&lsquo;<samp>out_h</samp>&rsquo; expressions.
+</p></dd>
+</dl>
+
+<a name="Examples-33"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-33">9.68.1 Examples</a></h3>
+
+<ul>
+<li>
+Rotate the input by PI/6 radians clockwise:
+<table><tr><td>&nbsp;</td><td><pre class="example">rotate=PI/6
+</pre></td></tr></table>
+
+</li><li>
+Rotate the input by PI/6 radians counter-clockwise:
+<table><tr><td>&nbsp;</td><td><pre class="example">rotate=-PI/6
+</pre></td></tr></table>
+
+</li><li>
+Apply a constant rotation with period T, starting from an angle of PI/3:
+<table><tr><td>&nbsp;</td><td><pre class="example">rotate=PI/3+2*PI*t/T
+</pre></td></tr></table>
+
+</li><li>
+Make the input video rotation oscillating with a period of T
+seconds and an amplitude of A radians:
+<table><tr><td>&nbsp;</td><td><pre class="example">rotate=A*sin(2*PI/T*t)
+</pre></td></tr></table>
+
+</li><li>
+Rotate the video, output size is choosen so that the whole rotating
+input video is always completely contained in the output:
+<table><tr><td>&nbsp;</td><td><pre class="example">rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
+</pre></td></tr></table>
+
+</li><li>
+Rotate the video, reduce the output size so that no background is ever
+shown:
+<table><tr><td>&nbsp;</td><td><pre class="example">rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
+</pre></td></tr></table>
+</li></ul>
+
+<a name="Commands-4"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Commands-4">9.68.2 Commands</a></h3>
+
+<p>The filter supports the following commands:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>a, angle</samp>&rsquo;</dt>
+<dd><p>Set the angle expression.
+The command accepts the same syntax of the corresponding option.
+</p>
+<p>If the specified expression is not valid, it is kept at its current
+value.
+</p></dd>
+</dl>
+
+<a name="sab"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-sab">9.69 sab</a></h2>
+
+<p>Apply Shape Adaptive Blur.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>luma_radius, lr</samp>&rsquo;</dt>
+<dd><p>Set luma blur filter strength, must be a value in range 0.1-4.0, default
+value is 1.0. A greater value will result in a more blurred image, and
+in slower processing.
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_pre_filter_radius, lpfr</samp>&rsquo;</dt>
+<dd><p>Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
+value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_strength, ls</samp>&rsquo;</dt>
+<dd><p>Set luma maximum difference between pixels to still be considered, must
+be a value in the 0.1-100.0 range, default value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_radius, cr</samp>&rsquo;</dt>
+<dd><p>Set chroma blur filter strength, must be a value in range 0.1-4.0. A
+greater value will result in a more blurred image, and in slower
+processing.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_pre_filter_radius, cpfr</samp>&rsquo;</dt>
+<dd><p>Set chroma pre-filter radius, must be a value in the 0.1-2.0 range.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_strength, cs</samp>&rsquo;</dt>
+<dd><p>Set chroma maximum difference between pixels to still be considered,
+must be a value in the 0.1-100.0 range.
+</p></dd>
+</dl>
+
+<p>Each chroma option value, if not explicitly specified, is set to the
+corresponding luma option value.
+</p>
+<p><a name="scale"></a>
+</p><a name="scale-1"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-scale-1">9.70 scale</a></h2>
+
+<p>Scale (resize) the input video, using the libswscale library.
+</p>
+<p>The scale filter forces the output display aspect ratio to be the same
+of the input, by changing the output sample aspect ratio.
+</p>
+<p>If the input image format is different from the format requested by
+the next filter, the scale filter will convert the input to the
+requested format.
+</p>
+<a name="Options"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Options">9.70.1 Options</a></h3>
+<p>The filter accepts the following options, or any of the options
+supported by the libswscale scaler.
+</p>
+<p>See <a href="ffmpeg-scaler.html#scaler_005foptions">(ffmpeg-scaler)scaler_options</a> for
+the complete list of scaler options.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>height, h</samp>&rsquo;</dt>
+<dd><p>Set the output video dimension expression. Default value is the input
+dimension.
+</p>
+<p>If the value is 0, the input width is used for the output.
+</p>
+<p>If one of the values is -1, the scale filter will use a value that
+maintains the aspect ratio of the input image, calculated from the
+other specified dimension. If both of them are -1, the input size is
+used
+</p>
+<p>See below for the list of accepted constants for use in the dimension
+expression.
+</p>
+</dd>
+<dt> &lsquo;<samp>interl</samp>&rsquo;</dt>
+<dd><p>Set the interlacing mode. It accepts the following values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>Force interlaced aware scaling.
+</p>
+</dd>
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>Do not apply interlaced scaling.
+</p>
+</dd>
+<dt> &lsquo;<samp>-1</samp>&rsquo;</dt>
+<dd><p>Select interlaced aware scaling depending on whether the source frames
+are flagged as interlaced or not.
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>0</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>flags</samp>&rsquo;</dt>
+<dd><p>Set libswscale scaling flags. See
+<a href="ffmpeg-scaler.html#sws_005fflags">(ffmpeg-scaler)sws_flags</a> for the
+complete list of values. If not explictly specified the filter applies
+the default flags.
+</p>
+</dd>
+<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
+<dd><p>Set the video size. For the syntax of this option, check the &quot;Video size&quot;
+section in the ffmpeg-utils manual.
+</p>
+</dd>
+<dt> &lsquo;<samp>in_color_matrix</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>out_color_matrix</samp>&rsquo;</dt>
+<dd><p>Set in/output YCbCr color space type.
+</p>
+<p>This allows the autodetected value to be overridden as well as allows forcing
+a specific value used for the output and encoder.
+</p>
+<p>If not specified, the color space type depends on the pixel format.
+</p>
+<p>Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Choose automatically.
+</p>
+</dd>
+<dt> &lsquo;<samp>bt709</samp>&rsquo;</dt>
+<dd><p>Format conforming to International Telecommunication Union (ITU)
+Recommendation BT.709.
+</p>
+</dd>
+<dt> &lsquo;<samp>fcc</samp>&rsquo;</dt>
+<dd><p>Set color space conforming to the United States Federal Communications
+Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
+</p>
+</dd>
+<dt> &lsquo;<samp>bt601</samp>&rsquo;</dt>
+<dd><p>Set color space conforming to:
+</p>
+<ul>
+<li>
+ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
+
+</li><li>
+ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
+
+</li><li>
+Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
+
+</li></ul>
+
+</dd>
+<dt> &lsquo;<samp>smpte240m</samp>&rsquo;</dt>
+<dd><p>Set color space conforming to SMPTE ST 240:1999.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>in_range</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>out_range</samp>&rsquo;</dt>
+<dd><p>Set in/output YCbCr sample range.
+</p>
+<p>This allows the autodetected value to be overridden as well as allows forcing
+a specific value used for the output and encoder. If not specified, the
+range depends on the pixel format. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Choose automatically.
+</p>
+</dd>
+<dt> &lsquo;<samp>jpeg/full/pc</samp>&rsquo;</dt>
+<dd><p>Set full range (0-255 in case of 8-bit luma).
+</p>
+</dd>
+<dt> &lsquo;<samp>mpeg/tv</samp>&rsquo;</dt>
+<dd><p>Set &quot;MPEG&quot; range (16-235 in case of 8-bit luma).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>force_original_aspect_ratio</samp>&rsquo;</dt>
+<dd><p>Enable decreasing or increasing output video width or height if necessary to
+keep the original aspect ratio. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>disable</samp>&rsquo;</dt>
+<dd><p>Scale the video as specified and disable this feature.
+</p>
+</dd>
+<dt> &lsquo;<samp>decrease</samp>&rsquo;</dt>
+<dd><p>The output video dimensions will automatically be decreased if needed.
+</p>
+</dd>
+<dt> &lsquo;<samp>increase</samp>&rsquo;</dt>
+<dd><p>The output video dimensions will automatically be increased if needed.
+</p>
+</dd>
+</dl>
+
+<p>One useful instance of this option is that when you know a specific device&rsquo;s
+maximum allowed resolution, you can use this to limit the output video to
+that, while retaining the aspect ratio. For example, device A allows
+1280x720 playback, and your video is 1920x800. Using this option (set it to
+decrease) and specifying 1280x720 to the command line makes the output
+1280x533.
+</p>
+<p>Please note that this is a different thing than specifying -1 for &lsquo;<samp>w</samp>&rsquo;
+or &lsquo;<samp>h</samp>&rsquo;, you still need to specify the output resolution for this option
+to work.
+</p>
+</dd>
+</dl>
+
+<p>The values of the &lsquo;<samp>w</samp>&rsquo; and &lsquo;<samp>h</samp>&rsquo; options are expressions
+containing the following constants:
+</p>
+<dl compact="compact">
+<dt> <var>in_w</var></dt>
+<dt> <var>in_h</var></dt>
+<dd><p>the input width and height
+</p>
+</dd>
+<dt> <var>iw</var></dt>
+<dt> <var>ih</var></dt>
+<dd><p>same as <var>in_w</var> and <var>in_h</var>
+</p>
+</dd>
+<dt> <var>out_w</var></dt>
+<dt> <var>out_h</var></dt>
+<dd><p>the output (scaled) width and height
+</p>
+</dd>
+<dt> <var>ow</var></dt>
+<dt> <var>oh</var></dt>
+<dd><p>same as <var>out_w</var> and <var>out_h</var>
+</p>
+</dd>
+<dt> <var>a</var></dt>
+<dd><p>same as <var>iw</var> / <var>ih</var>
+</p>
+</dd>
+<dt> <var>sar</var></dt>
+<dd><p>input sample aspect ratio
+</p>
+</dd>
+<dt> <var>dar</var></dt>
+<dd><p>input display aspect ratio. Calculated from <code>(iw / ih) * sar</code>.
+</p>
+</dd>
+<dt> <var>hsub</var></dt>
+<dt> <var>vsub</var></dt>
+<dd><p>horizontal and vertical input chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p>
+</dd>
+<dt> <var>ohsub</var></dt>
+<dt> <var>ovsub</var></dt>
+<dd><p>horizontal and vertical output chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p></dd>
+</dl>
+
+<a name="Examples-44"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-44">9.70.2 Examples</a></h3>
+
+<ul>
+<li>
+Scale the input video to a size of 200x100:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=w=200:h=100
+</pre></td></tr></table>
+
+<p>This is equivalent to:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">scale=200:100
+</pre></td></tr></table>
+
+<p>or:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">scale=200x100
+</pre></td></tr></table>
+
+</li><li>
+Specify a size abbreviation for the output size:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=qcif
+</pre></td></tr></table>
+
+<p>which can also be written as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">scale=size=qcif
+</pre></td></tr></table>
+
+</li><li>
+Scale the input to 2x:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=w=2*iw:h=2*ih
+</pre></td></tr></table>
+
+</li><li>
+The above is the same as:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=2*in_w:2*in_h
+</pre></td></tr></table>
+
+</li><li>
+Scale the input to 2x with forced interlaced scaling:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=2*iw:2*ih:interl=1
+</pre></td></tr></table>
+
+</li><li>
+Scale the input to half size:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=w=iw/2:h=ih/2
+</pre></td></tr></table>
+
+</li><li>
+Increase the width, and set the height to the same size:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=3/2*iw:ow
+</pre></td></tr></table>
+
+</li><li>
+Seek for Greek harmony:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=iw:1/PHI*iw
+scale=ih*PHI:ih
+</pre></td></tr></table>
+
+</li><li>
+Increase the height, and set the width to 3/2 of the height:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=w=3/2*oh:h=3/5*ih
+</pre></td></tr></table>
+
+</li><li>
+Increase the size, but make the size a multiple of the chroma
+subsample values:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=&quot;trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub&quot;
+</pre></td></tr></table>
+
+</li><li>
+Increase the width to a maximum of 500 pixels, keep the same input
+aspect ratio:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=w='min(500\, iw*3/2):h=-1'
+</pre></td></tr></table>
+</li></ul>
+
+<a name="separatefields"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-separatefields">9.71 separatefields</a></h2>
+
+<p>The <code>separatefields</code> takes a frame-based video input and splits
+each frame into its components fields, producing a new half height clip
+with twice the frame rate and twice the frame count.
+</p>
+<p>This filter use field-dominance information in frame to decide which
+of each pair of fields to place first in the output.
+If it gets it wrong use <a href="#setfield">setfield</a> filter before <code>separatefields</code> filter.
+</p>
+<a name="setdar_002c-setsar"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-setdar_002c-setsar">9.72 setdar, setsar</a></h2>
+
+<p>The <code>setdar</code> filter sets the Display Aspect Ratio for the filter
+output video.
+</p>
+<p>This is done by changing the specified Sample (aka Pixel) Aspect
+Ratio, according to the following equation:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>DAR</var> = <var>HORIZONTAL_RESOLUTION</var> / <var>VERTICAL_RESOLUTION</var> * <var>SAR</var>
+</pre></td></tr></table>
+
+<p>Keep in mind that the <code>setdar</code> filter does not modify the pixel
+dimensions of the video frame. Also the display aspect ratio set by
+this filter may be changed by later filters in the filterchain,
+e.g. in case of scaling or if another &quot;setdar&quot; or a &quot;setsar&quot; filter is
+applied.
+</p>
+<p>The <code>setsar</code> filter sets the Sample (aka Pixel) Aspect Ratio for
+the filter output video.
+</p>
+<p>Note that as a consequence of the application of this filter, the
+output display aspect ratio will change according to the equation
+above.
+</p>
+<p>Keep in mind that the sample aspect ratio set by the <code>setsar</code>
+filter may be changed by later filters in the filterchain, e.g. if
+another &quot;setsar&quot; or a &quot;setdar&quot; filter is applied.
+</p>
+<p>The filters accept the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>r, ratio, dar (<code>setdar</code> only), sar (<code>setsar</code> only)</samp>&rsquo;</dt>
+<dd><p>Set the aspect ratio used by the filter.
+</p>
+<p>The parameter can be a floating point number string, an expression, or
+a string of the form <var>num</var>:<var>den</var>, where <var>num</var> and
+<var>den</var> are the numerator and denominator of the aspect ratio. If
+the parameter is not specified, it is assumed the value &quot;0&quot;.
+In case the form &quot;<var>num</var>:<var>den</var>&quot; is used, the <code>:</code> character
+should be escaped.
+</p>
+</dd>
+<dt> &lsquo;<samp>max</samp>&rsquo;</dt>
+<dd><p>Set the maximum integer value to use for expressing numerator and
+denominator when reducing the expressed aspect ratio to a rational.
+Default value is <code>100</code>.
+</p>
+</dd>
+</dl>
+
+<p>The parameter <var>sar</var> is an expression containing
+the following constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>E, PI, PHI</samp>&rsquo;</dt>
+<dd><p>the corresponding mathematical approximated values for e
+(euler number), pi (greek PI), phi (golden ratio)
+</p>
+</dd>
+<dt> &lsquo;<samp>w, h</samp>&rsquo;</dt>
+<dd><p>the input width and height
+</p>
+</dd>
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>same as <var>w</var> / <var>h</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
+<dd><p>input sample aspect ratio
+</p>
+</dd>
+<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
+<dd><p>input display aspect ratio, it is the same as (<var>w</var> / <var>h</var>) * <var>sar</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub, vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p></dd>
+</dl>
+
+<a name="Examples-16"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-16">9.72.1 Examples</a></h3>
+
+<ul>
+<li>
+To change the display aspect ratio to 16:9, specify one of the following:
+<table><tr><td>&nbsp;</td><td><pre class="example">setdar=dar=1.77777
+setdar=dar=16/9
+setdar=dar=1.77777
+</pre></td></tr></table>
+
+</li><li>
+To change the sample aspect ratio to 10:11, specify:
+<table><tr><td>&nbsp;</td><td><pre class="example">setsar=sar=10/11
+</pre></td></tr></table>
+
+</li><li>
+To set a display aspect ratio of 16:9, and specify a maximum integer value of
+1000 in the aspect ratio reduction, use the command:
+<table><tr><td>&nbsp;</td><td><pre class="example">setdar=ratio=16/9:max=1000
+</pre></td></tr></table>
+
+</li></ul>
+
+<p><a name="setfield"></a>
+</p><a name="setfield-1"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-setfield-1">9.73 setfield</a></h2>
+
+<p>Force field for the output video frame.
+</p>
+<p>The <code>setfield</code> filter marks the interlace type field for the
+output frames. It does not change the input frame, but only sets the
+corresponding property, which affects how the frame is treated by
+following filters (e.g. <code>fieldorder</code> or <code>yadif</code>).
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Keep the same field property.
+</p>
+</dd>
+<dt> &lsquo;<samp>bff</samp>&rsquo;</dt>
+<dd><p>Mark the frame as bottom-field-first.
+</p>
+</dd>
+<dt> &lsquo;<samp>tff</samp>&rsquo;</dt>
+<dd><p>Mark the frame as top-field-first.
+</p>
+</dd>
+<dt> &lsquo;<samp>prog</samp>&rsquo;</dt>
+<dd><p>Mark the frame as progressive.
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<a name="showinfo"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-showinfo">9.74 showinfo</a></h2>
+
+<p>Show a line containing various information for each input video frame.
+The input video is not modified.
+</p>
+<p>The shown line contains a sequence of key/value pairs of the form
+<var>key</var>:<var>value</var>.
+</p>
+<p>A description of each shown parameter follows:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>sequential number of the input frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
+<dd><p>Presentation TimeStamp of the input frame, expressed as a number of
+time base units. The time base unit depends on the filter input pad.
+</p>
+</dd>
+<dt> &lsquo;<samp>pts_time</samp>&rsquo;</dt>
+<dd><p>Presentation TimeStamp of the input frame, expressed as a number of
+seconds
+</p>
+</dd>
+<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
+<dd><p>position of the frame in the input stream, -1 if this information in
+unavailable and/or meaningless (for example in case of synthetic video)
+</p>
+</dd>
+<dt> &lsquo;<samp>fmt</samp>&rsquo;</dt>
+<dd><p>pixel format name
+</p>
+</dd>
+<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
+<dd><p>sample aspect ratio of the input frame, expressed in the form
+<var>num</var>/<var>den</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>size of the input frame. For the syntax of this option, check the &quot;Video size&quot;
+section in the ffmpeg-utils manual.
+</p>
+</dd>
+<dt> &lsquo;<samp>i</samp>&rsquo;</dt>
+<dd><p>interlaced mode (&quot;P&quot; for &quot;progressive&quot;, &quot;T&quot; for top field first, &quot;B&quot;
+for bottom field first)
+</p>
+</dd>
+<dt> &lsquo;<samp>iskey</samp>&rsquo;</dt>
+<dd><p>1 if the frame is a key frame, 0 otherwise
+</p>
+</dd>
+<dt> &lsquo;<samp>type</samp>&rsquo;</dt>
+<dd><p>picture type of the input frame (&quot;I&quot; for an I-frame, &quot;P&quot; for a
+P-frame, &quot;B&quot; for a B-frame, &quot;?&quot; for unknown type).
+Check also the documentation of the <code>AVPictureType</code> enum and of
+the <code>av_get_picture_type_char</code> function defined in
+&lsquo;<tt>libavutil/avutil.h</tt>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>checksum</samp>&rsquo;</dt>
+<dd><p>Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame
+</p>
+</dd>
+<dt> &lsquo;<samp>plane_checksum</samp>&rsquo;</dt>
+<dd><p>Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
+expressed in the form &quot;[<var>c0</var> <var>c1</var> <var>c2</var> <var>c3</var>]&quot;
+</p></dd>
+</dl>
+
+<p><a name="smartblur"></a>
+</p><a name="smartblur-1"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-smartblur-1">9.75 smartblur</a></h2>
+
+<p>Blur the input video without impacting the outlines.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>luma_radius, lr</samp>&rsquo;</dt>
+<dd><p>Set the luma radius. The option value must be a float number in
+the range [0.1,5.0] that specifies the variance of the gaussian filter
+used to blur the image (slower if larger). Default value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_strength, ls</samp>&rsquo;</dt>
+<dd><p>Set the luma strength. The option value must be a float number
+in the range [-1.0,1.0] that configures the blurring. A value included
+in [0.0,1.0] will blur the image whereas a value included in
+[-1.0,0.0] will sharpen the image. Default value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_threshold, lt</samp>&rsquo;</dt>
+<dd><p>Set the luma threshold used as a coefficient to determine
+whether a pixel should be blurred or not. The option value must be an
+integer in the range [-30,30]. A value of 0 will filter all the image,
+a value included in [0,30] will filter flat areas and a value included
+in [-30,0] will filter edges. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_radius, cr</samp>&rsquo;</dt>
+<dd><p>Set the chroma radius. The option value must be a float number in
+the range [0.1,5.0] that specifies the variance of the gaussian filter
+used to blur the image (slower if larger). Default value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_strength, cs</samp>&rsquo;</dt>
+<dd><p>Set the chroma strength. The option value must be a float number
+in the range [-1.0,1.0] that configures the blurring. A value included
+in [0.0,1.0] will blur the image whereas a value included in
+[-1.0,0.0] will sharpen the image. Default value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_threshold, ct</samp>&rsquo;</dt>
+<dd><p>Set the chroma threshold used as a coefficient to determine
+whether a pixel should be blurred or not. The option value must be an
+integer in the range [-30,30]. A value of 0 will filter all the image,
+a value included in [0,30] will filter flat areas and a value included
+in [-30,0] will filter edges. Default value is 0.
+</p></dd>
+</dl>
+
+<p>If a chroma option is not explicitly set, the corresponding luma value
+is set.
+</p>
+<a name="stereo3d"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-stereo3d">9.76 stereo3d</a></h2>
+
+<p>Convert between different stereoscopic image formats.
+</p>
+<p>The filters accept the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>in</samp>&rsquo;</dt>
+<dd><p>Set stereoscopic image format of input.
+</p>
+<p>Available values for input image formats are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sbsl</samp>&rsquo;</dt>
+<dd><p>side by side parallel (left eye left, right eye right)
+</p>
+</dd>
+<dt> &lsquo;<samp>sbsr</samp>&rsquo;</dt>
+<dd><p>side by side crosseye (right eye left, left eye right)
+</p>
+</dd>
+<dt> &lsquo;<samp>sbs2l</samp>&rsquo;</dt>
+<dd><p>side by side parallel with half width resolution
+(left eye left, right eye right)
+</p>
+</dd>
+<dt> &lsquo;<samp>sbs2r</samp>&rsquo;</dt>
+<dd><p>side by side crosseye with half width resolution
+(right eye left, left eye right)
+</p>
+</dd>
+<dt> &lsquo;<samp>abl</samp>&rsquo;</dt>
+<dd><p>above-below (left eye above, right eye below)
+</p>
+</dd>
+<dt> &lsquo;<samp>abr</samp>&rsquo;</dt>
+<dd><p>above-below (right eye above, left eye below)
+</p>
+</dd>
+<dt> &lsquo;<samp>ab2l</samp>&rsquo;</dt>
+<dd><p>above-below with half height resolution
+(left eye above, right eye below)
+</p>
+</dd>
+<dt> &lsquo;<samp>ab2r</samp>&rsquo;</dt>
+<dd><p>above-below with half height resolution
+(right eye above, left eye below)
+</p>
+</dd>
+<dt> &lsquo;<samp>al</samp>&rsquo;</dt>
+<dd><p>alternating frames (left eye first, right eye second)
+</p>
+</dd>
+<dt> &lsquo;<samp>ar</samp>&rsquo;</dt>
+<dd><p>alternating frames (right eye first, left eye second)
+</p>
+<p>Default value is &lsquo;<samp>sbsl</samp>&rsquo;.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>out</samp>&rsquo;</dt>
+<dd><p>Set stereoscopic image format of output.
+</p>
+<p>Available values for output image formats are all the input formats as well as:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>arbg</samp>&rsquo;</dt>
+<dd><p>anaglyph red/blue gray
+(red filter on left eye, blue filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>argg</samp>&rsquo;</dt>
+<dd><p>anaglyph red/green gray
+(red filter on left eye, green filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>arcg</samp>&rsquo;</dt>
+<dd><p>anaglyph red/cyan gray
+(red filter on left eye, cyan filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>arch</samp>&rsquo;</dt>
+<dd><p>anaglyph red/cyan half colored
+(red filter on left eye, cyan filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>arcc</samp>&rsquo;</dt>
+<dd><p>anaglyph red/cyan color
+(red filter on left eye, cyan filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>arcd</samp>&rsquo;</dt>
+<dd><p>anaglyph red/cyan color optimized with the least squares projection of dubois
+(red filter on left eye, cyan filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>agmg</samp>&rsquo;</dt>
+<dd><p>anaglyph green/magenta gray
+(green filter on left eye, magenta filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>agmh</samp>&rsquo;</dt>
+<dd><p>anaglyph green/magenta half colored
+(green filter on left eye, magenta filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>agmc</samp>&rsquo;</dt>
+<dd><p>anaglyph green/magenta colored
+(green filter on left eye, magenta filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>agmd</samp>&rsquo;</dt>
+<dd><p>anaglyph green/magenta color optimized with the least squares projection of dubois
+(green filter on left eye, magenta filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>aybg</samp>&rsquo;</dt>
+<dd><p>anaglyph yellow/blue gray
+(yellow filter on left eye, blue filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>aybh</samp>&rsquo;</dt>
+<dd><p>anaglyph yellow/blue half colored
+(yellow filter on left eye, blue filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>aybc</samp>&rsquo;</dt>
+<dd><p>anaglyph yellow/blue colored
+(yellow filter on left eye, blue filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>aybd</samp>&rsquo;</dt>
+<dd><p>anaglyph yellow/blue color optimized with the least squares projection of dubois
+(yellow filter on left eye, blue filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>irl</samp>&rsquo;</dt>
+<dd><p>interleaved rows (left eye has top row, right eye starts on next row)
+</p>
+</dd>
+<dt> &lsquo;<samp>irr</samp>&rsquo;</dt>
+<dd><p>interleaved rows (right eye has top row, left eye starts on next row)
+</p>
+</dd>
+<dt> &lsquo;<samp>ml</samp>&rsquo;</dt>
+<dd><p>mono output (left eye only)
+</p>
+</dd>
+<dt> &lsquo;<samp>mr</samp>&rsquo;</dt>
+<dd><p>mono output (right eye only)
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>arcd</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<a name="Examples-73"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-73">9.76.1 Examples</a></h3>
+
+<ul>
+<li>
+Convert input video from side by side parallel to anaglyph yellow/blue dubois:
+<table><tr><td>&nbsp;</td><td><pre class="example">stereo3d=sbsl:aybd
+</pre></td></tr></table>
+
+</li><li>
+Convert input video from above bellow (left eye above, right eye below) to side by side crosseye.
+<table><tr><td>&nbsp;</td><td><pre class="example">stereo3d=abl:sbsr
+</pre></td></tr></table>
+</li></ul>
+
+<a name="spp"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-spp">9.77 spp</a></h2>
+
+<p>Apply a simple postprocessing filter that compresses and decompresses the image
+at several (or - in the case of &lsquo;<samp>quality</samp>&rsquo; level <code>6</code> - all) shifts
+and average the results.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>quality</samp>&rsquo;</dt>
+<dd><p>Set quality. This option defines the number of levels for averaging. It accepts
+an integer in the range 0-6. If set to <code>0</code>, the filter will have no
+effect. A value of <code>6</code> means the higher quality. For each increment of
+that value the speed drops by a factor of approximately 2.  Default value is
+<code>3</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>qp</samp>&rsquo;</dt>
+<dd><p>Force a constant quantization parameter. If not set, the filter will use the QP
+from the video stream (if available).
+</p>
+</dd>
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Set thresholding mode. Available modes are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>hard</samp>&rsquo;</dt>
+<dd><p>Set hard thresholding (default).
+</p></dd>
+<dt> &lsquo;<samp>soft</samp>&rsquo;</dt>
+<dd><p>Set soft thresholding (better de-ringing effect, but likely blurrier).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>use_bframe_qp</samp>&rsquo;</dt>
+<dd><p>Enable the use of the QP from the B-Frames if set to <code>1</code>. Using this
+option may cause flicker since the B-Frames have often larger QP. Default is
+<code>0</code> (not enabled).
+</p></dd>
+</dl>
+
+<p><a name="subtitles"></a>
+</p><a name="subtitles-1"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-subtitles-1">9.78 subtitles</a></h2>
+
+<p>Draw subtitles on top of input video using the libass library.
+</p>
+<p>To enable compilation of this filter you need to configure FFmpeg with
+<code>--enable-libass</code>. This filter also requires a build with libavcodec and
+libavformat to convert the passed subtitles file to ASS (Advanced Substation
+Alpha) subtitles format.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filename, f</samp>&rsquo;</dt>
+<dd><p>Set the filename of the subtitle file to read. It must be specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>original_size</samp>&rsquo;</dt>
+<dd><p>Specify the size of the original video, the video for which the ASS file
+was composed. For the syntax of this option, check the &quot;Video size&quot; section in
+the ffmpeg-utils manual. Due to a misdesign in ASS aspect ratio arithmetic,
+this is necessary to correctly scale the fonts if the aspect ratio has been
+changed.
+</p>
+</dd>
+<dt> &lsquo;<samp>charenc</samp>&rsquo;</dt>
+<dd><p>Set subtitles input character encoding. <code>subtitles</code> filter only. Only
+useful if not UTF-8.
+</p></dd>
+</dl>
+
+<p>If the first key is not specified, it is assumed that the first value
+specifies the &lsquo;<samp>filename</samp>&rsquo;.
+</p>
+<p>For example, to render the file &lsquo;<tt>sub.srt</tt>&rsquo; on top of the input
+video, use the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">subtitles=sub.srt
+</pre></td></tr></table>
+
+<p>which is equivalent to:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">subtitles=filename=sub.srt
+</pre></td></tr></table>
+
+<a name="super2xsai"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-super2xsai">9.79 super2xsai</a></h2>
+
+<p>Scale the input by 2x and smooth using the Super2xSaI (Scale and
+Interpolate) pixel art scaling algorithm.
+</p>
+<p>Useful for enlarging pixel art images without reducing sharpness.
+</p>
+<a name="swapuv"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-swapuv">9.80 swapuv</a></h2>
+<p>Swap U &amp; V plane.
+</p>
+<a name="telecine"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-telecine">9.81 telecine</a></h2>
+
+<p>Apply telecine process to the video.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>first_field</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>top, t</samp>&rsquo;</dt>
+<dd><p>top field first
+</p></dd>
+<dt> &lsquo;<samp>bottom, b</samp>&rsquo;</dt>
+<dd><p>bottom field first
+The default value is <code>top</code>.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>pattern</samp>&rsquo;</dt>
+<dd><p>A string of numbers representing the pulldown pattern you wish to apply.
+The default value is <code>23</code>.
+</p></dd>
+</dl>
+
+<table><tr><td>&nbsp;</td><td><pre class="example">Some typical patterns:
+
+NTSC output (30i):
+27.5p: 32222
+24p: 23 (classic)
+24p: 2332 (preferred)
+20p: 33
+18p: 334
+16p: 3444
+
+PAL output (25i):
+27.5p: 12222
+24p: 222222222223 (&quot;Euro pulldown&quot;)
+16.67p: 33
+16p: 33333334
+</pre></td></tr></table>
+
+<a name="thumbnail"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-thumbnail">9.82 thumbnail</a></h2>
+<p>Select the most representative frame in a given sequence of consecutive frames.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>Set the frames batch size to analyze; in a set of <var>n</var> frames, the filter
+will pick one of them, and then handle the next batch of <var>n</var> frames until
+the end. Default is <code>100</code>.
+</p></dd>
+</dl>
+
+<p>Since the filter keeps track of the whole frames sequence, a bigger <var>n</var>
+value will result in a higher memory usage, so a high value is not recommended.
+</p>
+<a name="Examples-53"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-53">9.82.1 Examples</a></h3>
+
+<ul>
+<li>
+Extract one picture each 50 frames:
+<table><tr><td>&nbsp;</td><td><pre class="example">thumbnail=50
+</pre></td></tr></table>
+
+</li><li>
+Complete example of a thumbnail creation with <code>ffmpeg</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
+</pre></td></tr></table>
+</li></ul>
+
+<a name="tile"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-tile">9.83 tile</a></h2>
+
+<p>Tile several successive frames together.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>layout</samp>&rsquo;</dt>
+<dd><p>Set the grid size (i.e. the number of lines and columns). For the syntax of
+this option, check the &quot;Video size&quot; section in the ffmpeg-utils manual.
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_frames</samp>&rsquo;</dt>
+<dd><p>Set the maximum number of frames to render in the given area. It must be less
+than or equal to <var>w</var>x<var>h</var>. The default value is <code>0</code>, meaning all
+the area will be used.
+</p>
+</dd>
+<dt> &lsquo;<samp>margin</samp>&rsquo;</dt>
+<dd><p>Set the outer border margin in pixels.
+</p>
+</dd>
+<dt> &lsquo;<samp>padding</samp>&rsquo;</dt>
+<dd><p>Set the inner border thickness (i.e. the number of pixels between frames). For
+more advanced padding options (such as having different values for the edges),
+refer to the pad video filter.
+</p>
+</dd>
+<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
+<dd><p>Specify the color of the unused areaFor the syntax of this option, check the
+&quot;Color&quot; section in the ffmpeg-utils manual. The default value of <var>color</var>
+is &quot;black&quot;.
+</p></dd>
+</dl>
+
+<a name="Examples-67"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-67">9.83.1 Examples</a></h3>
+
+<ul>
+<li>
+Produce 8x8 PNG tiles of all keyframes (&lsquo;<samp>-skip_frame nokey</samp>&rsquo;) in a movie:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
+</pre></td></tr></table>
+<p>The &lsquo;<samp>-vsync 0</samp>&rsquo; is necessary to prevent <code>ffmpeg</code> from
+duplicating each output frame to accomodate the originally detected frame
+rate.
+</p>
+</li><li>
+Display <code>5</code> pictures in an area of <code>3x2</code> frames,
+with <code>7</code> pixels between them, and <code>2</code> pixels of initial margin, using
+mixed flat and named options:
+<table><tr><td>&nbsp;</td><td><pre class="example">tile=3x2:nb_frames=5:padding=7:margin=2
+</pre></td></tr></table>
+</li></ul>
+
+<a name="tinterlace"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-tinterlace">9.84 tinterlace</a></h2>
+
+<p>Perform various types of temporal field interlacing.
+</p>
+<p>Frames are counted starting from 1, so the first input frame is
+considered odd.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Specify the mode of the interlacing. This option can also be specified
+as a value alone. See below for a list of values for this option.
+</p>
+<p>Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>merge, 0</samp>&rsquo;</dt>
+<dd><p>Move odd frames into the upper field, even into the lower field,
+generating a double height frame at half frame rate.
+</p>
+</dd>
+<dt> &lsquo;<samp>drop_odd, 1</samp>&rsquo;</dt>
+<dd><p>Only output even frames, odd frames are dropped, generating a frame with
+unchanged height at half frame rate.
+</p>
+</dd>
+<dt> &lsquo;<samp>drop_even, 2</samp>&rsquo;</dt>
+<dd><p>Only output odd frames, even frames are dropped, generating a frame with
+unchanged height at half frame rate.
+</p>
+</dd>
+<dt> &lsquo;<samp>pad, 3</samp>&rsquo;</dt>
+<dd><p>Expand each frame to full height, but pad alternate lines with black,
+generating a frame with double height at the same input frame rate.
+</p>
+</dd>
+<dt> &lsquo;<samp>interleave_top, 4</samp>&rsquo;</dt>
+<dd><p>Interleave the upper field from odd frames with the lower field from
+even frames, generating a frame with unchanged height at half frame rate.
+</p>
+</dd>
+<dt> &lsquo;<samp>interleave_bottom, 5</samp>&rsquo;</dt>
+<dd><p>Interleave the lower field from odd frames with the upper field from
+even frames, generating a frame with unchanged height at half frame rate.
+</p>
+</dd>
+<dt> &lsquo;<samp>interlacex2, 6</samp>&rsquo;</dt>
+<dd><p>Double frame rate with unchanged height. Frames are inserted each
+containing the second temporal field from the previous input frame and
+the first temporal field from the next input frame. This mode relies on
+the top_field_first flag. Useful for interlaced video displays with no
+field synchronisation.
+</p></dd>
+</dl>
+
+<p>Numeric values are deprecated but are accepted for backward
+compatibility reasons.
+</p>
+<p>Default mode is <code>merge</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>flags</samp>&rsquo;</dt>
+<dd><p>Specify flags influencing the filter process.
+</p>
+<p>Available value for <var>flags</var> is:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>low_pass_filter, vlfp</samp>&rsquo;</dt>
+<dd><p>Enable vertical low-pass filtering in the filter.
+Vertical low-pass filtering is required when creating an interlaced
+destination from a progressive source which contains high-frequency
+vertical detail. Filtering will reduce interlace &rsquo;twitter&rsquo; and Moire
+patterning.
+</p>
+<p>Vertical low-pass filtering can only be enabled for &lsquo;<samp>mode</samp>&rsquo;
+<var>interleave_top</var> and <var>interleave_bottom</var>.
+</p>
+</dd>
+</dl>
+</dd>
+</dl>
+
+<a name="transpose"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-transpose">9.85 transpose</a></h2>
+
+<p>Transpose rows with columns in the input video and optionally flip it.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>dir</samp>&rsquo;</dt>
+<dd><p>Specify the transposition direction.
+</p>
+<p>Can assume the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0, 4, cclock_flip</samp>&rsquo;</dt>
+<dd><p>Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">L.R     L.l
+. . -&gt;  . .
+l.r     R.r
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>1, 5, clock</samp>&rsquo;</dt>
+<dd><p>Rotate by 90 degrees clockwise, that is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">L.R     l.L
+. . -&gt;  . .
+l.r     r.R
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>2, 6, cclock</samp>&rsquo;</dt>
+<dd><p>Rotate by 90 degrees counterclockwise, that is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">L.R     R.r
+. . -&gt;  . .
+l.r     L.l
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>3, 7, clock_flip</samp>&rsquo;</dt>
+<dd><p>Rotate by 90 degrees clockwise and vertically flip, that is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">L.R     r.R
+. . -&gt;  . .
+l.r     l.L
+</pre></td></tr></table>
+</dd>
+</dl>
+
+<p>For values between 4-7, the transposition is only done if the input
+video geometry is portrait and not landscape. These values are
+deprecated, the <code>passthrough</code> option should be used instead.
+</p>
+<p>Numerical values are deprecated, and should be dropped in favor of
+symbolic constants.
+</p>
+</dd>
+<dt> &lsquo;<samp>passthrough</samp>&rsquo;</dt>
+<dd><p>Do not apply the transposition if the input geometry matches the one
+specified by the specified value. It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>Always apply transposition.
+</p></dd>
+<dt> &lsquo;<samp>portrait</samp>&rsquo;</dt>
+<dd><p>Preserve portrait geometry (when <var>height</var> &gt;= <var>width</var>).
+</p></dd>
+<dt> &lsquo;<samp>landscape</samp>&rsquo;</dt>
+<dd><p>Preserve landscape geometry (when <var>width</var> &gt;= <var>height</var>).
+</p></dd>
+</dl>
+
+<p>Default value is <code>none</code>.
+</p></dd>
+</dl>
+
+<p>For example to rotate by 90 degrees clockwise and preserve portrait
+layout:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">transpose=dir=1:passthrough=portrait
+</pre></td></tr></table>
+
+<p>The command above can also be specified as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">transpose=1:portrait
+</pre></td></tr></table>
+
+<a name="trim"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-trim">9.86 trim</a></h2>
+<p>Trim the input so that the output contains one continuous subpart of the input.
+</p>
+<p>This filter accepts the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>start</samp>&rsquo;</dt>
+<dd><p>Specify time of the start of the kept section, i.e. the frame with the
+timestamp <var>start</var> will be the first frame in the output.
+</p>
+</dd>
+<dt> &lsquo;<samp>end</samp>&rsquo;</dt>
+<dd><p>Specify time of the first frame that will be dropped, i.e. the frame
+immediately preceding the one with the timestamp <var>end</var> will be the last
+frame in the output.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_pts</samp>&rsquo;</dt>
+<dd><p>Same as <var>start</var>, except this option sets the start timestamp in timebase
+units instead of seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>end_pts</samp>&rsquo;</dt>
+<dd><p>Same as <var>end</var>, except this option sets the end timestamp in timebase units
+instead of seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration</samp>&rsquo;</dt>
+<dd><p>Specify maximum duration of the output.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_frame</samp>&rsquo;</dt>
+<dd><p>Number of the first frame that should be passed to output.
+</p>
+</dd>
+<dt> &lsquo;<samp>end_frame</samp>&rsquo;</dt>
+<dd><p>Number of the first frame that should be dropped.
+</p></dd>
+</dl>
+
+<p>&lsquo;<samp>start</samp>&rsquo;, &lsquo;<samp>end</samp>&rsquo;, &lsquo;<samp>duration</samp>&rsquo; are expressed as time
+duration specifications, check the &quot;Time duration&quot; section in the
+ffmpeg-utils manual.
+</p>
+<p>Note that the first two sets of the start/end options and the &lsquo;<samp>duration</samp>&rsquo;
+option look at the frame timestamp, while the _frame variants simply count the
+frames that pass through the filter. Also note that this filter does not modify
+the timestamps. If you wish that the output timestamps start at zero, insert a
+setpts filter after the trim filter.
+</p>
+<p>If multiple start or end options are set, this filter tries to be greedy and
+keep all the frames that match at least one of the specified constraints. To keep
+only the part that matches all the constraints at once, chain multiple trim
+filters.
+</p>
+<p>The defaults are such that all the input is kept. So it is possible to set e.g.
+just the end values to keep everything before the specified time.
+</p>
+<p>Examples:
+</p><ul>
+<li>
+drop everything except the second minute of input
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -vf trim=60:120
+</pre></td></tr></table>
+
+</li><li>
+keep only the first second
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -vf trim=duration=1
+</pre></td></tr></table>
+
+</li></ul>
+
+
+<a name="unsharp"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-unsharp">9.87 unsharp</a></h2>
+
+<p>Sharpen or blur the input video.
+</p>
+<p>It accepts the following parameters:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>luma_msize_x, lx</samp>&rsquo;</dt>
+<dd><p>Set the luma matrix horizontal size. It must be an odd integer between
+3 and 63, default value is 5.
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_msize_y, ly</samp>&rsquo;</dt>
+<dd><p>Set the luma matrix vertical size. It must be an odd integer between 3
+and 63, default value is 5.
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_amount, la</samp>&rsquo;</dt>
+<dd><p>Set the luma effect strength. It can be a float number, reasonable
+values lay between -1.5 and 1.5.
+</p>
+<p>Negative values will blur the input video, while positive values will
+sharpen it, a value of zero will disable the effect.
+</p>
+<p>Default value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_msize_x, cx</samp>&rsquo;</dt>
+<dd><p>Set the chroma matrix horizontal size. It must be an odd integer
+between 3 and 63, default value is 5.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_msize_y, cy</samp>&rsquo;</dt>
+<dd><p>Set the chroma matrix vertical size. It must be an odd integer
+between 3 and 63, default value is 5.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_amount, ca</samp>&rsquo;</dt>
+<dd><p>Set the chroma effect strength. It can be a float number, reasonable
+values lay between -1.5 and 1.5.
+</p>
+<p>Negative values will blur the input video, while positive values will
+sharpen it, a value of zero will disable the effect.
+</p>
+<p>Default value is 0.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>opencl</samp>&rsquo;</dt>
+<dd><p>If set to 1, specify using OpenCL capabilities, only available if
+FFmpeg was configured with <code>--enable-opencl</code>. Default value is 0.
+</p>
+</dd>
+</dl>
+
+<p>All parameters are optional and default to the equivalent of the
+string &rsquo;5:5:1.0:5:5:0.0&rsquo;.
+</p>
+<a name="Examples-9"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-9">9.87.1 Examples</a></h3>
+
+<ul>
+<li>
+Apply strong luma sharpen effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
+</pre></td></tr></table>
+
+</li><li>
+Apply strong blur of both luma and chroma parameters:
+<table><tr><td>&nbsp;</td><td><pre class="example">unsharp=7:7:-2:7:7:-2
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="vidstabdetect"></a>
+</p><a name="vidstabdetect-1"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-vidstabdetect-1">9.88 vidstabdetect</a></h2>
+
+<p>Analyze video stabilization/deshaking. Perform pass 1 of 2, see
+<a href="#vidstabtransform">vidstabtransform</a> for pass 2.
+</p>
+<p>This filter generates a file with relative translation and rotation
+transform information about subsequent frames, which is then used by
+the <a href="#vidstabtransform">vidstabtransform</a> filter.
+</p>
+<p>To enable compilation of this filter you need to configure FFmpeg with
+<code>--enable-libvidstab</code>.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>result</samp>&rsquo;</dt>
+<dd><p>Set the path to the file used to write the transforms information.
+Default value is &lsquo;<tt>transforms.trf</tt>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>shakiness</samp>&rsquo;</dt>
+<dd><p>Set how shaky the video is and how quick the camera is. It accepts an
+integer in the range 1-10, a value of 1 means little shakiness, a
+value of 10 means strong shakiness. Default value is 5.
+</p>
+</dd>
+<dt> &lsquo;<samp>accuracy</samp>&rsquo;</dt>
+<dd><p>Set the accuracy of the detection process. It must be a value in the
+range 1-15. A value of 1 means low accuracy, a value of 15 means high
+accuracy. Default value is 9.
+</p>
+</dd>
+<dt> &lsquo;<samp>stepsize</samp>&rsquo;</dt>
+<dd><p>Set stepsize of the search process. The region around minimum is
+scanned with 1 pixel resolution. Default value is 6.
+</p>
+</dd>
+<dt> &lsquo;<samp>mincontrast</samp>&rsquo;</dt>
+<dd><p>Set minimum contrast. Below this value a local measurement field is
+discarded. Must be a floating point value in the range 0-1. Default
+value is 0.3.
+</p>
+</dd>
+<dt> &lsquo;<samp>tripod</samp>&rsquo;</dt>
+<dd><p>Set reference frame number for tripod mode.
+</p>
+<p>If enabled, the motion of the frames is compared to a reference frame
+in the filtered stream, identified by the specified number. The idea
+is to compensate all movements in a more-or-less static scene and keep
+the camera view absolutely still.
+</p>
+<p>If set to 0, it is disabled. The frames are counted starting from 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>show</samp>&rsquo;</dt>
+<dd><p>Show fields and transforms in the resulting frames. It accepts an
+integer in the range 0-2. Default value is 0, which disables any
+visualization.
+</p></dd>
+</dl>
+
+<a name="Examples-57"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-57">9.88.1 Examples</a></h3>
+
+<ul>
+<li>
+Use default values:
+<table><tr><td>&nbsp;</td><td><pre class="example">vidstabdetect
+</pre></td></tr></table>
+
+</li><li>
+Analyze strongly shaky movie and put the results in file
+&lsquo;<tt>mytransforms.trf</tt>&rsquo;:
+<table><tr><td>&nbsp;</td><td><pre class="example">vidstabdetect=shakiness=10:accuracy=15:result=&quot;mytransforms.trf&quot;
+</pre></td></tr></table>
+
+</li><li>
+Visualize the result of internal transformations in the resulting
+video:
+<table><tr><td>&nbsp;</td><td><pre class="example">vidstabdetect=show=1
+</pre></td></tr></table>
+
+</li><li>
+Analyze a video with medium shakiness using <code>ffmpeg</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="vidstabtransform"></a>
+</p><a name="vidstabtransform-1"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-vidstabtransform-1">9.89 vidstabtransform</a></h2>
+
+<p>Video stabilization/deshaking: pass 2 of 2,
+see <a href="#vidstabdetect">vidstabdetect</a> for pass 1.
+</p>
+<p>Read a file with transform information for each frame and
+apply/compensate them. Together with the <a href="#vidstabdetect">vidstabdetect</a>
+filter this can be used to deshake videos. See also
+<a href="http://public.hronopik.de/vid.stab">http://public.hronopik.de/vid.stab</a>. It is important to also use
+the unsharp filter, see below.
+</p>
+<p>To enable compilation of this filter you need to configure FFmpeg with
+<code>--enable-libvidstab</code>.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>input</samp>&rsquo;</dt>
+<dd><p>path to the file used to read the transforms (default: &lsquo;<tt>transforms.trf</tt>&rsquo;)
+</p>
+</dd>
+<dt> &lsquo;<samp>smoothing</samp>&rsquo;</dt>
+<dd><p>number of frames (value*2 + 1) used for lowpass filtering the camera movements
+(default: 10). For example a number of 10 means that 21 frames are used
+(10 in the past and 10 in the future) to smoothen the motion in the
+video. A larger values leads to a smoother video, but limits the
+acceleration of the camera (pan/tilt movements).
+</p>
+</dd>
+<dt> &lsquo;<samp>maxshift</samp>&rsquo;</dt>
+<dd><p>maximal number of pixels to translate frames (default: -1 no limit)
+</p>
+</dd>
+<dt> &lsquo;<samp>maxangle</samp>&rsquo;</dt>
+<dd><p>maximal angle in radians (degree*PI/180) to rotate frames (default: -1
+no limit)
+</p>
+</dd>
+<dt> &lsquo;<samp>crop</samp>&rsquo;</dt>
+<dd><p>How to deal with borders that may be visible due to movement
+compensation. Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>keep</samp>&rsquo;</dt>
+<dd><p>keep image information from previous frame (default)
+</p></dd>
+<dt> &lsquo;<samp>black</samp>&rsquo;</dt>
+<dd><p>fill the border black
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>invert</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>keep transforms normal (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>invert transforms
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>relative</samp>&rsquo;</dt>
+<dd><p>consider transforms as
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>absolute
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>relative to previous frame (default)
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>zoom</samp>&rsquo;</dt>
+<dd><p>percentage to zoom (default: 0)
+</p><dl compact="compact">
+<dt> &lsquo;<samp>&gt;0</samp>&rsquo;</dt>
+<dd><p>zoom in
+</p></dd>
+<dt> &lsquo;<samp>&lt;0</samp>&rsquo;</dt>
+<dd><p>zoom out
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>optzoom</samp>&rsquo;</dt>
+<dd><p>set optimal zooming to avoid borders
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>disabled
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>optimal static zoom value is determined (only very strong movements will lead to visible borders) (default)
+</p></dd>
+<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dd><p>optimal adaptive zoom value is determined (no borders will be visible)
+</p></dd>
+</dl>
+<p>Note that the value given at zoom is added to the one calculated
+here.
+</p>
+</dd>
+<dt> &lsquo;<samp>interpol</samp>&rsquo;</dt>
+<dd><p>type of interpolation
+</p>
+<p>Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>no</samp>&rsquo;</dt>
+<dd><p>no interpolation
+</p></dd>
+<dt> &lsquo;<samp>linear</samp>&rsquo;</dt>
+<dd><p>linear only horizontal
+</p></dd>
+<dt> &lsquo;<samp>bilinear</samp>&rsquo;</dt>
+<dd><p>linear in both directions (default)
+</p></dd>
+<dt> &lsquo;<samp>bicubic</samp>&rsquo;</dt>
+<dd><p>cubic in both directions (slow)
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>tripod</samp>&rsquo;</dt>
+<dd><p>virtual tripod mode means that the video is stabilized such that the
+camera stays stationary. Use also <code>tripod</code> option of
+<a href="#vidstabdetect">vidstabdetect</a>.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>off (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>virtual tripod mode: equivalent to <code>relative=0:smoothing=0</code>
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Examples-56"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-56">9.89.1 Examples</a></h3>
+
+<ul>
+<li>
+typical call with default default values:
+ (note the unsharp filter which is always recommended)
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
+</pre></td></tr></table>
+
+</li><li>
+zoom in a bit more and load transform data from a given file
+<table><tr><td>&nbsp;</td><td><pre class="example">vidstabtransform=zoom=5:input=&quot;mytransforms.trf&quot;
+</pre></td></tr></table>
+
+</li><li>
+smoothen the video even more
+<table><tr><td>&nbsp;</td><td><pre class="example">vidstabtransform=smoothing=30
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="vflip"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-vflip">9.90 vflip</a></h2>
+
+<p>Flip the input video vertically.
+</p>
+<p>For example, to vertically flip a video with <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -vf &quot;vflip&quot; out.avi
+</pre></td></tr></table>
+
+<a name="vignette"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-vignette">9.91 vignette</a></h2>
+
+<p>Make or reverse a natural vignetting effect.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>angle, a</samp>&rsquo;</dt>
+<dd><p>Set lens angle expression as a number of radians.
+</p>
+<p>The value is clipped in the <code>[0,PI/2]</code> range.
+</p>
+<p>Default value: <code>&quot;PI/5&quot;</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>x0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y0</samp>&rsquo;</dt>
+<dd><p>Set center coordinates expressions. Respectively <code>&quot;w/2&quot;</code> and <code>&quot;h/2&quot;</code>
+by default.
+</p>
+</dd>
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Set forward/backward mode.
+</p>
+<p>Available modes are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>forward</samp>&rsquo;</dt>
+<dd><p>The larger the distance from the central point, the darker the image becomes.
+</p>
+</dd>
+<dt> &lsquo;<samp>backward</samp>&rsquo;</dt>
+<dd><p>The larger the distance from the central point, the brighter the image becomes.
+This can be used to reverse a vignette effect, though there is no automatic
+detection to extract the lens &lsquo;<samp>angle</samp>&rsquo; and other settings (yet). It can
+also be used to create a burning effect.
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>forward</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>eval</samp>&rsquo;</dt>
+<dd><p>Set evaluation mode for the expressions (&lsquo;<samp>angle</samp>&rsquo;, &lsquo;<samp>x0</samp>&rsquo;, &lsquo;<samp>y0</samp>&rsquo;).
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>init</samp>&rsquo;</dt>
+<dd><p>Evaluate expressions only once during the filter initialization.
+</p>
+</dd>
+<dt> &lsquo;<samp>frame</samp>&rsquo;</dt>
+<dd><p>Evaluate expressions for each incoming frame. This is way slower than the
+&lsquo;<samp>init</samp>&rsquo; mode since it requires all the scalers to be re-computed, but it
+allows advanced dynamic expressions.
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>init</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>dither</samp>&rsquo;</dt>
+<dd><p>Set dithering to reduce the circular banding effects. Default is <code>1</code>
+(enabled).
+</p>
+</dd>
+<dt> &lsquo;<samp>aspect</samp>&rsquo;</dt>
+<dd><p>Set vignette aspect. This setting allows to adjust the shape of the vignette.
+Setting this value to the SAR of the input will make a rectangular vignetting
+following the dimensions of the video.
+</p>
+<p>Default is <code>1/1</code>.
+</p></dd>
+</dl>
+
+<a name="Expressions"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Expressions">9.91.1 Expressions</a></h3>
+
+<p>The &lsquo;<samp>alpha</samp>&rsquo;, &lsquo;<samp>x0</samp>&rsquo; and &lsquo;<samp>y0</samp>&rsquo; expressions can contain the
+following parameters.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>input width and height
+</p>
+</dd>
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>the number of input frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
+<dd><p>the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
+<var>TB</var> units, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>r</samp>&rsquo;</dt>
+<dd><p>frame rate of the input video, NAN if the input frame rate is unknown
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>the PTS (Presentation TimeStamp) of the filtered video frame,
+expressed in seconds, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>tb</samp>&rsquo;</dt>
+<dd><p>time base of the input video
+</p></dd>
+</dl>
+
+
+<a name="Examples-51"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-51">9.91.2 Examples</a></h3>
+
+<ul>
+<li>
+Apply simple strong vignetting effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">vignette=PI/4
+</pre></td></tr></table>
+
+</li><li>
+Make a flickering vignetting:
+<table><tr><td>&nbsp;</td><td><pre class="example">vignette='PI/4+random(1)*PI/50':eval=frame
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="w3fdif"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-w3fdif">9.92 w3fdif</a></h2>
+
+<p>Deinterlace the input video (&quot;w3fdif&quot; stands for &quot;Weston 3 Field
+Deinterlacing Filter&quot;).
+</p>
+<p>Based on the process described by Martin Weston for BBC R&amp;D, and
+implemented based on the de-interlace algorithm written by Jim
+Easterbrook for BBC R&amp;D, the Weston 3 field deinterlacing filter
+uses filter coefficients calculated by BBC R&amp;D.
+</p>
+<p>There are two sets of filter coefficients, so called &quot;simple&quot;:
+and &quot;complex&quot;. Which set of filter coefficients is used can
+be set by passing an optional parameter:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filter</samp>&rsquo;</dt>
+<dd><p>Set the interlacing filter coefficients. Accepts one of the following values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>simple</samp>&rsquo;</dt>
+<dd><p>Simple filter coefficient set.
+</p></dd>
+<dt> &lsquo;<samp>complex</samp>&rsquo;</dt>
+<dd><p>More-complex filter coefficient set.
+</p></dd>
+</dl>
+<p>Default value is &lsquo;<samp>complex</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>deint</samp>&rsquo;</dt>
+<dd><p>Specify which frames to deinterlace. Accept one of the following values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>all</samp>&rsquo;</dt>
+<dd><p>Deinterlace all frames,
+</p></dd>
+<dt> &lsquo;<samp>interlaced</samp>&rsquo;</dt>
+<dd><p>Only deinterlace frames marked as interlaced.
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>all</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<p><a name="yadif"></a>
+</p><a name="yadif-1"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-yadif-1">9.93 yadif</a></h2>
+
+<p>Deinterlace the input video (&quot;yadif&quot; means &quot;yet another deinterlacing
+filter&quot;).
+</p>
+<p>This filter accepts the following options:
+</p>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>The interlacing mode to adopt, accepts one of the following values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>0, send_frame</samp>&rsquo;</dt>
+<dd><p>output 1 frame for each frame
+</p></dd>
+<dt> &lsquo;<samp>1, send_field</samp>&rsquo;</dt>
+<dd><p>output 1 frame for each field
+</p></dd>
+<dt> &lsquo;<samp>2, send_frame_nospatial</samp>&rsquo;</dt>
+<dd><p>like <code>send_frame</code> but skip spatial interlacing check
+</p></dd>
+<dt> &lsquo;<samp>3, send_field_nospatial</samp>&rsquo;</dt>
+<dd><p>like <code>send_field</code> but skip spatial interlacing check
+</p></dd>
+</dl>
+
+<p>Default value is <code>send_frame</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>parity</samp>&rsquo;</dt>
+<dd><p>The picture field parity assumed for the input interlaced video, accepts one of
+the following values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>0, tff</samp>&rsquo;</dt>
+<dd><p>assume top field first
+</p></dd>
+<dt> &lsquo;<samp>1, bff</samp>&rsquo;</dt>
+<dd><p>assume bottom field first
+</p></dd>
+<dt> &lsquo;<samp>-1, auto</samp>&rsquo;</dt>
+<dd><p>enable automatic detection
+</p></dd>
+</dl>
+
+<p>Default value is <code>auto</code>.
+If interlacing is unknown or decoder does not export this information,
+top field first will be assumed.
+</p>
+</dd>
+<dt> &lsquo;<samp>deint</samp>&rsquo;</dt>
+<dd><p>Specify which frames to deinterlace. Accept one of the following
+values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>0, all</samp>&rsquo;</dt>
+<dd><p>deinterlace all frames
+</p></dd>
+<dt> &lsquo;<samp>1, interlaced</samp>&rsquo;</dt>
+<dd><p>only deinterlace frames marked as interlaced
+</p></dd>
+</dl>
+
+<p>Default value is <code>all</code>.
+</p></dd>
+</dl>
+
+
+<a name="Video-Sources"></a>
+<h1 class="chapter"><a href="ffmpeg-filters.html#toc-Video-Sources">10. Video Sources</a></h1>
+
+<p>Below is a description of the currently available video sources.
+</p>
+<a name="buffer"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-buffer">10.1 buffer</a></h2>
+
+<p>Buffer video frames, and make them available to the filter chain.
+</p>
+<p>This source is mainly intended for a programmatic use, in particular
+through the interface defined in &lsquo;<tt>libavfilter/vsrc_buffer.h</tt>&rsquo;.
+</p>
+<p>This source accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>video_size</samp>&rsquo;</dt>
+<dd><p>Specify the size (width and height) of the buffered video frames. For the
+syntax of this option, check the &quot;Video size&quot; section in the ffmpeg-utils
+manual.
+</p>
+</dd>
+<dt> &lsquo;<samp>width</samp>&rsquo;</dt>
+<dd><p>Input video width.
+</p>
+</dd>
+<dt> &lsquo;<samp>height</samp>&rsquo;</dt>
+<dd><p>Input video height.
+</p>
+</dd>
+<dt> &lsquo;<samp>pix_fmt</samp>&rsquo;</dt>
+<dd><p>A string representing the pixel format of the buffered video frames.
+It may be a number corresponding to a pixel format, or a pixel format
+name.
+</p>
+</dd>
+<dt> &lsquo;<samp>time_base</samp>&rsquo;</dt>
+<dd><p>Specify the timebase assumed by the timestamps of the buffered frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>frame_rate</samp>&rsquo;</dt>
+<dd><p>Specify the frame rate expected for the video stream.
+</p>
+</dd>
+<dt> &lsquo;<samp>pixel_aspect, sar</samp>&rsquo;</dt>
+<dd><p>Specify the sample aspect ratio assumed by the video frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>sws_param</samp>&rsquo;</dt>
+<dd><p>Specify the optional parameters to be used for the scale filter which
+is automatically inserted when an input change is detected in the
+input size or format.
+</p></dd>
+</dl>
+
+<p>For example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
+</pre></td></tr></table>
+
+<p>will instruct the source to accept video frames with size 320x240 and
+with format &quot;yuv410p&quot;, assuming 1/24 as the timestamps timebase and
+square pixels (1:1 sample aspect ratio).
+Since the pixel format with name &quot;yuv410p&quot; corresponds to the number 6
+(check the enum AVPixelFormat definition in &lsquo;<tt>libavutil/pixfmt.h</tt>&rsquo;),
+this example corresponds to:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
+</pre></td></tr></table>
+
+<p>Alternatively, the options can be specified as a flat string, but this
+syntax is deprecated:
+</p>
+<p><var>width</var>:<var>height</var>:<var>pix_fmt</var>:<var>time_base.num</var>:<var>time_base.den</var>:<var>pixel_aspect.num</var>:<var>pixel_aspect.den</var>[:<var>sws_param</var>]
+</p>
+<a name="cellauto"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-cellauto">10.2 cellauto</a></h2>
+
+<p>Create a pattern generated by an elementary cellular automaton.
+</p>
+<p>The initial state of the cellular automaton can be defined through the
+&lsquo;<samp>filename</samp>&rsquo;, and &lsquo;<samp>pattern</samp>&rsquo; options. If such options are
+not specified an initial state is created randomly.
+</p>
+<p>At each new frame a new row in the video is filled with the result of
+the cellular automaton next generation. The behavior when the whole
+frame is filled is defined by the &lsquo;<samp>scroll</samp>&rsquo; option.
+</p>
+<p>This source accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filename, f</samp>&rsquo;</dt>
+<dd><p>Read the initial cellular automaton state, i.e. the starting row, from
+the specified file.
+In the file, each non-whitespace character is considered an alive
+cell, a newline will terminate the row, and further characters in the
+file will be ignored.
+</p>
+</dd>
+<dt> &lsquo;<samp>pattern, p</samp>&rsquo;</dt>
+<dd><p>Read the initial cellular automaton state, i.e. the starting row, from
+the specified string.
+</p>
+<p>Each non-whitespace character in the string is considered an alive
+cell, a newline will terminate the row, and further characters in the
+string will be ignored.
+</p>
+</dd>
+<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
+<dd><p>Set the video rate, that is the number of frames generated per second.
+Default is 25.
+</p>
+</dd>
+<dt> &lsquo;<samp>random_fill_ratio, ratio</samp>&rsquo;</dt>
+<dd><p>Set the random fill ratio for the initial cellular automaton row. It
+is a floating point number value ranging from 0 to 1, defaults to
+1/PHI.
+</p>
+<p>This option is ignored when a file or a pattern is specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>random_seed, seed</samp>&rsquo;</dt>
+<dd><p>Set the seed for filling randomly the initial row, must be an integer
+included between 0 and UINT32_MAX. If not specified, or if explicitly
+set to -1, the filter will try to use a good random seed on a best
+effort basis.
+</p>
+</dd>
+<dt> &lsquo;<samp>rule</samp>&rsquo;</dt>
+<dd><p>Set the cellular automaton rule, it is a number ranging from 0 to 255.
+Default value is 110.
+</p>
+</dd>
+<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
+<dd><p>Set the size of the output video. For the syntax of this option, check
+the &quot;Video size&quot; section in the ffmpeg-utils manual.
+</p>
+<p>If &lsquo;<samp>filename</samp>&rsquo; or &lsquo;<samp>pattern</samp>&rsquo; is specified, the size is set
+by default to the width of the specified initial state row, and the
+height is set to <var>width</var> * PHI.
+</p>
+<p>If &lsquo;<samp>size</samp>&rsquo; is set, it must contain the width of the specified
+pattern string, and the specified pattern will be centered in the
+larger row.
+</p>
+<p>If a filename or a pattern string is not specified, the size value
+defaults to &quot;320x518&quot; (used for a randomly generated initial state).
+</p>
+</dd>
+<dt> &lsquo;<samp>scroll</samp>&rsquo;</dt>
+<dd><p>If set to 1, scroll the output upward when all the rows in the output
+have been already filled. If set to 0, the new generated row will be
+written over the top row just after the bottom row is filled.
+Defaults to 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_full, full</samp>&rsquo;</dt>
+<dd><p>If set to 1, completely fill the output with generated rows before
+outputting the first frame.
+This is the default behavior, for disabling set the value to 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>stitch</samp>&rsquo;</dt>
+<dd><p>If set to 1, stitch the left and right row edges together.
+This is the default behavior, for disabling set the value to 0.
+</p></dd>
+</dl>
+
+<a name="Examples-70"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-70">10.2.1 Examples</a></h3>
+
+<ul>
+<li>
+Read the initial state from &lsquo;<tt>pattern</tt>&rsquo;, and specify an output of
+size 200x400.
+<table><tr><td>&nbsp;</td><td><pre class="example">cellauto=f=pattern:s=200x400
+</pre></td></tr></table>
+
+</li><li>
+Generate a random initial row with a width of 200 cells, with a fill
+ratio of 2/3:
+<table><tr><td>&nbsp;</td><td><pre class="example">cellauto=ratio=2/3:s=200x200
+</pre></td></tr></table>
+
+</li><li>
+Create a pattern generated by rule 18 starting by a single alive cell
+centered on an initial row with width 100:
+<table><tr><td>&nbsp;</td><td><pre class="example">cellauto=p=@:s=100x400:full=0:rule=18
+</pre></td></tr></table>
+
+</li><li>
+Specify a more elaborated initial pattern:
+<table><tr><td>&nbsp;</td><td><pre class="example">cellauto=p='@@ @ @@':s=100x400:full=0:rule=18
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="mandelbrot"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-mandelbrot">10.3 mandelbrot</a></h2>
+
+<p>Generate a Mandelbrot set fractal, and progressively zoom towards the
+point specified with <var>start_x</var> and <var>start_y</var>.
+</p>
+<p>This source accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>end_pts</samp>&rsquo;</dt>
+<dd><p>Set the terminal pts value. Default value is 400.
+</p>
+</dd>
+<dt> &lsquo;<samp>end_scale</samp>&rsquo;</dt>
+<dd><p>Set the terminal scale value.
+Must be a floating point value. Default value is 0.3.
+</p>
+</dd>
+<dt> &lsquo;<samp>inner</samp>&rsquo;</dt>
+<dd><p>Set the inner coloring mode, that is the algorithm used to draw the
+Mandelbrot fractal internal region.
+</p>
+<p>It shall assume one of the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>black</samp>&rsquo;</dt>
+<dd><p>Set black mode.
+</p></dd>
+<dt> &lsquo;<samp>convergence</samp>&rsquo;</dt>
+<dd><p>Show time until convergence.
+</p></dd>
+<dt> &lsquo;<samp>mincol</samp>&rsquo;</dt>
+<dd><p>Set color based on point closest to the origin of the iterations.
+</p></dd>
+<dt> &lsquo;<samp>period</samp>&rsquo;</dt>
+<dd><p>Set period mode.
+</p></dd>
+</dl>
+
+<p>Default value is <var>mincol</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>bailout</samp>&rsquo;</dt>
+<dd><p>Set the bailout value. Default value is 10.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>maxiter</samp>&rsquo;</dt>
+<dd><p>Set the maximum of iterations performed by the rendering
+algorithm. Default value is 7189.
+</p>
+</dd>
+<dt> &lsquo;<samp>outer</samp>&rsquo;</dt>
+<dd><p>Set outer coloring mode.
+It shall assume one of following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>iteration_count</samp>&rsquo;</dt>
+<dd><p>Set iteration cound mode.
+</p></dd>
+<dt> &lsquo;<samp>normalized_iteration_count</samp>&rsquo;</dt>
+<dd><p>set normalized iteration count mode.
+</p></dd>
+</dl>
+<p>Default value is <var>normalized_iteration_count</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
+<dd><p>Set frame rate, expressed as number of frames per second. Default
+value is &quot;25&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
+<dd><p>Set frame size. For the syntax of this option, check the &quot;Video
+size&quot; section in the ffmpeg-utils manual. Default value is &quot;640x480&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_scale</samp>&rsquo;</dt>
+<dd><p>Set the initial scale value. Default value is 3.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_x</samp>&rsquo;</dt>
+<dd><p>Set the initial x position. Must be a floating point value between
+-100 and 100. Default value is -0.743643887037158704752191506114774.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_y</samp>&rsquo;</dt>
+<dd><p>Set the initial y position. Must be a floating point value between
+-100 and 100. Default value is -0.131825904205311970493132056385139.
+</p></dd>
+</dl>
+
+<a name="mptestsrc"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-mptestsrc">10.4 mptestsrc</a></h2>
+
+<p>Generate various test patterns, as generated by the MPlayer test filter.
+</p>
+<p>The size of the generated video is fixed, and is 256x256.
+This source is useful in particular for testing encoding features.
+</p>
+<p>This source accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
+<dd><p>Specify the frame rate of the sourced video, as the number of frames
+generated per second. It has to be a string in the format
+<var>frame_rate_num</var>/<var>frame_rate_den</var>, an integer number, a float
+number or a valid video frame rate abbreviation. The default value is
+&quot;25&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
+<dd><p>Set the video duration of the sourced video. The accepted syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[-]HH:MM:SS[.m...]
+[-]S+[.m...]
+</pre></td></tr></table>
+<p>See also the function <code>av_parse_time()</code>.
+</p>
+<p>If not specified, or the expressed duration is negative, the video is
+supposed to be generated forever.
+</p>
+</dd>
+<dt> &lsquo;<samp>test, t</samp>&rsquo;</dt>
+<dd>
+<p>Set the number or the name of the test to perform. Supported tests are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>dc_luma</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dc_chroma</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>freq_luma</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>freq_chroma</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>amp_luma</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>amp_chroma</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>cbp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mv</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ring1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ring2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>all</samp>&rsquo;</dt>
+</dl>
+
+<p>Default value is &quot;all&quot;, which will cycle through the list of all tests.
+</p></dd>
+</dl>
+
+<p>For example the following:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">testsrc=t=dc_luma
+</pre></td></tr></table>
+
+<p>will generate a &quot;dc_luma&quot; test pattern.
+</p>
+<a name="frei0r_005fsrc"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-frei0r_005fsrc">10.5 frei0r_src</a></h2>
+
+<p>Provide a frei0r source.
+</p>
+<p>To enable compilation of this filter you need to install the frei0r
+header and configure FFmpeg with <code>--enable-frei0r</code>.
+</p>
+<p>This source accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>size</samp>&rsquo;</dt>
+<dd><p>The size of the video to generate. For the syntax of this option, check the
+&quot;Video size&quot; section in the ffmpeg-utils manual.
+</p>
+</dd>
+<dt> &lsquo;<samp>framerate</samp>&rsquo;</dt>
+<dd><p>Framerate of the generated video, may be a string of the form
+<var>num</var>/<var>den</var> or a frame rate abbreviation.
+</p>
+</dd>
+<dt> &lsquo;<samp>filter_name</samp>&rsquo;</dt>
+<dd><p>The name to the frei0r source to load. For more information regarding frei0r and
+how to set the parameters read the section <a href="#frei0r">frei0r</a> in the description of
+the video filters.
+</p>
+</dd>
+<dt> &lsquo;<samp>filter_params</samp>&rsquo;</dt>
+<dd><p>A &rsquo;|&rsquo;-separated list of parameters to pass to the frei0r source.
+</p>
+</dd>
+</dl>
+
+<p>For example, to generate a frei0r partik0l source with size 200x200
+and frame rate 10 which is overlayed on the overlay filter main input:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
+</pre></td></tr></table>
+
+<a name="life"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-life">10.6 life</a></h2>
+
+<p>Generate a life pattern.
+</p>
+<p>This source is based on a generalization of John Conway&rsquo;s life game.
+</p>
+<p>The sourced input represents a life grid, each pixel represents a cell
+which can be in one of two possible states, alive or dead. Every cell
+interacts with its eight neighbours, which are the cells that are
+horizontally, vertically, or diagonally adjacent.
+</p>
+<p>At each interaction the grid evolves according to the adopted rule,
+which specifies the number of neighbor alive cells which will make a
+cell stay alive or born. The &lsquo;<samp>rule</samp>&rsquo; option allows to specify
+the rule to adopt.
+</p>
+<p>This source accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filename, f</samp>&rsquo;</dt>
+<dd><p>Set the file from which to read the initial grid state. In the file,
+each non-whitespace character is considered an alive cell, and newline
+is used to delimit the end of each row.
+</p>
+<p>If this option is not specified, the initial grid is generated
+randomly.
+</p>
+</dd>
+<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
+<dd><p>Set the video rate, that is the number of frames generated per second.
+Default is 25.
+</p>
+</dd>
+<dt> &lsquo;<samp>random_fill_ratio, ratio</samp>&rsquo;</dt>
+<dd><p>Set the random fill ratio for the initial random grid. It is a
+floating point number value ranging from 0 to 1, defaults to 1/PHI.
+It is ignored when a file is specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>random_seed, seed</samp>&rsquo;</dt>
+<dd><p>Set the seed for filling the initial random grid, must be an integer
+included between 0 and UINT32_MAX. If not specified, or if explicitly
+set to -1, the filter will try to use a good random seed on a best
+effort basis.
+</p>
+</dd>
+<dt> &lsquo;<samp>rule</samp>&rsquo;</dt>
+<dd><p>Set the life rule.
+</p>
+<p>A rule can be specified with a code of the kind &quot;S<var>NS</var>/B<var>NB</var>&quot;,
+where <var>NS</var> and <var>NB</var> are sequences of numbers in the range 0-8,
+<var>NS</var> specifies the number of alive neighbor cells which make a
+live cell stay alive, and <var>NB</var> the number of alive neighbor cells
+which make a dead cell to become alive (i.e. to &quot;born&quot;).
+&quot;s&quot; and &quot;b&quot; can be used in place of &quot;S&quot; and &quot;B&quot;, respectively.
+</p>
+<p>Alternatively a rule can be specified by an 18-bits integer. The 9
+high order bits are used to encode the next cell state if it is alive
+for each number of neighbor alive cells, the low order bits specify
+the rule for &quot;borning&quot; new cells. Higher order bits encode for an
+higher number of neighbor cells.
+For example the number 6153 = <code>(12&lt;&lt;9)+9</code> specifies a stay alive
+rule of 12 and a born rule of 9, which corresponds to &quot;S23/B03&quot;.
+</p>
+<p>Default value is &quot;S23/B3&quot;, which is the original Conway&rsquo;s game of life
+rule, and will keep a cell alive if it has 2 or 3 neighbor alive
+cells, and will born a new cell if there are three alive cells around
+a dead cell.
+</p>
+</dd>
+<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
+<dd><p>Set the size of the output video. For the syntax of this option, check the
+&quot;Video size&quot; section in the ffmpeg-utils manual.
+</p>
+<p>If &lsquo;<samp>filename</samp>&rsquo; is specified, the size is set by default to the
+same size of the input file. If &lsquo;<samp>size</samp>&rsquo; is set, it must contain
+the size specified in the input file, and the initial grid defined in
+that file is centered in the larger resulting area.
+</p>
+<p>If a filename is not specified, the size value defaults to &quot;320x240&quot;
+(used for a randomly generated initial grid).
+</p>
+</dd>
+<dt> &lsquo;<samp>stitch</samp>&rsquo;</dt>
+<dd><p>If set to 1, stitch the left and right grid edges together, and the
+top and bottom edges also. Defaults to 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>mold</samp>&rsquo;</dt>
+<dd><p>Set cell mold speed. If set, a dead cell will go from &lsquo;<samp>death_color</samp>&rsquo; to
+&lsquo;<samp>mold_color</samp>&rsquo; with a step of &lsquo;<samp>mold</samp>&rsquo;. &lsquo;<samp>mold</samp>&rsquo; can have a
+value from 0 to 255.
+</p>
+</dd>
+<dt> &lsquo;<samp>life_color</samp>&rsquo;</dt>
+<dd><p>Set the color of living (or new born) cells.
+</p>
+</dd>
+<dt> &lsquo;<samp>death_color</samp>&rsquo;</dt>
+<dd><p>Set the color of dead cells. If &lsquo;<samp>mold</samp>&rsquo; is set, this is the first color
+used to represent a dead cell.
+</p>
+</dd>
+<dt> &lsquo;<samp>mold_color</samp>&rsquo;</dt>
+<dd><p>Set mold color, for definitely dead and moldy cells.
+</p>
+<p>For the syntax of these 3 color options, check the &quot;Color&quot; section in the
+ffmpeg-utils manual.
+</p></dd>
+</dl>
+
+<a name="Examples-6"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-6">10.6.1 Examples</a></h3>
+
+<ul>
+<li>
+Read a grid from &lsquo;<tt>pattern</tt>&rsquo;, and center it on a grid of size
+300x300 pixels:
+<table><tr><td>&nbsp;</td><td><pre class="example">life=f=pattern:s=300x300
+</pre></td></tr></table>
+
+</li><li>
+Generate a random grid of size 200x200, with a fill ratio of 2/3:
+<table><tr><td>&nbsp;</td><td><pre class="example">life=ratio=2/3:s=200x200
+</pre></td></tr></table>
+
+</li><li>
+Specify a custom rule for evolving a randomly generated grid:
+<table><tr><td>&nbsp;</td><td><pre class="example">life=rule=S14/B34
+</pre></td></tr></table>
+
+</li><li>
+Full example with slow death effect (mold) using <code>ffplay</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="color"></a>
+<a name="haldclutsrc"></a>
+<a name="nullsrc"></a>
+<a name="rgbtestsrc"></a>
+<a name="smptebars"></a>
+<a name="smptehdbars"></a>
+<a name="testsrc"></a>
+</p><a name="color_002c-haldclutsrc_002c-nullsrc_002c-rgbtestsrc_002c-smptebars_002c-smptehdbars_002c-testsrc"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-color_002c-haldclutsrc_002c-nullsrc_002c-rgbtestsrc_002c-smptebars_002c-smptehdbars_002c-testsrc">10.7 color, haldclutsrc, nullsrc, rgbtestsrc, smptebars, smptehdbars, testsrc</a></h2>
+
+<p>The <code>color</code> source provides an uniformly colored input.
+</p>
+<p>The <code>haldclutsrc</code> source provides an identity Hald CLUT. See also
+<a href="#haldclut">haldclut</a> filter.
+</p>
+<p>The <code>nullsrc</code> source returns unprocessed video frames. It is
+mainly useful to be employed in analysis / debugging tools, or as the
+source for filters which ignore the input data.
+</p>
+<p>The <code>rgbtestsrc</code> source generates an RGB test pattern useful for
+detecting RGB vs BGR issues. You should see a red, green and blue
+stripe from top to bottom.
+</p>
+<p>The <code>smptebars</code> source generates a color bars pattern, based on
+the SMPTE Engineering Guideline EG 1-1990.
+</p>
+<p>The <code>smptehdbars</code> source generates a color bars pattern, based on
+the SMPTE RP 219-2002.
+</p>
+<p>The <code>testsrc</code> source generates a test video pattern, showing a
+color pattern, a scrolling gradient and a timestamp. This is mainly
+intended for testing purposes.
+</p>
+<p>The sources accept the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>color, c</samp>&rsquo;</dt>
+<dd><p>Specify the color of the source, only available in the <code>color</code>
+source. For the syntax of this option, check the &quot;Color&quot; section in the
+ffmpeg-utils manual.
+</p>
+</dd>
+<dt> &lsquo;<samp>level</samp>&rsquo;</dt>
+<dd><p>Specify the level of the Hald CLUT, only available in the <code>haldclutsrc</code>
+source. A level of <code>N</code> generates a picture of <code>N*N*N</code> by <code>N*N*N</code>
+pixels to be used as identity matrix for 3D lookup tables. Each component is
+coded on a <code>1/(N*N)</code> scale.
+</p>
+</dd>
+<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
+<dd><p>Specify the size of the sourced video. For the syntax of this option, check the
+&quot;Video size&quot; section in the ffmpeg-utils manual. The default value is
+&quot;320x240&quot;.
+</p>
+<p>This option is not available with the <code>haldclutsrc</code> filter.
+</p>
+</dd>
+<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
+<dd><p>Specify the frame rate of the sourced video, as the number of frames
+generated per second. It has to be a string in the format
+<var>frame_rate_num</var>/<var>frame_rate_den</var>, an integer number, a float
+number or a valid video frame rate abbreviation. The default value is
+&quot;25&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
+<dd><p>Set the sample aspect ratio of the sourced video.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
+<dd><p>Set the video duration of the sourced video. The accepted syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[-]HH[:MM[:SS[.m...]]]
+[-]S+[.m...]
+</pre></td></tr></table>
+<p>See also the function <code>av_parse_time()</code>.
+</p>
+<p>If not specified, or the expressed duration is negative, the video is
+supposed to be generated forever.
+</p>
+</dd>
+<dt> &lsquo;<samp>decimals, n</samp>&rsquo;</dt>
+<dd><p>Set the number of decimals to show in the timestamp, only available in the
+<code>testsrc</code> source.
+</p>
+<p>The displayed timestamp value will correspond to the original
+timestamp value multiplied by the power of 10 of the specified
+value. Default value is 0.
+</p></dd>
+</dl>
+
+<p>For example the following:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">testsrc=duration=5.3:size=qcif:rate=10
+</pre></td></tr></table>
+
+<p>will generate a video with a duration of 5.3 seconds, with size
+176x144 and a frame rate of 10 frames per second.
+</p>
+<p>The following graph description will generate a red source
+with an opacity of 0.2, with size &quot;qcif&quot; and a frame rate of 10
+frames per second.
+</p><table><tr><td>&nbsp;</td><td><pre class="example">color=c=red@0.2:s=qcif:r=10
+</pre></td></tr></table>
+
+<p>If the input content is to be ignored, <code>nullsrc</code> can be used. The
+following command generates noise in the luminance plane by employing
+the <code>geq</code> filter:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">nullsrc=s=256x256, geq=random(1)*255:128:128
+</pre></td></tr></table>
+
+<a name="Commands-3"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Commands-3">10.7.1 Commands</a></h3>
+
+<p>The <code>color</code> source supports the following commands:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>c, color</samp>&rsquo;</dt>
+<dd><p>Set the color of the created image. Accepts the same syntax of the
+corresponding &lsquo;<samp>color</samp>&rsquo; option.
+</p></dd>
+</dl>
+
+
+<a name="Video-Sinks"></a>
+<h1 class="chapter"><a href="ffmpeg-filters.html#toc-Video-Sinks">11. Video Sinks</a></h1>
+
+<p>Below is a description of the currently available video sinks.
+</p>
+<a name="buffersink"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-buffersink">11.1 buffersink</a></h2>
+
+<p>Buffer video frames, and make them available to the end of the filter
+graph.
+</p>
+<p>This sink is mainly intended for a programmatic use, in particular
+through the interface defined in &lsquo;<tt>libavfilter/buffersink.h</tt>&rsquo;
+or the options system.
+</p>
+<p>It accepts a pointer to an AVBufferSinkContext structure, which
+defines the incoming buffers&rsquo; formats, to be passed as the opaque
+parameter to <code>avfilter_init_filter</code> for initialization.
+</p>
+<a name="nullsink"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-nullsink">11.2 nullsink</a></h2>
+
+<p>Null video sink, do absolutely nothing with the input video. It is
+mainly useful as a template and to be employed in analysis / debugging
+tools.
+</p>
+
+<a name="Multimedia-Filters"></a>
+<h1 class="chapter"><a href="ffmpeg-filters.html#toc-Multimedia-Filters">12. Multimedia Filters</a></h1>
+
+<p>Below is a description of the currently available multimedia filters.
+</p>
+<a name="avectorscope"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-avectorscope">12.1 avectorscope</a></h2>
+
+<p>Convert input audio to a video output, representing the audio vector
+scope.
+</p>
+<p>The filter is used to measure the difference between channels of stereo
+audio stream. A monoaural signal, consisting of identical left and right
+signal, results in straight vertical line. Any stereo separation is visible
+as a deviation from this line, creating a Lissajous figure.
+If the straight (or deviation from it) but horizontal line appears this
+indicates that the left and right channels are out of phase.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>mode, m</samp>&rsquo;</dt>
+<dd><p>Set the vectorscope mode.
+</p>
+<p>Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>lissajous</samp>&rsquo;</dt>
+<dd><p>Lissajous rotated by 45 degrees.
+</p>
+</dd>
+<dt> &lsquo;<samp>lissajous_xy</samp>&rsquo;</dt>
+<dd><p>Same as above but not rotated.
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>lissajous</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
+<dd><p>Set the video size for the output. For the syntax of this option, check the &quot;Video size&quot;
+section in the ffmpeg-utils manual. Default value is <code>400x400</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
+<dd><p>Set the output frame rate. Default value is <code>25</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>rc</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>gc</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bc</samp>&rsquo;</dt>
+<dd><p>Specify the red, green and blue contrast. Default values are <code>40</code>, <code>160</code> and <code>80</code>.
+Allowed range is <code>[0, 255]</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>rf</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>gf</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bf</samp>&rsquo;</dt>
+<dd><p>Specify the red, green and blue fade. Default values are <code>15</code>, <code>10</code> and <code>5</code>.
+Allowed range is <code>[0, 255]</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>zoom</samp>&rsquo;</dt>
+<dd><p>Set the zoom factor. Default value is <code>1</code>. Allowed range is <code>[1, 10]</code>.
+</p></dd>
+</dl>
+
+<a name="Examples-69"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-69">12.1.1 Examples</a></h3>
+
+<ul>
+<li>
+Complete example using <code>ffplay</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
+             [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
+</pre></td></tr></table>
+</li></ul>
+
+<a name="concat"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-concat">12.2 concat</a></h2>
+
+<p>Concatenate audio and video streams, joining them together one after the
+other.
+</p>
+<p>The filter works on segments of synchronized video and audio streams. All
+segments must have the same number of streams of each type, and that will
+also be the number of streams at output.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>Set the number of segments. Default is 2.
+</p>
+</dd>
+<dt> &lsquo;<samp>v</samp>&rsquo;</dt>
+<dd><p>Set the number of output video streams, that is also the number of video
+streams in each segment. Default is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>Set the number of output audio streams, that is also the number of video
+streams in each segment. Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>unsafe</samp>&rsquo;</dt>
+<dd><p>Activate unsafe mode: do not fail if segments have a different format.
+</p>
+</dd>
+</dl>
+
+<p>The filter has <var>v</var>+<var>a</var> outputs: first <var>v</var> video outputs, then
+<var>a</var> audio outputs.
+</p>
+<p>There are <var>n</var>x(<var>v</var>+<var>a</var>) inputs: first the inputs for the first
+segment, in the same order as the outputs, then the inputs for the second
+segment, etc.
+</p>
+<p>Related streams do not always have exactly the same duration, for various
+reasons including codec frame size or sloppy authoring. For that reason,
+related synchronized streams (e.g. a video and its audio track) should be
+concatenated at once. The concat filter will use the duration of the longest
+stream in each segment (except the last one), and if necessary pad shorter
+audio streams with silence.
+</p>
+<p>For this filter to work correctly, all segments must start at timestamp 0.
+</p>
+<p>All corresponding streams must have the same parameters in all segments; the
+filtering system will automatically select a common pixel format for video
+streams, and a common sample format, sample rate and channel layout for
+audio streams, but other settings, such as resolution, must be converted
+explicitly by the user.
+</p>
+<p>Different frame rates are acceptable but will result in variable frame rate
+at output; be sure to configure the output file to handle it.
+</p>
+<a name="Examples-64"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-64">12.2.1 Examples</a></h3>
+
+<ul>
+<li>
+Concatenate an opening, an episode and an ending, all in bilingual version
+(video in stream 0, audio in streams 1 and 2):
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
+  '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
+   concat=n=3:v=1:a=2 [v] [a1] [a2]' \
+  -map '[v]' -map '[a1]' -map '[a2]' output.mkv
+</pre></td></tr></table>
+
+</li><li>
+Concatenate two parts, handling audio and video separately, using the
+(a)movie sources, and adjusting the resolution:
+<table><tr><td>&nbsp;</td><td><pre class="example">movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
+movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
+[v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
+</pre></td></tr></table>
+<p>Note that a desync will happen at the stitch if the audio and video streams
+do not have exactly the same duration in the first file.
+</p>
+</li></ul>
+
+<a name="ebur128"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-ebur128">12.3 ebur128</a></h2>
+
+<p>EBU R128 scanner filter. This filter takes an audio stream as input and outputs
+it unchanged. By default, it logs a message at a frequency of 10Hz with the
+Momentary loudness (identified by <code>M</code>), Short-term loudness (<code>S</code>),
+Integrated loudness (<code>I</code>) and Loudness Range (<code>LRA</code>).
+</p>
+<p>The filter also has a video output (see the <var>video</var> option) with a real
+time graph to observe the loudness evolution. The graphic contains the logged
+message mentioned above, so it is not printed anymore when this option is set,
+unless the verbose logging is set. The main graphing area contains the
+short-term loudness (3 seconds of analysis), and the gauge on the right is for
+the momentary loudness (400 milliseconds).
+</p>
+<p>More information about the Loudness Recommendation EBU R128 on
+<a href="http://tech.ebu.ch/loudness">http://tech.ebu.ch/loudness</a>.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>video</samp>&rsquo;</dt>
+<dd><p>Activate the video output. The audio stream is passed unchanged whether this
+option is set or no. The video stream will be the first output stream if
+activated. Default is <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>size</samp>&rsquo;</dt>
+<dd><p>Set the video size. This option is for video only. For the syntax of this
+option, check the &quot;Video size&quot; section in the ffmpeg-utils manual. Default
+and minimum resolution is <code>640x480</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>meter</samp>&rsquo;</dt>
+<dd><p>Set the EBU scale meter. Default is <code>9</code>. Common values are <code>9</code> and
+<code>18</code>, respectively for EBU scale meter +9 and EBU scale meter +18. Any
+other integer value between this range is allowed.
+</p>
+</dd>
+<dt> &lsquo;<samp>metadata</samp>&rsquo;</dt>
+<dd><p>Set metadata injection. If set to <code>1</code>, the audio input will be segmented
+into 100ms output frames, each of them containing various loudness information
+in metadata.  All the metadata keys are prefixed with <code>lavfi.r128.</code>.
+</p>
+<p>Default is <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>framelog</samp>&rsquo;</dt>
+<dd><p>Force the frame logging level.
+</p>
+<p>Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>info</samp>&rsquo;</dt>
+<dd><p>information logging level
+</p></dd>
+<dt> &lsquo;<samp>verbose</samp>&rsquo;</dt>
+<dd><p>verbose logging level
+</p></dd>
+</dl>
+
+<p>By default, the logging level is set to <var>info</var>. If the &lsquo;<samp>video</samp>&rsquo; or
+the &lsquo;<samp>metadata</samp>&rsquo; options are set, it switches to <var>verbose</var>.
+</p></dd>
+</dl>
+
+<a name="Examples-25"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-25">12.3.1 Examples</a></h3>
+
+<ul>
+<li>
+Real-time graph using <code>ffplay</code>, with a EBU scale meter +18:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi -i &quot;amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]&quot;
+</pre></td></tr></table>
+
+</li><li>
+Run an analysis with <code>ffmpeg</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
+</pre></td></tr></table>
+</li></ul>
+
+<a name="interleave_002c-ainterleave"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-interleave_002c-ainterleave">12.4 interleave, ainterleave</a></h2>
+
+<p>Temporally interleave frames from several inputs.
+</p>
+<p><code>interleave</code> works with video inputs, <code>ainterleave</code> with audio.
+</p>
+<p>These filters read frames from several inputs and send the oldest
+queued frame to the output.
+</p>
+<p>Input streams must have a well defined, monotonically increasing frame
+timestamp values.
+</p>
+<p>In order to submit one frame to output, these filters need to enqueue
+at least one frame for each input, so they cannot work in case one
+input is not yet terminated and will not receive incoming frames.
+</p>
+<p>For example consider the case when one input is a <code>select</code> filter
+which always drop input frames. The <code>interleave</code> filter will keep
+reading from that input, but it will never be able to send new frames
+to output until the input will send an end-of-stream signal.
+</p>
+<p>Also, depending on inputs synchronization, the filters will drop
+frames in case one input receives more frames than the other ones, and
+the queue is already filled.
+</p>
+<p>These filters accept the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>nb_inputs, n</samp>&rsquo;</dt>
+<dd><p>Set the number of different inputs, it is 2 by default.
+</p></dd>
+</dl>
+
+<a name="Examples-19"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-19">12.4.1 Examples</a></h3>
+
+<ul>
+<li>
+Interleave frames belonging to different streams using <code>ffmpeg</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex &quot;[0:v][1:v] interleave&quot; out.avi
+</pre></td></tr></table>
+
+</li><li>
+Add flickering blur effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
+</pre></td></tr></table>
+</li></ul>
+
+<a name="perms_002c-aperms"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-perms_002c-aperms">12.5 perms, aperms</a></h2>
+
+<p>Set read/write permissions for the output frames.
+</p>
+<p>These filters are mainly aimed at developers to test direct path in the
+following filter in the filtergraph.
+</p>
+<p>The filters accept the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Select the permissions mode.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>Do nothing. This is the default.
+</p></dd>
+<dt> &lsquo;<samp>ro</samp>&rsquo;</dt>
+<dd><p>Set all the output frames read-only.
+</p></dd>
+<dt> &lsquo;<samp>rw</samp>&rsquo;</dt>
+<dd><p>Set all the output frames directly writable.
+</p></dd>
+<dt> &lsquo;<samp>toggle</samp>&rsquo;</dt>
+<dd><p>Make the frame read-only if writable, and writable if read-only.
+</p></dd>
+<dt> &lsquo;<samp>random</samp>&rsquo;</dt>
+<dd><p>Set each output frame read-only or writable randomly.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>seed</samp>&rsquo;</dt>
+<dd><p>Set the seed for the <var>random</var> mode, must be an integer included between
+<code>0</code> and <code>UINT32_MAX</code>. If not specified, or if explicitly set to
+<code>-1</code>, the filter will try to use a good random seed on a best effort
+basis.
+</p></dd>
+</dl>
+
+<p>Note: in case of auto-inserted filter between the permission filter and the
+following one, the permission might not be received as expected in that
+following filter. Inserting a <a href="#format">format</a> or <a href="#aformat">aformat</a> filter before the
+perms/aperms filter can avoid this problem.
+</p>
+<a name="select_002c-aselect"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-select_002c-aselect">12.6 select, aselect</a></h2>
+
+<p>Select frames to pass in output.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>expr, e</samp>&rsquo;</dt>
+<dd><p>Set expression, which is evaluated for each input frame.
+</p>
+<p>If the expression is evaluated to zero, the frame is discarded.
+</p>
+<p>If the evaluation result is negative or NaN, the frame is sent to the
+first output; otherwise it is sent to the output with index
+<code>ceil(val)-1</code>, assuming that the input index starts from 0.
+</p>
+<p>For example a value of <code>1.2</code> corresponds to the output with index
+<code>ceil(1.2)-1 = 2-1 = 1</code>, that is the second output.
+</p>
+</dd>
+<dt> &lsquo;<samp>outputs, n</samp>&rsquo;</dt>
+<dd><p>Set the number of outputs. The output to which to send the selected
+frame is based on the result of the evaluation. Default value is 1.
+</p></dd>
+</dl>
+
+<p>The expression can contain the following constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>the sequential number of the filtered frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>selected_n</samp>&rsquo;</dt>
+<dd><p>the sequential number of the selected frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>prev_selected_n</samp>&rsquo;</dt>
+<dd><p>the sequential number of the last selected frame, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>TB</samp>&rsquo;</dt>
+<dd><p>timebase of the input timestamps
+</p>
+</dd>
+<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
+<dd><p>the PTS (Presentation TimeStamp) of the filtered video frame,
+expressed in <var>TB</var> units, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>the PTS (Presentation TimeStamp) of the filtered video frame,
+expressed in seconds, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>prev_pts</samp>&rsquo;</dt>
+<dd><p>the PTS of the previously filtered video frame, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>prev_selected_pts</samp>&rsquo;</dt>
+<dd><p>the PTS of the last previously filtered video frame, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>prev_selected_t</samp>&rsquo;</dt>
+<dd><p>the PTS of the last previously selected video frame, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>start_pts</samp>&rsquo;</dt>
+<dd><p>the PTS of the first video frame in the video, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>start_t</samp>&rsquo;</dt>
+<dd><p>the time of the first video frame in the video, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>pict_type <em>(video only)</em></samp>&rsquo;</dt>
+<dd><p>the type of the filtered frame, can assume one of the following
+values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>I</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>P</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>B</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>S</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>SI</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>SP</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>BI</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>interlace_type <em>(video only)</em></samp>&rsquo;</dt>
+<dd><p>the frame interlace type, can assume one of the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>PROGRESSIVE</samp>&rsquo;</dt>
+<dd><p>the frame is progressive (not interlaced)
+</p></dd>
+<dt> &lsquo;<samp>TOPFIRST</samp>&rsquo;</dt>
+<dd><p>the frame is top-field-first
+</p></dd>
+<dt> &lsquo;<samp>BOTTOMFIRST</samp>&rsquo;</dt>
+<dd><p>the frame is bottom-field-first
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>consumed_sample_n <em>(audio only)</em></samp>&rsquo;</dt>
+<dd><p>the number of selected samples before the current frame
+</p>
+</dd>
+<dt> &lsquo;<samp>samples_n <em>(audio only)</em></samp>&rsquo;</dt>
+<dd><p>the number of samples in the current frame
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate <em>(audio only)</em></samp>&rsquo;</dt>
+<dd><p>the input sample rate
+</p>
+</dd>
+<dt> &lsquo;<samp>key</samp>&rsquo;</dt>
+<dd><p>1 if the filtered frame is a key-frame, 0 otherwise
+</p>
+</dd>
+<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
+<dd><p>the position in the file of the filtered frame, -1 if the information
+is not available (e.g. for synthetic video)
+</p>
+</dd>
+<dt> &lsquo;<samp>scene <em>(video only)</em></samp>&rsquo;</dt>
+<dd><p>value between 0 and 1 to indicate a new scene; a low value reflects a low
+probability for the current frame to introduce a new scene, while a higher
+value means the current frame is more likely to be one (see the example below)
+</p>
+</dd>
+</dl>
+
+<p>The default value of the select expression is &quot;1&quot;.
+</p>
+<a name="Examples-43"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-43">12.6.1 Examples</a></h3>
+
+<ul>
+<li>
+Select all frames in input:
+<table><tr><td>&nbsp;</td><td><pre class="example">select
+</pre></td></tr></table>
+
+<p>The example above is the same as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">select=1
+</pre></td></tr></table>
+
+</li><li>
+Skip all frames:
+<table><tr><td>&nbsp;</td><td><pre class="example">select=0
+</pre></td></tr></table>
+
+</li><li>
+Select only I-frames:
+<table><tr><td>&nbsp;</td><td><pre class="example">select='eq(pict_type\,I)'
+</pre></td></tr></table>
+
+</li><li>
+Select one frame every 100:
+<table><tr><td>&nbsp;</td><td><pre class="example">select='not(mod(n\,100))'
+</pre></td></tr></table>
+
+</li><li>
+Select only frames contained in the 10-20 time interval:
+<table><tr><td>&nbsp;</td><td><pre class="example">select=between(t\,10\,20)
+</pre></td></tr></table>
+
+</li><li>
+Select only I frames contained in the 10-20 time interval:
+<table><tr><td>&nbsp;</td><td><pre class="example">select=between(t\,10\,20)*eq(pict_type\,I)
+</pre></td></tr></table>
+
+</li><li>
+Select frames with a minimum distance of 10 seconds:
+<table><tr><td>&nbsp;</td><td><pre class="example">select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
+</pre></td></tr></table>
+
+</li><li>
+Use aselect to select only audio frames with samples number &gt; 100:
+<table><tr><td>&nbsp;</td><td><pre class="example">aselect='gt(samples_n\,100)'
+</pre></td></tr></table>
+
+</li><li>
+Create a mosaic of the first scenes:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
+</pre></td></tr></table>
+
+<p>Comparing <var>scene</var> against a value between 0.3 and 0.5 is generally a sane
+choice.
+</p>
+</li><li>
+Send even and odd frames to separate outputs, and compose them:
+<table><tr><td>&nbsp;</td><td><pre class="example">select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
+</pre></td></tr></table>
+</li></ul>
+
+<a name="sendcmd_002c-asendcmd"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-sendcmd_002c-asendcmd">12.7 sendcmd, asendcmd</a></h2>
+
+<p>Send commands to filters in the filtergraph.
+</p>
+<p>These filters read commands to be sent to other filters in the
+filtergraph.
+</p>
+<p><code>sendcmd</code> must be inserted between two video filters,
+<code>asendcmd</code> must be inserted between two audio filters, but apart
+from that they act the same way.
+</p>
+<p>The specification of commands can be provided in the filter arguments
+with the <var>commands</var> option, or in a file specified by the
+<var>filename</var> option.
+</p>
+<p>These filters accept the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>commands, c</samp>&rsquo;</dt>
+<dd><p>Set the commands to be read and sent to the other filters.
+</p></dd>
+<dt> &lsquo;<samp>filename, f</samp>&rsquo;</dt>
+<dd><p>Set the filename of the commands to be read and sent to the other
+filters.
+</p></dd>
+</dl>
+
+<a name="Commands-syntax"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Commands-syntax">12.7.1 Commands syntax</a></h3>
+
+<p>A commands description consists of a sequence of interval
+specifications, comprising a list of commands to be executed when a
+particular event related to that interval occurs. The occurring event
+is typically the current frame time entering or leaving a given time
+interval.
+</p>
+<p>An interval is specified by the following syntax:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>START</var>[-<var>END</var>] <var>COMMANDS</var>;
+</pre></td></tr></table>
+
+<p>The time interval is specified by the <var>START</var> and <var>END</var> times.
+<var>END</var> is optional and defaults to the maximum time.
+</p>
+<p>The current frame time is considered within the specified interval if
+it is included in the interval [<var>START</var>, <var>END</var>), that is when
+the time is greater or equal to <var>START</var> and is lesser than
+<var>END</var>.
+</p>
+<p><var>COMMANDS</var> consists of a sequence of one or more command
+specifications, separated by &quot;,&quot;, relating to that interval.  The
+syntax of a command specification is given by:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[<var>FLAGS</var>] <var>TARGET</var> <var>COMMAND</var> <var>ARG</var>
+</pre></td></tr></table>
+
+<p><var>FLAGS</var> is optional and specifies the type of events relating to
+the time interval which enable sending the specified command, and must
+be a non-null sequence of identifier flags separated by &quot;+&quot; or &quot;|&quot; and
+enclosed between &quot;[&quot; and &quot;]&quot;.
+</p>
+<p>The following flags are recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>enter</samp>&rsquo;</dt>
+<dd><p>The command is sent when the current frame timestamp enters the
+specified interval. In other words, the command is sent when the
+previous frame timestamp was not in the given interval, and the
+current is.
+</p>
+</dd>
+<dt> &lsquo;<samp>leave</samp>&rsquo;</dt>
+<dd><p>The command is sent when the current frame timestamp leaves the
+specified interval. In other words, the command is sent when the
+previous frame timestamp was in the given interval, and the
+current is not.
+</p></dd>
+</dl>
+
+<p>If <var>FLAGS</var> is not specified, a default value of <code>[enter]</code> is
+assumed.
+</p>
+<p><var>TARGET</var> specifies the target of the command, usually the name of
+the filter class or a specific filter instance name.
+</p>
+<p><var>COMMAND</var> specifies the name of the command for the target filter.
+</p>
+<p><var>ARG</var> is optional and specifies the optional list of argument for
+the given <var>COMMAND</var>.
+</p>
+<p>Between one interval specification and another, whitespaces, or
+sequences of characters starting with <code>#</code> until the end of line,
+are ignored and can be used to annotate comments.
+</p>
+<p>A simplified BNF description of the commands specification syntax
+follows:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>COMMAND_FLAG</var>  ::= &quot;enter&quot; | &quot;leave&quot;
+<var>COMMAND_FLAGS</var> ::= <var>COMMAND_FLAG</var> [(+|&quot;|&quot;)<var>COMMAND_FLAG</var>]
+<var>COMMAND</var>       ::= [&quot;[&quot; <var>COMMAND_FLAGS</var> &quot;]&quot;] <var>TARGET</var> <var>COMMAND</var> [<var>ARG</var>]
+<var>COMMANDS</var>      ::= <var>COMMAND</var> [,<var>COMMANDS</var>]
+<var>INTERVAL</var>      ::= <var>START</var>[-<var>END</var>] <var>COMMANDS</var>
+<var>INTERVALS</var>     ::= <var>INTERVAL</var>[;<var>INTERVALS</var>]
+</pre></td></tr></table>
+
+<a name="Examples-13"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-13">12.7.2 Examples</a></h3>
+
+<ul>
+<li>
+Specify audio tempo change at second 4:
+<table><tr><td>&nbsp;</td><td><pre class="example">asendcmd=c='4.0 atempo tempo 1.5',atempo
+</pre></td></tr></table>
+
+</li><li>
+Specify a list of drawtext and hue commands in a file.
+<table><tr><td>&nbsp;</td><td><pre class="example"># show text in the interval 5-10
+5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
+         [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
+
+# desaturate the image in the interval 15-20
+15.0-20.0 [enter] hue s 0,
+          [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
+          [leave] hue s 1,
+          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
+
+# apply an exponential saturation fade-out effect, starting from time 25
+25 [enter] hue s exp(25-t)
+</pre></td></tr></table>
+
+<p>A filtergraph allowing to read and process the above command list
+stored in a file &lsquo;<tt>test.cmd</tt>&rsquo;, can be specified with:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="setpts"></a>
+</p><a name="setpts_002c-asetpts"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-setpts_002c-asetpts">12.8 setpts, asetpts</a></h2>
+
+<p>Change the PTS (presentation timestamp) of the input frames.
+</p>
+<p><code>setpts</code> works on video frames, <code>asetpts</code> on audio frames.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>expr</samp>&rsquo;</dt>
+<dd><p>The expression which is evaluated for each frame to construct its timestamp.
+</p>
+</dd>
+</dl>
+
+<p>The expression is evaluated through the eval API and can contain the following
+constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>FRAME_RATE</samp>&rsquo;</dt>
+<dd><p>frame rate, only defined for constant frame-rate video
+</p>
+</dd>
+<dt> &lsquo;<samp>PTS</samp>&rsquo;</dt>
+<dd><p>the presentation timestamp in input
+</p>
+</dd>
+<dt> &lsquo;<samp>N</samp>&rsquo;</dt>
+<dd><p>the count of the input frame for video or the number of consumed samples,
+not including the current frame for audio, starting from 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>NB_CONSUMED_SAMPLES</samp>&rsquo;</dt>
+<dd><p>the number of consumed samples, not including the current frame (only
+audio)
+</p>
+</dd>
+<dt> &lsquo;<samp>NB_SAMPLES, S</samp>&rsquo;</dt>
+<dd><p>the number of samples in the current frame (only audio)
+</p>
+</dd>
+<dt> &lsquo;<samp>SAMPLE_RATE, SR</samp>&rsquo;</dt>
+<dd><p>audio sample rate
+</p>
+</dd>
+<dt> &lsquo;<samp>STARTPTS</samp>&rsquo;</dt>
+<dd><p>the PTS of the first frame
+</p>
+</dd>
+<dt> &lsquo;<samp>STARTT</samp>&rsquo;</dt>
+<dd><p>the time in seconds of the first frame
+</p>
+</dd>
+<dt> &lsquo;<samp>INTERLACED</samp>&rsquo;</dt>
+<dd><p>tell if the current frame is interlaced
+</p>
+</dd>
+<dt> &lsquo;<samp>T</samp>&rsquo;</dt>
+<dd><p>the time in seconds of the current frame
+</p>
+</dd>
+<dt> &lsquo;<samp>POS</samp>&rsquo;</dt>
+<dd><p>original position in the file of the frame, or undefined if undefined
+for the current frame
+</p>
+</dd>
+<dt> &lsquo;<samp>PREV_INPTS</samp>&rsquo;</dt>
+<dd><p>previous input PTS
+</p>
+</dd>
+<dt> &lsquo;<samp>PREV_INT</samp>&rsquo;</dt>
+<dd><p>previous input time in seconds
+</p>
+</dd>
+<dt> &lsquo;<samp>PREV_OUTPTS</samp>&rsquo;</dt>
+<dd><p>previous output PTS
+</p>
+</dd>
+<dt> &lsquo;<samp>PREV_OUTT</samp>&rsquo;</dt>
+<dd><p>previous output time in seconds
+</p>
+</dd>
+<dt> &lsquo;<samp>RTCTIME</samp>&rsquo;</dt>
+<dd><p>wallclock (RTC) time in microseconds. This is deprecated, use time(0)
+instead.
+</p>
+</dd>
+<dt> &lsquo;<samp>RTCSTART</samp>&rsquo;</dt>
+<dd><p>wallclock (RTC) time at the start of the movie in microseconds
+</p>
+</dd>
+<dt> &lsquo;<samp>TB</samp>&rsquo;</dt>
+<dd><p>timebase of the input timestamps
+</p>
+</dd>
+</dl>
+
+<a name="Examples-17"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-17">12.8.1 Examples</a></h3>
+
+<ul>
+<li>
+Start counting PTS from zero
+<table><tr><td>&nbsp;</td><td><pre class="example">setpts=PTS-STARTPTS
+</pre></td></tr></table>
+
+</li><li>
+Apply fast motion effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">setpts=0.5*PTS
+</pre></td></tr></table>
+
+</li><li>
+Apply slow motion effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">setpts=2.0*PTS
+</pre></td></tr></table>
+
+</li><li>
+Set fixed rate of 25 frames per second:
+<table><tr><td>&nbsp;</td><td><pre class="example">setpts=N/(25*TB)
+</pre></td></tr></table>
+
+</li><li>
+Set fixed rate 25 fps with some jitter:
+<table><tr><td>&nbsp;</td><td><pre class="example">setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
+</pre></td></tr></table>
+
+</li><li>
+Apply an offset of 10 seconds to the input PTS:
+<table><tr><td>&nbsp;</td><td><pre class="example">setpts=PTS+10/TB
+</pre></td></tr></table>
+
+</li><li>
+Generate timestamps from a &quot;live source&quot; and rebase onto the current timebase:
+<table><tr><td>&nbsp;</td><td><pre class="example">setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
+</pre></td></tr></table>
+
+</li><li>
+Generate timestamps by counting samples:
+<table><tr><td>&nbsp;</td><td><pre class="example">asetpts=N/SR/TB
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="settb_002c-asettb"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-settb_002c-asettb">12.9 settb, asettb</a></h2>
+
+<p>Set the timebase to use for the output frames timestamps.
+It is mainly useful for testing timebase configuration.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>expr, tb</samp>&rsquo;</dt>
+<dd><p>The expression which is evaluated into the output timebase.
+</p>
+</dd>
+</dl>
+
+<p>The value for &lsquo;<samp>tb</samp>&rsquo; is an arithmetic expression representing a
+rational. The expression can contain the constants &quot;AVTB&quot; (the default
+timebase), &quot;intb&quot; (the input timebase) and &quot;sr&quot; (the sample rate,
+audio only). Default value is &quot;intb&quot;.
+</p>
+<a name="Examples-15"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-15">12.9.1 Examples</a></h3>
+
+<ul>
+<li>
+Set the timebase to 1/25:
+<table><tr><td>&nbsp;</td><td><pre class="example">settb=expr=1/25
+</pre></td></tr></table>
+
+</li><li>
+Set the timebase to 1/10:
+<table><tr><td>&nbsp;</td><td><pre class="example">settb=expr=0.1
+</pre></td></tr></table>
+
+</li><li>
+Set the timebase to 1001/1000:
+<table><tr><td>&nbsp;</td><td><pre class="example">settb=1+0.001
+</pre></td></tr></table>
+
+</li><li>
+Set the timebase to 2*intb:
+<table><tr><td>&nbsp;</td><td><pre class="example">settb=2*intb
+</pre></td></tr></table>
+
+</li><li>
+Set the default timebase value:
+<table><tr><td>&nbsp;</td><td><pre class="example">settb=AVTB
+</pre></td></tr></table>
+</li></ul>
+
+<a name="showspectrum"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-showspectrum">12.10 showspectrum</a></h2>
+
+<p>Convert input audio to a video output, representing the audio frequency
+spectrum.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
+<dd><p>Specify the video size for the output. For the syntax of this option, check
+the &quot;Video size&quot; section in the ffmpeg-utils manual. Default value is
+<code>640x512</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>slide</samp>&rsquo;</dt>
+<dd><p>Specify if the spectrum should slide along the window. Default value is
+<code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Specify display mode.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>combined</samp>&rsquo;</dt>
+<dd><p>all channels are displayed in the same row
+</p></dd>
+<dt> &lsquo;<samp>separate</samp>&rsquo;</dt>
+<dd><p>all channels are displayed in separate rows
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>combined</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
+<dd><p>Specify display color mode.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>channel</samp>&rsquo;</dt>
+<dd><p>each channel is displayed in a separate color
+</p></dd>
+<dt> &lsquo;<samp>intensity</samp>&rsquo;</dt>
+<dd><p>each channel is is displayed using the same color scheme
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>channel</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>scale</samp>&rsquo;</dt>
+<dd><p>Specify scale used for calculating intensity color values.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>lin</samp>&rsquo;</dt>
+<dd><p>linear
+</p></dd>
+<dt> &lsquo;<samp>sqrt</samp>&rsquo;</dt>
+<dd><p>square root, default
+</p></dd>
+<dt> &lsquo;<samp>cbrt</samp>&rsquo;</dt>
+<dd><p>cubic root
+</p></dd>
+<dt> &lsquo;<samp>log</samp>&rsquo;</dt>
+<dd><p>logarithmic
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>sqrt</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>saturation</samp>&rsquo;</dt>
+<dd><p>Set saturation modifier for displayed colors. Negative values provide
+alternative color scheme. <code>0</code> is no saturation at all.
+Saturation must be in [-10.0, 10.0] range.
+Default value is <code>1</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>win_func</samp>&rsquo;</dt>
+<dd><p>Set window function.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>No samples pre-processing (do not expect this to be faster)
+</p></dd>
+<dt> &lsquo;<samp>hann</samp>&rsquo;</dt>
+<dd><p>Hann window
+</p></dd>
+<dt> &lsquo;<samp>hamming</samp>&rsquo;</dt>
+<dd><p>Hamming window
+</p></dd>
+<dt> &lsquo;<samp>blackman</samp>&rsquo;</dt>
+<dd><p>Blackman window
+</p></dd>
+</dl>
+
+<p>Default value is <code>hann</code>.
+</p></dd>
+</dl>
+
+<p>The usage is very similar to the showwaves filter; see the examples in that
+section.
+</p>
+<a name="Examples-63"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-63">12.10.1 Examples</a></h3>
+
+<ul>
+<li>
+Large window with logarithmic color scaling:
+<table><tr><td>&nbsp;</td><td><pre class="example">showspectrum=s=1280x480:scale=log
+</pre></td></tr></table>
+
+</li><li>
+Complete example for a colored and sliding spectrum per channel using <code>ffplay</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
+             [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
+</pre></td></tr></table>
+</li></ul>
+
+<a name="showwaves"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-showwaves">12.11 showwaves</a></h2>
+
+<p>Convert input audio to a video output, representing the samples waves.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
+<dd><p>Specify the video size for the output. For the syntax of this option, check
+the &quot;Video size&quot; section in the ffmpeg-utils manual. Default value
+is &quot;600x240&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Set display mode.
+</p>
+<p>Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>point</samp>&rsquo;</dt>
+<dd><p>Draw a point for each sample.
+</p>
+</dd>
+<dt> &lsquo;<samp>line</samp>&rsquo;</dt>
+<dd><p>Draw a vertical line for each sample.
+</p></dd>
+</dl>
+
+<p>Default value is <code>point</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>Set the number of samples which are printed on the same column. A
+larger value will decrease the frame rate. Must be a positive
+integer. This option can be set only if the value for <var>rate</var>
+is not explicitly specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
+<dd><p>Set the (approximate) output frame rate. This is done by setting the
+option <var>n</var>. Default value is &quot;25&quot;.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-61"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-61">12.11.1 Examples</a></h3>
+
+<ul>
+<li>
+Output the input file audio and the corresponding video representation
+at the same time:
+<table><tr><td>&nbsp;</td><td><pre class="example">amovie=a.mp3,asplit[out0],showwaves[out1]
+</pre></td></tr></table>
+
+</li><li>
+Create a synthetic signal and show it with showwaves, forcing a
+frame rate of 30 frames per second:
+<table><tr><td>&nbsp;</td><td><pre class="example">aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
+</pre></td></tr></table>
+</li></ul>
+
+<a name="split_002c-asplit"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-split_002c-asplit">12.12 split, asplit</a></h2>
+
+<p>Split input into several identical outputs.
+</p>
+<p><code>asplit</code> works with audio input, <code>split</code> with video.
+</p>
+<p>The filter accepts a single parameter which specifies the number of outputs. If
+unspecified, it defaults to 2.
+</p>
+<a name="Examples-27"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-27">12.12.1 Examples</a></h3>
+
+<ul>
+<li>
+Create two separate outputs from the same input:
+<table><tr><td>&nbsp;</td><td><pre class="example">[in] split [out0][out1]
+</pre></td></tr></table>
+
+</li><li>
+To create 3 or more outputs, you need to specify the number of
+outputs, like in:
+<table><tr><td>&nbsp;</td><td><pre class="example">[in] asplit=3 [out0][out1][out2]
+</pre></td></tr></table>
+
+</li><li>
+Create two separate outputs from the same input, one cropped and
+one padded:
+<table><tr><td>&nbsp;</td><td><pre class="example">[in] split [splitout1][splitout2];
+[splitout1] crop=100:100:0:0    [cropout];
+[splitout2] pad=200:200:100:100 [padout];
+</pre></td></tr></table>
+
+</li><li>
+Create 5 copies of the input audio with <code>ffmpeg</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
+</pre></td></tr></table>
+</li></ul>
+
+<a name="zmq_002c-azmq"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-zmq_002c-azmq">12.13 zmq, azmq</a></h2>
+
+<p>Receive commands sent through a libzmq client, and forward them to
+filters in the filtergraph.
+</p>
+<p><code>zmq</code> and <code>azmq</code> work as a pass-through filters. <code>zmq</code>
+must be inserted between two video filters, <code>azmq</code> between two
+audio filters.
+</p>
+<p>To enable these filters you need to install the libzmq library and
+headers and configure FFmpeg with <code>--enable-libzmq</code>.
+</p>
+<p>For more information about libzmq see:
+<a href="http://www.zeromq.org/">http://www.zeromq.org/</a>
+</p>
+<p>The <code>zmq</code> and <code>azmq</code> filters work as a libzmq server, which
+receives messages sent through a network interface defined by the
+&lsquo;<samp>bind_address</samp>&rsquo; option.
+</p>
+<p>The received message must be in the form:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>TARGET</var> <var>COMMAND</var> [<var>ARG</var>]
+</pre></td></tr></table>
+
+<p><var>TARGET</var> specifies the target of the command, usually the name of
+the filter class or a specific filter instance name.
+</p>
+<p><var>COMMAND</var> specifies the name of the command for the target filter.
+</p>
+<p><var>ARG</var> is optional and specifies the optional argument list for the
+given <var>COMMAND</var>.
+</p>
+<p>Upon reception, the message is processed and the corresponding command
+is injected into the filtergraph. Depending on the result, the filter
+will send a reply to the client, adopting the format:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>ERROR_CODE</var> <var>ERROR_REASON</var>
+<var>MESSAGE</var>
+</pre></td></tr></table>
+
+<p><var>MESSAGE</var> is optional.
+</p>
+<a name="Examples-3"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-3">12.13.1 Examples</a></h3>
+
+<p>Look at &lsquo;<tt>tools/zmqsend</tt>&rsquo; for an example of a zmq client which can
+be used to send commands processed by these filters.
+</p>
+<p>Consider the following filtergraph generated by <code>ffplay</code>
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay -dumpgraph 1 -f lavfi &quot;
+color=s=100x100:c=red  [l];
+color=s=100x100:c=blue [r];
+nullsrc=s=200x100, zmq [bg];
+[bg][l]   overlay      [bg+l];
+[bg+l][r] overlay=x=100 &quot;
+</pre></td></tr></table>
+
+<p>To change the color of the left side of the video, the following
+command can be used:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">echo Parsed_color_0 c yellow | tools/zmqsend
+</pre></td></tr></table>
+
+<p>To change the right side:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">echo Parsed_color_1 c pink | tools/zmqsend
+</pre></td></tr></table>
+
+
+<a name="Multimedia-Sources"></a>
+<h1 class="chapter"><a href="ffmpeg-filters.html#toc-Multimedia-Sources">13. Multimedia Sources</a></h1>
+
+<p>Below is a description of the currently available multimedia sources.
+</p>
+<a name="amovie"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-amovie">13.1 amovie</a></h2>
+
+<p>This is the same as <a href="#movie">movie</a> source, except it selects an audio
+stream by default.
+</p>
+<p><a name="movie"></a>
+</p><a name="movie-1"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-movie-1">13.2 movie</a></h2>
+
+<p>Read audio and/or video stream(s) from a movie container.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filename</samp>&rsquo;</dt>
+<dd><p>The name of the resource to read (not necessarily a file but also a device or a
+stream accessed through some protocol).
+</p>
+</dd>
+<dt> &lsquo;<samp>format_name, f</samp>&rsquo;</dt>
+<dd><p>Specifies the format assumed for the movie to read, and can be either
+the name of a container or an input device. If not specified the
+format is guessed from <var>movie_name</var> or by probing.
+</p>
+</dd>
+<dt> &lsquo;<samp>seek_point, sp</samp>&rsquo;</dt>
+<dd><p>Specifies the seek point in seconds, the frames will be output
+starting from this seek point, the parameter is evaluated with
+<code>av_strtod</code> so the numerical value may be suffixed by an IS
+postfix. Default value is &quot;0&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>streams, s</samp>&rsquo;</dt>
+<dd><p>Specifies the streams to read. Several streams can be specified,
+separated by &quot;+&quot;. The source will then have as many outputs, in the
+same order. The syntax is explained in the &ldquo;Stream specifiers&rdquo;
+section in the ffmpeg manual. Two special names, &quot;dv&quot; and &quot;da&quot; specify
+respectively the default (best suited) video and audio stream. Default
+is &quot;dv&quot;, or &quot;da&quot; if the filter is called as &quot;amovie&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>stream_index, si</samp>&rsquo;</dt>
+<dd><p>Specifies the index of the video stream to read. If the value is -1,
+the best suited video stream will be automatically selected. Default
+value is &quot;-1&quot;. Deprecated. If the filter is called &quot;amovie&quot;, it will select
+audio instead of video.
+</p>
+</dd>
+<dt> &lsquo;<samp>loop</samp>&rsquo;</dt>
+<dd><p>Specifies how many times to read the stream in sequence.
+If the value is less than 1, the stream will be read again and again.
+Default value is &quot;1&quot;.
+</p>
+<p>Note that when the movie is looped the source timestamps are not
+changed, so it will generate non monotonically increasing timestamps.
+</p></dd>
+</dl>
+
+<p>This filter allows to overlay a second video on top of main input of
+a filtergraph as shown in this graph:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">input -----------&gt; deltapts0 --&gt; overlay --&gt; output
+                                    ^
+                                    |
+movie --&gt; scale--&gt; deltapts1 -------+
+</pre></td></tr></table>
+
+<a name="Examples"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples">13.2.1 Examples</a></h3>
+
+<ul>
+<li>
+Skip 3.2 seconds from the start of the avi file in.avi, and overlay it
+on top of the input labelled as &quot;in&quot;:
+<table><tr><td>&nbsp;</td><td><pre class="example">movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
+[in] setpts=PTS-STARTPTS [main];
+[main][over] overlay=16:16 [out]
+</pre></td></tr></table>
+
+</li><li>
+Read from a video4linux2 device, and overlay it on top of the input
+labelled as &quot;in&quot;:
+<table><tr><td>&nbsp;</td><td><pre class="example">movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
+[in] setpts=PTS-STARTPTS [main];
+[main][over] overlay=16:16 [out]
+</pre></td></tr></table>
+
+</li><li>
+Read the first video stream and the audio stream with id 0x81 from
+dvd.vob; the video is connected to the pad named &quot;video&quot; and the audio is
+connected to the pad named &quot;audio&quot;:
+<table><tr><td>&nbsp;</td><td><pre class="example">movie=dvd.vob:s=v:0+#0x81 [video] [audio]
+</pre></td></tr></table>
+</li></ul>
+
+
+<a name="See-Also"></a>
+<h1 class="chapter"><a href="ffmpeg-filters.html#toc-See-Also">14. See Also</a></h1>
+
+<p><a href="ffmpeg.html">ffmpeg</a>, <a href="ffplay.html">ffplay</a>, <a href="ffprobe.html">ffprobe</a>, <a href="ffserver.html">ffserver</a>,
+<a href="libavfilter.html">libavfilter</a>
+</p>
+
+<a name="Authors"></a>
+<h1 class="chapter"><a href="ffmpeg-filters.html#toc-Authors">15. Authors</a></h1>
+
+<p>The FFmpeg developers.
+</p>
+<p>For details about the authorship, see the Git history of the project
+(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
+<code>git log</code> in the FFmpeg source directory, or browsing the
+online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
+</p>
+<p>Maintainers for the specific components are listed in the file
+&lsquo;<tt>MAINTAINERS</tt>&rsquo; in the source code tree.
+</p>
+
+<footer class="footer pagination-right">
+<span class="label label-info">This document was generated by <em>Kyle Schwarz</em> on <em>December 14, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies/ffmpeg/doc/ffmpeg-formats.html b/dependencies/ffmpeg/doc/ffmpeg-formats.html
new file mode 100644 (file)
index 0000000..11e5b08
--- /dev/null
@@ -0,0 +1,1829 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on December 14, 2013 by texi2html 1.82 -->
+<!--
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>FFmpeg documentation : FFmpeg Formats </title>
+
+<meta name="description" content="FFmpeg Formats Documentation: ">
+<meta name="keywords" content="FFmpeg documentation : FFmpeg Formats ">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="default.css" />
+
+<link rel="icon" href="favicon.png" type="image/png" />
+</head>
+<body>
+<div id="container">
+<div id="body">
+
+<a name="SEC_Top"></a>
+<h1 class="settitle">FFmpeg Formats Documentation</h1>
+
+<a name="SEC_Contents"></a>
+<h1>Table of Contents</h1>
+<div class="contents">
+
+<ul class="toc">
+  <li><a name="toc-Description" href="#Description">1. Description</a></li>
+  <li><a name="toc-Format-Options" href="#Format-Options">2. Format Options</a>
+  <ul class="toc">
+    <li><a name="toc-Format-stream-specifiers-1" href="#Format-stream-specifiers-1">2.1 Format stream specifiers</a></li>
+  </ul></li>
+  <li><a name="toc-Demuxers" href="#Demuxers">3. Demuxers</a>
+  <ul class="toc">
+    <li><a name="toc-applehttp" href="#applehttp">3.1 applehttp</a></li>
+    <li><a name="toc-asf" href="#asf">3.2 asf</a></li>
+    <li><a name="toc-concat-1" href="#concat-1">3.3 concat</a>
+    <ul class="toc">
+      <li><a name="toc-Syntax" href="#Syntax">3.3.1 Syntax</a></li>
+      <li><a name="toc-Options" href="#Options">3.3.2 Options</a></li>
+    </ul></li>
+    <li><a name="toc-flv" href="#flv">3.4 flv</a></li>
+    <li><a name="toc-libgme" href="#libgme">3.5 libgme</a></li>
+    <li><a name="toc-libquvi" href="#libquvi">3.6 libquvi</a></li>
+    <li><a name="toc-image2-2" href="#image2-2">3.7 image2</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-1" href="#Examples-1">3.7.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mpegts-1" href="#mpegts-1">3.8 mpegts</a></li>
+    <li><a name="toc-rawvideo" href="#rawvideo">3.9 rawvideo</a></li>
+    <li><a name="toc-sbg" href="#sbg">3.10 sbg</a></li>
+    <li><a name="toc-tedcaptions" href="#tedcaptions">3.11 tedcaptions</a></li>
+  </ul></li>
+  <li><a name="toc-Muxers" href="#Muxers">4. Muxers</a>
+  <ul class="toc">
+    <li><a name="toc-aiff-1" href="#aiff-1">4.1 aiff</a></li>
+    <li><a name="toc-crc-1" href="#crc-1">4.2 crc</a></li>
+    <li><a name="toc-framecrc-1" href="#framecrc-1">4.3 framecrc</a></li>
+    <li><a name="toc-framemd5-1" href="#framemd5-1">4.4 framemd5</a></li>
+    <li><a name="toc-gif-1" href="#gif-1">4.5 gif</a></li>
+    <li><a name="toc-hls-1" href="#hls-1">4.6 hls</a></li>
+    <li><a name="toc-ico-1" href="#ico-1">4.7 ico</a></li>
+    <li><a name="toc-image2-1" href="#image2-1">4.8 image2</a></li>
+    <li><a name="toc-matroska" href="#matroska">4.9 matroska</a></li>
+    <li><a name="toc-md5-1" href="#md5-1">4.10 md5</a></li>
+    <li><a name="toc-mov_002fmp4_002fismv" href="#mov_002fmp4_002fismv">4.11 mov/mp4/ismv</a></li>
+    <li><a name="toc-mp3" href="#mp3">4.12 mp3</a></li>
+    <li><a name="toc-mpegts" href="#mpegts">4.13 mpegts</a></li>
+    <li><a name="toc-null" href="#null">4.14 null</a></li>
+    <li><a name="toc-ogg" href="#ogg">4.15 ogg</a></li>
+    <li><a name="toc-segment_002c-stream_005fsegment_002c-ssegment" href="#segment_002c-stream_005fsegment_002c-ssegment">4.16 segment, stream_segment, ssegment</a>
+    <ul class="toc">
+      <li><a name="toc-Examples" href="#Examples">4.16.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-tee" href="#tee">4.17 tee</a></li>
+  </ul></li>
+  <li><a name="toc-Metadata" href="#Metadata">5. Metadata</a></li>
+  <li><a name="toc-See-Also" href="#See-Also">6. See Also</a></li>
+  <li><a name="toc-Authors" href="#Authors">7. Authors</a></li>
+</ul>
+</div>
+
+<a name="Description"></a>
+<h1 class="chapter"><a href="ffmpeg-formats.html#toc-Description">1. Description</a></h1>
+
+<p>This document describes the supported formats (muxers and demuxers)
+provided by the libavformat library.
+</p>
+
+<a name="Format-Options"></a>
+<h1 class="chapter"><a href="ffmpeg-formats.html#toc-Format-Options">2. Format Options</a></h1>
+
+<p>The libavformat library provides some generic global options, which
+can be set on all the muxers and demuxers. In addition each muxer or
+demuxer may support so-called private options, which are specific for
+that component.
+</p>
+<p>Options may be set by specifying -<var>option</var> <var>value</var> in the
+FFmpeg tools, or by setting the value explicitly in the
+<code>AVFormatContext</code> options or using the &lsquo;<tt>libavutil/opt.h</tt>&rsquo; API
+for programmatic use.
+</p>
+<p>The list of supported options follows:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>avioflags <var>flags</var> (<em>input/output</em>)</samp>&rsquo;</dt>
+<dd><p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>direct</samp>&rsquo;</dt>
+<dd><p>Reduce buffering.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>probesize <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Set probing size in bytes, i.e. the size of the data to analyze to get
+stream information. A higher value will allow to detect more
+information in case it is dispersed into the stream, but will increase
+latency. Must be an integer not lesser than 32. It is 5000000 by default.
+</p>
+</dd>
+<dt> &lsquo;<samp>packetsize <var>integer</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set packet size.
+</p>
+</dd>
+<dt> &lsquo;<samp>fflags <var>flags</var> (<em>input/output</em>)</samp>&rsquo;</dt>
+<dd><p>Set format flags.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>ignidx</samp>&rsquo;</dt>
+<dd><p>Ignore index.
+</p></dd>
+<dt> &lsquo;<samp>genpts</samp>&rsquo;</dt>
+<dd><p>Generate PTS.
+</p></dd>
+<dt> &lsquo;<samp>nofillin</samp>&rsquo;</dt>
+<dd><p>Do not fill in missing values that can be exactly calculated.
+</p></dd>
+<dt> &lsquo;<samp>noparse</samp>&rsquo;</dt>
+<dd><p>Disable AVParsers, this needs <code>+nofillin</code> too.
+</p></dd>
+<dt> &lsquo;<samp>igndts</samp>&rsquo;</dt>
+<dd><p>Ignore DTS.
+</p></dd>
+<dt> &lsquo;<samp>discardcorrupt</samp>&rsquo;</dt>
+<dd><p>Discard corrupted frames.
+</p></dd>
+<dt> &lsquo;<samp>sortdts</samp>&rsquo;</dt>
+<dd><p>Try to interleave output packets by DTS.
+</p></dd>
+<dt> &lsquo;<samp>keepside</samp>&rsquo;</dt>
+<dd><p>Do not merge side data.
+</p></dd>
+<dt> &lsquo;<samp>latm</samp>&rsquo;</dt>
+<dd><p>Enable RTP MP4A-LATM payload.
+</p></dd>
+<dt> &lsquo;<samp>nobuffer</samp>&rsquo;</dt>
+<dd><p>Reduce the latency introduced by optional buffering
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>seek2any <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Allow seeking to non-keyframes on demuxer level when supported if set to 1.
+Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>analyzeduration <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Specify how many microseconds are analyzed to probe the input. A
+higher value will allow to detect more accurate information, but will
+increase latency. It defaults to 5,000,000 microseconds = 5 seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>cryptokey <var>hexadecimal string</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Set decryption key.
+</p>
+</dd>
+<dt> &lsquo;<samp>indexmem <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Set max memory used for timestamp index (per stream).
+</p>
+</dd>
+<dt> &lsquo;<samp>rtbufsize <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Set max memory used for buffering real-time frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>fdebug <var>flags</var> (<em>input/output</em>)</samp>&rsquo;</dt>
+<dd><p>Print specific debug info.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>ts</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>max_delay <var>integer</var> (<em>input/output</em>)</samp>&rsquo;</dt>
+<dd><p>Set maximum muxing or demuxing delay in microseconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>fpsprobesize <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Set number of frames used to probe fps.
+</p>
+</dd>
+<dt> &lsquo;<samp>audio_preload <var>integer</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set microseconds by which audio packets should be interleaved earlier.
+</p>
+</dd>
+<dt> &lsquo;<samp>chunk_duration <var>integer</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set microseconds for each chunk.
+</p>
+</dd>
+<dt> &lsquo;<samp>chunk_size <var>integer</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set size in bytes for each chunk.
+</p>
+</dd>
+<dt> &lsquo;<samp>err_detect, f_err_detect <var>flags</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Set error detection flags. <code>f_err_detect</code> is deprecated and
+should be used only via the <code>ffmpeg</code> tool.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>crccheck</samp>&rsquo;</dt>
+<dd><p>Verify embedded CRCs.
+</p></dd>
+<dt> &lsquo;<samp>bitstream</samp>&rsquo;</dt>
+<dd><p>Detect bitstream specification deviations.
+</p></dd>
+<dt> &lsquo;<samp>buffer</samp>&rsquo;</dt>
+<dd><p>Detect improper bitstream length.
+</p></dd>
+<dt> &lsquo;<samp>explode</samp>&rsquo;</dt>
+<dd><p>Abort decoding on minor error detection.
+</p></dd>
+<dt> &lsquo;<samp>careful</samp>&rsquo;</dt>
+<dd><p>Consider things that violate the spec and have not been seen in the
+wild as errors.
+</p></dd>
+<dt> &lsquo;<samp>compliant</samp>&rsquo;</dt>
+<dd><p>Consider all spec non compliancies as errors.
+</p></dd>
+<dt> &lsquo;<samp>aggressive</samp>&rsquo;</dt>
+<dd><p>Consider things that a sane encoder should not do as an error.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>use_wallclock_as_timestamps <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Use wallclock as timestamps.
+</p>
+</dd>
+<dt> &lsquo;<samp>avoid_negative_ts <var>integer</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Shift timestamps to make them non-negative. A value of 1 enables shifting,
+a value of 0 disables it, the default value of -1 enables shifting
+when required by the target format.
+</p>
+<p>When shifting is enabled, all output timestamps are shifted by the
+same amount. Audio, video, and subtitles desynching and relative
+timestamp differences are preserved compared to how they would have
+been without shifting.
+</p>
+<p>Also note that this affects only leading negative timestamps, and not
+non-monotonic negative timestamps.
+</p>
+</dd>
+<dt> &lsquo;<samp>skip_initial_bytes <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Set number of bytes to skip before reading header and frames if set to 1.
+Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>correct_ts_overflow <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Correct single timestamp overflows if set to 1. Default is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>flush_packets <var>integer</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Flush the underlying I/O stream after each packet. Default 1 enables it, and
+has the effect of reducing the latency; 0 disables it and may slightly
+increase performance in some cases.
+</p></dd>
+</dl>
+
+
+<p><a name="Format-stream-specifiers"></a>
+</p><a name="Format-stream-specifiers-1"></a>
+<h2 class="section"><a href="ffmpeg-formats.html#toc-Format-stream-specifiers-1">2.1 Format stream specifiers</a></h2>
+
+<p>Format stream specifiers allow selection of one or more streams that
+match specific properties.
+</p>
+<p>Possible forms of stream specifiers are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp><var>stream_index</var></samp>&rsquo;</dt>
+<dd><p>Matches the stream with this index.
+</p>
+</dd>
+<dt> &lsquo;<samp><var>stream_type</var>[:<var>stream_index</var>]</samp>&rsquo;</dt>
+<dd><p><var>stream_type</var> is one of following: &rsquo;v&rsquo; for video, &rsquo;a&rsquo; for audio,
+&rsquo;s&rsquo; for subtitle, &rsquo;d&rsquo; for data, and &rsquo;t&rsquo; for attachments. If
+<var>stream_index</var> is given, then it matches the stream number
+<var>stream_index</var> of this type. Otherwise, it matches all streams of
+this type.
+</p>
+</dd>
+<dt> &lsquo;<samp>p:<var>program_id</var>[:<var>stream_index</var>]</samp>&rsquo;</dt>
+<dd><p>If <var>stream_index</var> is given, then it matches the stream with number
+<var>stream_index</var> in the program with the id
+<var>program_id</var>. Otherwise, it matches all streams in the program.
+</p>
+</dd>
+<dt> &lsquo;<samp>#<var>stream_id</var></samp>&rsquo;</dt>
+<dd><p>Matches the stream by a format-specific ID.
+</p></dd>
+</dl>
+
+<p>The exact semantics of stream specifiers is defined by the
+<code>avformat_match_stream_specifier()</code> function declared in the
+&lsquo;<tt>libavformat/avformat.h</tt>&rsquo; header.
+</p>
+<a name="Demuxers"></a>
+<h1 class="chapter"><a href="ffmpeg-formats.html#toc-Demuxers">3. Demuxers</a></h1>
+
+<p>Demuxers are configured elements in FFmpeg that can read the
+multimedia streams from a particular type of file.
+</p>
+<p>When you configure your FFmpeg build, all the supported demuxers
+are enabled by default. You can list all available ones using the
+configure option <code>--list-demuxers</code>.
+</p>
+<p>You can disable all the demuxers using the configure option
+<code>--disable-demuxers</code>, and selectively enable a single demuxer with
+the option <code>--enable-demuxer=<var>DEMUXER</var></code>, or disable it
+with the option <code>--disable-demuxer=<var>DEMUXER</var></code>.
+</p>
+<p>The option <code>-formats</code> of the ff* tools will display the list of
+enabled demuxers.
+</p>
+<p>The description of some of the currently available demuxers follows.
+</p>
+<a name="applehttp"></a>
+<h2 class="section"><a href="ffmpeg-formats.html#toc-applehttp">3.1 applehttp</a></h2>
+
+<p>Apple HTTP Live Streaming demuxer.
+</p>
+<p>This demuxer presents all AVStreams from all variant streams.
+The id field is set to the bitrate variant index number. By setting
+the discard flags on AVStreams (by pressing &rsquo;a&rsquo; or &rsquo;v&rsquo; in ffplay),
+the caller can decide which variant streams to actually receive.
+The total bitrate of the variant that the stream belongs to is
+available in a metadata key named &quot;variant_bitrate&quot;.
+</p>
+<a name="asf"></a>
+<h2 class="section"><a href="ffmpeg-formats.html#toc-asf">3.2 asf</a></h2>
+
+<p>Advanced Systems Format demuxer.
+</p>
+<p>This demuxer is used to demux ASF files and MMS network streams.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-no_resync_search <var>bool</var></samp>&rsquo;</dt>
+<dd><p>Do not try to resynchronize by looking for a certain optional start code.
+</p></dd>
+</dl>
+
+<p><a name="concat"></a>
+</p><a name="concat-1"></a>
+<h2 class="section"><a href="ffmpeg-formats.html#toc-concat-1">3.3 concat</a></h2>
+
+<p>Virtual concatenation script demuxer.
+</p>
+<p>This demuxer reads a list of files and other directives from a text file and
+demuxes them one after the other, as if all their packet had been muxed
+together.
+</p>
+<p>The timestamps in the files are adjusted so that the first file starts at 0
+and each next file starts where the previous one finishes. Note that it is
+done globally and may cause gaps if all streams do not have exactly the same
+length.
+</p>
+<p>All files must have the same streams (same codecs, same time base, etc.).
+</p>
+<p>The duration of each file is used to adjust the timestamps of the next file:
+if the duration is incorrect (because it was computed using the bit-rate or
+because the file is truncated, for example), it can cause artifacts. The
+<code>duration</code> directive can be used to override the duration stored in
+each file.
+</p>
+<a name="Syntax"></a>
+<h3 class="subsection"><a href="ffmpeg-formats.html#toc-Syntax">3.3.1 Syntax</a></h3>
+
+<p>The script is a text file in extended-ASCII, with one directive per line.
+Empty lines, leading spaces and lines starting with &rsquo;#&rsquo; are ignored. The
+following directive is recognized:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp><code>file <var>path</var></code></samp>&rsquo;</dt>
+<dd><p>Path to a file to read; special characters and spaces must be escaped with
+backslash or single quotes.
+</p>
+<p>All subsequent directives apply to that file.
+</p>
+</dd>
+<dt> &lsquo;<samp><code>ffconcat version 1.0</code></samp>&rsquo;</dt>
+<dd><p>Identify the script type and version. It also sets the &lsquo;<samp>safe</samp>&rsquo; option
+to 1 if it was to its default -1.
+</p>
+<p>To make FFmpeg recognize the format automatically, this directive must
+appears exactly as is (no extra space or byte-order-mark) on the very first
+line of the script.
+</p>
+</dd>
+<dt> &lsquo;<samp><code>duration <var>dur</var></code></samp>&rsquo;</dt>
+<dd><p>Duration of the file. This information can be specified from the file;
+specifying it here may be more efficient or help if the information from the
+file is not available or accurate.
+</p>
+<p>If the duration is set for all files, then it is possible to seek in the
+whole concatenated video.
+</p>
+</dd>
+</dl>
+
+<a name="Options"></a>
+<h3 class="subsection"><a href="ffmpeg-formats.html#toc-Options">3.3.2 Options</a></h3>
+
+<p>This demuxer accepts the following option:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>safe</samp>&rsquo;</dt>
+<dd><p>If set to 1, reject unsafe file paths. A file path is considered safe if it
+does not contain a protocol specification and is relative and all components
+only contain characters from the portable character set (letters, digits,
+period, underscore and hyphen) and have no period at the beginning of a
+component.
+</p>
+<p>If set to 0, any file name is accepted.
+</p>
+<p>The default is -1, it is equivalent to 1 if the format was automatically
+probed and 0 otherwise.
+</p>
+</dd>
+</dl>
+
+<a name="flv"></a>
+<h2 class="section"><a href="ffmpeg-formats.html#toc-flv">3.4 flv</a></h2>
+
+<p>Adobe Flash Video Format demuxer.
+</p>
+<p>This demuxer is used to demux FLV files and RTMP network streams.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-flv_metadata <var>bool</var></samp>&rsquo;</dt>
+<dd><p>Allocate the streams according to the onMetaData array content.
+</p></dd>
+</dl>
+
+<a name="libgme"></a>
+<h2 class="section"><a href="ffmpeg-formats.html#toc-libgme">3.5 libgme</a></h2>
+
+<p>The Game Music Emu library is a collection of video game music file emulators.
+</p>
+<p>See <a href="http://code.google.com/p/game-music-emu/">http://code.google.com/p/game-music-emu/</a> for more information.
+</p>
+<p>Some files have multiple tracks. The demuxer will pick the first track by
+default. The &lsquo;<samp>track_index</samp>&rsquo; option can be used to select a different
+track. Track indexes start at 0. The demuxer exports the number of tracks as
+<var>tracks</var> meta data entry.
+</p>
+<p>For very large files, the &lsquo;<samp>max_size</samp>&rsquo; option may have to be adjusted.
+</p>
+<a name="libquvi"></a>
+<h2 class="section"><a href="ffmpeg-formats.html#toc-libquvi">3.6 libquvi</a></h2>
+
+<p>Play media from Internet services using the quvi project.
+</p>
+<p>The demuxer accepts a &lsquo;<samp>format</samp>&rsquo; option to request a specific quality. It
+is by default set to <var>best</var>.
+</p>
+<p>See <a href="http://quvi.sourceforge.net/">http://quvi.sourceforge.net/</a> for more information.
+</p>
+<p>FFmpeg needs to be built with <code>--enable-libquvi</code> for this demuxer to be
+enabled.
+</p>
+<a name="image2-2"></a>
+<h2 class="section"><a href="ffmpeg-formats.html#toc-image2-2">3.7 image2</a></h2>
+
+<p>Image file demuxer.
+</p>
+<p>This demuxer reads from a list of image files specified by a pattern.
+The syntax and meaning of the pattern is specified by the
+option <var>pattern_type</var>.
+</p>
+<p>The pattern may contain a suffix which is used to automatically
+determine the format of the images contained in the files.
+</p>
+<p>The size, the pixel format, and the format of each image must be the
+same for all the files in the sequence.
+</p>
+<p>This demuxer accepts the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>framerate</samp>&rsquo;</dt>
+<dd><p>Set the frame rate for the video stream. It defaults to 25.
+</p></dd>
+<dt> &lsquo;<samp>loop</samp>&rsquo;</dt>
+<dd><p>If set to 1, loop over the input. Default value is 0.
+</p></dd>
+<dt> &lsquo;<samp>pattern_type</samp>&rsquo;</dt>
+<dd><p>Select the pattern type used to interpret the provided filename.
+</p>
+<p><var>pattern_type</var> accepts one of the following values.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sequence</samp>&rsquo;</dt>
+<dd><p>Select a sequence pattern type, used to specify a sequence of files
+indexed by sequential numbers.
+</p>
+<p>A sequence pattern may contain the string &quot;%d&quot; or &quot;%0<var>N</var>d&quot;, which
+specifies the position of the characters representing a sequential
+number in each filename matched by the pattern. If the form
+&quot;%d0<var>N</var>d&quot; is used, the string representing the number in each
+filename is 0-padded and <var>N</var> is the total number of 0-padded
+digits representing the number. The literal character &rsquo;%&rsquo; can be
+specified in the pattern with the string &quot;%%&quot;.
+</p>
+<p>If the sequence pattern contains &quot;%d&quot; or &quot;%0<var>N</var>d&quot;, the first filename of
+the file list specified by the pattern must contain a number
+inclusively contained between <var>start_number</var> and
+<var>start_number</var>+<var>start_number_range</var>-1, and all the following
+numbers must be sequential.
+</p>
+<p>For example the pattern &quot;img-%03d.bmp&quot; will match a sequence of
+filenames of the form &lsquo;<tt>img-001.bmp</tt>&rsquo;, &lsquo;<tt>img-002.bmp</tt>&rsquo;, ...,
+&lsquo;<tt>img-010.bmp</tt>&rsquo;, etc.; the pattern &quot;i%%m%%g-%d.jpg&quot; will match a
+sequence of filenames of the form &lsquo;<tt>i%m%g-1.jpg</tt>&rsquo;,
+&lsquo;<tt>i%m%g-2.jpg</tt>&rsquo;, ..., &lsquo;<tt>i%m%g-10.jpg</tt>&rsquo;, etc.
+</p>
+<p>Note that the pattern must not necessarily contain &quot;%d&quot; or
+&quot;%0<var>N</var>d&quot;, for example to convert a single image file
+&lsquo;<tt>img.jpeg</tt>&rsquo; you can employ the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i img.jpeg img.png
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>glob</samp>&rsquo;</dt>
+<dd><p>Select a glob wildcard pattern type.
+</p>
+<p>The pattern is interpreted like a <code>glob()</code> pattern. This is only
+selectable if libavformat was compiled with globbing support.
+</p>
+</dd>
+<dt> &lsquo;<samp>glob_sequence <em>(deprecated, will be removed)</em></samp>&rsquo;</dt>
+<dd><p>Select a mixed glob wildcard/sequence pattern.
+</p>
+<p>If your version of libavformat was compiled with globbing support, and
+the provided pattern contains at least one glob meta character among
+<code>%*?[]{}</code> that is preceded by an unescaped &quot;%&quot;, the pattern is
+interpreted like a <code>glob()</code> pattern, otherwise it is interpreted
+like a sequence pattern.
+</p>
+<p>All glob special characters <code>%*?[]{}</code> must be prefixed
+with &quot;%&quot;. To escape a literal &quot;%&quot; you shall use &quot;%%&quot;.
+</p>
+<p>For example the pattern <code>foo-%*.jpeg</code> will match all the
+filenames prefixed by &quot;foo-&quot; and terminating with &quot;.jpeg&quot;, and
+<code>foo-%?%?%?.jpeg</code> will match all the filenames prefixed with
+&quot;foo-&quot;, followed by a sequence of three characters, and terminating
+with &quot;.jpeg&quot;.
+</p>
+<p>This pattern type is deprecated in favor of <var>glob</var> and
+<var>sequence</var>.
+</p></dd>
+</dl>
+
+<p>Default value is <var>glob_sequence</var>.
+</p></dd>
+<dt> &lsquo;<samp>pixel_format</samp>&rsquo;</dt>
+<dd><p>Set the pixel format of the images to read. If not specified the pixel
+format is guessed from the first image file in the sequence.
+</p></dd>
+<dt> &lsquo;<samp>start_number</samp>&rsquo;</dt>
+<dd><p>Set the index of the file matched by the image file pattern to start
+to read from. Default value is 0.
+</p></dd>
+<dt> &lsquo;<samp>start_number_range</samp>&rsquo;</dt>
+<dd><p>Set the index interval range to check when looking for the first image
+file in the sequence, starting from <var>start_number</var>. Default value
+is 5.
+</p></dd>
+<dt> &lsquo;<samp>ts_from_file</samp>&rsquo;</dt>
+<dd><p>If set to 1, will set frame timestamp to modification time of image file. Note
+that monotonity of timestamps is not provided: images go in the same order as
+without this option. Default value is 0.
+</p></dd>
+<dt> &lsquo;<samp>video_size</samp>&rsquo;</dt>
+<dd><p>Set the video size of the images to read. If not specified the video
+size is guessed from the first image file in the sequence.
+</p></dd>
+</dl>
+
+<a name="Examples-1"></a>
+<h3 class="subsection"><a href="ffmpeg-formats.html#toc-Examples-1">3.7.1 Examples</a></h3>
+
+<ul>
+<li>
+Use <code>ffmpeg</code> for creating a video from the images in the file
+sequence &lsquo;<tt>img-001.jpeg</tt>&rsquo;, &lsquo;<tt>img-002.jpeg</tt>&rsquo;, ..., assuming an
+input frame rate of 10 frames per second:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -framerate 10 -i 'img-%03d.jpeg' out.mkv
+</pre></td></tr></table>
+
+</li><li>
+As above, but start by reading from a file with index 100 in the sequence:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -framerate 10 -start_number 100 -i 'img-%03d.jpeg' out.mkv
+</pre></td></tr></table>
+
+</li><li>
+Read images matching the &quot;*.png&quot; glob pattern , that is all the files
+terminating with the &quot;.png&quot; suffix:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -framerate 10 -pattern_type glob -i &quot;*.png&quot; out.mkv
+</pre></td></tr></table>
+</li></ul>
+
+<a name="mpegts-1"></a>
+<h2 class="section"><a href="ffmpeg-formats.html#toc-mpegts-1">3.8 mpegts</a></h2>
+
+<p>MPEG-2 transport stream demuxer.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>fix_teletext_pts</samp>&rsquo;</dt>
+<dd><p>Overrides teletext packet PTS and DTS values with the timestamps calculated
+from the PCR of the first program which the teletext stream is part of and is
+not discarded. Default value is 1, set this option to 0 if you want your
+teletext packet PTS and DTS values untouched.
+</p></dd>
+</dl>
+
+<a name="rawvideo"></a>
+<h2 class="section"><a href="ffmpeg-formats.html#toc-rawvideo">3.9 rawvideo</a></h2>
+
+<p>Raw video demuxer.
+</p>
+<p>This demuxer allows to read raw video data. Since there is no header
+specifying the assumed video parameters, the user must specify them
+in order to be able to decode the data correctly.
+</p>
+<p>This demuxer accepts the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>framerate</samp>&rsquo;</dt>
+<dd><p>Set input video frame rate. Default value is 25.
+</p>
+</dd>
+<dt> &lsquo;<samp>pixel_format</samp>&rsquo;</dt>
+<dd><p>Set the input video pixel format. Default value is <code>yuv420p</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>video_size</samp>&rsquo;</dt>
+<dd><p>Set the input video size. This value must be specified explicitly.
+</p></dd>
+</dl>
+
+<p>For example to read a rawvideo file &lsquo;<tt>input.raw</tt>&rsquo; with
+<code>ffplay</code>, assuming a pixel format of <code>rgb24</code>, a video
+size of <code>320x240</code>, and a frame rate of 10 images per second, use
+the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f rawvideo -pixel_format rgb24 -video_size 320x240 -framerate 10 input.raw
+</pre></td></tr></table>
+
+<a name="sbg"></a>
+<h2 class="section"><a href="ffmpeg-formats.html#toc-sbg">3.10 sbg</a></h2>
+
+<p>SBaGen script demuxer.
+</p>
+<p>This demuxer reads the script language used by SBaGen
+<a href="http://uazu.net/sbagen/">http://uazu.net/sbagen/</a> to generate binaural beats sessions. A SBG
+script looks like that:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">-SE
+a: 300-2.5/3 440+4.5/0
+b: 300-2.5/0 440+4.5/3
+off: -
+NOW      == a
++0:07:00 == b
++0:14:00 == a
++0:21:00 == b
++0:30:00    off
+</pre></td></tr></table>
+
+<p>A SBG script can mix absolute and relative timestamps. If the script uses
+either only absolute timestamps (including the script start time) or only
+relative ones, then its layout is fixed, and the conversion is
+straightforward. On the other hand, if the script mixes both kind of
+timestamps, then the <var>NOW</var> reference for relative timestamps will be
+taken from the current time of day at the time the script is read, and the
+script layout will be frozen according to that reference. That means that if
+the script is directly played, the actual times will match the absolute
+timestamps up to the sound controller&rsquo;s clock accuracy, but if the user
+somehow pauses the playback or seeks, all times will be shifted accordingly.
+</p>
+<a name="tedcaptions"></a>
+<h2 class="section"><a href="ffmpeg-formats.html#toc-tedcaptions">3.11 tedcaptions</a></h2>
+
+<p>JSON captions used for <a href="http://www.ted.com/">TED Talks</a>.
+</p>
+<p>TED does not provide links to the captions, but they can be guessed from the
+page. The file &lsquo;<tt>tools/bookmarklets.html</tt>&rsquo; from the FFmpeg source tree
+contains a bookmarklet to expose them.
+</p>
+<p>This demuxer accepts the following option:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>start_time</samp>&rsquo;</dt>
+<dd><p>Set the start time of the TED talk, in milliseconds. The default is 15000
+(15s). It is used to sync the captions with the downloadable videos, because
+they include a 15s intro.
+</p></dd>
+</dl>
+
+<p>Example: convert the captions to a format most players understand:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i http://www.ted.com/talks/subtitles/id/1/lang/en talk1-en.srt
+</pre></td></tr></table>
+
+<a name="Muxers"></a>
+<h1 class="chapter"><a href="ffmpeg-formats.html#toc-Muxers">4. Muxers</a></h1>
+
+<p>Muxers are configured elements in FFmpeg which allow writing
+multimedia streams to a particular type of file.
+</p>
+<p>When you configure your FFmpeg build, all the supported muxers
+are enabled by default. You can list all available muxers using the
+configure option <code>--list-muxers</code>.
+</p>
+<p>You can disable all the muxers with the configure option
+<code>--disable-muxers</code> and selectively enable / disable single muxers
+with the options <code>--enable-muxer=<var>MUXER</var></code> /
+<code>--disable-muxer=<var>MUXER</var></code>.
+</p>
+<p>The option <code>-formats</code> of the ff* tools will display the list of
+enabled muxers.
+</p>
+<p>A description of some of the currently available muxers follows.
+</p>
+<p><a name="aiff"></a>
+</p><a name="aiff-1"></a>
+<h2 class="section"><a href="ffmpeg-formats.html#toc-aiff-1">4.1 aiff</a></h2>
+
+<p>Audio Interchange File Format muxer.
+</p>
+<p>It accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>write_id3v2</samp>&rsquo;</dt>
+<dd><p>Enable ID3v2 tags writing when set to 1. Default is 0 (disabled).
+</p>
+</dd>
+<dt> &lsquo;<samp>id3v2_version</samp>&rsquo;</dt>
+<dd><p>Select ID3v2 version to write. Currently only version 3 and 4 (aka.
+ID3v2.3 and ID3v2.4) are supported. The default is version 4.
+</p>
+</dd>
+</dl>
+
+<p><a name="crc"></a>
+</p><a name="crc-1"></a>
+<h2 class="section"><a href="ffmpeg-formats.html#toc-crc-1">4.2 crc</a></h2>
+
+<p>CRC (Cyclic Redundancy Check) testing format.
+</p>
+<p>This muxer computes and prints the Adler-32 CRC of all the input audio
+and video frames. By default audio frames are converted to signed
+16-bit raw audio and video frames to raw video before computing the
+CRC.
+</p>
+<p>The output of the muxer consists of a single line of the form:
+CRC=0x<var>CRC</var>, where <var>CRC</var> is a hexadecimal number 0-padded to
+8 digits containing the CRC for all the decoded input frames.
+</p>
+<p>For example to compute the CRC of the input, and store it in the file
+&lsquo;<tt>out.crc</tt>&rsquo;:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f crc out.crc
+</pre></td></tr></table>
+
+<p>You can print the CRC to stdout with the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f crc -
+</pre></td></tr></table>
+
+<p>You can select the output format of each frame with <code>ffmpeg</code> by
+specifying the audio and video codec and format. For example to
+compute the CRC of the input audio converted to PCM unsigned 8-bit
+and the input video converted to MPEG-2 video, use the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -c:a pcm_u8 -c:v mpeg2video -f crc -
+</pre></td></tr></table>
+
+<p>See also the <a href="#framecrc">framecrc</a> muxer.
+</p>
+<p><a name="framecrc"></a>
+</p><a name="framecrc-1"></a>
+<h2 class="section"><a href="ffmpeg-formats.html#toc-framecrc-1">4.3 framecrc</a></h2>
+
+<p>Per-packet CRC (Cyclic Redundancy Check) testing format.
+</p>
+<p>This muxer computes and prints the Adler-32 CRC for each audio
+and video packet. By default audio frames are converted to signed
+16-bit raw audio and video frames to raw video before computing the
+CRC.
+</p>
+<p>The output of the muxer consists of a line for each audio and video
+packet of the form:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>stream_index</var>, <var>packet_dts</var>, <var>packet_pts</var>, <var>packet_duration</var>, <var>packet_size</var>, 0x<var>CRC</var>
+</pre></td></tr></table>
+
+<p><var>CRC</var> is a hexadecimal number 0-padded to 8 digits containing the
+CRC of the packet.
+</p>
+<p>For example to compute the CRC of the audio and video frames in
+&lsquo;<tt>INPUT</tt>&rsquo;, converted to raw audio and video packets, and store it
+in the file &lsquo;<tt>out.crc</tt>&rsquo;:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f framecrc out.crc
+</pre></td></tr></table>
+
+<p>To print the information to stdout, use the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f framecrc -
+</pre></td></tr></table>
+
+<p>With <code>ffmpeg</code>, you can select the output format to which the
+audio and video frames are encoded before computing the CRC for each
+packet by specifying the audio and video codec. For example, to
+compute the CRC of each decoded input audio frame converted to PCM
+unsigned 8-bit and of each decoded input video frame converted to
+MPEG-2 video, use the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -c:a pcm_u8 -c:v mpeg2video -f framecrc -
+</pre></td></tr></table>
+
+<p>See also the <a href="#crc">crc</a> muxer.
+</p>
+<p><a name="framemd5"></a>
+</p><a name="framemd5-1"></a>
+<h2 class="section"><a href="ffmpeg-formats.html#toc-framemd5-1">4.4 framemd5</a></h2>
+
+<p>Per-packet MD5 testing format.
+</p>
+<p>This muxer computes and prints the MD5 hash for each audio
+and video packet. By default audio frames are converted to signed
+16-bit raw audio and video frames to raw video before computing the
+hash.
+</p>
+<p>The output of the muxer consists of a line for each audio and video
+packet of the form:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>stream_index</var>, <var>packet_dts</var>, <var>packet_pts</var>, <var>packet_duration</var>, <var>packet_size</var>, <var>MD5</var>
+</pre></td></tr></table>
+
+<p><var>MD5</var> is a hexadecimal number representing the computed MD5 hash
+for the packet.
+</p>
+<p>For example to compute the MD5 of the audio and video frames in
+&lsquo;<tt>INPUT</tt>&rsquo;, converted to raw audio and video packets, and store it
+in the file &lsquo;<tt>out.md5</tt>&rsquo;:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f framemd5 out.md5
+</pre></td></tr></table>
+
+<p>To print the information to stdout, use the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f framemd5 -
+</pre></td></tr></table>
+
+<p>See also the <a href="#md5">md5</a> muxer.
+</p>
+<p><a name="gif"></a>
+</p><a name="gif-1"></a>
+<h2 class="section"><a href="ffmpeg-formats.html#toc-gif-1">4.5 gif</a></h2>
+
+<p>Animated GIF muxer.
+</p>
+<p>It accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>loop</samp>&rsquo;</dt>
+<dd><p>Set the number of times to loop the output. Use <code>-1</code> for no loop, <code>0</code>
+for looping indefinitely (default).
+</p>
+</dd>
+<dt> &lsquo;<samp>final_delay</samp>&rsquo;</dt>
+<dd><p>Force the delay (expressed in centiseconds) after the last frame. Each frame
+ends with a delay until the next frame. The default is <code>-1</code>, which is a
+special value to tell the muxer to re-use the previous delay. In case of a
+loop, you might want to customize this value to mark a pause for instance.
+</p></dd>
+</dl>
+
+<p>For example, to encode a gif looping 10 times, with a 5 seconds delay between
+the loops:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -loop 10 -final_delay 500 out.gif
+</pre></td></tr></table>
+
+<p>Note 1: if you wish to extract the frames in separate GIF files, you need to
+force the <a href="#image2">image2</a> muxer:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -c:v gif -f image2 &quot;out%d.gif&quot;
+</pre></td></tr></table>
+
+<p>Note 2: the GIF format has a very small time base: the delay between two frames
+can not be smaller than one centi second.
+</p>
+<p><a name="hls"></a>
+</p><a name="hls-1"></a>
+<h2 class="section"><a href="ffmpeg-formats.html#toc-hls-1">4.6 hls</a></h2>
+
+<p>Apple HTTP Live Streaming muxer that segments MPEG-TS according to
+the HTTP Live Streaming specification.
+</p>
+<p>It creates a playlist file and numbered segment files. The output
+filename specifies the playlist filename; the segment filenames
+receive the same basename as the playlist, a sequential number and
+a .ts extension.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.nut out.m3u8
+</pre></td></tr></table>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-hls_time <var>seconds</var></samp>&rsquo;</dt>
+<dd><p>Set the segment length in seconds.
+</p></dd>
+<dt> &lsquo;<samp>-hls_list_size <var>size</var></samp>&rsquo;</dt>
+<dd><p>Set the maximum number of playlist entries.
+</p></dd>
+<dt> &lsquo;<samp>-hls_wrap <var>wrap</var></samp>&rsquo;</dt>
+<dd><p>Set the number after which index wraps.
+</p></dd>
+<dt> &lsquo;<samp>-start_number <var>number</var></samp>&rsquo;</dt>
+<dd><p>Start the sequence from <var>number</var>.
+</p></dd>
+</dl>
+
+<p><a name="ico"></a>
+</p><a name="ico-1"></a>
+<h2 class="section"><a href="ffmpeg-formats.html#toc-ico-1">4.7 ico</a></h2>
+
+<p>ICO file muxer.
+</p>
+<p>Microsoft&rsquo;s icon file format (ICO) has some strict limitations that should be noted:
+</p>
+<ul>
+<li>
+Size cannot exceed 256 pixels in any dimension
+
+</li><li>
+Only BMP and PNG images can be stored
+
+</li><li>
+If a BMP image is used, it must be one of the following pixel formats:
+<table><tr><td>&nbsp;</td><td><pre class="example">BMP Bit Depth      FFmpeg Pixel Format
+1bit               pal8
+4bit               pal8
+8bit               pal8
+16bit              rgb555le
+24bit              bgr24
+32bit              bgra
+</pre></td></tr></table>
+
+</li><li>
+If a BMP image is used, it must use the BITMAPINFOHEADER DIB header
+
+</li><li>
+If a PNG image is used, it must use the rgba pixel format
+</li></ul>
+
+<p><a name="image2"></a>
+</p><a name="image2-1"></a>
+<h2 class="section"><a href="ffmpeg-formats.html#toc-image2-1">4.8 image2</a></h2>
+
+<p>Image file muxer.
+</p>
+<p>The image file muxer writes video frames to image files.
+</p>
+<p>The output filenames are specified by a pattern, which can be used to
+produce sequentially numbered series of files.
+The pattern may contain the string &quot;%d&quot; or &quot;%0<var>N</var>d&quot;, this string
+specifies the position of the characters representing a numbering in
+the filenames. If the form &quot;%0<var>N</var>d&quot; is used, the string
+representing the number in each filename is 0-padded to <var>N</var>
+digits. The literal character &rsquo;%&rsquo; can be specified in the pattern with
+the string &quot;%%&quot;.
+</p>
+<p>If the pattern contains &quot;%d&quot; or &quot;%0<var>N</var>d&quot;, the first filename of
+the file list specified will contain the number 1, all the following
+numbers will be sequential.
+</p>
+<p>The pattern may contain a suffix which is used to automatically
+determine the format of the image files to write.
+</p>
+<p>For example the pattern &quot;img-%03d.bmp&quot; will specify a sequence of
+filenames of the form &lsquo;<tt>img-001.bmp</tt>&rsquo;, &lsquo;<tt>img-002.bmp</tt>&rsquo;, ...,
+&lsquo;<tt>img-010.bmp</tt>&rsquo;, etc.
+The pattern &quot;img%%-%d.jpg&quot; will specify a sequence of filenames of the
+form &lsquo;<tt>img%-1.jpg</tt>&rsquo;, &lsquo;<tt>img%-2.jpg</tt>&rsquo;, ..., &lsquo;<tt>img%-10.jpg</tt>&rsquo;,
+etc.
+</p>
+<p>The following example shows how to use <code>ffmpeg</code> for creating a
+sequence of files &lsquo;<tt>img-001.jpeg</tt>&rsquo;, &lsquo;<tt>img-002.jpeg</tt>&rsquo;, ...,
+taking one image every second from the input video:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -vsync 1 -r 1 -f image2 'img-%03d.jpeg'
+</pre></td></tr></table>
+
+<p>Note that with <code>ffmpeg</code>, if the format is not specified with the
+<code>-f</code> option and the output filename specifies an image file
+format, the image2 muxer is automatically selected, so the previous
+command can be written as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -vsync 1 -r 1 'img-%03d.jpeg'
+</pre></td></tr></table>
+
+<p>Note also that the pattern must not necessarily contain &quot;%d&quot; or
+&quot;%0<var>N</var>d&quot;, for example to create a single image file
+&lsquo;<tt>img.jpeg</tt>&rsquo; from the input video you can employ the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -f image2 -frames:v 1 img.jpeg
+</pre></td></tr></table>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>start_number <var>number</var></samp>&rsquo;</dt>
+<dd><p>Start the sequence from <var>number</var>. Default value is 1. Must be a
+non-negative number.
+</p>
+</dd>
+<dt> &lsquo;<samp>-update <var>number</var></samp>&rsquo;</dt>
+<dd><p>If <var>number</var> is nonzero, the filename will always be interpreted as just a
+filename, not a pattern, and this file will be continuously overwritten with new
+images.
+</p>
+</dd>
+</dl>
+
+<p>The image muxer supports the .Y.U.V image file format. This format is
+special in that that each image frame consists of three files, for
+each of the YUV420P components. To read or write this image file format,
+specify the name of the &rsquo;.Y&rsquo; file. The muxer will automatically open the
+&rsquo;.U&rsquo; and &rsquo;.V&rsquo; files as required.
+</p>
+<a name="matroska"></a>
+<h2 class="section"><a href="ffmpeg-formats.html#toc-matroska">4.9 matroska</a></h2>
+
+<p>Matroska container muxer.
+</p>
+<p>This muxer implements the matroska and webm container specs.
+</p>
+<p>The recognized metadata settings in this muxer are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>title=<var>title name</var></samp>&rsquo;</dt>
+<dd><p>Name provided to a single track
+</p></dd>
+</dl>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>language=<var>language name</var></samp>&rsquo;</dt>
+<dd><p>Specifies the language of the track in the Matroska languages form
+</p></dd>
+</dl>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>stereo_mode=<var>mode</var></samp>&rsquo;</dt>
+<dd><p>Stereo 3D video layout of two views in a single video track
+</p><dl compact="compact">
+<dt> &lsquo;<samp>mono</samp>&rsquo;</dt>
+<dd><p>video is not stereo
+</p></dd>
+<dt> &lsquo;<samp>left_right</samp>&rsquo;</dt>
+<dd><p>Both views are arranged side by side, Left-eye view is on the left
+</p></dd>
+<dt> &lsquo;<samp>bottom_top</samp>&rsquo;</dt>
+<dd><p>Both views are arranged in top-bottom orientation, Left-eye view is at bottom
+</p></dd>
+<dt> &lsquo;<samp>top_bottom</samp>&rsquo;</dt>
+<dd><p>Both views are arranged in top-bottom orientation, Left-eye view is on top
+</p></dd>
+<dt> &lsquo;<samp>checkerboard_rl</samp>&rsquo;</dt>
+<dd><p>Each view is arranged in a checkerboard interleaved pattern, Left-eye view being first
+</p></dd>
+<dt> &lsquo;<samp>checkerboard_lr</samp>&rsquo;</dt>
+<dd><p>Each view is arranged in a checkerboard interleaved pattern, Right-eye view being first
+</p></dd>
+<dt> &lsquo;<samp>row_interleaved_rl</samp>&rsquo;</dt>
+<dd><p>Each view is constituted by a row based interleaving, Right-eye view is first row
+</p></dd>
+<dt> &lsquo;<samp>row_interleaved_lr</samp>&rsquo;</dt>
+<dd><p>Each view is constituted by a row based interleaving, Left-eye view is first row
+</p></dd>
+<dt> &lsquo;<samp>col_interleaved_rl</samp>&rsquo;</dt>
+<dd><p>Both views are arranged in a column based interleaving manner, Right-eye view is first column
+</p></dd>
+<dt> &lsquo;<samp>col_interleaved_lr</samp>&rsquo;</dt>
+<dd><p>Both views are arranged in a column based interleaving manner, Left-eye view is first column
+</p></dd>
+<dt> &lsquo;<samp>anaglyph_cyan_red</samp>&rsquo;</dt>
+<dd><p>All frames are in anaglyph format viewable through red-cyan filters
+</p></dd>
+<dt> &lsquo;<samp>right_left</samp>&rsquo;</dt>
+<dd><p>Both views are arranged side by side, Right-eye view is on the left
+</p></dd>
+<dt> &lsquo;<samp>anaglyph_green_magenta</samp>&rsquo;</dt>
+<dd><p>All frames are in anaglyph format viewable through green-magenta filters
+</p></dd>
+<dt> &lsquo;<samp>block_lr</samp>&rsquo;</dt>
+<dd><p>Both eyes laced in one Block, Left-eye view is first
+</p></dd>
+<dt> &lsquo;<samp>block_rl</samp>&rsquo;</dt>
+<dd><p>Both eyes laced in one Block, Right-eye view is first
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<p>For example a 3D WebM clip can be created using the following command line:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i sample_left_right_clip.mpg -an -c:v libvpx -metadata stereo_mode=left_right -y stereo_clip.webm
+</pre></td></tr></table>
+
+<p>This muxer supports the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>reserve_index_space</samp>&rsquo;</dt>
+<dd><p>By default, this muxer writes the index for seeking (called cues in Matroska
+terms) at the end of the file, because it cannot know in advance how much space
+to leave for the index at the beginning of the file. However for some use cases
+&ndash; e.g.  streaming where seeking is possible but slow &ndash; it is useful to put the
+index at the beginning of the file.
+</p>
+<p>If this option is set to a non-zero value, the muxer will reserve a given amount
+of space in the file header and then try to write the cues there when the muxing
+finishes. If the available space does not suffice, muxing will fail. A safe size
+for most use cases should be about 50kB per hour of video.
+</p>
+<p>Note that cues are only written if the output is seekable and this option will
+have no effect if it is not.
+</p>
+</dd>
+</dl>
+
+<p><a name="md5"></a>
+</p><a name="md5-1"></a>
+<h2 class="section"><a href="ffmpeg-formats.html#toc-md5-1">4.10 md5</a></h2>
+
+<p>MD5 testing format.
+</p>
+<p>This muxer computes and prints the MD5 hash of all the input audio
+and video frames. By default audio frames are converted to signed
+16-bit raw audio and video frames to raw video before computing the
+hash.
+</p>
+<p>The output of the muxer consists of a single line of the form:
+MD5=<var>MD5</var>, where <var>MD5</var> is a hexadecimal number representing
+the computed MD5 hash.
+</p>
+<p>For example to compute the MD5 hash of the input converted to raw
+audio and video, and store it in the file &lsquo;<tt>out.md5</tt>&rsquo;:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f md5 out.md5
+</pre></td></tr></table>
+
+<p>You can print the MD5 to stdout with the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f md5 -
+</pre></td></tr></table>
+
+<p>See also the <a href="#framemd5">framemd5</a> muxer.
+</p>
+<a name="mov_002fmp4_002fismv"></a>
+<h2 class="section"><a href="ffmpeg-formats.html#toc-mov_002fmp4_002fismv">4.11 mov/mp4/ismv</a></h2>
+
+<p>MOV/MP4/ISMV (Smooth Streaming) muxer.
+</p>
+<p>The mov/mp4/ismv muxer supports fragmentation. Normally, a MOV/MP4
+file has all the metadata about all packets stored in one location
+(written at the end of the file, it can be moved to the start for
+better playback by adding <var>faststart</var> to the <var>movflags</var>, or
+using the <code>qt-faststart</code> tool). A fragmented
+file consists of a number of fragments, where packets and metadata
+about these packets are stored together. Writing a fragmented
+file has the advantage that the file is decodable even if the
+writing is interrupted (while a normal MOV/MP4 is undecodable if
+it is not properly finished), and it requires less memory when writing
+very long files (since writing normal MOV/MP4 files stores info about
+every single packet in memory until the file is closed). The downside
+is that it is less compatible with other applications.
+</p>
+<p>Fragmentation is enabled by setting one of the AVOptions that define
+how to cut the file into fragments:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-moov_size <var>bytes</var></samp>&rsquo;</dt>
+<dd><p>Reserves space for the moov atom at the beginning of the file instead of placing the
+moov atom at the end. If the space reserved is insufficient, muxing will fail.
+</p></dd>
+<dt> &lsquo;<samp>-movflags frag_keyframe</samp>&rsquo;</dt>
+<dd><p>Start a new fragment at each video keyframe.
+</p></dd>
+<dt> &lsquo;<samp>-frag_duration <var>duration</var></samp>&rsquo;</dt>
+<dd><p>Create fragments that are <var>duration</var> microseconds long.
+</p></dd>
+<dt> &lsquo;<samp>-frag_size <var>size</var></samp>&rsquo;</dt>
+<dd><p>Create fragments that contain up to <var>size</var> bytes of payload data.
+</p></dd>
+<dt> &lsquo;<samp>-movflags frag_custom</samp>&rsquo;</dt>
+<dd><p>Allow the caller to manually choose when to cut fragments, by
+calling <code>av_write_frame(ctx, NULL)</code> to write a fragment with
+the packets written so far. (This is only useful with other
+applications integrating libavformat, not from <code>ffmpeg</code>.)
+</p></dd>
+<dt> &lsquo;<samp>-min_frag_duration <var>duration</var></samp>&rsquo;</dt>
+<dd><p>Don&rsquo;t create fragments that are shorter than <var>duration</var> microseconds long.
+</p></dd>
+</dl>
+
+<p>If more than one condition is specified, fragments are cut when
+one of the specified conditions is fulfilled. The exception to this is
+<code>-min_frag_duration</code>, which has to be fulfilled for any of the other
+conditions to apply.
+</p>
+<p>Additionally, the way the output file is written can be adjusted
+through a few other options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-movflags empty_moov</samp>&rsquo;</dt>
+<dd><p>Write an initial moov atom directly at the start of the file, without
+describing any samples in it. Generally, an mdat/moov pair is written
+at the start of the file, as a normal MOV/MP4 file, containing only
+a short portion of the file. With this option set, there is no initial
+mdat atom, and the moov atom only describes the tracks but has
+a zero duration.
+</p>
+<p>Files written with this option set do not work in QuickTime.
+This option is implicitly set when writing ismv (Smooth Streaming) files.
+</p></dd>
+<dt> &lsquo;<samp>-movflags separate_moof</samp>&rsquo;</dt>
+<dd><p>Write a separate moof (movie fragment) atom for each track. Normally,
+packets for all tracks are written in a moof atom (which is slightly
+more efficient), but with this option set, the muxer writes one moof/mdat
+pair for each track, making it easier to separate tracks.
+</p>
+<p>This option is implicitly set when writing ismv (Smooth Streaming) files.
+</p></dd>
+<dt> &lsquo;<samp>-movflags faststart</samp>&rsquo;</dt>
+<dd><p>Run a second pass moving the index (moov atom) to the beginning of the file.
+This operation can take a while, and will not work in various situations such
+as fragmented output, thus it is not enabled by default.
+</p></dd>
+<dt> &lsquo;<samp>-movflags rtphint</samp>&rsquo;</dt>
+<dd><p>Add RTP hinting tracks to the output file.
+</p></dd>
+</dl>
+
+<p>Smooth Streaming content can be pushed in real time to a publishing
+point on IIS with this muxer. Example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re <var>&lt;normal input/transcoding options&gt;</var> -movflags isml+frag_keyframe -f ismv http://server/publishingpoint.isml/Streams(Encoder1)
+</pre></td></tr></table>
+
+<a name="mp3"></a>
+<h2 class="section"><a href="ffmpeg-formats.html#toc-mp3">4.12 mp3</a></h2>
+
+<p>The MP3 muxer writes a raw MP3 stream with an ID3v2 header at the beginning and
+optionally an ID3v1 tag at the end. ID3v2.3 and ID3v2.4 are supported, the
+<code>id3v2_version</code> option controls which one is used. The legacy ID3v1 tag is
+not written by default, but may be enabled with the <code>write_id3v1</code> option.
+</p>
+<p>For seekable output the muxer also writes a Xing frame at the beginning, which
+contains the number of frames in the file. It is useful for computing duration
+of VBR files.
+</p>
+<p>The muxer supports writing ID3v2 attached pictures (APIC frames). The pictures
+are supplied to the muxer in form of a video stream with a single packet. There
+can be any number of those streams, each will correspond to a single APIC frame.
+The stream metadata tags <var>title</var> and <var>comment</var> map to APIC
+<var>description</var> and <var>picture type</var> respectively. See
+<a href="http://id3.org/id3v2.4.0-frames">http://id3.org/id3v2.4.0-frames</a> for allowed picture types.
+</p>
+<p>Note that the APIC frames must be written at the beginning, so the muxer will
+buffer the audio frames until it gets all the pictures. It is therefore advised
+to provide the pictures as soon as possible to avoid excessive buffering.
+</p>
+<p>Examples:
+</p>
+<p>Write an mp3 with an ID3v2.3 header and an ID3v1 footer:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -id3v2_version 3 -write_id3v1 1 out.mp3
+</pre></td></tr></table>
+
+<p>To attach a picture to an mp3 file select both the audio and the picture stream
+with <code>map</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.mp3 -i cover.png -c copy -map 0 -map 1
+-metadata:s:v title=&quot;Album cover&quot; -metadata:s:v comment=&quot;Cover (Front)&quot; out.mp3
+</pre></td></tr></table>
+
+<a name="mpegts"></a>
+<h2 class="section"><a href="ffmpeg-formats.html#toc-mpegts">4.13 mpegts</a></h2>
+
+<p>MPEG transport stream muxer.
+</p>
+<p>This muxer implements ISO 13818-1 and part of ETSI EN 300 468.
+</p>
+<p>The muxer options are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-mpegts_original_network_id <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set the original_network_id (default 0x0001). This is unique identifier
+of a network in DVB. Its main use is in the unique identification of a
+service through the path Original_Network_ID, Transport_Stream_ID.
+</p></dd>
+<dt> &lsquo;<samp>-mpegts_transport_stream_id <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set the transport_stream_id (default 0x0001). This identifies a
+transponder in DVB.
+</p></dd>
+<dt> &lsquo;<samp>-mpegts_service_id <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set the service_id (default 0x0001) also known as program in DVB.
+</p></dd>
+<dt> &lsquo;<samp>-mpegts_pmt_start_pid <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set the first PID for PMT (default 0x1000, max 0x1f00).
+</p></dd>
+<dt> &lsquo;<samp>-mpegts_start_pid <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set the first PID for data packets (default 0x0100, max 0x0f00).
+</p></dd>
+<dt> &lsquo;<samp>-mpegts_m2ts_mode <var>number</var></samp>&rsquo;</dt>
+<dd><p>Enable m2ts mode if set to 1. Default value is -1 which disables m2ts mode.
+</p></dd>
+<dt> &lsquo;<samp>-muxrate <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set muxrate.
+</p></dd>
+<dt> &lsquo;<samp>-pes_payload_size <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set minimum PES packet payload in bytes.
+</p></dd>
+<dt> &lsquo;<samp>-mpegts_flags <var>flags</var></samp>&rsquo;</dt>
+<dd><p>Set flags (see below).
+</p></dd>
+<dt> &lsquo;<samp>-mpegts_copyts <var>number</var></samp>&rsquo;</dt>
+<dd><p>Preserve original timestamps, if value is set to 1. Default value is -1, which
+results in shifting timestamps so that they start from 0.
+</p></dd>
+<dt> &lsquo;<samp>-tables_version <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set PAT, PMT and SDT version (default 0, valid values are from 0 to 31, inclusively).
+This option allows updating stream structure so that standard consumer may
+detect the change. To do so, reopen output AVFormatContext (in case of API
+usage) or restart ffmpeg instance, cyclically changing tables_version value:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i source1.ts -codec copy -f mpegts -tables_version 0 udp://1.1.1.1:1111
+ffmpeg -i source2.ts -codec copy -f mpegts -tables_version 1 udp://1.1.1.1:1111
+...
+ffmpeg -i source3.ts -codec copy -f mpegts -tables_version 31 udp://1.1.1.1:1111
+ffmpeg -i source1.ts -codec copy -f mpegts -tables_version 0 udp://1.1.1.1:1111
+ffmpeg -i source2.ts -codec copy -f mpegts -tables_version 1 udp://1.1.1.1:1111
+...
+</pre></td></tr></table>
+</dd>
+</dl>
+
+<p>Option mpegts_flags may take a set of such flags:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>resend_headers</samp>&rsquo;</dt>
+<dd><p>Reemit PAT/PMT before writing the next packet.
+</p></dd>
+<dt> &lsquo;<samp>latm</samp>&rsquo;</dt>
+<dd><p>Use LATM packetization for AAC.
+</p></dd>
+</dl>
+
+<p>The recognized metadata settings in mpegts muxer are <code>service_provider</code>
+and <code>service_name</code>. If they are not set the default for
+<code>service_provider</code> is &quot;FFmpeg&quot; and the default for
+<code>service_name</code> is &quot;Service01&quot;.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i file.mpg -c copy \
+     -mpegts_original_network_id 0x1122 \
+     -mpegts_transport_stream_id 0x3344 \
+     -mpegts_service_id 0x5566 \
+     -mpegts_pmt_start_pid 0x1500 \
+     -mpegts_start_pid 0x150 \
+     -metadata service_provider=&quot;Some provider&quot; \
+     -metadata service_name=&quot;Some Channel&quot; \
+     -y out.ts
+</pre></td></tr></table>
+
+<a name="null"></a>
+<h2 class="section"><a href="ffmpeg-formats.html#toc-null">4.14 null</a></h2>
+
+<p>Null muxer.
+</p>
+<p>This muxer does not generate any output file, it is mainly useful for
+testing or benchmarking purposes.
+</p>
+<p>For example to benchmark decoding with <code>ffmpeg</code> you can use the
+command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -benchmark -i INPUT -f null out.null
+</pre></td></tr></table>
+
+<p>Note that the above command does not read or write the &lsquo;<tt>out.null</tt>&rsquo;
+file, but specifying the output file is required by the <code>ffmpeg</code>
+syntax.
+</p>
+<p>Alternatively you can write the command as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -benchmark -i INPUT -f null -
+</pre></td></tr></table>
+
+<a name="ogg"></a>
+<h2 class="section"><a href="ffmpeg-formats.html#toc-ogg">4.15 ogg</a></h2>
+
+<p>Ogg container muxer.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-page_duration <var>duration</var></samp>&rsquo;</dt>
+<dd><p>Preferred page duration, in microseconds. The muxer will attempt to create
+pages that are approximately <var>duration</var> microseconds long. This allows the
+user to compromise between seek granularity and container overhead. The default
+is 1 second. A value of 0 will fill all segments, making pages as large as
+possible. A value of 1 will effectively use 1 packet-per-page in most
+situations, giving a small seek granularity at the cost of additional container
+overhead.
+</p></dd>
+</dl>
+
+<a name="segment_002c-stream_005fsegment_002c-ssegment"></a>
+<h2 class="section"><a href="ffmpeg-formats.html#toc-segment_002c-stream_005fsegment_002c-ssegment">4.16 segment, stream_segment, ssegment</a></h2>
+
+<p>Basic stream segmenter.
+</p>
+<p>The segmenter muxer outputs streams to a number of separate files of nearly
+fixed duration. Output filename pattern can be set in a fashion similar to
+<a href="#image2">image2</a>.
+</p>
+<p><code>stream_segment</code> is a variant of the muxer used to write to
+streaming output formats, i.e. which do not require global headers,
+and is recommended for outputting e.g. to MPEG transport stream segments.
+<code>ssegment</code> is a shorter alias for <code>stream_segment</code>.
+</p>
+<p>Every segment starts with a keyframe of the selected reference stream,
+which is set through the &lsquo;<samp>reference_stream</samp>&rsquo; option.
+</p>
+<p>Note that if you want accurate splitting for a video file, you need to
+make the input key frames correspond to the exact splitting times
+expected by the segmenter, or the segment muxer will start the new
+segment with the key frame found next after the specified start
+time.
+</p>
+<p>The segment muxer works best with a single constant frame rate video.
+</p>
+<p>Optionally it can generate a list of the created segments, by setting
+the option <var>segment_list</var>. The list type is specified by the
+<var>segment_list_type</var> option. The entry filenames in the segment
+list are set by default to the basename of the corresponding segment
+files.
+</p>
+<p>The segment muxer supports the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>reference_stream <var>specifier</var></samp>&rsquo;</dt>
+<dd><p>Set the reference stream, as specified by the string <var>specifier</var>.
+If <var>specifier</var> is set to <code>auto</code>, the reference is choosen
+automatically. Otherwise it must be a stream specifier (see the &ldquo;Stream
+specifiers&rdquo; chapter in the ffmpeg manual) which specifies the
+reference stream. The default value is <code>auto</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_format <var>format</var></samp>&rsquo;</dt>
+<dd><p>Override the inner container format, by default it is guessed by the filename
+extension.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_list <var>name</var></samp>&rsquo;</dt>
+<dd><p>Generate also a listfile named <var>name</var>. If not specified no
+listfile is generated.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_list_flags <var>flags</var></samp>&rsquo;</dt>
+<dd><p>Set flags affecting the segment list generation.
+</p>
+<p>It currently supports the following flags:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>cache</samp>&rsquo;</dt>
+<dd><p>Allow caching (only affects M3U8 list files).
+</p>
+</dd>
+<dt> &lsquo;<samp>live</samp>&rsquo;</dt>
+<dd><p>Allow live-friendly file generation.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>segment_list_size <var>size</var></samp>&rsquo;</dt>
+<dd><p>Update the list file so that it contains at most the last <var>size</var>
+segments. If 0 the list file will contain all the segments. Default
+value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_list_entry_prefix <var>prefix</var></samp>&rsquo;</dt>
+<dd><p>Set <var>prefix</var> to prepend to the name of each entry filename. By
+default no prefix is applied.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_list_type <var>type</var></samp>&rsquo;</dt>
+<dd><p>Specify the format for the segment list file.
+</p>
+<p>The following values are recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>flat</samp>&rsquo;</dt>
+<dd><p>Generate a flat list for the created segments, one segment per line.
+</p>
+</dd>
+<dt> &lsquo;<samp>csv, ext</samp>&rsquo;</dt>
+<dd><p>Generate a list for the created segments, one segment per line,
+each line matching the format (comma-separated values):
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>segment_filename</var>,<var>segment_start_time</var>,<var>segment_end_time</var>
+</pre></td></tr></table>
+
+<p><var>segment_filename</var> is the name of the output file generated by the
+muxer according to the provided pattern. CSV escaping (according to
+RFC4180) is applied if required.
+</p>
+<p><var>segment_start_time</var> and <var>segment_end_time</var> specify
+the segment start and end time expressed in seconds.
+</p>
+<p>A list file with the suffix <code>&quot;.csv&quot;</code> or <code>&quot;.ext&quot;</code> will
+auto-select this format.
+</p>
+<p>&lsquo;<samp>ext</samp>&rsquo; is deprecated in favor or &lsquo;<samp>csv</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>ffconcat</samp>&rsquo;</dt>
+<dd><p>Generate an ffconcat file for the created segments. The resulting file
+can be read using the FFmpeg <a href="#concat">concat</a> demuxer.
+</p>
+<p>A list file with the suffix <code>&quot;.ffcat&quot;</code> or <code>&quot;.ffconcat&quot;</code> will
+auto-select this format.
+</p>
+</dd>
+<dt> &lsquo;<samp>m3u8</samp>&rsquo;</dt>
+<dd><p>Generate an extended M3U8 file, version 3, compliant with
+<a href="http://tools.ietf.org/id/draft-pantos-http-live-streaming">http://tools.ietf.org/id/draft-pantos-http-live-streaming</a>.
+</p>
+<p>A list file with the suffix <code>&quot;.m3u8&quot;</code> will auto-select this format.
+</p></dd>
+</dl>
+
+<p>If not specified the type is guessed from the list file name suffix.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_time <var>time</var></samp>&rsquo;</dt>
+<dd><p>Set segment duration to <var>time</var>, the value must be a duration
+specification. Default value is &quot;2&quot;. See also the
+&lsquo;<samp>segment_times</samp>&rsquo; option.
+</p>
+<p>Note that splitting may not be accurate, unless you force the
+reference stream key-frames at the given time. See the introductory
+notice and the examples below.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_time_delta <var>delta</var></samp>&rsquo;</dt>
+<dd><p>Specify the accuracy time when selecting the start time for a
+segment, expressed as a duration specification. Default value is &quot;0&quot;.
+</p>
+<p>When delta is specified a key-frame will start a new segment if its
+PTS satisfies the relation:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">PTS &gt;= start_time - time_delta
+</pre></td></tr></table>
+
+<p>This option is useful when splitting video content, which is always
+split at GOP boundaries, in case a key frame is found just before the
+specified split time.
+</p>
+<p>In particular may be used in combination with the &lsquo;<tt>ffmpeg</tt>&rsquo; option
+<var>force_key_frames</var>. The key frame times specified by
+<var>force_key_frames</var> may not be set accurately because of rounding
+issues, with the consequence that a key frame time may result set just
+before the specified time. For constant frame rate videos a value of
+1/2*<var>frame_rate</var> should address the worst case mismatch between
+the specified time and the time set by <var>force_key_frames</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_times <var>times</var></samp>&rsquo;</dt>
+<dd><p>Specify a list of split points. <var>times</var> contains a list of comma
+separated duration specifications, in increasing order. See also
+the &lsquo;<samp>segment_time</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_frames <var>frames</var></samp>&rsquo;</dt>
+<dd><p>Specify a list of split video frame numbers. <var>frames</var> contains a
+list of comma separated integer numbers, in increasing order.
+</p>
+<p>This option specifies to start a new segment whenever a reference
+stream key frame is found and the sequential number (starting from 0)
+of the frame is greater or equal to the next value in the list.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_wrap <var>limit</var></samp>&rsquo;</dt>
+<dd><p>Wrap around segment index once it reaches <var>limit</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_start_number <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set the sequence number of the first segment. Defaults to <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>reset_timestamps <var>1|0</var></samp>&rsquo;</dt>
+<dd><p>Reset timestamps at the begin of each segment, so that each segment
+will start with near-zero timestamps. It is meant to ease the playback
+of the generated segments. May not work with some combinations of
+muxers/codecs. It is set to <code>0</code> by default.
+</p>
+</dd>
+<dt> &lsquo;<samp>initial_offset <var>offset</var></samp>&rsquo;</dt>
+<dd><p>Specify timestamp offset to apply to the output packet timestamps. The
+argument must be a time duration specification, and defaults to 0.
+</p></dd>
+</dl>
+
+<a name="Examples"></a>
+<h3 class="subsection"><a href="ffmpeg-formats.html#toc-Examples">4.16.1 Examples</a></h3>
+
+<ul>
+<li>
+To remux the content of file &lsquo;<tt>in.mkv</tt>&rsquo; to a list of segments
+&lsquo;<tt>out-000.nut</tt>&rsquo;, &lsquo;<tt>out-001.nut</tt>&rsquo;, etc., and write the list of
+generated segments to &lsquo;<tt>out.list</tt>&rsquo;:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.mkv -codec copy -map 0 -f segment -segment_list out.list out%03d.nut
+</pre></td></tr></table>
+
+</li><li>
+As the example above, but segment the input file according to the split
+points specified by the <var>segment_times</var> option:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.mkv -codec copy -map 0 -f segment -segment_list out.csv -segment_times 1,2,3,5,8,13,21 out%03d.nut
+</pre></td></tr></table>
+
+</li><li>
+As the example above, but use the <code>ffmpeg</code> &lsquo;<samp>force_key_frames</samp>&rsquo;
+option to force key frames in the input at the specified location, together
+with the segment option &lsquo;<samp>segment_time_delta</samp>&rsquo; to account for
+possible roundings operated when setting key frame times.
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.mkv -force_key_frames 1,2,3,5,8,13,21 -codec:v mpeg4 -codec:a pcm_s16le -map 0 \
+-f segment -segment_list out.csv -segment_times 1,2,3,5,8,13,21 -segment_time_delta 0.05 out%03d.nut
+</pre></td></tr></table>
+<p>In order to force key frames on the input file, transcoding is
+required.
+</p>
+</li><li>
+Segment the input file by splitting the input file according to the
+frame numbers sequence specified with the &lsquo;<samp>segment_frames</samp>&rsquo; option:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.mkv -codec copy -map 0 -f segment -segment_list out.csv -segment_frames 100,200,300,500,800 out%03d.nut
+</pre></td></tr></table>
+
+</li><li>
+To convert the &lsquo;<tt>in.mkv</tt>&rsquo; to TS segments using the <code>libx264</code>
+and <code>libfaac</code> encoders:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.mkv -map 0 -codec:v libx264 -codec:a libfaac -f ssegment -segment_list out.list out%03d.ts
+</pre></td></tr></table>
+
+</li><li>
+Segment the input file, and create an M3U8 live playlist (can be used
+as live HLS source):
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i in.mkv -codec copy -map 0 -f segment -segment_list playlist.m3u8 \
+-segment_list_flags +live -segment_time 10 out%03d.mkv
+</pre></td></tr></table>
+</li></ul>
+
+<a name="tee"></a>
+<h2 class="section"><a href="ffmpeg-formats.html#toc-tee">4.17 tee</a></h2>
+
+<p>The tee muxer can be used to write the same data to several files or any
+other kind of muxer. It can be used, for example, to both stream a video to
+the network and save it to disk at the same time.
+</p>
+<p>It is different from specifying several outputs to the <code>ffmpeg</code>
+command-line tool because the audio and video data will be encoded only once
+with the tee muxer; encoding can be a very expensive process. It is not
+useful when using the libavformat API directly because it is then possible
+to feed the same packets to several muxers directly.
+</p>
+<p>The slave outputs are specified in the file name given to the muxer,
+separated by &rsquo;|&rsquo;. If any of the slave name contains the &rsquo;|&rsquo; separator,
+leading or trailing spaces or any special character, it must be
+escaped (see the &ldquo;Quoting and escaping&rdquo; section in the ffmpeg-utils
+manual).
+</p>
+<p>Muxer options can be specified for each slave by prepending them as a list of
+<var>key</var>=<var>value</var> pairs separated by &rsquo;:&rsquo;, between square brackets. If
+the options values contain a special character or the &rsquo;:&rsquo; separator, they
+must be escaped; note that this is a second level escaping.
+</p>
+<p>The following special options are also recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>f</samp>&rsquo;</dt>
+<dd><p>Specify the format name. Useful if it cannot be guessed from the
+output name suffix.
+</p>
+</dd>
+<dt> &lsquo;<samp>bsfs[/<var>spec</var>]</samp>&rsquo;</dt>
+<dd><p>Specify a list of bitstream filters to apply to the specified
+output. It is possible to specify to which streams a given bitstream
+filter applies, by appending a stream specifier to the option
+separated by <code>/</code>. If the stream specifier is not specified, the
+bistream filters will be applied to all streams in the output.
+</p>
+<p>Several bitstream filters can be specified, separated by &quot;,&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>select</samp>&rsquo;</dt>
+<dd><p>Select the streams that should be mapped to the slave output,
+specified by a stream specifier. If not specified, this defaults to
+all the input streams.
+</p></dd>
+</dl>
+
+<p>Some examples follow.
+</p><ul>
+<li>
+Encode something and both archive it in a WebM file and stream it
+as MPEG-TS over UDP (the streams need to be explicitly mapped):
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i ... -c:v libx264 -c:a mp2 -f tee -map 0:v -map 0:a
+  &quot;archive-20121107.mkv|[f=mpegts]udp://10.0.1.255:1234/&quot;
+</pre></td></tr></table>
+
+</li><li>
+Use <code>ffmpeg</code> to encode the input, and send the output
+to three different destinations. The <code>dump_extra</code> bitstream
+filter is used to add extradata information to all the output video
+keyframes packets, as requested by the MPEG-TS format. The select
+option is applied to &lsquo;<tt>out.aac</tt>&rsquo; in order to make it contain only
+audio packets.
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i ... -map 0 -flags +global_header -c:v libx264 -c:a aac -strict experimental
+       -f tee &quot;[bsfs/v=dump_extra]out.ts|[movflags=+faststart]out.mp4|[select=a]out.aac&quot;
+</pre></td></tr></table>
+</li></ul>
+
+<p>Note: some codecs may need different options depending on the output format;
+the auto-detection of this can not work with the tee muxer. The main example
+is the &lsquo;<samp>global_header</samp>&rsquo; flag.
+</p>
+<a name="Metadata"></a>
+<h1 class="chapter"><a href="ffmpeg-formats.html#toc-Metadata">5. Metadata</a></h1>
+
+<p>FFmpeg is able to dump metadata from media files into a simple UTF-8-encoded
+INI-like text file and then load it back using the metadata muxer/demuxer.
+</p>
+<p>The file format is as follows:
+</p><ol>
+<li>
+A file consists of a header and a number of metadata tags divided into sections,
+each on its own line.
+
+</li><li>
+The header is a &rsquo;;FFMETADATA&rsquo; string, followed by a version number (now 1).
+
+</li><li>
+Metadata tags are of the form &rsquo;key=value&rsquo;
+
+</li><li>
+Immediately after header follows global metadata
+
+</li><li>
+After global metadata there may be sections with per-stream/per-chapter
+metadata.
+
+</li><li>
+A section starts with the section name in uppercase (i.e. STREAM or CHAPTER) in
+brackets (&rsquo;[&rsquo;, &rsquo;]&rsquo;) and ends with next section or end of file.
+
+</li><li>
+At the beginning of a chapter section there may be an optional timebase to be
+used for start/end values. It must be in form &rsquo;TIMEBASE=num/den&rsquo;, where num and
+den are integers. If the timebase is missing then start/end times are assumed to
+be in milliseconds.
+Next a chapter section must contain chapter start and end times in form
+&rsquo;START=num&rsquo;, &rsquo;END=num&rsquo;, where num is a positive integer.
+
+</li><li>
+Empty lines and lines starting with &rsquo;;&rsquo; or &rsquo;#&rsquo; are ignored.
+
+</li><li>
+Metadata keys or values containing special characters (&rsquo;=&rsquo;, &rsquo;;&rsquo;, &rsquo;#&rsquo;, &rsquo;\&rsquo; and a
+newline) must be escaped with a backslash &rsquo;\&rsquo;.
+
+</li><li>
+Note that whitespace in metadata (e.g. foo = bar) is considered to be a part of
+the tag (in the example above key is &rsquo;foo &rsquo;, value is &rsquo; bar&rsquo;).
+</li></ol>
+
+<p>A ffmetadata file might look like this:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">;FFMETADATA1
+title=bike\\shed
+;this is a comment
+artist=FFmpeg troll team
+
+[CHAPTER]
+TIMEBASE=1/1000
+START=0
+#chapter ends at 0:01:00
+END=60000
+title=chapter \#1
+[STREAM]
+title=multi\
+line
+</pre></td></tr></table>
+
+<p>By using the ffmetadata muxer and demuxer it is possible to extract
+metadata from an input file to an ffmetadata file, and then transcode
+the file into an output file with the edited ffmetadata file.
+</p>
+<p>Extracting an ffmetadata file with &lsquo;<tt>ffmpeg</tt>&rsquo; goes as follows:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f ffmetadata FFMETADATAFILE
+</pre></td></tr></table>
+
+<p>Reinserting edited metadata information from the FFMETADATAFILE file can
+be done as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -i FFMETADATAFILE -map_metadata 1 -codec copy OUTPUT
+</pre></td></tr></table>
+
+
+<a name="See-Also"></a>
+<h1 class="chapter"><a href="ffmpeg-formats.html#toc-See-Also">6. See Also</a></h1>
+
+<p><a href="ffmpeg.html">ffmpeg</a>, <a href="ffplay.html">ffplay</a>, <a href="ffprobe.html">ffprobe</a>, <a href="ffserver.html">ffserver</a>,
+<a href="libavformat.html">libavformat</a>
+</p>
+
+<a name="Authors"></a>
+<h1 class="chapter"><a href="ffmpeg-formats.html#toc-Authors">7. Authors</a></h1>
+
+<p>The FFmpeg developers.
+</p>
+<p>For details about the authorship, see the Git history of the project
+(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
+<code>git log</code> in the FFmpeg source directory, or browsing the
+online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
+</p>
+<p>Maintainers for the specific components are listed in the file
+&lsquo;<tt>MAINTAINERS</tt>&rsquo; in the source code tree.
+</p>
+
+<footer class="footer pagination-right">
+<span class="label label-info">This document was generated by <em>Kyle Schwarz</em> on <em>December 14, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies/ffmpeg/doc/ffmpeg-protocols.html b/dependencies/ffmpeg/doc/ffmpeg-protocols.html
new file mode 100644 (file)
index 0000000..19c3d2d
--- /dev/null
@@ -0,0 +1,1271 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on December 14, 2013 by texi2html 1.82 -->
+<!--
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>FFmpeg documentation : FFmpeg Protocols </title>
+
+<meta name="description" content="FFmpeg Protocols Documentation: ">
+<meta name="keywords" content="FFmpeg documentation : FFmpeg Protocols ">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="default.css" />
+
+<link rel="icon" href="favicon.png" type="image/png" />
+</head>
+<body>
+<div id="container">
+<div id="body">
+
+<a name="SEC_Top"></a>
+<h1 class="settitle">FFmpeg Protocols Documentation</h1>
+
+<a name="SEC_Contents"></a>
+<h1>Table of Contents</h1>
+<div class="contents">
+
+<ul class="toc">
+  <li><a name="toc-Description" href="#Description">1. Description</a></li>
+  <li><a name="toc-Protocols" href="#Protocols">2. Protocols</a>
+  <ul class="toc">
+    <li><a name="toc-bluray" href="#bluray">2.1 bluray</a></li>
+    <li><a name="toc-cache" href="#cache">2.2 cache</a></li>
+    <li><a name="toc-concat" href="#concat">2.3 concat</a></li>
+    <li><a name="toc-crypto" href="#crypto">2.4 crypto</a></li>
+    <li><a name="toc-data" href="#data">2.5 data</a></li>
+    <li><a name="toc-file" href="#file">2.6 file</a></li>
+    <li><a name="toc-ftp" href="#ftp">2.7 ftp</a></li>
+    <li><a name="toc-gopher" href="#gopher">2.8 gopher</a></li>
+    <li><a name="toc-hls" href="#hls">2.9 hls</a></li>
+    <li><a name="toc-http" href="#http">2.10 http</a>
+    <ul class="toc">
+      <li><a name="toc-HTTP-Cookies" href="#HTTP-Cookies">2.10.1 HTTP Cookies</a></li>
+    </ul></li>
+    <li><a name="toc-mmst" href="#mmst">2.11 mmst</a></li>
+    <li><a name="toc-mmsh" href="#mmsh">2.12 mmsh</a></li>
+    <li><a name="toc-md5" href="#md5">2.13 md5</a></li>
+    <li><a name="toc-pipe" href="#pipe">2.14 pipe</a></li>
+    <li><a name="toc-rtmp" href="#rtmp">2.15 rtmp</a></li>
+    <li><a name="toc-rtmpe" href="#rtmpe">2.16 rtmpe</a></li>
+    <li><a name="toc-rtmps" href="#rtmps">2.17 rtmps</a></li>
+    <li><a name="toc-rtmpt" href="#rtmpt">2.18 rtmpt</a></li>
+    <li><a name="toc-rtmpte" href="#rtmpte">2.19 rtmpte</a></li>
+    <li><a name="toc-rtmpts" href="#rtmpts">2.20 rtmpts</a></li>
+    <li><a name="toc-libssh" href="#libssh">2.21 libssh</a></li>
+    <li><a name="toc-librtmp-rtmp_002c-rtmpe_002c-rtmps_002c-rtmpt_002c-rtmpte" href="#librtmp-rtmp_002c-rtmpe_002c-rtmps_002c-rtmpt_002c-rtmpte">2.22 librtmp rtmp, rtmpe, rtmps, rtmpt, rtmpte</a></li>
+    <li><a name="toc-rtp" href="#rtp">2.23 rtp</a></li>
+    <li><a name="toc-rtsp" href="#rtsp">2.24 rtsp</a></li>
+    <li><a name="toc-sap" href="#sap">2.25 sap</a>
+    <ul class="toc">
+      <li><a name="toc-Muxer" href="#Muxer">2.25.1 Muxer</a></li>
+      <li><a name="toc-Demuxer" href="#Demuxer">2.25.2 Demuxer</a></li>
+    </ul></li>
+    <li><a name="toc-sctp" href="#sctp">2.26 sctp</a></li>
+    <li><a name="toc-srtp" href="#srtp">2.27 srtp</a></li>
+    <li><a name="toc-tcp" href="#tcp">2.28 tcp</a></li>
+    <li><a name="toc-tls" href="#tls">2.29 tls</a></li>
+    <li><a name="toc-udp" href="#udp">2.30 udp</a></li>
+    <li><a name="toc-unix" href="#unix">2.31 unix</a></li>
+  </ul></li>
+  <li><a name="toc-See-Also" href="#See-Also">3. See Also</a></li>
+  <li><a name="toc-Authors" href="#Authors">4. Authors</a></li>
+</ul>
+</div>
+
+<a name="Description"></a>
+<h1 class="chapter"><a href="ffmpeg-protocols.html#toc-Description">1. Description</a></h1>
+
+<p>This document describes the input and output protocols provided by the
+libavformat library.
+</p>
+
+<a name="Protocols"></a>
+<h1 class="chapter"><a href="ffmpeg-protocols.html#toc-Protocols">2. Protocols</a></h1>
+
+<p>Protocols are configured elements in FFmpeg that enable access to
+resources that require specific protocols.
+</p>
+<p>When you configure your FFmpeg build, all the supported protocols are
+enabled by default. You can list all available ones using the
+configure option &quot;&ndash;list-protocols&quot;.
+</p>
+<p>You can disable all the protocols using the configure option
+&quot;&ndash;disable-protocols&quot;, and selectively enable a protocol using the
+option &quot;&ndash;enable-protocol=<var>PROTOCOL</var>&quot;, or you can disable a
+particular protocol using the option
+&quot;&ndash;disable-protocol=<var>PROTOCOL</var>&quot;.
+</p>
+<p>The option &quot;-protocols&quot; of the ff* tools will display the list of
+supported protocols.
+</p>
+<p>A description of the currently available protocols follows.
+</p>
+<a name="bluray"></a>
+<h2 class="section"><a href="ffmpeg-protocols.html#toc-bluray">2.1 bluray</a></h2>
+
+<p>Read BluRay playlist.
+</p>
+<p>The accepted options are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>angle</samp>&rsquo;</dt>
+<dd><p>BluRay angle
+</p>
+</dd>
+<dt> &lsquo;<samp>chapter</samp>&rsquo;</dt>
+<dd><p>Start chapter (1...N)
+</p>
+</dd>
+<dt> &lsquo;<samp>playlist</samp>&rsquo;</dt>
+<dd><p>Playlist to read (BDMV/PLAYLIST/?????.mpls)
+</p>
+</dd>
+</dl>
+
+<p>Examples:
+</p>
+<p>Read longest playlist from BluRay mounted to /mnt/bluray:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">bluray:/mnt/bluray
+</pre></td></tr></table>
+
+<p>Read angle 2 of playlist 4 from BluRay mounted to /mnt/bluray, start from chapter 2:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">-playlist 4 -angle 2 -chapter 2 bluray:/mnt/bluray
+</pre></td></tr></table>
+
+<a name="cache"></a>
+<h2 class="section"><a href="ffmpeg-protocols.html#toc-cache">2.2 cache</a></h2>
+
+<p>Caching wrapper for input stream.
+</p>
+<p>Cache the input stream to temporary file. It brings seeking capability to live streams.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">cache:<var>URL</var>
+</pre></td></tr></table>
+
+<a name="concat"></a>
+<h2 class="section"><a href="ffmpeg-protocols.html#toc-concat">2.3 concat</a></h2>
+
+<p>Physical concatenation protocol.
+</p>
+<p>Allow to read and seek from many resource in sequence as if they were
+a unique resource.
+</p>
+<p>A URL accepted by this protocol has the syntax:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">concat:<var>URL1</var>|<var>URL2</var>|...|<var>URLN</var>
+</pre></td></tr></table>
+
+<p>where <var>URL1</var>, <var>URL2</var>, ..., <var>URLN</var> are the urls of the
+resource to be concatenated, each one possibly specifying a distinct
+protocol.
+</p>
+<p>For example to read a sequence of files &lsquo;<tt>split1.mpeg</tt>&rsquo;,
+&lsquo;<tt>split2.mpeg</tt>&rsquo;, &lsquo;<tt>split3.mpeg</tt>&rsquo; with <code>ffplay</code> use the
+command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay concat:split1.mpeg\|split2.mpeg\|split3.mpeg
+</pre></td></tr></table>
+
+<p>Note that you may need to escape the character &quot;|&quot; which is special for
+many shells.
+</p>
+<a name="crypto"></a>
+<h2 class="section"><a href="ffmpeg-protocols.html#toc-crypto">2.4 crypto</a></h2>
+
+<p>AES-encrypted stream reading protocol.
+</p>
+<p>The accepted options are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>key</samp>&rsquo;</dt>
+<dd><p>Set the AES decryption key binary block from given hexadecimal representation.
+</p>
+</dd>
+<dt> &lsquo;<samp>iv</samp>&rsquo;</dt>
+<dd><p>Set the AES decryption initialization vector binary block from given hexadecimal representation.
+</p></dd>
+</dl>
+
+<p>Accepted URL formats:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">crypto:<var>URL</var>
+crypto+<var>URL</var>
+</pre></td></tr></table>
+
+<a name="data"></a>
+<h2 class="section"><a href="ffmpeg-protocols.html#toc-data">2.5 data</a></h2>
+
+<p>Data in-line in the URI. See <a href="http://en.wikipedia.org/wiki/Data_URI_scheme">http://en.wikipedia.org/wiki/Data_URI_scheme</a>.
+</p>
+<p>For example, to convert a GIF file given inline with <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i &quot;data:image/gif;base64,R0lGODdhCAAIAMIEAAAAAAAA//8AAP//AP///////////////ywAAAAACAAIAAADF0gEDLojDgdGiJdJqUX02iB4E8Q9jUMkADs=&quot; smiley.png
+</pre></td></tr></table>
+
+<a name="file"></a>
+<h2 class="section"><a href="ffmpeg-protocols.html#toc-file">2.6 file</a></h2>
+
+<p>File access protocol.
+</p>
+<p>Allow to read from or read to a file.
+</p>
+<p>For example to read from a file &lsquo;<tt>input.mpeg</tt>&rsquo; with <code>ffmpeg</code>
+use the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i file:input.mpeg output.mpeg
+</pre></td></tr></table>
+
+<p>The ff* tools default to the file protocol, that is a resource
+specified with the name &quot;FILE.mpeg&quot; is interpreted as the URL
+&quot;file:FILE.mpeg&quot;.
+</p>
+<p>This protocol accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>truncate</samp>&rsquo;</dt>
+<dd><p>Truncate existing files on write, if set to 1. A value of 0 prevents
+truncating. Default value is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>blocksize</samp>&rsquo;</dt>
+<dd><p>Set I/O operation maximum block size, in bytes. Default value is
+<code>INT_MAX</code>, which results in not limiting the requested block size.
+Setting this value reasonably low improves user termination request reaction
+time, which is valuable for files on slow medium.
+</p></dd>
+</dl>
+
+<a name="ftp"></a>
+<h2 class="section"><a href="ffmpeg-protocols.html#toc-ftp">2.7 ftp</a></h2>
+
+<p>FTP (File Transfer Protocol).
+</p>
+<p>Allow to read from or write to remote resources using FTP protocol.
+</p>
+<p>Following syntax is required.
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ftp://[user[:password]@]server[:port]/path/to/remote/resource.mpeg
+</pre></td></tr></table>
+
+<p>This protocol accepts the following options.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>timeout</samp>&rsquo;</dt>
+<dd><p>Set timeout of socket I/O operations used by the underlying low level
+operation. By default it is set to -1, which means that the timeout is
+not specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>ftp-anonymous-password</samp>&rsquo;</dt>
+<dd><p>Password used when login as anonymous user. Typically an e-mail address
+should be used.
+</p>
+</dd>
+<dt> &lsquo;<samp>ftp-write-seekable</samp>&rsquo;</dt>
+<dd><p>Control seekability of connection during encoding. If set to 1 the
+resource is supposed to be seekable, if set to 0 it is assumed not
+to be seekable. Default value is 0.
+</p></dd>
+</dl>
+
+<p>NOTE: Protocol can be used as output, but it is recommended to not do
+it, unless special care is taken (tests, customized server configuration
+etc.). Different FTP servers behave in different way during seek
+operation. ff* tools may produce incomplete content due to server limitations.
+</p>
+<a name="gopher"></a>
+<h2 class="section"><a href="ffmpeg-protocols.html#toc-gopher">2.8 gopher</a></h2>
+
+<p>Gopher protocol.
+</p>
+<a name="hls"></a>
+<h2 class="section"><a href="ffmpeg-protocols.html#toc-hls">2.9 hls</a></h2>
+
+<p>Read Apple HTTP Live Streaming compliant segmented stream as
+a uniform one. The M3U8 playlists describing the segments can be
+remote HTTP resources or local files, accessed using the standard
+file protocol.
+The nested protocol is declared by specifying
+&quot;+<var>proto</var>&quot; after the hls URI scheme name, where <var>proto</var>
+is either &quot;file&quot; or &quot;http&quot;.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">hls+http://host/path/to/remote/resource.m3u8
+hls+file://path/to/local/resource.m3u8
+</pre></td></tr></table>
+
+<p>Using this protocol is discouraged - the hls demuxer should work
+just as well (if not, please report the issues) and is more complete.
+To use the hls demuxer instead, simply use the direct URLs to the
+m3u8 files.
+</p>
+<a name="http"></a>
+<h2 class="section"><a href="ffmpeg-protocols.html#toc-http">2.10 http</a></h2>
+
+<p>HTTP (Hyper Text Transfer Protocol).
+</p>
+<p>This protocol accepts the following options.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>seekable</samp>&rsquo;</dt>
+<dd><p>Control seekability of connection. If set to 1 the resource is
+supposed to be seekable, if set to 0 it is assumed not to be seekable,
+if set to -1 it will try to autodetect if it is seekable. Default
+value is -1.
+</p>
+</dd>
+<dt> &lsquo;<samp>chunked_post</samp>&rsquo;</dt>
+<dd><p>If set to 1 use chunked transfer-encoding for posts, default is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>headers</samp>&rsquo;</dt>
+<dd><p>Set custom HTTP headers, can override built in default headers. The
+value must be a string encoding the headers.
+</p>
+</dd>
+<dt> &lsquo;<samp>content_type</samp>&rsquo;</dt>
+<dd><p>Force a content type.
+</p>
+</dd>
+<dt> &lsquo;<samp>user-agent</samp>&rsquo;</dt>
+<dd><p>Override User-Agent header. If not specified the protocol will use a
+string describing the libavformat build.
+</p>
+</dd>
+<dt> &lsquo;<samp>multiple_requests</samp>&rsquo;</dt>
+<dd><p>Use persistent connections if set to 1. By default it is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>post_data</samp>&rsquo;</dt>
+<dd><p>Set custom HTTP post data.
+</p>
+</dd>
+<dt> &lsquo;<samp>timeout</samp>&rsquo;</dt>
+<dd><p>Set timeout of socket I/O operations used by the underlying low level
+operation. By default it is set to -1, which means that the timeout is
+not specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>mime_type</samp>&rsquo;</dt>
+<dd><p>Set MIME type.
+</p>
+</dd>
+<dt> &lsquo;<samp>icy</samp>&rsquo;</dt>
+<dd><p>If set to 1 request ICY (SHOUTcast) metadata from the server. If the server
+supports this, the metadata has to be retrieved by the application by reading
+the &lsquo;<samp>icy_metadata_headers</samp>&rsquo; and &lsquo;<samp>icy_metadata_packet</samp>&rsquo; options.
+The default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>icy_metadata_headers</samp>&rsquo;</dt>
+<dd><p>If the server supports ICY metadata, this contains the ICY specific HTTP reply
+headers, separated with newline characters.
+</p>
+</dd>
+<dt> &lsquo;<samp>icy_metadata_packet</samp>&rsquo;</dt>
+<dd><p>If the server supports ICY metadata, and &lsquo;<samp>icy</samp>&rsquo; was set to 1, this
+contains the last non-empty metadata packet sent by the server.
+</p>
+</dd>
+<dt> &lsquo;<samp>cookies</samp>&rsquo;</dt>
+<dd><p>Set the cookies to be sent in future requests. The format of each cookie is the
+same as the value of a Set-Cookie HTTP response field. Multiple cookies can be
+delimited by a newline character.
+</p></dd>
+</dl>
+
+<a name="HTTP-Cookies"></a>
+<h3 class="subsection"><a href="ffmpeg-protocols.html#toc-HTTP-Cookies">2.10.1 HTTP Cookies</a></h3>
+
+<p>Some HTTP requests will be denied unless cookie values are passed in with the
+request. The &lsquo;<samp>cookies</samp>&rsquo; option allows these cookies to be specified. At
+the very least, each cookie must specify a value along with a path and domain.
+HTTP requests that match both the domain and path will automatically include the
+cookie value in the HTTP Cookie header field. Multiple cookies can be delimited
+by a newline.
+</p>
+<p>The required syntax to play a stream specifying a cookie is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay -cookies &quot;nlqptid=nltid=tsn; path=/; domain=somedomain.com;&quot; http://somedomain.com/somestream.m3u8
+</pre></td></tr></table>
+
+<a name="mmst"></a>
+<h2 class="section"><a href="ffmpeg-protocols.html#toc-mmst">2.11 mmst</a></h2>
+
+<p>MMS (Microsoft Media Server) protocol over TCP.
+</p>
+<a name="mmsh"></a>
+<h2 class="section"><a href="ffmpeg-protocols.html#toc-mmsh">2.12 mmsh</a></h2>
+
+<p>MMS (Microsoft Media Server) protocol over HTTP.
+</p>
+<p>The required syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">mmsh://<var>server</var>[:<var>port</var>][/<var>app</var>][/<var>playpath</var>]
+</pre></td></tr></table>
+
+<a name="md5"></a>
+<h2 class="section"><a href="ffmpeg-protocols.html#toc-md5">2.13 md5</a></h2>
+
+<p>MD5 output protocol.
+</p>
+<p>Computes the MD5 hash of the data to be written, and on close writes
+this to the designated output or stdout if none is specified. It can
+be used to test muxers without writing an actual file.
+</p>
+<p>Some examples follow.
+</p><table><tr><td>&nbsp;</td><td><pre class="example"># Write the MD5 hash of the encoded AVI file to the file output.avi.md5.
+ffmpeg -i input.flv -f avi -y md5:output.avi.md5
+
+# Write the MD5 hash of the encoded AVI file to stdout.
+ffmpeg -i input.flv -f avi -y md5:
+</pre></td></tr></table>
+
+<p>Note that some formats (typically MOV) require the output protocol to
+be seekable, so they will fail with the MD5 output protocol.
+</p>
+<a name="pipe"></a>
+<h2 class="section"><a href="ffmpeg-protocols.html#toc-pipe">2.14 pipe</a></h2>
+
+<p>UNIX pipe access protocol.
+</p>
+<p>Allow to read and write from UNIX pipes.
+</p>
+<p>The accepted syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pipe:[<var>number</var>]
+</pre></td></tr></table>
+
+<p><var>number</var> is the number corresponding to the file descriptor of the
+pipe (e.g. 0 for stdin, 1 for stdout, 2 for stderr).  If <var>number</var>
+is not specified, by default the stdout file descriptor will be used
+for writing, stdin for reading.
+</p>
+<p>For example to read from stdin with <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">cat test.wav | ffmpeg -i pipe:0
+# ...this is the same as...
+cat test.wav | ffmpeg -i pipe:
+</pre></td></tr></table>
+
+<p>For writing to stdout with <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i test.wav -f avi pipe:1 | cat &gt; test.avi
+# ...this is the same as...
+ffmpeg -i test.wav -f avi pipe: | cat &gt; test.avi
+</pre></td></tr></table>
+
+<p>This protocol accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>blocksize</samp>&rsquo;</dt>
+<dd><p>Set I/O operation maximum block size, in bytes. Default value is
+<code>INT_MAX</code>, which results in not limiting the requested block size.
+Setting this value reasonably low improves user termination request reaction
+time, which is valuable if data transmission is slow.
+</p></dd>
+</dl>
+
+<p>Note that some formats (typically MOV), require the output protocol to
+be seekable, so they will fail with the pipe output protocol.
+</p>
+<a name="rtmp"></a>
+<h2 class="section"><a href="ffmpeg-protocols.html#toc-rtmp">2.15 rtmp</a></h2>
+
+<p>Real-Time Messaging Protocol.
+</p>
+<p>The Real-Time Messaging Protocol (RTMP) is used for streaming multimedia
+content across a TCP/IP network.
+</p>
+<p>The required syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">rtmp://[<var>username</var>:<var>password</var>@]<var>server</var>[:<var>port</var>][/<var>app</var>][/<var>instance</var>][/<var>playpath</var>]
+</pre></td></tr></table>
+
+<p>The accepted parameters are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>username</samp>&rsquo;</dt>
+<dd><p>An optional username (mostly for publishing).
+</p>
+</dd>
+<dt> &lsquo;<samp>password</samp>&rsquo;</dt>
+<dd><p>An optional password (mostly for publishing).
+</p>
+</dd>
+<dt> &lsquo;<samp>server</samp>&rsquo;</dt>
+<dd><p>The address of the RTMP server.
+</p>
+</dd>
+<dt> &lsquo;<samp>port</samp>&rsquo;</dt>
+<dd><p>The number of the TCP port to use (by default is 1935).
+</p>
+</dd>
+<dt> &lsquo;<samp>app</samp>&rsquo;</dt>
+<dd><p>It is the name of the application to access. It usually corresponds to
+the path where the application is installed on the RTMP server
+(e.g. &lsquo;<tt>/ondemand/</tt>&rsquo;, &lsquo;<tt>/flash/live/</tt>&rsquo;, etc.). You can override
+the value parsed from the URI through the <code>rtmp_app</code> option, too.
+</p>
+</dd>
+<dt> &lsquo;<samp>playpath</samp>&rsquo;</dt>
+<dd><p>It is the path or name of the resource to play with reference to the
+application specified in <var>app</var>, may be prefixed by &quot;mp4:&quot;. You
+can override the value parsed from the URI through the <code>rtmp_playpath</code>
+option, too.
+</p>
+</dd>
+<dt> &lsquo;<samp>listen</samp>&rsquo;</dt>
+<dd><p>Act as a server, listening for an incoming connection.
+</p>
+</dd>
+<dt> &lsquo;<samp>timeout</samp>&rsquo;</dt>
+<dd><p>Maximum time to wait for the incoming connection. Implies listen.
+</p></dd>
+</dl>
+
+<p>Additionally, the following parameters can be set via command line options
+(or in code via <code>AVOption</code>s):
+</p><dl compact="compact">
+<dt> &lsquo;<samp>rtmp_app</samp>&rsquo;</dt>
+<dd><p>Name of application to connect on the RTMP server. This option
+overrides the parameter specified in the URI.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_buffer</samp>&rsquo;</dt>
+<dd><p>Set the client buffer time in milliseconds. The default is 3000.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_conn</samp>&rsquo;</dt>
+<dd><p>Extra arbitrary AMF connection parameters, parsed from a string,
+e.g. like <code>B:1 S:authMe O:1 NN:code:1.23 NS:flag:ok O:0</code>.
+Each value is prefixed by a single character denoting the type,
+B for Boolean, N for number, S for string, O for object, or Z for null,
+followed by a colon. For Booleans the data must be either 0 or 1 for
+FALSE or TRUE, respectively.  Likewise for Objects the data must be 0 or
+1 to end or begin an object, respectively. Data items in subobjects may
+be named, by prefixing the type with &rsquo;N&rsquo; and specifying the name before
+the value (i.e. <code>NB:myFlag:1</code>). This option may be used multiple
+times to construct arbitrary AMF sequences.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_flashver</samp>&rsquo;</dt>
+<dd><p>Version of the Flash plugin used to run the SWF player. The default
+is LNX 9,0,124,2. (When publishing, the default is FMLE/3.0 (compatible;
+&lt;libavformat version&gt;).)
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_flush_interval</samp>&rsquo;</dt>
+<dd><p>Number of packets flushed in the same request (RTMPT only). The default
+is 10.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_live</samp>&rsquo;</dt>
+<dd><p>Specify that the media is a live stream. No resuming or seeking in
+live streams is possible. The default value is <code>any</code>, which means the
+subscriber first tries to play the live stream specified in the
+playpath. If a live stream of that name is not found, it plays the
+recorded stream. The other possible values are <code>live</code> and
+<code>recorded</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_pageurl</samp>&rsquo;</dt>
+<dd><p>URL of the web page in which the media was embedded. By default no
+value will be sent.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_playpath</samp>&rsquo;</dt>
+<dd><p>Stream identifier to play or to publish. This option overrides the
+parameter specified in the URI.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_subscribe</samp>&rsquo;</dt>
+<dd><p>Name of live stream to subscribe to. By default no value will be sent.
+It is only sent if the option is specified or if rtmp_live
+is set to live.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_swfhash</samp>&rsquo;</dt>
+<dd><p>SHA256 hash of the decompressed SWF file (32 bytes).
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_swfsize</samp>&rsquo;</dt>
+<dd><p>Size of the decompressed SWF file, required for SWFVerification.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_swfurl</samp>&rsquo;</dt>
+<dd><p>URL of the SWF player for the media. By default no value will be sent.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_swfverify</samp>&rsquo;</dt>
+<dd><p>URL to player swf file, compute hash/size automatically.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_tcurl</samp>&rsquo;</dt>
+<dd><p>URL of the target stream. Defaults to proto://host[:port]/app.
+</p>
+</dd>
+</dl>
+
+<p>For example to read with <code>ffplay</code> a multimedia resource named
+&quot;sample&quot; from the application &quot;vod&quot; from an RTMP server &quot;myserver&quot;:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay rtmp://myserver/vod/sample
+</pre></td></tr></table>
+
+<p>To publish to a password protected server, passing the playpath and
+app names separately:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i &lt;input&gt; -f flv -rtmp_playpath some/long/path -rtmp_app long/app/name rtmp://username:password@myserver/
+</pre></td></tr></table>
+
+<a name="rtmpe"></a>
+<h2 class="section"><a href="ffmpeg-protocols.html#toc-rtmpe">2.16 rtmpe</a></h2>
+
+<p>Encrypted Real-Time Messaging Protocol.
+</p>
+<p>The Encrypted Real-Time Messaging Protocol (RTMPE) is used for
+streaming multimedia content within standard cryptographic primitives,
+consisting of Diffie-Hellman key exchange and HMACSHA256, generating
+a pair of RC4 keys.
+</p>
+<a name="rtmps"></a>
+<h2 class="section"><a href="ffmpeg-protocols.html#toc-rtmps">2.17 rtmps</a></h2>
+
+<p>Real-Time Messaging Protocol over a secure SSL connection.
+</p>
+<p>The Real-Time Messaging Protocol (RTMPS) is used for streaming
+multimedia content across an encrypted connection.
+</p>
+<a name="rtmpt"></a>
+<h2 class="section"><a href="ffmpeg-protocols.html#toc-rtmpt">2.18 rtmpt</a></h2>
+
+<p>Real-Time Messaging Protocol tunneled through HTTP.
+</p>
+<p>The Real-Time Messaging Protocol tunneled through HTTP (RTMPT) is used
+for streaming multimedia content within HTTP requests to traverse
+firewalls.
+</p>
+<a name="rtmpte"></a>
+<h2 class="section"><a href="ffmpeg-protocols.html#toc-rtmpte">2.19 rtmpte</a></h2>
+
+<p>Encrypted Real-Time Messaging Protocol tunneled through HTTP.
+</p>
+<p>The Encrypted Real-Time Messaging Protocol tunneled through HTTP (RTMPTE)
+is used for streaming multimedia content within HTTP requests to traverse
+firewalls.
+</p>
+<a name="rtmpts"></a>
+<h2 class="section"><a href="ffmpeg-protocols.html#toc-rtmpts">2.20 rtmpts</a></h2>
+
+<p>Real-Time Messaging Protocol tunneled through HTTPS.
+</p>
+<p>The Real-Time Messaging Protocol tunneled through HTTPS (RTMPTS) is used
+for streaming multimedia content within HTTPS requests to traverse
+firewalls.
+</p>
+<a name="libssh"></a>
+<h2 class="section"><a href="ffmpeg-protocols.html#toc-libssh">2.21 libssh</a></h2>
+
+<p>Secure File Transfer Protocol via libssh
+</p>
+<p>Allow to read from or write to remote resources using SFTP protocol.
+</p>
+<p>Following syntax is required.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">sftp://[user[:password]@]server[:port]/path/to/remote/resource.mpeg
+</pre></td></tr></table>
+
+<p>This protocol accepts the following options.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>timeout</samp>&rsquo;</dt>
+<dd><p>Set timeout of socket I/O operations used by the underlying low level
+operation. By default it is set to -1, which means that the timeout
+is not specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>truncate</samp>&rsquo;</dt>
+<dd><p>Truncate existing files on write, if set to 1. A value of 0 prevents
+truncating. Default value is 1.
+</p>
+</dd>
+</dl>
+
+<p>Example: Play a file stored on remote server.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay sftp://user:password@server_address:22/home/user/resource.mpeg
+</pre></td></tr></table>
+
+<a name="librtmp-rtmp_002c-rtmpe_002c-rtmps_002c-rtmpt_002c-rtmpte"></a>
+<h2 class="section"><a href="ffmpeg-protocols.html#toc-librtmp-rtmp_002c-rtmpe_002c-rtmps_002c-rtmpt_002c-rtmpte">2.22 librtmp rtmp, rtmpe, rtmps, rtmpt, rtmpte</a></h2>
+
+<p>Real-Time Messaging Protocol and its variants supported through
+librtmp.
+</p>
+<p>Requires the presence of the librtmp headers and library during
+configuration. You need to explicitly configure the build with
+&quot;&ndash;enable-librtmp&quot;. If enabled this will replace the native RTMP
+protocol.
+</p>
+<p>This protocol provides most client functions and a few server
+functions needed to support RTMP, RTMP tunneled in HTTP (RTMPT),
+encrypted RTMP (RTMPE), RTMP over SSL/TLS (RTMPS) and tunneled
+variants of these encrypted types (RTMPTE, RTMPTS).
+</p>
+<p>The required syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>rtmp_proto</var>://<var>server</var>[:<var>port</var>][/<var>app</var>][/<var>playpath</var>] <var>options</var>
+</pre></td></tr></table>
+
+<p>where <var>rtmp_proto</var> is one of the strings &quot;rtmp&quot;, &quot;rtmpt&quot;, &quot;rtmpe&quot;,
+&quot;rtmps&quot;, &quot;rtmpte&quot;, &quot;rtmpts&quot; corresponding to each RTMP variant, and
+<var>server</var>, <var>port</var>, <var>app</var> and <var>playpath</var> have the same
+meaning as specified for the RTMP native protocol.
+<var>options</var> contains a list of space-separated options of the form
+<var>key</var>=<var>val</var>.
+</p>
+<p>See the librtmp manual page (man 3 librtmp) for more information.
+</p>
+<p>For example, to stream a file in real-time to an RTMP server using
+<code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i myfile -f flv rtmp://myserver/live/mystream
+</pre></td></tr></table>
+
+<p>To play the same stream using <code>ffplay</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay &quot;rtmp://myserver/live/mystream live=1&quot;
+</pre></td></tr></table>
+
+<a name="rtp"></a>
+<h2 class="section"><a href="ffmpeg-protocols.html#toc-rtp">2.23 rtp</a></h2>
+
+<p>Real-time Transport Protocol.
+</p>
+<p>The required syntax for an RTP URL is:
+rtp://<var>hostname</var>[:<var>port</var>][?<var>option</var>=<var>val</var>...]
+</p>
+<p><var>port</var> specifies the RTP port to use.
+</p>
+<p>The following URL options are supported:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>ttl=<var>n</var></samp>&rsquo;</dt>
+<dd><p>Set the TTL (Time-To-Live) value (for multicast only).
+</p>
+</dd>
+<dt> &lsquo;<samp>rtcpport=<var>n</var></samp>&rsquo;</dt>
+<dd><p>Set the remote RTCP port to <var>n</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>localrtpport=<var>n</var></samp>&rsquo;</dt>
+<dd><p>Set the local RTP port to <var>n</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>localrtcpport=<var>n</var>'</samp>&rsquo;</dt>
+<dd><p>Set the local RTCP port to <var>n</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>pkt_size=<var>n</var></samp>&rsquo;</dt>
+<dd><p>Set max packet size (in bytes) to <var>n</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>connect=0|1</samp>&rsquo;</dt>
+<dd><p>Do a <code>connect()</code> on the UDP socket (if set to 1) or not (if set
+to 0).
+</p>
+</dd>
+<dt> &lsquo;<samp>sources=<var>ip</var>[,<var>ip</var>]</samp>&rsquo;</dt>
+<dd><p>List allowed source IP addresses.
+</p>
+</dd>
+<dt> &lsquo;<samp>block=<var>ip</var>[,<var>ip</var>]</samp>&rsquo;</dt>
+<dd><p>List disallowed (blocked) source IP addresses.
+</p>
+</dd>
+<dt> &lsquo;<samp>write_to_source=0|1</samp>&rsquo;</dt>
+<dd><p>Send packets to the source address of the latest received packet (if
+set to 1) or to a default remote address (if set to 0).
+</p>
+</dd>
+<dt> &lsquo;<samp>localport=<var>n</var></samp>&rsquo;</dt>
+<dd><p>Set the local RTP port to <var>n</var>.
+</p>
+<p>This is a deprecated option. Instead, &lsquo;<samp>localrtpport</samp>&rsquo; should be
+used.
+</p>
+</dd>
+</dl>
+
+<p>Important notes:
+</p>
+<ol>
+<li>
+If &lsquo;<samp>rtcpport</samp>&rsquo; is not set the RTCP port will be set to the RTP
+port value plus 1.
+
+</li><li>
+If &lsquo;<samp>localrtpport</samp>&rsquo; (the local RTP port) is not set any available
+port will be used for the local RTP and RTCP ports.
+
+</li><li>
+If &lsquo;<samp>localrtcpport</samp>&rsquo; (the local RTCP port) is not set it will be
+set to the the local RTP port value plus 1.
+</li></ol>
+
+<a name="rtsp"></a>
+<h2 class="section"><a href="ffmpeg-protocols.html#toc-rtsp">2.24 rtsp</a></h2>
+
+<p>RTSP is not technically a protocol handler in libavformat, it is a demuxer
+and muxer. The demuxer supports both normal RTSP (with data transferred
+over RTP; this is used by e.g. Apple and Microsoft) and Real-RTSP (with
+data transferred over RDT).
+</p>
+<p>The muxer can be used to send a stream using RTSP ANNOUNCE to a server
+supporting it (currently Darwin Streaming Server and Mischa Spiegelmock&rsquo;s
+<a href="http://github.com/revmischa/rtsp-server">RTSP server</a>).
+</p>
+<p>The required syntax for a RTSP url is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">rtsp://<var>hostname</var>[:<var>port</var>]/<var>path</var>
+</pre></td></tr></table>
+
+<p>The following options (set on the <code>ffmpeg</code>/<code>ffplay</code> command
+line, or set in code via <code>AVOption</code>s or in <code>avformat_open_input</code>),
+are supported:
+</p>
+<p>Flags for <code>rtsp_transport</code>:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>udp</samp>&rsquo;</dt>
+<dd><p>Use UDP as lower transport protocol.
+</p>
+</dd>
+<dt> &lsquo;<samp>tcp</samp>&rsquo;</dt>
+<dd><p>Use TCP (interleaving within the RTSP control channel) as lower
+transport protocol.
+</p>
+</dd>
+<dt> &lsquo;<samp>udp_multicast</samp>&rsquo;</dt>
+<dd><p>Use UDP multicast as lower transport protocol.
+</p>
+</dd>
+<dt> &lsquo;<samp>http</samp>&rsquo;</dt>
+<dd><p>Use HTTP tunneling as lower transport protocol, which is useful for
+passing proxies.
+</p></dd>
+</dl>
+
+<p>Multiple lower transport protocols may be specified, in that case they are
+tried one at a time (if the setup of one fails, the next one is tried).
+For the muxer, only the <code>tcp</code> and <code>udp</code> options are supported.
+</p>
+<p>Flags for <code>rtsp_flags</code>:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filter_src</samp>&rsquo;</dt>
+<dd><p>Accept packets only from negotiated peer address and port.
+</p></dd>
+<dt> &lsquo;<samp>listen</samp>&rsquo;</dt>
+<dd><p>Act as a server, listening for an incoming connection.
+</p></dd>
+</dl>
+
+<p>When receiving data over UDP, the demuxer tries to reorder received packets
+(since they may arrive out of order, or packets may get lost totally). This
+can be disabled by setting the maximum demuxing delay to zero (via
+the <code>max_delay</code> field of AVFormatContext).
+</p>
+<p>When watching multi-bitrate Real-RTSP streams with <code>ffplay</code>, the
+streams to display can be chosen with <code>-vst</code> <var>n</var> and
+<code>-ast</code> <var>n</var> for video and audio respectively, and can be switched
+on the fly by pressing <code>v</code> and <code>a</code>.
+</p>
+<p>Example command lines:
+</p>
+<p>To watch a stream over UDP, with a max reordering delay of 0.5 seconds:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -max_delay 500000 -rtsp_transport udp rtsp://server/video.mp4
+</pre></td></tr></table>
+
+<p>To watch a stream tunneled over HTTP:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -rtsp_transport http rtsp://server/video.mp4
+</pre></td></tr></table>
+
+<p>To send a stream in realtime to a RTSP server, for others to watch:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i <var>input</var> -f rtsp -muxdelay 0.1 rtsp://server/live.sdp
+</pre></td></tr></table>
+
+<p>To receive a stream in realtime:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -rtsp_flags listen -i rtsp://ownaddress/live.sdp <var>output</var>
+</pre></td></tr></table>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>stimeout</samp>&rsquo;</dt>
+<dd><p>Socket IO timeout in micro seconds.
+</p></dd>
+</dl>
+
+<a name="sap"></a>
+<h2 class="section"><a href="ffmpeg-protocols.html#toc-sap">2.25 sap</a></h2>
+
+<p>Session Announcement Protocol (RFC 2974). This is not technically a
+protocol handler in libavformat, it is a muxer and demuxer.
+It is used for signalling of RTP streams, by announcing the SDP for the
+streams regularly on a separate port.
+</p>
+<a name="Muxer"></a>
+<h3 class="subsection"><a href="ffmpeg-protocols.html#toc-Muxer">2.25.1 Muxer</a></h3>
+
+<p>The syntax for a SAP url given to the muxer is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">sap://<var>destination</var>[:<var>port</var>][?<var>options</var>]
+</pre></td></tr></table>
+
+<p>The RTP packets are sent to <var>destination</var> on port <var>port</var>,
+or to port 5004 if no port is specified.
+<var>options</var> is a <code>&amp;</code>-separated list. The following options
+are supported:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>announce_addr=<var>address</var></samp>&rsquo;</dt>
+<dd><p>Specify the destination IP address for sending the announcements to.
+If omitted, the announcements are sent to the commonly used SAP
+announcement multicast address 224.2.127.254 (sap.mcast.net), or
+ff0e::2:7ffe if <var>destination</var> is an IPv6 address.
+</p>
+</dd>
+<dt> &lsquo;<samp>announce_port=<var>port</var></samp>&rsquo;</dt>
+<dd><p>Specify the port to send the announcements on, defaults to
+9875 if not specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>ttl=<var>ttl</var></samp>&rsquo;</dt>
+<dd><p>Specify the time to live value for the announcements and RTP packets,
+defaults to 255.
+</p>
+</dd>
+<dt> &lsquo;<samp>same_port=<var>0|1</var></samp>&rsquo;</dt>
+<dd><p>If set to 1, send all RTP streams on the same port pair. If zero (the
+default), all streams are sent on unique ports, with each stream on a
+port 2 numbers higher than the previous.
+VLC/Live555 requires this to be set to 1, to be able to receive the stream.
+The RTP stack in libavformat for receiving requires all streams to be sent
+on unique ports.
+</p></dd>
+</dl>
+
+<p>Example command lines follow.
+</p>
+<p>To broadcast a stream on the local subnet, for watching in VLC:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i <var>input</var> -f sap sap://224.0.0.255?same_port=1
+</pre></td></tr></table>
+
+<p>Similarly, for watching in <code>ffplay</code>:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i <var>input</var> -f sap sap://224.0.0.255
+</pre></td></tr></table>
+
+<p>And for watching in <code>ffplay</code>, over IPv6:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i <var>input</var> -f sap sap://[ff0e::1:2:3:4]
+</pre></td></tr></table>
+
+<a name="Demuxer"></a>
+<h3 class="subsection"><a href="ffmpeg-protocols.html#toc-Demuxer">2.25.2 Demuxer</a></h3>
+
+<p>The syntax for a SAP url given to the demuxer is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">sap://[<var>address</var>][:<var>port</var>]
+</pre></td></tr></table>
+
+<p><var>address</var> is the multicast address to listen for announcements on,
+if omitted, the default 224.2.127.254 (sap.mcast.net) is used. <var>port</var>
+is the port that is listened on, 9875 if omitted.
+</p>
+<p>The demuxers listens for announcements on the given address and port.
+Once an announcement is received, it tries to receive that particular stream.
+</p>
+<p>Example command lines follow.
+</p>
+<p>To play back the first stream announced on the normal SAP multicast address:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay sap://
+</pre></td></tr></table>
+
+<p>To play back the first stream announced on one the default IPv6 SAP multicast address:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay sap://[ff0e::2:7ffe]
+</pre></td></tr></table>
+
+<a name="sctp"></a>
+<h2 class="section"><a href="ffmpeg-protocols.html#toc-sctp">2.26 sctp</a></h2>
+
+<p>Stream Control Transmission Protocol.
+</p>
+<p>The accepted URL syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">sctp://<var>host</var>:<var>port</var>[?<var>options</var>]
+</pre></td></tr></table>
+
+<p>The protocol accepts the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>listen</samp>&rsquo;</dt>
+<dd><p>If set to any value, listen for an incoming connection. Outgoing connection is done by default.
+</p>
+</dd>
+<dt> &lsquo;<samp>max_streams</samp>&rsquo;</dt>
+<dd><p>Set the maximum number of streams. By default no limit is set.
+</p></dd>
+</dl>
+
+<a name="srtp"></a>
+<h2 class="section"><a href="ffmpeg-protocols.html#toc-srtp">2.27 srtp</a></h2>
+
+<p>Secure Real-time Transport Protocol.
+</p>
+<p>The accepted options are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>srtp_in_suite</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>srtp_out_suite</samp>&rsquo;</dt>
+<dd><p>Select input and output encoding suites.
+</p>
+<p>Supported values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>AES_CM_128_HMAC_SHA1_80</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>SRTP_AES128_CM_HMAC_SHA1_80</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>AES_CM_128_HMAC_SHA1_32</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>SRTP_AES128_CM_HMAC_SHA1_32</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>srtp_in_params</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>srtp_out_params</samp>&rsquo;</dt>
+<dd><p>Set input and output encoding parameters, which are expressed by a
+base64-encoded representation of a binary block. The first 16 bytes of
+this binary block are used as master key, the following 14 bytes are
+used as master salt.
+</p></dd>
+</dl>
+
+<a name="tcp"></a>
+<h2 class="section"><a href="ffmpeg-protocols.html#toc-tcp">2.28 tcp</a></h2>
+
+<p>Trasmission Control Protocol.
+</p>
+<p>The required syntax for a TCP url is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">tcp://<var>hostname</var>:<var>port</var>[?<var>options</var>]
+</pre></td></tr></table>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>listen</samp>&rsquo;</dt>
+<dd><p>Listen for an incoming connection
+</p>
+</dd>
+<dt> &lsquo;<samp>timeout=<var>microseconds</var></samp>&rsquo;</dt>
+<dd><p>In read mode: if no data arrived in more than this time interval, raise error.
+In write mode: if socket cannot be written in more than this time interval, raise error.
+This also sets timeout on TCP connection establishing.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i <var>input</var> -f <var>format</var> tcp://<var>hostname</var>:<var>port</var>?listen
+ffplay tcp://<var>hostname</var>:<var>port</var>
+</pre></td></tr></table>
+
+</dd>
+</dl>
+
+<a name="tls"></a>
+<h2 class="section"><a href="ffmpeg-protocols.html#toc-tls">2.29 tls</a></h2>
+
+<p>Transport Layer Security (TLS) / Secure Sockets Layer (SSL)
+</p>
+<p>The required syntax for a TLS/SSL url is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">tls://<var>hostname</var>:<var>port</var>[?<var>options</var>]
+</pre></td></tr></table>
+
+<p>The following parameters can be set via command line options
+(or in code via <code>AVOption</code>s):
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>ca_file, cafile=<var>filename</var></samp>&rsquo;</dt>
+<dd><p>A file containing certificate authority (CA) root certificates to treat
+as trusted. If the linked TLS library contains a default this might not
+need to be specified for verification to work, but not all libraries and
+setups have defaults built in.
+The file must be in OpenSSL PEM format.
+</p>
+</dd>
+<dt> &lsquo;<samp>tls_verify=<var>1|0</var></samp>&rsquo;</dt>
+<dd><p>If enabled, try to verify the peer that we are communicating with.
+Note, if using OpenSSL, this currently only makes sure that the
+peer certificate is signed by one of the root certificates in the CA
+database, but it does not validate that the certificate actually
+matches the host name we are trying to connect to. (With GnuTLS,
+the host name is validated as well.)
+</p>
+<p>This is disabled by default since it requires a CA database to be
+provided by the caller in many cases.
+</p>
+</dd>
+<dt> &lsquo;<samp>cert_file, cert=<var>filename</var></samp>&rsquo;</dt>
+<dd><p>A file containing a certificate to use in the handshake with the peer.
+(When operating as server, in listen mode, this is more often required
+by the peer, while client certificates only are mandated in certain
+setups.)
+</p>
+</dd>
+<dt> &lsquo;<samp>key_file, key=<var>filename</var></samp>&rsquo;</dt>
+<dd><p>A file containing the private key for the certificate.
+</p>
+</dd>
+<dt> &lsquo;<samp>listen=<var>1|0</var></samp>&rsquo;</dt>
+<dd><p>If enabled, listen for connections on the provided port, and assume
+the server role in the handshake instead of the client role.
+</p>
+</dd>
+</dl>
+
+<p>Example command lines:
+</p>
+<p>To create a TLS/SSL server that serves an input stream.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i <var>input</var> -f <var>format</var> tls://<var>hostname</var>:<var>port</var>?listen&amp;cert=<var>server.crt</var>&amp;key=<var>server.key</var>
+</pre></td></tr></table>
+
+<p>To play back a stream from the TLS/SSL server using <code>ffplay</code>:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay tls://<var>hostname</var>:<var>port</var>
+</pre></td></tr></table>
+
+<a name="udp"></a>
+<h2 class="section"><a href="ffmpeg-protocols.html#toc-udp">2.30 udp</a></h2>
+
+<p>User Datagram Protocol.
+</p>
+<p>The required syntax for a UDP url is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">udp://<var>hostname</var>:<var>port</var>[?<var>options</var>]
+</pre></td></tr></table>
+
+<p><var>options</var> contains a list of &amp;-separated options of the form <var>key</var>=<var>val</var>.
+</p>
+<p>In case threading is enabled on the system, a circular buffer is used
+to store the incoming data, which allows to reduce loss of data due to
+UDP socket buffer overruns. The <var>fifo_size</var> and
+<var>overrun_nonfatal</var> options are related to this buffer.
+</p>
+<p>The list of supported options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>buffer_size=<var>size</var></samp>&rsquo;</dt>
+<dd><p>Set the UDP socket buffer size in bytes. This is used both for the
+receiving and the sending buffer size.
+</p>
+</dd>
+<dt> &lsquo;<samp>localport=<var>port</var></samp>&rsquo;</dt>
+<dd><p>Override the local UDP port to bind with.
+</p>
+</dd>
+<dt> &lsquo;<samp>localaddr=<var>addr</var></samp>&rsquo;</dt>
+<dd><p>Choose the local IP address. This is useful e.g. if sending multicast
+and the host has multiple interfaces, where the user can choose
+which interface to send on by specifying the IP address of that interface.
+</p>
+</dd>
+<dt> &lsquo;<samp>pkt_size=<var>size</var></samp>&rsquo;</dt>
+<dd><p>Set the size in bytes of UDP packets.
+</p>
+</dd>
+<dt> &lsquo;<samp>reuse=<var>1|0</var></samp>&rsquo;</dt>
+<dd><p>Explicitly allow or disallow reusing UDP sockets.
+</p>
+</dd>
+<dt> &lsquo;<samp>ttl=<var>ttl</var></samp>&rsquo;</dt>
+<dd><p>Set the time to live value (for multicast only).
+</p>
+</dd>
+<dt> &lsquo;<samp>connect=<var>1|0</var></samp>&rsquo;</dt>
+<dd><p>Initialize the UDP socket with <code>connect()</code>. In this case, the
+destination address can&rsquo;t be changed with ff_udp_set_remote_url later.
+If the destination address isn&rsquo;t known at the start, this option can
+be specified in ff_udp_set_remote_url, too.
+This allows finding out the source address for the packets with getsockname,
+and makes writes return with AVERROR(ECONNREFUSED) if &quot;destination
+unreachable&quot; is received.
+For receiving, this gives the benefit of only receiving packets from
+the specified peer address/port.
+</p>
+</dd>
+<dt> &lsquo;<samp>sources=<var>address</var>[,<var>address</var>]</samp>&rsquo;</dt>
+<dd><p>Only receive packets sent to the multicast group from one of the
+specified sender IP addresses.
+</p>
+</dd>
+<dt> &lsquo;<samp>block=<var>address</var>[,<var>address</var>]</samp>&rsquo;</dt>
+<dd><p>Ignore packets sent to the multicast group from the specified
+sender IP addresses.
+</p>
+</dd>
+<dt> &lsquo;<samp>fifo_size=<var>units</var></samp>&rsquo;</dt>
+<dd><p>Set the UDP receiving circular buffer size, expressed as a number of
+packets with size of 188 bytes. If not specified defaults to 7*4096.
+</p>
+</dd>
+<dt> &lsquo;<samp>overrun_nonfatal=<var>1|0</var></samp>&rsquo;</dt>
+<dd><p>Survive in case of UDP receiving circular buffer overrun. Default
+value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>timeout=<var>microseconds</var></samp>&rsquo;</dt>
+<dd><p>In read mode: if no data arrived in more than this time interval, raise error.
+</p></dd>
+</dl>
+
+<p>Some usage examples of the UDP protocol with <code>ffmpeg</code> follow.
+</p>
+<p>To stream over UDP to a remote endpoint:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i <var>input</var> -f <var>format</var> udp://<var>hostname</var>:<var>port</var>
+</pre></td></tr></table>
+
+<p>To stream in mpegts format over UDP using 188 sized UDP packets, using a large input buffer:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i <var>input</var> -f mpegts udp://<var>hostname</var>:<var>port</var>?pkt_size=188&amp;buffer_size=65535
+</pre></td></tr></table>
+
+<p>To receive over UDP from a remote endpoint:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i udp://[<var>multicast-address</var>]:<var>port</var>
+</pre></td></tr></table>
+
+<a name="unix"></a>
+<h2 class="section"><a href="ffmpeg-protocols.html#toc-unix">2.31 unix</a></h2>
+
+<p>Unix local socket
+</p>
+<p>The required syntax for a Unix socket URL is:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">unix://<var>filepath</var>
+</pre></td></tr></table>
+
+<p>The following parameters can be set via command line options
+(or in code via <code>AVOption</code>s):
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>timeout</samp>&rsquo;</dt>
+<dd><p>Timeout in ms.
+</p></dd>
+<dt> &lsquo;<samp>listen</samp>&rsquo;</dt>
+<dd><p>Create the Unix socket in listening mode.
+</p></dd>
+</dl>
+
+
+<a name="See-Also"></a>
+<h1 class="chapter"><a href="ffmpeg-protocols.html#toc-See-Also">3. See Also</a></h1>
+
+<p><a href="ffmpeg.html">ffmpeg</a>, <a href="ffplay.html">ffplay</a>, <a href="ffprobe.html">ffprobe</a>, <a href="ffserver.html">ffserver</a>,
+<a href="libavformat.html">libavformat</a>
+</p>
+
+<a name="Authors"></a>
+<h1 class="chapter"><a href="ffmpeg-protocols.html#toc-Authors">4. Authors</a></h1>
+
+<p>The FFmpeg developers.
+</p>
+<p>For details about the authorship, see the Git history of the project
+(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
+<code>git log</code> in the FFmpeg source directory, or browsing the
+online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
+</p>
+<p>Maintainers for the specific components are listed in the file
+&lsquo;<tt>MAINTAINERS</tt>&rsquo; in the source code tree.
+</p>
+
+<footer class="footer pagination-right">
+<span class="label label-info">This document was generated by <em>Kyle Schwarz</em> on <em>December 14, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies/ffmpeg/doc/ffmpeg-resampler.html b/dependencies/ffmpeg/doc/ffmpeg-resampler.html
new file mode 100644 (file)
index 0000000..1fa6a1c
--- /dev/null
@@ -0,0 +1,359 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on December 14, 2013 by texi2html 1.82 -->
+<!--
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>FFmpeg documentation : FFmpeg Resampler </title>
+
+<meta name="description" content="FFmpeg Resampler Documentation: ">
+<meta name="keywords" content="FFmpeg documentation : FFmpeg Resampler ">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="default.css" />
+
+<link rel="icon" href="favicon.png" type="image/png" />
+</head>
+<body>
+<div id="container">
+<div id="body">
+
+<a name="SEC_Top"></a>
+<h1 class="settitle">FFmpeg Resampler Documentation</h1>
+
+<a name="SEC_Contents"></a>
+<h1>Table of Contents</h1>
+<div class="contents">
+
+<ul class="toc">
+  <li><a name="toc-Description" href="#Description">1. Description</a></li>
+  <li><a name="toc-Resampler-Options" href="#Resampler-Options">2. Resampler Options</a></li>
+  <li><a name="toc-See-Also" href="#See-Also">3. See Also</a></li>
+  <li><a name="toc-Authors" href="#Authors">4. Authors</a></li>
+</ul>
+</div>
+
+<a name="Description"></a>
+<h1 class="chapter"><a href="ffmpeg-resampler.html#toc-Description">1. Description</a></h1>
+
+<p>The FFmpeg resampler provides a high-level interface to the
+libswresample library audio resampling utilities. In particular it
+allows to perform audio resampling, audio channel layout rematrixing,
+and convert audio format and packing layout.
+</p>
+
+<a name="Resampler-Options"></a>
+<h1 class="chapter"><a href="ffmpeg-resampler.html#toc-Resampler-Options">2. Resampler Options</a></h1>
+
+<p>The audio resampler supports the following named options.
+</p>
+<p>Options may be set by specifying -<var>option</var> <var>value</var> in the
+FFmpeg tools, <var>option</var>=<var>value</var> for the aresample filter,
+by setting the value explicitly in the
+<code>SwrContext</code> options or using the &lsquo;<tt>libavutil/opt.h</tt>&rsquo; API for
+programmatic use.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>ich, in_channel_count</samp>&rsquo;</dt>
+<dd><p>Set the number of input channels. Default value is 0. Setting this
+value is not mandatory if the corresponding channel layout
+&lsquo;<samp>in_channel_layout</samp>&rsquo; is set.
+</p>
+</dd>
+<dt> &lsquo;<samp>och, out_channel_count</samp>&rsquo;</dt>
+<dd><p>Set the number of output channels. Default value is 0. Setting this
+value is not mandatory if the corresponding channel layout
+&lsquo;<samp>out_channel_layout</samp>&rsquo; is set.
+</p>
+</dd>
+<dt> &lsquo;<samp>uch, used_channel_count</samp>&rsquo;</dt>
+<dd><p>Set the number of used input channels. Default value is 0. This option is
+only used for special remapping.
+</p>
+</dd>
+<dt> &lsquo;<samp>isr, in_sample_rate</samp>&rsquo;</dt>
+<dd><p>Set the input sample rate. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>osr, out_sample_rate</samp>&rsquo;</dt>
+<dd><p>Set the output sample rate. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>isf, in_sample_fmt</samp>&rsquo;</dt>
+<dd><p>Specify the input sample format. It is set by default to <code>none</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>osf, out_sample_fmt</samp>&rsquo;</dt>
+<dd><p>Specify the output sample format. It is set by default to <code>none</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>tsf, internal_sample_fmt</samp>&rsquo;</dt>
+<dd><p>Set the internal sample format. Default value is <code>none</code>.
+This will automatically be chosen when it is not explicitly set.
+</p>
+</dd>
+<dt> &lsquo;<samp>icl, in_channel_layout</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ocl, out_channel_layout</samp>&rsquo;</dt>
+<dd><p>Set the input/output channel layout.
+</p>
+<p>See <a href="ffmpeg-utils.html#channel-layout-syntax">(ffmpeg-utils)channel layout syntax</a>
+for the required syntax.
+</p>
+</dd>
+<dt> &lsquo;<samp>clev, center_mix_level</samp>&rsquo;</dt>
+<dd><p>Set the center mix level. It is a value expressed in deciBel, and must be
+in the interval [-32,32].
+</p>
+</dd>
+<dt> &lsquo;<samp>slev, surround_mix_level</samp>&rsquo;</dt>
+<dd><p>Set the surround mix level. It is a value expressed in deciBel, and must
+be in the interval [-32,32].
+</p>
+</dd>
+<dt> &lsquo;<samp>lfe_mix_level</samp>&rsquo;</dt>
+<dd><p>Set LFE mix into non LFE level. It is used when there is a LFE input but no
+LFE output. It is a value expressed in deciBel, and must
+be in the interval [-32,32].
+</p>
+</dd>
+<dt> &lsquo;<samp>rmvol, rematrix_volume</samp>&rsquo;</dt>
+<dd><p>Set rematrix volume. Default value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>rematrix_maxval</samp>&rsquo;</dt>
+<dd><p>Set maximum output value for rematrixing.
+This can be used to prevent clipping vs. preventing volumn reduction
+A value of 1.0 prevents cliping.
+</p>
+</dd>
+<dt> &lsquo;<samp>flags, swr_flags</samp>&rsquo;</dt>
+<dd><p>Set flags used by the converter. Default value is 0.
+</p>
+<p>It supports the following individual flags:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>res</samp>&rsquo;</dt>
+<dd><p>force resampling, this flag forces resampling to be used even when the
+input and output sample rates match.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>dither_scale</samp>&rsquo;</dt>
+<dd><p>Set the dither scale. Default value is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>dither_method</samp>&rsquo;</dt>
+<dd><p>Set dither method. Default value is 0.
+</p>
+<p>Supported values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>rectangular</samp>&rsquo;</dt>
+<dd><p>select rectangular dither
+</p></dd>
+<dt> &lsquo;<samp>triangular</samp>&rsquo;</dt>
+<dd><p>select triangular dither
+</p></dd>
+<dt> &lsquo;<samp>triangular_hp</samp>&rsquo;</dt>
+<dd><p>select triangular dither with high pass
+</p></dd>
+<dt> &lsquo;<samp>lipshitz</samp>&rsquo;</dt>
+<dd><p>select lipshitz noise shaping dither
+</p></dd>
+<dt> &lsquo;<samp>shibata</samp>&rsquo;</dt>
+<dd><p>select shibata noise shaping dither
+</p></dd>
+<dt> &lsquo;<samp>low_shibata</samp>&rsquo;</dt>
+<dd><p>select low shibata noise shaping dither
+</p></dd>
+<dt> &lsquo;<samp>high_shibata</samp>&rsquo;</dt>
+<dd><p>select high shibata noise shaping dither
+</p></dd>
+<dt> &lsquo;<samp>f_weighted</samp>&rsquo;</dt>
+<dd><p>select f-weighted noise shaping dither
+</p></dd>
+<dt> &lsquo;<samp>modified_e_weighted</samp>&rsquo;</dt>
+<dd><p>select modified-e-weighted noise shaping dither
+</p></dd>
+<dt> &lsquo;<samp>improved_e_weighted</samp>&rsquo;</dt>
+<dd><p>select improved-e-weighted noise shaping dither
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>resampler</samp>&rsquo;</dt>
+<dd><p>Set resampling engine. Default value is swr.
+</p>
+<p>Supported values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>swr</samp>&rsquo;</dt>
+<dd><p>select the native SW Resampler; filter options precision and cheby are not
+applicable in this case.
+</p></dd>
+<dt> &lsquo;<samp>soxr</samp>&rsquo;</dt>
+<dd><p>select the SoX Resampler (where available); compensation, and filter options
+filter_size, phase_shift, filter_type &amp; kaiser_beta, are not applicable in this
+case.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>filter_size</samp>&rsquo;</dt>
+<dd><p>For swr only, set resampling filter size, default value is 32.
+</p>
+</dd>
+<dt> &lsquo;<samp>phase_shift</samp>&rsquo;</dt>
+<dd><p>For swr only, set resampling phase shift, default value is 10, and must be in
+the interval [0,30].
+</p>
+</dd>
+<dt> &lsquo;<samp>linear_interp</samp>&rsquo;</dt>
+<dd><p>Use Linear Interpolation if set to 1, default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>cutoff</samp>&rsquo;</dt>
+<dd><p>Set cutoff frequency (swr: 6dB point; soxr: 0dB point) ratio; must be a float
+value between 0 and 1.  Default value is 0.97 with swr, and 0.91 with soxr
+(which, with a sample-rate of 44100, preserves the entire audio band to 20kHz).
+</p>
+</dd>
+<dt> &lsquo;<samp>precision</samp>&rsquo;</dt>
+<dd><p>For soxr only, the precision in bits to which the resampled signal will be
+calculated.  The default value of 20 (which, with suitable dithering, is
+appropriate for a destination bit-depth of 16) gives SoX&rsquo;s &rsquo;High Quality&rsquo;; a
+value of 28 gives SoX&rsquo;s &rsquo;Very High Quality&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>cheby</samp>&rsquo;</dt>
+<dd><p>For soxr only, selects passband rolloff none (Chebyshev) &amp; higher-precision
+approximation for &rsquo;irrational&rsquo; ratios. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>async</samp>&rsquo;</dt>
+<dd><p>For swr only, simple 1 parameter audio sync to timestamps using stretching,
+squeezing, filling and trimming. Setting this to 1 will enable filling and
+trimming, larger values represent the maximum amount in samples that the data
+may be stretched or squeezed for each second.
+Default value is 0, thus no compensation is applied to make the samples match
+the audio timestamps.
+</p>
+</dd>
+<dt> &lsquo;<samp>first_pts</samp>&rsquo;</dt>
+<dd><p>For swr only, assume the first pts should be this value. The time unit is 1 / sample rate.
+This allows for padding/trimming at the start of stream. By default, no
+assumption is made about the first frame&rsquo;s expected pts, so no padding or
+trimming is done. For example, this could be set to 0 to pad the beginning with
+silence if an audio stream starts after the video stream or to trim any samples
+with a negative pts due to encoder delay.
+</p>
+</dd>
+<dt> &lsquo;<samp>min_comp</samp>&rsquo;</dt>
+<dd><p>For swr only, set the minimum difference between timestamps and audio data (in
+seconds) to trigger stretching/squeezing/filling or trimming of the
+data to make it match the timestamps. The default is that
+stretching/squeezing/filling and trimming is disabled
+(&lsquo;<samp>min_comp</samp>&rsquo; = <code>FLT_MAX</code>).
+</p>
+</dd>
+<dt> &lsquo;<samp>min_hard_comp</samp>&rsquo;</dt>
+<dd><p>For swr only, set the minimum difference between timestamps and audio data (in
+seconds) to trigger adding/dropping samples to make it match the
+timestamps.  This option effectively is a threshold to select between
+hard (trim/fill) and soft (squeeze/stretch) compensation. Note that
+all compensation is by default disabled through &lsquo;<samp>min_comp</samp>&rsquo;.
+The default is 0.1.
+</p>
+</dd>
+<dt> &lsquo;<samp>comp_duration</samp>&rsquo;</dt>
+<dd><p>For swr only, set duration (in seconds) over which data is stretched/squeezed
+to make it match the timestamps. Must be a non-negative double float value,
+default value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>max_soft_comp</samp>&rsquo;</dt>
+<dd><p>For swr only, set maximum factor by which data is stretched/squeezed to make it
+match the timestamps. Must be a non-negative double float value, default value
+is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>matrix_encoding</samp>&rsquo;</dt>
+<dd><p>Select matrixed stereo encoding.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>select none
+</p></dd>
+<dt> &lsquo;<samp>dolby</samp>&rsquo;</dt>
+<dd><p>select Dolby
+</p></dd>
+<dt> &lsquo;<samp>dplii</samp>&rsquo;</dt>
+<dd><p>select Dolby Pro Logic II
+</p></dd>
+</dl>
+
+<p>Default value is <code>none</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>filter_type</samp>&rsquo;</dt>
+<dd><p>For swr only, select resampling filter type. This only affects resampling
+operations.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>cubic</samp>&rsquo;</dt>
+<dd><p>select cubic
+</p></dd>
+<dt> &lsquo;<samp>blackman_nuttall</samp>&rsquo;</dt>
+<dd><p>select Blackman Nuttall Windowed Sinc
+</p></dd>
+<dt> &lsquo;<samp>kaiser</samp>&rsquo;</dt>
+<dd><p>select Kaiser Windowed Sinc
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>kaiser_beta</samp>&rsquo;</dt>
+<dd><p>For swr only, set Kaiser Window Beta value. Must be an integer in the
+interval [2,16], default value is 9.
+</p>
+</dd>
+<dt> &lsquo;<samp>output_sample_bits</samp>&rsquo;</dt>
+<dd><p>For swr only, set number of used output sample bits for dithering. Must be an integer in the
+interval [0,64], default value is 0, which means it&rsquo;s not used.
+</p>
+</dd>
+</dl>
+
+
+<a name="See-Also"></a>
+<h1 class="chapter"><a href="ffmpeg-resampler.html#toc-See-Also">3. See Also</a></h1>
+
+<p><a href="ffmpeg.html">ffmpeg</a>, <a href="ffplay.html">ffplay</a>, <a href="ffprobe.html">ffprobe</a>, <a href="ffserver.html">ffserver</a>,
+<a href="libswresample.html">libswresample</a>
+</p>
+
+<a name="Authors"></a>
+<h1 class="chapter"><a href="ffmpeg-resampler.html#toc-Authors">4. Authors</a></h1>
+
+<p>The FFmpeg developers.
+</p>
+<p>For details about the authorship, see the Git history of the project
+(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
+<code>git log</code> in the FFmpeg source directory, or browsing the
+online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
+</p>
+<p>Maintainers for the specific components are listed in the file
+&lsquo;<tt>MAINTAINERS</tt>&rsquo; in the source code tree.
+</p>
+
+<footer class="footer pagination-right">
+<span class="label label-info">This document was generated by <em>Kyle Schwarz</em> on <em>December 14, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies/ffmpeg/doc/ffmpeg-scaler.html b/dependencies/ffmpeg/doc/ffmpeg-scaler.html
new file mode 100644 (file)
index 0000000..dc1abc0
--- /dev/null
@@ -0,0 +1,225 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on December 14, 2013 by texi2html 1.82 -->
+<!--
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>FFmpeg documentation : FFmpeg Scaler </title>
+
+<meta name="description" content="FFmpeg Scaler Documentation: ">
+<meta name="keywords" content="FFmpeg documentation : FFmpeg Scaler ">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="default.css" />
+
+<link rel="icon" href="favicon.png" type="image/png" />
+</head>
+<body>
+<div id="container">
+<div id="body">
+
+<a name="SEC_Top"></a>
+<h1 class="settitle">FFmpeg Scaler Documentation</h1>
+
+<a name="SEC_Contents"></a>
+<h1>Table of Contents</h1>
+<div class="contents">
+
+<ul class="toc">
+  <li><a name="toc-Description" href="#Description">1. Description</a></li>
+  <li><a name="toc-Scaler-Options" href="#Scaler-Options">2. Scaler Options</a></li>
+  <li><a name="toc-See-Also" href="#See-Also">3. See Also</a></li>
+  <li><a name="toc-Authors" href="#Authors">4. Authors</a></li>
+</ul>
+</div>
+
+<a name="Description"></a>
+<h1 class="chapter"><a href="ffmpeg-scaler.html#toc-Description">1. Description</a></h1>
+
+<p>The FFmpeg rescaler provides a high-level interface to the libswscale
+library image conversion utilities. In particular it allows to perform
+image rescaling and pixel format conversion.
+</p>
+
+<p><a name="scaler_005foptions"></a>
+</p><a name="Scaler-Options"></a>
+<h1 class="chapter"><a href="ffmpeg-scaler.html#toc-Scaler-Options">2. Scaler Options</a></h1>
+
+<p>The video scaler supports the following named options.
+</p>
+<p>Options may be set by specifying -<var>option</var> <var>value</var> in the
+FFmpeg tools. For programmatic use, they can be set explicitly in the
+<code>SwsContext</code> options or through the &lsquo;<tt>libavutil/opt.h</tt>&rsquo; API.
+</p>
+<dl compact="compact">
+<dd>
+<p><a name="sws_005fflags"></a>
+</p></dd>
+<dt> &lsquo;<samp>sws_flags</samp>&rsquo;</dt>
+<dd><p>Set the scaler flags. This is also used to set the scaling
+algorithm. Only a single algorithm should be selected.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>fast_bilinear</samp>&rsquo;</dt>
+<dd><p>Select fast bilinear scaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>bilinear</samp>&rsquo;</dt>
+<dd><p>Select bilinear scaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>bicubic</samp>&rsquo;</dt>
+<dd><p>Select bicubic scaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>experimental</samp>&rsquo;</dt>
+<dd><p>Select experimental scaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>neighbor</samp>&rsquo;</dt>
+<dd><p>Select nearest neighbor rescaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>area</samp>&rsquo;</dt>
+<dd><p>Select averaging area rescaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>bicubiclin</samp>&rsquo;</dt>
+<dd><p>Select bicubic scaling algorithm for the luma component, bilinear for
+chroma components.
+</p>
+</dd>
+<dt> &lsquo;<samp>gauss</samp>&rsquo;</dt>
+<dd><p>Select Gaussian rescaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>sinc</samp>&rsquo;</dt>
+<dd><p>Select sinc rescaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>lanczos</samp>&rsquo;</dt>
+<dd><p>Select lanczos rescaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>spline</samp>&rsquo;</dt>
+<dd><p>Select natural bicubic spline rescaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>print_info</samp>&rsquo;</dt>
+<dd><p>Enable printing/debug logging.
+</p>
+</dd>
+<dt> &lsquo;<samp>accurate_rnd</samp>&rsquo;</dt>
+<dd><p>Enable accurate rounding.
+</p>
+</dd>
+<dt> &lsquo;<samp>full_chroma_int</samp>&rsquo;</dt>
+<dd><p>Enable full chroma interpolation.
+</p>
+</dd>
+<dt> &lsquo;<samp>full_chroma_inp</samp>&rsquo;</dt>
+<dd><p>Select full chroma input.
+</p>
+</dd>
+<dt> &lsquo;<samp>bitexact</samp>&rsquo;</dt>
+<dd><p>Enable bitexact output.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>srcw</samp>&rsquo;</dt>
+<dd><p>Set source width.
+</p>
+</dd>
+<dt> &lsquo;<samp>srch</samp>&rsquo;</dt>
+<dd><p>Set source height.
+</p>
+</dd>
+<dt> &lsquo;<samp>dstw</samp>&rsquo;</dt>
+<dd><p>Set destination width.
+</p>
+</dd>
+<dt> &lsquo;<samp>dsth</samp>&rsquo;</dt>
+<dd><p>Set destination height.
+</p>
+</dd>
+<dt> &lsquo;<samp>src_format</samp>&rsquo;</dt>
+<dd><p>Set source pixel format (must be expressed as an integer).
+</p>
+</dd>
+<dt> &lsquo;<samp>dst_format</samp>&rsquo;</dt>
+<dd><p>Set destination pixel format (must be expressed as an integer).
+</p>
+</dd>
+<dt> &lsquo;<samp>src_range</samp>&rsquo;</dt>
+<dd><p>Select source range.
+</p>
+</dd>
+<dt> &lsquo;<samp>dst_range</samp>&rsquo;</dt>
+<dd><p>Select destination range.
+</p>
+</dd>
+<dt> &lsquo;<samp>param0, param1</samp>&rsquo;</dt>
+<dd><p>Set scaling algorithm parameters. The specified values are specific of
+some scaling algorithms and ignored by others. The specified values
+are floating point number values.
+</p>
+</dd>
+<dt> &lsquo;<samp>sws_dither</samp>&rsquo;</dt>
+<dd><p>Set the dithering algorithm. Accepts one of the following
+values. Default value is &lsquo;<samp>auto</samp>&rsquo;.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>automatic choice
+</p>
+</dd>
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>no dithering
+</p>
+</dd>
+<dt> &lsquo;<samp>bayer</samp>&rsquo;</dt>
+<dd><p>bayer dither
+</p>
+</dd>
+<dt> &lsquo;<samp>ed</samp>&rsquo;</dt>
+<dd><p>error diffusion dither
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+
+<a name="See-Also"></a>
+<h1 class="chapter"><a href="ffmpeg-scaler.html#toc-See-Also">3. See Also</a></h1>
+
+<p><a href="ffmpeg.html">ffmpeg</a>, <a href="ffplay.html">ffplay</a>, <a href="ffprobe.html">ffprobe</a>, <a href="ffserver.html">ffserver</a>,
+<a href="libswscale.html">libswscale</a>
+</p>
+
+<a name="Authors"></a>
+<h1 class="chapter"><a href="ffmpeg-scaler.html#toc-Authors">4. Authors</a></h1>
+
+<p>The FFmpeg developers.
+</p>
+<p>For details about the authorship, see the Git history of the project
+(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
+<code>git log</code> in the FFmpeg source directory, or browsing the
+online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
+</p>
+<p>Maintainers for the specific components are listed in the file
+&lsquo;<tt>MAINTAINERS</tt>&rsquo; in the source code tree.
+</p>
+
+<footer class="footer pagination-right">
+<span class="label label-info">This document was generated by <em>Kyle Schwarz</em> on <em>December 14, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies/ffmpeg/doc/ffmpeg-utils.html b/dependencies/ffmpeg/doc/ffmpeg-utils.html
new file mode 100644 (file)
index 0000000..2175714
--- /dev/null
@@ -0,0 +1,1477 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on December 14, 2013 by texi2html 1.82 -->
+<!--
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>FFmpeg documentation : FFmpeg Utilities </title>
+
+<meta name="description" content="FFmpeg Utilities Documentation: ">
+<meta name="keywords" content="FFmpeg documentation : FFmpeg Utilities ">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="default.css" />
+
+<link rel="icon" href="favicon.png" type="image/png" />
+</head>
+<body>
+<div id="container">
+<div id="body">
+
+<a name="SEC_Top"></a>
+<h1 class="settitle">FFmpeg Utilities Documentation</h1>
+
+<a name="SEC_Contents"></a>
+<h1>Table of Contents</h1>
+<div class="contents">
+
+<ul class="toc">
+  <li><a name="toc-Description" href="#Description">1. Description</a></li>
+  <li><a name="toc-Syntax" href="#Syntax">2. Syntax</a>
+  <ul class="toc">
+    <li><a name="toc-Quoting-and-escaping" href="#Quoting-and-escaping">2.1 Quoting and escaping</a>
+    <ul class="toc">
+      <li><a name="toc-Examples" href="#Examples">2.1.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-Date" href="#Date">2.2 Date</a></li>
+    <li><a name="toc-Time-duration" href="#Time-duration">2.3 Time duration</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-1" href="#Examples-1">2.3.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-Video-size" href="#Video-size">2.4 Video size</a></li>
+    <li><a name="toc-Video-rate" href="#Video-rate">2.5 Video rate</a></li>
+    <li><a name="toc-Ratio" href="#Ratio">2.6 Ratio</a></li>
+    <li><a name="toc-Color" href="#Color">2.7 Color</a></li>
+    <li><a name="toc-Channel-Layout" href="#Channel-Layout">2.8 Channel Layout</a></li>
+  </ul></li>
+  <li><a name="toc-Expression-Evaluation" href="#Expression-Evaluation">3. Expression Evaluation</a></li>
+  <li><a name="toc-OpenCL-Options" href="#OpenCL-Options">4. OpenCL Options</a></li>
+  <li><a name="toc-See-Also" href="#See-Also">5. See Also</a></li>
+  <li><a name="toc-Authors" href="#Authors">6. Authors</a></li>
+</ul>
+</div>
+
+<a name="Description"></a>
+<h1 class="chapter"><a href="ffmpeg-utils.html#toc-Description">1. Description</a></h1>
+
+<p>This document describes some generic features and utilities provided
+by the libavutil library.
+</p>
+
+<a name="Syntax"></a>
+<h1 class="chapter"><a href="ffmpeg-utils.html#toc-Syntax">2. Syntax</a></h1>
+
+<p>This section documents the syntax and formats employed by the FFmpeg
+libraries and tools.
+</p>
+<p><a name="quoting_005fand_005fescaping"></a>
+</p><a name="Quoting-and-escaping"></a>
+<h2 class="section"><a href="ffmpeg-utils.html#toc-Quoting-and-escaping">2.1 Quoting and escaping</a></h2>
+
+<p>FFmpeg adopts the following quoting and escaping mechanism, unless
+explicitly specified. The following rules are applied:
+</p>
+<ul>
+<li>
+<code>'</code> and <code>\</code> are special characters (respectively used for
+quoting and escaping). In addition to them, there might be other
+special characters depending on the specific syntax where the escaping
+and quoting are employed.
+
+</li><li>
+A special character is escaped by prefixing it with a &rsquo;\&rsquo;.
+
+</li><li>
+All characters enclosed between &rdquo; are included literally in the
+parsed string. The quote character <code>'</code> itself cannot be quoted,
+so you may need to close the quote and escape it.
+
+</li><li>
+Leading and trailing whitespaces, unless escaped or quoted, are
+removed from the parsed string.
+</li></ul>
+
+<p>Note that you may need to add a second level of escaping when using
+the command line or a script, which depends on the syntax of the
+adopted shell language.
+</p>
+<p>The function <code>av_get_token</code> defined in
+&lsquo;<tt>libavutil/avstring.h</tt>&rsquo; can be used to parse a token quoted or
+escaped according to the rules defined above.
+</p>
+<p>The tool &lsquo;<tt>tools/ffescape</tt>&rsquo; in the FFmpeg source tree can be used
+to automatically quote or escape a string in a script.
+</p>
+<a name="Examples"></a>
+<h3 class="subsection"><a href="ffmpeg-utils.html#toc-Examples">2.1.1 Examples</a></h3>
+
+<ul>
+<li>
+Escape the string <code>Crime d'Amour</code> containing the <code>'</code> special
+character:
+<table><tr><td>&nbsp;</td><td><pre class="example">Crime d\'Amour
+</pre></td></tr></table>
+
+</li><li>
+The string above contains a quote, so the <code>'</code> needs to be escaped
+when quoting it:
+<table><tr><td>&nbsp;</td><td><pre class="example">'Crime d'\''Amour'
+</pre></td></tr></table>
+
+</li><li>
+Include leading or trailing whitespaces using quoting:
+<table><tr><td>&nbsp;</td><td><pre class="example">'  this string starts and ends with whitespaces  '
+</pre></td></tr></table>
+
+</li><li>
+Escaping and quoting can be mixed together:
+<table><tr><td>&nbsp;</td><td><pre class="example">' The string '\'string\'' is a string '
+</pre></td></tr></table>
+
+</li><li>
+To include a literal <code>\</code> you can use either escaping or quoting:
+<table><tr><td>&nbsp;</td><td><pre class="example">'c:\foo' can be written as c:\\foo
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="date-syntax"></a>
+</p><a name="Date"></a>
+<h2 class="section"><a href="ffmpeg-utils.html#toc-Date">2.2 Date</a></h2>
+
+<p>The accepted syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[(YYYY-MM-DD|YYYYMMDD)[T|t| ]]((HH:MM:SS[.m...]]])|(HHMMSS[.m...]]]))[Z]
+now
+</pre></td></tr></table>
+
+<p>If the value is &quot;now&quot; it takes the current time.
+</p>
+<p>Time is local time unless Z is appended, in which case it is
+interpreted as UTC.
+If the year-month-day part is not specified it takes the current
+year-month-day.
+</p>
+<p><a name="time-duration-syntax"></a>
+</p><a name="Time-duration"></a>
+<h2 class="section"><a href="ffmpeg-utils.html#toc-Time-duration">2.3 Time duration</a></h2>
+
+<p>There are two accepted syntaxes for expressing time duration.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">[-][<var>HH</var>:]<var>MM</var>:<var>SS</var>[.<var>m</var>...]
+</pre></td></tr></table>
+
+<p><var>HH</var> expresses the number of hours, <var>MM</var> the number of minutes
+for a maximum of 2 digits, and <var>SS</var> the number of seconds for a
+maximum of 2 digits. The <var>m</var> at the end expresses decimal value for
+<var>SS</var>.
+</p>
+<p><em>or</em>
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">[-]<var>S</var>+[.<var>m</var>...]
+</pre></td></tr></table>
+
+<p><var>S</var> expresses the number of seconds, with the optional decimal part
+<var>m</var>.
+</p>
+<p>In both expressions, the optional &lsquo;<samp>-</samp>&rsquo; indicates negative duration.
+</p>
+<a name="Examples-1"></a>
+<h3 class="subsection"><a href="ffmpeg-utils.html#toc-Examples-1">2.3.1 Examples</a></h3>
+
+<p>The following examples are all valid time duration:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>55</samp>&rsquo;</dt>
+<dd><p>55 seconds
+</p>
+</dd>
+<dt> &lsquo;<samp>12:03:45</samp>&rsquo;</dt>
+<dd><p>12 hours, 03 minutes and 45 seconds
+</p>
+</dd>
+<dt> &lsquo;<samp>23.189</samp>&rsquo;</dt>
+<dd><p>23.189 seconds
+</p></dd>
+</dl>
+
+<p><a name="video-size-syntax"></a>
+</p><a name="Video-size"></a>
+<h2 class="section"><a href="ffmpeg-utils.html#toc-Video-size">2.4 Video size</a></h2>
+<p>Specify the size of the sourced video, it may be a string of the form
+<var>width</var>x<var>height</var>, or the name of a size abbreviation.
+</p>
+<p>The following abbreviations are recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>ntsc</samp>&rsquo;</dt>
+<dd><p>720x480
+</p></dd>
+<dt> &lsquo;<samp>pal</samp>&rsquo;</dt>
+<dd><p>720x576
+</p></dd>
+<dt> &lsquo;<samp>qntsc</samp>&rsquo;</dt>
+<dd><p>352x240
+</p></dd>
+<dt> &lsquo;<samp>qpal</samp>&rsquo;</dt>
+<dd><p>352x288
+</p></dd>
+<dt> &lsquo;<samp>sntsc</samp>&rsquo;</dt>
+<dd><p>640x480
+</p></dd>
+<dt> &lsquo;<samp>spal</samp>&rsquo;</dt>
+<dd><p>768x576
+</p></dd>
+<dt> &lsquo;<samp>film</samp>&rsquo;</dt>
+<dd><p>352x240
+</p></dd>
+<dt> &lsquo;<samp>ntsc-film</samp>&rsquo;</dt>
+<dd><p>352x240
+</p></dd>
+<dt> &lsquo;<samp>sqcif</samp>&rsquo;</dt>
+<dd><p>128x96
+</p></dd>
+<dt> &lsquo;<samp>qcif</samp>&rsquo;</dt>
+<dd><p>176x144
+</p></dd>
+<dt> &lsquo;<samp>cif</samp>&rsquo;</dt>
+<dd><p>352x288
+</p></dd>
+<dt> &lsquo;<samp>4cif</samp>&rsquo;</dt>
+<dd><p>704x576
+</p></dd>
+<dt> &lsquo;<samp>16cif</samp>&rsquo;</dt>
+<dd><p>1408x1152
+</p></dd>
+<dt> &lsquo;<samp>qqvga</samp>&rsquo;</dt>
+<dd><p>160x120
+</p></dd>
+<dt> &lsquo;<samp>qvga</samp>&rsquo;</dt>
+<dd><p>320x240
+</p></dd>
+<dt> &lsquo;<samp>vga</samp>&rsquo;</dt>
+<dd><p>640x480
+</p></dd>
+<dt> &lsquo;<samp>svga</samp>&rsquo;</dt>
+<dd><p>800x600
+</p></dd>
+<dt> &lsquo;<samp>xga</samp>&rsquo;</dt>
+<dd><p>1024x768
+</p></dd>
+<dt> &lsquo;<samp>uxga</samp>&rsquo;</dt>
+<dd><p>1600x1200
+</p></dd>
+<dt> &lsquo;<samp>qxga</samp>&rsquo;</dt>
+<dd><p>2048x1536
+</p></dd>
+<dt> &lsquo;<samp>sxga</samp>&rsquo;</dt>
+<dd><p>1280x1024
+</p></dd>
+<dt> &lsquo;<samp>qsxga</samp>&rsquo;</dt>
+<dd><p>2560x2048
+</p></dd>
+<dt> &lsquo;<samp>hsxga</samp>&rsquo;</dt>
+<dd><p>5120x4096
+</p></dd>
+<dt> &lsquo;<samp>wvga</samp>&rsquo;</dt>
+<dd><p>852x480
+</p></dd>
+<dt> &lsquo;<samp>wxga</samp>&rsquo;</dt>
+<dd><p>1366x768
+</p></dd>
+<dt> &lsquo;<samp>wsxga</samp>&rsquo;</dt>
+<dd><p>1600x1024
+</p></dd>
+<dt> &lsquo;<samp>wuxga</samp>&rsquo;</dt>
+<dd><p>1920x1200
+</p></dd>
+<dt> &lsquo;<samp>woxga</samp>&rsquo;</dt>
+<dd><p>2560x1600
+</p></dd>
+<dt> &lsquo;<samp>wqsxga</samp>&rsquo;</dt>
+<dd><p>3200x2048
+</p></dd>
+<dt> &lsquo;<samp>wquxga</samp>&rsquo;</dt>
+<dd><p>3840x2400
+</p></dd>
+<dt> &lsquo;<samp>whsxga</samp>&rsquo;</dt>
+<dd><p>6400x4096
+</p></dd>
+<dt> &lsquo;<samp>whuxga</samp>&rsquo;</dt>
+<dd><p>7680x4800
+</p></dd>
+<dt> &lsquo;<samp>cga</samp>&rsquo;</dt>
+<dd><p>320x200
+</p></dd>
+<dt> &lsquo;<samp>ega</samp>&rsquo;</dt>
+<dd><p>640x350
+</p></dd>
+<dt> &lsquo;<samp>hd480</samp>&rsquo;</dt>
+<dd><p>852x480
+</p></dd>
+<dt> &lsquo;<samp>hd720</samp>&rsquo;</dt>
+<dd><p>1280x720
+</p></dd>
+<dt> &lsquo;<samp>hd1080</samp>&rsquo;</dt>
+<dd><p>1920x1080
+</p></dd>
+<dt> &lsquo;<samp>2k</samp>&rsquo;</dt>
+<dd><p>2048x1080
+</p></dd>
+<dt> &lsquo;<samp>2kflat</samp>&rsquo;</dt>
+<dd><p>1998x1080
+</p></dd>
+<dt> &lsquo;<samp>2kscope</samp>&rsquo;</dt>
+<dd><p>2048x858
+</p></dd>
+<dt> &lsquo;<samp>4k</samp>&rsquo;</dt>
+<dd><p>4096x2160
+</p></dd>
+<dt> &lsquo;<samp>4kflat</samp>&rsquo;</dt>
+<dd><p>3996x2160
+</p></dd>
+<dt> &lsquo;<samp>4kscope</samp>&rsquo;</dt>
+<dd><p>4096x1716
+</p></dd>
+<dt> &lsquo;<samp>nhd</samp>&rsquo;</dt>
+<dd><p>640x360
+</p></dd>
+<dt> &lsquo;<samp>hqvga</samp>&rsquo;</dt>
+<dd><p>240x160
+</p></dd>
+<dt> &lsquo;<samp>wqvga</samp>&rsquo;</dt>
+<dd><p>400x240
+</p></dd>
+<dt> &lsquo;<samp>fwqvga</samp>&rsquo;</dt>
+<dd><p>432x240
+</p></dd>
+<dt> &lsquo;<samp>hvga</samp>&rsquo;</dt>
+<dd><p>480x320
+</p></dd>
+<dt> &lsquo;<samp>qhd</samp>&rsquo;</dt>
+<dd><p>960x540
+</p></dd>
+</dl>
+
+<p><a name="video-rate-syntax"></a>
+</p><a name="Video-rate"></a>
+<h2 class="section"><a href="ffmpeg-utils.html#toc-Video-rate">2.5 Video rate</a></h2>
+
+<p>Specify the frame rate of a video, expressed as the number of frames
+generated per second. It has to be a string in the format
+<var>frame_rate_num</var>/<var>frame_rate_den</var>, an integer number, a float
+number or a valid video frame rate abbreviation.
+</p>
+<p>The following abbreviations are recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>ntsc</samp>&rsquo;</dt>
+<dd><p>30000/1001
+</p></dd>
+<dt> &lsquo;<samp>pal</samp>&rsquo;</dt>
+<dd><p>25/1
+</p></dd>
+<dt> &lsquo;<samp>qntsc</samp>&rsquo;</dt>
+<dd><p>30000/1001
+</p></dd>
+<dt> &lsquo;<samp>qpal</samp>&rsquo;</dt>
+<dd><p>25/1
+</p></dd>
+<dt> &lsquo;<samp>sntsc</samp>&rsquo;</dt>
+<dd><p>30000/1001
+</p></dd>
+<dt> &lsquo;<samp>spal</samp>&rsquo;</dt>
+<dd><p>25/1
+</p></dd>
+<dt> &lsquo;<samp>film</samp>&rsquo;</dt>
+<dd><p>24/1
+</p></dd>
+<dt> &lsquo;<samp>ntsc-film</samp>&rsquo;</dt>
+<dd><p>24000/1001
+</p></dd>
+</dl>
+
+<p><a name="ratio-syntax"></a>
+</p><a name="Ratio"></a>
+<h2 class="section"><a href="ffmpeg-utils.html#toc-Ratio">2.6 Ratio</a></h2>
+
+<p>A ratio can be expressed as an expression, or in the form
+<var>numerator</var>:<var>denominator</var>.
+</p>
+<p>Note that a ratio with infinite (1/0) or negative value is
+considered valid, so you should check on the returned value if you
+want to exclude those values.
+</p>
+<p>The undefined value can be expressed using the &quot;0:0&quot; string.
+</p>
+<p><a name="color-syntax"></a>
+</p><a name="Color"></a>
+<h2 class="section"><a href="ffmpeg-utils.html#toc-Color">2.7 Color</a></h2>
+
+<p>It can be the name of a color as defined below (case insensitive match) or a
+<code>[0x|#]RRGGBB[AA]</code> sequence, possibly followed by @ and a string
+representing the alpha component.
+</p>
+<p>The alpha component may be a string composed by &quot;0x&quot; followed by an
+hexadecimal number or a decimal number between 0.0 and 1.0, which
+represents the opacity value (&lsquo;<samp>0x00</samp>&rsquo; or &lsquo;<samp>0.0</samp>&rsquo; means completely
+transparent, &lsquo;<samp>0xff</samp>&rsquo; or &lsquo;<samp>1.0</samp>&rsquo; completely opaque). If the alpha
+component is not specified then &lsquo;<samp>0xff</samp>&rsquo; is assumed.
+</p>
+<p>The string &lsquo;<samp>random</samp>&rsquo; will result in a random color.
+</p>
+<p>The following names of colors are recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>AliceBlue</samp>&rsquo;</dt>
+<dd><p>0xF0F8FF
+</p></dd>
+<dt> &lsquo;<samp>AntiqueWhite</samp>&rsquo;</dt>
+<dd><p>0xFAEBD7
+</p></dd>
+<dt> &lsquo;<samp>Aqua</samp>&rsquo;</dt>
+<dd><p>0x00FFFF
+</p></dd>
+<dt> &lsquo;<samp>Aquamarine</samp>&rsquo;</dt>
+<dd><p>0x7FFFD4
+</p></dd>
+<dt> &lsquo;<samp>Azure</samp>&rsquo;</dt>
+<dd><p>0xF0FFFF
+</p></dd>
+<dt> &lsquo;<samp>Beige</samp>&rsquo;</dt>
+<dd><p>0xF5F5DC
+</p></dd>
+<dt> &lsquo;<samp>Bisque</samp>&rsquo;</dt>
+<dd><p>0xFFE4C4
+</p></dd>
+<dt> &lsquo;<samp>Black</samp>&rsquo;</dt>
+<dd><p>0x000000
+</p></dd>
+<dt> &lsquo;<samp>BlanchedAlmond</samp>&rsquo;</dt>
+<dd><p>0xFFEBCD
+</p></dd>
+<dt> &lsquo;<samp>Blue</samp>&rsquo;</dt>
+<dd><p>0x0000FF
+</p></dd>
+<dt> &lsquo;<samp>BlueViolet</samp>&rsquo;</dt>
+<dd><p>0x8A2BE2
+</p></dd>
+<dt> &lsquo;<samp>Brown</samp>&rsquo;</dt>
+<dd><p>0xA52A2A
+</p></dd>
+<dt> &lsquo;<samp>BurlyWood</samp>&rsquo;</dt>
+<dd><p>0xDEB887
+</p></dd>
+<dt> &lsquo;<samp>CadetBlue</samp>&rsquo;</dt>
+<dd><p>0x5F9EA0
+</p></dd>
+<dt> &lsquo;<samp>Chartreuse</samp>&rsquo;</dt>
+<dd><p>0x7FFF00
+</p></dd>
+<dt> &lsquo;<samp>Chocolate</samp>&rsquo;</dt>
+<dd><p>0xD2691E
+</p></dd>
+<dt> &lsquo;<samp>Coral</samp>&rsquo;</dt>
+<dd><p>0xFF7F50
+</p></dd>
+<dt> &lsquo;<samp>CornflowerBlue</samp>&rsquo;</dt>
+<dd><p>0x6495ED
+</p></dd>
+<dt> &lsquo;<samp>Cornsilk</samp>&rsquo;</dt>
+<dd><p>0xFFF8DC
+</p></dd>
+<dt> &lsquo;<samp>Crimson</samp>&rsquo;</dt>
+<dd><p>0xDC143C
+</p></dd>
+<dt> &lsquo;<samp>Cyan</samp>&rsquo;</dt>
+<dd><p>0x00FFFF
+</p></dd>
+<dt> &lsquo;<samp>DarkBlue</samp>&rsquo;</dt>
+<dd><p>0x00008B
+</p></dd>
+<dt> &lsquo;<samp>DarkCyan</samp>&rsquo;</dt>
+<dd><p>0x008B8B
+</p></dd>
+<dt> &lsquo;<samp>DarkGoldenRod</samp>&rsquo;</dt>
+<dd><p>0xB8860B
+</p></dd>
+<dt> &lsquo;<samp>DarkGray</samp>&rsquo;</dt>
+<dd><p>0xA9A9A9
+</p></dd>
+<dt> &lsquo;<samp>DarkGreen</samp>&rsquo;</dt>
+<dd><p>0x006400
+</p></dd>
+<dt> &lsquo;<samp>DarkKhaki</samp>&rsquo;</dt>
+<dd><p>0xBDB76B
+</p></dd>
+<dt> &lsquo;<samp>DarkMagenta</samp>&rsquo;</dt>
+<dd><p>0x8B008B
+</p></dd>
+<dt> &lsquo;<samp>DarkOliveGreen</samp>&rsquo;</dt>
+<dd><p>0x556B2F
+</p></dd>
+<dt> &lsquo;<samp>Darkorange</samp>&rsquo;</dt>
+<dd><p>0xFF8C00
+</p></dd>
+<dt> &lsquo;<samp>DarkOrchid</samp>&rsquo;</dt>
+<dd><p>0x9932CC
+</p></dd>
+<dt> &lsquo;<samp>DarkRed</samp>&rsquo;</dt>
+<dd><p>0x8B0000
+</p></dd>
+<dt> &lsquo;<samp>DarkSalmon</samp>&rsquo;</dt>
+<dd><p>0xE9967A
+</p></dd>
+<dt> &lsquo;<samp>DarkSeaGreen</samp>&rsquo;</dt>
+<dd><p>0x8FBC8F
+</p></dd>
+<dt> &lsquo;<samp>DarkSlateBlue</samp>&rsquo;</dt>
+<dd><p>0x483D8B
+</p></dd>
+<dt> &lsquo;<samp>DarkSlateGray</samp>&rsquo;</dt>
+<dd><p>0x2F4F4F
+</p></dd>
+<dt> &lsquo;<samp>DarkTurquoise</samp>&rsquo;</dt>
+<dd><p>0x00CED1
+</p></dd>
+<dt> &lsquo;<samp>DarkViolet</samp>&rsquo;</dt>
+<dd><p>0x9400D3
+</p></dd>
+<dt> &lsquo;<samp>DeepPink</samp>&rsquo;</dt>
+<dd><p>0xFF1493
+</p></dd>
+<dt> &lsquo;<samp>DeepSkyBlue</samp>&rsquo;</dt>
+<dd><p>0x00BFFF
+</p></dd>
+<dt> &lsquo;<samp>DimGray</samp>&rsquo;</dt>
+<dd><p>0x696969
+</p></dd>
+<dt> &lsquo;<samp>DodgerBlue</samp>&rsquo;</dt>
+<dd><p>0x1E90FF
+</p></dd>
+<dt> &lsquo;<samp>FireBrick</samp>&rsquo;</dt>
+<dd><p>0xB22222
+</p></dd>
+<dt> &lsquo;<samp>FloralWhite</samp>&rsquo;</dt>
+<dd><p>0xFFFAF0
+</p></dd>
+<dt> &lsquo;<samp>ForestGreen</samp>&rsquo;</dt>
+<dd><p>0x228B22
+</p></dd>
+<dt> &lsquo;<samp>Fuchsia</samp>&rsquo;</dt>
+<dd><p>0xFF00FF
+</p></dd>
+<dt> &lsquo;<samp>Gainsboro</samp>&rsquo;</dt>
+<dd><p>0xDCDCDC
+</p></dd>
+<dt> &lsquo;<samp>GhostWhite</samp>&rsquo;</dt>
+<dd><p>0xF8F8FF
+</p></dd>
+<dt> &lsquo;<samp>Gold</samp>&rsquo;</dt>
+<dd><p>0xFFD700
+</p></dd>
+<dt> &lsquo;<samp>GoldenRod</samp>&rsquo;</dt>
+<dd><p>0xDAA520
+</p></dd>
+<dt> &lsquo;<samp>Gray</samp>&rsquo;</dt>
+<dd><p>0x808080
+</p></dd>
+<dt> &lsquo;<samp>Green</samp>&rsquo;</dt>
+<dd><p>0x008000
+</p></dd>
+<dt> &lsquo;<samp>GreenYellow</samp>&rsquo;</dt>
+<dd><p>0xADFF2F
+</p></dd>
+<dt> &lsquo;<samp>HoneyDew</samp>&rsquo;</dt>
+<dd><p>0xF0FFF0
+</p></dd>
+<dt> &lsquo;<samp>HotPink</samp>&rsquo;</dt>
+<dd><p>0xFF69B4
+</p></dd>
+<dt> &lsquo;<samp>IndianRed</samp>&rsquo;</dt>
+<dd><p>0xCD5C5C
+</p></dd>
+<dt> &lsquo;<samp>Indigo</samp>&rsquo;</dt>
+<dd><p>0x4B0082
+</p></dd>
+<dt> &lsquo;<samp>Ivory</samp>&rsquo;</dt>
+<dd><p>0xFFFFF0
+</p></dd>
+<dt> &lsquo;<samp>Khaki</samp>&rsquo;</dt>
+<dd><p>0xF0E68C
+</p></dd>
+<dt> &lsquo;<samp>Lavender</samp>&rsquo;</dt>
+<dd><p>0xE6E6FA
+</p></dd>
+<dt> &lsquo;<samp>LavenderBlush</samp>&rsquo;</dt>
+<dd><p>0xFFF0F5
+</p></dd>
+<dt> &lsquo;<samp>LawnGreen</samp>&rsquo;</dt>
+<dd><p>0x7CFC00
+</p></dd>
+<dt> &lsquo;<samp>LemonChiffon</samp>&rsquo;</dt>
+<dd><p>0xFFFACD
+</p></dd>
+<dt> &lsquo;<samp>LightBlue</samp>&rsquo;</dt>
+<dd><p>0xADD8E6
+</p></dd>
+<dt> &lsquo;<samp>LightCoral</samp>&rsquo;</dt>
+<dd><p>0xF08080
+</p></dd>
+<dt> &lsquo;<samp>LightCyan</samp>&rsquo;</dt>
+<dd><p>0xE0FFFF
+</p></dd>
+<dt> &lsquo;<samp>LightGoldenRodYellow</samp>&rsquo;</dt>
+<dd><p>0xFAFAD2
+</p></dd>
+<dt> &lsquo;<samp>LightGreen</samp>&rsquo;</dt>
+<dd><p>0x90EE90
+</p></dd>
+<dt> &lsquo;<samp>LightGrey</samp>&rsquo;</dt>
+<dd><p>0xD3D3D3
+</p></dd>
+<dt> &lsquo;<samp>LightPink</samp>&rsquo;</dt>
+<dd><p>0xFFB6C1
+</p></dd>
+<dt> &lsquo;<samp>LightSalmon</samp>&rsquo;</dt>
+<dd><p>0xFFA07A
+</p></dd>
+<dt> &lsquo;<samp>LightSeaGreen</samp>&rsquo;</dt>
+<dd><p>0x20B2AA
+</p></dd>
+<dt> &lsquo;<samp>LightSkyBlue</samp>&rsquo;</dt>
+<dd><p>0x87CEFA
+</p></dd>
+<dt> &lsquo;<samp>LightSlateGray</samp>&rsquo;</dt>
+<dd><p>0x778899
+</p></dd>
+<dt> &lsquo;<samp>LightSteelBlue</samp>&rsquo;</dt>
+<dd><p>0xB0C4DE
+</p></dd>
+<dt> &lsquo;<samp>LightYellow</samp>&rsquo;</dt>
+<dd><p>0xFFFFE0
+</p></dd>
+<dt> &lsquo;<samp>Lime</samp>&rsquo;</dt>
+<dd><p>0x00FF00
+</p></dd>
+<dt> &lsquo;<samp>LimeGreen</samp>&rsquo;</dt>
+<dd><p>0x32CD32
+</p></dd>
+<dt> &lsquo;<samp>Linen</samp>&rsquo;</dt>
+<dd><p>0xFAF0E6
+</p></dd>
+<dt> &lsquo;<samp>Magenta</samp>&rsquo;</dt>
+<dd><p>0xFF00FF
+</p></dd>
+<dt> &lsquo;<samp>Maroon</samp>&rsquo;</dt>
+<dd><p>0x800000
+</p></dd>
+<dt> &lsquo;<samp>MediumAquaMarine</samp>&rsquo;</dt>
+<dd><p>0x66CDAA
+</p></dd>
+<dt> &lsquo;<samp>MediumBlue</samp>&rsquo;</dt>
+<dd><p>0x0000CD
+</p></dd>
+<dt> &lsquo;<samp>MediumOrchid</samp>&rsquo;</dt>
+<dd><p>0xBA55D3
+</p></dd>
+<dt> &lsquo;<samp>MediumPurple</samp>&rsquo;</dt>
+<dd><p>0x9370D8
+</p></dd>
+<dt> &lsquo;<samp>MediumSeaGreen</samp>&rsquo;</dt>
+<dd><p>0x3CB371
+</p></dd>
+<dt> &lsquo;<samp>MediumSlateBlue</samp>&rsquo;</dt>
+<dd><p>0x7B68EE
+</p></dd>
+<dt> &lsquo;<samp>MediumSpringGreen</samp>&rsquo;</dt>
+<dd><p>0x00FA9A
+</p></dd>
+<dt> &lsquo;<samp>MediumTurquoise</samp>&rsquo;</dt>
+<dd><p>0x48D1CC
+</p></dd>
+<dt> &lsquo;<samp>MediumVioletRed</samp>&rsquo;</dt>
+<dd><p>0xC71585
+</p></dd>
+<dt> &lsquo;<samp>MidnightBlue</samp>&rsquo;</dt>
+<dd><p>0x191970
+</p></dd>
+<dt> &lsquo;<samp>MintCream</samp>&rsquo;</dt>
+<dd><p>0xF5FFFA
+</p></dd>
+<dt> &lsquo;<samp>MistyRose</samp>&rsquo;</dt>
+<dd><p>0xFFE4E1
+</p></dd>
+<dt> &lsquo;<samp>Moccasin</samp>&rsquo;</dt>
+<dd><p>0xFFE4B5
+</p></dd>
+<dt> &lsquo;<samp>NavajoWhite</samp>&rsquo;</dt>
+<dd><p>0xFFDEAD
+</p></dd>
+<dt> &lsquo;<samp>Navy</samp>&rsquo;</dt>
+<dd><p>0x000080
+</p></dd>
+<dt> &lsquo;<samp>OldLace</samp>&rsquo;</dt>
+<dd><p>0xFDF5E6
+</p></dd>
+<dt> &lsquo;<samp>Olive</samp>&rsquo;</dt>
+<dd><p>0x808000
+</p></dd>
+<dt> &lsquo;<samp>OliveDrab</samp>&rsquo;</dt>
+<dd><p>0x6B8E23
+</p></dd>
+<dt> &lsquo;<samp>Orange</samp>&rsquo;</dt>
+<dd><p>0xFFA500
+</p></dd>
+<dt> &lsquo;<samp>OrangeRed</samp>&rsquo;</dt>
+<dd><p>0xFF4500
+</p></dd>
+<dt> &lsquo;<samp>Orchid</samp>&rsquo;</dt>
+<dd><p>0xDA70D6
+</p></dd>
+<dt> &lsquo;<samp>PaleGoldenRod</samp>&rsquo;</dt>
+<dd><p>0xEEE8AA
+</p></dd>
+<dt> &lsquo;<samp>PaleGreen</samp>&rsquo;</dt>
+<dd><p>0x98FB98
+</p></dd>
+<dt> &lsquo;<samp>PaleTurquoise</samp>&rsquo;</dt>
+<dd><p>0xAFEEEE
+</p></dd>
+<dt> &lsquo;<samp>PaleVioletRed</samp>&rsquo;</dt>
+<dd><p>0xD87093
+</p></dd>
+<dt> &lsquo;<samp>PapayaWhip</samp>&rsquo;</dt>
+<dd><p>0xFFEFD5
+</p></dd>
+<dt> &lsquo;<samp>PeachPuff</samp>&rsquo;</dt>
+<dd><p>0xFFDAB9
+</p></dd>
+<dt> &lsquo;<samp>Peru</samp>&rsquo;</dt>
+<dd><p>0xCD853F
+</p></dd>
+<dt> &lsquo;<samp>Pink</samp>&rsquo;</dt>
+<dd><p>0xFFC0CB
+</p></dd>
+<dt> &lsquo;<samp>Plum</samp>&rsquo;</dt>
+<dd><p>0xDDA0DD
+</p></dd>
+<dt> &lsquo;<samp>PowderBlue</samp>&rsquo;</dt>
+<dd><p>0xB0E0E6
+</p></dd>
+<dt> &lsquo;<samp>Purple</samp>&rsquo;</dt>
+<dd><p>0x800080
+</p></dd>
+<dt> &lsquo;<samp>Red</samp>&rsquo;</dt>
+<dd><p>0xFF0000
+</p></dd>
+<dt> &lsquo;<samp>RosyBrown</samp>&rsquo;</dt>
+<dd><p>0xBC8F8F
+</p></dd>
+<dt> &lsquo;<samp>RoyalBlue</samp>&rsquo;</dt>
+<dd><p>0x4169E1
+</p></dd>
+<dt> &lsquo;<samp>SaddleBrown</samp>&rsquo;</dt>
+<dd><p>0x8B4513
+</p></dd>
+<dt> &lsquo;<samp>Salmon</samp>&rsquo;</dt>
+<dd><p>0xFA8072
+</p></dd>
+<dt> &lsquo;<samp>SandyBrown</samp>&rsquo;</dt>
+<dd><p>0xF4A460
+</p></dd>
+<dt> &lsquo;<samp>SeaGreen</samp>&rsquo;</dt>
+<dd><p>0x2E8B57
+</p></dd>
+<dt> &lsquo;<samp>SeaShell</samp>&rsquo;</dt>
+<dd><p>0xFFF5EE
+</p></dd>
+<dt> &lsquo;<samp>Sienna</samp>&rsquo;</dt>
+<dd><p>0xA0522D
+</p></dd>
+<dt> &lsquo;<samp>Silver</samp>&rsquo;</dt>
+<dd><p>0xC0C0C0
+</p></dd>
+<dt> &lsquo;<samp>SkyBlue</samp>&rsquo;</dt>
+<dd><p>0x87CEEB
+</p></dd>
+<dt> &lsquo;<samp>SlateBlue</samp>&rsquo;</dt>
+<dd><p>0x6A5ACD
+</p></dd>
+<dt> &lsquo;<samp>SlateGray</samp>&rsquo;</dt>
+<dd><p>0x708090
+</p></dd>
+<dt> &lsquo;<samp>Snow</samp>&rsquo;</dt>
+<dd><p>0xFFFAFA
+</p></dd>
+<dt> &lsquo;<samp>SpringGreen</samp>&rsquo;</dt>
+<dd><p>0x00FF7F
+</p></dd>
+<dt> &lsquo;<samp>SteelBlue</samp>&rsquo;</dt>
+<dd><p>0x4682B4
+</p></dd>
+<dt> &lsquo;<samp>Tan</samp>&rsquo;</dt>
+<dd><p>0xD2B48C
+</p></dd>
+<dt> &lsquo;<samp>Teal</samp>&rsquo;</dt>
+<dd><p>0x008080
+</p></dd>
+<dt> &lsquo;<samp>Thistle</samp>&rsquo;</dt>
+<dd><p>0xD8BFD8
+</p></dd>
+<dt> &lsquo;<samp>Tomato</samp>&rsquo;</dt>
+<dd><p>0xFF6347
+</p></dd>
+<dt> &lsquo;<samp>Turquoise</samp>&rsquo;</dt>
+<dd><p>0x40E0D0
+</p></dd>
+<dt> &lsquo;<samp>Violet</samp>&rsquo;</dt>
+<dd><p>0xEE82EE
+</p></dd>
+<dt> &lsquo;<samp>Wheat</samp>&rsquo;</dt>
+<dd><p>0xF5DEB3
+</p></dd>
+<dt> &lsquo;<samp>White</samp>&rsquo;</dt>
+<dd><p>0xFFFFFF
+</p></dd>
+<dt> &lsquo;<samp>WhiteSmoke</samp>&rsquo;</dt>
+<dd><p>0xF5F5F5
+</p></dd>
+<dt> &lsquo;<samp>Yellow</samp>&rsquo;</dt>
+<dd><p>0xFFFF00
+</p></dd>
+<dt> &lsquo;<samp>YellowGreen</samp>&rsquo;</dt>
+<dd><p>0x9ACD32
+</p></dd>
+</dl>
+
+<p><a name="channel-layout-syntax"></a>
+</p><a name="Channel-Layout"></a>
+<h2 class="section"><a href="ffmpeg-utils.html#toc-Channel-Layout">2.8 Channel Layout</a></h2>
+
+<p>A channel layout specifies the spatial disposition of the channels in
+a multi-channel audio stream. To specify a channel layout, FFmpeg
+makes use of a special syntax.
+</p>
+<p>Individual channels are identified by an id, as given by the table
+below:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>FL</samp>&rsquo;</dt>
+<dd><p>front left
+</p></dd>
+<dt> &lsquo;<samp>FR</samp>&rsquo;</dt>
+<dd><p>front right
+</p></dd>
+<dt> &lsquo;<samp>FC</samp>&rsquo;</dt>
+<dd><p>front center
+</p></dd>
+<dt> &lsquo;<samp>LFE</samp>&rsquo;</dt>
+<dd><p>low frequency
+</p></dd>
+<dt> &lsquo;<samp>BL</samp>&rsquo;</dt>
+<dd><p>back left
+</p></dd>
+<dt> &lsquo;<samp>BR</samp>&rsquo;</dt>
+<dd><p>back right
+</p></dd>
+<dt> &lsquo;<samp>FLC</samp>&rsquo;</dt>
+<dd><p>front left-of-center
+</p></dd>
+<dt> &lsquo;<samp>FRC</samp>&rsquo;</dt>
+<dd><p>front right-of-center
+</p></dd>
+<dt> &lsquo;<samp>BC</samp>&rsquo;</dt>
+<dd><p>back center
+</p></dd>
+<dt> &lsquo;<samp>SL</samp>&rsquo;</dt>
+<dd><p>side left
+</p></dd>
+<dt> &lsquo;<samp>SR</samp>&rsquo;</dt>
+<dd><p>side right
+</p></dd>
+<dt> &lsquo;<samp>TC</samp>&rsquo;</dt>
+<dd><p>top center
+</p></dd>
+<dt> &lsquo;<samp>TFL</samp>&rsquo;</dt>
+<dd><p>top front left
+</p></dd>
+<dt> &lsquo;<samp>TFC</samp>&rsquo;</dt>
+<dd><p>top front center
+</p></dd>
+<dt> &lsquo;<samp>TFR</samp>&rsquo;</dt>
+<dd><p>top front right
+</p></dd>
+<dt> &lsquo;<samp>TBL</samp>&rsquo;</dt>
+<dd><p>top back left
+</p></dd>
+<dt> &lsquo;<samp>TBC</samp>&rsquo;</dt>
+<dd><p>top back center
+</p></dd>
+<dt> &lsquo;<samp>TBR</samp>&rsquo;</dt>
+<dd><p>top back right
+</p></dd>
+<dt> &lsquo;<samp>DL</samp>&rsquo;</dt>
+<dd><p>downmix left
+</p></dd>
+<dt> &lsquo;<samp>DR</samp>&rsquo;</dt>
+<dd><p>downmix right
+</p></dd>
+<dt> &lsquo;<samp>WL</samp>&rsquo;</dt>
+<dd><p>wide left
+</p></dd>
+<dt> &lsquo;<samp>WR</samp>&rsquo;</dt>
+<dd><p>wide right
+</p></dd>
+<dt> &lsquo;<samp>SDL</samp>&rsquo;</dt>
+<dd><p>surround direct left
+</p></dd>
+<dt> &lsquo;<samp>SDR</samp>&rsquo;</dt>
+<dd><p>surround direct right
+</p></dd>
+<dt> &lsquo;<samp>LFE2</samp>&rsquo;</dt>
+<dd><p>low frequency 2
+</p></dd>
+</dl>
+
+<p>Standard channel layout compositions can be specified by using the
+following identifiers:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>mono</samp>&rsquo;</dt>
+<dd><p>FC
+</p></dd>
+<dt> &lsquo;<samp>stereo</samp>&rsquo;</dt>
+<dd><p>FL+FR
+</p></dd>
+<dt> &lsquo;<samp>2.1</samp>&rsquo;</dt>
+<dd><p>FL+FR+LFE
+</p></dd>
+<dt> &lsquo;<samp>3.0</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC
+</p></dd>
+<dt> &lsquo;<samp>3.0(back)</samp>&rsquo;</dt>
+<dd><p>FL+FR+BC
+</p></dd>
+<dt> &lsquo;<samp>4.0</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+BC
+</p></dd>
+<dt> &lsquo;<samp>quad</samp>&rsquo;</dt>
+<dd><p>FL+FR+BL+BR
+</p></dd>
+<dt> &lsquo;<samp>quad(side)</samp>&rsquo;</dt>
+<dd><p>FL+FR+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>3.1</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE
+</p></dd>
+<dt> &lsquo;<samp>5.0</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+BL+BR
+</p></dd>
+<dt> &lsquo;<samp>5.0(side)</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>4.1</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE+BC
+</p></dd>
+<dt> &lsquo;<samp>5.1</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE+BL+BR
+</p></dd>
+<dt> &lsquo;<samp>5.1(side)</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>6.0</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+BC+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>6.0(front)</samp>&rsquo;</dt>
+<dd><p>FL+FR+FLC+FRC+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>hexagonal</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+BL+BR+BC
+</p></dd>
+<dt> &lsquo;<samp>6.1</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE+BC+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>6.1</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE+BL+BR+BC
+</p></dd>
+<dt> &lsquo;<samp>6.1(front)</samp>&rsquo;</dt>
+<dd><p>FL+FR+LFE+FLC+FRC+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>7.0</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+BL+BR+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>7.0(front)</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+FLC+FRC+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>7.1</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE+BL+BR+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>7.1(wide)</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE+BL+BR+FLC+FRC
+</p></dd>
+<dt> &lsquo;<samp>7.1(wide-side)</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE+FLC+FRC+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>octagonal</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+BL+BR+BC+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>downmix</samp>&rsquo;</dt>
+<dd><p>DL+DR
+</p></dd>
+</dl>
+
+<p>A custom channel layout can be specified as a sequence of terms, separated by
+&rsquo;+&rsquo; or &rsquo;|&rsquo;. Each term can be:
+</p><ul>
+<li>
+the name of a standard channel layout (e.g. &lsquo;<samp>mono</samp>&rsquo;,
+&lsquo;<samp>stereo</samp>&rsquo;, &lsquo;<samp>4.0</samp>&rsquo;, &lsquo;<samp>quad</samp>&rsquo;, &lsquo;<samp>5.0</samp>&rsquo;, etc.)
+
+</li><li>
+the name of a single channel (e.g. &lsquo;<samp>FL</samp>&rsquo;, &lsquo;<samp>FR</samp>&rsquo;, &lsquo;<samp>FC</samp>&rsquo;, &lsquo;<samp>LFE</samp>&rsquo;, etc.)
+
+</li><li>
+a number of channels, in decimal, optionally followed by &rsquo;c&rsquo;, yielding
+the default channel layout for that number of channels (see the
+function <code>av_get_default_channel_layout</code>)
+
+</li><li>
+a channel layout mask, in hexadecimal starting with &quot;0x&quot; (see the
+<code>AV_CH_*</code> macros in &lsquo;<tt>libavutil/channel_layout.h</tt>&rsquo;.
+</li></ul>
+
+<p>Starting from libavutil version 53 the trailing character &quot;c&quot; to
+specify a number of channels will be required, while a channel layout
+mask could also be specified as a decimal number (if and only if not
+followed by &quot;c&quot;).
+</p>
+<p>See also the function <code>av_get_channel_layout</code> defined in
+&lsquo;<tt>libavutil/channel_layout.h</tt>&rsquo;.
+</p>
+<a name="Expression-Evaluation"></a>
+<h1 class="chapter"><a href="ffmpeg-utils.html#toc-Expression-Evaluation">3. Expression Evaluation</a></h1>
+
+<p>When evaluating an arithmetic expression, FFmpeg uses an internal
+formula evaluator, implemented through the &lsquo;<tt>libavutil/eval.h</tt>&rsquo;
+interface.
+</p>
+<p>An expression may contain unary, binary operators, constants, and
+functions.
+</p>
+<p>Two expressions <var>expr1</var> and <var>expr2</var> can be combined to form
+another expression &quot;<var>expr1</var>;<var>expr2</var>&quot;.
+<var>expr1</var> and <var>expr2</var> are evaluated in turn, and the new
+expression evaluates to the value of <var>expr2</var>.
+</p>
+<p>The following binary operators are available: <code>+</code>, <code>-</code>,
+<code>*</code>, <code>/</code>, <code>^</code>.
+</p>
+<p>The following unary operators are available: <code>+</code>, <code>-</code>.
+</p>
+<p>The following functions are available:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>abs(x)</samp>&rsquo;</dt>
+<dd><p>Compute absolute value of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>acos(x)</samp>&rsquo;</dt>
+<dd><p>Compute arccosine of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>asin(x)</samp>&rsquo;</dt>
+<dd><p>Compute arcsine of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>atan(x)</samp>&rsquo;</dt>
+<dd><p>Compute arctangent of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>between(x, min, max)</samp>&rsquo;</dt>
+<dd><p>Return 1 if <var>x</var> is greater than or equal to <var>min</var> and lesser than or
+equal to <var>max</var>, 0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>bitand(x, y)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bitor(x, y)</samp>&rsquo;</dt>
+<dd><p>Compute bitwise and/or operation on <var>x</var> and <var>y</var>.
+</p>
+<p>The results of the evaluation of <var>x</var> and <var>y</var> are converted to
+integers before executing the bitwise operation.
+</p>
+<p>Note that both the conversion to integer and the conversion back to
+floating point can lose precision. Beware of unexpected results for
+large numbers (usually 2^53 and larger).
+</p>
+</dd>
+<dt> &lsquo;<samp>ceil(expr)</samp>&rsquo;</dt>
+<dd><p>Round the value of expression <var>expr</var> upwards to the nearest
+integer. For example, &quot;ceil(1.5)&quot; is &quot;2.0&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>cos(x)</samp>&rsquo;</dt>
+<dd><p>Compute cosine of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>cosh(x)</samp>&rsquo;</dt>
+<dd><p>Compute hyperbolic cosine of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>eq(x, y)</samp>&rsquo;</dt>
+<dd><p>Return 1 if <var>x</var> and <var>y</var> are equivalent, 0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>exp(x)</samp>&rsquo;</dt>
+<dd><p>Compute exponential of <var>x</var> (with base <code>e</code>, the Euler&rsquo;s number).
+</p>
+</dd>
+<dt> &lsquo;<samp>floor(expr)</samp>&rsquo;</dt>
+<dd><p>Round the value of expression <var>expr</var> downwards to the nearest
+integer. For example, &quot;floor(-1.5)&quot; is &quot;-2.0&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>gauss(x)</samp>&rsquo;</dt>
+<dd><p>Compute Gauss function of <var>x</var>, corresponding to
+<code>exp(-x*x/2) / sqrt(2*PI)</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>gcd(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the greatest common divisor of <var>x</var> and <var>y</var>. If both <var>x</var> and
+<var>y</var> are 0 or either or both are less than zero then behavior is undefined.
+</p>
+</dd>
+<dt> &lsquo;<samp>gt(x, y)</samp>&rsquo;</dt>
+<dd><p>Return 1 if <var>x</var> is greater than <var>y</var>, 0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>gte(x, y)</samp>&rsquo;</dt>
+<dd><p>Return 1 if <var>x</var> is greater than or equal to <var>y</var>, 0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>hypot(x, y)</samp>&rsquo;</dt>
+<dd><p>This function is similar to the C function with the same name; it returns
+&quot;sqrt(<var>x</var>*<var>x</var> + <var>y</var>*<var>y</var>)&quot;, the length of the hypotenuse of a
+right triangle with sides of length <var>x</var> and <var>y</var>, or the distance of the
+point (<var>x</var>, <var>y</var>) from the origin.
+</p>
+</dd>
+<dt> &lsquo;<samp>if(x, y)</samp>&rsquo;</dt>
+<dd><p>Evaluate <var>x</var>, and if the result is non-zero return the result of
+the evaluation of <var>y</var>, return 0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>if(x, y, z)</samp>&rsquo;</dt>
+<dd><p>Evaluate <var>x</var>, and if the result is non-zero return the evaluation
+result of <var>y</var>, otherwise the evaluation result of <var>z</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>ifnot(x, y)</samp>&rsquo;</dt>
+<dd><p>Evaluate <var>x</var>, and if the result is zero return the result of the
+evaluation of <var>y</var>, return 0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>ifnot(x, y, z)</samp>&rsquo;</dt>
+<dd><p>Evaluate <var>x</var>, and if the result is zero return the evaluation
+result of <var>y</var>, otherwise the evaluation result of <var>z</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>isinf(x)</samp>&rsquo;</dt>
+<dd><p>Return 1.0 if <var>x</var> is +/-INFINITY, 0.0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>isnan(x)</samp>&rsquo;</dt>
+<dd><p>Return 1.0 if <var>x</var> is NAN, 0.0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>ld(var)</samp>&rsquo;</dt>
+<dd><p>Allow to load the value of the internal variable with number
+<var>var</var>, which was previously stored with st(<var>var</var>, <var>expr</var>).
+The function returns the loaded value.
+</p>
+</dd>
+<dt> &lsquo;<samp>log(x)</samp>&rsquo;</dt>
+<dd><p>Compute natural logarithm of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>lt(x, y)</samp>&rsquo;</dt>
+<dd><p>Return 1 if <var>x</var> is lesser than <var>y</var>, 0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>lte(x, y)</samp>&rsquo;</dt>
+<dd><p>Return 1 if <var>x</var> is lesser than or equal to <var>y</var>, 0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>max(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the maximum between <var>x</var> and <var>y</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>min(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the maximum between <var>x</var> and <var>y</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>mod(x, y)</samp>&rsquo;</dt>
+<dd><p>Compute the remainder of division of <var>x</var> by <var>y</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>not(expr)</samp>&rsquo;</dt>
+<dd><p>Return 1.0 if <var>expr</var> is zero, 0.0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>pow(x, y)</samp>&rsquo;</dt>
+<dd><p>Compute the power of <var>x</var> elevated <var>y</var>, it is equivalent to
+&quot;(<var>x</var>)^(<var>y</var>)&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>print(t)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>print(t, l)</samp>&rsquo;</dt>
+<dd><p>Print the value of expression <var>t</var> with loglevel <var>l</var>. If
+<var>l</var> is not specified then a default log level is used.
+Returns the value of the expression printed.
+</p>
+<p>Prints t with loglevel l
+</p>
+</dd>
+<dt> &lsquo;<samp>random(x)</samp>&rsquo;</dt>
+<dd><p>Return a pseudo random value between 0.0 and 1.0. <var>x</var> is the index of the
+internal variable which will be used to save the seed/state.
+</p>
+</dd>
+<dt> &lsquo;<samp>root(expr, max)</samp>&rsquo;</dt>
+<dd><p>Find an input value for which the function represented by <var>expr</var>
+with argument <var>ld(0)</var> is 0 in the interval 0..<var>max</var>.
+</p>
+<p>The expression in <var>expr</var> must denote a continuous function or the
+result is undefined.
+</p>
+<p><var>ld(0)</var> is used to represent the function input value, which means
+that the given expression will be evaluated multiple times with
+various input values that the expression can access through
+<code>ld(0)</code>. When the expression evaluates to 0 then the
+corresponding input value will be returned.
+</p>
+</dd>
+<dt> &lsquo;<samp>sin(x)</samp>&rsquo;</dt>
+<dd><p>Compute sine of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>sinh(x)</samp>&rsquo;</dt>
+<dd><p>Compute hyperbolic sine of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>sqrt(expr)</samp>&rsquo;</dt>
+<dd><p>Compute the square root of <var>expr</var>. This is equivalent to
+&quot;(<var>expr</var>)^.5&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>squish(x)</samp>&rsquo;</dt>
+<dd><p>Compute expression <code>1/(1 + exp(4*x))</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>st(var, expr)</samp>&rsquo;</dt>
+<dd><p>Allow to store the value of the expression <var>expr</var> in an internal
+variable. <var>var</var> specifies the number of the variable where to
+store the value, and it is a value ranging from 0 to 9. The function
+returns the value stored in the internal variable.
+Note, Variables are currently not shared between expressions.
+</p>
+</dd>
+<dt> &lsquo;<samp>tan(x)</samp>&rsquo;</dt>
+<dd><p>Compute tangent of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>tanh(x)</samp>&rsquo;</dt>
+<dd><p>Compute hyperbolic tangent of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>taylor(expr, x)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>taylor(expr, x, id)</samp>&rsquo;</dt>
+<dd><p>Evaluate a Taylor series at <var>x</var>, given an expression representing
+the <code>ld(id)</code>-th derivative of a function at 0.
+</p>
+<p>When the series does not converge the result is undefined.
+</p>
+<p><var>ld(id)</var> is used to represent the derivative order in <var>expr</var>,
+which means that the given expression will be evaluated multiple times
+with various input values that the expression can access through
+<code>ld(id)</code>. If <var>id</var> is not specified then 0 is assumed.
+</p>
+<p>Note, when you have the derivatives at y instead of 0,
+<code>taylor(expr, x-y)</code> can be used.
+</p>
+</dd>
+<dt> &lsquo;<samp>time(0)</samp>&rsquo;</dt>
+<dd><p>Return the current (wallclock) time in seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>trunc(expr)</samp>&rsquo;</dt>
+<dd><p>Round the value of expression <var>expr</var> towards zero to the nearest
+integer. For example, &quot;trunc(-1.5)&quot; is &quot;-1.0&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>while(cond, expr)</samp>&rsquo;</dt>
+<dd><p>Evaluate expression <var>expr</var> while the expression <var>cond</var> is
+non-zero, and returns the value of the last <var>expr</var> evaluation, or
+NAN if <var>cond</var> was always false.
+</p></dd>
+</dl>
+
+<p>The following constants are available:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>PI</samp>&rsquo;</dt>
+<dd><p>area of the unit disc, approximately 3.14
+</p></dd>
+<dt> &lsquo;<samp>E</samp>&rsquo;</dt>
+<dd><p>exp(1) (Euler&rsquo;s number), approximately 2.718
+</p></dd>
+<dt> &lsquo;<samp>PHI</samp>&rsquo;</dt>
+<dd><p>golden ratio (1+sqrt(5))/2, approximately 1.618
+</p></dd>
+</dl>
+
+<p>Assuming that an expression is considered &quot;true&quot; if it has a non-zero
+value, note that:
+</p>
+<p><code>*</code> works like AND
+</p>
+<p><code>+</code> works like OR
+</p>
+<p>For example the construct:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">if (A AND B) then C
+</pre></td></tr></table>
+<p>is equivalent to:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">if(A*B, C)
+</pre></td></tr></table>
+
+<p>In your C code, you can extend the list of unary and binary functions,
+and define recognized constants, so that they are available for your
+expressions.
+</p>
+<p>The evaluator also recognizes the International System unit prefixes.
+If &rsquo;i&rsquo; is appended after the prefix, binary prefixes are used, which
+are based on powers of 1024 instead of powers of 1000.
+The &rsquo;B&rsquo; postfix multiplies the value by 8, and can be appended after a
+unit prefix or used alone. This allows using for example &rsquo;KB&rsquo;, &rsquo;MiB&rsquo;,
+&rsquo;G&rsquo; and &rsquo;B&rsquo; as number postfix.
+</p>
+<p>The list of available International System prefixes follows, with
+indication of the corresponding powers of 10 and of 2.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>10^-24 / 2^-80
+</p></dd>
+<dt> &lsquo;<samp>z</samp>&rsquo;</dt>
+<dd><p>10^-21 / 2^-70
+</p></dd>
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>10^-18 / 2^-60
+</p></dd>
+<dt> &lsquo;<samp>f</samp>&rsquo;</dt>
+<dd><p>10^-15 / 2^-50
+</p></dd>
+<dt> &lsquo;<samp>p</samp>&rsquo;</dt>
+<dd><p>10^-12 / 2^-40
+</p></dd>
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>10^-9 / 2^-30
+</p></dd>
+<dt> &lsquo;<samp>u</samp>&rsquo;</dt>
+<dd><p>10^-6 / 2^-20
+</p></dd>
+<dt> &lsquo;<samp>m</samp>&rsquo;</dt>
+<dd><p>10^-3 / 2^-10
+</p></dd>
+<dt> &lsquo;<samp>c</samp>&rsquo;</dt>
+<dd><p>10^-2
+</p></dd>
+<dt> &lsquo;<samp>d</samp>&rsquo;</dt>
+<dd><p>10^-1
+</p></dd>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>10^2
+</p></dd>
+<dt> &lsquo;<samp>k</samp>&rsquo;</dt>
+<dd><p>10^3 / 2^10
+</p></dd>
+<dt> &lsquo;<samp>K</samp>&rsquo;</dt>
+<dd><p>10^3 / 2^10
+</p></dd>
+<dt> &lsquo;<samp>M</samp>&rsquo;</dt>
+<dd><p>10^6 / 2^20
+</p></dd>
+<dt> &lsquo;<samp>G</samp>&rsquo;</dt>
+<dd><p>10^9 / 2^30
+</p></dd>
+<dt> &lsquo;<samp>T</samp>&rsquo;</dt>
+<dd><p>10^12 / 2^40
+</p></dd>
+<dt> &lsquo;<samp>P</samp>&rsquo;</dt>
+<dd><p>10^15 / 2^40
+</p></dd>
+<dt> &lsquo;<samp>E</samp>&rsquo;</dt>
+<dd><p>10^18 / 2^50
+</p></dd>
+<dt> &lsquo;<samp>Z</samp>&rsquo;</dt>
+<dd><p>10^21 / 2^60
+</p></dd>
+<dt> &lsquo;<samp>Y</samp>&rsquo;</dt>
+<dd><p>10^24 / 2^70
+</p></dd>
+</dl>
+
+
+<a name="OpenCL-Options"></a>
+<h1 class="chapter"><a href="ffmpeg-utils.html#toc-OpenCL-Options">4. OpenCL Options</a></h1>
+
+<p>When FFmpeg is configured with <code>--enable-opencl</code>, it is possible
+to set the options for the global OpenCL context.
+</p>
+<p>The list of supported options follows:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>build_options</samp>&rsquo;</dt>
+<dd><p>Set build options used to compile the registered kernels.
+</p>
+<p>See reference &quot;OpenCL Specification Version: 1.2 chapter 5.6.4&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>platform_idx</samp>&rsquo;</dt>
+<dd><p>Select the index of the platform to run OpenCL code.
+</p>
+<p>The specified index must be one of the indexes in the device list
+which can be obtained with <code>ffmpeg -opencl_bench</code> or <code>av_opencl_get_device_list()</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>device_idx</samp>&rsquo;</dt>
+<dd><p>Select the index of the device used to run OpenCL code.
+</p>
+<p>The specifed index must be one of the indexes in the device list which
+can be obtained with <code>ffmpeg -opencl_bench</code> or <code>av_opencl_get_device_list()</code>.
+</p>
+</dd>
+</dl>
+
+
+<a name="See-Also"></a>
+<h1 class="chapter"><a href="ffmpeg-utils.html#toc-See-Also">5. See Also</a></h1>
+
+<p><a href="ffmpeg.html">ffmpeg</a>, <a href="ffplay.html">ffplay</a>, <a href="ffprobe.html">ffprobe</a>, <a href="ffserver.html">ffserver</a>,
+<a href="libavutil.html">libavutil</a>
+</p>
+
+<a name="Authors"></a>
+<h1 class="chapter"><a href="ffmpeg-utils.html#toc-Authors">6. Authors</a></h1>
+
+<p>The FFmpeg developers.
+</p>
+<p>For details about the authorship, see the Git history of the project
+(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
+<code>git log</code> in the FFmpeg source directory, or browsing the
+online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
+</p>
+<p>Maintainers for the specific components are listed in the file
+&lsquo;<tt>MAINTAINERS</tt>&rsquo; in the source code tree.
+</p>
+
+<footer class="footer pagination-right">
+<span class="label label-info">This document was generated by <em>Kyle Schwarz</em> on <em>December 14, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
index 02dc3791cda20ee847fc09a30d1e42e91573c934..61427d9ffc539c991b09f0ccedf2dc7a2e7d4251 100644 (file)
@@ -1,6 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<!DOCTYPE html>
 <html>
-<!-- Created on September 2, 2011 by texi2html 1.82
+<!-- Created on December 14, 2013 by texi2html 1.82 -->
+<!--
 texi2html was written by: 
             Lionel Cons <Lionel.Cons@cern.ch> (original author)
             Karl Berry  <karl@freefriends.org>
@@ -8,38 +9,22 @@ texi2html was written by:
             and many others.
 Maintained by: Many creative people.
 Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
 -->
 <head>
-<title>ffmpeg Documentation</title>
+<title>FFmpeg documentation : ffmpeg </title>
 
-<meta name="description" content="ffmpeg Documentation">
-<meta name="keywords" content="ffmpeg Documentation">
-<meta name="resource-type" content="document">
-<meta name="distribution" content="global">
+<meta name="description" content="ffmpeg Documentation: ">
+<meta name="keywords" content="FFmpeg documentation : ffmpeg ">
 <meta name="Generator" content="texi2html 1.82">
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<style type="text/css">
-<!--
-a.summary-letter {text-decoration: none}
-blockquote.smallquotation {font-size: smaller}
-pre.display {font-family: serif}
-pre.format {font-family: serif}
-pre.menu-comment {font-family: serif}
-pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: serif; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: serif; font-size: smaller}
-pre.smalllisp {font-size: smaller}
-span.roman {font-family:serif; font-weight:normal;}
-span.sansserif {font-family:sans-serif; font-weight:normal;}
-ul.toc {list-style: none}
--->
-</style>
-
+<link rel="stylesheet" type="text/css" href="default.css" />
 
+<link rel="icon" href="favicon.png" type="image/png" />
 </head>
-
-<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<body>
+<div id="container">
+<div id="body">
 
 <a name="SEC_Top"></a>
 <h1 class="settitle">ffmpeg Documentation</h1>
@@ -51,280 +36,88 @@ ul.toc {list-style: none}
 <ul class="toc">
   <li><a name="toc-Synopsis" href="#Synopsis">1. Synopsis</a></li>
   <li><a name="toc-Description" href="#Description">2. Description</a></li>
-  <li><a name="toc-Options-6" href="#Options-6">3. Options</a>
-  <ul class="toc">
-    <li><a name="toc-Generic-options" href="#Generic-options">3.1 Generic options</a></li>
-    <li><a name="toc-AVOptions" href="#AVOptions">3.2 AVOptions</a></li>
-    <li><a name="toc-Main-options" href="#Main-options">3.3 Main options</a></li>
-    <li><a name="toc-Video-Options" href="#Video-Options">3.4 Video Options</a></li>
-    <li><a name="toc-Advanced-Video-Options" href="#Advanced-Video-Options">3.5 Advanced Video Options</a></li>
-    <li><a name="toc-Audio-Options" href="#Audio-Options">3.6 Audio Options</a></li>
-    <li><a name="toc-Advanced-Audio-options_003a" href="#Advanced-Audio-options_003a">3.7 Advanced Audio options:</a></li>
-    <li><a name="toc-Subtitle-options_003a" href="#Subtitle-options_003a">3.8 Subtitle options:</a></li>
-    <li><a name="toc-Audio_002fVideo-grab-options" href="#Audio_002fVideo-grab-options">3.9 Audio/Video grab options</a></li>
-    <li><a name="toc-Advanced-options" href="#Advanced-options">3.10 Advanced options</a></li>
-    <li><a name="toc-Preset-files" href="#Preset-files">3.11 Preset files</a></li>
-  </ul></li>
-  <li><a name="toc-Tips" href="#Tips">4. Tips</a></li>
-  <li><a name="toc-Examples" href="#Examples">5. Examples</a>
-  <ul class="toc">
-    <li><a name="toc-Video-and-Audio-grabbing" href="#Video-and-Audio-grabbing">5.1 Video and Audio grabbing</a></li>
-    <li><a name="toc-X11-grabbing" href="#X11-grabbing">5.2 X11 grabbing</a></li>
-    <li><a name="toc-Video-and-Audio-file-format-conversion" href="#Video-and-Audio-file-format-conversion">5.3 Video and Audio file format conversion</a></li>
-  </ul></li>
-  <li><a name="toc-Expression-Evaluation" href="#Expression-Evaluation">6. Expression Evaluation</a></li>
-  <li><a name="toc-Decoders" href="#Decoders">7. Decoders</a></li>
-  <li><a name="toc-Video-Decoders" href="#Video-Decoders">8. Video Decoders</a>
-  <ul class="toc">
-    <li><a name="toc-rawvideo" href="#rawvideo">8.1 rawvideo</a>
-    <ul class="toc">
-      <li><a name="toc-Options-1" href="#Options-1">8.1.1 Options</a></li>
-    </ul>
-</li>
-  </ul></li>
-  <li><a name="toc-Encoders" href="#Encoders">9. Encoders</a></li>
-  <li><a name="toc-Audio-Encoders" href="#Audio-Encoders">10. Audio Encoders</a>
-  <ul class="toc">
-    <li><a name="toc-ac3-and-ac3_005ffixed" href="#ac3-and-ac3_005ffixed">10.1 ac3 and ac3_fixed</a>
-    <ul class="toc">
-      <li><a name="toc-AC_002d3-Metadata" href="#AC_002d3-Metadata">10.1.1 AC-3 Metadata</a>
-      <ul class="toc">
-        <li><a name="toc-Metadata-Control-Options" href="#Metadata-Control-Options">10.1.1.1 Metadata Control Options</a></li>
-        <li><a name="toc-Downmix-Levels" href="#Downmix-Levels">10.1.1.2 Downmix Levels</a></li>
-        <li><a name="toc-Audio-Production-Information" href="#Audio-Production-Information">10.1.1.3 Audio Production Information</a></li>
-        <li><a name="toc-Other-Metadata-Options" href="#Other-Metadata-Options">10.1.1.4 Other Metadata Options</a></li>
-      </ul></li>
-      <li><a name="toc-Extended-Bitstream-Information" href="#Extended-Bitstream-Information">10.1.2 Extended Bitstream Information</a>
-      <ul class="toc">
-        <li><a name="toc-Extended-Bitstream-Information-_002d-Part-1" href="#Extended-Bitstream-Information-_002d-Part-1">10.1.2.1 Extended Bitstream Information - Part 1</a></li>
-        <li><a name="toc-Extended-Bitstream-Information-_002d-Part-2" href="#Extended-Bitstream-Information-_002d-Part-2">10.1.2.2 Extended Bitstream Information - Part 2</a></li>
-      </ul></li>
-      <li><a name="toc-Other-AC_002d3-Encoding-Options" href="#Other-AC_002d3-Encoding-Options">10.1.3 Other AC-3 Encoding Options</a></li>
-      <li><a name="toc-Floating_002dPoint_002dOnly-AC_002d3-Encoding-Options" href="#Floating_002dPoint_002dOnly-AC_002d3-Encoding-Options">10.1.4 Floating-Point-Only AC-3 Encoding Options</a></li>
-    </ul>
-</li>
-  </ul></li>
-  <li><a name="toc-Video-Encoders" href="#Video-Encoders">11. Video Encoders</a>
-  <ul class="toc">
-    <li><a name="toc-libvpx" href="#libvpx">11.1 libvpx</a>
-    <ul class="toc">
-      <li><a name="toc-Options-4" href="#Options-4">11.1.1 Options</a></li>
-    </ul></li>
-    <li><a name="toc-libx264" href="#libx264">11.2 libx264</a>
-    <ul class="toc">
-      <li><a name="toc-Options-5" href="#Options-5">11.2.1 Options</a></li>
-    </ul>
-</li>
-  </ul></li>
-  <li><a name="toc-Demuxers" href="#Demuxers">12. Demuxers</a>
-  <ul class="toc">
-    <li><a name="toc-image2" href="#image2">12.1 image2</a></li>
-    <li><a name="toc-applehttp-1" href="#applehttp-1">12.2 applehttp</a></li>
-  </ul></li>
-  <li><a name="toc-Muxers" href="#Muxers">13. Muxers</a>
-  <ul class="toc">
-    <li><a name="toc-crc-1" href="#crc-1">13.1 crc</a></li>
-    <li><a name="toc-framecrc-1" href="#framecrc-1">13.2 framecrc</a></li>
-    <li><a name="toc-image2-1" href="#image2-1">13.3 image2</a></li>
-    <li><a name="toc-mpegts" href="#mpegts">13.4 mpegts</a></li>
-    <li><a name="toc-null-1" href="#null-1">13.5 null</a></li>
-    <li><a name="toc-matroska" href="#matroska">13.6 matroska</a></li>
-  </ul></li>
-  <li><a name="toc-Input-Devices" href="#Input-Devices">14. Input Devices</a>
-  <ul class="toc">
-    <li><a name="toc-alsa-1" href="#alsa-1">14.1 alsa</a></li>
-    <li><a name="toc-bktr" href="#bktr">14.2 bktr</a></li>
-    <li><a name="toc-dv1394" href="#dv1394">14.3 dv1394</a></li>
-    <li><a name="toc-fbdev" href="#fbdev">14.4 fbdev</a></li>
-    <li><a name="toc-jack" href="#jack">14.5 jack</a></li>
-    <li><a name="toc-lavfi" href="#lavfi">14.6 lavfi</a>
-    <ul class="toc">
-      <li><a name="toc-Options" href="#Options">14.6.1 Options</a></li>
-      <li><a name="toc-Examples-3" href="#Examples-3">14.6.2 Examples</a></li>
-    </ul></li>
-    <li><a name="toc-libdc1394" href="#libdc1394">14.7 libdc1394</a></li>
-    <li><a name="toc-openal" href="#openal">14.8 openal</a>
-    <ul class="toc">
-      <li><a name="toc-Options-3" href="#Options-3">14.8.1 Options</a></li>
-      <li><a name="toc-Examples-2" href="#Examples-2">14.8.2 Examples</a></li>
-    </ul></li>
-    <li><a name="toc-oss" href="#oss">14.9 oss</a></li>
-    <li><a name="toc-sndio" href="#sndio">14.10 sndio</a></li>
-    <li><a name="toc-video4linux-and-video4linux2" href="#video4linux-and-video4linux2">14.11 video4linux and video4linux2</a></li>
-    <li><a name="toc-vfwcap" href="#vfwcap">14.12 vfwcap</a></li>
-    <li><a name="toc-x11grab" href="#x11grab">14.13 x11grab</a>
-    <ul class="toc">
-      <li><a name="toc-follow_005fmouse-AVOption" href="#follow_005fmouse-AVOption">14.13.1 <var>follow_mouse</var> AVOption</a></li>
-      <li><a name="toc-show_005fregion-AVOption" href="#show_005fregion-AVOption">14.13.2 <var>show_region</var> AVOption</a></li>
-    </ul>
-</li>
-  </ul></li>
-  <li><a name="toc-Output-Devices" href="#Output-Devices">15. Output Devices</a>
+  <li><a name="toc-Detailed-description" href="#Detailed-description">3. Detailed description</a>
   <ul class="toc">
-    <li><a name="toc-alsa" href="#alsa">15.1 alsa</a></li>
-    <li><a name="toc-oss-1" href="#oss-1">15.2 oss</a></li>
-    <li><a name="toc-sdl" href="#sdl">15.3 sdl</a>
+    <li><a name="toc-Filtering" href="#Filtering">3.1 Filtering</a>
     <ul class="toc">
-      <li><a name="toc-Options-2" href="#Options-2">15.3.1 Options</a></li>
-      <li><a name="toc-Examples-1" href="#Examples-1">15.3.2 Examples</a></li>
+      <li><a name="toc-Simple-filtergraphs" href="#Simple-filtergraphs">3.1.1 Simple filtergraphs</a></li>
+      <li><a name="toc-Complex-filtergraphs" href="#Complex-filtergraphs">3.1.2 Complex filtergraphs</a></li>
     </ul></li>
-    <li><a name="toc-sndio-1" href="#sndio-1">15.4 sndio</a></li>
+    <li><a name="toc-Stream-copy" href="#Stream-copy">3.2 Stream copy</a></li>
   </ul></li>
-  <li><a name="toc-Protocols" href="#Protocols">16. Protocols</a>
+  <li><a name="toc-Stream-selection" href="#Stream-selection">4. Stream selection</a></li>
+  <li><a name="toc-Options" href="#Options">5. Options</a>
   <ul class="toc">
-    <li><a name="toc-applehttp" href="#applehttp">16.1 applehttp</a></li>
-    <li><a name="toc-concat" href="#concat">16.2 concat</a></li>
-    <li><a name="toc-file" href="#file">16.3 file</a></li>
-    <li><a name="toc-gopher" href="#gopher">16.4 gopher</a></li>
-    <li><a name="toc-http" href="#http">16.5 http</a></li>
-    <li><a name="toc-mmst" href="#mmst">16.6 mmst</a></li>
-    <li><a name="toc-mmsh" href="#mmsh">16.7 mmsh</a></li>
-    <li><a name="toc-md5" href="#md5">16.8 md5</a></li>
-    <li><a name="toc-pipe" href="#pipe">16.9 pipe</a></li>
-    <li><a name="toc-rtmp" href="#rtmp">16.10 rtmp</a></li>
-    <li><a name="toc-rtmp_002c-rtmpe_002c-rtmps_002c-rtmpt_002c-rtmpte" href="#rtmp_002c-rtmpe_002c-rtmps_002c-rtmpt_002c-rtmpte">16.11 rtmp, rtmpe, rtmps, rtmpt, rtmpte</a></li>
-    <li><a name="toc-rtp" href="#rtp">16.12 rtp</a></li>
-    <li><a name="toc-rtsp" href="#rtsp">16.13 rtsp</a></li>
-    <li><a name="toc-sap" href="#sap">16.14 sap</a>
-    <ul class="toc">
-      <li><a name="toc-Muxer" href="#Muxer">16.14.1 Muxer</a></li>
-      <li><a name="toc-Demuxer" href="#Demuxer">16.14.2 Demuxer</a></li>
-    </ul></li>
-    <li><a name="toc-tcp" href="#tcp">16.15 tcp</a></li>
-    <li><a name="toc-udp" href="#udp">16.16 udp</a></li>
-  </ul></li>
-  <li><a name="toc-Bitstream-Filters" href="#Bitstream-Filters">17. Bitstream Filters</a>
-  <ul class="toc">
-    <li><a name="toc-aac_005fadtstoasc" href="#aac_005fadtstoasc">17.1 aac_adtstoasc</a></li>
-    <li><a name="toc-chomp" href="#chomp">17.2 chomp</a></li>
-    <li><a name="toc-dump_005fextradata" href="#dump_005fextradata">17.3 dump_extradata</a></li>
-    <li><a name="toc-h264_005fmp4toannexb" href="#h264_005fmp4toannexb">17.4 h264_mp4toannexb</a></li>
-    <li><a name="toc-imx_005fdump_005fheader" href="#imx_005fdump_005fheader">17.5 imx_dump_header</a></li>
-    <li><a name="toc-mjpeg2jpeg" href="#mjpeg2jpeg">17.6 mjpeg2jpeg</a></li>
-    <li><a name="toc-mjpega_005fdump_005fheader" href="#mjpega_005fdump_005fheader">17.7 mjpega_dump_header</a></li>
-    <li><a name="toc-movsub" href="#movsub">17.8 movsub</a></li>
-    <li><a name="toc-mp3_005fheader_005fcompress" href="#mp3_005fheader_005fcompress">17.9 mp3_header_compress</a></li>
-    <li><a name="toc-mp3_005fheader_005fdecompress" href="#mp3_005fheader_005fdecompress">17.10 mp3_header_decompress</a></li>
-    <li><a name="toc-noise" href="#noise">17.11 noise</a></li>
-    <li><a name="toc-remove_005fextradata" href="#remove_005fextradata">17.12 remove_extradata</a></li>
-  </ul></li>
-  <li><a name="toc-Filtergraph-description" href="#Filtergraph-description">18. Filtergraph description</a>
-  <ul class="toc">
-    <li><a name="toc-Filtergraph-syntax" href="#Filtergraph-syntax">18.1 Filtergraph syntax</a></li>
-  </ul></li>
-  <li><a name="toc-Audio-Filters" href="#Audio-Filters">19. Audio Filters</a>
-  <ul class="toc">
-    <li><a name="toc-aformat" href="#aformat">19.1 aformat</a></li>
-    <li><a name="toc-anull" href="#anull">19.2 anull</a></li>
-    <li><a name="toc-aresample" href="#aresample">19.3 aresample</a></li>
-    <li><a name="toc-ashowinfo" href="#ashowinfo">19.4 ashowinfo</a></li>
-  </ul></li>
-  <li><a name="toc-Audio-Sources" href="#Audio-Sources">20. Audio Sources</a>
-  <ul class="toc">
-    <li><a name="toc-abuffer" href="#abuffer">20.1 abuffer</a></li>
-    <li><a name="toc-amovie" href="#amovie">20.2 amovie</a></li>
-    <li><a name="toc-anullsrc" href="#anullsrc">20.3 anullsrc</a></li>
-  </ul></li>
-  <li><a name="toc-Audio-Sinks" href="#Audio-Sinks">21. Audio Sinks</a>
-  <ul class="toc">
-    <li><a name="toc-abuffersink" href="#abuffersink">21.1 abuffersink</a></li>
-    <li><a name="toc-anullsink" href="#anullsink">21.2 anullsink</a></li>
-  </ul></li>
-  <li><a name="toc-Video-Filters" href="#Video-Filters">22. Video Filters</a>
-  <ul class="toc">
-    <li><a name="toc-blackframe" href="#blackframe">22.1 blackframe</a></li>
-    <li><a name="toc-boxblur" href="#boxblur">22.2 boxblur</a></li>
-    <li><a name="toc-copy" href="#copy">22.3 copy</a></li>
-    <li><a name="toc-crop" href="#crop">22.4 crop</a></li>
-    <li><a name="toc-cropdetect" href="#cropdetect">22.5 cropdetect</a></li>
-    <li><a name="toc-delogo" href="#delogo">22.6 delogo</a></li>
-    <li><a name="toc-drawbox" href="#drawbox">22.7 drawbox</a></li>
-    <li><a name="toc-drawtext" href="#drawtext">22.8 drawtext</a></li>
-    <li><a name="toc-fade" href="#fade">22.9 fade</a></li>
-    <li><a name="toc-fieldorder" href="#fieldorder">22.10 fieldorder</a></li>
-    <li><a name="toc-fifo" href="#fifo">22.11 fifo</a></li>
-    <li><a name="toc-format" href="#format">22.12 format</a></li>
-    <li><a name="toc-frei0r-1" href="#frei0r-1">22.13 frei0r</a></li>
-    <li><a name="toc-gradfun" href="#gradfun">22.14 gradfun</a></li>
-    <li><a name="toc-hflip" href="#hflip">22.15 hflip</a></li>
-    <li><a name="toc-hqdn3d" href="#hqdn3d">22.16 hqdn3d</a></li>
-    <li><a name="toc-lut_002c-lutrgb_002c-lutyuv" href="#lut_002c-lutrgb_002c-lutyuv">22.17 lut, lutrgb, lutyuv</a></li>
-    <li><a name="toc-mp" href="#mp">22.18 mp</a></li>
-    <li><a name="toc-negate" href="#negate">22.19 negate</a></li>
-    <li><a name="toc-noformat" href="#noformat">22.20 noformat</a></li>
-    <li><a name="toc-null" href="#null">22.21 null</a></li>
-    <li><a name="toc-ocv" href="#ocv">22.22 ocv</a>
-    <ul class="toc">
-      <li><a name="toc-dilate-1" href="#dilate-1">22.22.1 dilate</a></li>
-      <li><a name="toc-erode" href="#erode">22.22.2 erode</a></li>
-      <li><a name="toc-smooth" href="#smooth">22.22.3 smooth</a></li>
-    </ul></li>
-    <li><a name="toc-overlay" href="#overlay">22.23 overlay</a></li>
-    <li><a name="toc-pad" href="#pad">22.24 pad</a></li>
-    <li><a name="toc-pixdesctest" href="#pixdesctest">22.25 pixdesctest</a></li>
-    <li><a name="toc-scale" href="#scale">22.26 scale</a></li>
-    <li><a name="toc-select" href="#select">22.27 select</a></li>
-    <li><a name="toc-setdar-1" href="#setdar-1">22.28 setdar</a></li>
-    <li><a name="toc-setpts" href="#setpts">22.29 setpts</a></li>
-    <li><a name="toc-setsar-1" href="#setsar-1">22.30 setsar</a></li>
-    <li><a name="toc-settb" href="#settb">22.31 settb</a></li>
-    <li><a name="toc-showinfo" href="#showinfo">22.32 showinfo</a></li>
-    <li><a name="toc-slicify" href="#slicify">22.33 slicify</a></li>
-    <li><a name="toc-split" href="#split">22.34 split</a></li>
-    <li><a name="toc-transpose" href="#transpose">22.35 transpose</a></li>
-    <li><a name="toc-unsharp" href="#unsharp">22.36 unsharp</a></li>
-    <li><a name="toc-vflip" href="#vflip">22.37 vflip</a></li>
-    <li><a name="toc-yadif" href="#yadif">22.38 yadif</a></li>
+    <li><a name="toc-Stream-specifiers-1" href="#Stream-specifiers-1">5.1 Stream specifiers</a></li>
+    <li><a name="toc-Generic-options" href="#Generic-options">5.2 Generic options</a></li>
+    <li><a name="toc-AVOptions" href="#AVOptions">5.3 AVOptions</a></li>
+    <li><a name="toc-Main-options" href="#Main-options">5.4 Main options</a></li>
+    <li><a name="toc-Video-Options" href="#Video-Options">5.5 Video Options</a></li>
+    <li><a name="toc-Advanced-Video-Options" href="#Advanced-Video-Options">5.6 Advanced Video Options</a></li>
+    <li><a name="toc-Audio-Options" href="#Audio-Options">5.7 Audio Options</a></li>
+    <li><a name="toc-Advanced-Audio-options_003a" href="#Advanced-Audio-options_003a">5.8 Advanced Audio options:</a></li>
+    <li><a name="toc-Subtitle-options_003a" href="#Subtitle-options_003a">5.9 Subtitle options:</a></li>
+    <li><a name="toc-Advanced-Subtitle-options_003a" href="#Advanced-Subtitle-options_003a">5.10 Advanced Subtitle options:</a></li>
+    <li><a name="toc-Advanced-options" href="#Advanced-options">5.11 Advanced options</a></li>
+    <li><a name="toc-Preset-files" href="#Preset-files">5.12 Preset files</a></li>
   </ul></li>
-  <li><a name="toc-Video-Sources" href="#Video-Sources">23. Video Sources</a>
+  <li><a name="toc-Tips" href="#Tips">6. Tips</a></li>
+  <li><a name="toc-Examples" href="#Examples">7. Examples</a>
   <ul class="toc">
-    <li><a name="toc-buffer" href="#buffer">23.1 buffer</a></li>
-    <li><a name="toc-color" href="#color">23.2 color</a></li>
-    <li><a name="toc-movie" href="#movie">23.3 movie</a></li>
-    <li><a name="toc-mptestsrc" href="#mptestsrc">23.4 mptestsrc</a></li>
-    <li><a name="toc-nullsrc" href="#nullsrc">23.5 nullsrc</a></li>
-    <li><a name="toc-frei0r_005fsrc" href="#frei0r_005fsrc">23.6 frei0r_src</a></li>
-    <li><a name="toc-rgbtestsrc_002c-testsrc" href="#rgbtestsrc_002c-testsrc">23.7 rgbtestsrc, testsrc</a></li>
+    <li><a name="toc-Preset-files-1" href="#Preset-files-1">7.1 Preset files</a></li>
+    <li><a name="toc-Video-and-Audio-grabbing" href="#Video-and-Audio-grabbing">7.2 Video and Audio grabbing</a></li>
+    <li><a name="toc-X11-grabbing" href="#X11-grabbing">7.3 X11 grabbing</a></li>
+    <li><a name="toc-Video-and-Audio-file-format-conversion" href="#Video-and-Audio-file-format-conversion">7.4 Video and Audio file format conversion</a></li>
   </ul></li>
-  <li><a name="toc-Video-Sinks" href="#Video-Sinks">24. Video Sinks</a>
-  <ul class="toc">
-    <li><a name="toc-buffersink" href="#buffersink">24.1 buffersink</a></li>
-    <li><a name="toc-nullsink" href="#nullsink">24.2 nullsink</a></li>
-  </ul></li>
-  <li><a name="toc-Metadata" href="#Metadata">25. Metadata</a></li>
+  <li><a name="toc-See-Also" href="#See-Also">8. See Also</a></li>
+  <li><a name="toc-Authors" href="#Authors">9. Authors</a></li>
 </ul>
 </div>
 
-<hr size="1">
 <a name="Synopsis"></a>
 <h1 class="chapter"><a href="ffmpeg.html#toc-Synopsis">1. Synopsis</a></h1>
 
-<p>The generic syntax is:
+<p>ffmpeg [<var>global_options</var>] {[<var>input_file_options</var>] -i &lsquo;<tt>input_file</tt>&rsquo;} ... {[<var>output_file_options</var>] &lsquo;<tt>output_file</tt>&rsquo;} ...
 </p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg [[infile options][&lsquo;<samp>-i</samp>&rsquo; <var>infile</var>]]... {[outfile options] <var>outfile</var>}...
-</pre></td></tr></table>
-
 <a name="Description"></a>
 <h1 class="chapter"><a href="ffmpeg.html#toc-Description">2. Description</a></h1>
 
-<p>ffmpeg is a very fast video and audio converter that can also grab from
+<p><code>ffmpeg</code> is a very fast video and audio converter that can also grab from
 a live audio/video source. It can also convert between arbitrary sample
 rates and resize video on the fly with a high quality polyphase filter.
 </p>
-<p>The command line interface is designed to be intuitive, in the sense
-that ffmpeg tries to figure out all parameters that can possibly be
-derived automatically. You usually only have to specify the target
-bitrate you want.
+<p><code>ffmpeg</code> reads from an arbitrary number of input &quot;files&quot; (which can be regular
+files, pipes, network streams, grabbing devices, etc.), specified by the
+<code>-i</code> option, and writes to an arbitrary number of output &quot;files&quot;, which are
+specified by a plain output filename. Anything found on the command line which
+cannot be interpreted as an option is considered to be an output filename.
+</p>
+<p>Each input or output file can, in principle, contain any number of streams of
+different types (video/audio/subtitle/attachment/data). The allowed number and/or
+types of streams may be limited by the container format. Selecting which
+streams from which inputs will go into which output is either done automatically
+or with the <code>-map</code> option (see the Stream selection chapter).
+</p>
+<p>To refer to input files in options, you must use their indices (0-based). E.g.
+the first input file is <code>0</code>, the second is <code>1</code>, etc. Similarly, streams
+within a file are referred to by their indices. E.g. <code>2:3</code> refers to the
+fourth stream in the third input file. Also see the Stream specifiers chapter.
 </p>
 <p>As a general rule, options are applied to the next specified
 file. Therefore, order is important, and you can have the same
 option on the command line multiple times. Each occurrence is
 then applied to the next input or output file.
+Exceptions from this rule are the global options (e.g. verbosity level),
+which should be specified first.
+</p>
+<p>Do not mix input and output files &ndash; first specify all input files, then all
+output files. Also do not mix options which belong to different files. All
+options apply ONLY to the next input or output file and are reset between files.
 </p>
 <ul>
 <li>
-To set the video bitrate of the output file to 64kbit/s:
-<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.avi -b 64k output.avi
+To set the video bitrate of the output file to 64 kbit/s:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.avi -b:v 64k -bufsize 64k output.avi
 </pre></td></tr></table>
 
 </li><li>
@@ -341,29 +134,202 @@ to 1 fps and the frame rate of the output file to 24 fps:
 
 <p>The format option may be needed for raw input files.
 </p>
-<p>By default ffmpeg tries to convert as losslessly as possible: It
-uses the same audio and video parameters for the outputs as the one
-specified for the inputs.
+
+<a name="Detailed-description"></a>
+<h1 class="chapter"><a href="ffmpeg.html#toc-Detailed-description">3. Detailed description</a></h1>
+
+<p>The transcoding process in <code>ffmpeg</code> for each output can be described by
+the following diagram:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example"> _______              ______________               _________              ______________            ________
+|       |            |              |             |         |            |              |          |        |
+| input |  demuxer   | encoded data |   decoder   | decoded |  encoder   | encoded data |  muxer   | output |
+| file  | ---------&gt; | packets      |  ---------&gt; | frames  | ---------&gt; | packets      | -------&gt; | file   |
+|_______|            |______________|             |_________|            |______________|          |________|
+
+</pre></td></tr></table>
+
+<p><code>ffmpeg</code> calls the libavformat library (containing demuxers) to read
+input files and get packets containing encoded data from them. When there are
+multiple input files, <code>ffmpeg</code> tries to keep them synchronized by
+tracking lowest timestamp on any active input stream.
+</p>
+<p>Encoded packets are then passed to the decoder (unless streamcopy is selected
+for the stream, see further for a description). The decoder produces
+uncompressed frames (raw video/PCM audio/...) which can be processed further by
+filtering (see next section). After filtering, the frames are passed to the
+encoder, which encodes them and outputs encoded packets. Finally those are
+passed to the muxer, which writes the encoded packets to the output file.
+</p>
+<a name="Filtering"></a>
+<h2 class="section"><a href="ffmpeg.html#toc-Filtering">3.1 Filtering</a></h2>
+<p>Before encoding, <code>ffmpeg</code> can process raw audio and video frames using
+filters from the libavfilter library. Several chained filters form a filter
+graph. <code>ffmpeg</code> distinguishes between two types of filtergraphs:
+simple and complex.
+</p>
+<a name="Simple-filtergraphs"></a>
+<h3 class="subsection"><a href="ffmpeg.html#toc-Simple-filtergraphs">3.1.1 Simple filtergraphs</a></h3>
+<p>Simple filtergraphs are those that have exactly one input and output, both of
+the same type. In the above diagram they can be represented by simply inserting
+an additional step between decoding and encoding:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example"> _________                        __________              ______________
+|         |                      |          |            |              |
+| decoded |  simple filtergraph  | filtered |  encoder   | encoded data |
+| frames  | -------------------&gt; | frames   | ---------&gt; | packets      |
+|_________|                      |__________|            |______________|
+
+</pre></td></tr></table>
+
+<p>Simple filtergraphs are configured with the per-stream &lsquo;<samp>-filter</samp>&rsquo; option
+(with &lsquo;<samp>-vf</samp>&rsquo; and &lsquo;<samp>-af</samp>&rsquo; aliases for video and audio respectively).
+A simple filtergraph for video can look for example like this:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example"> _______        _____________        _______        _____        ________
+|       |      |             |      |       |      |     |      |        |
+| input | ---&gt; | deinterlace | ---&gt; | scale | ---&gt; | fps | ---&gt; | output |
+|_______|      |_____________|      |_______|      |_____|      |________|
+
+</pre></td></tr></table>
+
+<p>Note that some filters change frame properties but not frame contents. E.g. the
+<code>fps</code> filter in the example above changes number of frames, but does not
+touch the frame contents. Another example is the <code>setpts</code> filter, which
+only sets timestamps and otherwise passes the frames unchanged.
+</p>
+<a name="Complex-filtergraphs"></a>
+<h3 class="subsection"><a href="ffmpeg.html#toc-Complex-filtergraphs">3.1.2 Complex filtergraphs</a></h3>
+<p>Complex filtergraphs are those which cannot be described as simply a linear
+processing chain applied to one stream. This is the case, for example, when the graph has
+more than one input and/or output, or when output stream type is different from
+input. They can be represented with the following diagram:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example"> _________
+|         |
+| input 0 |\                    __________
+|_________| \                  |          |
+             \   _________    /| output 0 |
+              \ |         |  / |__________|
+ _________     \| complex | /
+|         |     |         |/
+| input 1 |----&gt;| filter  |\
+|_________|     |         | \   __________
+               /| graph   |  \ |          |
+              / |         |   \| output 1 |
+ _________   /  |_________|    |__________|
+|         | /
+| input 2 |/
+|_________|
+
+</pre></td></tr></table>
+
+<p>Complex filtergraphs are configured with the &lsquo;<samp>-filter_complex</samp>&rsquo; option.
+Note that this option is global, since a complex filtergraph, by its nature,
+cannot be unambiguously associated with a single stream or file.
+</p>
+<p>The &lsquo;<samp>-lavfi</samp>&rsquo; option is equivalent to &lsquo;<samp>-filter_complex</samp>&rsquo;.
+</p>
+<p>A trivial example of a complex filtergraph is the <code>overlay</code> filter, which
+has two video inputs and one video output, containing one video overlaid on top
+of the other. Its audio counterpart is the <code>amix</code> filter.
+</p>
+<a name="Stream-copy"></a>
+<h2 class="section"><a href="ffmpeg.html#toc-Stream-copy">3.2 Stream copy</a></h2>
+<p>Stream copy is a mode selected by supplying the <code>copy</code> parameter to the
+&lsquo;<samp>-codec</samp>&rsquo; option. It makes <code>ffmpeg</code> omit the decoding and encoding
+step for the specified stream, so it does only demuxing and muxing. It is useful
+for changing the container format or modifying container-level metadata. The
+diagram above will, in this case, simplify to this:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example"> _______              ______________            ________
+|       |            |              |          |        |
+| input |  demuxer   | encoded data |  muxer   | output |
+| file  | ---------&gt; | packets      | -------&gt; | file   |
+|_______|            |______________|          |________|
+
+</pre></td></tr></table>
+
+<p>Since there is no decoding or encoding, it is very fast and there is no quality
+loss. However, it might not work in some cases because of many factors. Applying
+filters is obviously also impossible, since filters work on uncompressed data.
+</p>
+
+<a name="Stream-selection"></a>
+<h1 class="chapter"><a href="ffmpeg.html#toc-Stream-selection">4. Stream selection</a></h1>
+
+<p>By default, <code>ffmpeg</code> includes only one stream of each type (video, audio, subtitle)
+present in the input files and adds them to each output file.  It picks the
+&quot;best&quot; of each based upon the following criteria: for video, it is the stream
+with the highest resolution, for audio, it is the stream with the most channels, for
+subtitles, it is the first subtitle stream. In the case where several streams of
+the same type rate equally, the stream with the lowest index is chosen.
+</p>
+<p>You can disable some of those defaults by using the <code>-vn/-an/-sn</code> options. For
+full manual control, use the <code>-map</code> option, which disables the defaults just
+described.
 </p>
 
-<a name="Options-6"></a>
-<h1 class="chapter"><a href="ffmpeg.html#toc-Options-6">3. Options</a></h1>
+<a name="Options"></a>
+<h1 class="chapter"><a href="ffmpeg.html#toc-Options">5. Options</a></h1>
 
-<p>All the numerical options, if not specified otherwise, accept in input
-a string representing a number, which may contain one of the
-International System number postfixes, for example &rsquo;K&rsquo;, &rsquo;M&rsquo;, &rsquo;G&rsquo;.
-If &rsquo;i&rsquo; is appended after the postfix, powers of 2 are used instead of
-powers of 10. The &rsquo;B&rsquo; postfix multiplies the value for 8, and can be
-appended after another postfix or used alone. This allows using for
-example &rsquo;KB&rsquo;, &rsquo;MiB&rsquo;, &rsquo;G&rsquo; and &rsquo;B&rsquo; as postfix.
+<p>All the numerical options, if not specified otherwise, accept a string
+representing a number as input, which may be followed by one of the SI
+unit prefixes, for example: &rsquo;K&rsquo;, &rsquo;M&rsquo;, or &rsquo;G&rsquo;.
+</p>
+<p>If &rsquo;i&rsquo; is appended to the SI unit prefix, the complete prefix will be
+interpreted as a unit prefix for binary multiplies, which are based on
+powers of 1024 instead of powers of 1000. Appending &rsquo;B&rsquo; to the SI unit
+prefix multiplies the value by 8. This allows using, for example:
+&rsquo;KB&rsquo;, &rsquo;MiB&rsquo;, &rsquo;G&rsquo; and &rsquo;B&rsquo; as number suffixes.
 </p>
 <p>Options which do not take arguments are boolean options, and set the
 corresponding value to true. They can be set to false by prefixing
-with &quot;no&quot; the option name, for example using &quot;-nofoo&quot; in the
-commandline will set to false the boolean option with name &quot;foo&quot;.
+the option name with &quot;no&quot;. For example using &quot;-nofoo&quot;
+will set the boolean option with name &quot;foo&quot; to false.
+</p>
+<p><a name="Stream-specifiers"></a>
+</p><a name="Stream-specifiers-1"></a>
+<h2 class="section"><a href="ffmpeg.html#toc-Stream-specifiers-1">5.1 Stream specifiers</a></h2>
+<p>Some options are applied per-stream, e.g. bitrate or codec. Stream specifiers
+are used to precisely specify which stream(s) a given option belongs to.
+</p>
+<p>A stream specifier is a string generally appended to the option name and
+separated from it by a colon. E.g. <code>-codec:a:1 ac3</code> contains the
+<code>a:1</code> stream specifier, which matches the second audio stream. Therefore, it
+would select the ac3 codec for the second audio stream.
 </p>
+<p>A stream specifier can match several streams, so that the option is applied to all
+of them. E.g. the stream specifier in <code>-b:a 128k</code> matches all audio
+streams.
+</p>
+<p>An empty stream specifier matches all streams. For example, <code>-codec copy</code>
+or <code>-codec: copy</code> would copy all the streams without reencoding.
+</p>
+<p>Possible forms of stream specifiers are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp><var>stream_index</var></samp>&rsquo;</dt>
+<dd><p>Matches the stream with this index. E.g. <code>-threads:1 4</code> would set the
+thread count for the second stream to 4.
+</p></dd>
+<dt> &lsquo;<samp><var>stream_type</var>[:<var>stream_index</var>]</samp>&rsquo;</dt>
+<dd><p><var>stream_type</var> is one of following: &rsquo;v&rsquo; for video, &rsquo;a&rsquo; for audio, &rsquo;s&rsquo; for subtitle,
+&rsquo;d&rsquo; for data, and &rsquo;t&rsquo; for attachments. If <var>stream_index</var> is given, then it matches
+stream number <var>stream_index</var> of this type. Otherwise, it matches all
+streams of this type.
+</p></dd>
+<dt> &lsquo;<samp>p:<var>program_id</var>[:<var>stream_index</var>]</samp>&rsquo;</dt>
+<dd><p>If <var>stream_index</var> is given, then it matches the stream with number <var>stream_index</var>
+in the program with the id <var>program_id</var>. Otherwise, it matches all streams in the
+program.
+</p></dd>
+<dt> &lsquo;<samp>#<var>stream_id</var></samp>&rsquo;</dt>
+<dd><p>Matches the stream by a format-specific ID.
+</p></dd>
+</dl>
+
 <a name="Generic-options"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-Generic-options">3.1 Generic options</a></h2>
+<h2 class="section"><a href="ffmpeg.html#toc-Generic-options">5.2 Generic options</a></h2>
 
 <p>These options are shared amongst the ff* tools.
 </p>
@@ -372,9 +338,48 @@ commandline will set to false the boolean option with name &quot;foo&quot;.
 <dd><p>Show license.
 </p>
 </dd>
-<dt> &lsquo;<samp>-h, -?, -help, --help</samp>&rsquo;</dt>
-<dd><p>Show help.
+<dt> &lsquo;<samp>-h, -?, -help, --help [<var>arg</var>]</samp>&rsquo;</dt>
+<dd><p>Show help. An optional parameter may be specified to print help about a specific
+item. If no argument is specified, only basic (non advanced) tool
+options are shown.
+</p>
+<p>Possible values of <var>arg</var> are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>long</samp>&rsquo;</dt>
+<dd><p>Print advanced tool options in addition to the basic tool options.
+</p>
+</dd>
+<dt> &lsquo;<samp>full</samp>&rsquo;</dt>
+<dd><p>Print complete list of options, including shared and private options
+for encoders, decoders, demuxers, muxers, filters, etc.
+</p>
+</dd>
+<dt> &lsquo;<samp>decoder=<var>decoder_name</var></samp>&rsquo;</dt>
+<dd><p>Print detailed information about the decoder named <var>decoder_name</var>. Use the
+&lsquo;<samp>-decoders</samp>&rsquo; option to get a list of all decoders.
 </p>
+</dd>
+<dt> &lsquo;<samp>encoder=<var>encoder_name</var></samp>&rsquo;</dt>
+<dd><p>Print detailed information about the encoder named <var>encoder_name</var>. Use the
+&lsquo;<samp>-encoders</samp>&rsquo; option to get a list of all encoders.
+</p>
+</dd>
+<dt> &lsquo;<samp>demuxer=<var>demuxer_name</var></samp>&rsquo;</dt>
+<dd><p>Print detailed information about the demuxer named <var>demuxer_name</var>. Use the
+&lsquo;<samp>-formats</samp>&rsquo; option to get a list of all demuxers and muxers.
+</p>
+</dd>
+<dt> &lsquo;<samp>muxer=<var>muxer_name</var></samp>&rsquo;</dt>
+<dd><p>Print detailed information about the muxer named <var>muxer_name</var>. Use the
+&lsquo;<samp>-formats</samp>&rsquo; option to get a list of all muxers and demuxers.
+</p>
+</dd>
+<dt> &lsquo;<samp>filter=<var>filter_name</var></samp>&rsquo;</dt>
+<dd><p>Print detailed information about the filter name <var>filter_name</var>. Use the
+&lsquo;<samp>-filters</samp>&rsquo; option to get a list of all filters.
+</p></dd>
+</dl>
+
 </dd>
 <dt> &lsquo;<samp>-version</samp>&rsquo;</dt>
 <dd><p>Show version.
@@ -383,42 +388,21 @@ commandline will set to false the boolean option with name &quot;foo&quot;.
 <dt> &lsquo;<samp>-formats</samp>&rsquo;</dt>
 <dd><p>Show available formats.
 </p>
-<p>The fields preceding the format names have the following meanings:
-</p><dl compact="compact">
-<dt> &lsquo;<samp>D</samp>&rsquo;</dt>
-<dd><p>Decoding available
-</p></dd>
-<dt> &lsquo;<samp>E</samp>&rsquo;</dt>
-<dd><p>Encoding available
-</p></dd>
-</dl>
-
 </dd>
 <dt> &lsquo;<samp>-codecs</samp>&rsquo;</dt>
-<dd><p>Show available codecs.
+<dd><p>Show all codecs known to libavcodec.
+</p>
+<p>Note that the term &rsquo;codec&rsquo; is used throughout this documentation as a shortcut
+for what is more correctly called a media bitstream format.
+</p>
+</dd>
+<dt> &lsquo;<samp>-decoders</samp>&rsquo;</dt>
+<dd><p>Show available decoders.
+</p>
+</dd>
+<dt> &lsquo;<samp>-encoders</samp>&rsquo;</dt>
+<dd><p>Show all available encoders.
 </p>
-<p>The fields preceding the codec names have the following meanings:
-</p><dl compact="compact">
-<dt> &lsquo;<samp>D</samp>&rsquo;</dt>
-<dd><p>Decoding available
-</p></dd>
-<dt> &lsquo;<samp>E</samp>&rsquo;</dt>
-<dd><p>Encoding available
-</p></dd>
-<dt> &lsquo;<samp>V/A/S</samp>&rsquo;</dt>
-<dd><p>Video/audio/subtitle codec
-</p></dd>
-<dt> &lsquo;<samp>S</samp>&rsquo;</dt>
-<dd><p>Codec supports slices
-</p></dd>
-<dt> &lsquo;<samp>D</samp>&rsquo;</dt>
-<dd><p>Codec supports direct rendering
-</p></dd>
-<dt> &lsquo;<samp>T</samp>&rsquo;</dt>
-<dd><p>Codec can handle input truncated at random locations instead of only at frame boundaries
-</p></dd>
-</dl>
-
 </dd>
 <dt> &lsquo;<samp>-bsfs</samp>&rsquo;</dt>
 <dd><p>Show available bitstream filters.
@@ -436,41 +420,177 @@ commandline will set to false the boolean option with name &quot;foo&quot;.
 <dd><p>Show available pixel formats.
 </p>
 </dd>
-<dt> &lsquo;<samp>-loglevel <var>loglevel</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>-sample_fmts</samp>&rsquo;</dt>
+<dd><p>Show available sample formats.
+</p>
+</dd>
+<dt> &lsquo;<samp>-layouts</samp>&rsquo;</dt>
+<dd><p>Show channel names and standard channel layouts.
+</p>
+</dd>
+<dt> &lsquo;<samp>-colors</samp>&rsquo;</dt>
+<dd><p>Show recognized color names.
+</p>
+</dd>
+<dt> &lsquo;<samp>-loglevel [repeat+]<var>loglevel</var> | -v [repeat+]<var>loglevel</var></samp>&rsquo;</dt>
 <dd><p>Set the logging level used by the library.
+Adding &quot;repeat+&quot; indicates that repeated log output should not be compressed
+to the first line and the &quot;Last message repeated n times&quot; line will be
+omitted. &quot;repeat&quot; can also be used alone.
+If &quot;repeat&quot; is used alone, and with no prior loglevel set, the default
+loglevel will be used. If multiple loglevel parameters are given, using
+&rsquo;repeat&rsquo; will not change the loglevel.
 <var>loglevel</var> is a number or a string containing one of the following values:
 </p><dl compact="compact">
 <dt> &lsquo;<samp>quiet</samp>&rsquo;</dt>
+<dd><p>Show nothing at all; be silent.
+</p></dd>
 <dt> &lsquo;<samp>panic</samp>&rsquo;</dt>
+<dd><p>Only show fatal errors which could lead the process to crash, such as
+and assert failure. This is not currently used for anything.
+</p></dd>
 <dt> &lsquo;<samp>fatal</samp>&rsquo;</dt>
+<dd><p>Only show fatal errors. These are errors after which the process absolutely
+cannot continue after.
+</p></dd>
 <dt> &lsquo;<samp>error</samp>&rsquo;</dt>
+<dd><p>Show all errors, including ones which can be recovered from.
+</p></dd>
 <dt> &lsquo;<samp>warning</samp>&rsquo;</dt>
+<dd><p>Show all warnings and errors. Any message related to possibly
+incorrect or unexpected events will be shown.
+</p></dd>
 <dt> &lsquo;<samp>info</samp>&rsquo;</dt>
+<dd><p>Show informative messages during processing. This is in addition to
+warnings and errors. This is the default value.
+</p></dd>
 <dt> &lsquo;<samp>verbose</samp>&rsquo;</dt>
+<dd><p>Same as <code>info</code>, except more verbose.
+</p></dd>
 <dt> &lsquo;<samp>debug</samp>&rsquo;</dt>
+<dd><p>Show everything, including debugging information.
+</p></dd>
 </dl>
 
 <p>By default the program logs to stderr, if coloring is supported by the
 terminal, colors are used to mark errors and warnings. Log coloring
 can be disabled setting the environment variable
-<code>FFMPEG_FORCE_NOCOLOR</code> or <code>NO_COLOR</code>, or can be forced setting
-the environment variable <code>FFMPEG_FORCE_COLOR</code>.
+<code>AV_LOG_FORCE_NOCOLOR</code> or <code>NO_COLOR</code>, or can be forced setting
+the environment variable <code>AV_LOG_FORCE_COLOR</code>.
 The use of the environment variable <code>NO_COLOR</code> is deprecated and
 will be dropped in a following FFmpeg version.
 </p>
 </dd>
+<dt> &lsquo;<samp>-report</samp>&rsquo;</dt>
+<dd><p>Dump full command line and console output to a file named
+<code><var>program</var>-<var>YYYYMMDD</var>-<var>HHMMSS</var>.log</code> in the current
+directory.
+This file can be useful for bug reports.
+It also implies <code>-loglevel verbose</code>.
+</p>
+<p>Setting the environment variable <code>FFREPORT</code> to any value has the
+same effect. If the value is a &rsquo;:&rsquo;-separated key=value sequence, these
+options will affect the report; options values must be escaped if they
+contain special characters or the options delimiter &rsquo;:&rsquo; (see the
+&ldquo;Quoting and escaping&rdquo; section in the ffmpeg-utils manual). The
+following option is recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>file</samp>&rsquo;</dt>
+<dd><p>set the file name to use for the report; <code>%p</code> is expanded to the name
+of the program, <code>%t</code> is expanded to a timestamp, <code>%%</code> is expanded
+to a plain <code>%</code>
+</p></dd>
+</dl>
+
+<p>Errors in parsing the environment variable are not fatal, and will not
+appear in the report.
+</p>
+</dd>
+<dt> &lsquo;<samp>-cpuflags flags (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Allows setting and clearing cpu flags. This option is intended
+for testing. Do not use it unless you know what you&rsquo;re doing.
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -cpuflags -sse+mmx ...
+ffmpeg -cpuflags mmx ...
+ffmpeg -cpuflags 0 ...
+</pre></td></tr></table>
+<p>Possible flags for this option are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>x86</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>mmx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mmxext</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse2slow</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse3</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse3slow</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ssse3</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>atom</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse4.1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse4.2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>avx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>xop</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>fma4</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>3dnow</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>3dnowext</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>cmov</samp>&rsquo;</dt>
+</dl>
+</dd>
+<dt> &lsquo;<samp>ARM</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>armv5te</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>armv6</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>armv6t2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vfp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vfpv3</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>neon</samp>&rsquo;</dt>
+</dl>
+</dd>
+<dt> &lsquo;<samp>PowerPC</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>altivec</samp>&rsquo;</dt>
+</dl>
+</dd>
+<dt> &lsquo;<samp>Specific Processors</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>pentium2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>pentium3</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>pentium4</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>k6</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>k62</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>athlon</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>athlonxp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>k8</samp>&rsquo;</dt>
+</dl>
+</dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-opencl_bench</samp>&rsquo;</dt>
+<dd><p>Benchmark all available OpenCL devices and show the results. This option
+is only available when FFmpeg has been compiled with <code>--enable-opencl</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>-opencl_options options (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Set OpenCL environment options. This option is only available when
+FFmpeg has been compiled with <code>--enable-opencl</code>.
+</p>
+<p><var>options</var> must be a list of <var>key</var>=<var>value</var> option pairs
+separated by &rsquo;:&rsquo;. See the &ldquo;OpenCL Options&rdquo; section in the
+ffmpeg-utils manual for the list of supported options.
+</p></dd>
 </dl>
 
 <a name="AVOptions"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-AVOptions">3.2 AVOptions</a></h2>
+<h2 class="section"><a href="ffmpeg.html#toc-AVOptions">5.3 AVOptions</a></h2>
 
 <p>These options are provided directly by the libavformat, libavdevice and
 libavcodec libraries. To see the list of available AVOptions, use the
 &lsquo;<samp>-help</samp>&rsquo; option. They are separated into two categories:
 </p><dl compact="compact">
 <dt> &lsquo;<samp>generic</samp>&rsquo;</dt>
-<dd><p>These options can be set for any container, codec or device. Generic options are
-listed under AVFormatContext options for containers/devices and under
+<dd><p>These options can be set for any container, codec or device. Generic options
+are listed under AVFormatContext options for containers/devices and under
 AVCodecContext options for codecs.
 </p></dd>
 <dt> &lsquo;<samp>private</samp>&rsquo;</dt>
@@ -485,69 +605,103 @@ muxer:
 </p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.flac -id3v2_version 3 out.mp3
 </pre></td></tr></table>
 
-<p>You can precisely specify which stream(s) should the codec AVOption apply to by
-appending a stream specifier of the form
-&lsquo;<samp>[:<var>stream_type</var>][:<var>stream_index</var>]</samp>&rsquo; to the option name.
-<var>stream_type</var> is &rsquo;v&rsquo; for video, &rsquo;a&rsquo; for audio and &rsquo;s&rsquo; for subtitle streams.
-<var>stream_index</var> is a global stream index when <var>stream_type</var> isn&rsquo;t
-given, otherwise it counts streams of the given type only. As always, the index
-is zero-based. For example
-</p><table><tr><td>&nbsp;</td><td><pre class="example">-foo -- applies to all applicable streams
--foo:v -- applies to all video streams
--foo:a:2 -- applies to the third audio stream
--foo:0 -- applies to the first stream
-</pre></td></tr></table>
-
-<p>Note -nooption syntax cannot be used for boolean AVOptions, use -option
-0/-option 1.
+<p>All codec AVOptions are per-stream, and thus a stream specifier
+should be attached to them.
+</p>
+<p>Note: the &lsquo;<samp>-nooption</samp>&rsquo; syntax cannot be used for boolean
+AVOptions, use &lsquo;<samp>-option 0</samp>&rsquo;/&lsquo;<samp>-option 1</samp>&rsquo;.
 </p>
-<p>Note2 old undocumented way of specifying per-stream AVOptions by prepending
-v/a/s to the options name is now obsolete and will be removed soon.
+<p>Note: the old undocumented way of specifying per-stream AVOptions by
+prepending v/a/s to the options name is now obsolete and will be
+removed soon.
 </p>
 <a name="Main-options"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-Main-options">3.3 Main options</a></h2>
+<h2 class="section"><a href="ffmpeg.html#toc-Main-options">5.4 Main options</a></h2>
 
 <dl compact="compact">
-<dt> &lsquo;<samp>-f <var>fmt</var></samp>&rsquo;</dt>
-<dd><p>Force format.
+<dt> &lsquo;<samp>-f <var>fmt</var> (<em>input/output</em>)</samp>&rsquo;</dt>
+<dd><p>Force input or output file format. The format is normally auto detected for input
+files and guessed from the file extension for output files, so this option is not
+needed in most cases.
 </p>
 </dd>
-<dt> &lsquo;<samp>-i <var>filename</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>-i <var>filename</var> (<em>input</em>)</samp>&rsquo;</dt>
 <dd><p>input file name
 </p>
 </dd>
-<dt> &lsquo;<samp>-y</samp>&rsquo;</dt>
-<dd><p>Overwrite output files.
+<dt> &lsquo;<samp>-y (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Overwrite output files without asking.
 </p>
 </dd>
-<dt> &lsquo;<samp>-t <var>duration</var></samp>&rsquo;</dt>
-<dd><p>Restrict the transcoded/captured video sequence
-to the duration specified in seconds.
-<code>hh:mm:ss[.xxx]</code> syntax is also supported.
+<dt> &lsquo;<samp>-n (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Do not overwrite output files, and exit immediately if a specified
+output file already exists.
 </p>
 </dd>
-<dt> &lsquo;<samp>-fs <var>limit_size</var></samp>&rsquo;</dt>
-<dd><p>Set the file size limit.
+<dt> &lsquo;<samp>-c[:<var>stream_specifier</var>] <var>codec</var> (<em>input/output,per-stream</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>-codec[:<var>stream_specifier</var>] <var>codec</var> (<em>input/output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Select an encoder (when used before an output file) or a decoder (when used
+before an input file) for one or more streams. <var>codec</var> is the name of a
+decoder/encoder or a special value <code>copy</code> (output only) to indicate that
+the stream is not to be re-encoded.
+</p>
+<p>For example
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -map 0 -c:v libx264 -c:a copy OUTPUT
+</pre></td></tr></table>
+<p>encodes all video streams with libx264 and copies all audio streams.
+</p>
+<p>For each stream, the last matching <code>c</code> option is applied, so
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -map 0 -c copy -c:v:1 libx264 -c:a:137 libvorbis OUTPUT
+</pre></td></tr></table>
+<p>will copy all the streams except the second video, which will be encoded with
+libx264, and the 138th audio, which will be encoded with libvorbis.
+</p>
+</dd>
+<dt> &lsquo;<samp>-t <var>duration</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Stop writing the output after its duration reaches <var>duration</var>.
+<var>duration</var> may be a number in seconds, or in <code>hh:mm:ss[.xxx]</code> form.
+</p>
+<p>-to and -t are mutually exclusive and -t has priority.
+</p>
+</dd>
+<dt> &lsquo;<samp>-to <var>position</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Stop writing the output at <var>position</var>.
+<var>position</var> may be a number in seconds, or in <code>hh:mm:ss[.xxx]</code> form.
+</p>
+<p>-to and -t are mutually exclusive and -t has priority.
+</p>
+</dd>
+<dt> &lsquo;<samp>-fs <var>limit_size</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set the file size limit, expressed in bytes.
 </p>
 </dd>
-<dt> &lsquo;<samp>-ss <var>position</var></samp>&rsquo;</dt>
-<dd><p>Seek to given time position in seconds.
-<code>hh:mm:ss[.xxx]</code> syntax is also supported.
+<dt> &lsquo;<samp>-ss <var>position</var> (<em>input/output</em>)</samp>&rsquo;</dt>
+<dd><p>When used as an input option (before <code>-i</code>), seeks in this input file to
+<var>position</var>. Note the in most formats it is not possible to seek exactly, so
+<code>ffmpeg</code> will seek to the closest seek point before <var>position</var>.
+When transcoding and &lsquo;<samp>-accurate_seek</samp>&rsquo; is enabled (the default), this
+extra segment between the seek point and <var>position</var> will be decoded and
+discarded. When doing stream copy or when &lsquo;<samp>-noaccurate_seek</samp>&rsquo; is used, it
+will be preserved.
+</p>
+<p>When used as an output option (before an output filename), decodes but discards
+input until the timestamps reach <var>position</var>.
+</p>
+<p><var>position</var> may be either in seconds or in <code>hh:mm:ss[.xxx]</code> form.
 </p>
 </dd>
-<dt> &lsquo;<samp>-itsoffset <var>offset</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>-itsoffset <var>offset</var> (<em>input</em>)</samp>&rsquo;</dt>
 <dd><p>Set the input time offset in seconds.
 <code>[-]hh:mm:ss[.xxx]</code> syntax is also supported.
-This option affects all the input files that follow it.
 The offset is added to the timestamps of the input files.
 Specifying a positive offset means that the corresponding
-streams are delayed by &rsquo;offset&rsquo; seconds.
+streams are delayed by <var>offset</var> seconds.
 </p>
 </dd>
-<dt> &lsquo;<samp>-timestamp <var>time</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>-timestamp <var>time</var> (<em>output</em>)</samp>&rsquo;</dt>
 <dd><p>Set the recording timestamp in the container.
 The syntax for <var>time</var> is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">now|([(YYYY-MM-DD|YYYYMMDD)[T|t| ]]((HH[:MM[:SS[.m...]]])|(HH[MM[SS[.m...]]]))[Z|z])
+</p><table><tr><td>&nbsp;</td><td><pre class="example">now|([(YYYY-MM-DD|YYYYMMDD)[T|t| ]]((HH:MM:SS[.m...])|(HHMMSS[.m...]))[Z|z])
 </pre></td></tr></table>
 <p>If the value is &quot;now&quot; it takes the current time.
 Time is local time unless &rsquo;Z&rsquo; or &rsquo;z&rsquo; is appended, in which case it is
@@ -556,22 +710,30 @@ If the year-month-day part is not specified it takes the current
 year-month-day.
 </p>
 </dd>
-<dt> &lsquo;<samp>-metadata <var>key</var>=<var>value</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>-metadata[:metadata_specifier] <var>key</var>=<var>value</var> (<em>output,per-metadata</em>)</samp>&rsquo;</dt>
 <dd><p>Set a metadata key/value pair.
 </p>
+<p>An optional <var>metadata_specifier</var> may be given to set metadata
+on streams or chapters. See <code>-map_metadata</code> documentation for
+details.
+</p>
+<p>This option overrides metadata set with <code>-map_metadata</code>. It is
+also possible to delete metadata by using an empty value.
+</p>
 <p>For example, for setting the title in the output file:
 </p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -metadata title=&quot;my title&quot; out.flv
 </pre></td></tr></table>
 
+<p>To set the language of the first audio stream:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -metadata:s:a:1 language=eng OUTPUT
+</pre></td></tr></table>
+
 </dd>
-<dt> &lsquo;<samp>-v <var>number</var></samp>&rsquo;</dt>
-<dd><p>Set the logging verbosity level.
-</p>
-</dd>
-<dt> &lsquo;<samp>-target <var>type</var></samp>&rsquo;</dt>
-<dd><p>Specify target file type (&quot;vcd&quot;, &quot;svcd&quot;, &quot;dvd&quot;, &quot;dv&quot;, &quot;dv50&quot;, &quot;pal-vcd&quot;,
-&quot;ntsc-svcd&quot;, ... ). All the format options (bitrate, codecs,
-buffer sizes) are then set automatically. You can just type:
+<dt> &lsquo;<samp>-target <var>type</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Specify target file type (<code>vcd</code>, <code>svcd</code>, <code>dvd</code>, <code>dv</code>,
+<code>dv50</code>). <var>type</var> may be prefixed with <code>pal-</code>, <code>ntsc-</code> or
+<code>film-</code> to use the corresponding standard. All the format options
+(bitrate, codecs, buffer sizes) are then set automatically. You can just type:
 </p>
 <table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg
 </pre></td></tr></table>
@@ -583,189 +745,172 @@ they do not conflict with the standard, as in:
 </pre></td></tr></table>
 
 </dd>
-<dt> &lsquo;<samp>-dframes <var>number</var></samp>&rsquo;</dt>
-<dd><p>Set the number of data frames to record.
+<dt> &lsquo;<samp>-dframes <var>number</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set the number of data frames to record. This is an alias for <code>-frames:d</code>.
 </p>
 </dd>
-<dt> &lsquo;<samp>-scodec <var>codec</var></samp>&rsquo;</dt>
-<dd><p>Force subtitle codec (&rsquo;copy&rsquo; to copy stream).
+<dt> &lsquo;<samp>-frames[:<var>stream_specifier</var>] <var>framecount</var> (<em>output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Stop writing to the stream after <var>framecount</var> frames.
 </p>
 </dd>
-<dt> &lsquo;<samp>-newsubtitle</samp>&rsquo;</dt>
-<dd><p>Add a new subtitle stream to the current output stream.
+<dt> &lsquo;<samp>-q[:<var>stream_specifier</var>] <var>q</var> (<em>output,per-stream</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>-qscale[:<var>stream_specifier</var>] <var>q</var> (<em>output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Use fixed quality scale (VBR). The meaning of <var>q</var>/<var>qscale</var> is
+codec-dependent.
+If <var>qscale</var> is used without a <var>stream_specifier</var> then it applies only
+to the video stream, this is to maintain compatibility with previous behavior
+and as specifying the same codec specific value to 2 different codecs that is
+audio and video generally is not what is intended when no stream_specifier is
+used.
+</p>
+<p><a name="filter_005foption"></a>
+</p></dd>
+<dt> &lsquo;<samp>-filter[:<var>stream_specifier</var>] <var>filtergraph</var> (<em>output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Create the filtergraph specified by <var>filtergraph</var> and use it to
+filter the stream.
+</p>
+<p><var>filtergraph</var> is a description of the filtergraph to apply to
+the stream, and must have a single input and a single output of the
+same type of the stream. In the filtergraph, the input is associated
+to the label <code>in</code>, and the output to the label <code>out</code>. See
+the ffmpeg-filters manual for more information about the filtergraph
+syntax.
+</p>
+<p>See the <a href="#filter_005fcomplex_005foption">-filter_complex option</a> if you
+want to create filtergraphs with multiple inputs and/or outputs.
 </p>
 </dd>
-<dt> &lsquo;<samp>-slang <var>code</var></samp>&rsquo;</dt>
-<dd><p>Set the ISO 639 language code (3 letters) of the current subtitle stream.
+<dt> &lsquo;<samp>-filter_script[:<var>stream_specifier</var>] <var>filename</var> (<em>output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>This option is similar to &lsquo;<samp>-filter</samp>&rsquo;, the only difference is that its
+argument is the name of the file from which a filtergraph description is to be
+read.
 </p>
 </dd>
-</dl>
-
-<a name="Video-Options"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-Video-Options">3.4 Video Options</a></h2>
-
-<dl compact="compact">
-<dt> &lsquo;<samp>-vframes <var>number</var></samp>&rsquo;</dt>
-<dd><p>Set the number of video frames to record.
-</p></dd>
-<dt> &lsquo;<samp>-r <var>fps</var></samp>&rsquo;</dt>
-<dd><p>Set frame rate (Hz value, fraction or abbreviation), (default = 25).
-</p></dd>
-<dt> &lsquo;<samp>-s <var>size</var></samp>&rsquo;</dt>
-<dd><p>Set frame size. The format is &lsquo;<samp>wxh</samp>&rsquo; (ffserver default = 160x128).
-There is no default for input streams,
-for output streams it is set by default to the size of the source stream.
-The following abbreviations are recognized:
-</p><dl compact="compact">
-<dt> &lsquo;<samp>sqcif</samp>&rsquo;</dt>
-<dd><p>128x96
-</p></dd>
-<dt> &lsquo;<samp>qcif</samp>&rsquo;</dt>
-<dd><p>176x144
-</p></dd>
-<dt> &lsquo;<samp>cif</samp>&rsquo;</dt>
-<dd><p>352x288
-</p></dd>
-<dt> &lsquo;<samp>4cif</samp>&rsquo;</dt>
-<dd><p>704x576
-</p></dd>
-<dt> &lsquo;<samp>16cif</samp>&rsquo;</dt>
-<dd><p>1408x1152
-</p></dd>
-<dt> &lsquo;<samp>qqvga</samp>&rsquo;</dt>
-<dd><p>160x120
-</p></dd>
-<dt> &lsquo;<samp>qvga</samp>&rsquo;</dt>
-<dd><p>320x240
-</p></dd>
-<dt> &lsquo;<samp>vga</samp>&rsquo;</dt>
-<dd><p>640x480
-</p></dd>
-<dt> &lsquo;<samp>svga</samp>&rsquo;</dt>
-<dd><p>800x600
-</p></dd>
-<dt> &lsquo;<samp>xga</samp>&rsquo;</dt>
-<dd><p>1024x768
-</p></dd>
-<dt> &lsquo;<samp>uxga</samp>&rsquo;</dt>
-<dd><p>1600x1200
-</p></dd>
-<dt> &lsquo;<samp>qxga</samp>&rsquo;</dt>
-<dd><p>2048x1536
-</p></dd>
-<dt> &lsquo;<samp>sxga</samp>&rsquo;</dt>
-<dd><p>1280x1024
-</p></dd>
-<dt> &lsquo;<samp>qsxga</samp>&rsquo;</dt>
-<dd><p>2560x2048
-</p></dd>
-<dt> &lsquo;<samp>hsxga</samp>&rsquo;</dt>
-<dd><p>5120x4096
-</p></dd>
-<dt> &lsquo;<samp>wvga</samp>&rsquo;</dt>
-<dd><p>852x480
-</p></dd>
-<dt> &lsquo;<samp>wxga</samp>&rsquo;</dt>
-<dd><p>1366x768
-</p></dd>
-<dt> &lsquo;<samp>wsxga</samp>&rsquo;</dt>
-<dd><p>1600x1024
-</p></dd>
-<dt> &lsquo;<samp>wuxga</samp>&rsquo;</dt>
-<dd><p>1920x1200
-</p></dd>
-<dt> &lsquo;<samp>woxga</samp>&rsquo;</dt>
-<dd><p>2560x1600
-</p></dd>
-<dt> &lsquo;<samp>wqsxga</samp>&rsquo;</dt>
-<dd><p>3200x2048
-</p></dd>
-<dt> &lsquo;<samp>wquxga</samp>&rsquo;</dt>
-<dd><p>3840x2400
-</p></dd>
-<dt> &lsquo;<samp>whsxga</samp>&rsquo;</dt>
-<dd><p>6400x4096
-</p></dd>
-<dt> &lsquo;<samp>whuxga</samp>&rsquo;</dt>
-<dd><p>7680x4800
-</p></dd>
-<dt> &lsquo;<samp>cga</samp>&rsquo;</dt>
-<dd><p>320x200
-</p></dd>
-<dt> &lsquo;<samp>ega</samp>&rsquo;</dt>
-<dd><p>640x350
-</p></dd>
-<dt> &lsquo;<samp>hd480</samp>&rsquo;</dt>
-<dd><p>852x480
-</p></dd>
-<dt> &lsquo;<samp>hd720</samp>&rsquo;</dt>
-<dd><p>1280x720
-</p></dd>
-<dt> &lsquo;<samp>hd1080</samp>&rsquo;</dt>
-<dd><p>1920x1080
-</p></dd>
-</dl>
-
+<dt> &lsquo;<samp>-pre[:<var>stream_specifier</var>] <var>preset_name</var> (<em>output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Specify the preset for matching stream(s).
+</p>
 </dd>
-<dt> &lsquo;<samp>-aspect <var>aspect</var></samp>&rsquo;</dt>
-<dd><p>Set the video display aspect ratio specified by <var>aspect</var>.
+<dt> &lsquo;<samp>-stats (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Print encoding progress/statistics. It is on by default, to explicitly
+disable it you need to specify <code>-nostats</code>.
 </p>
-<p><var>aspect</var> can be a floating point number string, or a string of the
-form <var>num</var>:<var>den</var>, where <var>num</var> and <var>den</var> are the
-numerator and denominator of the aspect ratio. For example &quot;4:3&quot;,
-&quot;16:9&quot;, &quot;1.3333&quot;, and &quot;1.7777&quot; are valid argument values.
+</dd>
+<dt> &lsquo;<samp>-progress <var>url</var> (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Send program-friendly progress information to <var>url</var>.
+</p>
+<p>Progress information is written approximately every second and at the end of
+the encoding process. It is made of &quot;<var>key</var>=<var>value</var>&quot; lines. <var>key</var>
+consists of only alphanumeric characters. The last key of a sequence of
+progress information is always &quot;progress&quot;.
 </p>
 </dd>
-<dt> &lsquo;<samp>-croptop <var>size</var></samp>&rsquo;</dt>
-<dt> &lsquo;<samp>-cropbottom <var>size</var></samp>&rsquo;</dt>
-<dt> &lsquo;<samp>-cropleft <var>size</var></samp>&rsquo;</dt>
-<dt> &lsquo;<samp>-cropright <var>size</var></samp>&rsquo;</dt>
-<dd><p>All the crop options have been removed. Use -vf
-crop=width:height:x:y instead.
+<dt> &lsquo;<samp>-stdin</samp>&rsquo;</dt>
+<dd><p>Enable interaction on standard input. On by default unless standard input is
+used as an input. To explicitly disable interaction you need to specify
+<code>-nostdin</code>.
+</p>
+<p>Disabling interaction on standard input is useful, for example, if
+ffmpeg is in the background process group. Roughly the same result can
+be achieved with <code>ffmpeg ... &lt; /dev/null</code> but it requires a
+shell.
 </p>
 </dd>
-<dt> &lsquo;<samp>-padtop <var>size</var></samp>&rsquo;</dt>
-<dt> &lsquo;<samp>-padbottom <var>size</var></samp>&rsquo;</dt>
-<dt> &lsquo;<samp>-padleft <var>size</var></samp>&rsquo;</dt>
-<dt> &lsquo;<samp>-padright <var>size</var></samp>&rsquo;</dt>
-<dt> &lsquo;<samp>-padcolor <var>hex_color</var></samp>&rsquo;</dt>
-<dd><p>All the pad options have been removed. Use -vf
-pad=width:height:x:y:color instead.
-</p></dd>
-<dt> &lsquo;<samp>-vn</samp>&rsquo;</dt>
-<dd><p>Disable video recording.
-</p></dd>
-<dt> &lsquo;<samp>-bt <var>tolerance</var></samp>&rsquo;</dt>
-<dd><p>Set video bitrate tolerance (in bits, default 4000k).
-Has a minimum value of: (target_bitrate/target_framerate).
-In 1-pass mode, bitrate tolerance specifies how far ratecontrol is
-willing to deviate from the target average bitrate value. This is
-not related to min/max bitrate. Lowering tolerance too much has
-an adverse effect on quality.
-</p></dd>
-<dt> &lsquo;<samp>-maxrate <var>bitrate</var></samp>&rsquo;</dt>
-<dd><p>Set max video bitrate (in bit/s).
-Requires -bufsize to be set.
-</p></dd>
-<dt> &lsquo;<samp>-minrate <var>bitrate</var></samp>&rsquo;</dt>
-<dd><p>Set min video bitrate (in bit/s).
-Most useful in setting up a CBR encode:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i myfile.avi -b 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k out.m2v
+<dt> &lsquo;<samp>-debug_ts (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Print timestamp information. It is off by default. This option is
+mostly useful for testing and debugging purposes, and the output
+format may change from one version to another, so it should not be
+employed by portable scripts.
+</p>
+<p>See also the option <code>-fdebug ts</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>-attach <var>filename</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Add an attachment to the output file. This is supported by a few formats
+like Matroska for e.g. fonts used in rendering subtitles. Attachments
+are implemented as a specific type of stream, so this option will add
+a new stream to the file. It is then possible to use per-stream options
+on this stream in the usual way. Attachment streams created with this
+option will be created after all the other streams (i.e. those created
+with <code>-map</code> or automatic mappings).
+</p>
+<p>Note that for Matroska you also have to set the mimetype metadata tag:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -attach DejaVuSans.ttf -metadata:s:2 mimetype=application/x-truetype-font out.mkv
 </pre></td></tr></table>
-<p>It is of little use elsewise.
-</p></dd>
-<dt> &lsquo;<samp>-bufsize <var>size</var></samp>&rsquo;</dt>
-<dd><p>Set video buffer verifier buffer size (in bits).
-</p></dd>
-<dt> &lsquo;<samp>-vcodec <var>codec</var></samp>&rsquo;</dt>
-<dd><p>Force video codec to <var>codec</var>. Use the <code>copy</code> special value to
-tell that the raw codec data must be copied as is.
+<p>(assuming that the attachment stream will be third in the output file).
+</p>
+</dd>
+<dt> &lsquo;<samp>-dump_attachment[:<var>stream_specifier</var>] <var>filename</var> (<em>input,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Extract the matching attachment stream into a file named <var>filename</var>. If
+<var>filename</var> is empty, then the value of the <code>filename</code> metadata tag
+will be used.
+</p>
+<p>E.g. to extract the first attachment to a file named &rsquo;out.ttf&rsquo;:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -dump_attachment:t:0 out.ttf -i INPUT
+</pre></td></tr></table>
+<p>To extract all attachments to files determined by the <code>filename</code> tag:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -dump_attachment:t &quot;&quot; -i INPUT
+</pre></td></tr></table>
+
+<p>Technical note &ndash; attachments are implemented as codec extradata, so this
+option can actually be used to extract extradata from any stream, not just
+attachments.
+</p>
+</dd>
+</dl>
+
+<a name="Video-Options"></a>
+<h2 class="section"><a href="ffmpeg.html#toc-Video-Options">5.5 Video Options</a></h2>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-vframes <var>number</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set the number of video frames to record. This is an alias for <code>-frames:v</code>.
 </p></dd>
-<dt> &lsquo;<samp>-sameq</samp>&rsquo;</dt>
-<dd><p>Use same quantizer as source (implies VBR).
+<dt> &lsquo;<samp>-r[:<var>stream_specifier</var>] <var>fps</var> (<em>input/output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Set frame rate (Hz value, fraction or abbreviation).
+</p>
+<p>As an input option, ignore any timestamps stored in the file and instead
+generate timestamps assuming constant frame rate <var>fps</var>.
+</p>
+<p>As an output option, duplicate or drop input frames to achieve constant output
+frame rate <var>fps</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>-s[:<var>stream_specifier</var>] <var>size</var> (<em>input/output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Set frame size.
+</p>
+<p>As an input option, this is a shortcut for the &lsquo;<samp>video_size</samp>&rsquo; private
+option, recognized by some demuxers for which the frame size is either not
+stored in the file or is configurable &ndash; e.g. raw video or video grabbers.
+</p>
+<p>As an output option, this inserts the <code>scale</code> video filter to the
+<em>end</em> of the corresponding filtergraph. Please use the <code>scale</code> filter
+directly to insert it at the beginning or some other place.
+</p>
+<p>The format is &lsquo;<samp>wxh</samp>&rsquo; (default - same as source).
+</p>
+</dd>
+<dt> &lsquo;<samp>-aspect[:<var>stream_specifier</var>] <var>aspect</var> (<em>output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Set the video display aspect ratio specified by <var>aspect</var>.
+</p>
+<p><var>aspect</var> can be a floating point number string, or a string of the
+form <var>num</var>:<var>den</var>, where <var>num</var> and <var>den</var> are the
+numerator and denominator of the aspect ratio. For example &quot;4:3&quot;,
+&quot;16:9&quot;, &quot;1.3333&quot;, and &quot;1.7777&quot; are valid argument values.
+</p>
+<p>If used together with &lsquo;<samp>-vcodec copy</samp>&rsquo;, it will affect the aspect ratio
+stored at container level, but not the aspect ratio stored in encoded
+frames, if it exists.
+</p>
+</dd>
+<dt> &lsquo;<samp>-vn (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Disable video recording.
+</p>
+</dd>
+<dt> &lsquo;<samp>-vcodec <var>codec</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set the video codec. This is an alias for <code>-codec:v</code>.
 </p>
 </dd>
-<dt> &lsquo;<samp>-pass <var>n</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>-pass[:<var>stream_specifier</var>] <var>n</var> (<em>output,per-stream</em>)</samp>&rsquo;</dt>
 <dd><p>Select the pass number (1 or 2). It is used to do two-pass
 video encoding. The statistics of the video are recorded in the first
 pass into a log file (see also the option -passlogfile),
@@ -773,304 +918,60 @@ and in the second pass that log file is used to generate the video
 at the exact requested bitrate.
 On pass 1, you may just deactivate audio and set output to null,
 examples for Windows and Unix:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i foo.mov -vcodec libxvid -pass 1 -an -f rawvideo -y NUL
-ffmpeg -i foo.mov -vcodec libxvid -pass 1 -an -f rawvideo -y /dev/null
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i foo.mov -c:v libxvid -pass 1 -an -f rawvideo -y NUL
+ffmpeg -i foo.mov -c:v libxvid -pass 1 -an -f rawvideo -y /dev/null
 </pre></td></tr></table>
 
 </dd>
-<dt> &lsquo;<samp>-passlogfile <var>prefix</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>-passlogfile[:<var>stream_specifier</var>] <var>prefix</var> (<em>output,per-stream</em>)</samp>&rsquo;</dt>
 <dd><p>Set two-pass log file name prefix to <var>prefix</var>, the default file name
 prefix is &ldquo;ffmpeg2pass&rdquo;. The complete file name will be
 &lsquo;<tt>PREFIX-N.log</tt>&rsquo;, where N is a number specific to the output
-stream.
-</p>
-</dd>
-<dt> &lsquo;<samp>-newvideo</samp>&rsquo;</dt>
-<dd><p>Add a new video stream to the current output stream.
+stream
 </p>
 </dd>
 <dt> &lsquo;<samp>-vlang <var>code</var></samp>&rsquo;</dt>
 <dd><p>Set the ISO 639 language code (3 letters) of the current video stream.
 </p>
 </dd>
-<dt> &lsquo;<samp>-vf <var>filter_graph</var></samp>&rsquo;</dt>
-<dd><p><var>filter_graph</var> is a description of the filter graph to apply to
-the input video.
-Use the option &quot;-filters&quot; to show all the available filters (including
-also sources and sinks).
+<dt> &lsquo;<samp>-vf <var>filtergraph</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Create the filtergraph specified by <var>filtergraph</var> and use it to
+filter the stream.
 </p>
-</dd>
+<p>This is an alias for <code>-filter:v</code>, see the <a href="#filter_005foption">-filter option</a>.
+</p></dd>
 </dl>
 
 <a name="Advanced-Video-Options"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-Advanced-Video-Options">3.5 Advanced Video Options</a></h2>
+<h2 class="section"><a href="ffmpeg.html#toc-Advanced-Video-Options">5.6 Advanced Video Options</a></h2>
 
 <dl compact="compact">
-<dt> &lsquo;<samp>-pix_fmt <var>format</var></samp>&rsquo;</dt>
-<dd><p>Set pixel format. Use &rsquo;list&rsquo; as parameter to show all the supported
+<dt> &lsquo;<samp>-pix_fmt[:<var>stream_specifier</var>] <var>format</var> (<em>input/output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Set pixel format. Use <code>-pix_fmts</code> to show all the supported
 pixel formats.
-</p></dd>
-<dt> &lsquo;<samp>-sws_flags <var>flags</var></samp>&rsquo;</dt>
+If the selected pixel format can not be selected, ffmpeg will print a
+warning and select the best pixel format supported by the encoder.
+If <var>pix_fmt</var> is prefixed by a <code>+</code>, ffmpeg will exit with an error
+if the requested pixel format can not be selected, and automatic conversions
+inside filtergraphs are disabled.
+If <var>pix_fmt</var> is a single <code>+</code>, ffmpeg selects the same pixel format
+as the input (or graph output) and automatic conversions are disabled.
+</p>
+</dd>
+<dt> &lsquo;<samp>-sws_flags <var>flags</var> (<em>input/output</em>)</samp>&rsquo;</dt>
 <dd><p>Set SwScaler flags.
 </p></dd>
-<dt> &lsquo;<samp>-g <var>gop_size</var></samp>&rsquo;</dt>
-<dd><p>Set the group of pictures size.
-</p></dd>
-<dt> &lsquo;<samp>-intra</samp>&rsquo;</dt>
-<dd><p>Use only intra frames.
-</p></dd>
 <dt> &lsquo;<samp>-vdt <var>n</var></samp>&rsquo;</dt>
 <dd><p>Discard threshold.
-</p></dd>
-<dt> &lsquo;<samp>-qscale <var>q</var></samp>&rsquo;</dt>
-<dd><p>Use fixed video quantizer scale (VBR).
-</p></dd>
-<dt> &lsquo;<samp>-qmin <var>q</var></samp>&rsquo;</dt>
-<dd><p>minimum video quantizer scale (VBR)
-</p></dd>
-<dt> &lsquo;<samp>-qmax <var>q</var></samp>&rsquo;</dt>
-<dd><p>maximum video quantizer scale (VBR)
-</p></dd>
-<dt> &lsquo;<samp>-qdiff <var>q</var></samp>&rsquo;</dt>
-<dd><p>maximum difference between the quantizer scales (VBR)
-</p></dd>
-<dt> &lsquo;<samp>-qblur <var>blur</var></samp>&rsquo;</dt>
-<dd><p>video quantizer scale blur (VBR) (range 0.0 - 1.0)
-</p></dd>
-<dt> &lsquo;<samp>-qcomp <var>compression</var></samp>&rsquo;</dt>
-<dd><p>video quantizer scale compression (VBR) (default 0.5).
-Constant of ratecontrol equation. Recommended range for default rc_eq: 0.0-1.0
-</p>
-</dd>
-<dt> &lsquo;<samp>-lmin <var>lambda</var></samp>&rsquo;</dt>
-<dd><p>minimum video lagrange factor (VBR)
-</p></dd>
-<dt> &lsquo;<samp>-lmax <var>lambda</var></samp>&rsquo;</dt>
-<dd><p>max video lagrange factor (VBR)
-</p></dd>
-<dt> &lsquo;<samp>-mblmin <var>lambda</var></samp>&rsquo;</dt>
-<dd><p>minimum macroblock quantizer scale (VBR)
-</p></dd>
-<dt> &lsquo;<samp>-mblmax <var>lambda</var></samp>&rsquo;</dt>
-<dd><p>maximum macroblock quantizer scale (VBR)
-</p>
-<p>These four options (lmin, lmax, mblmin, mblmax) use &rsquo;lambda&rsquo; units,
-but you may use the QP2LAMBDA constant to easily convert from &rsquo;q&rsquo; units:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i src.ext -lmax 21*QP2LAMBDA dst.ext
-</pre></td></tr></table>
-
-</dd>
-<dt> &lsquo;<samp>-rc_init_cplx <var>complexity</var></samp>&rsquo;</dt>
-<dd><p>initial complexity for single pass encoding
-</p></dd>
-<dt> &lsquo;<samp>-b_qfactor <var>factor</var></samp>&rsquo;</dt>
-<dd><p>qp factor between P- and B-frames
-</p></dd>
-<dt> &lsquo;<samp>-i_qfactor <var>factor</var></samp>&rsquo;</dt>
-<dd><p>qp factor between P- and I-frames
-</p></dd>
-<dt> &lsquo;<samp>-b_qoffset <var>offset</var></samp>&rsquo;</dt>
-<dd><p>qp offset between P- and B-frames
-</p></dd>
-<dt> &lsquo;<samp>-i_qoffset <var>offset</var></samp>&rsquo;</dt>
-<dd><p>qp offset between P- and I-frames
-</p></dd>
-<dt> &lsquo;<samp>-rc_eq <var>equation</var></samp>&rsquo;</dt>
-<dd><p>Set rate control equation (see section &quot;Expression Evaluation&quot;)
-(default = <code>tex^qComp</code>).
 </p>
-<p>When computing the rate control equation expression, besides the
-standard functions defined in the section &quot;Expression Evaluation&quot;, the
-following functions are available:
-</p><dl compact="compact">
-<dt> <var>bits2qp(bits)</var></dt>
-<dt> <var>qp2bits(qp)</var></dt>
-</dl>
-
-<p>and the following constants are available:
-</p><dl compact="compact">
-<dt> <var>iTex</var></dt>
-<dt> <var>pTex</var></dt>
-<dt> <var>tex</var></dt>
-<dt> <var>mv</var></dt>
-<dt> <var>fCode</var></dt>
-<dt> <var>iCount</var></dt>
-<dt> <var>mcVar</var></dt>
-<dt> <var>var</var></dt>
-<dt> <var>isI</var></dt>
-<dt> <var>isP</var></dt>
-<dt> <var>isB</var></dt>
-<dt> <var>avgQP</var></dt>
-<dt> <var>qComp</var></dt>
-<dt> <var>avgIITex</var></dt>
-<dt> <var>avgPITex</var></dt>
-<dt> <var>avgPPTex</var></dt>
-<dt> <var>avgBPTex</var></dt>
-<dt> <var>avgTex</var></dt>
-</dl>
-
 </dd>
-<dt> &lsquo;<samp>-rc_override <var>override</var></samp>&rsquo;</dt>
-<dd><p>Rate control override for specific intervals, formated as &quot;int,int,int&quot;
+<dt> &lsquo;<samp>-rc_override[:<var>stream_specifier</var>] <var>override</var> (<em>output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Rate control override for specific intervals, formatted as &quot;int,int,int&quot;
 list separated with slashes. Two first values are the beginning and
 end frame numbers, last one is quantizer to use if positive, or quality
 factor if negative.
-</p></dd>
-<dt> &lsquo;<samp>-me_method <var>method</var></samp>&rsquo;</dt>
-<dd><p>Set motion estimation method to <var>method</var>.
-Available methods are (from lowest to best quality):
-</p><dl compact="compact">
-<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
-<dd><p>Try just the (0, 0) vector.
-</p></dd>
-<dt> &lsquo;<samp>phods</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>log</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>x1</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>hex</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>umh</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>epzs</samp>&rsquo;</dt>
-<dd><p>(default method)
-</p></dd>
-<dt> &lsquo;<samp>full</samp>&rsquo;</dt>
-<dd><p>exhaustive search (slow and marginally better than epzs)
-</p></dd>
-</dl>
-
-</dd>
-<dt> &lsquo;<samp>-dct_algo <var>algo</var></samp>&rsquo;</dt>
-<dd><p>Set DCT algorithm to <var>algo</var>. Available values are:
-</p><dl compact="compact">
-<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
-<dd><p>FF_DCT_AUTO (default)
-</p></dd>
-<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
-<dd><p>FF_DCT_FASTINT
-</p></dd>
-<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
-<dd><p>FF_DCT_INT
-</p></dd>
-<dt> &lsquo;<samp>3</samp>&rsquo;</dt>
-<dd><p>FF_DCT_MMX
-</p></dd>
-<dt> &lsquo;<samp>4</samp>&rsquo;</dt>
-<dd><p>FF_DCT_MLIB
-</p></dd>
-<dt> &lsquo;<samp>5</samp>&rsquo;</dt>
-<dd><p>FF_DCT_ALTIVEC
-</p></dd>
-</dl>
-
-</dd>
-<dt> &lsquo;<samp>-idct_algo <var>algo</var></samp>&rsquo;</dt>
-<dd><p>Set IDCT algorithm to <var>algo</var>. Available values are:
-</p><dl compact="compact">
-<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
-<dd><p>FF_IDCT_AUTO (default)
-</p></dd>
-<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
-<dd><p>FF_IDCT_INT
-</p></dd>
-<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
-<dd><p>FF_IDCT_SIMPLE
-</p></dd>
-<dt> &lsquo;<samp>3</samp>&rsquo;</dt>
-<dd><p>FF_IDCT_SIMPLEMMX
-</p></dd>
-<dt> &lsquo;<samp>4</samp>&rsquo;</dt>
-<dd><p>FF_IDCT_LIBMPEG2MMX
-</p></dd>
-<dt> &lsquo;<samp>5</samp>&rsquo;</dt>
-<dd><p>FF_IDCT_PS2
-</p></dd>
-<dt> &lsquo;<samp>6</samp>&rsquo;</dt>
-<dd><p>FF_IDCT_MLIB
-</p></dd>
-<dt> &lsquo;<samp>7</samp>&rsquo;</dt>
-<dd><p>FF_IDCT_ARM
-</p></dd>
-<dt> &lsquo;<samp>8</samp>&rsquo;</dt>
-<dd><p>FF_IDCT_ALTIVEC
-</p></dd>
-<dt> &lsquo;<samp>9</samp>&rsquo;</dt>
-<dd><p>FF_IDCT_SH4
-</p></dd>
-<dt> &lsquo;<samp>10</samp>&rsquo;</dt>
-<dd><p>FF_IDCT_SIMPLEARM
-</p></dd>
-</dl>
-
-</dd>
-<dt> &lsquo;<samp>-er <var>n</var></samp>&rsquo;</dt>
-<dd><p>Set error resilience to <var>n</var>.
-</p><dl compact="compact">
-<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
-<dd><p>FF_ER_CAREFUL (default)
-</p></dd>
-<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
-<dd><p>FF_ER_COMPLIANT
-</p></dd>
-<dt> &lsquo;<samp>3</samp>&rsquo;</dt>
-<dd><p>FF_ER_AGGRESSIVE
-</p></dd>
-<dt> &lsquo;<samp>4</samp>&rsquo;</dt>
-<dd><p>FF_ER_EXPLODE
-</p></dd>
-</dl>
-
-</dd>
-<dt> &lsquo;<samp>-ec <var>bit_mask</var></samp>&rsquo;</dt>
-<dd><p>Set error concealment to <var>bit_mask</var>. <var>bit_mask</var> is a bit mask of
-the following values:
-</p><dl compact="compact">
-<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
-<dd><p>FF_EC_GUESS_MVS (default = enabled)
-</p></dd>
-<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
-<dd><p>FF_EC_DEBLOCK (default = enabled)
-</p></dd>
-</dl>
-
-</dd>
-<dt> &lsquo;<samp>-bf <var>frames</var></samp>&rsquo;</dt>
-<dd><p>Use &rsquo;frames&rsquo; B-frames (supported for MPEG-1, MPEG-2 and MPEG-4).
-</p></dd>
-<dt> &lsquo;<samp>-mbd <var>mode</var></samp>&rsquo;</dt>
-<dd><p>macroblock decision
-</p><dl compact="compact">
-<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
-<dd><p>FF_MB_DECISION_SIMPLE: Use mb_cmp (cannot change it yet in ffmpeg).
-</p></dd>
-<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
-<dd><p>FF_MB_DECISION_BITS: Choose the one which needs the fewest bits.
-</p></dd>
-<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
-<dd><p>FF_MB_DECISION_RD: rate distortion
-</p></dd>
-</dl>
-
-</dd>
-<dt> &lsquo;<samp>-4mv</samp>&rsquo;</dt>
-<dd><p>Use four motion vector by macroblock (MPEG-4 only).
-</p></dd>
-<dt> &lsquo;<samp>-part</samp>&rsquo;</dt>
-<dd><p>Use data partitioning (MPEG-4 only).
-</p></dd>
-<dt> &lsquo;<samp>-bug <var>param</var></samp>&rsquo;</dt>
-<dd><p>Work around encoder bugs that are not auto-detected.
-</p></dd>
-<dt> &lsquo;<samp>-strict <var>strictness</var></samp>&rsquo;</dt>
-<dd><p>How strictly to follow the standards.
-</p></dd>
-<dt> &lsquo;<samp>-aic</samp>&rsquo;</dt>
-<dd><p>Enable Advanced intra coding (h263+).
-</p></dd>
-<dt> &lsquo;<samp>-umv</samp>&rsquo;</dt>
-<dd><p>Enable Unlimited Motion Vector (h263+)
 </p>
 </dd>
-<dt> &lsquo;<samp>-deinterlace</samp>&rsquo;</dt>
-<dd><p>Deinterlace pictures.
-</p></dd>
 <dt> &lsquo;<samp>-ilme</samp>&rsquo;</dt>
 <dd><p>Force interlacing support in encoder (MPEG-2 and MPEG-4 only).
 Use this option if your input file is interlaced and you want
@@ -1087,251 +988,412 @@ The alternative is to deinterlace the input stream with
 <dt> &lsquo;<samp>-vstats_file <var>file</var></samp>&rsquo;</dt>
 <dd><p>Dump video coding statistics to <var>file</var>.
 </p></dd>
-<dt> &lsquo;<samp>-top <var>n</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>-top[:<var>stream_specifier</var>] <var>n</var> (<em>output,per-stream</em>)</samp>&rsquo;</dt>
 <dd><p>top=1/bottom=0/auto=-1 field first
 </p></dd>
 <dt> &lsquo;<samp>-dc <var>precision</var></samp>&rsquo;</dt>
 <dd><p>Intra_dc_precision.
 </p></dd>
-<dt> &lsquo;<samp>-vtag <var>fourcc/tag</var></samp>&rsquo;</dt>
-<dd><p>Force video tag/fourcc.
+<dt> &lsquo;<samp>-vtag <var>fourcc/tag</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Force video tag/fourcc. This is an alias for <code>-tag:v</code>.
 </p></dd>
-<dt> &lsquo;<samp>-qphist</samp>&rsquo;</dt>
-<dd><p>Show QP histogram.
+<dt> &lsquo;<samp>-qphist (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Show QP histogram
 </p></dd>
 <dt> &lsquo;<samp>-vbsf <var>bitstream_filter</var></samp>&rsquo;</dt>
-<dd><p>Bitstream filters available are &quot;dump_extra&quot;, &quot;remove_extra&quot;, &quot;noise&quot;, &quot;h264_mp4toannexb&quot;, &quot;imxdump&quot;, &quot;mjpegadump&quot;, &quot;mjpeg2jpeg&quot;.
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i h264.mp4 -vcodec copy -vbsf h264_mp4toannexb -an out.h264
-</pre></td></tr></table>
+<dd><p>Deprecated see -bsf
+</p>
 </dd>
-<dt> &lsquo;<samp>-force_key_frames <var>time</var>[,<var>time</var>...]</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>-force_key_frames[:<var>stream_specifier</var>] <var>time</var>[,<var>time</var>...] (<em>output,per-stream</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>-force_key_frames[:<var>stream_specifier</var>] expr:<var>expr</var> (<em>output,per-stream</em>)</samp>&rsquo;</dt>
 <dd><p>Force key frames at the specified timestamps, more precisely at the first
 frames after each specified time.
+</p>
+<p>If the argument is prefixed with <code>expr:</code>, the string <var>expr</var>
+is interpreted like an expression and is evaluated for each frame. A
+key frame is forced in case the evaluation is non-zero.
+</p>
+<p>If one of the times is &quot;<code>chapters</code>[<var>delta</var>]&quot;, it is expanded into
+the time of the beginning of all chapters in the file, shifted by
+<var>delta</var>, expressed as a time in seconds.
 This option can be useful to ensure that a seek point is present at a
 chapter mark or any other designated place in the output file.
-The timestamps must be specified in ascending order.
+</p>
+<p>For example, to insert a key frame at 5 minutes, plus key frames 0.1 second
+before the beginning of every chapter:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">-force_key_frames 0:05:00,chapters-0.1
+</pre></td></tr></table>
+
+<p>The expression in <var>expr</var> can contain the following constants:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>the number of current processed frame, starting from 0
+</p></dd>
+<dt> &lsquo;<samp>n_forced</samp>&rsquo;</dt>
+<dd><p>the number of forced frames
+</p></dd>
+<dt> &lsquo;<samp>prev_forced_n</samp>&rsquo;</dt>
+<dd><p>the number of the previous forced frame, it is <code>NAN</code> when no
+keyframe was forced yet
+</p></dd>
+<dt> &lsquo;<samp>prev_forced_t</samp>&rsquo;</dt>
+<dd><p>the time of the previous forced frame, it is <code>NAN</code> when no
+keyframe was forced yet
+</p></dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>the time of the current processed frame
 </p></dd>
 </dl>
 
+<p>For example to force a key frame every 5 seconds, you can specify:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">-force_key_frames expr:gte(t,n_forced*5)
+</pre></td></tr></table>
+
+<p>To force a key frame 5 seconds after the time of the last forced one,
+starting from second 13:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">-force_key_frames expr:if(isnan(prev_forced_t),gte(t,13),gte(t,prev_forced_t+5))
+</pre></td></tr></table>
+
+<p>Note that forcing too many keyframes is very harmful for the lookahead
+algorithms of certain encoders: using fixed-GOP options or similar
+would be more efficient.
+</p>
+</dd>
+<dt> &lsquo;<samp>-copyinkf[:<var>stream_specifier</var>] (<em>output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>When doing stream copy, copy also non-key frames found at the
+beginning.
+</p>
+</dd>
+<dt> &lsquo;<samp>-hwaccel[:<var>stream_specifier</var>] <var>hwaccel</var> (<em>input,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Use hardware acceleration to decode the matching stream(s). The allowed values
+of <var>hwaccel</var> are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>Do not use any hardware acceleration (the default).
+</p>
+</dd>
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Automatically select the hardware acceleration method.
+</p>
+</dd>
+<dt> &lsquo;<samp>vdpau</samp>&rsquo;</dt>
+<dd><p>Use VDPAU (Video Decode and Presentation API for Unix) hardware acceleration.
+</p></dd>
+</dl>
+
+<p>This option has no effect if the selected hwaccel is not available or not
+supported by the chosen decoder.
+</p>
+<p>Note that most acceleration methods are intended for playback and will not be
+faster than software decoding on modern CPUs. Additionally, <code>ffmpeg</code>
+will usually need to copy the decoded frames from the GPU memory into the system
+memory, resulting in further performance loss. This option is thus mainly
+useful for testing.
+</p>
+</dd>
+<dt> &lsquo;<samp>-hwaccel_device[:<var>stream_specifier</var>] <var>hwaccel_device</var> (<em>input,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Select a device to use for hardware acceleration.
+</p>
+<p>This option only makes sense when the &lsquo;<samp>-hwaccel</samp>&rsquo; option is also
+specified. Its exact meaning depends on the specific hardware acceleration
+method chosen.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>vdpau</samp>&rsquo;</dt>
+<dd><p>For VDPAU, this option specifies the X11 display/screen to use. If this option
+is not specified, the value of the <var>DISPLAY</var> environment variable is used
+</p></dd>
+</dl>
+</dd>
+</dl>
+
 <a name="Audio-Options"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-Audio-Options">3.6 Audio Options</a></h2>
+<h2 class="section"><a href="ffmpeg.html#toc-Audio-Options">5.7 Audio Options</a></h2>
 
 <dl compact="compact">
-<dt> &lsquo;<samp>-aframes <var>number</var></samp>&rsquo;</dt>
-<dd><p>Set the number of audio frames to record.
+<dt> &lsquo;<samp>-aframes <var>number</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set the number of audio frames to record. This is an alias for <code>-frames:a</code>.
 </p></dd>
-<dt> &lsquo;<samp>-ar <var>freq</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>-ar[:<var>stream_specifier</var>] <var>freq</var> (<em>input/output,per-stream</em>)</samp>&rsquo;</dt>
 <dd><p>Set the audio sampling frequency. For output streams it is set by
 default to the frequency of the corresponding input stream. For input
 streams this option only makes sense for audio grabbing devices and raw
 demuxers and is mapped to the corresponding demuxer options.
 </p></dd>
-<dt> &lsquo;<samp>-aq <var>q</var></samp>&rsquo;</dt>
-<dd><p>Set the audio quality (codec-specific, VBR).
+<dt> &lsquo;<samp>-aq <var>q</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set the audio quality (codec-specific, VBR). This is an alias for -q:a.
 </p></dd>
-<dt> &lsquo;<samp>-ac <var>channels</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>-ac[:<var>stream_specifier</var>] <var>channels</var> (<em>input/output,per-stream</em>)</samp>&rsquo;</dt>
 <dd><p>Set the number of audio channels. For output streams it is set by
 default to the number of input audio channels. For input streams
 this option only makes sense for audio grabbing devices and raw demuxers
 and is mapped to the corresponding demuxer options.
 </p></dd>
-<dt> &lsquo;<samp>-an</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>-an (<em>output</em>)</samp>&rsquo;</dt>
 <dd><p>Disable audio recording.
 </p></dd>
-<dt> &lsquo;<samp>-acodec <var>codec</var></samp>&rsquo;</dt>
-<dd><p>Force audio codec to <var>codec</var>. Use the <code>copy</code> special value to
-specify that the raw codec data must be copied as is.
+<dt> &lsquo;<samp>-acodec <var>codec</var> (<em>input/output</em>)</samp>&rsquo;</dt>
+<dd><p>Set the audio codec. This is an alias for <code>-codec:a</code>.
 </p></dd>
-<dt> &lsquo;<samp>-newaudio</samp>&rsquo;</dt>
-<dd><p>Add a new audio track to the output file. If you want to specify parameters,
-do so before <code>-newaudio</code> (<code>-acodec</code>, <code>-ab</code>, etc..).
+<dt> &lsquo;<samp>-sample_fmt[:<var>stream_specifier</var>] <var>sample_fmt</var> (<em>output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Set the audio sample format. Use <code>-sample_fmts</code> to get a list
+of supported sample formats.
 </p>
-<p>Mapping will be done automatically, if the number of output streams is equal to
-the number of input streams, else it will pick the first one that matches. You
-can override the mapping using <code>-map</code> as usual.
-</p>
-<p>Example:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i file.mpg -vcodec copy -acodec ac3 -ab 384k test.mpg -acodec mp2 -ab 192k -newaudio
-</pre></td></tr></table>
 </dd>
-<dt> &lsquo;<samp>-alang <var>code</var></samp>&rsquo;</dt>
-<dd><p>Set the ISO 639 language code (3 letters) of the current audio stream.
+<dt> &lsquo;<samp>-af <var>filtergraph</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Create the filtergraph specified by <var>filtergraph</var> and use it to
+filter the stream.
+</p>
+<p>This is an alias for <code>-filter:a</code>, see the <a href="#filter_005foption">-filter option</a>.
 </p></dd>
 </dl>
 
 <a name="Advanced-Audio-options_003a"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-Advanced-Audio-options_003a">3.7 Advanced Audio options:</a></h2>
+<h2 class="section"><a href="ffmpeg.html#toc-Advanced-Audio-options_003a">5.8 Advanced Audio options:</a></h2>
 
 <dl compact="compact">
-<dt> &lsquo;<samp>-atag <var>fourcc/tag</var></samp>&rsquo;</dt>
-<dd><p>Force audio tag/fourcc.
-</p></dd>
-<dt> &lsquo;<samp>-audio_service_type <var>type</var></samp>&rsquo;</dt>
-<dd><p>Set the type of service that the audio stream contains.
-</p><dl compact="compact">
-<dt> &lsquo;<samp>ma</samp>&rsquo;</dt>
-<dd><p>Main Audio Service (default)
-</p></dd>
-<dt> &lsquo;<samp>ef</samp>&rsquo;</dt>
-<dd><p>Effects
-</p></dd>
-<dt> &lsquo;<samp>vi</samp>&rsquo;</dt>
-<dd><p>Visually Impaired
-</p></dd>
-<dt> &lsquo;<samp>hi</samp>&rsquo;</dt>
-<dd><p>Hearing Impaired
-</p></dd>
-<dt> &lsquo;<samp>di</samp>&rsquo;</dt>
-<dd><p>Dialogue
-</p></dd>
-<dt> &lsquo;<samp>co</samp>&rsquo;</dt>
-<dd><p>Commentary
-</p></dd>
-<dt> &lsquo;<samp>em</samp>&rsquo;</dt>
-<dd><p>Emergency
-</p></dd>
-<dt> &lsquo;<samp>vo</samp>&rsquo;</dt>
-<dd><p>Voice Over
+<dt> &lsquo;<samp>-atag <var>fourcc/tag</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Force audio tag/fourcc. This is an alias for <code>-tag:a</code>.
 </p></dd>
-<dt> &lsquo;<samp>ka</samp>&rsquo;</dt>
-<dd><p>Karaoke
-</p></dd>
-</dl>
-</dd>
 <dt> &lsquo;<samp>-absf <var>bitstream_filter</var></samp>&rsquo;</dt>
-<dd><p>Bitstream filters available are &quot;dump_extra&quot;, &quot;remove_extra&quot;, &quot;noise&quot;, &quot;mp3comp&quot;, &quot;mp3decomp&quot;.
+<dd><p>Deprecated, see -bsf
+</p></dd>
+<dt> &lsquo;<samp>-guess_layout_max <var>channels</var> (<em>input,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>If some input channel layout is not known, try to guess only if it
+corresponds to at most the specified number of channels. For example, 2
+tells to <code>ffmpeg</code> to recognize 1 channel as mono and 2 channels as
+stereo but not 6 channels as 5.1. The default is to always try to guess. Use
+0 to disable all guessing.
 </p></dd>
 </dl>
 
 <a name="Subtitle-options_003a"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-Subtitle-options_003a">3.8 Subtitle options:</a></h2>
+<h2 class="section"><a href="ffmpeg.html#toc-Subtitle-options_003a">5.9 Subtitle options:</a></h2>
 
 <dl compact="compact">
-<dt> &lsquo;<samp>-scodec <var>codec</var></samp>&rsquo;</dt>
-<dd><p>Force subtitle codec (&rsquo;copy&rsquo; to copy stream).
-</p></dd>
-<dt> &lsquo;<samp>-newsubtitle</samp>&rsquo;</dt>
-<dd><p>Add a new subtitle stream to the current output stream.
-</p></dd>
 <dt> &lsquo;<samp>-slang <var>code</var></samp>&rsquo;</dt>
 <dd><p>Set the ISO 639 language code (3 letters) of the current subtitle stream.
 </p></dd>
-<dt> &lsquo;<samp>-sn</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>-scodec <var>codec</var> (<em>input/output</em>)</samp>&rsquo;</dt>
+<dd><p>Set the subtitle codec. This is an alias for <code>-codec:s</code>.
+</p></dd>
+<dt> &lsquo;<samp>-sn (<em>output</em>)</samp>&rsquo;</dt>
 <dd><p>Disable subtitle recording.
 </p></dd>
 <dt> &lsquo;<samp>-sbsf <var>bitstream_filter</var></samp>&rsquo;</dt>
-<dd><p>Bitstream filters available are &quot;mov2textsub&quot;, &quot;text2movsub&quot;.
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i file.mov -an -vn -sbsf mov2textsub -scodec copy -f rawvideo sub.txt
-</pre></td></tr></table>
-</dd>
+<dd><p>Deprecated, see -bsf
+</p></dd>
 </dl>
 
-<a name="Audio_002fVideo-grab-options"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-Audio_002fVideo-grab-options">3.9 Audio/Video grab options</a></h2>
+<a name="Advanced-Subtitle-options_003a"></a>
+<h2 class="section"><a href="ffmpeg.html#toc-Advanced-Subtitle-options_003a">5.10 Advanced Subtitle options:</a></h2>
 
 <dl compact="compact">
-<dt> &lsquo;<samp>-vc <var>channel</var></samp>&rsquo;</dt>
-<dd><p>Set video grab channel (DV1394 only).
-</p></dd>
-<dt> &lsquo;<samp>-tvstd <var>standard</var></samp>&rsquo;</dt>
-<dd><p>Set television standard (NTSC, PAL (SECAM)).
-</p></dd>
-<dt> &lsquo;<samp>-isync</samp>&rsquo;</dt>
-<dd><p>Synchronize read on input.
-</p></dd>
+<dt> &lsquo;<samp>-fix_sub_duration</samp>&rsquo;</dt>
+<dd><p>Fix subtitles durations. For each subtitle, wait for the next packet in the
+same stream and adjust the duration of the first to avoid overlap. This is
+necessary with some subtitles codecs, especially DVB subtitles, because the
+duration in the original packet is only a rough estimate and the end is
+actually marked by an empty subtitle frame. Failing to use this option when
+necessary can result in exaggerated durations or muxing failures due to
+non-monotonic timestamps.
+</p>
+<p>Note that this option will delay the output of all data until the next
+subtitle packet is decoded: it may increase memory consumption and latency a
+lot.
+</p>
+</dd>
+<dt> &lsquo;<samp>-canvas_size <var>size</var></samp>&rsquo;</dt>
+<dd><p>Set the size of the canvas used to render subtitles.
+</p>
+</dd>
 </dl>
 
 <a name="Advanced-options"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-Advanced-options">3.10 Advanced options</a></h2>
+<h2 class="section"><a href="ffmpeg.html#toc-Advanced-options">5.11 Advanced options</a></h2>
 
 <dl compact="compact">
-<dt> &lsquo;<samp>-map <var>input_file_id</var>.<var>input_stream_id</var>[:<var>sync_file_id</var>.<var>sync_stream_id</var>]</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>-map [-]<var>input_file_id</var>[:<var>stream_specifier</var>][,<var>sync_file_id</var>[:<var>stream_specifier</var>]] | <var>[linklabel]</var> (<em>output</em>)</samp>&rsquo;</dt>
 <dd>
-<p>Designate an input stream as a source for the output file. Each input
+<p>Designate one or more input streams as a source for the output file. Each input
 stream is identified by the input file index <var>input_file_id</var> and
 the input stream index <var>input_stream_id</var> within the input
-file. Both indexes start at 0. If specified,
-<var>sync_file_id</var>.<var>sync_stream_id</var> sets which input stream
+file. Both indices start at 0. If specified,
+<var>sync_file_id</var>:<var>stream_specifier</var> sets which input stream
 is used as a presentation sync reference.
 </p>
-<p>The <code>-map</code> options must be specified just after the output file.
-If any <code>-map</code> options are used, the number of <code>-map</code> options
-on the command line must match the number of streams in the output
-file. The first <code>-map</code> option on the command line specifies the
+<p>The first <code>-map</code> option on the command line specifies the
 source for output stream 0, the second <code>-map</code> option specifies
 the source for output stream 1, etc.
 </p>
+<p>A <code>-</code> character before the stream identifier creates a &quot;negative&quot; mapping.
+It disables matching streams from already created mappings.
+</p>
+<p>An alternative <var>[linklabel]</var> form will map outputs from complex filter
+graphs (see the &lsquo;<samp>-filter_complex</samp>&rsquo; option) to the output file.
+<var>linklabel</var> must correspond to a defined output link label in the graph.
+</p>
+<p>For example, to map ALL streams from the first input file to output
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -map 0 output
+</pre></td></tr></table>
+
 <p>For example, if you have two audio streams in the first input file,
-these streams are identified by &quot;0.0&quot; and &quot;0.1&quot;. You can use
-<code>-map</code> to select which stream to place in an output file. For
+these streams are identified by &quot;0:0&quot; and &quot;0:1&quot;. You can use
+<code>-map</code> to select which streams to place in an output file. For
 example:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT out.wav -map 0.1
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -map 0:1 out.wav
 </pre></td></tr></table>
-<p>will map the input stream in &lsquo;<tt>INPUT</tt>&rsquo; identified by &quot;0.1&quot; to
+<p>will map the input stream in &lsquo;<tt>INPUT</tt>&rsquo; identified by &quot;0:1&quot; to
 the (single) output stream in &lsquo;<tt>out.wav</tt>&rsquo;.
 </p>
 <p>For example, to select the stream with index 2 from input file
-&lsquo;<tt>a.mov</tt>&rsquo; (specified by the identifier &quot;0.2&quot;), and stream with
-index 6 from input &lsquo;<tt>b.mov</tt>&rsquo; (specified by the identifier &quot;1.6&quot;),
+&lsquo;<tt>a.mov</tt>&rsquo; (specified by the identifier &quot;0:2&quot;), and stream with
+index 6 from input &lsquo;<tt>b.mov</tt>&rsquo; (specified by the identifier &quot;1:6&quot;),
 and copy them to the output file &lsquo;<tt>out.mov</tt>&rsquo;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i a.mov -i b.mov -vcodec copy -acodec copy out.mov -map 0.2 -map 1.6
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i a.mov -i b.mov -c copy -map 0:2 -map 1:6 out.mov
+</pre></td></tr></table>
+
+<p>To select all video and the third audio stream from an input file:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -map 0:v -map 0:a:2 OUTPUT
 </pre></td></tr></table>
 
-<p>To add more streams to the output file, you can use the
-<code>-newaudio</code>, <code>-newvideo</code>, <code>-newsubtitle</code> options.
+<p>To map all the streams except the second audio, use negative mappings
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -map 0 -map -0:a:1 OUTPUT
+</pre></td></tr></table>
+
+<p>Note that using this option disables the default mappings for this output file.
+</p>
+</dd>
+<dt> &lsquo;<samp>-map_channel [<var>input_file_id</var>.<var>stream_specifier</var>.<var>channel_id</var>|-1][:<var>output_file_id</var>.<var>stream_specifier</var>]</samp>&rsquo;</dt>
+<dd><p>Map an audio channel from a given input to an output. If
+<var>output_file_id</var>.<var>stream_specifier</var> is not set, the audio channel will
+be mapped on all the audio streams.
+</p>
+<p>Using &quot;-1&quot; instead of
+<var>input_file_id</var>.<var>stream_specifier</var>.<var>channel_id</var> will map a muted
+channel.
+</p>
+<p>For example, assuming <var>INPUT</var> is a stereo audio file, you can switch the
+two audio channels with the following command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -map_channel 0.0.1 -map_channel 0.0.0 OUTPUT
+</pre></td></tr></table>
+
+<p>If you want to mute the first channel and keep the second:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -map_channel -1 -map_channel 0.0.1 OUTPUT
+</pre></td></tr></table>
+
+<p>The order of the &quot;-map_channel&quot; option specifies the order of the channels in
+the output stream. The output channel layout is guessed from the number of
+channels mapped (mono if one &quot;-map_channel&quot;, stereo if two, etc.). Using &quot;-ac&quot;
+in combination of &quot;-map_channel&quot; makes the channel gain levels to be updated if
+input and output channel layouts don&rsquo;t match (for instance two &quot;-map_channel&quot;
+options and &quot;-ac 6&quot;).
+</p>
+<p>You can also extract each channel of an input to specific outputs; the following
+command extracts two channels of the <var>INPUT</var> audio stream (file 0, stream 0)
+to the respective <var>OUTPUT_CH0</var> and <var>OUTPUT_CH1</var> outputs:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -map_channel 0.0.0 OUTPUT_CH0 -map_channel 0.0.1 OUTPUT_CH1
+</pre></td></tr></table>
+
+<p>The following example splits the channels of a stereo input into two separate
+streams, which are put into the same output file:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i stereo.wav -map 0:0 -map 0:0 -map_channel 0.0.0:0.0 -map_channel 0.0.1:0.1 -y out.ogg
+</pre></td></tr></table>
+
+<p>Note that currently each output stream can only contain channels from a single
+input stream; you can&rsquo;t for example use &quot;-map_channel&quot; to pick multiple input
+audio channels contained in different streams (from the same or different files)
+and merge them into a single output stream. It is therefore not currently
+possible, for example, to turn two separate mono streams into a single stereo
+stream. However splitting a stereo stream into two single channel mono streams
+is possible.
+</p>
+<p>If you need this feature, a possible workaround is to use the <em>amerge</em>
+filter. For example, if you need to merge a media (here &lsquo;<tt>input.mkv</tt>&rsquo;) with 2
+mono audio streams into one single stereo channel audio stream (and keep the
+video stream), you can use the following command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.mkv -filter_complex &quot;[0:1] [0:2] amerge&quot; -c:a pcm_s16le -c:v copy output.mkv
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>-map_metadata[:<var>metadata_spec_out</var>] <var>infile</var>[:<var>metadata_spec_in</var>] (<em>output,per-metadata</em>)</samp>&rsquo;</dt>
+<dd><p>Set metadata information of the next output file from <var>infile</var>. Note that
+those are file indices (zero-based), not filenames.
+Optional <var>metadata_spec_in/out</var> parameters specify, which metadata to copy.
+A metadata specifier can have the following forms:
+</p><dl compact="compact">
+<dt> &lsquo;<samp><var>g</var></samp>&rsquo;</dt>
+<dd><p>global metadata, i.e. metadata that applies to the whole file
 </p>
 </dd>
-<dt> &lsquo;<samp>-map_meta_data <var>outfile</var>[,<var>metadata</var>]:<var>infile</var>[,<var>metadata</var>]</samp>&rsquo;</dt>
-<dd><p>Deprecated, use <var>-map_metadata</var> instead.
+<dt> &lsquo;<samp><var>s</var>[:<var>stream_spec</var>]</samp>&rsquo;</dt>
+<dd><p>per-stream metadata. <var>stream_spec</var> is a stream specifier as described
+in the <a href="#Stream-specifiers">Stream specifiers</a> chapter. In an input metadata specifier, the first
+matching stream is copied from. In an output metadata specifier, all matching
+streams are copied to.
 </p>
 </dd>
-<dt> &lsquo;<samp>-map_metadata <var>outfile</var>[,<var>metadata</var>]:<var>infile</var>[,<var>metadata</var>]</samp>&rsquo;</dt>
-<dd><p>Set metadata information of <var>outfile</var> from <var>infile</var>. Note that those
-are file indices (zero-based), not filenames.
-Optional <var>metadata</var> parameters specify, which metadata to copy - (g)lobal
-(i.e. metadata that applies to the whole file), per-(s)tream, per-(c)hapter or
-per-(p)rogram. All metadata specifiers other than global must be followed by the
-stream/chapter/program number. If metadata specifier is omitted, it defaults to
-global.
-</p>
-<p>By default, global metadata is copied from the first input file to all output files,
+<dt> &lsquo;<samp><var>c</var>:<var>chapter_index</var></samp>&rsquo;</dt>
+<dd><p>per-chapter metadata. <var>chapter_index</var> is the zero-based chapter index.
+</p>
+</dd>
+<dt> &lsquo;<samp><var>p</var>:<var>program_index</var></samp>&rsquo;</dt>
+<dd><p>per-program metadata. <var>program_index</var> is the zero-based program index.
+</p></dd>
+</dl>
+<p>If metadata specifier is omitted, it defaults to global.
+</p>
+<p>By default, global metadata is copied from the first input file,
 per-stream and per-chapter metadata is copied along with streams/chapters. These
 default mappings are disabled by creating any mapping of the relevant type. A negative
 file index can be used to create a dummy mapping that just disables automatic copying.
 </p>
 <p>For example to copy metadata from the first stream of the input file to global metadata
 of the output file:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.ogg -map_metadata 0:0,s0 out.mp3
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.ogg -map_metadata 0:s:0 out.mp3
+</pre></td></tr></table>
+
+<p>To do the reverse, i.e. copy global metadata to all audio streams:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.mkv -map_metadata:s:a 0:g out.mkv
 </pre></td></tr></table>
+<p>Note that simple <code>0</code> would work as well in this example, since global
+metadata is assumed by default.
+</p>
 </dd>
-<dt> &lsquo;<samp>-map_chapters <var>outfile</var>:<var>infile</var></samp>&rsquo;</dt>
-<dd><p>Copy chapters from <var>infile</var> to <var>outfile</var>. If no chapter mapping is specified,
-then chapters are copied from the first input file with at least one chapter to all
-output files. Use a negative file index to disable any chapter copying.
-</p></dd>
-<dt> &lsquo;<samp>-debug</samp>&rsquo;</dt>
-<dd><p>Print specific debug info.
-</p></dd>
-<dt> &lsquo;<samp>-benchmark</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>-map_chapters <var>input_file_index</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Copy chapters from input file with index <var>input_file_index</var> to the next
+output file. If no chapter mapping is specified, then chapters are copied from
+the first input file with at least one chapter. Use a negative file index to
+disable any chapter copying.
+</p>
+</dd>
+<dt> &lsquo;<samp>-benchmark (<em>global</em>)</samp>&rsquo;</dt>
 <dd><p>Show benchmarking information at the end of an encode.
 Shows CPU time used and maximum memory consumption.
 Maximum memory consumption is not supported on all systems,
 it will usually display as 0 if not supported.
 </p></dd>
-<dt> &lsquo;<samp>-dump</samp>&rsquo;</dt>
-<dd><p>Dump each input packet.
+<dt> &lsquo;<samp>-benchmark_all (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Show benchmarking information during the encode.
+Shows CPU time used in various steps (audio/video encode/decode).
 </p></dd>
-<dt> &lsquo;<samp>-hex</samp>&rsquo;</dt>
-<dd><p>When dumping packets, also dump the payload.
+<dt> &lsquo;<samp>-timelimit <var>duration</var> (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Exit after ffmpeg has been running for <var>duration</var> seconds.
 </p></dd>
-<dt> &lsquo;<samp>-bitexact</samp>&rsquo;</dt>
-<dd><p>Only use bit exact algorithms (for codec testing).
+<dt> &lsquo;<samp>-dump (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Dump each input packet to stderr.
 </p></dd>
-<dt> &lsquo;<samp>-ps <var>size</var></samp>&rsquo;</dt>
-<dd><p>Set RTP payload size in bytes.
+<dt> &lsquo;<samp>-hex (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>When dumping packets, also dump the payload.
 </p></dd>
-<dt> &lsquo;<samp>-re</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>-re (<em>input</em>)</samp>&rsquo;</dt>
 <dd><p>Read input at native frame rate. Mainly used to simulate a grab device.
+or live input stream (e.g. when reading from a file). Should not be used
+with actual grab devices or live input streams (where it can cause packet
+loss).
+By default <code>ffmpeg</code> attempts to read the input(s) as fast as possible.
+This option will slow down the reading of the input(s) to the native frame rate
+of the input(s). It is useful for real-time output (e.g. live streaming).
 </p></dd>
 <dt> &lsquo;<samp>-loop_input</samp>&rsquo;</dt>
 <dd><p>Loop over the input stream. Currently it works only for image
@@ -1343,30 +1405,37 @@ This option is deprecated, use -loop 1.
 (0 will loop the output infinitely).
 This option is deprecated, use -loop.
 </p></dd>
-<dt> &lsquo;<samp>-threads <var>count</var></samp>&rsquo;</dt>
-<dd><p>Thread count.
-</p></dd>
 <dt> &lsquo;<samp>-vsync <var>parameter</var></samp>&rsquo;</dt>
 <dd><p>Video sync method.
+For compatibility reasons old values can be specified as numbers.
+Newly added values will have to be specified as strings always.
 </p>
 <dl compact="compact">
-<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>0, passthrough</samp>&rsquo;</dt>
 <dd><p>Each frame is passed with its timestamp from the demuxer to the muxer.
 </p></dd>
-<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>1, cfr</samp>&rsquo;</dt>
 <dd><p>Frames will be duplicated and dropped to achieve exactly the requested
-constant framerate.
+constant frame rate.
 </p></dd>
-<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>2, vfr</samp>&rsquo;</dt>
 <dd><p>Frames are passed through with their timestamp or dropped so as to
 prevent 2 frames from having the same timestamp.
 </p></dd>
-<dt> &lsquo;<samp>-1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>drop</samp>&rsquo;</dt>
+<dd><p>As passthrough but destroys all timestamps, making the muxer generate
+fresh timestamps based on frame-rate.
+</p></dd>
+<dt> &lsquo;<samp>-1, auto</samp>&rsquo;</dt>
 <dd><p>Chooses between 1 and 2 depending on muxer capabilities. This is the
 default method.
 </p></dd>
 </dl>
 
+<p>Note that the timestamps may be further modified by the muxer, after this.
+For example, in the case that the format option &lsquo;<samp>avoid_negative_ts</samp>&rsquo;
+is enabled.
+</p>
 <p>With -map you can select from which stream the timestamps should be
 taken. You can leave either video or audio unchanged and sync the
 remaining stream(s) to the unchanged one.
@@ -1377,26 +1446,66 @@ remaining stream(s) to the unchanged one.
 the parameter is the maximum samples per second by which the audio is changed.
 -async 1 is a special case where only the start of the audio stream is corrected
 without any later correction.
-</p></dd>
+</p>
+<p>Note that the timestamps may be further modified by the muxer, after this.
+For example, in the case that the format option &lsquo;<samp>avoid_negative_ts</samp>&rsquo;
+is enabled.
+</p>
+<p>This option has been deprecated. Use the <code>aresample</code> audio filter instead.
+</p>
+</dd>
 <dt> &lsquo;<samp>-copyts</samp>&rsquo;</dt>
-<dd><p>Copy timestamps from input to output.
-</p></dd>
-<dt> &lsquo;<samp>-copytb</samp>&rsquo;</dt>
-<dd><p>Copy input stream time base from input to output when stream copying.
+<dd><p>Do not process input timestamps, but keep their values without trying
+to sanitize them. In particular, do not remove the initial start time
+offset value.
+</p>
+<p>Note that, depending on the &lsquo;<samp>vsync</samp>&rsquo; option or on specific muxer
+processing (e.g. in case the format option &lsquo;<samp>avoid_negative_ts</samp>&rsquo;
+is enabled) the output timestamps may mismatch with the input
+timestamps even when this option is selected.
+</p>
+</dd>
+<dt> &lsquo;<samp>-copytb <var>mode</var></samp>&rsquo;</dt>
+<dd><p>Specify how to set the encoder timebase when stream copying.  <var>mode</var> is an
+integer numeric value, and can assume one of the following values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>Use the demuxer timebase.
+</p>
+<p>The time base is copied to the output encoder from the corresponding input
+demuxer. This is sometimes required to avoid non monotonically increasing
+timestamps when copying video streams with variable frame rate.
+</p>
+</dd>
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>Use the decoder timebase.
+</p>
+<p>The time base is copied to the output encoder from the corresponding input
+decoder.
+</p>
+</dd>
+<dt> &lsquo;<samp>-1</samp>&rsquo;</dt>
+<dd><p>Try to make the choice automatically, in order to generate a sane output.
 </p></dd>
-<dt> &lsquo;<samp>-shortest</samp>&rsquo;</dt>
+</dl>
+
+<p>Default value is -1.
+</p>
+</dd>
+<dt> &lsquo;<samp>-shortest (<em>output</em>)</samp>&rsquo;</dt>
 <dd><p>Finish encoding when the shortest input stream ends.
 </p></dd>
 <dt> &lsquo;<samp>-dts_delta_threshold</samp>&rsquo;</dt>
 <dd><p>Timestamp discontinuity delta threshold.
 </p></dd>
-<dt> &lsquo;<samp>-muxdelay <var>seconds</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>-muxdelay <var>seconds</var> (<em>input</em>)</samp>&rsquo;</dt>
 <dd><p>Set the maximum demux-decode delay.
 </p></dd>
-<dt> &lsquo;<samp>-muxpreload <var>seconds</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>-muxpreload <var>seconds</var> (<em>input</em>)</samp>&rsquo;</dt>
 <dd><p>Set the initial demux-decode delay.
 </p></dd>
-<dt> &lsquo;<samp>-streamid <var>output-stream-index</var>:<var>new-value</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>-streamid <var>output-stream-index</var>:<var>new-value</var> (<em>output</em>)</samp>&rsquo;</dt>
 <dd><p>Assign a new stream-id value to an output stream. This option should be
 specified prior to the output filename to which it applies.
 For the situation where multiple output files exist, a streamid
@@ -1406,17 +1515,127 @@ may be reassigned to a different value.
 an output mpegts file:
 </p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i infile -streamid 0:33 -streamid 1:36 out.ts
 </pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>-bsf[:<var>stream_specifier</var>] <var>bitstream_filters</var> (<em>output,per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Set bitstream filters for matching streams. <var>bitstream_filters</var> is
+a comma-separated list of bitstream filters. Use the <code>-bsfs</code> option
+to get the list of bitstream filters.
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i h264.mp4 -c:v copy -bsf:v h264_mp4toannexb -an out.h264
+</pre></td></tr></table>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i file.mov -an -vn -bsf:s mov2textsub -c:s copy -f rawvideo sub.txt
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>-tag[:<var>stream_specifier</var>] <var>codec_tag</var> (<em>per-stream</em>)</samp>&rsquo;</dt>
+<dd><p>Force a tag/fourcc for matching streams.
+</p>
+</dd>
+<dt> &lsquo;<samp>-timecode <var>hh</var>:<var>mm</var>:<var>ss</var>SEP<var>ff</var></samp>&rsquo;</dt>
+<dd><p>Specify Timecode for writing. <var>SEP</var> is &rsquo;:&rsquo; for non drop timecode and &rsquo;;&rsquo;
+(or &rsquo;.&rsquo;) for drop.
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.mpg -timecode 01:02:03.04 -r 30000/1001 -s ntsc output.mpg
+</pre></td></tr></table>
+
+<p><a name="filter_005fcomplex_005foption"></a>
+</p></dd>
+<dt> &lsquo;<samp>-filter_complex <var>filtergraph</var> (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Define a complex filtergraph, i.e. one with arbitrary number of inputs and/or
+outputs. For simple graphs &ndash; those with one input and one output of the same
+type &ndash; see the &lsquo;<samp>-filter</samp>&rsquo; options. <var>filtergraph</var> is a description of
+the filtergraph, as described in the &ldquo;Filtergraph syntax&rdquo; section of the
+ffmpeg-filters manual.
+</p>
+<p>Input link labels must refer to input streams using the
+<code>[file_index:stream_specifier]</code> syntax (i.e. the same as &lsquo;<samp>-map</samp>&rsquo;
+uses). If <var>stream_specifier</var> matches multiple streams, the first one will be
+used. An unlabeled input will be connected to the first unused input stream of
+the matching type.
+</p>
+<p>Output link labels are referred to with &lsquo;<samp>-map</samp>&rsquo;. Unlabeled outputs are
+added to the first output file.
+</p>
+<p>Note that with this option it is possible to use only lavfi sources without
+normal input files.
+</p>
+<p>For example, to overlay an image over video
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i video.mkv -i image.png -filter_complex '[0:v][1:v]overlay[out]' -map
+'[out]' out.mkv
+</pre></td></tr></table>
+<p>Here <code>[0:v]</code> refers to the first video stream in the first input file,
+which is linked to the first (main) input of the overlay filter. Similarly the
+first video stream in the second input is linked to the second (overlay) input
+of overlay.
+</p>
+<p>Assuming there is only one video stream in each input file, we can omit input
+labels, so the above is equivalent to
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i video.mkv -i image.png -filter_complex 'overlay[out]' -map
+'[out]' out.mkv
+</pre></td></tr></table>
+
+<p>Furthermore we can omit the output label and the single output from the filter
+graph will be added to the output file automatically, so we can simply write
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i video.mkv -i image.png -filter_complex 'overlay' out.mkv
+</pre></td></tr></table>
+
+<p>To generate 5 seconds of pure red video using lavfi <code>color</code> source:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -filter_complex 'color=c=red' -t 5 out.mkv
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>-lavfi <var>filtergraph</var> (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Define a complex filtergraph, i.e. one with arbitrary number of inputs and/or
+outputs. Equivalent to &lsquo;<samp>-filter_complex</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>-filter_complex_script <var>filename</var> (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>This option is similar to &lsquo;<samp>-filter_complex</samp>&rsquo;, the only difference is that
+its argument is the name of the file from which a complex filtergraph
+description is to be read.
+</p>
+</dd>
+<dt> &lsquo;<samp>-accurate_seek (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>This option enables or disables accurate seeking in input files with the
+&lsquo;<samp>-ss</samp>&rsquo; option. It is enabled by default, so seeking is accurate when
+transcoding. Use &lsquo;<samp>-noaccurate_seek</samp>&rsquo; to disable it, which may be useful
+e.g. when copying some streams and transcoding the others.
+</p>
+</dd>
+<dt> &lsquo;<samp>-override_ffserver (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Overrides the input specifications from <code>ffserver</code>. Using this
+option you can map any input stream to <code>ffserver</code> and control
+many aspects of the encoding from <code>ffmpeg</code>. Without this
+option <code>ffmpeg</code> will transmit to <code>ffserver</code> what is
+requested by <code>ffserver</code>.
+</p>
+<p>The option is intended for cases where features are needed that cannot be
+specified to <code>ffserver</code> but can be to <code>ffmpeg</code>.
+</p>
 </dd>
 </dl>
 
+<p>As a special exception, you can use a bitmap subtitle stream as input: it
+will be converted into a video with the same size as the largest video in
+the file, or 720x576 if no video is present. Note that this is an
+experimental and temporary solution. It will be removed once libavfilter has
+proper support for subtitles.
+</p>
+<p>For example, to hardcode subtitles on top of a DVB-T recording stored in
+MPEG-TS format, delaying the subtitles by 1 second:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.ts -filter_complex \
+  '[#0x2ef] setpts=PTS+1/TB [sub] ; [#0x2d0] [sub] overlay' \
+  -sn -map '#0x2dc' output.mkv
+</pre></td></tr></table>
+<p>(0x2d0, 0x2dc and 0x2ef are the MPEG-TS PIDs of respectively the video,
+audio and subtitles streams; 0:0, 0:3 and 0:7 would have worked too)
+</p>
 <a name="Preset-files"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-Preset-files">3.11 Preset files</a></h2>
-
+<h2 class="section"><a href="ffmpeg.html#toc-Preset-files">5.12 Preset files</a></h2>
 <p>A preset file contains a sequence of <var>option</var>=<var>value</var> pairs,
 one for each line, specifying a sequence of options which would be
 awkward to specify on the command line. Lines starting with the hash
 (&rsquo;#&rsquo;) character are ignored and are used to provide comments. Check
-the &lsquo;<tt>ffpresets</tt>&rsquo; directory in the FFmpeg source tree for examples.
+the &lsquo;<tt>presets</tt>&rsquo; directory in the FFmpeg source tree for examples.
 </p>
 <p>Preset files are specified with the <code>vpre</code>, <code>apre</code>,
 <code>spre</code>, and <code>fpre</code> options. The <code>fpre</code> option takes the
@@ -1434,27 +1653,27 @@ following rules:
 directories &lsquo;<tt>$FFMPEG_DATADIR</tt>&rsquo; (if set), and &lsquo;<tt>$HOME/.ffmpeg</tt>&rsquo;, and in
 the datadir defined at configuration time (usually &lsquo;<tt>PREFIX/share/ffmpeg</tt>&rsquo;)
 or in a &lsquo;<tt>ffpresets</tt>&rsquo; folder along the executable on win32,
-in that order. For example, if the argument is <code>libx264-max</code>, it will
-search for the file &lsquo;<tt>libx264-max.ffpreset</tt>&rsquo;.
+in that order. For example, if the argument is <code>libvpx-1080p</code>, it will
+search for the file &lsquo;<tt>libvpx-1080p.ffpreset</tt>&rsquo;.
 </p>
 <p>If no such file is found, then ffmpeg will search for a file named
 <var>codec_name</var>-<var>arg</var>.ffpreset in the above-mentioned
 directories, where <var>codec_name</var> is the name of the codec to which
 the preset file options will be applied. For example, if you select
-the video codec with <code>-vcodec libx264</code> and use <code>-vpre max</code>,
-then it will search for the file &lsquo;<tt>libx264-max.ffpreset</tt>&rsquo;.
+the video codec with <code>-vcodec libvpx</code> and use <code>-vpre 1080p</code>,
+then it will search for the file &lsquo;<tt>libvpx-1080p.ffpreset</tt>&rsquo;.
 </p>
 <a name="Tips"></a>
-<h1 class="chapter"><a href="ffmpeg.html#toc-Tips">4. Tips</a></h1>
+<h1 class="chapter"><a href="ffmpeg.html#toc-Tips">6. Tips</a></h1>
 
 <ul>
 <li>
-For streaming at very low bitrate application, use a low frame rate
+For streaming at very low bitrates, use a low frame rate
 and a small GOP size. This is especially true for RealVideo where
 the Linux player does not seem to be very fast, so it can miss
 frames. An example is:
 
-<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -g 3 -r 3 -t 10 -b 50k -s qcif -f rv10 /tmp/b.rm
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -g 3 -r 3 -t 10 -b:v 50k -s qcif -f rv10 /tmp/b.rm
 </pre></td></tr></table>
 
 </li><li>
@@ -1468,7 +1687,7 @@ frame rate or decrease the frame size.
 </li><li>
 If your computer is not fast enough, you can speed up the
 compression at the expense of the compression ratio. You can use
-&rsquo;-me zero&rsquo; to speed up motion estimation, and &rsquo;-intra&rsquo; to disable
+&rsquo;-me zero&rsquo; to speed up motion estimation, and &rsquo;-g 0&rsquo; to disable
 motion estimation completely (you have only I-frames, which means it
 is about as good as JPEG compression).
 
@@ -1481,18 +1700,29 @@ To have a constant quality (but a variable bitrate), use the option
 &rsquo;-qscale n&rsquo; when &rsquo;n&rsquo; is between 1 (excellent quality) and 31 (worst
 quality).
 
-</li><li>
-When converting video files, you can use the &rsquo;-sameq&rsquo; option which
-uses the same quality factor in the encoder as in the decoder.
-It allows almost lossless encoding.
-
 </li></ul>
 
 <a name="Examples"></a>
-<h1 class="chapter"><a href="ffmpeg.html#toc-Examples">5. Examples</a></h1>
+<h1 class="chapter"><a href="ffmpeg.html#toc-Examples">7. Examples</a></h1>
+
+<a name="Preset-files-1"></a>
+<h2 class="section"><a href="ffmpeg.html#toc-Preset-files-1">7.1 Preset files</a></h2>
 
+<p>A preset file contains a sequence of <var>option=value</var> pairs, one for
+each line, specifying a sequence of options which can be specified also on
+the command line. Lines starting with the hash (&rsquo;#&rsquo;) character are ignored and
+are used to provide comments. Empty lines are also ignored. Check the
+&lsquo;<tt>presets</tt>&rsquo; directory in the FFmpeg source tree for examples.
+</p>
+<p>Preset files are specified with the <code>pre</code> option, this option takes a
+preset name as input.  FFmpeg searches for a file named <var>preset_name</var>.avpreset in
+the directories &lsquo;<tt>$AVCONV_DATADIR</tt>&rsquo; (if set), and &lsquo;<tt>$HOME/.ffmpeg</tt>&rsquo;, and in
+the data directory defined at configuration time (usually &lsquo;<tt>$PREFIX/share/ffmpeg</tt>&rsquo;)
+in that order.  For example, if the argument is <code>libx264-max</code>, it will
+search for the file &lsquo;<tt>libx264-max.avpreset</tt>&rsquo;.
+</p>
 <a name="Video-and-Audio-grabbing"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-Video-and-Audio-grabbing">5.1 Video and Audio grabbing</a></h2>
+<h2 class="section"><a href="ffmpeg.html#toc-Video-and-Audio-grabbing">7.2 Video and Audio grabbing</a></h2>
 
 <p>If you specify the input format and device then ffmpeg can grab video
 and audio directly.
@@ -1500,6 +1730,10 @@ and audio directly.
 <table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f oss -i /dev/dsp -f video4linux2 -i /dev/video0 /tmp/out.mpg
 </pre></td></tr></table>
 
+<p>Or with an ALSA audio source (mono input, card id 1) instead of OSS:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f alsa -ac 1 -i hw:1 -f video4linux2 -i /dev/video0 /tmp/out.mpg
+</pre></td></tr></table>
+
 <p>Note that you must activate the right video source and channel before
 launching ffmpeg with any TV viewer such as
 <a href="http://linux.bytesex.org/xawtv/">xawtv</a> by Gerd Knorr. You also
@@ -1507,46 +1741,24 @@ have to set the audio recording levels correctly with a
 standard mixer.
 </p>
 <a name="X11-grabbing"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-X11-grabbing">5.2 X11 grabbing</a></h2>
+<h2 class="section"><a href="ffmpeg.html#toc-X11-grabbing">7.3 X11 grabbing</a></h2>
 
 <p>Grab the X11 display with ffmpeg via
 </p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -s cif -r 25 -i :0.0 /tmp/out.mpg
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -video_size cif -framerate 25 -i :0.0 /tmp/out.mpg
 </pre></td></tr></table>
 
 <p>0.0 is display.screen number of your X11 server, same as
 the DISPLAY environment variable.
 </p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -s cif -r 25 -i :0.0+10,20 /tmp/out.mpg
-</pre></td></tr></table>
-
-<p>10 is the x-offset and 20 the y-offset for the grabbing.
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -follow_mouse centered -s cif -r 25 -i :0.0 /tmp/out.mpg
-</pre></td></tr></table>
-
-<p>The grabbing region follows the mouse pointer, which stays at the center of
-region.
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -follow_mouse 100 -s cif -r 25 -i :0.0 /tmp/out.mpg
-</pre></td></tr></table>
-
-<p>Only follows when mouse pointer reaches within 100 pixels to the edge of
-region.
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -show_region 1 -s cif -r 25 -i :0.0+10,20 /tmp/out.mpg
-</pre></td></tr></table>
-
-<p>The grabbing region will be indicated on screen.
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -follow_mouse centered -show_region 1 -s cif -r 25 -i :0.0 /tmp/out.mpg
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -video_size cif -framerate 25 -i :0.0+10,20 /tmp/out.mpg
 </pre></td></tr></table>
 
-<p>The grabbing region indication will follow the mouse pointer.
+<p>0.0 is display.screen number of your X11 server, same as the DISPLAY environment
+variable. 10 is the x-offset and 20 the y-offset for the grabbing.
 </p>
-
 <a name="Video-and-Audio-file-format-conversion"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-Video-and-Audio-file-format-conversion">5.3 Video and Audio file format conversion</a></h2>
+<h2 class="section"><a href="ffmpeg.html#toc-Video-and-Audio-file-format-conversion">7.4 Video and Audio file format conversion</a></h2>
 
 <p>Any supported file format and protocol can serve as input to ffmpeg:
 </p>
@@ -1605,7 +1817,7 @@ You can also do audio and video conversions at the same time:
 You can encode to several formats at the same time and define a
 mapping from input stream to output streams:
 
-<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i /tmp/a.wav -ab 64k /tmp/a.mp2 -ab 128k /tmp/b.mp2 -map 0:0 -map 0:0
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i /tmp/a.wav -map 0:a -b:a 64k /tmp/a.mp2 -map 0:a -b:a 128k /tmp/b.mp2
 </pre></td></tr></table>
 
 <p>Converts a.wav to a.mp2 at 64 kbits and to b.mp2 at 128 kbits. &rsquo;-map
@@ -1615,7 +1827,7 @@ stream, in the order of the definition of output streams.
 </li><li>
 You can transcode decrypted VOBs:
 
-<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i snatch_1.vob -f avi -vcodec mpeg4 -b 800k -g 300 -bf 2 -acodec libmp3lame -ab 128k snatch.avi
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i snatch_1.vob -f avi -c:v mpeg4 -b:v 800k -g 300 -bf 2 -c:a libmp3lame -b:a 128k snatch.avi
 </pre></td></tr></table>
 
 <p>This is a typical DVD ripping example; the input is a VOB file, the
@@ -1653,5081 +1865,67 @@ composed of three digits padded with zeroes to express the sequence
 number. It is the same syntax supported by the C printf function, but
 only formats accepting a normal integer are suitable.
 </p>
+<p>When importing an image sequence, -i also supports expanding
+shell-like wildcard patterns (globbing) internally, by selecting the
+image2-specific <code>-pattern_type glob</code> option.
+</p>
+<p>For example, for creating a video from filenames matching the glob pattern
+<code>foo-*.jpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f image2 -pattern_type glob -i 'foo-*.jpeg' -r 12 -s WxH foo.avi
+</pre></td></tr></table>
+
 </li><li>
 You can put many streams of the same type in the output:
 
-<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i test1.avi -i test2.avi -vcodec copy -acodec copy -vcodec copy -acodec copy test12.avi -newvideo -newaudio
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i test1.avi -i test2.avi -map 0:3 -map 0:2 -map 0:1 -map 0:0 -c copy test12.nut
 </pre></td></tr></table>
 
-<p>In addition to the first video and audio streams, the resulting
-output file &lsquo;<tt>test12.avi</tt>&rsquo; will contain the second video
-and the second audio stream found in the input streams list.
-</p>
-<p>The <code>-newvideo</code>, <code>-newaudio</code> and <code>-newsubtitle</code>
-options have to be specified immediately after the name of the output
-file to which you want to add them.
-</p>
-</li></ul>
-
-<a name="Expression-Evaluation"></a>
-<h1 class="chapter"><a href="ffmpeg.html#toc-Expression-Evaluation">6. Expression Evaluation</a></h1>
-
-<p>When evaluating an arithemetic expression, FFmpeg uses an internal
-formula evaluator, implemented through the &lsquo;<tt>libavutil/eval.h</tt>&rsquo;
-interface.
-</p>
-<p>An expression may contain unary, binary operators, constants, and
-functions.
-</p>
-<p>Two expressions <var>expr1</var> and <var>expr2</var> can be combined to form
-another expression &quot;<var>expr1</var>;<var>expr2</var>&quot;.
-<var>expr1</var> and <var>expr2</var> are evaluated in turn, and the new
-expression evaluates to the value of <var>expr2</var>.
-</p>
-<p>The following binary operators are available: <code>+</code>, <code>-</code>,
-<code>*</code>, <code>/</code>, <code>^</code>.
-</p>
-<p>The following unary operators are available: <code>+</code>, <code>-</code>.
-</p>
-<p>The following functions are available:
-</p><dl compact="compact">
-<dt> &lsquo;<samp>sinh(x)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>cosh(x)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>tanh(x)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>sin(x)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>cos(x)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>tan(x)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>atan(x)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>asin(x)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>acos(x)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>exp(x)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>log(x)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>abs(x)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>squish(x)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>gauss(x)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>isnan(x)</samp>&rsquo;</dt>
-<dd><p>Return 1.0 if <var>x</var> is NAN, 0.0 otherwise.
-</p>
-</dd>
-<dt> &lsquo;<samp>mod(x, y)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>max(x, y)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>min(x, y)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>eq(x, y)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>gte(x, y)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>gt(x, y)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>lte(x, y)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>lt(x, y)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>st(var, expr)</samp>&rsquo;</dt>
-<dd><p>Allow to store the value of the expression <var>expr</var> in an internal
-variable. <var>var</var> specifies the number of the variable where to
-store the value, and it is a value ranging from 0 to 9. The function
-returns the value stored in the internal variable.
-</p>
-</dd>
-<dt> &lsquo;<samp>ld(var)</samp>&rsquo;</dt>
-<dd><p>Allow to load the value of the internal variable with number
-<var>var</var>, which was previosly stored with st(<var>var</var>, <var>expr</var>).
-The function returns the loaded value.
-</p>
-</dd>
-<dt> &lsquo;<samp>while(cond, expr)</samp>&rsquo;</dt>
-<dd><p>Evaluate expression <var>expr</var> while the expression <var>cond</var> is
-non-zero, and returns the value of the last <var>expr</var> evaluation, or
-NAN if <var>cond</var> was always false.
-</p>
-</dd>
-<dt> &lsquo;<samp>ceil(expr)</samp>&rsquo;</dt>
-<dd><p>Round the value of expression <var>expr</var> upwards to the nearest
-integer. For example, &quot;ceil(1.5)&quot; is &quot;2.0&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>floor(expr)</samp>&rsquo;</dt>
-<dd><p>Round the value of expression <var>expr</var> downwards to the nearest
-integer. For example, &quot;floor(-1.5)&quot; is &quot;-2.0&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>trunc(expr)</samp>&rsquo;</dt>
-<dd><p>Round the value of expression <var>expr</var> towards zero to the nearest
-integer. For example, &quot;trunc(-1.5)&quot; is &quot;-1.0&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>sqrt(expr)</samp>&rsquo;</dt>
-<dd><p>Compute the square root of <var>expr</var>. This is equivalent to
-&quot;(<var>expr</var>)^.5&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>not(expr)</samp>&rsquo;</dt>
-<dd><p>Return 1.0 if <var>expr</var> is zero, 0.0 otherwise.
-</p>
-</dd>
-<dt> &lsquo;<samp>pow(x, y)</samp>&rsquo;</dt>
-<dd><p>Compute the power of <var>x</var> elevated <var>y</var>, it is equivalent to
-&quot;(<var>x</var>)^(<var>y</var>)&quot;.
-</p></dd>
-</dl>
-
-<p>Note that:
+<p>The resulting output file &lsquo;<tt>test12.avi</tt>&rsquo; will contain first four streams from
+the input file in reverse order.
 </p>
-<p><code>*</code> works like AND
-</p>
-<p><code>+</code> works like OR
-</p>
-<p>thus
-</p><table><tr><td>&nbsp;</td><td><pre class="example">if A then B else C
-</pre></td></tr></table>
-<p>is equivalent to
-</p><table><tr><td>&nbsp;</td><td><pre class="example">A*B + not(A)*C
+</li><li>
+To force CBR video output:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i myfile.avi -b 4000k -minrate 4000k -maxrate 4000k -bufsize 1835k out.m2v
 </pre></td></tr></table>
 
-<p>In your C code, you can extend the list of unary and binary functions,
-and define recognized constants, so that they are available for your
-expressions.
-</p>
-<p>The evaluator also recognizes the International System number
-postfixes. If &rsquo;i&rsquo; is appended after the postfix, powers of 2 are used
-instead of powers of 10. The &rsquo;B&rsquo; postfix multiplies the value for 8,
-and can be appended after another postfix or used alone. This allows
-using for example &rsquo;KB&rsquo;, &rsquo;MiB&rsquo;, &rsquo;G&rsquo; and &rsquo;B&rsquo; as postfix.
-</p>
-<p>Follows the list of available International System postfixes, with
-indication of the corresponding powers of 10 and of 2.
-</p><dl compact="compact">
-<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
-<dd><p>-24 / -80
-</p></dd>
-<dt> &lsquo;<samp>z</samp>&rsquo;</dt>
-<dd><p>-21 / -70
-</p></dd>
-<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
-<dd><p>-18 / -60
-</p></dd>
-<dt> &lsquo;<samp>f</samp>&rsquo;</dt>
-<dd><p>-15 / -50
-</p></dd>
-<dt> &lsquo;<samp>p</samp>&rsquo;</dt>
-<dd><p>-12 / -40
-</p></dd>
-<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
-<dd><p>-9 / -30
-</p></dd>
-<dt> &lsquo;<samp>u</samp>&rsquo;</dt>
-<dd><p>-6 / -20
-</p></dd>
-<dt> &lsquo;<samp>m</samp>&rsquo;</dt>
-<dd><p>-3 / -10
-</p></dd>
-<dt> &lsquo;<samp>c</samp>&rsquo;</dt>
-<dd><p>-2
-</p></dd>
-<dt> &lsquo;<samp>d</samp>&rsquo;</dt>
-<dd><p>-1
-</p></dd>
-<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
-<dd><p>2
-</p></dd>
-<dt> &lsquo;<samp>k</samp>&rsquo;</dt>
-<dd><p>3 / 10
-</p></dd>
-<dt> &lsquo;<samp>K</samp>&rsquo;</dt>
-<dd><p>3 / 10
-</p></dd>
-<dt> &lsquo;<samp>M</samp>&rsquo;</dt>
-<dd><p>6 / 20
-</p></dd>
-<dt> &lsquo;<samp>G</samp>&rsquo;</dt>
-<dd><p>9 / 30
-</p></dd>
-<dt> &lsquo;<samp>T</samp>&rsquo;</dt>
-<dd><p>12 / 40
-</p></dd>
-<dt> &lsquo;<samp>P</samp>&rsquo;</dt>
-<dd><p>15 / 40
-</p></dd>
-<dt> &lsquo;<samp>E</samp>&rsquo;</dt>
-<dd><p>18 / 50
-</p></dd>
-<dt> &lsquo;<samp>Z</samp>&rsquo;</dt>
-<dd><p>21 / 60
-</p></dd>
-<dt> &lsquo;<samp>Y</samp>&rsquo;</dt>
-<dd><p>24 / 70
-</p></dd>
-</dl>
-
-<a name="Decoders"></a>
-<h1 class="chapter"><a href="ffmpeg.html#toc-Decoders">7. Decoders</a></h1>
-
-<p>Decoders are configured elements in FFmpeg which allow the decoding of
-multimedia streams.
-</p>
-<p>When you configure your FFmpeg build, all the supported native decoders
-are enabled by default. Decoders requiring an external library must be enabled
-manually via the corresponding <code>--enable-lib</code> option. You can list all
-available decoders using the configure option <code>--list-decoders</code>.
-</p>
-<p>You can disable all the decoders with the configure option
-<code>--disable-decoders</code> and selectively enable / disable single decoders
-with the options <code>--enable-decoder=<var>DECODER</var></code> /
-<code>--disable-decoder=<var>DECODER</var></code>.
-</p>
-<p>The option <code>-codecs</code> of the ff* tools will display the list of
-enabled decoders.
-</p>
-
-<a name="Video-Decoders"></a>
-<h1 class="chapter"><a href="ffmpeg.html#toc-Video-Decoders">8. Video Decoders</a></h1>
-
-<p>A description of some of the currently available video decoders
-follows.
-</p>
-<a name="rawvideo"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-rawvideo">8.1 rawvideo</a></h2>
-
-<p>Rawvideo decoder.
-</p>
-<p>This decoder decodes rawvideo streams.
-</p>
-<a name="Options-1"></a>
-<h3 class="subsection"><a href="ffmpeg.html#toc-Options-1">8.1.1 Options</a></h3>
-
-<dl compact="compact">
-<dt> &lsquo;<samp>top <var>top_field_first</var></samp>&rsquo;</dt>
-<dd><p>Specify the assumed field type of the input video.
-</p><dl compact="compact">
-<dt> &lsquo;<samp>-1</samp>&rsquo;</dt>
-<dd><p>the video is assumed to be progressive (default)
-</p></dd>
-<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
-<dd><p>bottom-field-first is assumed
-</p></dd>
-<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
-<dd><p>top-field-first is assumed
-</p></dd>
-</dl>
-
-</dd>
-</dl>
-
-<a name="Encoders"></a>
-<h1 class="chapter"><a href="ffmpeg.html#toc-Encoders">9. Encoders</a></h1>
-
-<p>Encoders are configured elements in FFmpeg which allow the encoding of
-multimedia streams.
-</p>
-<p>When you configure your FFmpeg build, all the supported native encoders
-are enabled by default. Encoders requiring an external library must be enabled
-manually via the corresponding <code>--enable-lib</code> option. You can list all
-available encoders using the configure option <code>--list-encoders</code>.
-</p>
-<p>You can disable all the encoders with the configure option
-<code>--disable-encoders</code> and selectively enable / disable single encoders
-with the options <code>--enable-encoder=<var>ENCODER</var></code> /
-<code>--disable-encoder=<var>ENCODER</var></code>.
-</p>
-<p>The option <code>-codecs</code> of the ff* tools will display the list of
-enabled encoders.
-</p>
-
-<a name="Audio-Encoders"></a>
-<h1 class="chapter"><a href="ffmpeg.html#toc-Audio-Encoders">10. Audio Encoders</a></h1>
-
-<p>A description of some of the currently available audio encoders
-follows.
-</p>
-<a name="ac3-and-ac3_005ffixed"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-ac3-and-ac3_005ffixed">10.1 ac3 and ac3_fixed</a></h2>
-
-<p>AC-3 audio encoders.
-</p>
-<p>These encoders implement part of ATSC A/52:2010 and ETSI TS 102 366, as well as
-the undocumented RealAudio 3 (a.k.a. dnet).
-</p>
-<p>The <var>ac3</var> encoder uses floating-point math, while the <var>ac3_fixed</var>
-encoder only uses fixed-point integer math. This does not mean that one is
-always faster, just that one or the other may be better suited to a
-particular system. The floating-point encoder will generally produce better
-quality audio for a given bitrate. The <var>ac3_fixed</var> encoder is not the
-default codec for any of the output formats, so it must be specified explicitly
-using the option <code>-acodec ac3_fixed</code> in order to use it.
-</p>
-<a name="AC_002d3-Metadata"></a>
-<h3 class="subsection"><a href="ffmpeg.html#toc-AC_002d3-Metadata">10.1.1 AC-3 Metadata</a></h3>
+</li><li>
+The four options lmin, lmax, mblmin and mblmax use &rsquo;lambda&rsquo; units,
+but you may use the QP2LAMBDA constant to easily convert from &rsquo;q&rsquo; units:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i src.ext -lmax 21*QP2LAMBDA dst.ext
+</pre></td></tr></table>
 
-<p>The AC-3 metadata options are used to set parameters that describe the audio,
-but in most cases do not affect the audio encoding itself. Some of the options
-do directly affect or influence the decoding and playback of the resulting
-bitstream, while others are just for informational purposes. A few of the
-options will add bits to the output stream that could otherwise be used for
-audio data, and will thus affect the quality of the output. Those will be
-indicated accordingly with a note in the option list below.
-</p>
-<p>These parameters are described in detail in several publicly-available
-documents.
-</p><ul>
-<li> <a href="http://www.atsc.org/cms/standards/a_52-2010.pdf">A/52:2010 - Digital Audio Compression (AC-3) (E-AC-3) Standard</a>
-</li><li> <a href="http://www.atsc.org/cms/standards/a_54a_with_corr_1.pdf">A/54 - Guide to the Use of the ATSC Digital Television Standard</a>
-</li><li> <a href="http://www.dolby.com/uploadedFiles/zz-_Shared_Assets/English_PDFs/Professional/18_Metadata.Guide.pdf">Dolby Metadata Guide</a>
-</li><li> <a href="http://www.dolby.com/uploadedFiles/zz-_Shared_Assets/English_PDFs/Professional/46_DDEncodingGuidelines.pdf">Dolby Digital Professional Encoding Guidelines</a>
 </li></ul>
 
-<a name="Metadata-Control-Options"></a>
-<h4 class="subsubsection"><a href="ffmpeg.html#toc-Metadata-Control-Options">10.1.1.1 Metadata Control Options</a></h4>
-
-<dl compact="compact">
-<dt> &lsquo;<samp>-per_frame_metadata <var>boolean</var></samp>&rsquo;</dt>
-<dd><p>Allow Per-Frame Metadata. Specifies if the encoder should check for changing
-metadata for each frame.
-</p><dl compact="compact">
-<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
-<dd><p>The metadata values set at initialization will be used for every frame in the
-stream. (default)
-</p></dd>
-<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
-<dd><p>Metadata values can be changed before encoding each frame.
-</p></dd>
-</dl>
-
-</dd>
-</dl>
-
-<a name="Downmix-Levels"></a>
-<h4 class="subsubsection"><a href="ffmpeg.html#toc-Downmix-Levels">10.1.1.2 Downmix Levels</a></h4>
 
-<dl compact="compact">
-<dt> &lsquo;<samp>-center_mixlev <var>level</var></samp>&rsquo;</dt>
-<dd><p>Center Mix Level. The amount of gain the decoder should apply to the center
-channel when downmixing to stereo. This field will only be written to the
-bitstream if a center channel is present. The value is specified as a scale
-factor. There are 3 valid values:
-</p><dl compact="compact">
-<dt> &lsquo;<samp>0.707</samp>&rsquo;</dt>
-<dd><p>Apply -3dB gain
-</p></dd>
-<dt> &lsquo;<samp>0.595</samp>&rsquo;</dt>
-<dd><p>Apply -4.5dB gain (default)
-</p></dd>
-<dt> &lsquo;<samp>0.500</samp>&rsquo;</dt>
-<dd><p>Apply -6dB gain
-</p></dd>
-</dl>
+<a name="See-Also"></a>
+<h1 class="chapter"><a href="ffmpeg.html#toc-See-Also">8. See Also</a></h1>
 
-</dd>
-<dt> &lsquo;<samp>-surround_mixlev <var>level</var></samp>&rsquo;</dt>
-<dd><p>Surround Mix Level. The amount of gain the decoder should apply to the surround
-channel(s) when downmixing to stereo. This field will only be written to the
-bitstream if one or more surround channels are present. The value is specified
-as a scale factor.  There are 3 valid values:
-</p><dl compact="compact">
-<dt> &lsquo;<samp>0.707</samp>&rsquo;</dt>
-<dd><p>Apply -3dB gain
-</p></dd>
-<dt> &lsquo;<samp>0.500</samp>&rsquo;</dt>
-<dd><p>Apply -6dB gain (default)
-</p></dd>
-<dt> &lsquo;<samp>0.000</samp>&rsquo;</dt>
-<dd><p>Silence Surround Channel(s)
-</p></dd>
-</dl>
+<p><a href="ffmpeg-all.html">ffmpeg-all</a>,
+<a href="ffplay.html">ffplay</a>, <a href="ffprobe.html">ffprobe</a>, <a href="ffserver.html">ffserver</a>,
+<a href="ffmpeg-utils.html">ffmpeg-utils</a>,
+<a href="ffmpeg-scaler.html">ffmpeg-scaler</a>,
+<a href="ffmpeg-resampler.html">ffmpeg-resampler</a>,
+<a href="ffmpeg-codecs.html">ffmpeg-codecs</a>,
+<a href="ffmpeg-bitstream-filters.html">ffmpeg-bitstream-filters</a>,
+<a href="ffmpeg-formats.html">ffmpeg-formats</a>,
+<a href="ffmpeg-devices.html">ffmpeg-devices</a>,
+<a href="ffmpeg-protocols.html">ffmpeg-protocols</a>,
+<a href="ffmpeg-filters.html">ffmpeg-filters</a>
+</p>
 
-</dd>
-</dl>
+<a name="Authors"></a>
+<h1 class="chapter"><a href="ffmpeg.html#toc-Authors">9. Authors</a></h1>
 
-<a name="Audio-Production-Information"></a>
-<h4 class="subsubsection"><a href="ffmpeg.html#toc-Audio-Production-Information">10.1.1.3 Audio Production Information</a></h4>
-<p>Audio Production Information is optional information describing the mixing
-environment.  Either none or both of the fields are written to the bitstream.
+<p>The FFmpeg developers.
 </p>
-<dl compact="compact">
-<dt> &lsquo;<samp>-mixing_level <var>number</var></samp>&rsquo;</dt>
-<dd><p>Mixing Level. Specifies peak sound pressure level (SPL) in the production
-environment when the mix was mastered. Valid values are 80 to 111, or -1 for
-unknown or not indicated. The default value is -1, but that value cannot be
-used if the Audio Production Information is written to the bitstream. Therefore,
-if the <code>room_type</code> option is not the default value, the <code>mixing_level</code>
-option must not be -1.
+<p>For details about the authorship, see the Git history of the project
+(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
+<code>git log</code> in the FFmpeg source directory, or browsing the
+online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
 </p>
-</dd>
-<dt> &lsquo;<samp>-room_type <var>type</var></samp>&rsquo;</dt>
-<dd><p>Room Type. Describes the equalization used during the final mixing session at
-the studio or on the dubbing stage. A large room is a dubbing stage with the
-industry standard X-curve equalization; a small room has flat equalization.
-This field will not be written to the bitstream if both the <code>mixing_level</code>
-option and the <code>room_type</code> option have the default values.
-</p><dl compact="compact">
-<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>notindicated</samp>&rsquo;</dt>
-<dd><p>Not Indicated (default)
-</p></dd>
-<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>large</samp>&rsquo;</dt>
-<dd><p>Large Room
-</p></dd>
-<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>small</samp>&rsquo;</dt>
-<dd><p>Small Room
-</p></dd>
-</dl>
-
-</dd>
-</dl>
-
-<a name="Other-Metadata-Options"></a>
-<h4 class="subsubsection"><a href="ffmpeg.html#toc-Other-Metadata-Options">10.1.1.4 Other Metadata Options</a></h4>
-
-<dl compact="compact">
-<dt> &lsquo;<samp>-copyright <var>boolean</var></samp>&rsquo;</dt>
-<dd><p>Copyright Indicator. Specifies whether a copyright exists for this audio.
-</p><dl compact="compact">
-<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
-<dd><p>No Copyright Exists (default)
-</p></dd>
-<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>on</samp>&rsquo;</dt>
-<dd><p>Copyright Exists
-</p></dd>
-</dl>
-
-</dd>
-<dt> &lsquo;<samp>-dialnorm <var>value</var></samp>&rsquo;</dt>
-<dd><p>Dialogue Normalization. Indicates how far the average dialogue level of the
-program is below digital 100% full scale (0 dBFS). This parameter determines a
-level shift during audio reproduction that sets the average volume of the
-dialogue to a preset level. The goal is to match volume level between program
-sources. A value of -31dB will result in no volume level change, relative to
-the source volume, during audio reproduction. Valid values are whole numbers in
-the range -31 to -1, with -31 being the default.
+<p>Maintainers for the specific components are listed in the file
+&lsquo;<tt>MAINTAINERS</tt>&rsquo; in the source code tree.
 </p>
-</dd>
-<dt> &lsquo;<samp>-dsur_mode <var>mode</var></samp>&rsquo;</dt>
-<dd><p>Dolby Surround Mode. Specifies whether the stereo signal uses Dolby Surround
-(Pro Logic). This field will only be written to the bitstream if the audio
-stream is stereo. Using this option does <b>NOT</b> mean the encoder will actually
-apply Dolby Surround processing.
-</p><dl compact="compact">
-<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>notindicated</samp>&rsquo;</dt>
-<dd><p>Not Indicated (default)
-</p></dd>
-<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
-<dd><p>Not Dolby Surround Encoded
-</p></dd>
-<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>on</samp>&rsquo;</dt>
-<dd><p>Dolby Surround Encoded
-</p></dd>
-</dl>
 
-</dd>
-<dt> &lsquo;<samp>-original <var>boolean</var></samp>&rsquo;</dt>
-<dd><p>Original Bit Stream Indicator. Specifies whether this audio is from the
-original source and not a copy.
-</p><dl compact="compact">
-<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
-<dd><p>Not Original Source
-</p></dd>
-<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>on</samp>&rsquo;</dt>
-<dd><p>Original Source (default)
-</p></dd>
-</dl>
-
-</dd>
-</dl>
-
-<a name="Extended-Bitstream-Information"></a>
-<h3 class="subsection"><a href="ffmpeg.html#toc-Extended-Bitstream-Information">10.1.2 Extended Bitstream Information</a></h3>
-<p>The extended bitstream options are part of the Alternate Bit Stream Syntax as
-specified in Annex D of the A/52:2010 standard. It is grouped into 2 parts.
-If any one parameter in a group is specified, all values in that group will be
-written to the bitstream.  Default values are used for those that are written
-but have not been specified.  If the mixing levels are written, the decoder
-will use these values instead of the ones specified in the <code>center_mixlev</code>
-and <code>surround_mixlev</code> options if it supports the Alternate Bit Stream
-Syntax.
-</p>
-<a name="Extended-Bitstream-Information-_002d-Part-1"></a>
-<h4 class="subsubsection"><a href="ffmpeg.html#toc-Extended-Bitstream-Information-_002d-Part-1">10.1.2.1 Extended Bitstream Information - Part 1</a></h4>
-
-<dl compact="compact">
-<dt> &lsquo;<samp>-dmix_mode <var>mode</var></samp>&rsquo;</dt>
-<dd><p>Preferred Stereo Downmix Mode. Allows the user to select either Lt/Rt
-(Dolby Surround) or Lo/Ro (normal stereo) as the preferred stereo downmix mode.
-</p><dl compact="compact">
-<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>notindicated</samp>&rsquo;</dt>
-<dd><p>Not Indicated (default)
-</p></dd>
-<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>ltrt</samp>&rsquo;</dt>
-<dd><p>Lt/Rt Downmix Preferred
-</p></dd>
-<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>loro</samp>&rsquo;</dt>
-<dd><p>Lo/Ro Downmix Preferred
-</p></dd>
-</dl>
-
-</dd>
-<dt> &lsquo;<samp>-ltrt_cmixlev <var>level</var></samp>&rsquo;</dt>
-<dd><p>Lt/Rt Center Mix Level. The amount of gain the decoder should apply to the
-center channel when downmixing to stereo in Lt/Rt mode.
-</p><dl compact="compact">
-<dt> &lsquo;<samp>1.414</samp>&rsquo;</dt>
-<dd><p>Apply +3dB gain
-</p></dd>
-<dt> &lsquo;<samp>1.189</samp>&rsquo;</dt>
-<dd><p>Apply +1.5dB gain
-</p></dd>
-<dt> &lsquo;<samp>1.000</samp>&rsquo;</dt>
-<dd><p>Apply 0dB gain
-</p></dd>
-<dt> &lsquo;<samp>0.841</samp>&rsquo;</dt>
-<dd><p>Apply -1.5dB gain
-</p></dd>
-<dt> &lsquo;<samp>0.707</samp>&rsquo;</dt>
-<dd><p>Apply -3.0dB gain
-</p></dd>
-<dt> &lsquo;<samp>0.595</samp>&rsquo;</dt>
-<dd><p>Apply -4.5dB gain (default)
-</p></dd>
-<dt> &lsquo;<samp>0.500</samp>&rsquo;</dt>
-<dd><p>Apply -6.0dB gain
-</p></dd>
-<dt> &lsquo;<samp>0.000</samp>&rsquo;</dt>
-<dd><p>Silence Center Channel
-</p></dd>
-</dl>
-
-</dd>
-<dt> &lsquo;<samp>-ltrt_surmixlev <var>level</var></samp>&rsquo;</dt>
-<dd><p>Lt/Rt Surround Mix Level. The amount of gain the decoder should apply to the
-surround channel(s) when downmixing to stereo in Lt/Rt mode.
-</p><dl compact="compact">
-<dt> &lsquo;<samp>0.841</samp>&rsquo;</dt>
-<dd><p>Apply -1.5dB gain
-</p></dd>
-<dt> &lsquo;<samp>0.707</samp>&rsquo;</dt>
-<dd><p>Apply -3.0dB gain
-</p></dd>
-<dt> &lsquo;<samp>0.595</samp>&rsquo;</dt>
-<dd><p>Apply -4.5dB gain
-</p></dd>
-<dt> &lsquo;<samp>0.500</samp>&rsquo;</dt>
-<dd><p>Apply -6.0dB gain (default)
-</p></dd>
-<dt> &lsquo;<samp>0.000</samp>&rsquo;</dt>
-<dd><p>Silence Surround Channel(s)
-</p></dd>
-</dl>
-
-</dd>
-<dt> &lsquo;<samp>-loro_cmixlev <var>level</var></samp>&rsquo;</dt>
-<dd><p>Lo/Ro Center Mix Level. The amount of gain the decoder should apply to the
-center channel when downmixing to stereo in Lo/Ro mode.
-</p><dl compact="compact">
-<dt> &lsquo;<samp>1.414</samp>&rsquo;</dt>
-<dd><p>Apply +3dB gain
-</p></dd>
-<dt> &lsquo;<samp>1.189</samp>&rsquo;</dt>
-<dd><p>Apply +1.5dB gain
-</p></dd>
-<dt> &lsquo;<samp>1.000</samp>&rsquo;</dt>
-<dd><p>Apply 0dB gain
-</p></dd>
-<dt> &lsquo;<samp>0.841</samp>&rsquo;</dt>
-<dd><p>Apply -1.5dB gain
-</p></dd>
-<dt> &lsquo;<samp>0.707</samp>&rsquo;</dt>
-<dd><p>Apply -3.0dB gain
-</p></dd>
-<dt> &lsquo;<samp>0.595</samp>&rsquo;</dt>
-<dd><p>Apply -4.5dB gain (default)
-</p></dd>
-<dt> &lsquo;<samp>0.500</samp>&rsquo;</dt>
-<dd><p>Apply -6.0dB gain
-</p></dd>
-<dt> &lsquo;<samp>0.000</samp>&rsquo;</dt>
-<dd><p>Silence Center Channel
-</p></dd>
-</dl>
-
-</dd>
-<dt> &lsquo;<samp>-loro_surmixlev <var>level</var></samp>&rsquo;</dt>
-<dd><p>Lo/Ro Surround Mix Level. The amount of gain the decoder should apply to the
-surround channel(s) when downmixing to stereo in Lo/Ro mode.
-</p><dl compact="compact">
-<dt> &lsquo;<samp>0.841</samp>&rsquo;</dt>
-<dd><p>Apply -1.5dB gain
-</p></dd>
-<dt> &lsquo;<samp>0.707</samp>&rsquo;</dt>
-<dd><p>Apply -3.0dB gain
-</p></dd>
-<dt> &lsquo;<samp>0.595</samp>&rsquo;</dt>
-<dd><p>Apply -4.5dB gain
-</p></dd>
-<dt> &lsquo;<samp>0.500</samp>&rsquo;</dt>
-<dd><p>Apply -6.0dB gain (default)
-</p></dd>
-<dt> &lsquo;<samp>0.000</samp>&rsquo;</dt>
-<dd><p>Silence Surround Channel(s)
-</p></dd>
-</dl>
-
-</dd>
-</dl>
-
-<a name="Extended-Bitstream-Information-_002d-Part-2"></a>
-<h4 class="subsubsection"><a href="ffmpeg.html#toc-Extended-Bitstream-Information-_002d-Part-2">10.1.2.2 Extended Bitstream Information - Part 2</a></h4>
-
-<dl compact="compact">
-<dt> &lsquo;<samp>-dsurex_mode <var>mode</var></samp>&rsquo;</dt>
-<dd><p>Dolby Surround EX Mode. Indicates whether the stream uses Dolby Surround EX
-(7.1 matrixed to 5.1). Using this option does <b>NOT</b> mean the encoder will actually
-apply Dolby Surround EX processing.
-</p><dl compact="compact">
-<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>notindicated</samp>&rsquo;</dt>
-<dd><p>Not Indicated (default)
-</p></dd>
-<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>on</samp>&rsquo;</dt>
-<dd><p>Dolby Surround EX On
-</p></dd>
-<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
-<dd><p>Dolby Surround EX Off
-</p></dd>
-</dl>
-
-</dd>
-<dt> &lsquo;<samp>-dheadphone_mode <var>mode</var></samp>&rsquo;</dt>
-<dd><p>Dolby Headphone Mode. Indicates whether the stream uses Dolby Headphone
-encoding (multi-channel matrixed to 2.0 for use with headphones). Using this
-option does <b>NOT</b> mean the encoder will actually apply Dolby Headphone
-processing.
-</p><dl compact="compact">
-<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>notindicated</samp>&rsquo;</dt>
-<dd><p>Not Indicated (default)
-</p></dd>
-<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>on</samp>&rsquo;</dt>
-<dd><p>Dolby Headphone On
-</p></dd>
-<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
-<dd><p>Dolby Headphone Off
-</p></dd>
-</dl>
-
-</dd>
-<dt> &lsquo;<samp>-ad_conv_type <var>type</var></samp>&rsquo;</dt>
-<dd><p>A/D Converter Type. Indicates whether the audio has passed through HDCD A/D
-conversion.
-</p><dl compact="compact">
-<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>standard</samp>&rsquo;</dt>
-<dd><p>Standard A/D Converter (default)
-</p></dd>
-<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>hdcd</samp>&rsquo;</dt>
-<dd><p>HDCD A/D Converter
-</p></dd>
-</dl>
-
-</dd>
-</dl>
-
-<a name="Other-AC_002d3-Encoding-Options"></a>
-<h3 class="subsection"><a href="ffmpeg.html#toc-Other-AC_002d3-Encoding-Options">10.1.3 Other AC-3 Encoding Options</a></h3>
-
-<dl compact="compact">
-<dt> &lsquo;<samp>-stereo_rematrixing <var>boolean</var></samp>&rsquo;</dt>
-<dd><p>Stereo Rematrixing. Enables/Disables use of rematrixing for stereo input. This
-is an optional AC-3 feature that increases quality by selectively encoding
-the left/right channels as mid/side. This option is enabled by default, and it
-is highly recommended that it be left as enabled except for testing purposes.
-</p>
-</dd>
-</dl>
-
-<a name="Floating_002dPoint_002dOnly-AC_002d3-Encoding-Options"></a>
-<h3 class="subsection"><a href="ffmpeg.html#toc-Floating_002dPoint_002dOnly-AC_002d3-Encoding-Options">10.1.4 Floating-Point-Only AC-3 Encoding Options</a></h3>
-
-<p>These options are only valid for the floating-point encoder and do not exist
-for the fixed-point encoder due to the corresponding features not being
-implemented in fixed-point.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>-channel_coupling <var>boolean</var></samp>&rsquo;</dt>
-<dd><p>Enables/Disables use of channel coupling, which is an optional AC-3 feature
-that increases quality by combining high frequency information from multiple
-channels into a single channel. The per-channel high frequency information is
-sent with less accuracy in both the frequency and time domains. This allows
-more bits to be used for lower frequencies while preserving enough information
-to reconstruct the high frequencies. This option is enabled by default for the
-floating-point encoder and should generally be left as enabled except for
-testing purposes or to increase encoding speed.
-</p><dl compact="compact">
-<dt> &lsquo;<samp>-1</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
-<dd><p>Selected by Encoder (default)
-</p></dd>
-<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
-<dd><p>Disable Channel Coupling
-</p></dd>
-<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>on</samp>&rsquo;</dt>
-<dd><p>Enable Channel Coupling
-</p></dd>
-</dl>
-
-</dd>
-<dt> &lsquo;<samp>-cpl_start_band <var>number</var></samp>&rsquo;</dt>
-<dd><p>Coupling Start Band. Sets the channel coupling start band, from 1 to 15. If a
-value higher than the bandwidth is used, it will be reduced to 1 less than the
-coupling end band. If <var>auto</var> is used, the start band will be determined by
-the encoder based on the bit rate, sample rate, and channel layout. This option
-has no effect if channel coupling is disabled.
-</p><dl compact="compact">
-<dt> &lsquo;<samp>-1</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
-<dd><p>Selected by Encoder (default)
-</p></dd>
-</dl>
-
-</dd>
-</dl>
-
-
-<a name="Video-Encoders"></a>
-<h1 class="chapter"><a href="ffmpeg.html#toc-Video-Encoders">11. Video Encoders</a></h1>
-
-<p>A description of some of the currently available video encoders
-follows.
-</p>
-<a name="libvpx"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-libvpx">11.1 libvpx</a></h2>
-
-<p>VP8 format supported through libvpx.
-</p>
-<p>Requires the presence of the libvpx headers and library during configuration.
-You need to explicitly configure the build with <code>--enable-libvpx</code>.
-</p>
-<a name="Options-4"></a>
-<h3 class="subsection"><a href="ffmpeg.html#toc-Options-4">11.1.1 Options</a></h3>
-
-<p>Mapping from FFmpeg to libvpx options with conversion notes in parentheses.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>threads</samp>&rsquo;</dt>
-<dd><p>g_threads
-</p>
-</dd>
-<dt> &lsquo;<samp>profile</samp>&rsquo;</dt>
-<dd><p>g_profile
-</p>
-</dd>
-<dt> &lsquo;<samp>vb</samp>&rsquo;</dt>
-<dd><p>rc_target_bitrate
-</p>
-</dd>
-<dt> &lsquo;<samp>g</samp>&rsquo;</dt>
-<dd><p>kf_max_dist
-</p>
-</dd>
-<dt> &lsquo;<samp>keyint_min</samp>&rsquo;</dt>
-<dd><p>kf_min_dist
-</p>
-</dd>
-<dt> &lsquo;<samp>qmin</samp>&rsquo;</dt>
-<dd><p>rc_min_quantizer
-</p>
-</dd>
-<dt> &lsquo;<samp>qmax</samp>&rsquo;</dt>
-<dd><p>rc_max_quantizer
-</p>
-</dd>
-<dt> &lsquo;<samp>bufsize, vb</samp>&rsquo;</dt>
-<dd><p>rc_buf_sz
-<code>(bufsize * 1000 / vb)</code>
-</p>
-<p>rc_buf_optimal_sz
-<code>(bufsize * 1000 / vb * 5 / 6)</code>
-</p>
-</dd>
-<dt> &lsquo;<samp>rc_init_occupancy, vb</samp>&rsquo;</dt>
-<dd><p>rc_buf_initial_sz
-<code>(rc_init_occupancy * 1000 / vb)</code>
-</p>
-</dd>
-<dt> &lsquo;<samp>rc_buffer_aggressivity</samp>&rsquo;</dt>
-<dd><p>rc_undershoot_pct
-</p>
-</dd>
-<dt> &lsquo;<samp>skip_threshold</samp>&rsquo;</dt>
-<dd><p>rc_dropframe_thresh
-</p>
-</dd>
-<dt> &lsquo;<samp>qcomp</samp>&rsquo;</dt>
-<dd><p>rc_2pass_vbr_bias_pct
-</p>
-</dd>
-<dt> &lsquo;<samp>maxrate, vb</samp>&rsquo;</dt>
-<dd><p>rc_2pass_vbr_maxsection_pct
-<code>(maxrate * 100 / vb)</code>
-</p>
-</dd>
-<dt> &lsquo;<samp>minrate, vb</samp>&rsquo;</dt>
-<dd><p>rc_2pass_vbr_minsection_pct
-<code>(minrate * 100 / vb)</code>
-</p>
-</dd>
-<dt> &lsquo;<samp>minrate, maxrate, vb</samp>&rsquo;</dt>
-<dd><p><code>VPX_CBR</code>
-<code>(minrate == maxrate == vb)</code>
-</p>
-</dd>
-<dt> &lsquo;<samp>crf</samp>&rsquo;</dt>
-<dd><p><code>VPX_CQ</code>, <code>VP8E_SET_CQ_LEVEL</code>
-</p>
-</dd>
-<dt> &lsquo;<samp>quality</samp>&rsquo;</dt>
-<dd><dl compact="compact">
-<dt> &lsquo;<samp><var>best</var></samp>&rsquo;</dt>
-<dd><p><code>VPX_DL_BEST_QUALITY</code>
-</p></dd>
-<dt> &lsquo;<samp><var>good</var></samp>&rsquo;</dt>
-<dd><p><code>VPX_DL_GOOD_QUALITY</code>
-</p></dd>
-<dt> &lsquo;<samp><var>realtime</var></samp>&rsquo;</dt>
-<dd><p><code>VPX_DL_REALTIME</code>
-</p></dd>
-</dl>
-
-</dd>
-<dt> &lsquo;<samp>speed</samp>&rsquo;</dt>
-<dd><p><code>VP8E_SET_CPUUSED</code>
-</p>
-</dd>
-<dt> &lsquo;<samp>nr</samp>&rsquo;</dt>
-<dd><p><code>VP8E_SET_NOISE_SENSITIVITY</code>
-</p>
-</dd>
-<dt> &lsquo;<samp>mb_threshold</samp>&rsquo;</dt>
-<dd><p><code>VP8E_SET_STATIC_THRESHOLD</code>
-</p>
-</dd>
-<dt> &lsquo;<samp>slices</samp>&rsquo;</dt>
-<dd><p><code>VP8E_SET_TOKEN_PARTITIONS</code>
-</p>
-</dd>
-<dt> &lsquo;<samp>Alternate reference frame related</samp>&rsquo;</dt>
-<dd><dl compact="compact">
-<dt> &lsquo;<samp>vp8flags altref</samp>&rsquo;</dt>
-<dd><p><code>VP8E_SET_ENABLEAUTOALTREF</code>
-</p></dd>
-<dt> &lsquo;<samp><var>arnr_max_frames</var></samp>&rsquo;</dt>
-<dd><p><code>VP8E_SET_ARNR_MAXFRAMES</code>
-</p></dd>
-<dt> &lsquo;<samp><var>arnr_type</var></samp>&rsquo;</dt>
-<dd><p><code>VP8E_SET_ARNR_TYPE</code>
-</p></dd>
-<dt> &lsquo;<samp><var>arnr_strength</var></samp>&rsquo;</dt>
-<dd><p><code>VP8E_SET_ARNR_STRENGTH</code>
-</p></dd>
-<dt> &lsquo;<samp><var>rc_lookahead</var></samp>&rsquo;</dt>
-<dd><p>g_lag_in_frames
-</p></dd>
-</dl>
-
-</dd>
-<dt> &lsquo;<samp>vp8flags error_resilient</samp>&rsquo;</dt>
-<dd><p>g_error_resilient
-</p>
-</dd>
-</dl>
-
-<p>For more information about libvpx see:
-<a href="http://www.webmproject.org/">http://www.webmproject.org/</a>
-</p>
-<a name="libx264"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-libx264">11.2 libx264</a></h2>
-
-<p>H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 format supported through
-libx264.
-</p>
-<p>Requires the presence of the libx264 headers and library during
-configuration. You need to explicitly configure the build with
-<code>--enable-libx264</code>.
-</p>
-<a name="Options-5"></a>
-<h3 class="subsection"><a href="ffmpeg.html#toc-Options-5">11.2.1 Options</a></h3>
-
-<dl compact="compact">
-<dt> &lsquo;<samp>preset <var>preset_name</var></samp>&rsquo;</dt>
-<dd><p>Set the encoding preset.
-</p>
-</dd>
-<dt> &lsquo;<samp>tune <var>tune_name</var></samp>&rsquo;</dt>
-<dd><p>Tune the encoding params.
-Deprecated in favor of <var>x264_opts</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>fastfirstpass <var>bool</var></samp>&rsquo;</dt>
-<dd><p>Use fast settings when encoding first pass, default value is 1.
-Deprecated in favor of <var>x264_opts</var>.
-</p>
-</dd>
-<dt> &lsquo;<samp>profile <var>profile_name</var></samp>&rsquo;</dt>
-<dd><p>Set profile restrictions.
-Deprecated in favor of <var>x264_opts</var>.
-</p>
-</dd>
-<dt> &lsquo;<samp>level <var>level</var></samp>&rsquo;</dt>
-<dd><p>Specify level (as defined by Annex A).
-Deprecated in favor of <var>x264_opts</var>.
-</p>
-</dd>
-<dt> &lsquo;<samp>passlogfile <var>filename</var></samp>&rsquo;</dt>
-<dd><p>Specify filename for 2 pass stats.
-Deprecated in favor of <var>x264_opts</var>.
-</p>
-</dd>
-<dt> &lsquo;<samp>wpredp <var>wpred_type</var></samp>&rsquo;</dt>
-<dd><p>Specify Weighted prediction for P-frames.
-Deprecated in favor of <var>x264_opts</var>.
-</p>
-</dd>
-<dt> &lsquo;<samp>x264opts <var>options</var></samp>&rsquo;</dt>
-<dd><p>Allow to set any x264 option, see x264 manual for a list.
-</p>
-<p><var>options</var> is a list of <var>key</var>=<var>value</var> couples separated by
-&quot;:&quot;.
-</p></dd>
-</dl>
-
-<p>For example to specify libx264 encoding options with &lsquo;<tt>ffmpeg</tt>&rsquo;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i foo.mpg -vcodec libx264 -x264opts keyint=123:min-keyint=20 -an out.mkv
-</pre></td></tr></table>
-
-<p>For more information about libx264 and the supported options see:
-<a href="http://www.videolan.org/developers/x264.html">http://www.videolan.org/developers/x264.html</a>
-</p>
-<a name="Demuxers"></a>
-<h1 class="chapter"><a href="ffmpeg.html#toc-Demuxers">12. Demuxers</a></h1>
-
-<p>Demuxers are configured elements in FFmpeg which allow to read the
-multimedia streams from a particular type of file.
-</p>
-<p>When you configure your FFmpeg build, all the supported demuxers
-are enabled by default. You can list all available ones using the
-configure option &quot;&ndash;list-demuxers&quot;.
-</p>
-<p>You can disable all the demuxers using the configure option
-&quot;&ndash;disable-demuxers&quot;, and selectively enable a single demuxer with
-the option &quot;&ndash;enable-demuxer=<var>DEMUXER</var>&quot;, or disable it
-with the option &quot;&ndash;disable-demuxer=<var>DEMUXER</var>&quot;.
-</p>
-<p>The option &quot;-formats&quot; of the ff* tools will display the list of
-enabled demuxers.
-</p>
-<p>The description of some of the currently available demuxers follows.
-</p>
-<a name="image2"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-image2">12.1 image2</a></h2>
-
-<p>Image file demuxer.
-</p>
-<p>This demuxer reads from a list of image files specified by a pattern.
-</p>
-<p>The pattern may contain the string &quot;%d&quot; or &quot;%0<var>N</var>d&quot;, which
-specifies the position of the characters representing a sequential
-number in each filename matched by the pattern. If the form
-&quot;%d0<var>N</var>d&quot; is used, the string representing the number in each
-filename is 0-padded and <var>N</var> is the total number of 0-padded
-digits representing the number. The literal character &rsquo;%&rsquo; can be
-specified in the pattern with the string &quot;%%&quot;.
-</p>
-<p>If the pattern contains &quot;%d&quot; or &quot;%0<var>N</var>d&quot;, the first filename of
-the file list specified by the pattern must contain a number
-inclusively contained between 0 and 4, all the following numbers must
-be sequential. This limitation may be hopefully fixed.
-</p>
-<p>The pattern may contain a suffix which is used to automatically
-determine the format of the images contained in the files.
-</p>
-<p>For example the pattern &quot;img-%03d.bmp&quot; will match a sequence of
-filenames of the form &lsquo;<tt>img-001.bmp</tt>&rsquo;, &lsquo;<tt>img-002.bmp</tt>&rsquo;, ...,
-&lsquo;<tt>img-010.bmp</tt>&rsquo;, etc.; the pattern &quot;i%%m%%g-%d.jpg&quot; will match a
-sequence of filenames of the form &lsquo;<tt>i%m%g-1.jpg</tt>&rsquo;,
-&lsquo;<tt>i%m%g-2.jpg</tt>&rsquo;, ..., &lsquo;<tt>i%m%g-10.jpg</tt>&rsquo;, etc.
-</p>
-<p>The size, the pixel format, and the format of each image must be the
-same for all the files in the sequence.
-</p>
-<p>The following example shows how to use &lsquo;<tt>ffmpeg</tt>&rsquo; for creating a
-video from the images in the file sequence &lsquo;<tt>img-001.jpeg</tt>&rsquo;,
-&lsquo;<tt>img-002.jpeg</tt>&rsquo;, ..., assuming an input framerate of 10 frames per
-second:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -r 10 -f image2 -i 'img-%03d.jpeg' out.avi
-</pre></td></tr></table>
-
-<p>Note that the pattern must not necessarily contain &quot;%d&quot; or
-&quot;%0<var>N</var>d&quot;, for example to convert a single image file
-&lsquo;<tt>img.jpeg</tt>&rsquo; you can employ the command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f image2 -i img.jpeg img.png
-</pre></td></tr></table>
-
-<a name="applehttp-1"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-applehttp-1">12.2 applehttp</a></h2>
-
-<p>Apple HTTP Live Streaming demuxer.
-</p>
-<p>This demuxer presents all AVStreams from all variant streams.
-The id field is set to the bitrate variant index number. By setting
-the discard flags on AVStreams (by pressing &rsquo;a&rsquo; or &rsquo;v&rsquo; in ffplay),
-the caller can decide which variant streams to actually receive.
-The total bitrate of the variant that the stream belongs to is
-available in a metadata key named &quot;variant_bitrate&quot;.
-</p>
-<a name="Muxers"></a>
-<h1 class="chapter"><a href="ffmpeg.html#toc-Muxers">13. Muxers</a></h1>
-
-<p>Muxers are configured elements in FFmpeg which allow writing
-multimedia streams to a particular type of file.
-</p>
-<p>When you configure your FFmpeg build, all the supported muxers
-are enabled by default. You can list all available muxers using the
-configure option <code>--list-muxers</code>.
-</p>
-<p>You can disable all the muxers with the configure option
-<code>--disable-muxers</code> and selectively enable / disable single muxers
-with the options <code>--enable-muxer=<var>MUXER</var></code> /
-<code>--disable-muxer=<var>MUXER</var></code>.
-</p>
-<p>The option <code>-formats</code> of the ff* tools will display the list of
-enabled muxers.
-</p>
-<p>A description of some of the currently available muxers follows.
-</p>
-<p><a name="crc"></a>
-</p><a name="crc-1"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-crc-1">13.1 crc</a></h2>
-
-<p>CRC (Cyclic Redundancy Check) testing format.
-</p>
-<p>This muxer computes and prints the Adler-32 CRC of all the input audio
-and video frames. By default audio frames are converted to signed
-16-bit raw audio and video frames to raw video before computing the
-CRC.
-</p>
-<p>The output of the muxer consists of a single line of the form:
-CRC=0x<var>CRC</var>, where <var>CRC</var> is a hexadecimal number 0-padded to
-8 digits containing the CRC for all the decoded input frames.
-</p>
-<p>For example to compute the CRC of the input, and store it in the file
-&lsquo;<tt>out.crc</tt>&rsquo;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f crc out.crc
-</pre></td></tr></table>
-
-<p>You can print the CRC to stdout with the command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f crc -
-</pre></td></tr></table>
-
-<p>You can select the output format of each frame with &lsquo;<tt>ffmpeg</tt>&rsquo; by
-specifying the audio and video codec and format. For example to
-compute the CRC of the input audio converted to PCM unsigned 8-bit
-and the input video converted to MPEG-2 video, use the command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -acodec pcm_u8 -vcodec mpeg2video -f crc -
-</pre></td></tr></table>
-
-<p>See also the <a href="#framecrc">framecrc</a> muxer.
-</p>
-<p><a name="framecrc"></a>
-</p><a name="framecrc-1"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-framecrc-1">13.2 framecrc</a></h2>
-
-<p>Per-frame CRC (Cyclic Redundancy Check) testing format.
-</p>
-<p>This muxer computes and prints the Adler-32 CRC for each decoded audio
-and video frame. By default audio frames are converted to signed
-16-bit raw audio and video frames to raw video before computing the
-CRC.
-</p>
-<p>The output of the muxer consists of a line for each audio and video
-frame of the form: <var>stream_index</var>, <var>frame_dts</var>,
-<var>frame_size</var>, 0x<var>CRC</var>, where <var>CRC</var> is a hexadecimal
-number 0-padded to 8 digits containing the CRC of the decoded frame.
-</p>
-<p>For example to compute the CRC of each decoded frame in the input, and
-store it in the file &lsquo;<tt>out.crc</tt>&rsquo;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f framecrc out.crc
-</pre></td></tr></table>
-
-<p>You can print the CRC of each decoded frame to stdout with the command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f framecrc -
-</pre></td></tr></table>
-
-<p>You can select the output format of each frame with &lsquo;<tt>ffmpeg</tt>&rsquo; by
-specifying the audio and video codec and format. For example, to
-compute the CRC of each decoded input audio frame converted to PCM
-unsigned 8-bit and of each decoded input video frame converted to
-MPEG-2 video, use the command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -acodec pcm_u8 -vcodec mpeg2video -f framecrc -
-</pre></td></tr></table>
-
-<p>See also the <a href="#crc">crc</a> muxer.
-</p>
-<a name="image2-1"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-image2-1">13.3 image2</a></h2>
-
-<p>Image file muxer.
-</p>
-<p>The image file muxer writes video frames to image files.
-</p>
-<p>The output filenames are specified by a pattern, which can be used to
-produce sequentially numbered series of files.
-The pattern may contain the string &quot;%d&quot; or &quot;%0<var>N</var>d&quot;, this string
-specifies the position of the characters representing a numbering in
-the filenames. If the form &quot;%0<var>N</var>d&quot; is used, the string
-representing the number in each filename is 0-padded to <var>N</var>
-digits. The literal character &rsquo;%&rsquo; can be specified in the pattern with
-the string &quot;%%&quot;.
-</p>
-<p>If the pattern contains &quot;%d&quot; or &quot;%0<var>N</var>d&quot;, the first filename of
-the file list specified will contain the number 1, all the following
-numbers will be sequential.
-</p>
-<p>The pattern may contain a suffix which is used to automatically
-determine the format of the image files to write.
-</p>
-<p>For example the pattern &quot;img-%03d.bmp&quot; will specify a sequence of
-filenames of the form &lsquo;<tt>img-001.bmp</tt>&rsquo;, &lsquo;<tt>img-002.bmp</tt>&rsquo;, ...,
-&lsquo;<tt>img-010.bmp</tt>&rsquo;, etc.
-The pattern &quot;img%%-%d.jpg&quot; will specify a sequence of filenames of the
-form &lsquo;<tt>img%-1.jpg</tt>&rsquo;, &lsquo;<tt>img%-2.jpg</tt>&rsquo;, ..., &lsquo;<tt>img%-10.jpg</tt>&rsquo;,
-etc.
-</p>
-<p>The following example shows how to use &lsquo;<tt>ffmpeg</tt>&rsquo; for creating a
-sequence of files &lsquo;<tt>img-001.jpeg</tt>&rsquo;, &lsquo;<tt>img-002.jpeg</tt>&rsquo;, ...,
-taking one image every second from the input video:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -r 1 -f image2 'img-%03d.jpeg'
-</pre></td></tr></table>
-
-<p>Note that with &lsquo;<tt>ffmpeg</tt>&rsquo;, if the format is not specified with the
-<code>-f</code> option and the output filename specifies an image file
-format, the image2 muxer is automatically selected, so the previous
-command can be written as:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -r 1 'img-%03d.jpeg'
-</pre></td></tr></table>
-
-<p>Note also that the pattern must not necessarily contain &quot;%d&quot; or
-&quot;%0<var>N</var>d&quot;, for example to create a single image file
-&lsquo;<tt>img.jpeg</tt>&rsquo; from the input video you can employ the command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -f image2 -vframes 1 img.jpeg
-</pre></td></tr></table>
-
-<p>The image muxer supports the .Y.U.V image file format. This format is
-special in that that each image frame consists of three files, for
-each of the YUV420P components. To read or write this image file format,
-specify the name of the &rsquo;.Y&rsquo; file. The muxer will automatically open the
-&rsquo;.U&rsquo; and &rsquo;.V&rsquo; files as required.
-</p>
-<a name="mpegts"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-mpegts">13.4 mpegts</a></h2>
-
-<p>MPEG transport stream muxer.
-</p>
-<p>This muxer implements ISO 13818-1 and part of ETSI EN 300 468.
-</p>
-<p>The muxer options are:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>-mpegts_original_network_id <var>number</var></samp>&rsquo;</dt>
-<dd><p>Set the original_network_id (default 0x0001). This is unique identifier
-of a network in DVB. Its main use is in the unique identification of a
-service through the path Original_Network_ID, Transport_Stream_ID.
-</p></dd>
-<dt> &lsquo;<samp>-mpegts_transport_stream_id <var>number</var></samp>&rsquo;</dt>
-<dd><p>Set the transport_stream_id (default 0x0001). This identifies a
-transponder in DVB.
-</p></dd>
-<dt> &lsquo;<samp>-mpegts_service_id <var>number</var></samp>&rsquo;</dt>
-<dd><p>Set the service_id (default 0x0001) also known as program in DVB.
-</p></dd>
-<dt> &lsquo;<samp>-mpegts_pmt_start_pid <var>number</var></samp>&rsquo;</dt>
-<dd><p>Set the first PID for PMT (default 0x1000, max 0x1f00).
-</p></dd>
-<dt> &lsquo;<samp>-mpegts_start_pid <var>number</var></samp>&rsquo;</dt>
-<dd><p>Set the first PID for data packets (default 0x0100, max 0x0f00).
-</p></dd>
-</dl>
-
-<p>The recognized metadata settings in mpegts muxer are <code>service_provider</code>
-and <code>service_name</code>. If they are not set the default for
-<code>service_provider</code> is &quot;FFmpeg&quot; and the default for
-<code>service_name</code> is &quot;Service01&quot;.
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i file.mpg -acodec copy -vcodec copy \
-     -mpegts_original_network_id 0x1122 \
-     -mpegts_transport_stream_id 0x3344 \
-     -mpegts_service_id 0x5566 \
-     -mpegts_pmt_start_pid 0x1500 \
-     -mpegts_start_pid 0x150 \
-     -metadata service_provider=&quot;Some provider&quot; \
-     -metadata service_name=&quot;Some Channel&quot; \
-     -y out.ts
-</pre></td></tr></table>
-
-<a name="null-1"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-null-1">13.5 null</a></h2>
-
-<p>Null muxer.
-</p>
-<p>This muxer does not generate any output file, it is mainly useful for
-testing or benchmarking purposes.
-</p>
-<p>For example to benchmark decoding with &lsquo;<tt>ffmpeg</tt>&rsquo; you can use the
-command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -benchmark -i INPUT -f null out.null
-</pre></td></tr></table>
-
-<p>Note that the above command does not read or write the &lsquo;<tt>out.null</tt>&rsquo;
-file, but specifying the output file is required by the &lsquo;<tt>ffmpeg</tt>&rsquo;
-syntax.
-</p>
-<p>Alternatively you can write the command as:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -benchmark -i INPUT -f null -
-</pre></td></tr></table>
-
-<a name="matroska"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-matroska">13.6 matroska</a></h2>
-
-<p>Matroska container muxer.
-</p>
-<p>This muxer implements the matroska and webm container specs.
-</p>
-<p>The recognized metadata settings in this muxer are:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>title=<var>title name</var></samp>&rsquo;</dt>
-<dd><p>Name provided to a single track
-</p></dd>
-</dl>
-
-<dl compact="compact">
-<dt> &lsquo;<samp>language=<var>language name</var></samp>&rsquo;</dt>
-<dd><p>Specifies the language of the track in the Matroska languages form
-</p></dd>
-</dl>
-
-<dl compact="compact">
-<dt> &lsquo;<samp>stereo_mode=<var>mode</var></samp>&rsquo;</dt>
-<dd><p>Stereo 3D video layout of two views in a single video track
-</p><dl compact="compact">
-<dt> &lsquo;<samp>mono</samp>&rsquo;</dt>
-<dd><p>video is not stereo
-</p></dd>
-<dt> &lsquo;<samp>left_right</samp>&rsquo;</dt>
-<dd><p>Both views are arranged side by side, Left-eye view is on the left
-</p></dd>
-<dt> &lsquo;<samp>bottom_top</samp>&rsquo;</dt>
-<dd><p>Both views are arranged in top-bottom orientation, Left-eye view is at bottom
-</p></dd>
-<dt> &lsquo;<samp>top_bottom</samp>&rsquo;</dt>
-<dd><p>Both views are arranged in top-bottom orientation, Left-eye view is on top
-</p></dd>
-<dt> &lsquo;<samp>checkerboard_rl</samp>&rsquo;</dt>
-<dd><p>Each view is arranged in a checkerboard interleaved pattern, Left-eye view being first
-</p></dd>
-<dt> &lsquo;<samp>checkerboard_lr</samp>&rsquo;</dt>
-<dd><p>Each view is arranged in a checkerboard interleaved pattern, Right-eye view being first
-</p></dd>
-<dt> &lsquo;<samp>row_interleaved_rl</samp>&rsquo;</dt>
-<dd><p>Each view is constituted by a row based interleaving, Right-eye view is first row
-</p></dd>
-<dt> &lsquo;<samp>row_interleaved_lr</samp>&rsquo;</dt>
-<dd><p>Each view is constituted by a row based interleaving, Left-eye view is first row
-</p></dd>
-<dt> &lsquo;<samp>col_interleaved_rl</samp>&rsquo;</dt>
-<dd><p>Both views are arranged in a column based interleaving manner, Right-eye view is first column
-</p></dd>
-<dt> &lsquo;<samp>col_interleaved_lr</samp>&rsquo;</dt>
-<dd><p>Both views are arranged in a column based interleaving manner, Left-eye view is first column
-</p></dd>
-<dt> &lsquo;<samp>anaglyph_cyan_red</samp>&rsquo;</dt>
-<dd><p>All frames are in anaglyph format viewable through red-cyan filters
-</p></dd>
-<dt> &lsquo;<samp>right_left</samp>&rsquo;</dt>
-<dd><p>Both views are arranged side by side, Right-eye view is on the left
-</p></dd>
-<dt> &lsquo;<samp>anaglyph_green_magenta</samp>&rsquo;</dt>
-<dd><p>All frames are in anaglyph format viewable through green-magenta filters
-</p></dd>
-<dt> &lsquo;<samp>block_lr</samp>&rsquo;</dt>
-<dd><p>Both eyes laced in one Block, Left-eye view is first
-</p></dd>
-<dt> &lsquo;<samp>block_rl</samp>&rsquo;</dt>
-<dd><p>Both eyes laced in one Block, Right-eye view is first
-</p></dd>
-</dl>
-</dd>
-</dl>
-
-<p>For example a 3D WebM clip can be created using the following command line:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i sample_left_right_clip.mpg -an -vcodec libvpx -metadata stereo_mode=left_right -y stereo_clip.webm
-</pre></td></tr></table>
-
-<a name="Input-Devices"></a>
-<h1 class="chapter"><a href="ffmpeg.html#toc-Input-Devices">14. Input Devices</a></h1>
-
-<p>Input devices are configured elements in FFmpeg which allow to access
-the data coming from a multimedia device attached to your system.
-</p>
-<p>When you configure your FFmpeg build, all the supported input devices
-are enabled by default. You can list all available ones using the
-configure option &quot;&ndash;list-indevs&quot;.
-</p>
-<p>You can disable all the input devices using the configure option
-&quot;&ndash;disable-indevs&quot;, and selectively enable an input device using the
-option &quot;&ndash;enable-indev=<var>INDEV</var>&quot;, or you can disable a particular
-input device using the option &quot;&ndash;disable-indev=<var>INDEV</var>&quot;.
-</p>
-<p>The option &quot;-formats&quot; of the ff* tools will display the list of
-supported input devices (amongst the demuxers).
-</p>
-<p>A description of the currently available input devices follows.
-</p>
-<a name="alsa-1"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-alsa-1">14.1 alsa</a></h2>
-
-<p>ALSA (Advanced Linux Sound Architecture) input device.
-</p>
-<p>To enable this input device during configuration you need libasound
-installed on your system.
-</p>
-<p>This device allows capturing from an ALSA device. The name of the
-device to capture has to be an ALSA card identifier.
-</p>
-<p>An ALSA identifier has the syntax:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">hw:<var>CARD</var>[,<var>DEV</var>[,<var>SUBDEV</var>]]
-</pre></td></tr></table>
-
-<p>where the <var>DEV</var> and <var>SUBDEV</var> components are optional.
-</p>
-<p>The three arguments (in order: <var>CARD</var>,<var>DEV</var>,<var>SUBDEV</var>)
-specify card number or identifier, device number and subdevice number
-(-1 means any).
-</p>
-<p>To see the list of cards currently recognized by your system check the
-files &lsquo;<tt>/proc/asound/cards</tt>&rsquo; and &lsquo;<tt>/proc/asound/devices</tt>&rsquo;.
-</p>
-<p>For example to capture with &lsquo;<tt>ffmpeg</tt>&rsquo; from an ALSA device with
-card id 0, you may run the command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f alsa -i hw:0 alsaout.wav
-</pre></td></tr></table>
-
-<p>For more information see:
-<a href="http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html">http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html</a>
-</p>
-<a name="bktr"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-bktr">14.2 bktr</a></h2>
-
-<p>BSD video input device.
-</p>
-<a name="dv1394"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-dv1394">14.3 dv1394</a></h2>
-
-<p>Linux DV 1394 input device.
-</p>
-<a name="fbdev"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-fbdev">14.4 fbdev</a></h2>
-
-<p>Linux framebuffer input device.
-</p>
-<p>The Linux framebuffer is a graphic hardware-independent abstraction
-layer to show graphics on a computer monitor, typically on the
-console. It is accessed through a file device node, usually
-&lsquo;<tt>/dev/fb0</tt>&rsquo;.
-</p>
-<p>For more detailed information read the file
-Documentation/fb/framebuffer.txt included in the Linux source tree.
-</p>
-<p>To record from the framebuffer device &lsquo;<tt>/dev/fb0</tt>&rsquo; with
-&lsquo;<tt>ffmpeg</tt>&rsquo;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f fbdev -r 10 -i /dev/fb0 out.avi
-</pre></td></tr></table>
-
-<p>You can take a single screenshot image with the command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f fbdev -vframes 1 -r 1 -i /dev/fb0 screenshot.jpeg
-</pre></td></tr></table>
-
-<p>See also <a href="http://linux-fbdev.sourceforge.net/">http://linux-fbdev.sourceforge.net/</a>, and fbset(1).
-</p>
-<a name="jack"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-jack">14.5 jack</a></h2>
-
-<p>JACK input device.
-</p>
-<p>To enable this input device during configuration you need libjack
-installed on your system.
-</p>
-<p>A JACK input device creates one or more JACK writable clients, one for
-each audio channel, with name <var>client_name</var>:input_<var>N</var>, where
-<var>client_name</var> is the name provided by the application, and <var>N</var>
-is a number which identifies the channel.
-Each writable client will send the acquired data to the FFmpeg input
-device.
-</p>
-<p>Once you have created one or more JACK readable clients, you need to
-connect them to one or more JACK writable clients.
-</p>
-<p>To connect or disconnect JACK clients you can use the
-&lsquo;<tt>jack_connect</tt>&rsquo; and &lsquo;<tt>jack_disconnect</tt>&rsquo; programs, or do it
-through a graphical interface, for example with &lsquo;<tt>qjackctl</tt>&rsquo;.
-</p>
-<p>To list the JACK clients and their properties you can invoke the command
-&lsquo;<tt>jack_lsp</tt>&rsquo;.
-</p>
-<p>Follows an example which shows how to capture a JACK readable client
-with &lsquo;<tt>ffmpeg</tt>&rsquo;.
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># Create a JACK writable client with name &quot;ffmpeg&quot;.
-$ ffmpeg -f jack -i ffmpeg -y out.wav
-
-# Start the sample jack_metro readable client.
-$ jack_metro -b 120 -d 0.2 -f 4000
-
-# List the current JACK clients.
-$ jack_lsp -c
-system:capture_1
-system:capture_2
-system:playback_1
-system:playback_2
-ffmpeg:input_1
-metro:120_bpm
-
-# Connect metro to the ffmpeg writable client.
-$ jack_connect metro:120_bpm ffmpeg:input_1
-</pre></td></tr></table>
-
-<p>For more information read:
-<a href="http://jackaudio.org/">http://jackaudio.org/</a>
-</p>
-<a name="lavfi"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-lavfi">14.6 lavfi</a></h2>
-
-<p>Libavfilter input virtual device.
-</p>
-<p>This input device reads data from the open output pads of a libavfilter
-filtergraph.
-</p>
-<p>For each filtergraph open output, the input device will create a
-corresponding stream which is mapped to the generated output. Currently
-only video data is supported. The filtergraph is specified through the
-option &lsquo;<samp>graph</samp>&rsquo;.
-</p>
-<p>To enable this input device, you need to configure your build with
-<code>--enable-libavfilter</code>.
-</p>
-<a name="Options"></a>
-<h3 class="subsection"><a href="ffmpeg.html#toc-Options">14.6.1 Options</a></h3>
-
-<dl compact="compact">
-<dt> &lsquo;<samp>graph</samp>&rsquo;</dt>
-<dd><p>Specify the filtergraph to use as input. Each video open output must be
-labelled by a unique string of the form &quot;out<var>N</var>&quot;, where <var>N</var> is a
-number starting from 0 corresponding to the mapped input stream
-generated by the device.
-The first unlabelled output is automatically assigned to the &quot;out0&quot;
-label, but all the others need to be specified explicitely.
-</p>
-<p>If not specified defaults to the filename specified for the input
-device.
-</p></dd>
-</dl>
-
-<a name="Examples-3"></a>
-<h3 class="subsection"><a href="ffmpeg.html#toc-Examples-3">14.6.2 Examples</a></h3>
-
-<ul>
-<li>
-Create a color video stream and play it back with &lsquo;<tt>ffplay</tt>&rsquo;:
-<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi -graph &quot;color=pink [out0]&quot; dummy
-</pre></td></tr></table>
-
-</li><li>
-As the previous example, but use filename for specifying the graph
-description, and omit the &quot;out0&quot; label:
-<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi color=pink
-</pre></td></tr></table>
-
-</li><li>
-Create three different video test filtered sources and play them:
-<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi -graph &quot;testsrc [out0]; testsrc,hflip [out1]; testsrc,negate [out2]&quot; test3
-</pre></td></tr></table>
-</li></ul>
-
-<a name="libdc1394"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-libdc1394">14.7 libdc1394</a></h2>
-
-<p>IIDC1394 input device, based on libdc1394 and libraw1394.
-</p>
-<a name="openal"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-openal">14.8 openal</a></h2>
-
-<p>The OpenAL input device provides audio capture on all systems with a
-working OpenAL 1.1 implementation.
-</p>
-<p>To enable this input device during configuration, you need OpenAL
-headers and libraries installed on your system, and need to configure
-FFmpeg with <code>--enable-openal</code>.
-</p>
-<p>OpenAL headers and libraries should be provided as part of your OpenAL
-implementation, or as an additional download (an SDK). Depending on your
-installation you may need to specify additional flags via the
-<code>--extra-cflags</code> and <code>--extra-ldflags</code> for allowing the build
-system to locate the OpenAL headers and libraries.
-</p>
-<p>An incomplete list of OpenAL implementations follows:
-</p>
-<dl compact="compact">
-<dt> <strong>Creative</strong></dt>
-<dd><p>The official Windows implementation, providing hardware acceleration
-with supported devices and software fallback.
-See <a href="http://openal.org/">http://openal.org/</a>.
-</p></dd>
-<dt> <strong>OpenAL Soft</strong></dt>
-<dd><p>Portable, open source (LGPL) software implementation. Includes
-backends for the most common sound APIs on the Windows, Linux,
-Solaris, and BSD operating systems.
-See <a href="http://kcat.strangesoft.net/openal.html">http://kcat.strangesoft.net/openal.html</a>.
-</p></dd>
-<dt> <strong>Apple</strong></dt>
-<dd><p>OpenAL is part of Core Audio, the official Mac OS X Audio interface.
-See <a href="http://developer.apple.com/technologies/mac/audio-and-video.html">http://developer.apple.com/technologies/mac/audio-and-video.html</a>
-</p></dd>
-</dl>
-
-<p>This device allows to capture from an audio input device handled
-through OpenAL.
-</p>
-<p>You need to specify the name of the device to capture in the provided
-filename. If the empty string is provided, the device will
-automatically select the default device. You can get the list of the
-supported devices by using the option <var>list_devices</var>.
-</p>
-<a name="Options-3"></a>
-<h3 class="subsection"><a href="ffmpeg.html#toc-Options-3">14.8.1 Options</a></h3>
-
-<dl compact="compact">
-<dt> &lsquo;<samp>channels</samp>&rsquo;</dt>
-<dd><p>Set the number of channels in the captured audio. Only the values
-&lsquo;<samp>1</samp>&rsquo; (monaural) and &lsquo;<samp>2</samp>&rsquo; (stereo) are currently supported.
-Defaults to &lsquo;<samp>2</samp>&rsquo;.
-</p>
-</dd>
-<dt> &lsquo;<samp>sample_size</samp>&rsquo;</dt>
-<dd><p>Set the sample size (in bits) of the captured audio. Only the values
-&lsquo;<samp>8</samp>&rsquo; and &lsquo;<samp>16</samp>&rsquo; are currently supported. Defaults to
-&lsquo;<samp>16</samp>&rsquo;.
-</p>
-</dd>
-<dt> &lsquo;<samp>sample_rate</samp>&rsquo;</dt>
-<dd><p>Set the sample rate (in Hz) of the captured audio.
-Defaults to &lsquo;<samp>44.1k</samp>&rsquo;.
-</p>
-</dd>
-<dt> &lsquo;<samp>list_devices</samp>&rsquo;</dt>
-<dd><p>If set to &lsquo;<samp>true</samp>&rsquo;, print a list of devices and exit.
-Defaults to &lsquo;<samp>false</samp>&rsquo;.
-</p>
-</dd>
-</dl>
-
-<a name="Examples-2"></a>
-<h3 class="subsection"><a href="ffmpeg.html#toc-Examples-2">14.8.2 Examples</a></h3>
-
-<p>Print the list of OpenAL supported devices and exit:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -list_devices true -f openal -i dummy out.ogg
-</pre></td></tr></table>
-
-<p>Capture from the OpenAL device &lsquo;<tt>DR-BT101 via PulseAudio</tt>&rsquo;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out.ogg
-</pre></td></tr></table>
-
-<p>Capture from the default device (note the empty string &rdquo; as filename):
-</p><table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f openal -i '' out.ogg
-</pre></td></tr></table>
-
-<p>Capture from two devices simultaneously, writing to two different files,
-within the same &lsquo;<tt>ffmpeg</tt>&rsquo; command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out1.ogg -f openal -i 'ALSA Default' out2.ogg
-</pre></td></tr></table>
-<p>Note: not all OpenAL implementations support multiple simultaneous capture -
-try the latest OpenAL Soft if the above does not work.
-</p>
-<a name="oss"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-oss">14.9 oss</a></h2>
-
-<p>Open Sound System input device.
-</p>
-<p>The filename to provide to the input device is the device node
-representing the OSS input device, and is usually set to
-&lsquo;<tt>/dev/dsp</tt>&rsquo;.
-</p>
-<p>For example to grab from &lsquo;<tt>/dev/dsp</tt>&rsquo; using &lsquo;<tt>ffmpeg</tt>&rsquo; use the
-command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f oss -i /dev/dsp /tmp/oss.wav
-</pre></td></tr></table>
-
-<p>For more information about OSS see:
-<a href="http://manuals.opensound.com/usersguide/dsp.html">http://manuals.opensound.com/usersguide/dsp.html</a>
-</p>
-<a name="sndio"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-sndio">14.10 sndio</a></h2>
-
-<p>sndio input device.
-</p>
-<p>To enable this input device during configuration you need libsndio
-installed on your system.
-</p>
-<p>The filename to provide to the input device is the device node
-representing the sndio input device, and is usually set to
-&lsquo;<tt>/dev/audio0</tt>&rsquo;.
-</p>
-<p>For example to grab from &lsquo;<tt>/dev/audio0</tt>&rsquo; using &lsquo;<tt>ffmpeg</tt>&rsquo; use the
-command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f sndio -i /dev/audio0 /tmp/oss.wav
-</pre></td></tr></table>
-
-<a name="video4linux-and-video4linux2"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-video4linux-and-video4linux2">14.11 video4linux and video4linux2</a></h2>
-
-<p>Video4Linux and Video4Linux2 input video devices.
-</p>
-<p>The name of the device to grab is a file device node, usually Linux
-systems tend to automatically create such nodes when the device
-(e.g. an USB webcam) is plugged into the system, and has a name of the
-kind &lsquo;<tt>/dev/video<var>N</var></tt>&rsquo;, where <var>N</var> is a number associated to
-the device.
-</p>
-<p>Video4Linux and Video4Linux2 devices only support a limited set of
-<var>width</var>x<var>height</var> sizes and framerates. You can check which are
-supported for example with the command &lsquo;<tt>dov4l</tt>&rsquo; for Video4Linux
-devices and the command &lsquo;<tt>v4l-info</tt>&rsquo; for Video4Linux2 devices.
-</p>
-<p>If the size for the device is set to 0x0, the input device will
-try to autodetect the size to use.
-Only for the video4linux2 device, if the frame rate is set to 0/0 the
-input device will use the frame rate value already set in the driver.
-</p>
-<p>Video4Linux support is deprecated since Linux 2.6.30, and will be
-dropped in later versions.
-</p>
-<p>Follow some usage examples of the video4linux devices with the ff*
-tools.
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># Grab and show the input of a video4linux device, frame rate is set
-# to the default of 25/1.
-ffplay -s 320x240 -f video4linux /dev/video0
-
-# Grab and show the input of a video4linux2 device, autoadjust size.
-ffplay -f video4linux2 /dev/video0
-
-# Grab and record the input of a video4linux2 device, autoadjust size,
-# frame rate value defaults to 0/0 so it is read from the video4linux2
-# driver.
-ffmpeg -f video4linux2 -i /dev/video0 out.mpeg
-</pre></td></tr></table>
-
-<a name="vfwcap"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-vfwcap">14.12 vfwcap</a></h2>
-
-<p>VfW (Video for Windows) capture input device.
-</p>
-<p>The filename passed as input is the capture driver number, ranging from
-0 to 9. You may use &quot;list&quot; as filename to print a list of drivers. Any
-other filename will be interpreted as device number 0.
-</p>
-<a name="x11grab"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-x11grab">14.13 x11grab</a></h2>
-
-<p>X11 video input device.
-</p>
-<p>This device allows to capture a region of an X11 display.
-</p>
-<p>The filename passed as input has the syntax:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">[<var>hostname</var>]:<var>display_number</var>.<var>screen_number</var>[+<var>x_offset</var>,<var>y_offset</var>]
-</pre></td></tr></table>
-
-<p><var>hostname</var>:<var>display_number</var>.<var>screen_number</var> specifies the
-X11 display name of the screen to grab from. <var>hostname</var> can be
-ommitted, and defaults to &quot;localhost&quot;. The environment variable
-<code>DISPLAY</code> contains the default display name.
-</p>
-<p><var>x_offset</var> and <var>y_offset</var> specify the offsets of the grabbed
-area with respect to the top-left border of the X11 screen. They
-default to 0.
-</p>
-<p>Check the X11 documentation (e.g. man X) for more detailed information.
-</p>
-<p>Use the &lsquo;<tt>dpyinfo</tt>&rsquo; program for getting basic information about the
-properties of your X11 display (e.g. grep for &quot;name&quot; or &quot;dimensions&quot;).
-</p>
-<p>For example to grab from &lsquo;<tt>:0.0</tt>&rsquo; using &lsquo;<tt>ffmpeg</tt>&rsquo;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -r 25 -s cif -i :0.0 out.mpg
-
-# Grab at position 10,20.
-ffmpeg -f x11grab -r 25 -s cif -i :0.0+10,20 out.mpg
-</pre></td></tr></table>
-
-<a name="follow_005fmouse-AVOption"></a>
-<h3 class="subsection"><a href="ffmpeg.html#toc-follow_005fmouse-AVOption">14.13.1 <var>follow_mouse</var> AVOption</a></h3>
-
-<p>The syntax is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">-follow_mouse centered|<var>PIXELS</var>
-</pre></td></tr></table>
-
-<p>When it is specified with &quot;centered&quot;, the grabbing region follows the mouse
-pointer and keeps the pointer at the center of region; otherwise, the region
-follows only when the mouse pointer reaches within <var>PIXELS</var> (greater than
-zero) to the edge of region.
-</p>
-<p>For example:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -follow_mouse centered -r 25 -s cif -i :0.0 out.mpg
-
-# Follows only when the mouse pointer reaches within 100 pixels to edge
-ffmpeg -f x11grab -follow_mouse 100 -r 25 -s cif -i :0.0 out.mpg
-</pre></td></tr></table>
-
-<a name="show_005fregion-AVOption"></a>
-<h3 class="subsection"><a href="ffmpeg.html#toc-show_005fregion-AVOption">14.13.2 <var>show_region</var> AVOption</a></h3>
-
-<p>The syntax is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">-show_region 1
-</pre></td></tr></table>
-
-<p>If <var>show_region</var> AVOption is specified with <var>1</var>, then the grabbing
-region will be indicated on screen. With this option, it&rsquo;s easy to know what is
-being grabbed if only a portion of the screen is grabbed.
-</p>
-<p>For example:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -show_region 1 -r 25 -s cif -i :0.0+10,20 out.mpg
-
-# With follow_mouse
-ffmpeg -f x11grab -follow_mouse centered -show_region 1  -r 25 -s cif -i :0.0 out.mpg
-</pre></td></tr></table>
-
-<a name="Output-Devices"></a>
-<h1 class="chapter"><a href="ffmpeg.html#toc-Output-Devices">15. Output Devices</a></h1>
-
-<p>Output devices are configured elements in FFmpeg which allow to write
-multimedia data to an output device attached to your system.
-</p>
-<p>When you configure your FFmpeg build, all the supported output devices
-are enabled by default. You can list all available ones using the
-configure option &quot;&ndash;list-outdevs&quot;.
-</p>
-<p>You can disable all the output devices using the configure option
-&quot;&ndash;disable-outdevs&quot;, and selectively enable an output device using the
-option &quot;&ndash;enable-outdev=<var>OUTDEV</var>&quot;, or you can disable a particular
-input device using the option &quot;&ndash;disable-outdev=<var>OUTDEV</var>&quot;.
-</p>
-<p>The option &quot;-formats&quot; of the ff* tools will display the list of
-enabled output devices (amongst the muxers).
-</p>
-<p>A description of the currently available output devices follows.
-</p>
-<a name="alsa"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-alsa">15.1 alsa</a></h2>
-
-<p>ALSA (Advanced Linux Sound Architecture) output device.
-</p>
-<a name="oss-1"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-oss-1">15.2 oss</a></h2>
-
-<p>OSS (Open Sound System) output device.
-</p>
-<a name="sdl"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-sdl">15.3 sdl</a></h2>
-
-<p>SDL (Simple Directmedia Layer) output device.
-</p>
-<p>This output devices allows to show a video stream in an SDL
-window. Only one SDL window is allowed per application, so you can
-have only one instance of this output device in an application.
-</p>
-<p>To enable this output device you need libsdl installed on your system
-when configuring your build.
-</p>
-<p>For more information about SDL, check:
-<a href="http://www.libsdl.org/">http://www.libsdl.org/</a>
-</p>
-<a name="Options-2"></a>
-<h3 class="subsection"><a href="ffmpeg.html#toc-Options-2">15.3.1 Options</a></h3>
-
-<dl compact="compact">
-<dt> &lsquo;<samp>window_title</samp>&rsquo;</dt>
-<dd><p>Set the SDL window title, if not specified default to the filename
-specified for the output device.
-</p>
-</dd>
-<dt> &lsquo;<samp>icon_title</samp>&rsquo;</dt>
-<dd><p>Set the name of the iconified SDL window, if not specified it is set
-to the same value of <var>window_title</var>.
-</p>
-</dd>
-<dt> &lsquo;<samp>window_size</samp>&rsquo;</dt>
-<dd><p>Set the SDL window size, can be a string of the form
-<var>width</var>x<var>height</var> or a video size abbreviation.
-If not specified it defaults to the size of the input video.
-</p></dd>
-</dl>
-
-<a name="Examples-1"></a>
-<h3 class="subsection"><a href="ffmpeg.html#toc-Examples-1">15.3.2 Examples</a></h3>
-
-<p>The following command shows the &lsquo;<tt>ffmpeg</tt>&rsquo; output is an
-SDL window, forcing its size to the qcif format:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -vcodec rawvideo -pix_fmt yuv420p -window_size qcif -f sdl &quot;SDL output&quot;
-</pre></td></tr></table>
-
-<a name="sndio-1"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-sndio-1">15.4 sndio</a></h2>
-
-<p>sndio audio output device.
-</p>
-<a name="Protocols"></a>
-<h1 class="chapter"><a href="ffmpeg.html#toc-Protocols">16. Protocols</a></h1>
-
-<p>Protocols are configured elements in FFmpeg which allow to access
-resources which require the use of a particular protocol.
-</p>
-<p>When you configure your FFmpeg build, all the supported protocols are
-enabled by default. You can list all available ones using the
-configure option &quot;&ndash;list-protocols&quot;.
-</p>
-<p>You can disable all the protocols using the configure option
-&quot;&ndash;disable-protocols&quot;, and selectively enable a protocol using the
-option &quot;&ndash;enable-protocol=<var>PROTOCOL</var>&quot;, or you can disable a
-particular protocol using the option
-&quot;&ndash;disable-protocol=<var>PROTOCOL</var>&quot;.
-</p>
-<p>The option &quot;-protocols&quot; of the ff* tools will display the list of
-supported protocols.
-</p>
-<p>A description of the currently available protocols follows.
-</p>
-<a name="applehttp"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-applehttp">16.1 applehttp</a></h2>
-
-<p>Read Apple HTTP Live Streaming compliant segmented stream as
-a uniform one. The M3U8 playlists describing the segments can be
-remote HTTP resources or local files, accessed using the standard
-file protocol.
-HTTP is default, specific protocol can be declared by specifying
-&quot;+<var>proto</var>&quot; after the applehttp URI scheme name, where <var>proto</var>
-is either &quot;file&quot; or &quot;http&quot;.
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">applehttp://host/path/to/remote/resource.m3u8
-applehttp+http://host/path/to/remote/resource.m3u8
-applehttp+file://path/to/local/resource.m3u8
-</pre></td></tr></table>
-
-<a name="concat"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-concat">16.2 concat</a></h2>
-
-<p>Physical concatenation protocol.
-</p>
-<p>Allow to read and seek from many resource in sequence as if they were
-a unique resource.
-</p>
-<p>A URL accepted by this protocol has the syntax:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">concat:<var>URL1</var>|<var>URL2</var>|...|<var>URLN</var>
-</pre></td></tr></table>
-
-<p>where <var>URL1</var>, <var>URL2</var>, ..., <var>URLN</var> are the urls of the
-resource to be concatenated, each one possibly specifying a distinct
-protocol.
-</p>
-<p>For example to read a sequence of files &lsquo;<tt>split1.mpeg</tt>&rsquo;,
-&lsquo;<tt>split2.mpeg</tt>&rsquo;, &lsquo;<tt>split3.mpeg</tt>&rsquo; with &lsquo;<tt>ffplay</tt>&rsquo; use the
-command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay concat:split1.mpeg\|split2.mpeg\|split3.mpeg
-</pre></td></tr></table>
-
-<p>Note that you may need to escape the character &quot;|&quot; which is special for
-many shells.
-</p>
-<a name="file"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-file">16.3 file</a></h2>
-
-<p>File access protocol.
-</p>
-<p>Allow to read from or read to a file.
-</p>
-<p>For example to read from a file &lsquo;<tt>input.mpeg</tt>&rsquo; with &lsquo;<tt>ffmpeg</tt>&rsquo;
-use the command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i file:input.mpeg output.mpeg
-</pre></td></tr></table>
-
-<p>The ff* tools default to the file protocol, that is a resource
-specified with the name &quot;FILE.mpeg&quot; is interpreted as the URL
-&quot;file:FILE.mpeg&quot;.
-</p>
-<a name="gopher"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-gopher">16.4 gopher</a></h2>
-
-<p>Gopher protocol.
-</p>
-<a name="http"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-http">16.5 http</a></h2>
-
-<p>HTTP (Hyper Text Transfer Protocol).
-</p>
-<a name="mmst"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-mmst">16.6 mmst</a></h2>
-
-<p>MMS (Microsoft Media Server) protocol over TCP.
-</p>
-<a name="mmsh"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-mmsh">16.7 mmsh</a></h2>
-
-<p>MMS (Microsoft Media Server) protocol over HTTP.
-</p>
-<p>The required syntax is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">mmsh://<var>server</var>[:<var>port</var>][/<var>app</var>][/<var>playpath</var>]
-</pre></td></tr></table>
-
-<a name="md5"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-md5">16.8 md5</a></h2>
-
-<p>MD5 output protocol.
-</p>
-<p>Computes the MD5 hash of the data to be written, and on close writes
-this to the designated output or stdout if none is specified. It can
-be used to test muxers without writing an actual file.
-</p>
-<p>Some examples follow.
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># Write the MD5 hash of the encoded AVI file to the file output.avi.md5.
-ffmpeg -i input.flv -f avi -y md5:output.avi.md5
-
-# Write the MD5 hash of the encoded AVI file to stdout.
-ffmpeg -i input.flv -f avi -y md5:
-</pre></td></tr></table>
-
-<p>Note that some formats (typically MOV) require the output protocol to
-be seekable, so they will fail with the MD5 output protocol.
-</p>
-<a name="pipe"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-pipe">16.9 pipe</a></h2>
-
-<p>UNIX pipe access protocol.
-</p>
-<p>Allow to read and write from UNIX pipes.
-</p>
-<p>The accepted syntax is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">pipe:[<var>number</var>]
-</pre></td></tr></table>
-
-<p><var>number</var> is the number corresponding to the file descriptor of the
-pipe (e.g. 0 for stdin, 1 for stdout, 2 for stderr).  If <var>number</var>
-is not specified, by default the stdout file descriptor will be used
-for writing, stdin for reading.
-</p>
-<p>For example to read from stdin with &lsquo;<tt>ffmpeg</tt>&rsquo;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">cat test.wav | ffmpeg -i pipe:0
-# ...this is the same as...
-cat test.wav | ffmpeg -i pipe:
-</pre></td></tr></table>
-
-<p>For writing to stdout with &lsquo;<tt>ffmpeg</tt>&rsquo;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i test.wav -f avi pipe:1 | cat &gt; test.avi
-# ...this is the same as...
-ffmpeg -i test.wav -f avi pipe: | cat &gt; test.avi
-</pre></td></tr></table>
-
-<p>Note that some formats (typically MOV), require the output protocol to
-be seekable, so they will fail with the pipe output protocol.
-</p>
-<a name="rtmp"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-rtmp">16.10 rtmp</a></h2>
-
-<p>Real-Time Messaging Protocol.
-</p>
-<p>The Real-Time Messaging Protocol (RTMP) is used for streaming multime‐
-dia content across a TCP/IP network.
-</p>
-<p>The required syntax is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">rtmp://<var>server</var>[:<var>port</var>][/<var>app</var>][/<var>playpath</var>]
-</pre></td></tr></table>
-
-<p>The accepted parameters are:
-</p><dl compact="compact">
-<dt> &lsquo;<samp>server</samp>&rsquo;</dt>
-<dd><p>The address of the RTMP server.
-</p>
-</dd>
-<dt> &lsquo;<samp>port</samp>&rsquo;</dt>
-<dd><p>The number of the TCP port to use (by default is 1935).
-</p>
-</dd>
-<dt> &lsquo;<samp>app</samp>&rsquo;</dt>
-<dd><p>It is the name of the application to access. It usually corresponds to
-the path where the application is installed on the RTMP server
-(e.g. &lsquo;<tt>/ondemand/</tt>&rsquo;, &lsquo;<tt>/flash/live/</tt>&rsquo;, etc.).
-</p>
-</dd>
-<dt> &lsquo;<samp>playpath</samp>&rsquo;</dt>
-<dd><p>It is the path or name of the resource to play with reference to the
-application specified in <var>app</var>, may be prefixed by &quot;mp4:&quot;.
-</p>
-</dd>
-</dl>
-
-<p>For example to read with &lsquo;<tt>ffplay</tt>&rsquo; a multimedia resource named
-&quot;sample&quot; from the application &quot;vod&quot; from an RTMP server &quot;myserver&quot;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay rtmp://myserver/vod/sample
-</pre></td></tr></table>
-
-<a name="rtmp_002c-rtmpe_002c-rtmps_002c-rtmpt_002c-rtmpte"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-rtmp_002c-rtmpe_002c-rtmps_002c-rtmpt_002c-rtmpte">16.11 rtmp, rtmpe, rtmps, rtmpt, rtmpte</a></h2>
-
-<p>Real-Time Messaging Protocol and its variants supported through
-librtmp.
-</p>
-<p>Requires the presence of the librtmp headers and library during
-configuration. You need to explicitely configure the build with
-&quot;&ndash;enable-librtmp&quot;. If enabled this will replace the native RTMP
-protocol.
-</p>
-<p>This protocol provides most client functions and a few server
-functions needed to support RTMP, RTMP tunneled in HTTP (RTMPT),
-encrypted RTMP (RTMPE), RTMP over SSL/TLS (RTMPS) and tunneled
-variants of these encrypted types (RTMPTE, RTMPTS).
-</p>
-<p>The required syntax is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>rtmp_proto</var>://<var>server</var>[:<var>port</var>][/<var>app</var>][/<var>playpath</var>] <var>options</var>
-</pre></td></tr></table>
-
-<p>where <var>rtmp_proto</var> is one of the strings &quot;rtmp&quot;, &quot;rtmpt&quot;, &quot;rtmpe&quot;,
-&quot;rtmps&quot;, &quot;rtmpte&quot;, &quot;rtmpts&quot; corresponding to each RTMP variant, and
-<var>server</var>, <var>port</var>, <var>app</var> and <var>playpath</var> have the same
-meaning as specified for the RTMP native protocol.
-<var>options</var> contains a list of space-separated options of the form
-<var>key</var>=<var>val</var>.
-</p>
-<p>See the librtmp manual page (man 3 librtmp) for more information.
-</p>
-<p>For example, to stream a file in real-time to an RTMP server using
-&lsquo;<tt>ffmpeg</tt>&rsquo;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i myfile -f flv rtmp://myserver/live/mystream
-</pre></td></tr></table>
-
-<p>To play the same stream using &lsquo;<tt>ffplay</tt>&rsquo;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay &quot;rtmp://myserver/live/mystream live=1&quot;
-</pre></td></tr></table>
-
-<a name="rtp"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-rtp">16.12 rtp</a></h2>
-
-<p>Real-Time Protocol.
-</p>
-<a name="rtsp"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-rtsp">16.13 rtsp</a></h2>
-
-<p>RTSP is not technically a protocol handler in libavformat, it is a demuxer
-and muxer. The demuxer supports both normal RTSP (with data transferred
-over RTP; this is used by e.g. Apple and Microsoft) and Real-RTSP (with
-data transferred over RDT).
-</p>
-<p>The muxer can be used to send a stream using RTSP ANNOUNCE to a server
-supporting it (currently Darwin Streaming Server and Mischa Spiegelmock&rsquo;s
-<a href="http://github.com/revmischa/rtsp-server">RTSP server</a>).
-</p>
-<p>The required syntax for a RTSP url is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">rtsp://<var>hostname</var>[:<var>port</var>]/<var>path</var>[?<var>options</var>]
-</pre></td></tr></table>
-
-<p><var>options</var> is a <code>&amp;</code>-separated list. The following options
-are supported:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>udp</samp>&rsquo;</dt>
-<dd><p>Use UDP as lower transport protocol.
-</p>
-</dd>
-<dt> &lsquo;<samp>tcp</samp>&rsquo;</dt>
-<dd><p>Use TCP (interleaving within the RTSP control channel) as lower
-transport protocol.
-</p>
-</dd>
-<dt> &lsquo;<samp>multicast</samp>&rsquo;</dt>
-<dd><p>Use UDP multicast as lower transport protocol.
-</p>
-</dd>
-<dt> &lsquo;<samp>http</samp>&rsquo;</dt>
-<dd><p>Use HTTP tunneling as lower transport protocol, which is useful for
-passing proxies.
-</p>
-</dd>
-<dt> &lsquo;<samp>filter_src</samp>&rsquo;</dt>
-<dd><p>Accept packets only from negotiated peer address and port.
-</p></dd>
-</dl>
-
-<p>Multiple lower transport protocols may be specified, in that case they are
-tried one at a time (if the setup of one fails, the next one is tried).
-For the muxer, only the <code>tcp</code> and <code>udp</code> options are supported.
-</p>
-<p>When receiving data over UDP, the demuxer tries to reorder received packets
-(since they may arrive out of order, or packets may get lost totally). In
-order for this to be enabled, a maximum delay must be specified in the
-<code>max_delay</code> field of AVFormatContext.
-</p>
-<p>When watching multi-bitrate Real-RTSP streams with &lsquo;<tt>ffplay</tt>&rsquo;, the
-streams to display can be chosen with <code>-vst</code> <var>n</var> and
-<code>-ast</code> <var>n</var> for video and audio respectively, and can be switched
-on the fly by pressing <code>v</code> and <code>a</code>.
-</p>
-<p>Example command lines:
-</p>
-<p>To watch a stream over UDP, with a max reordering delay of 0.5 seconds:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -max_delay 500000 rtsp://server/video.mp4?udp
-</pre></td></tr></table>
-
-<p>To watch a stream tunneled over HTTP:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffplay rtsp://server/video.mp4?http
-</pre></td></tr></table>
-
-<p>To send a stream in realtime to a RTSP server, for others to watch:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i <var>input</var> -f rtsp -muxdelay 0.1 rtsp://server/live.sdp
-</pre></td></tr></table>
-
-<a name="sap"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-sap">16.14 sap</a></h2>
-
-<p>Session Announcement Protocol (RFC 2974). This is not technically a
-protocol handler in libavformat, it is a muxer and demuxer.
-It is used for signalling of RTP streams, by announcing the SDP for the
-streams regularly on a separate port.
-</p>
-<a name="Muxer"></a>
-<h3 class="subsection"><a href="ffmpeg.html#toc-Muxer">16.14.1 Muxer</a></h3>
-
-<p>The syntax for a SAP url given to the muxer is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">sap://<var>destination</var>[:<var>port</var>][?<var>options</var>]
-</pre></td></tr></table>
-
-<p>The RTP packets are sent to <var>destination</var> on port <var>port</var>,
-or to port 5004 if no port is specified.
-<var>options</var> is a <code>&amp;</code>-separated list. The following options
-are supported:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>announce_addr=<var>address</var></samp>&rsquo;</dt>
-<dd><p>Specify the destination IP address for sending the announcements to.
-If omitted, the announcements are sent to the commonly used SAP
-announcement multicast address 224.2.127.254 (sap.mcast.net), or
-ff0e::2:7ffe if <var>destination</var> is an IPv6 address.
-</p>
-</dd>
-<dt> &lsquo;<samp>announce_port=<var>port</var></samp>&rsquo;</dt>
-<dd><p>Specify the port to send the announcements on, defaults to
-9875 if not specified.
-</p>
-</dd>
-<dt> &lsquo;<samp>ttl=<var>ttl</var></samp>&rsquo;</dt>
-<dd><p>Specify the time to live value for the announcements and RTP packets,
-defaults to 255.
-</p>
-</dd>
-<dt> &lsquo;<samp>same_port=<var>0|1</var></samp>&rsquo;</dt>
-<dd><p>If set to 1, send all RTP streams on the same port pair. If zero (the
-default), all streams are sent on unique ports, with each stream on a
-port 2 numbers higher than the previous.
-VLC/Live555 requires this to be set to 1, to be able to receive the stream.
-The RTP stack in libavformat for receiving requires all streams to be sent
-on unique ports.
-</p></dd>
-</dl>
-
-<p>Example command lines follow.
-</p>
-<p>To broadcast a stream on the local subnet, for watching in VLC:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i <var>input</var> -f sap sap://224.0.0.255?same_port=1
-</pre></td></tr></table>
-
-<p>Similarly, for watching in ffplay:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i <var>input</var> -f sap sap://224.0.0.255
-</pre></td></tr></table>
-
-<p>And for watching in ffplay, over IPv6:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i <var>input</var> -f sap sap://[ff0e::1:2:3:4]
-</pre></td></tr></table>
-
-<a name="Demuxer"></a>
-<h3 class="subsection"><a href="ffmpeg.html#toc-Demuxer">16.14.2 Demuxer</a></h3>
-
-<p>The syntax for a SAP url given to the demuxer is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">sap://[<var>address</var>][:<var>port</var>]
-</pre></td></tr></table>
-
-<p><var>address</var> is the multicast address to listen for announcements on,
-if omitted, the default 224.2.127.254 (sap.mcast.net) is used. <var>port</var>
-is the port that is listened on, 9875 if omitted.
-</p>
-<p>The demuxers listens for announcements on the given address and port.
-Once an announcement is received, it tries to receive that particular stream.
-</p>
-<p>Example command lines follow.
-</p>
-<p>To play back the first stream announced on the normal SAP multicast address:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffplay sap://
-</pre></td></tr></table>
-
-<p>To play back the first stream announced on one the default IPv6 SAP multicast address:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffplay sap://[ff0e::2:7ffe]
-</pre></td></tr></table>
-
-<a name="tcp"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-tcp">16.15 tcp</a></h2>
-
-<p>Trasmission Control Protocol.
-</p>
-<p>The required syntax for a TCP url is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">tcp://<var>hostname</var>:<var>port</var>[?<var>options</var>]
-</pre></td></tr></table>
-
-<dl compact="compact">
-<dt> &lsquo;<samp>listen</samp>&rsquo;</dt>
-<dd><p>Listen for an incoming connection
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i <var>input</var> -f <var>format</var> tcp://<var>hostname</var>:<var>port</var>?listen
-ffplay tcp://<var>hostname</var>:<var>port</var>
-</pre></td></tr></table>
-
-</dd>
-</dl>
-
-<a name="udp"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-udp">16.16 udp</a></h2>
-
-<p>User Datagram Protocol.
-</p>
-<p>The required syntax for a UDP url is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">udp://<var>hostname</var>:<var>port</var>[?<var>options</var>]
-</pre></td></tr></table>
-
-<p><var>options</var> contains a list of &amp;-seperated options of the form <var>key</var>=<var>val</var>.
-Follow the list of supported options.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>buffer_size=<var>size</var></samp>&rsquo;</dt>
-<dd><p>set the UDP buffer size in bytes
-</p>
-</dd>
-<dt> &lsquo;<samp>localport=<var>port</var></samp>&rsquo;</dt>
-<dd><p>override the local UDP port to bind with
-</p>
-</dd>
-<dt> &lsquo;<samp>pkt_size=<var>size</var></samp>&rsquo;</dt>
-<dd><p>set the size in bytes of UDP packets
-</p>
-</dd>
-<dt> &lsquo;<samp>reuse=<var>1|0</var></samp>&rsquo;</dt>
-<dd><p>explicitly allow or disallow reusing UDP sockets
-</p>
-</dd>
-<dt> &lsquo;<samp>ttl=<var>ttl</var></samp>&rsquo;</dt>
-<dd><p>set the time to live value (for multicast only)
-</p>
-</dd>
-<dt> &lsquo;<samp>connect=<var>1|0</var></samp>&rsquo;</dt>
-<dd><p>Initialize the UDP socket with <code>connect()</code>. In this case, the
-destination address can&rsquo;t be changed with ff_udp_set_remote_url later.
-If the destination address isn&rsquo;t known at the start, this option can
-be specified in ff_udp_set_remote_url, too.
-This allows finding out the source address for the packets with getsockname,
-and makes writes return with AVERROR(ECONNREFUSED) if &quot;destination
-unreachable&quot; is received.
-For receiving, this gives the benefit of only receiving packets from
-the specified peer address/port.
-</p></dd>
-</dl>
-
-<p>Some usage examples of the udp protocol with &lsquo;<tt>ffmpeg</tt>&rsquo; follow.
-</p>
-<p>To stream over UDP to a remote endpoint:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i <var>input</var> -f <var>format</var> udp://<var>hostname</var>:<var>port</var>
-</pre></td></tr></table>
-
-<p>To stream in mpegts format over UDP using 188 sized UDP packets, using a large input buffer:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i <var>input</var> -f mpegts udp://<var>hostname</var>:<var>port</var>?pkt_size=188&amp;buffer_size=65535
-</pre></td></tr></table>
-
-<p>To receive over UDP from a remote endpoint:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i udp://[<var>multicast-address</var>]:<var>port</var>
-</pre></td></tr></table>
-
-<a name="Bitstream-Filters"></a>
-<h1 class="chapter"><a href="ffmpeg.html#toc-Bitstream-Filters">17. Bitstream Filters</a></h1>
-
-<p>When you configure your FFmpeg build, all the supported bitstream
-filters are enabled by default. You can list all available ones using
-the configure option <code>--list-bsfs</code>.
-</p>
-<p>You can disable all the bitstream filters using the configure option
-<code>--disable-bsfs</code>, and selectively enable any bitstream filter using
-the option <code>--enable-bsf=BSF</code>, or you can disable a particular
-bitstream filter using the option <code>--disable-bsf=BSF</code>.
-</p>
-<p>The option <code>-bsfs</code> of the ff* tools will display the list of
-all the supported bitstream filters included in your build.
-</p>
-<p>Below is a description of the currently available bitstream filters.
-</p>
-<a name="aac_005fadtstoasc"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-aac_005fadtstoasc">17.1 aac_adtstoasc</a></h2>
-
-<a name="chomp"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-chomp">17.2 chomp</a></h2>
-
-<a name="dump_005fextradata"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-dump_005fextradata">17.3 dump_extradata</a></h2>
-
-<a name="h264_005fmp4toannexb"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-h264_005fmp4toannexb">17.4 h264_mp4toannexb</a></h2>
-
-<a name="imx_005fdump_005fheader"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-imx_005fdump_005fheader">17.5 imx_dump_header</a></h2>
-
-<a name="mjpeg2jpeg"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-mjpeg2jpeg">17.6 mjpeg2jpeg</a></h2>
-
-<p>Convert MJPEG/AVI1 packets to full JPEG/JFIF packets.
-</p>
-<p>MJPEG is a video codec wherein each video frame is essentially a
-JPEG image. The individual frames can be extracted without loss,
-e.g. by
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i ../some_mjpeg.avi -vcodec copy frames_%d.jpg
-</pre></td></tr></table>
-
-<p>Unfortunately, these chunks are incomplete JPEG images, because
-they lack the DHT segment required for decoding. Quoting from
-<a href="http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml">http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml</a>:
-</p>
-<p>Avery Lee, writing in the rec.video.desktop newsgroup in 2001,
-commented that &quot;MJPEG, or at least the MJPEG in AVIs having the
-MJPG fourcc, is restricted JPEG with a fixed &ndash; and *omitted* &ndash;
-Huffman table. The JPEG must be YCbCr colorspace, it must be 4:2:2,
-and it must use basic Huffman encoding, not arithmetic or
-progressive. . . . You can indeed extract the MJPEG frames and
-decode them with a regular JPEG decoder, but you have to prepend
-the DHT segment to them, or else the decoder won&rsquo;t have any idea
-how to decompress the data. The exact table necessary is given in
-the OpenDML spec.&quot;
-</p>
-<p>This bitstream filter patches the header of frames extracted from an MJPEG
-stream (carrying the AVI1 header ID and lacking a DHT segment) to
-produce fully qualified JPEG images.
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i mjpeg-movie.avi -vcodec copy -vbsf mjpeg2jpeg frame_%d.jpg
-exiftran -i -9 frame*.jpg
-ffmpeg -i frame_%d.jpg -vcodec copy rotated.avi
-</pre></td></tr></table>
-
-<a name="mjpega_005fdump_005fheader"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-mjpega_005fdump_005fheader">17.7 mjpega_dump_header</a></h2>
-
-<a name="movsub"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-movsub">17.8 movsub</a></h2>
-
-<a name="mp3_005fheader_005fcompress"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-mp3_005fheader_005fcompress">17.9 mp3_header_compress</a></h2>
-
-<a name="mp3_005fheader_005fdecompress"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-mp3_005fheader_005fdecompress">17.10 mp3_header_decompress</a></h2>
-
-<a name="noise"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-noise">17.11 noise</a></h2>
-
-<a name="remove_005fextradata"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-remove_005fextradata">17.12 remove_extradata</a></h2>
-
-<a name="Filtergraph-description"></a>
-<h1 class="chapter"><a href="ffmpeg.html#toc-Filtergraph-description">18. Filtergraph description</a></h1>
-
-<p>A filtergraph is a directed graph of connected filters. It can contain
-cycles, and there can be multiple links between a pair of
-filters. Each link has one input pad on one side connecting it to one
-filter from which it takes its input, and one output pad on the other
-side connecting it to the one filter accepting its output.
-</p>
-<p>Each filter in a filtergraph is an instance of a filter class
-registered in the application, which defines the features and the
-number of input and output pads of the filter.
-</p>
-<p>A filter with no input pads is called a &quot;source&quot;, a filter with no
-output pads is called a &quot;sink&quot;.
-</p>
-<a name="Filtergraph-syntax"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-Filtergraph-syntax">18.1 Filtergraph syntax</a></h2>
-
-<p>A filtergraph can be represented using a textual representation, which
-is recognized by the <code>-vf</code> and <code>-af</code> options of the ff*
-tools, and by the <code>avfilter_graph_parse()</code> function defined in
-&lsquo;<tt>libavfilter/avfiltergraph.h</tt>&rsquo;.
-</p>
-<p>A filterchain consists of a sequence of connected filters, each one
-connected to the previous one in the sequence. A filterchain is
-represented by a list of &quot;,&quot;-separated filter descriptions.
-</p>
-<p>A filtergraph consists of a sequence of filterchains. A sequence of
-filterchains is represented by a list of &quot;;&quot;-separated filterchain
-descriptions.
-</p>
-<p>A filter is represented by a string of the form:
-[<var>in_link_1</var>]...[<var>in_link_N</var>]<var>filter_name</var>=<var>arguments</var>[<var>out_link_1</var>]...[<var>out_link_M</var>]
-</p>
-<p><var>filter_name</var> is the name of the filter class of which the
-described filter is an instance of, and has to be the name of one of
-the filter classes registered in the program.
-The name of the filter class is optionally followed by a string
-&quot;=<var>arguments</var>&quot;.
-</p>
-<p><var>arguments</var> is a string which contains the parameters used to
-initialize the filter instance, and are described in the filter
-descriptions below.
-</p>
-<p>The list of arguments can be quoted using the character &quot;&rsquo;&quot; as initial
-and ending mark, and the character &rsquo;\&rsquo; for escaping the characters
-within the quoted text; otherwise the argument string is considered
-terminated when the next special character (belonging to the set
-&quot;[]=;,&quot;) is encountered.
-</p>
-<p>The name and arguments of the filter are optionally preceded and
-followed by a list of link labels.
-A link label allows to name a link and associate it to a filter output
-or input pad. The preceding labels <var>in_link_1</var>
-... <var>in_link_N</var>, are associated to the filter input pads,
-the following labels <var>out_link_1</var> ... <var>out_link_M</var>, are
-associated to the output pads.
-</p>
-<p>When two link labels with the same name are found in the
-filtergraph, a link between the corresponding input and output pad is
-created.
-</p>
-<p>If an output pad is not labelled, it is linked by default to the first
-unlabelled input pad of the next filter in the filterchain.
-For example in the filterchain:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">nullsrc, split[L1], [L2]overlay, nullsink
-</pre></td></tr></table>
-<p>the split filter instance has two output pads, and the overlay filter
-instance two input pads. The first output pad of split is labelled
-&quot;L1&quot;, the first input pad of overlay is labelled &quot;L2&quot;, and the second
-output pad of split is linked to the second input pad of overlay,
-which are both unlabelled.
-</p>
-<p>In a complete filterchain all the unlabelled filter input and output
-pads must be connected. A filtergraph is considered valid if all the
-filter input and output pads of all the filterchains are connected.
-</p>
-<p>Follows a BNF description for the filtergraph syntax:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>NAME</var>             ::= sequence of alphanumeric characters and '_'
-<var>LINKLABEL</var>        ::= &quot;[&quot; <var>NAME</var> &quot;]&quot;
-<var>LINKLABELS</var>       ::= <var>LINKLABEL</var> [<var>LINKLABELS</var>]
-<var>FILTER_ARGUMENTS</var> ::= sequence of chars (eventually quoted)
-<var>FILTER</var>           ::= [<var>LINKNAMES</var>] <var>NAME</var> [&quot;=&quot; <var>ARGUMENTS</var>] [<var>LINKNAMES</var>]
-<var>FILTERCHAIN</var>      ::= <var>FILTER</var> [,<var>FILTERCHAIN</var>]
-<var>FILTERGRAPH</var>      ::= <var>FILTERCHAIN</var> [;<var>FILTERGRAPH</var>]
-</pre></td></tr></table>
-
-
-<a name="Audio-Filters"></a>
-<h1 class="chapter"><a href="ffmpeg.html#toc-Audio-Filters">19. Audio Filters</a></h1>
-
-<p>When you configure your FFmpeg build, you can disable any of the
-existing filters using &ndash;disable-filters.
-The configure output will show the audio filters included in your
-build.
-</p>
-<p>Below is a description of the currently available audio filters.
-</p>
-<a name="aformat"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-aformat">19.1 aformat</a></h2>
-
-<p>Convert the input audio to one of the specified formats. The framework will
-negotiate the most appropriate format to minimize conversions.
-</p>
-<p>The filter accepts three lists of formats, separated by &quot;:&quot;, in the form:
-&quot;<var>sample_formats</var>:<var>channel_layouts</var>:<var>packing_formats</var>&quot;.
-</p>
-<p>Elements in each list are separated by &quot;,&quot; which has to be escaped in the
-filtergraph specification.
-</p>
-<p>The special parameter &quot;all&quot;, in place of a list of elements, signifies all
-supported formats.
-</p>
-<p>Some examples follow:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">aformat=u8\\,s16:mono:packed
-
-aformat=s16:mono\\,stereo:all
-</pre></td></tr></table>
-
-<a name="anull"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-anull">19.2 anull</a></h2>
-
-<p>Pass the audio source unchanged to the output.
-</p>
-<a name="aresample"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-aresample">19.3 aresample</a></h2>
-
-<p>Resample the input audio to the specified sample rate.
-</p>
-<p>The filter accepts exactly one parameter, the output sample rate. If not
-specified then the filter will automatically convert between its input
-and output sample rates.
-</p>
-<p>For example, to resample the input audio to 44100Hz:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">aresample=44100
-</pre></td></tr></table>
-
-<a name="ashowinfo"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-ashowinfo">19.4 ashowinfo</a></h2>
-
-<p>Show a line containing various information for each input audio frame.
-The input audio is not modified.
-</p>
-<p>The shown line contains a sequence of key/value pairs of the form
-<var>key</var>:<var>value</var>.
-</p>
-<p>A description of each shown parameter follows:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
-<dd><p>sequential number of the input frame, starting from 0
-</p>
-</dd>
-<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
-<dd><p>presentation TimeStamp of the input frame, expressed as a number of
-time base units. The time base unit depends on the filter input pad, and
-is usually 1/<var>sample_rate</var>.
-</p>
-</dd>
-<dt> &lsquo;<samp>pts_time</samp>&rsquo;</dt>
-<dd><p>presentation TimeStamp of the input frame, expressed as a number of
-seconds
-</p>
-</dd>
-<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
-<dd><p>position of the frame in the input stream, -1 if this information in
-unavailable and/or meanigless (for example in case of synthetic audio)
-</p>
-</dd>
-<dt> &lsquo;<samp>fmt</samp>&rsquo;</dt>
-<dd><p>sample format name
-</p>
-</dd>
-<dt> &lsquo;<samp>chlayout</samp>&rsquo;</dt>
-<dd><p>channel layout description
-</p>
-</dd>
-<dt> &lsquo;<samp>nb_samples</samp>&rsquo;</dt>
-<dd><p>number of samples (per each channel) contained in the filtered frame
-</p>
-</dd>
-<dt> &lsquo;<samp>rate</samp>&rsquo;</dt>
-<dd><p>sample rate for the audio frame
-</p>
-</dd>
-<dt> &lsquo;<samp>planar</samp>&rsquo;</dt>
-<dd><p>if the packing format is planar, 0 if packed
-</p>
-</dd>
-<dt> &lsquo;<samp>checksum</samp>&rsquo;</dt>
-<dd><p>Adler-32 checksum of all the planes of the input frame
-</p>
-</dd>
-<dt> &lsquo;<samp>plane_checksum</samp>&rsquo;</dt>
-<dd><p>Adler-32 checksum for each input frame plane, expressed in the form
-&quot;[<var>c0</var> <var>c1</var> <var>c2</var> <var>c3</var> <var>c4</var> <var>c5</var> <var>c6</var> <var>c7</var>]&quot;
-</p></dd>
-</dl>
-
-
-<a name="Audio-Sources"></a>
-<h1 class="chapter"><a href="ffmpeg.html#toc-Audio-Sources">20. Audio Sources</a></h1>
-
-<p>Below is a description of the currently available audio sources.
-</p>
-<a name="abuffer"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-abuffer">20.1 abuffer</a></h2>
-
-<p>Buffer audio frames, and make them available to the filter chain.
-</p>
-<p>This source is mainly intended for a programmatic use, in particular
-through the interface defined in &lsquo;<tt>libavfilter/asrc_abuffer.h</tt>&rsquo;.
-</p>
-<p>It accepts the following mandatory parameters:
-<var>sample_rate</var>:<var>sample_fmt</var>:<var>channel_layout</var>:<var>packing</var>
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>sample_rate</samp>&rsquo;</dt>
-<dd><p>The sample rate of the incoming audio buffers.
-</p>
-</dd>
-<dt> &lsquo;<samp>sample_fmt</samp>&rsquo;</dt>
-<dd><p>The sample format of the incoming audio buffers.
-Either a sample format name or its corresponging integer representation from
-the enum AVSampleFormat in &lsquo;<tt>libavutil/samplefmt.h</tt>&rsquo;
-</p>
-</dd>
-<dt> &lsquo;<samp>channel_layout</samp>&rsquo;</dt>
-<dd><p>The channel layout of the incoming audio buffers.
-Either a channel layout name from channel_layout_map in
-&lsquo;<tt>libavutil/audioconvert.c</tt>&rsquo; or its corresponding integer representation
-from the AV_CH_LAYOUT_* macros in &lsquo;<tt>libavutil/audioconvert.h</tt>&rsquo;
-</p>
-</dd>
-<dt> &lsquo;<samp>packing</samp>&rsquo;</dt>
-<dd><p>Either &quot;packed&quot; or &quot;planar&quot;, or their integer representation: 0 or 1
-respectively.
-</p>
-</dd>
-</dl>
-
-<p>For example:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">abuffer=44100:s16:stereo:planar
-</pre></td></tr></table>
-
-<p>will instruct the source to accept planar 16bit signed stereo at 44100Hz.
-Since the sample format with name &quot;s16&quot; corresponds to the number
-1 and the &quot;stereo&quot; channel layout corresponds to the value 3, this is
-equivalent to:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">abuffer=44100:1:3:1
-</pre></td></tr></table>
-
-<a name="amovie"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-amovie">20.2 amovie</a></h2>
-
-<p>Read an audio stream from a movie container.
-</p>
-<p>It accepts the syntax: <var>movie_name</var>[:<var>options</var>] where
-<var>movie_name</var> is the name of the resource to read (not necessarily
-a file but also a device or a stream accessed through some protocol),
-and <var>options</var> is an optional sequence of <var>key</var>=<var>value</var>
-pairs, separated by &quot;:&quot;.
-</p>
-<p>The description of the accepted options follows.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>format_name, f</samp>&rsquo;</dt>
-<dd><p>Specify the format assumed for the movie to read, and can be either
-the name of a container or an input device. If not specified the
-format is guessed from <var>movie_name</var> or by probing.
-</p>
-</dd>
-<dt> &lsquo;<samp>seek_point, sp</samp>&rsquo;</dt>
-<dd><p>Specify the seek point in seconds, the frames will be output
-starting from this seek point, the parameter is evaluated with
-<code>av_strtod</code> so the numerical value may be suffixed by an IS
-postfix. Default value is &quot;0&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>stream_index, si</samp>&rsquo;</dt>
-<dd><p>Specify the index of the audio stream to read. If the value is -1,
-the best suited audio stream will be automatically selected. Default
-value is &quot;-1&quot;.
-</p>
-</dd>
-</dl>
-
-<a name="anullsrc"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-anullsrc">20.3 anullsrc</a></h2>
-
-<p>Null audio source, never return audio frames. It is mainly useful as a
-template and to be employed in analysis / debugging tools.
-</p>
-<p>It accepts as optional parameter a string of the form
-<var>sample_rate</var>:<var>channel_layout</var>.
-</p>
-<p><var>sample_rate</var> specify the sample rate, and defaults to 44100.
-</p>
-<p><var>channel_layout</var> specify the channel layout, and can be either an
-integer or a string representing a channel layout. The default value
-of <var>channel_layout</var> is 3, which corresponds to CH_LAYOUT_STEREO.
-</p>
-<p>Check the channel_layout_map definition in
-&lsquo;<tt>libavcodec/audioconvert.c</tt>&rsquo; for the mapping between strings and
-channel layout values.
-</p>
-<p>Follow some examples:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">#  set the sample rate to 48000 Hz and the channel layout to CH_LAYOUT_MONO.
-anullsrc=48000:4
-
-# same as
-anullsrc=48000:mono
-</pre></td></tr></table>
-
-
-<a name="Audio-Sinks"></a>
-<h1 class="chapter"><a href="ffmpeg.html#toc-Audio-Sinks">21. Audio Sinks</a></h1>
-
-<p>Below is a description of the currently available audio sinks.
-</p>
-<a name="abuffersink"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-abuffersink">21.1 abuffersink</a></h2>
-
-<p>Buffer audio frames, and make them available to the end of filter chain.
-</p>
-<p>This sink is mainly intended for programmatic use, in particular
-through the interface defined in &lsquo;<tt>libavfilter/asink_abuffer.h</tt>&rsquo;.
-</p>
-<p>It requires a pointer to a ABufferSinkContext structure, which defines the
-incoming buffers&rsquo; format, to be passed as the opaque parameter to
-<code>avfilter_init_filter</code> for initialization.
-</p>
-<a name="anullsink"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-anullsink">21.2 anullsink</a></h2>
-
-<p>Null audio sink, do absolutely nothing with the input audio. It is
-mainly useful as a template and to be employed in analysis / debugging
-tools.
-</p>
-
-<a name="Video-Filters"></a>
-<h1 class="chapter"><a href="ffmpeg.html#toc-Video-Filters">22. Video Filters</a></h1>
-
-<p>When you configure your FFmpeg build, you can disable any of the
-existing filters using &ndash;disable-filters.
-The configure output will show the video filters included in your
-build.
-</p>
-<p>Below is a description of the currently available video filters.
-</p>
-<a name="blackframe"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-blackframe">22.1 blackframe</a></h2>
-
-<p>Detect frames that are (almost) completely black. Can be useful to
-detect chapter transitions or commercials. Output lines consist of
-the frame number of the detected frame, the percentage of blackness,
-the position in the file if known or -1 and the timestamp in seconds.
-</p>
-<p>In order to display the output lines, you need to set the loglevel at
-least to the AV_LOG_INFO value.
-</p>
-<p>The filter accepts the syntax:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">blackframe[=<var>amount</var>:[<var>threshold</var>]]
-</pre></td></tr></table>
-
-<p><var>amount</var> is the percentage of the pixels that have to be below the
-threshold, and defaults to 98.
-</p>
-<p><var>threshold</var> is the threshold below which a pixel value is
-considered black, and defaults to 32.
-</p>
-<a name="boxblur"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-boxblur">22.2 boxblur</a></h2>
-
-<p>Apply boxblur algorithm to the input video.
-</p>
-<p>This filter accepts the parameters:
-<var>luma_power</var>:<var>luma_radius</var>:<var>chroma_radius</var>:<var>chroma_power</var>:<var>alpha_radius</var>:<var>alpha_power</var>
-</p>
-<p>Chroma and alpha parameters are optional, if not specified they default
-to the corresponding values set for <var>luma_radius</var> and
-<var>luma_power</var>.
-</p>
-<p><var>luma_radius</var>, <var>chroma_radius</var>, and <var>alpha_radius</var> represent
-the radius in pixels of the box used for blurring the corresponding
-input plane. They are expressions, and can contain the following
-constants:
-</p><dl compact="compact">
-<dt> &lsquo;<samp>w, h</samp>&rsquo;</dt>
-<dd><p>the input width and heigth in pixels
-</p>
-</dd>
-<dt> &lsquo;<samp>cw, ch</samp>&rsquo;</dt>
-<dd><p>the input chroma image width and height in pixels
-</p>
-</dd>
-<dt> &lsquo;<samp>hsub, vsub</samp>&rsquo;</dt>
-<dd><p>horizontal and vertical chroma subsample values. For example for the
-pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
-</p></dd>
-</dl>
-
-<p>The radius must be a non-negative number, and must be not greater than
-the value of the expression <code>min(w,h)/2</code> for the luma and alpha planes,
-and of <code>min(cw,ch)/2</code> for the chroma planes.
-</p>
-<p><var>luma_power</var>, <var>chroma_power</var>, and <var>alpha_power</var> represent
-how many times the boxblur filter is applied to the corresponding
-plane.
-</p>
-<p>Some examples follow:
-</p>
-<ul>
-<li>
-Apply a boxblur filter with luma, chroma, and alpha radius
-set to 2:
-<table><tr><td>&nbsp;</td><td><pre class="example">boxblur=2:1
-</pre></td></tr></table>
-
-</li><li>
-Set luma radius to 2, alpha and chroma radius to 0
-<table><tr><td>&nbsp;</td><td><pre class="example">boxblur=2:1:0:0:0:0
-</pre></td></tr></table>
-
-</li><li>
-Set luma and chroma radius to a fraction of the video dimension
-<table><tr><td>&nbsp;</td><td><pre class="example">boxblur=min(h\,w)/10:1:min(cw\,ch)/10:1
-</pre></td></tr></table>
-
-</li></ul>
-
-<a name="copy"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-copy">22.3 copy</a></h2>
-
-<p>Copy the input source unchanged to the output. Mainly useful for
-testing purposes.
-</p>
-<a name="crop"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-crop">22.4 crop</a></h2>
-
-<p>Crop the input video to <var>out_w</var>:<var>out_h</var>:<var>x</var>:<var>y</var>.
-</p>
-<p>The parameters are expressions containing the following constants:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>E, PI, PHI</samp>&rsquo;</dt>
-<dd><p>the corresponding mathematical approximated values for e
-(euler number), pi (greek PI), PHI (golden ratio)
-</p>
-</dd>
-<dt> &lsquo;<samp>x, y</samp>&rsquo;</dt>
-<dd><p>the computed values for <var>x</var> and <var>y</var>. They are evaluated for
-each new frame.
-</p>
-</dd>
-<dt> &lsquo;<samp>in_w, in_h</samp>&rsquo;</dt>
-<dd><p>the input width and heigth
-</p>
-</dd>
-<dt> &lsquo;<samp>iw, ih</samp>&rsquo;</dt>
-<dd><p>same as <var>in_w</var> and <var>in_h</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>out_w, out_h</samp>&rsquo;</dt>
-<dd><p>the output (cropped) width and heigth
-</p>
-</dd>
-<dt> &lsquo;<samp>ow, oh</samp>&rsquo;</dt>
-<dd><p>same as <var>out_w</var> and <var>out_h</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
-<dd><p>same as <var>iw</var> / <var>ih</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
-<dd><p>input sample aspect ratio
-</p>
-</dd>
-<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
-<dd><p>input display aspect ratio, it is the same as (<var>iw</var> / <var>ih</var>) * <var>sar</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>hsub, vsub</samp>&rsquo;</dt>
-<dd><p>horizontal and vertical chroma subsample values. For example for the
-pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
-</p>
-</dd>
-<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
-<dd><p>the number of input frame, starting from 0
-</p>
-</dd>
-<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
-<dd><p>the position in the file of the input frame, NAN if unknown
-</p>
-</dd>
-<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
-<dd><p>timestamp expressed in seconds, NAN if the input timestamp is unknown
-</p>
-</dd>
-</dl>
-
-<p>The <var>out_w</var> and <var>out_h</var> parameters specify the expressions for
-the width and height of the output (cropped) video. They are
-evaluated just at the configuration of the filter.
-</p>
-<p>The default value of <var>out_w</var> is &quot;in_w&quot;, and the default value of
-<var>out_h</var> is &quot;in_h&quot;.
-</p>
-<p>The expression for <var>out_w</var> may depend on the value of <var>out_h</var>,
-and the expression for <var>out_h</var> may depend on <var>out_w</var>, but they
-cannot depend on <var>x</var> and <var>y</var>, as <var>x</var> and <var>y</var> are
-evaluated after <var>out_w</var> and <var>out_h</var>.
-</p>
-<p>The <var>x</var> and <var>y</var> parameters specify the expressions for the
-position of the top-left corner of the output (non-cropped) area. They
-are evaluated for each frame. If the evaluated value is not valid, it
-is approximated to the nearest valid value.
-</p>
-<p>The default value of <var>x</var> is &quot;(in_w-out_w)/2&quot;, and the default
-value for <var>y</var> is &quot;(in_h-out_h)/2&quot;, which set the cropped area at
-the center of the input image.
-</p>
-<p>The expression for <var>x</var> may depend on <var>y</var>, and the expression
-for <var>y</var> may depend on <var>x</var>.
-</p>
-<p>Follow some examples:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># crop the central input area with size 100x100
-crop=100:100
-
-# crop the central input area with size 2/3 of the input video
-&quot;crop=2/3*in_w:2/3*in_h&quot;
-
-# crop the input video central square
-crop=in_h
-
-# delimit the rectangle with the top-left corner placed at position
-# 100:100 and the right-bottom corner corresponding to the right-bottom
-# corner of the input image.
-crop=in_w-100:in_h-100:100:100
-
-# crop 10 pixels from the left and right borders, and 20 pixels from
-# the top and bottom borders
-&quot;crop=in_w-2*10:in_h-2*20&quot;
-
-# keep only the bottom right quarter of the input image
-&quot;crop=in_w/2:in_h/2:in_w/2:in_h/2&quot;
-
-# crop height for getting Greek harmony
-&quot;crop=in_w:1/PHI*in_w&quot;
-
-# trembling effect
-&quot;crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(n/10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(n/7)&quot;
-
-# erratic camera effect depending on timestamp
-&quot;crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(t*10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(t*13)&quot;
-
-# set x depending on the value of y
-&quot;crop=in_w/2:in_h/2:y:10+10*sin(n/10)&quot;
-</pre></td></tr></table>
-
-<a name="cropdetect"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-cropdetect">22.5 cropdetect</a></h2>
-
-<p>Auto-detect crop size.
-</p>
-<p>Calculate necessary cropping parameters and prints the recommended
-parameters through the logging system. The detected dimensions
-correspond to the non-black area of the input video.
-</p>
-<p>It accepts the syntax:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">cropdetect[=<var>limit</var>[:<var>round</var>[:<var>reset</var>]]]
-</pre></td></tr></table>
-
-<dl compact="compact">
-<dt> &lsquo;<samp>limit</samp>&rsquo;</dt>
-<dd><p>Threshold, which can be optionally specified from nothing (0) to
-everything (255), defaults to 24.
-</p>
-</dd>
-<dt> &lsquo;<samp>round</samp>&rsquo;</dt>
-<dd><p>Value which the width/height should be divisible by, defaults to
-16. The offset is automatically adjusted to center the video. Use 2 to
-get only even dimensions (needed for 4:2:2 video). 16 is best when
-encoding to most video codecs.
-</p>
-</dd>
-<dt> &lsquo;<samp>reset</samp>&rsquo;</dt>
-<dd><p>Counter that determines after how many frames cropdetect will reset
-the previously detected largest video area and start over to detect
-the current optimal crop area. Defaults to 0.
-</p>
-<p>This can be useful when channel logos distort the video area. 0
-indicates never reset and return the largest area encountered during
-playback.
-</p></dd>
-</dl>
-
-<a name="delogo"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-delogo">22.6 delogo</a></h2>
-
-<p>Suppress a TV station logo by a simple interpolation of the surrounding
-pixels. Just set a rectangle covering the logo and watch it disappear
-(and sometimes something even uglier appear - your mileage may vary).
-</p>
-<p>The filter accepts parameters as a string of the form
-&quot;<var>x</var>:<var>y</var>:<var>w</var>:<var>h</var>:<var>band</var>&quot;, or as a list of
-<var>key</var>=<var>value</var> pairs, separated by &quot;:&quot;.
-</p>
-<p>The description of the accepted parameters follows.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>x, y</samp>&rsquo;</dt>
-<dd><p>Specify the top left corner coordinates of the logo. They must be
-specified.
-</p>
-</dd>
-<dt> &lsquo;<samp>w, h</samp>&rsquo;</dt>
-<dd><p>Specify the width and height of the logo to clear. They must be
-specified.
-</p>
-</dd>
-<dt> &lsquo;<samp>band, t</samp>&rsquo;</dt>
-<dd><p>Specify the thickness of the fuzzy edge of the rectangle (added to
-<var>w</var> and <var>h</var>). The default value is 4.
-</p>
-</dd>
-<dt> &lsquo;<samp>show</samp>&rsquo;</dt>
-<dd><p>When set to 1, a green rectangle is drawn on the screen to simplify
-finding the right <var>x</var>, <var>y</var>, <var>w</var>, <var>h</var> parameters, and
-<var>band</var> is set to 4. The default value is 0.
-</p>
-</dd>
-</dl>
-
-<p>Some examples follow.
-</p>
-<ul>
-<li>
-Set a rectangle covering the area with top left corner coordinates 0,0
-and size 100x77, setting a band of size 10:
-<table><tr><td>&nbsp;</td><td><pre class="example">delogo=0:0:100:77:10
-</pre></td></tr></table>
-
-</li><li>
-As the previous example, but use named options:
-<table><tr><td>&nbsp;</td><td><pre class="example">delogo=x=0:y=0:w=100:h=77:band=10
-</pre></td></tr></table>
-
-</li></ul>
-
-<a name="drawbox"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-drawbox">22.7 drawbox</a></h2>
-
-<p>Draw a colored box on the input image.
-</p>
-<p>It accepts the syntax:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">drawbox=<var>x</var>:<var>y</var>:<var>width</var>:<var>height</var>:<var>color</var>
-</pre></td></tr></table>
-
-<dl compact="compact">
-<dt> &lsquo;<samp>x, y</samp>&rsquo;</dt>
-<dd><p>Specify the top left corner coordinates of the box. Default to 0.
-</p>
-</dd>
-<dt> &lsquo;<samp>width, height</samp>&rsquo;</dt>
-<dd><p>Specify the width and height of the box, if 0 they are interpreted as
-the input width and height. Default to 0.
-</p>
-</dd>
-<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
-<dd><p>Specify the color of the box to write, it can be the name of a color
-(case insensitive match) or a 0xRRGGBB[AA] sequence.
-</p></dd>
-</dl>
-
-<p>Follow some examples:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># draw a black box around the edge of the input image
-drawbox
-
-# draw a box with color red and an opacity of 50%
-drawbox=10:20:200:60:red@0.5&quot;
-</pre></td></tr></table>
-
-<a name="drawtext"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-drawtext">22.8 drawtext</a></h2>
-
-<p>Draw text string or text from specified file on top of video using the
-libfreetype library.
-</p>
-<p>To enable compilation of this filter you need to configure FFmpeg with
-<code>--enable-libfreetype</code>.
-</p>
-<p>The filter also recognizes strftime() sequences in the provided text
-and expands them accordingly. Check the documentation of strftime().
-</p>
-<p>The filter accepts parameters as a list of <var>key</var>=<var>value</var> pairs,
-separated by &quot;:&quot;.
-</p>
-<p>The description of the accepted parameters follows.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>fontfile</samp>&rsquo;</dt>
-<dd><p>The font file to be used for drawing text. Path must be included.
-This parameter is mandatory.
-</p>
-</dd>
-<dt> &lsquo;<samp>text</samp>&rsquo;</dt>
-<dd><p>The text string to be drawn. The text must be a sequence of UTF-8
-encoded characters.
-This parameter is mandatory if no file is specified with the parameter
-<var>textfile</var>.
-</p>
-</dd>
-<dt> &lsquo;<samp>textfile</samp>&rsquo;</dt>
-<dd><p>A text file containing text to be drawn. The text must be a sequence
-of UTF-8 encoded characters.
-</p>
-<p>This parameter is mandatory if no text string is specified with the
-parameter <var>text</var>.
-</p>
-<p>If both text and textfile are specified, an error is thrown.
-</p>
-</dd>
-<dt> &lsquo;<samp>x, y</samp>&rsquo;</dt>
-<dd><p>The offsets where text will be drawn within the video frame.
-Relative to the top/left border of the output image.
-</p>
-<p>The default value of <var>x</var> and <var>y</var> is 0.
-</p>
-</dd>
-<dt> &lsquo;<samp>fontsize</samp>&rsquo;</dt>
-<dd><p>The font size to be used for drawing text.
-The default value of <var>fontsize</var> is 16.
-</p>
-</dd>
-<dt> &lsquo;<samp>fontcolor</samp>&rsquo;</dt>
-<dd><p>The color to be used for drawing fonts.
-Either a string (e.g. &quot;red&quot;) or in 0xRRGGBB[AA] format
-(e.g. &quot;0xff000033&quot;), possibly followed by an alpha specifier.
-The default value of <var>fontcolor</var> is &quot;black&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>boxcolor</samp>&rsquo;</dt>
-<dd><p>The color to be used for drawing box around text.
-Either a string (e.g. &quot;yellow&quot;) or in 0xRRGGBB[AA] format
-(e.g. &quot;0xff00ff&quot;), possibly followed by an alpha specifier.
-The default value of <var>boxcolor</var> is &quot;white&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>box</samp>&rsquo;</dt>
-<dd><p>Used to draw a box around text using background color.
-Value should be either 1 (enable) or 0 (disable).
-The default value of <var>box</var> is 0.
-</p>
-</dd>
-<dt> &lsquo;<samp>shadowx, shadowy</samp>&rsquo;</dt>
-<dd><p>The x and y offsets for the text shadow position with respect to the
-position of the text. They can be either positive or negative
-values. Default value for both is &quot;0&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>shadowcolor</samp>&rsquo;</dt>
-<dd><p>The color to be used for drawing a shadow behind the drawn text.  It
-can be a color name (e.g. &quot;yellow&quot;) or a string in the 0xRRGGBB[AA]
-form (e.g. &quot;0xff00ff&quot;), possibly followed by an alpha specifier.
-The default value of <var>shadowcolor</var> is &quot;black&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>ft_load_flags</samp>&rsquo;</dt>
-<dd><p>Flags to be used for loading the fonts.
-</p>
-<p>The flags map the corresponding flags supported by libfreetype, and are
-a combination of the following values:
-</p><dl compact="compact">
-<dt> <var>default</var></dt>
-<dt> <var>no_scale</var></dt>
-<dt> <var>no_hinting</var></dt>
-<dt> <var>render</var></dt>
-<dt> <var>no_bitmap</var></dt>
-<dt> <var>vertical_layout</var></dt>
-<dt> <var>force_autohint</var></dt>
-<dt> <var>crop_bitmap</var></dt>
-<dt> <var>pedantic</var></dt>
-<dt> <var>ignore_global_advance_width</var></dt>
-<dt> <var>no_recurse</var></dt>
-<dt> <var>ignore_transform</var></dt>
-<dt> <var>monochrome</var></dt>
-<dt> <var>linear_design</var></dt>
-<dt> <var>no_autohint</var></dt>
-<dt> <var>end table</var></dt>
-</dl>
-
-<p>Default value is &quot;render&quot;.
-</p>
-<p>For more information consult the documentation for the FT_LOAD_*
-libfreetype flags.
-</p>
-</dd>
-<dt> &lsquo;<samp>tabsize</samp>&rsquo;</dt>
-<dd><p>The size in number of spaces to use for rendering the tab.
-Default value is 4.
-</p></dd>
-</dl>
-
-<p>For example the command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'&quot;
-</pre></td></tr></table>
-
-<p>will draw &quot;Test Text&quot; with font FreeSerif, using the default values
-for the optional parameters.
-</p>
-<p>The command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
-          x=100: y=50: fontsize=24: fontcolor=yellow@0.2: box=1: boxcolor=red@0.2&quot;
-</pre></td></tr></table>
-
-<p>will draw &rsquo;Test Text&rsquo; with font FreeSerif of size 24 at position x=100
-and y=50 (counting from the top-left corner of the screen), text is
-yellow with a red box around it. Both the text and the box have an
-opacity of 20%.
-</p>
-<p>Note that the double quotes are not necessary if spaces are not used
-within the parameter list.
-</p>
-<p>For more information about libfreetype, check:
-<a href="http://www.freetype.org/">http://www.freetype.org/</a>.
-</p>
-<a name="fade"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-fade">22.9 fade</a></h2>
-
-<p>Apply fade-in/out effect to input video.
-</p>
-<p>It accepts the parameters:
-<var>type</var>:<var>start_frame</var>:<var>nb_frames</var>
-</p>
-<p><var>type</var> specifies if the effect type, can be either &quot;in&quot; for
-fade-in, or &quot;out&quot; for a fade-out effect.
-</p>
-<p><var>start_frame</var> specifies the number of the start frame for starting
-to apply the fade effect.
-</p>
-<p><var>nb_frames</var> specifies the number of frames for which the fade
-effect has to last. At the end of the fade-in effect the output video
-will have the same intensity as the input video, at the end of the
-fade-out transition the output video will be completely black.
-</p>
-<p>A few usage examples follow, usable too as test scenarios.
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># fade in first 30 frames of video
-fade=in:0:30
-
-# fade out last 45 frames of a 200-frame video
-fade=out:155:45
-
-# fade in first 25 frames and fade out last 25 frames of a 1000-frame video
-fade=in:0:25, fade=out:975:25
-
-# make first 5 frames black, then fade in from frame 5-24
-fade=in:5:20
-</pre></td></tr></table>
-
-<a name="fieldorder"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-fieldorder">22.10 fieldorder</a></h2>
-
-<p>Transform the field order of the input video.
-</p>
-<p>It accepts one parameter which specifies the required field order that
-the input interlaced video will be transformed to. The parameter can
-assume one of the following values:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>0 or bff</samp>&rsquo;</dt>
-<dd><p>output bottom field first
-</p></dd>
-<dt> &lsquo;<samp>1 or tff</samp>&rsquo;</dt>
-<dd><p>output top field first
-</p></dd>
-</dl>
-
-<p>Default value is &quot;tff&quot;.
-</p>
-<p>Transformation is achieved by shifting the picture content up or down
-by one line, and filling the remaining line with appropriate picture content.
-This method is consistent with most broadcast field order converters.
-</p>
-<p>If the input video is not flagged as being interlaced, or it is already
-flagged as being of the required output field order then this filter does
-not alter the incoming video.
-</p>
-<p>This filter is very useful when converting to or from PAL DV material,
-which is bottom field first.
-</p>
-<p>For example:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">./ffmpeg -i in.vob -vf &quot;fieldorder=bff&quot; out.dv
-</pre></td></tr></table>
-
-<a name="fifo"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-fifo">22.11 fifo</a></h2>
-
-<p>Buffer input images and send them when they are requested.
-</p>
-<p>This filter is mainly useful when auto-inserted by the libavfilter
-framework.
-</p>
-<p>The filter does not take parameters.
-</p>
-<a name="format"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-format">22.12 format</a></h2>
-
-<p>Convert the input video to one of the specified pixel formats.
-Libavfilter will try to pick one that is supported for the input to
-the next filter.
-</p>
-<p>The filter accepts a list of pixel format names, separated by &quot;:&quot;,
-for example &quot;yuv420p:monow:rgb24&quot;.
-</p>
-<p>Some examples follow:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># convert the input video to the format &quot;yuv420p&quot;
-format=yuv420p
-
-# convert the input video to any of the formats in the list
-format=yuv420p:yuv444p:yuv410p
-</pre></td></tr></table>
-
-<p><a name="frei0r"></a>
-</p><a name="frei0r-1"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-frei0r-1">22.13 frei0r</a></h2>
-
-<p>Apply a frei0r effect to the input video.
-</p>
-<p>To enable compilation of this filter you need to install the frei0r
-header and configure FFmpeg with &ndash;enable-frei0r.
-</p>
-<p>The filter supports the syntax:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>filter_name</var>[{:|=}<var>param1</var>:<var>param2</var>:...:<var>paramN</var>]
-</pre></td></tr></table>
-
-<p><var>filter_name</var> is the name to the frei0r effect to load. If the
-environment variable <code>FREI0R_PATH</code> is defined, the frei0r effect
-is searched in each one of the directories specified by the colon
-separated list in <code>FREIOR_PATH</code>, otherwise in the standard frei0r
-paths, which are in this order: &lsquo;<tt>HOME/.frei0r-1/lib/</tt>&rsquo;,
-&lsquo;<tt>/usr/local/lib/frei0r-1/</tt>&rsquo;, &lsquo;<tt>/usr/lib/frei0r-1/</tt>&rsquo;.
-</p>
-<p><var>param1</var>, <var>param2</var>, ... , <var>paramN</var> specify the parameters
-for the frei0r effect.
-</p>
-<p>A frei0r effect parameter can be a boolean (whose values are specified
-with &quot;y&quot; and &quot;n&quot;), a double, a color (specified by the syntax
-<var>R</var>/<var>G</var>/<var>B</var>, <var>R</var>, <var>G</var>, and <var>B</var> being float
-numbers from 0.0 to 1.0) or by an <code>av_parse_color()</code> color
-description), a position (specified by the syntax <var>X</var>/<var>Y</var>,
-<var>X</var> and <var>Y</var> being float numbers) and a string.
-</p>
-<p>The number and kind of parameters depend on the loaded effect. If an
-effect parameter is not specified the default value is set.
-</p>
-<p>Some examples follow:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># apply the distort0r effect, set the first two double parameters
-frei0r=distort0r:0.5:0.01
-
-# apply the colordistance effect, takes a color as first parameter
-frei0r=colordistance:0.2/0.3/0.4
-frei0r=colordistance:violet
-frei0r=colordistance:0x112233
-
-# apply the perspective effect, specify the top left and top right
-# image positions
-frei0r=perspective:0.2/0.2:0.8/0.2
-</pre></td></tr></table>
-
-<p>For more information see:
-<a href="http://piksel.org/frei0r">http://piksel.org/frei0r</a>
-</p>
-<a name="gradfun"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-gradfun">22.14 gradfun</a></h2>
-
-<p>Fix the banding artifacts that are sometimes introduced into nearly flat
-regions by truncation to 8bit colordepth.
-Interpolate the gradients that should go where the bands are, and
-dither them.
-</p>
-<p>This filter is designed for playback only.  Do not use it prior to
-lossy compression, because compression tends to lose the dither and
-bring back the bands.
-</p>
-<p>The filter takes two optional parameters, separated by &rsquo;:&rsquo;:
-<var>strength</var>:<var>radius</var>
-</p>
-<p><var>strength</var> is the maximum amount by which the filter will change
-any one pixel. Also the threshold for detecting nearly flat
-regions. Acceptable values range from .51 to 255, default value is
-1.2, out-of-range values will be clipped to the valid range.
-</p>
-<p><var>radius</var> is the neighborhood to fit the gradient to. A larger
-radius makes for smoother gradients, but also prevents the filter from
-modifying the pixels near detailed regions. Acceptable values are
-8-32, default value is 16, out-of-range values will be clipped to the
-valid range.
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example"># default parameters
-gradfun=1.2:16
-
-# omitting radius
-gradfun=1.2
-</pre></td></tr></table>
-
-<a name="hflip"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-hflip">22.15 hflip</a></h2>
-
-<p>Flip the input video horizontally.
-</p>
-<p>For example to horizontally flip the video in input with
-&lsquo;<tt>ffmpeg</tt>&rsquo;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -vf &quot;hflip&quot; out.avi
-</pre></td></tr></table>
-
-<a name="hqdn3d"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-hqdn3d">22.16 hqdn3d</a></h2>
-
-<p>High precision/quality 3d denoise filter. This filter aims to reduce
-image noise producing smooth images and making still images really
-still. It should enhance compressibility.
-</p>
-<p>It accepts the following optional parameters:
-<var>luma_spatial</var>:<var>chroma_spatial</var>:<var>luma_tmp</var>:<var>chroma_tmp</var>
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>luma_spatial</samp>&rsquo;</dt>
-<dd><p>a non-negative float number which specifies spatial luma strength,
-defaults to 4.0
-</p>
-</dd>
-<dt> &lsquo;<samp>chroma_spatial</samp>&rsquo;</dt>
-<dd><p>a non-negative float number which specifies spatial chroma strength,
-defaults to 3.0*<var>luma_spatial</var>/4.0
-</p>
-</dd>
-<dt> &lsquo;<samp>luma_tmp</samp>&rsquo;</dt>
-<dd><p>a float number which specifies luma temporal strength, defaults to
-6.0*<var>luma_spatial</var>/4.0
-</p>
-</dd>
-<dt> &lsquo;<samp>chroma_tmp</samp>&rsquo;</dt>
-<dd><p>a float number which specifies chroma temporal strength, defaults to
-<var>luma_tmp</var>*<var>chroma_spatial</var>/<var>luma_spatial</var>
-</p></dd>
-</dl>
-
-<a name="lut_002c-lutrgb_002c-lutyuv"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-lut_002c-lutrgb_002c-lutyuv">22.17 lut, lutrgb, lutyuv</a></h2>
-
-<p>Compute a look-up table for binding each pixel component input value
-to an output value, and apply it to input video.
-</p>
-<p><var>lutyuv</var> applies a lookup table to a YUV input video, <var>lutrgb</var>
-to an RGB input video.
-</p>
-<p>These filters accept in input a &quot;:&quot;-separated list of options, which
-specify the expressions used for computing the lookup table for the
-corresponding pixel component values.
-</p>
-<p>The <var>lut</var> filter requires either YUV or RGB pixel formats in
-input, and accepts the options:
-</p><dl compact="compact">
-<dd><p><var>c0</var> (first  pixel component)
-<var>c1</var> (second pixel component)
-<var>c2</var> (third  pixel component)
-<var>c3</var> (fourth pixel component, corresponds to the alpha component)
-</p></dd>
-</dl>
-
-<p>The exact component associated to each option depends on the format in
-input.
-</p>
-<p>The <var>lutrgb</var> filter requires RGB pixel formats in input, and
-accepts the options:
-</p><dl compact="compact">
-<dd><p><var>r</var> (red component)
-<var>g</var> (green component)
-<var>b</var> (blue component)
-<var>a</var> (alpha component)
-</p></dd>
-</dl>
-
-<p>The <var>lutyuv</var> filter requires YUV pixel formats in input, and
-accepts the options:
-</p><dl compact="compact">
-<dd><p><var>y</var> (Y/luminance component)
-<var>u</var> (U/Cb component)
-<var>v</var> (V/Cr component)
-<var>a</var> (alpha component)
-</p></dd>
-</dl>
-
-<p>The expressions can contain the following constants and functions:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>E, PI, PHI</samp>&rsquo;</dt>
-<dd><p>the corresponding mathematical approximated values for e
-(euler number), pi (greek PI), PHI (golden ratio)
-</p>
-</dd>
-<dt> &lsquo;<samp>w, h</samp>&rsquo;</dt>
-<dd><p>the input width and heigth
-</p>
-</dd>
-<dt> &lsquo;<samp>val</samp>&rsquo;</dt>
-<dd><p>input value for the pixel component
-</p>
-</dd>
-<dt> &lsquo;<samp>clipval</samp>&rsquo;</dt>
-<dd><p>the input value clipped in the <var>minval</var>-<var>maxval</var> range
-</p>
-</dd>
-<dt> &lsquo;<samp>maxval</samp>&rsquo;</dt>
-<dd><p>maximum value for the pixel component
-</p>
-</dd>
-<dt> &lsquo;<samp>minval</samp>&rsquo;</dt>
-<dd><p>minimum value for the pixel component
-</p>
-</dd>
-<dt> &lsquo;<samp>negval</samp>&rsquo;</dt>
-<dd><p>the negated value for the pixel component value clipped in the
-<var>minval</var>-<var>maxval</var> range , it corresponds to the expression
-&quot;maxval-clipval+minval&quot;
-</p>
-</dd>
-<dt> &lsquo;<samp>clip(val)</samp>&rsquo;</dt>
-<dd><p>the computed value in <var>val</var> clipped in the
-<var>minval</var>-<var>maxval</var> range
-</p>
-</dd>
-<dt> &lsquo;<samp>gammaval(gamma)</samp>&rsquo;</dt>
-<dd><p>the computed gamma correction value of the pixel component value
-clipped in the <var>minval</var>-<var>maxval</var> range, corresponds to the
-expression
-&quot;pow((clipval-minval)/(maxval-minval)\,<var>gamma</var>)*(maxval-minval)+minval&quot;
-</p>
-</dd>
-</dl>
-
-<p>All expressions default to &quot;val&quot;.
-</p>
-<p>Some examples follow:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># negate input video
-lutrgb=&quot;r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val&quot;
-lutyuv=&quot;y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val&quot;
-
-# the above is the same as
-lutrgb=&quot;r=negval:g=negval:b=negval&quot;
-lutyuv=&quot;y=negval:u=negval:v=negval&quot;
-
-# negate luminance
-lutyuv=negval
-
-# remove chroma components, turns the video into a graytone image
-lutyuv=&quot;u=128:v=128&quot;
-
-# apply a luma burning effect
-lutyuv=&quot;y=2*val&quot;
-
-# remove green and blue components
-lutrgb=&quot;g=0:b=0&quot;
-
-# set a constant alpha channel value on input
-format=rgba,lutrgb=a=&quot;maxval-minval/2&quot;
-
-# correct luminance gamma by a 0.5 factor
-lutyuv=y=gammaval(0.5)
-</pre></td></tr></table>
-
-<a name="mp"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-mp">22.18 mp</a></h2>
-
-<p>Apply an MPlayer filter to the input video.
-</p>
-<p>This filter provides a wrapper around most of the filters of
-MPlayer/MEncoder.
-</p>
-<p>This wrapper is considered experimental. Some of the wrapped filters
-may not work properly and we may drop support for them, as they will
-be implemented natively into FFmpeg. Thus you should avoid
-depending on them when writing portable scripts.
-</p>
-<p>The filters accepts the parameters:
-<var>filter_name</var>[:=]<var>filter_params</var>
-</p>
-<p><var>filter_name</var> is the name of a supported MPlayer filter,
-<var>filter_params</var> is a string containing the parameters accepted by
-the named filter.
-</p>
-<p>The list of the currently supported filters follows:
-</p><dl compact="compact">
-<dt> <var>2xsai</var></dt>
-<dt> <var>decimate</var></dt>
-<dt> <var>denoise3d</var></dt>
-<dt> <var>detc</var></dt>
-<dt> <var>dint</var></dt>
-<dt> <var>divtc</var></dt>
-<dt> <var>down3dright</var></dt>
-<dt> <var>dsize</var></dt>
-<dt> <var>eq2</var></dt>
-<dt> <var>eq</var></dt>
-<dt> <var>field</var></dt>
-<dt> <var>fil</var></dt>
-<dt> <var>fixpts</var></dt>
-<dt> <var>framestep</var></dt>
-<dt> <var>fspp</var></dt>
-<dt> <var>geq</var></dt>
-<dt> <var>harddup</var></dt>
-<dt> <var>hqdn3d</var></dt>
-<dt> <var>hue</var></dt>
-<dt> <var>il</var></dt>
-<dt> <var>ilpack</var></dt>
-<dt> <var>ivtc</var></dt>
-<dt> <var>kerndeint</var></dt>
-<dt> <var>mcdeint</var></dt>
-<dt> <var>mirror</var></dt>
-<dt> <var>noise</var></dt>
-<dt> <var>ow</var></dt>
-<dt> <var>palette</var></dt>
-<dt> <var>perspective</var></dt>
-<dt> <var>phase</var></dt>
-<dt> <var>pp7</var></dt>
-<dt> <var>pullup</var></dt>
-<dt> <var>qp</var></dt>
-<dt> <var>rectangle</var></dt>
-<dt> <var>remove-logo</var></dt>
-<dt> <var>rotate</var></dt>
-<dt> <var>sab</var></dt>
-<dt> <var>screenshot</var></dt>
-<dt> <var>smartblur</var></dt>
-<dt> <var>softpulldown</var></dt>
-<dt> <var>softskip</var></dt>
-<dt> <var>spp</var></dt>
-<dt> <var>swapuv</var></dt>
-<dt> <var>telecine</var></dt>
-<dt> <var>tile</var></dt>
-<dt> <var>tinterlace</var></dt>
-<dt> <var>unsharp</var></dt>
-<dt> <var>uspp</var></dt>
-<dt> <var>yuvcsp</var></dt>
-<dt> <var>yvu9</var></dt>
-</dl>
-
-<p>The parameter syntax and behavior for the listed filters are the same
-of the corresponding MPlayer filters. For detailed instructions check
-the &quot;VIDEO FILTERS&quot; section in the MPlayer manual.
-</p>
-<p>Some examples follow:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># remove a logo by interpolating the surrounding pixels
-mp=delogo=200:200:80:20:1
-
-# adjust gamma, brightness, contrast
-mp=eq2=1.0:2:0.5
-
-# tweak hue and saturation
-mp=hue=100:-10
-</pre></td></tr></table>
-
-<p>See also mplayer(1), <a href="http://www.mplayerhq.hu/">http://www.mplayerhq.hu/</a>.
-</p>
-<a name="negate"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-negate">22.19 negate</a></h2>
-
-<p>Negate input video.
-</p>
-<p>This filter accepts an integer in input, if non-zero it negates the
-alpha component (if available). The default value in input is 0.
-</p>
-<a name="noformat"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-noformat">22.20 noformat</a></h2>
-
-<p>Force libavfilter not to use any of the specified pixel formats for the
-input to the next filter.
-</p>
-<p>The filter accepts a list of pixel format names, separated by &quot;:&quot;,
-for example &quot;yuv420p:monow:rgb24&quot;.
-</p>
-<p>Some examples follow:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># force libavfilter to use a format different from &quot;yuv420p&quot; for the
-# input to the vflip filter
-noformat=yuv420p,vflip
-
-# convert the input video to any of the formats not contained in the list
-noformat=yuv420p:yuv444p:yuv410p
-</pre></td></tr></table>
-
-<a name="null"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-null">22.21 null</a></h2>
-
-<p>Pass the video source unchanged to the output.
-</p>
-<a name="ocv"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-ocv">22.22 ocv</a></h2>
-
-<p>Apply video transform using libopencv.
-</p>
-<p>To enable this filter install libopencv library and headers and
-configure FFmpeg with &ndash;enable-libopencv.
-</p>
-<p>The filter takes the parameters: <var>filter_name</var>{:=}<var>filter_params</var>.
-</p>
-<p><var>filter_name</var> is the name of the libopencv filter to apply.
-</p>
-<p><var>filter_params</var> specifies the parameters to pass to the libopencv
-filter. If not specified the default values are assumed.
-</p>
-<p>Refer to the official libopencv documentation for more precise
-informations:
-<a href="http://opencv.willowgarage.com/documentation/c/image_filtering.html">http://opencv.willowgarage.com/documentation/c/image_filtering.html</a>
-</p>
-<p>Follows the list of supported libopencv filters.
-</p>
-<p><a name="dilate"></a>
-</p><a name="dilate-1"></a>
-<h3 class="subsection"><a href="ffmpeg.html#toc-dilate-1">22.22.1 dilate</a></h3>
-
-<p>Dilate an image by using a specific structuring element.
-This filter corresponds to the libopencv function <code>cvDilate</code>.
-</p>
-<p>It accepts the parameters: <var>struct_el</var>:<var>nb_iterations</var>.
-</p>
-<p><var>struct_el</var> represents a structuring element, and has the syntax:
-<var>cols</var>x<var>rows</var>+<var>anchor_x</var>x<var>anchor_y</var>/<var>shape</var>
-</p>
-<p><var>cols</var> and <var>rows</var> represent the number of colums and rows of
-the structuring element, <var>anchor_x</var> and <var>anchor_y</var> the anchor
-point, and <var>shape</var> the shape for the structuring element, and
-can be one of the values &quot;rect&quot;, &quot;cross&quot;, &quot;ellipse&quot;, &quot;custom&quot;.
-</p>
-<p>If the value for <var>shape</var> is &quot;custom&quot;, it must be followed by a
-string of the form &quot;=<var>filename</var>&quot;. The file with name
-<var>filename</var> is assumed to represent a binary image, with each
-printable character corresponding to a bright pixel. When a custom
-<var>shape</var> is used, <var>cols</var> and <var>rows</var> are ignored, the number
-or columns and rows of the read file are assumed instead.
-</p>
-<p>The default value for <var>struct_el</var> is &quot;3x3+0x0/rect&quot;.
-</p>
-<p><var>nb_iterations</var> specifies the number of times the transform is
-applied to the image, and defaults to 1.
-</p>
-<p>Follow some example:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># use the default values
-ocv=dilate
-
-# dilate using a structuring element with a 5x5 cross, iterate two times
-ocv=dilate=5x5+2x2/cross:2
-
-# read the shape from the file diamond.shape, iterate two times
-# the file diamond.shape may contain a pattern of characters like this:
-#   *
-#  ***
-# *****
-#  ***
-#   *
-# the specified cols and rows are ignored (but not the anchor point coordinates)
-ocv=0x0+2x2/custom=diamond.shape:2
-</pre></td></tr></table>
-
-<a name="erode"></a>
-<h3 class="subsection"><a href="ffmpeg.html#toc-erode">22.22.2 erode</a></h3>
-
-<p>Erode an image by using a specific structuring element.
-This filter corresponds to the libopencv function <code>cvErode</code>.
-</p>
-<p>The filter accepts the parameters: <var>struct_el</var>:<var>nb_iterations</var>,
-with the same syntax and semantics as the <a href="#dilate">dilate</a> filter.
-</p>
-<a name="smooth"></a>
-<h3 class="subsection"><a href="ffmpeg.html#toc-smooth">22.22.3 smooth</a></h3>
-
-<p>Smooth the input video.
-</p>
-<p>The filter takes the following parameters:
-<var>type</var>:<var>param1</var>:<var>param2</var>:<var>param3</var>:<var>param4</var>.
-</p>
-<p><var>type</var> is the type of smooth filter to apply, and can be one of
-the following values: &quot;blur&quot;, &quot;blur_no_scale&quot;, &quot;median&quot;, &quot;gaussian&quot;,
-&quot;bilateral&quot;. The default value is &quot;gaussian&quot;.
-</p>
-<p><var>param1</var>, <var>param2</var>, <var>param3</var>, and <var>param4</var> are
-parameters whose meanings depend on smooth type. <var>param1</var> and
-<var>param2</var> accept integer positive values or 0, <var>param3</var> and
-<var>param4</var> accept float values.
-</p>
-<p>The default value for <var>param1</var> is 3, the default value for the
-other parameters is 0.
-</p>
-<p>These parameters correspond to the parameters assigned to the
-libopencv function <code>cvSmooth</code>.
-</p>
-<a name="overlay"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-overlay">22.23 overlay</a></h2>
-
-<p>Overlay one video on top of another.
-</p>
-<p>It takes two inputs and one output, the first input is the &quot;main&quot;
-video on which the second input is overlayed.
-</p>
-<p>It accepts the parameters: <var>x</var>:<var>y</var>.
-</p>
-<p><var>x</var> is the x coordinate of the overlayed video on the main video,
-<var>y</var> is the y coordinate. The parameters are expressions containing
-the following parameters:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>main_w, main_h</samp>&rsquo;</dt>
-<dd><p>main input width and height
-</p>
-</dd>
-<dt> &lsquo;<samp>W, H</samp>&rsquo;</dt>
-<dd><p>same as <var>main_w</var> and <var>main_h</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>overlay_w, overlay_h</samp>&rsquo;</dt>
-<dd><p>overlay input width and height
-</p>
-</dd>
-<dt> &lsquo;<samp>w, h</samp>&rsquo;</dt>
-<dd><p>same as <var>overlay_w</var> and <var>overlay_h</var>
-</p></dd>
-</dl>
-
-<p>Be aware that frames are taken from each input video in timestamp
-order, hence, if their initial timestamps differ, it is a a good idea
-to pass the two inputs through a <var>setpts=PTS-STARTPTS</var> filter to
-have them begin in the same zero timestamp, as it does the example for
-the <var>movie</var> filter.
-</p>
-<p>Follow some examples:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># draw the overlay at 10 pixels from the bottom right
-# corner of the main video.
-overlay=main_w-overlay_w-10:main_h-overlay_h-10
-
-# insert a transparent PNG logo in the bottom left corner of the input
-movie=logo.png [logo];
-[in][logo] overlay=10:main_h-overlay_h-10 [out]
-
-# insert 2 different transparent PNG logos (second logo on bottom
-# right corner):
-movie=logo1.png [logo1];
-movie=logo2.png [logo2];
-[in][logo1]       overlay=10:H-h-10 [in+logo1];
-[in+logo1][logo2] overlay=W-w-10:H-h-10 [out]
-
-# add a transparent color layer on top of the main video,
-# WxH specifies the size of the main input to the overlay filter
-color=red.3:WxH [over]; [in][over] overlay [out]
-</pre></td></tr></table>
-
-<p>You can chain togheter more overlays but the efficiency of such
-approach is yet to be tested.
-</p>
-<a name="pad"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-pad">22.24 pad</a></h2>
-
-<p>Add paddings to the input image, and places the original input at the
-given coordinates <var>x</var>, <var>y</var>.
-</p>
-<p>It accepts the following parameters:
-<var>width</var>:<var>height</var>:<var>x</var>:<var>y</var>:<var>color</var>.
-</p>
-<p>The parameters <var>width</var>, <var>height</var>, <var>x</var>, and <var>y</var> are
-expressions containing the following constants:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>E, PI, PHI</samp>&rsquo;</dt>
-<dd><p>the corresponding mathematical approximated values for e
-(euler number), pi (greek PI), phi (golden ratio)
-</p>
-</dd>
-<dt> &lsquo;<samp>in_w, in_h</samp>&rsquo;</dt>
-<dd><p>the input video width and heigth
-</p>
-</dd>
-<dt> &lsquo;<samp>iw, ih</samp>&rsquo;</dt>
-<dd><p>same as <var>in_w</var> and <var>in_h</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>out_w, out_h</samp>&rsquo;</dt>
-<dd><p>the output width and heigth, that is the size of the padded area as
-specified by the <var>width</var> and <var>height</var> expressions
-</p>
-</dd>
-<dt> &lsquo;<samp>ow, oh</samp>&rsquo;</dt>
-<dd><p>same as <var>out_w</var> and <var>out_h</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>x, y</samp>&rsquo;</dt>
-<dd><p>x and y offsets as specified by the <var>x</var> and <var>y</var>
-expressions, or NAN if not yet specified
-</p>
-</dd>
-<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
-<dd><p>same as <var>iw</var> / <var>ih</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
-<dd><p>input sample aspect ratio
-</p>
-</dd>
-<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
-<dd><p>input display aspect ratio, it is the same as (<var>iw</var> / <var>ih</var>) * <var>sar</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>hsub, vsub</samp>&rsquo;</dt>
-<dd><p>horizontal and vertical chroma subsample values. For example for the
-pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
-</p></dd>
-</dl>
-
-<p>Follows the description of the accepted parameters.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>width, height</samp>&rsquo;</dt>
-<dd>
-<p>Specify the size of the output image with the paddings added. If the
-value for <var>width</var> or <var>height</var> is 0, the corresponding input size
-is used for the output.
-</p>
-<p>The <var>width</var> expression can reference the value set by the
-<var>height</var> expression, and viceversa.
-</p>
-<p>The default value of <var>width</var> and <var>height</var> is 0.
-</p>
-</dd>
-<dt> &lsquo;<samp>x, y</samp>&rsquo;</dt>
-<dd>
-<p>Specify the offsets where to place the input image in the padded area
-with respect to the top/left border of the output image.
-</p>
-<p>The <var>x</var> expression can reference the value set by the <var>y</var>
-expression, and viceversa.
-</p>
-<p>The default value of <var>x</var> and <var>y</var> is 0.
-</p>
-</dd>
-<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
-<dd>
-<p>Specify the color of the padded area, it can be the name of a color
-(case insensitive match) or a 0xRRGGBB[AA] sequence.
-</p>
-<p>The default value of <var>color</var> is &quot;black&quot;.
-</p>
-</dd>
-</dl>
-
-<p>Some examples follow:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example"># Add paddings with color &quot;violet&quot; to the input video. Output video
-# size is 640x480, the top-left corner of the input video is placed at
-# column 0, row 40.
-pad=640:480:0:40:violet
-
-# pad the input to get an output with dimensions increased bt 3/2,
-# and put the input video at the center of the padded area
-pad=&quot;3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2&quot;
-
-# pad the input to get a squared output with size equal to the maximum
-# value between the input width and height, and put the input video at
-# the center of the padded area
-pad=&quot;max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2&quot;
-
-# pad the input to get a final w/h ratio of 16:9
-pad=&quot;ih*16/9:ih:(ow-iw)/2:(oh-ih)/2&quot;
-
-# for anamorphic video, in order to set the output display aspect ratio,
-# it is necessary to use sar in the expression, according to the relation:
-# (ih * X / ih) * sar = output_dar
-# X = output_dar / sar
-pad=&quot;ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2&quot;
-
-# double output size and put the input video in the bottom-right
-# corner of the output padded area
-pad=&quot;2*iw:2*ih:ow-iw:oh-ih&quot;
-</pre></td></tr></table>
-
-<a name="pixdesctest"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-pixdesctest">22.25 pixdesctest</a></h2>
-
-<p>Pixel format descriptor test filter, mainly useful for internal
-testing. The output video should be equal to the input video.
-</p>
-<p>For example:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">format=monow, pixdesctest
-</pre></td></tr></table>
-
-<p>can be used to test the monowhite pixel format descriptor definition.
-</p>
-<a name="scale"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-scale">22.26 scale</a></h2>
-
-<p>Scale the input video to <var>width</var>:<var>height</var> and/or convert the image format.
-</p>
-<p>The parameters <var>width</var> and <var>height</var> are expressions containing
-the following constants:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>E, PI, PHI</samp>&rsquo;</dt>
-<dd><p>the corresponding mathematical approximated values for e
-(euler number), pi (greek PI), phi (golden ratio)
-</p>
-</dd>
-<dt> &lsquo;<samp>in_w, in_h</samp>&rsquo;</dt>
-<dd><p>the input width and heigth
-</p>
-</dd>
-<dt> &lsquo;<samp>iw, ih</samp>&rsquo;</dt>
-<dd><p>same as <var>in_w</var> and <var>in_h</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>out_w, out_h</samp>&rsquo;</dt>
-<dd><p>the output (cropped) width and heigth
-</p>
-</dd>
-<dt> &lsquo;<samp>ow, oh</samp>&rsquo;</dt>
-<dd><p>same as <var>out_w</var> and <var>out_h</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
-<dd><p>same as <var>iw</var> / <var>ih</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
-<dd><p>input sample aspect ratio
-</p>
-</dd>
-<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
-<dd><p>input display aspect ratio, it is the same as (<var>iw</var> / <var>ih</var>) * <var>sar</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>hsub, vsub</samp>&rsquo;</dt>
-<dd><p>horizontal and vertical chroma subsample values. For example for the
-pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
-</p></dd>
-</dl>
-
-<p>If the input image format is different from the format requested by
-the next filter, the scale filter will convert the input to the
-requested format.
-</p>
-<p>If the value for <var>width</var> or <var>height</var> is 0, the respective input
-size is used for the output.
-</p>
-<p>If the value for <var>width</var> or <var>height</var> is -1, the scale filter will
-use, for the respective output size, a value that maintains the aspect
-ratio of the input image.
-</p>
-<p>The default value of <var>width</var> and <var>height</var> is 0.
-</p>
-<p>Some examples follow:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># scale the input video to a size of 200x100.
-scale=200:100
-
-# scale the input to 2x
-scale=2*iw:2*ih
-# the above is the same as
-scale=2*in_w:2*in_h
-
-# scale the input to half size
-scale=iw/2:ih/2
-
-# increase the width, and set the height to the same size
-scale=3/2*iw:ow
-
-# seek for Greek harmony
-scale=iw:1/PHI*iw
-scale=ih*PHI:ih
-
-# increase the height, and set the width to 3/2 of the height
-scale=3/2*oh:3/5*ih
-
-# increase the size, but make the size a multiple of the chroma
-scale=&quot;trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub&quot;
-
-# increase the width to a maximum of 500 pixels, keep the same input aspect ratio
-scale='min(500\, iw*3/2):-1'
-</pre></td></tr></table>
-
-<a name="select"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-select">22.27 select</a></h2>
-<p>Select frames to pass in output.
-</p>
-<p>It accepts in input an expression, which is evaluated for each input
-frame. If the expression is evaluated to a non-zero value, the frame
-is selected and passed to the output, otherwise it is discarded.
-</p>
-<p>The expression can contain the following constants:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>PI</samp>&rsquo;</dt>
-<dd><p>Greek PI
-</p>
-</dd>
-<dt> &lsquo;<samp>PHI</samp>&rsquo;</dt>
-<dd><p>golden ratio
-</p>
-</dd>
-<dt> &lsquo;<samp>E</samp>&rsquo;</dt>
-<dd><p>Euler number
-</p>
-</dd>
-<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
-<dd><p>the sequential number of the filtered frame, starting from 0
-</p>
-</dd>
-<dt> &lsquo;<samp>selected_n</samp>&rsquo;</dt>
-<dd><p>the sequential number of the selected frame, starting from 0
-</p>
-</dd>
-<dt> &lsquo;<samp>prev_selected_n</samp>&rsquo;</dt>
-<dd><p>the sequential number of the last selected frame, NAN if undefined
-</p>
-</dd>
-<dt> &lsquo;<samp>TB</samp>&rsquo;</dt>
-<dd><p>timebase of the input timestamps
-</p>
-</dd>
-<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
-<dd><p>the PTS (Presentation TimeStamp) of the filtered video frame,
-expressed in <var>TB</var> units, NAN if undefined
-</p>
-</dd>
-<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
-<dd><p>the PTS (Presentation TimeStamp) of the filtered video frame,
-expressed in seconds, NAN if undefined
-</p>
-</dd>
-<dt> &lsquo;<samp>prev_pts</samp>&rsquo;</dt>
-<dd><p>the PTS of the previously filtered video frame, NAN if undefined
-</p>
-</dd>
-<dt> &lsquo;<samp>prev_selected_pts</samp>&rsquo;</dt>
-<dd><p>the PTS of the last previously filtered video frame, NAN if undefined
-</p>
-</dd>
-<dt> &lsquo;<samp>prev_selected_t</samp>&rsquo;</dt>
-<dd><p>the PTS of the last previously selected video frame, NAN if undefined
-</p>
-</dd>
-<dt> &lsquo;<samp>start_pts</samp>&rsquo;</dt>
-<dd><p>the PTS of the first video frame in the video, NAN if undefined
-</p>
-</dd>
-<dt> &lsquo;<samp>start_t</samp>&rsquo;</dt>
-<dd><p>the time of the first video frame in the video, NAN if undefined
-</p>
-</dd>
-<dt> &lsquo;<samp>pict_type</samp>&rsquo;</dt>
-<dd><p>the picture type of the filtered frame, can assume one of the following
-values:
-</p><dl compact="compact">
-<dt> &lsquo;<samp>PICT_TYPE_I</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>PICT_TYPE_P</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>PICT_TYPE_B</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>PICT_TYPE_S</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>PICT_TYPE_SI</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>PICT_TYPE_SP</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>PICT_TYPE_BI</samp>&rsquo;</dt>
-</dl>
-
-</dd>
-<dt> &lsquo;<samp>interlace_type</samp>&rsquo;</dt>
-<dd><p>the frame interlace type, can assume one of the following values:
-</p><dl compact="compact">
-<dt> &lsquo;<samp>INTERLACE_TYPE_P</samp>&rsquo;</dt>
-<dd><p>the frame is progressive (not interlaced)
-</p></dd>
-<dt> &lsquo;<samp>INTERLACE_TYPE_T</samp>&rsquo;</dt>
-<dd><p>the frame is top-field-first
-</p></dd>
-<dt> &lsquo;<samp>INTERLACE_TYPE_B</samp>&rsquo;</dt>
-<dd><p>the frame is bottom-field-first
-</p></dd>
-</dl>
-
-</dd>
-<dt> &lsquo;<samp>key</samp>&rsquo;</dt>
-<dd><p>1 if the filtered frame is a key-frame, 0 otherwise
-</p>
-</dd>
-<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
-<dd><p>the position in the file of the filtered frame, -1 if the information
-is not available (e.g. for synthetic video)
-</p></dd>
-</dl>
-
-<p>The default value of the select expression is &quot;1&quot;.
-</p>
-<p>Some examples follow:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example"># select all frames in input
-select
-
-# the above is the same as:
-select=1
-
-# skip all frames:
-select=0
-
-# select only I-frames
-select='eq(pict_type\,PICT_TYPE_I)'
-
-# select one frame every 100
-select='not(mod(n\,100))'
-
-# select only frames contained in the 10-20 time interval
-select='gte(t\,10)*lte(t\,20)'
-
-# select only I frames contained in the 10-20 time interval
-select='gte(t\,10)*lte(t\,20)*eq(pict_type\,PICT_TYPE_I)'
-
-# select frames with a minimum distance of 10 seconds
-select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
-</pre></td></tr></table>
-
-<p><a name="setdar"></a>
-</p><a name="setdar-1"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-setdar-1">22.28 setdar</a></h2>
-
-<p>Set the Display Aspect Ratio for the filter output video.
-</p>
-<p>This is done by changing the specified Sample (aka Pixel) Aspect
-Ratio, according to the following equation:
-<em>DAR = HORIZONTAL_RESOLUTION / VERTICAL_RESOLUTION * SAR</em>
-</p>
-<p>Keep in mind that this filter does not modify the pixel dimensions of
-the video frame. Also the display aspect ratio set by this filter may
-be changed by later filters in the filterchain, e.g. in case of
-scaling or if another &quot;setdar&quot; or a &quot;setsar&quot; filter is applied.
-</p>
-<p>The filter accepts a parameter string which represents the wanted
-display aspect ratio.
-The parameter can be a floating point number string, or an expression
-of the form <var>num</var>:<var>den</var>, where <var>num</var> and <var>den</var> are the
-numerator and denominator of the aspect ratio.
-If the parameter is not specified, it is assumed the value &quot;0:1&quot;.
-</p>
-<p>For example to change the display aspect ratio to 16:9, specify:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">setdar=16:9
-# the above is equivalent to
-setdar=1.77777
-</pre></td></tr></table>
-
-<p>See also the <a href="#setsar">setsar</a> filter documentation.
-</p>
-<a name="setpts"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-setpts">22.29 setpts</a></h2>
-
-<p>Change the PTS (presentation timestamp) of the input video frames.
-</p>
-<p>Accept in input an expression evaluated through the eval API, which
-can contain the following constants:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>PTS</samp>&rsquo;</dt>
-<dd><p>the presentation timestamp in input
-</p>
-</dd>
-<dt> &lsquo;<samp>PI</samp>&rsquo;</dt>
-<dd><p>Greek PI
-</p>
-</dd>
-<dt> &lsquo;<samp>PHI</samp>&rsquo;</dt>
-<dd><p>golden ratio
-</p>
-</dd>
-<dt> &lsquo;<samp>E</samp>&rsquo;</dt>
-<dd><p>Euler number
-</p>
-</dd>
-<dt> &lsquo;<samp>N</samp>&rsquo;</dt>
-<dd><p>the count of the input frame, starting from 0.
-</p>
-</dd>
-<dt> &lsquo;<samp>STARTPTS</samp>&rsquo;</dt>
-<dd><p>the PTS of the first video frame
-</p>
-</dd>
-<dt> &lsquo;<samp>INTERLACED</samp>&rsquo;</dt>
-<dd><p>tell if the current frame is interlaced
-</p>
-</dd>
-<dt> &lsquo;<samp>POS</samp>&rsquo;</dt>
-<dd><p>original position in the file of the frame, or undefined if undefined
-for the current frame
-</p>
-</dd>
-<dt> &lsquo;<samp>PREV_INPTS</samp>&rsquo;</dt>
-<dd><p>previous input PTS
-</p>
-</dd>
-<dt> &lsquo;<samp>PREV_OUTPTS</samp>&rsquo;</dt>
-<dd><p>previous output PTS
-</p>
-</dd>
-</dl>
-
-<p>Some examples follow:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example"># start counting PTS from zero
-setpts=PTS-STARTPTS
-
-# fast motion
-setpts=0.5*PTS
-
-# slow motion
-setpts=2.0*PTS
-
-# fixed rate 25 fps
-setpts=N/(25*TB)
-
-# fixed rate 25 fps with some jitter
-setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
-</pre></td></tr></table>
-
-<p><a name="setsar"></a>
-</p><a name="setsar-1"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-setsar-1">22.30 setsar</a></h2>
-
-<p>Set the Sample (aka Pixel) Aspect Ratio for the filter output video.
-</p>
-<p>Note that as a consequence of the application of this filter, the
-output display aspect ratio will change according to the following
-equation:
-<em>DAR = HORIZONTAL_RESOLUTION / VERTICAL_RESOLUTION * SAR</em>
-</p>
-<p>Keep in mind that the sample aspect ratio set by this filter may be
-changed by later filters in the filterchain, e.g. if another &quot;setsar&quot;
-or a &quot;setdar&quot; filter is applied.
-</p>
-<p>The filter accepts a parameter string which represents the wanted
-sample aspect ratio.
-The parameter can be a floating point number string, or an expression
-of the form <var>num</var>:<var>den</var>, where <var>num</var> and <var>den</var> are the
-numerator and denominator of the aspect ratio.
-If the parameter is not specified, it is assumed the value &quot;0:1&quot;.
-</p>
-<p>For example to change the sample aspect ratio to 10:11, specify:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">setsar=10:11
-</pre></td></tr></table>
-
-<a name="settb"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-settb">22.31 settb</a></h2>
-
-<p>Set the timebase to use for the output frames timestamps.
-It is mainly useful for testing timebase configuration.
-</p>
-<p>It accepts in input an arithmetic expression representing a rational.
-The expression can contain the constants &quot;PI&quot;, &quot;E&quot;, &quot;PHI&quot;, &quot;AVTB&quot; (the
-default timebase), and &quot;intb&quot; (the input timebase).
-</p>
-<p>The default value for the input is &quot;intb&quot;.
-</p>
-<p>Follow some examples.
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example"># set the timebase to 1/25
-settb=1/25
-
-# set the timebase to 1/10
-settb=0.1
-
-#set the timebase to 1001/1000
-settb=1+0.001
-
-#set the timebase to 2*intb
-settb=2*intb
-
-#set the default timebase value
-settb=AVTB
-</pre></td></tr></table>
-
-<a name="showinfo"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-showinfo">22.32 showinfo</a></h2>
-
-<p>Show a line containing various information for each input video frame.
-The input video is not modified.
-</p>
-<p>The shown line contains a sequence of key/value pairs of the form
-<var>key</var>:<var>value</var>.
-</p>
-<p>A description of each shown parameter follows:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
-<dd><p>sequential number of the input frame, starting from 0
-</p>
-</dd>
-<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
-<dd><p>Presentation TimeStamp of the input frame, expressed as a number of
-time base units. The time base unit depends on the filter input pad.
-</p>
-</dd>
-<dt> &lsquo;<samp>pts_time</samp>&rsquo;</dt>
-<dd><p>Presentation TimeStamp of the input frame, expressed as a number of
-seconds
-</p>
-</dd>
-<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
-<dd><p>position of the frame in the input stream, -1 if this information in
-unavailable and/or meanigless (for example in case of synthetic video)
-</p>
-</dd>
-<dt> &lsquo;<samp>fmt</samp>&rsquo;</dt>
-<dd><p>pixel format name
-</p>
-</dd>
-<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
-<dd><p>sample aspect ratio of the input frame, expressed in the form
-<var>num</var>/<var>den</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
-<dd><p>size of the input frame, expressed in the form
-<var>width</var>x<var>height</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>i</samp>&rsquo;</dt>
-<dd><p>interlaced mode (&quot;P&quot; for &quot;progressive&quot;, &quot;T&quot; for top field first, &quot;B&quot;
-for bottom field first)
-</p>
-</dd>
-<dt> &lsquo;<samp>iskey</samp>&rsquo;</dt>
-<dd><p>1 if the frame is a key frame, 0 otherwise
-</p>
-</dd>
-<dt> &lsquo;<samp>type</samp>&rsquo;</dt>
-<dd><p>picture type of the input frame (&quot;I&quot; for an I-frame, &quot;P&quot; for a
-P-frame, &quot;B&quot; for a B-frame, &quot;?&quot; for unknown type).
-Check also the documentation of the <code>AVPictureType</code> enum and of
-the <code>av_get_picture_type_char</code> function defined in
-&lsquo;<tt>libavutil/avutil.h</tt>&rsquo;.
-</p>
-</dd>
-<dt> &lsquo;<samp>checksum</samp>&rsquo;</dt>
-<dd><p>Adler-32 checksum of all the planes of the input frame
-</p>
-</dd>
-<dt> &lsquo;<samp>plane_checksum</samp>&rsquo;</dt>
-<dd><p>Adler-32 checksum of each plane of the input frame, expressed in the form
-&quot;[<var>c0</var> <var>c1</var> <var>c2</var> <var>c3</var>]&quot;
-</p></dd>
-</dl>
-
-<a name="slicify"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-slicify">22.33 slicify</a></h2>
-
-<p>Pass the images of input video on to next video filter as multiple
-slices.
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">./ffmpeg -i in.avi -vf &quot;slicify=32&quot; out.avi
-</pre></td></tr></table>
-
-<p>The filter accepts the slice height as parameter. If the parameter is
-not specified it will use the default value of 16.
-</p>
-<p>Adding this in the beginning of filter chains should make filtering
-faster due to better use of the memory cache.
-</p>
-<a name="split"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-split">22.34 split</a></h2>
-
-<p>Pass on the input video to two outputs. Both outputs are identical to
-the input video.
-</p>
-<p>For example:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">[in] split [splitout1][splitout2];
-[splitout1] crop=100:100:0:0    [cropout];
-[splitout2] pad=200:200:100:100 [padout];
-</pre></td></tr></table>
-
-<p>will create two separate outputs from the same input, one cropped and
-one padded.
-</p>
-<a name="transpose"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-transpose">22.35 transpose</a></h2>
-
-<p>Transpose rows with columns in the input video and optionally flip it.
-</p>
-<p>It accepts a parameter representing an integer, which can assume the
-values:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
-<dd><p>Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">L.R     L.l
-. . -&gt;  . .
-l.r     R.r
-</pre></td></tr></table>
-
-</dd>
-<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
-<dd><p>Rotate by 90 degrees clockwise, that is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">L.R     l.L
-. . -&gt;  . .
-l.r     r.R
-</pre></td></tr></table>
-
-</dd>
-<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
-<dd><p>Rotate by 90 degrees counterclockwise, that is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">L.R     R.r
-. . -&gt;  . .
-l.r     L.l
-</pre></td></tr></table>
-
-</dd>
-<dt> &lsquo;<samp>3</samp>&rsquo;</dt>
-<dd><p>Rotate by 90 degrees clockwise and vertically flip, that is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">L.R     r.R
-. . -&gt;  . .
-l.r     l.L
-</pre></td></tr></table>
-</dd>
-</dl>
-
-<a name="unsharp"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-unsharp">22.36 unsharp</a></h2>
-
-<p>Sharpen or blur the input video.
-</p>
-<p>It accepts the following parameters:
-<var>luma_msize_x</var>:<var>luma_msize_y</var>:<var>luma_amount</var>:<var>chroma_msize_x</var>:<var>chroma_msize_y</var>:<var>chroma_amount</var>
-</p>
-<p>Negative values for the amount will blur the input video, while positive
-values will sharpen. All parameters are optional and default to the
-equivalent of the string &rsquo;5:5:1.0:5:5:0.0&rsquo;.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>luma_msize_x</samp>&rsquo;</dt>
-<dd><p>Set the luma matrix horizontal size. It can be an integer between 3
-and 13, default value is 5.
-</p>
-</dd>
-<dt> &lsquo;<samp>luma_msize_y</samp>&rsquo;</dt>
-<dd><p>Set the luma matrix vertical size. It can be an integer between 3
-and 13, default value is 5.
-</p>
-</dd>
-<dt> &lsquo;<samp>luma_amount</samp>&rsquo;</dt>
-<dd><p>Set the luma effect strength. It can be a float number between -2.0
-and 5.0, default value is 1.0.
-</p>
-</dd>
-<dt> &lsquo;<samp>chroma_msize_x</samp>&rsquo;</dt>
-<dd><p>Set the chroma matrix horizontal size. It can be an integer between 3
-and 13, default value is 5.
-</p>
-</dd>
-<dt> &lsquo;<samp>chroma_msize_y</samp>&rsquo;</dt>
-<dd><p>Set the chroma matrix vertical size. It can be an integer between 3
-and 13, default value is 5.
-</p>
-</dd>
-<dt> &lsquo;<samp>chroma_amount</samp>&rsquo;</dt>
-<dd><p>Set the chroma effect strength. It can be a float number between -2.0
-and 5.0, default value is 0.0.
-</p>
-</dd>
-</dl>
-
-<table><tr><td>&nbsp;</td><td><pre class="example"># Strong luma sharpen effect parameters
-unsharp=7:7:2.5
-
-# Strong blur of both luma and chroma parameters
-unsharp=7:7:-2:7:7:-2
-
-# Use the default values with <code>ffmpeg</code>
-./ffmpeg -i in.avi -vf &quot;unsharp&quot; out.mp4
-</pre></td></tr></table>
-
-<a name="vflip"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-vflip">22.37 vflip</a></h2>
-
-<p>Flip the input video vertically.
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">./ffmpeg -i in.avi -vf &quot;vflip&quot; out.avi
-</pre></td></tr></table>
-
-<a name="yadif"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-yadif">22.38 yadif</a></h2>
-
-<p>Deinterlace the input video (&quot;yadif&quot; means &quot;yet another deinterlacing
-filter&quot;).
-</p>
-<p>It accepts the optional parameters: <var>mode</var>:<var>parity</var>:<var>auto</var>.
-</p>
-<p><var>mode</var> specifies the interlacing mode to adopt, accepts one of the
-following values:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
-<dd><p>output 1 frame for each frame
-</p></dd>
-<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
-<dd><p>output 1 frame for each field
-</p></dd>
-<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
-<dd><p>like 0 but skips spatial interlacing check
-</p></dd>
-<dt> &lsquo;<samp>3</samp>&rsquo;</dt>
-<dd><p>like 1 but skips spatial interlacing check
-</p></dd>
-</dl>
-
-<p>Default value is 0.
-</p>
-<p><var>parity</var> specifies the picture field parity assumed for the input
-interlaced video, accepts one of the following values:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
-<dd><p>assume top field first
-</p></dd>
-<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
-<dd><p>assume bottom field first
-</p></dd>
-<dt> &lsquo;<samp>-1</samp>&rsquo;</dt>
-<dd><p>enable automatic detection
-</p></dd>
-</dl>
-
-<p>Default value is -1.
-If interlacing is unknown or decoder does not export this information,
-top field first will be assumed.
-</p>
-<p><var>auto</var> specifies if deinterlacer should trust the interlaced flag
-and only deinterlace frames marked as interlaced
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
-<dd><p>deinterlace all frames
-</p></dd>
-<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
-<dd><p>only deinterlace frames marked as interlaced
-</p></dd>
-</dl>
-
-<p>Default value is 0.
-</p>
-
-<a name="Video-Sources"></a>
-<h1 class="chapter"><a href="ffmpeg.html#toc-Video-Sources">23. Video Sources</a></h1>
-
-<p>Below is a description of the currently available video sources.
-</p>
-<a name="buffer"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-buffer">23.1 buffer</a></h2>
-
-<p>Buffer video frames, and make them available to the filter chain.
-</p>
-<p>This source is mainly intended for a programmatic use, in particular
-through the interface defined in &lsquo;<tt>libavfilter/vsrc_buffer.h</tt>&rsquo;.
-</p>
-<p>It accepts the following parameters:
-<var>width</var>:<var>height</var>:<var>pix_fmt_string</var>:<var>timebase_num</var>:<var>timebase_den</var>:<var>sample_aspect_ratio_num</var>:<var>sample_aspect_ratio.den</var>:<var>scale_params</var>
-</p>
-<p>All the parameters but <var>scale_params</var> need to be explicitely
-defined.
-</p>
-<p>Follows the list of the accepted parameters.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>width, height</samp>&rsquo;</dt>
-<dd><p>Specify the width and height of the buffered video frames.
-</p>
-</dd>
-<dt> &lsquo;<samp>pix_fmt_string</samp>&rsquo;</dt>
-<dd><p>A string representing the pixel format of the buffered video frames.
-It may be a number corresponding to a pixel format, or a pixel format
-name.
-</p>
-</dd>
-<dt> &lsquo;<samp>timebase_num, timebase_den</samp>&rsquo;</dt>
-<dd><p>Specify numerator and denomitor of the timebase assumed by the
-timestamps of the buffered frames.
-</p>
-</dd>
-<dt> &lsquo;<samp>sample_aspect_ratio.num, sample_aspect_ratio.den</samp>&rsquo;</dt>
-<dd><p>Specify numerator and denominator of the sample aspect ratio assumed
-by the video frames.
-</p>
-</dd>
-<dt> &lsquo;<samp>scale_params</samp>&rsquo;</dt>
-<dd><p>Specify the optional parameters to be used for the scale filter which
-is automatically inserted when an input change is detected in the
-input size or format.
-</p></dd>
-</dl>
-
-<p>For example:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">buffer=320:240:yuv410p:1:24:1:1
-</pre></td></tr></table>
-
-<p>will instruct the source to accept video frames with size 320x240 and
-with format &quot;yuv410p&quot;, assuming 1/24 as the timestamps timebase and
-square pixels (1:1 sample aspect ratio).
-Since the pixel format with name &quot;yuv410p&quot; corresponds to the number 6
-(check the enum PixelFormat definition in &lsquo;<tt>libavutil/pixfmt.h</tt>&rsquo;),
-this example corresponds to:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">buffer=320:240:6:1:24:1:1
-</pre></td></tr></table>
-
-<a name="color"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-color">23.2 color</a></h2>
-
-<p>Provide an uniformly colored input.
-</p>
-<p>It accepts the following parameters:
-<var>color</var>:<var>frame_size</var>:<var>frame_rate</var>
-</p>
-<p>Follows the description of the accepted parameters.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
-<dd><p>Specify the color of the source. It can be the name of a color (case
-insensitive match) or a 0xRRGGBB[AA] sequence, possibly followed by an
-alpha specifier. The default value is &quot;black&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>frame_size</samp>&rsquo;</dt>
-<dd><p>Specify the size of the sourced video, it may be a string of the form
-<var>width</var>x<var>heigth</var>, or the name of a size abbreviation. The
-default value is &quot;320x240&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>frame_rate</samp>&rsquo;</dt>
-<dd><p>Specify the frame rate of the sourced video, as the number of frames
-generated per second. It has to be a string in the format
-<var>frame_rate_num</var>/<var>frame_rate_den</var>, an integer number, a float
-number or a valid video frame rate abbreviation. The default value is
-&quot;25&quot;.
-</p>
-</dd>
-</dl>
-
-<p>For example the following graph description will generate a red source
-with an opacity of 0.2, with size &quot;qcif&quot; and a frame rate of 10
-frames per second, which will be overlayed over the source connected
-to the pad with identifier &quot;in&quot;.
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">&quot;color=red@0.2:qcif:10 [color]; [in][color] overlay [out]&quot;
-</pre></td></tr></table>
-
-<a name="movie"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-movie">23.3 movie</a></h2>
-
-<p>Read a video stream from a movie container.
-</p>
-<p>It accepts the syntax: <var>movie_name</var>[:<var>options</var>] where
-<var>movie_name</var> is the name of the resource to read (not necessarily
-a file but also a device or a stream accessed through some protocol),
-and <var>options</var> is an optional sequence of <var>key</var>=<var>value</var>
-pairs, separated by &quot;:&quot;.
-</p>
-<p>The description of the accepted options follows.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>format_name, f</samp>&rsquo;</dt>
-<dd><p>Specifies the format assumed for the movie to read, and can be either
-the name of a container or an input device. If not specified the
-format is guessed from <var>movie_name</var> or by probing.
-</p>
-</dd>
-<dt> &lsquo;<samp>seek_point, sp</samp>&rsquo;</dt>
-<dd><p>Specifies the seek point in seconds, the frames will be output
-starting from this seek point, the parameter is evaluated with
-<code>av_strtod</code> so the numerical value may be suffixed by an IS
-postfix. Default value is &quot;0&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>stream_index, si</samp>&rsquo;</dt>
-<dd><p>Specifies the index of the video stream to read. If the value is -1,
-the best suited video stream will be automatically selected. Default
-value is &quot;-1&quot;.
-</p>
-</dd>
-</dl>
-
-<p>This filter allows to overlay a second video on top of main input of
-a filtergraph as shown in this graph:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">input -----------&gt; deltapts0 --&gt; overlay --&gt; output
-                                    ^
-                                    |
-movie --&gt; scale--&gt; deltapts1 -------+
-</pre></td></tr></table>
-
-<p>Some examples follow:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># skip 3.2 seconds from the start of the avi file in.avi, and overlay it
-# on top of the input labelled as &quot;in&quot;.
-movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [movie];
-[in] setpts=PTS-STARTPTS, [movie] overlay=16:16 [out]
-
-# read from a video4linux2 device, and overlay it on top of the input
-# labelled as &quot;in&quot;
-movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [movie];
-[in] setpts=PTS-STARTPTS, [movie] overlay=16:16 [out]
-
-</pre></td></tr></table>
-
-<a name="mptestsrc"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-mptestsrc">23.4 mptestsrc</a></h2>
-
-<p>Generate various test patterns, as generated by the MPlayer test filter.
-</p>
-<p>The size of the generated video is fixed, and is 256x256.
-This source is useful in particular for testing encoding features.
-</p>
-<p>This source accepts an optional sequence of <var>key</var>=<var>value</var> pairs,
-separated by &quot;:&quot;. The description of the accepted options follows.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
-<dd><p>Specify the frame rate of the sourced video, as the number of frames
-generated per second. It has to be a string in the format
-<var>frame_rate_num</var>/<var>frame_rate_den</var>, an integer number, a float
-number or a valid video frame rate abbreviation. The default value is
-&quot;25&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
-<dd><p>Set the video duration of the sourced video. The accepted syntax is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">[-]HH[:MM[:SS[.m...]]]
-[-]S+[.m...]
-</pre></td></tr></table>
-<p>See also the function <code>av_parse_time()</code>.
-</p>
-<p>If not specified, or the expressed duration is negative, the video is
-supposed to be generated forever.
-</p>
-</dd>
-<dt> &lsquo;<samp>test, t</samp>&rsquo;</dt>
-<dd>
-<p>Set the number or the name of the test to perform. Supported tests are:
-</p><dl compact="compact">
-<dt> &lsquo;<samp>dc_luma</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>dc_chroma</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>freq_luma</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>freq_chroma</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>amp_luma</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>amp_chroma</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>cbp</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>mv</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>ring1</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>ring2</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>all</samp>&rsquo;</dt>
-</dl>
-
-<p>Default value is &quot;all&quot;, which will cycle through the list of all tests.
-</p></dd>
-</dl>
-
-<p>For example the following:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">testsrc=t=dc_luma
-</pre></td></tr></table>
-
-<p>will generate a &quot;dc_luma&quot; test pattern.
-</p>
-<a name="nullsrc"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-nullsrc">23.5 nullsrc</a></h2>
-
-<p>Null video source, never return images. It is mainly useful as a
-template and to be employed in analysis / debugging tools.
-</p>
-<p>It accepts as optional parameter a string of the form
-<var>width</var>:<var>height</var>:<var>timebase</var>.
-</p>
-<p><var>width</var> and <var>height</var> specify the size of the configured
-source. The default values of <var>width</var> and <var>height</var> are
-respectively 352 and 288 (corresponding to the CIF size format).
-</p>
-<p><var>timebase</var> specifies an arithmetic expression representing a
-timebase. The expression can contain the constants &quot;PI&quot;, &quot;E&quot;, &quot;PHI&quot;,
-&quot;AVTB&quot; (the default timebase), and defaults to the value &quot;AVTB&quot;.
-</p>
-<a name="frei0r_005fsrc"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-frei0r_005fsrc">23.6 frei0r_src</a></h2>
-
-<p>Provide a frei0r source.
-</p>
-<p>To enable compilation of this filter you need to install the frei0r
-header and configure FFmpeg with &ndash;enable-frei0r.
-</p>
-<p>The source supports the syntax:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>size</var>:<var>rate</var>:<var>src_name</var>[{=|:}<var>param1</var>:<var>param2</var>:...:<var>paramN</var>]
-</pre></td></tr></table>
-
-<p><var>size</var> is the size of the video to generate, may be a string of the
-form <var>width</var>x<var>height</var> or a frame size abbreviation.
-<var>rate</var> is the rate of the video to generate, may be a string of
-the form <var>num</var>/<var>den</var> or a frame rate abbreviation.
-<var>src_name</var> is the name to the frei0r source to load. For more
-information regarding frei0r and how to set the parameters read the
-section <a href="#frei0r">frei0r</a> in the description of the video filters.
-</p>
-<p>Some examples follow:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># generate a frei0r partik0l source with size 200x200 and framerate 10
-# which is overlayed on the overlay filter main input
-frei0r_src=200x200:10:partik0l=1234 [overlay]; [in][overlay] overlay
-</pre></td></tr></table>
-
-<a name="rgbtestsrc_002c-testsrc"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-rgbtestsrc_002c-testsrc">23.7 rgbtestsrc, testsrc</a></h2>
-
-<p>The <code>rgbtestsrc</code> source generates an RGB test pattern useful for
-detecting RGB vs BGR issues. You should see a red, green and blue
-stripe from top to bottom.
-</p>
-<p>The <code>testsrc</code> source generates a test video pattern, showing a
-color pattern, a scrolling gradient and a timestamp. This is mainly
-intended for testing purposes.
-</p>
-<p>Both sources accept an optional sequence of <var>key</var>=<var>value</var> pairs,
-separated by &quot;:&quot;. The description of the accepted options follows.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
-<dd><p>Specify the size of the sourced video, it may be a string of the form
-<var>width</var>x<var>heigth</var>, or the name of a size abbreviation. The
-default value is &quot;320x240&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
-<dd><p>Specify the frame rate of the sourced video, as the number of frames
-generated per second. It has to be a string in the format
-<var>frame_rate_num</var>/<var>frame_rate_den</var>, an integer number, a float
-number or a valid video frame rate abbreviation. The default value is
-&quot;25&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
-<dd><p>Set the sample aspect ratio of the sourced video.
-</p>
-</dd>
-<dt> &lsquo;<samp>duration</samp>&rsquo;</dt>
-<dd><p>Set the video duration of the sourced video. The accepted syntax is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">[-]HH[:MM[:SS[.m...]]]
-[-]S+[.m...]
-</pre></td></tr></table>
-<p>See also the function <code>av_parse_time()</code>.
-</p>
-<p>If not specified, or the expressed duration is negative, the video is
-supposed to be generated forever.
-</p></dd>
-</dl>
-
-<p>For example the following:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">testsrc=duration=5.3:size=qcif:rate=10
-</pre></td></tr></table>
-
-<p>will generate a video with a duration of 5.3 seconds, with size
-176x144 and a framerate of 10 frames per second.
-</p>
-
-<a name="Video-Sinks"></a>
-<h1 class="chapter"><a href="ffmpeg.html#toc-Video-Sinks">24. Video Sinks</a></h1>
-
-<p>Below is a description of the currently available video sinks.
-</p>
-<a name="buffersink"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-buffersink">24.1 buffersink</a></h2>
-
-<p>Buffer video frames, and make them available to the end of the filter
-graph.
-</p>
-<p>This sink is mainly intended for a programmatic use, in particular
-through the interface defined in &lsquo;<tt>libavfilter/vsink_buffer.h</tt>&rsquo;.
-</p>
-<p>It does not require a string parameter in input, but you need to
-specify a pointer to a list of supported pixel formats terminated by
--1 in the opaque parameter provided to <code>avfilter_init_filter</code>
-when initializing this sink.
-</p>
-<a name="nullsink"></a>
-<h2 class="section"><a href="ffmpeg.html#toc-nullsink">24.2 nullsink</a></h2>
-
-<p>Null video sink, do absolutely nothing with the input video. It is
-mainly useful as a template and to be employed in analysis / debugging
-tools.
-</p>
-
-<a name="Metadata"></a>
-<h1 class="chapter"><a href="ffmpeg.html#toc-Metadata">25. Metadata</a></h1>
-
-<p>FFmpeg is able to dump metadata from media files into a simple UTF-8-encoded
-INI-like text file and then load it back using the metadata muxer/demuxer.
-</p>
-<p>The file format is as follows:
-</p><ol>
-<li>
-A file consists of a header and a number of metadata tags divided into sections,
-each on its own line.
-
-</li><li>
-The header is a &rsquo;;FFMETADATA&rsquo; string, followed by a version number (now 1).
-
-</li><li>
-Metadata tags are of the form &rsquo;key=value&rsquo;
-
-</li><li>
-Immediately after header follows global metadata
-
-</li><li>
-After global metadata there may be sections with per-stream/per-chapter
-metadata.
-
-</li><li>
-A section starts with the section name in uppercase (i.e. STREAM or CHAPTER) in
-brackets (&rsquo;[&rsquo;, &rsquo;]&rsquo;) and ends with next section or end of file.
-
-</li><li>
-At the beginning of a chapter section there may be an optional timebase to be
-used for start/end values. It must be in form &rsquo;TIMEBASE=num/den&rsquo;, where num and
-den are integers. If the timebase is missing then start/end times are assumed to
-be in milliseconds.
-Next a chapter section must contain chapter start and end times in form
-&rsquo;START=num&rsquo;, &rsquo;END=num&rsquo;, where num is a positive integer.
-
-</li><li>
-Empty lines and lines starting with &rsquo;;&rsquo; or &rsquo;#&rsquo; are ignored.
-
-</li><li>
-Metadata keys or values containing special characters (&rsquo;=&rsquo;, &rsquo;;&rsquo;, &rsquo;#&rsquo;, &rsquo;\&rsquo; and a
-newline) must be escaped with a backslash &rsquo;\&rsquo;.
-
-</li><li>
-Note that whitespace in metadata (e.g. foo = bar) is considered to be a part of
-the tag (in the example above key is &rsquo;foo &rsquo;, value is &rsquo; bar&rsquo;).
-</li></ol>
-
-<p>A ffmetadata file might look like this:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">;FFMETADATA1
-title=bike\\shed
-;this is a comment
-artist=FFmpeg troll team
-
-[CHAPTER]
-TIMEBASE=1/1000
-START=0
-#chapter ends at 0:01:00
-END=60000
-title=chapter \#1
-[STREAM]
-title=multi\
-line
-</pre></td></tr></table>
-
-
-<hr size="1">
-<p>
- <font size="-1">
-  This document was generated by <em>Kyle Schwarz</em> on <em>September 2, 2011</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.
- </font>
- <br>
-
-</p>
-</body>
-</html>
+<footer class="footer pagination-right">
+<span class="label label-info">This document was generated by <em>Kyle Schwarz</em> on <em>December 14, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies/ffmpeg/doc/ffplay-all.html b/dependencies/ffmpeg/doc/ffplay-all.html
new file mode 100644 (file)
index 0000000..a7df9d9
--- /dev/null
@@ -0,0 +1,22286 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on December 14, 2013 by texi2html 1.82 -->
+<!--
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>FFmpeg documentation : ffplay </title>
+
+<meta name="description" content="ffplay Documentation: ">
+<meta name="keywords" content="FFmpeg documentation : ffplay ">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="default.css" />
+
+<link rel="icon" href="favicon.png" type="image/png" />
+</head>
+<body>
+<div id="container">
+<div id="body">
+
+<a name="SEC_Top"></a>
+<h1 class="settitle">ffplay Documentation</h1>
+
+<a name="SEC_Contents"></a>
+<h1>Table of Contents</h1>
+<div class="contents">
+
+<ul class="toc">
+  <li><a name="toc-Synopsis" href="#Synopsis">1. Synopsis</a></li>
+  <li><a name="toc-Description" href="#Description">2. Description</a></li>
+  <li><a name="toc-Options-25" href="#Options-25">3. Options</a>
+  <ul class="toc">
+    <li><a name="toc-Stream-specifiers-1" href="#Stream-specifiers-1">3.1 Stream specifiers</a></li>
+    <li><a name="toc-Generic-options" href="#Generic-options">3.2 Generic options</a></li>
+    <li><a name="toc-AVOptions" href="#AVOptions">3.3 AVOptions</a></li>
+    <li><a name="toc-Main-options" href="#Main-options">3.4 Main options</a></li>
+    <li><a name="toc-Advanced-options" href="#Advanced-options">3.5 Advanced options</a></li>
+    <li><a name="toc-While-playing" href="#While-playing">3.6 While playing</a></li>
+  </ul></li>
+  <li><a name="toc-Syntax-2" href="#Syntax-2">4. Syntax</a>
+  <ul class="toc">
+    <li><a name="toc-Quoting-and-escaping" href="#Quoting-and-escaping">4.1 Quoting and escaping</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-13" href="#Examples-13">4.1.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-Date" href="#Date">4.2 Date</a></li>
+    <li><a name="toc-Time-duration" href="#Time-duration">4.3 Time duration</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-31" href="#Examples-31">4.3.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-Video-size" href="#Video-size">4.4 Video size</a></li>
+    <li><a name="toc-Video-rate" href="#Video-rate">4.5 Video rate</a></li>
+    <li><a name="toc-Ratio" href="#Ratio">4.6 Ratio</a></li>
+    <li><a name="toc-Color" href="#Color">4.7 Color</a></li>
+    <li><a name="toc-Channel-Layout" href="#Channel-Layout">4.8 Channel Layout</a></li>
+  </ul></li>
+  <li><a name="toc-Expression-Evaluation" href="#Expression-Evaluation">5. Expression Evaluation</a></li>
+  <li><a name="toc-OpenCL-Options" href="#OpenCL-Options">6. OpenCL Options</a></li>
+  <li><a name="toc-Codec-Options" href="#Codec-Options">7. Codec Options</a></li>
+  <li><a name="toc-Decoders" href="#Decoders">8. Decoders</a></li>
+  <li><a name="toc-Video-Decoders" href="#Video-Decoders">9. Video Decoders</a>
+  <ul class="toc">
+    <li><a name="toc-rawvideo-1" href="#rawvideo-1">9.1 rawvideo</a>
+    <ul class="toc">
+      <li><a name="toc-Options-9" href="#Options-9">9.1.1 Options</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Audio-Decoders" href="#Audio-Decoders">10. Audio Decoders</a>
+  <ul class="toc">
+    <li><a name="toc-ffwavesynth" href="#ffwavesynth">10.1 ffwavesynth</a></li>
+    <li><a name="toc-libcelt" href="#libcelt">10.2 libcelt</a></li>
+    <li><a name="toc-libgsm" href="#libgsm">10.3 libgsm</a></li>
+    <li><a name="toc-libilbc" href="#libilbc">10.4 libilbc</a>
+    <ul class="toc">
+      <li><a name="toc-Options" href="#Options">10.4.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libopencore_002damrnb-1" href="#libopencore_002damrnb-1">10.5 libopencore-amrnb</a></li>
+    <li><a name="toc-libopencore_002damrwb" href="#libopencore_002damrwb">10.6 libopencore-amrwb</a></li>
+    <li><a name="toc-libopus" href="#libopus">10.7 libopus</a></li>
+  </ul></li>
+  <li><a name="toc-Subtitles-Decoders" href="#Subtitles-Decoders">11. Subtitles Decoders</a>
+  <ul class="toc">
+    <li><a name="toc-dvdsub" href="#dvdsub">11.1 dvdsub</a>
+    <ul class="toc">
+      <li><a name="toc-Options-24" href="#Options-24">11.1.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libzvbi_002dteletext" href="#libzvbi_002dteletext">11.2 libzvbi-teletext</a>
+    <ul class="toc">
+      <li><a name="toc-Options-7" href="#Options-7">11.2.1 Options</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Encoders" href="#Encoders">12. Encoders</a></li>
+  <li><a name="toc-Audio-Encoders" href="#Audio-Encoders">13. Audio Encoders</a>
+  <ul class="toc">
+    <li><a name="toc-aac" href="#aac">13.1 aac</a>
+    <ul class="toc">
+      <li><a name="toc-Options-27" href="#Options-27">13.1.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-ac3-and-ac3_005ffixed" href="#ac3-and-ac3_005ffixed">13.2 ac3 and ac3_fixed</a>
+    <ul class="toc">
+      <li><a name="toc-AC_002d3-Metadata" href="#AC_002d3-Metadata">13.2.1 AC-3 Metadata</a>
+      <ul class="toc">
+        <li><a name="toc-Metadata-Control-Options" href="#Metadata-Control-Options">13.2.1.1 Metadata Control Options</a></li>
+        <li><a name="toc-Downmix-Levels" href="#Downmix-Levels">13.2.1.2 Downmix Levels</a></li>
+        <li><a name="toc-Audio-Production-Information" href="#Audio-Production-Information">13.2.1.3 Audio Production Information</a></li>
+        <li><a name="toc-Other-Metadata-Options" href="#Other-Metadata-Options">13.2.1.4 Other Metadata Options</a></li>
+      </ul></li>
+      <li><a name="toc-Extended-Bitstream-Information" href="#Extended-Bitstream-Information">13.2.2 Extended Bitstream Information</a>
+      <ul class="toc">
+        <li><a name="toc-Extended-Bitstream-Information-_002d-Part-1" href="#Extended-Bitstream-Information-_002d-Part-1">13.2.2.1 Extended Bitstream Information - Part 1</a></li>
+        <li><a name="toc-Extended-Bitstream-Information-_002d-Part-2" href="#Extended-Bitstream-Information-_002d-Part-2">13.2.2.2 Extended Bitstream Information - Part 2</a></li>
+      </ul></li>
+      <li><a name="toc-Other-AC_002d3-Encoding-Options" href="#Other-AC_002d3-Encoding-Options">13.2.3 Other AC-3 Encoding Options</a></li>
+      <li><a name="toc-Floating_002dPoint_002dOnly-AC_002d3-Encoding-Options" href="#Floating_002dPoint_002dOnly-AC_002d3-Encoding-Options">13.2.4 Floating-Point-Only AC-3 Encoding Options</a></li>
+    </ul></li>
+    <li><a name="toc-libfaac-1" href="#libfaac-1">13.3 libfaac</a>
+    <ul class="toc">
+      <li><a name="toc-Options-28" href="#Options-28">13.3.1 Options</a></li>
+      <li><a name="toc-Examples-43" href="#Examples-43">13.3.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-libfdk_005faac" href="#libfdk_005faac">13.4 libfdk_aac</a>
+    <ul class="toc">
+      <li><a name="toc-Options-8" href="#Options-8">13.4.1 Options</a></li>
+      <li><a name="toc-Examples-59" href="#Examples-59">13.4.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-libmp3lame-1" href="#libmp3lame-1">13.5 libmp3lame</a>
+    <ul class="toc">
+      <li><a name="toc-Options-17" href="#Options-17">13.5.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libopencore_002damrnb" href="#libopencore_002damrnb">13.6 libopencore-amrnb</a>
+    <ul class="toc">
+      <li><a name="toc-Options-29" href="#Options-29">13.6.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libshine-1" href="#libshine-1">13.7 libshine</a>
+    <ul class="toc">
+      <li><a name="toc-Options-16" href="#Options-16">13.7.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libtwolame" href="#libtwolame">13.8 libtwolame</a>
+    <ul class="toc">
+      <li><a name="toc-Options-22" href="#Options-22">13.8.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libvo_002daacenc-1" href="#libvo_002daacenc-1">13.9 libvo-aacenc</a>
+    <ul class="toc">
+      <li><a name="toc-Options-11" href="#Options-11">13.9.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libvo_002damrwbenc" href="#libvo_002damrwbenc">13.10 libvo-amrwbenc</a>
+    <ul class="toc">
+      <li><a name="toc-Options-23" href="#Options-23">13.10.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libopus-1" href="#libopus-1">13.11 libopus</a>
+    <ul class="toc">
+      <li><a name="toc-Option-Mapping" href="#Option-Mapping">13.11.1 Option Mapping</a></li>
+    </ul></li>
+    <li><a name="toc-libvorbis" href="#libvorbis">13.12 libvorbis</a>
+    <ul class="toc">
+      <li><a name="toc-Options-32" href="#Options-32">13.12.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libwavpack" href="#libwavpack">13.13 libwavpack</a></li>
+  </ul></li>
+  <li><a name="toc-Video-Encoders" href="#Video-Encoders">14. Video Encoders</a>
+  <ul class="toc">
+    <li><a name="toc-libtheora" href="#libtheora">14.1 libtheora</a>
+    <ul class="toc">
+      <li><a name="toc-Options-19" href="#Options-19">14.1.1 Options</a></li>
+      <li><a name="toc-Examples-28" href="#Examples-28">14.1.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-libvpx" href="#libvpx">14.2 libvpx</a>
+    <ul class="toc">
+      <li><a name="toc-Options-1" href="#Options-1">14.2.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libx264" href="#libx264">14.3 libx264</a>
+    <ul class="toc">
+      <li><a name="toc-Options-10" href="#Options-10">14.3.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libxvid" href="#libxvid">14.4 libxvid</a>
+    <ul class="toc">
+      <li><a name="toc-Options-14" href="#Options-14">14.4.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-png" href="#png">14.5 png</a>
+    <ul class="toc">
+      <li><a name="toc-Private-options" href="#Private-options">14.5.1 Private options</a></li>
+    </ul></li>
+    <li><a name="toc-ProRes" href="#ProRes">14.6 ProRes</a>
+    <ul class="toc">
+      <li><a name="toc-Private-Options-for-prores_002dks" href="#Private-Options-for-prores_002dks">14.6.1 Private Options for prores-ks</a></li>
+      <li><a name="toc-Speed-considerations" href="#Speed-considerations">14.6.2 Speed considerations</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Bitstream-Filters" href="#Bitstream-Filters">15. Bitstream Filters</a>
+  <ul class="toc">
+    <li><a name="toc-aac_005fadtstoasc" href="#aac_005fadtstoasc">15.1 aac_adtstoasc</a></li>
+    <li><a name="toc-chomp" href="#chomp">15.2 chomp</a></li>
+    <li><a name="toc-dump_005fextra" href="#dump_005fextra">15.3 dump_extra</a></li>
+    <li><a name="toc-h264_005fmp4toannexb" href="#h264_005fmp4toannexb">15.4 h264_mp4toannexb</a></li>
+    <li><a name="toc-imx_005fdump_005fheader" href="#imx_005fdump_005fheader">15.5 imx_dump_header</a></li>
+    <li><a name="toc-mjpeg2jpeg" href="#mjpeg2jpeg">15.6 mjpeg2jpeg</a></li>
+    <li><a name="toc-mjpega_005fdump_005fheader" href="#mjpega_005fdump_005fheader">15.7 mjpega_dump_header</a></li>
+    <li><a name="toc-movsub" href="#movsub">15.8 movsub</a></li>
+    <li><a name="toc-mp3_005fheader_005fdecompress" href="#mp3_005fheader_005fdecompress">15.9 mp3_header_decompress</a></li>
+    <li><a name="toc-noise-1" href="#noise-1">15.10 noise</a></li>
+    <li><a name="toc-remove_005fextra" href="#remove_005fextra">15.11 remove_extra</a></li>
+  </ul></li>
+  <li><a name="toc-Format-Options" href="#Format-Options">16. Format Options</a>
+  <ul class="toc">
+    <li><a name="toc-Format-stream-specifiers-1" href="#Format-stream-specifiers-1">16.1 Format stream specifiers</a></li>
+  </ul></li>
+  <li><a name="toc-Demuxers" href="#Demuxers">17. Demuxers</a>
+  <ul class="toc">
+    <li><a name="toc-applehttp" href="#applehttp">17.1 applehttp</a></li>
+    <li><a name="toc-asf" href="#asf">17.2 asf</a></li>
+    <li><a name="toc-concat-3" href="#concat-3">17.3 concat</a>
+    <ul class="toc">
+      <li><a name="toc-Syntax-1" href="#Syntax-1">17.3.1 Syntax</a></li>
+      <li><a name="toc-Options-13" href="#Options-13">17.3.2 Options</a></li>
+    </ul></li>
+    <li><a name="toc-flv" href="#flv">17.4 flv</a></li>
+    <li><a name="toc-libgme" href="#libgme">17.5 libgme</a></li>
+    <li><a name="toc-libquvi" href="#libquvi">17.6 libquvi</a></li>
+    <li><a name="toc-image2-2" href="#image2-2">17.7 image2</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-88" href="#Examples-88">17.7.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mpegts-1" href="#mpegts-1">17.8 mpegts</a></li>
+    <li><a name="toc-rawvideo" href="#rawvideo">17.9 rawvideo</a></li>
+    <li><a name="toc-sbg" href="#sbg">17.10 sbg</a></li>
+    <li><a name="toc-tedcaptions" href="#tedcaptions">17.11 tedcaptions</a></li>
+  </ul></li>
+  <li><a name="toc-Muxers" href="#Muxers">18. Muxers</a>
+  <ul class="toc">
+    <li><a name="toc-aiff-1" href="#aiff-1">18.1 aiff</a></li>
+    <li><a name="toc-crc-1" href="#crc-1">18.2 crc</a></li>
+    <li><a name="toc-framecrc-1" href="#framecrc-1">18.3 framecrc</a></li>
+    <li><a name="toc-framemd5-1" href="#framemd5-1">18.4 framemd5</a></li>
+    <li><a name="toc-gif-1" href="#gif-1">18.5 gif</a></li>
+    <li><a name="toc-hls-1" href="#hls-1">18.6 hls</a></li>
+    <li><a name="toc-ico-1" href="#ico-1">18.7 ico</a></li>
+    <li><a name="toc-image2-1" href="#image2-1">18.8 image2</a></li>
+    <li><a name="toc-matroska" href="#matroska">18.9 matroska</a></li>
+    <li><a name="toc-md5-1" href="#md5-1">18.10 md5</a></li>
+    <li><a name="toc-mov_002fmp4_002fismv" href="#mov_002fmp4_002fismv">18.11 mov/mp4/ismv</a></li>
+    <li><a name="toc-mp3" href="#mp3">18.12 mp3</a></li>
+    <li><a name="toc-mpegts" href="#mpegts">18.13 mpegts</a></li>
+    <li><a name="toc-null-1" href="#null-1">18.14 null</a></li>
+    <li><a name="toc-ogg" href="#ogg">18.15 ogg</a></li>
+    <li><a name="toc-segment_002c-stream_005fsegment_002c-ssegment" href="#segment_002c-stream_005fsegment_002c-ssegment">18.16 segment, stream_segment, ssegment</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-81" href="#Examples-81">18.16.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-tee" href="#tee">18.17 tee</a></li>
+  </ul></li>
+  <li><a name="toc-Metadata" href="#Metadata">19. Metadata</a></li>
+  <li><a name="toc-Protocols" href="#Protocols">20. Protocols</a>
+  <ul class="toc">
+    <li><a name="toc-bluray" href="#bluray">20.1 bluray</a></li>
+    <li><a name="toc-cache" href="#cache">20.2 cache</a></li>
+    <li><a name="toc-concat-1" href="#concat-1">20.3 concat</a></li>
+    <li><a name="toc-crypto" href="#crypto">20.4 crypto</a></li>
+    <li><a name="toc-data" href="#data">20.5 data</a></li>
+    <li><a name="toc-file" href="#file">20.6 file</a></li>
+    <li><a name="toc-ftp" href="#ftp">20.7 ftp</a></li>
+    <li><a name="toc-gopher" href="#gopher">20.8 gopher</a></li>
+    <li><a name="toc-hls-2" href="#hls-2">20.9 hls</a></li>
+    <li><a name="toc-http" href="#http">20.10 http</a>
+    <ul class="toc">
+      <li><a name="toc-HTTP-Cookies" href="#HTTP-Cookies">20.10.1 HTTP Cookies</a></li>
+    </ul></li>
+    <li><a name="toc-mmst" href="#mmst">20.11 mmst</a></li>
+    <li><a name="toc-mmsh" href="#mmsh">20.12 mmsh</a></li>
+    <li><a name="toc-md5-2" href="#md5-2">20.13 md5</a></li>
+    <li><a name="toc-pipe" href="#pipe">20.14 pipe</a></li>
+    <li><a name="toc-rtmp" href="#rtmp">20.15 rtmp</a></li>
+    <li><a name="toc-rtmpe" href="#rtmpe">20.16 rtmpe</a></li>
+    <li><a name="toc-rtmps" href="#rtmps">20.17 rtmps</a></li>
+    <li><a name="toc-rtmpt" href="#rtmpt">20.18 rtmpt</a></li>
+    <li><a name="toc-rtmpte" href="#rtmpte">20.19 rtmpte</a></li>
+    <li><a name="toc-rtmpts" href="#rtmpts">20.20 rtmpts</a></li>
+    <li><a name="toc-libssh" href="#libssh">20.21 libssh</a></li>
+    <li><a name="toc-librtmp-rtmp_002c-rtmpe_002c-rtmps_002c-rtmpt_002c-rtmpte" href="#librtmp-rtmp_002c-rtmpe_002c-rtmps_002c-rtmpt_002c-rtmpte">20.22 librtmp rtmp, rtmpe, rtmps, rtmpt, rtmpte</a></li>
+    <li><a name="toc-rtp" href="#rtp">20.23 rtp</a></li>
+    <li><a name="toc-rtsp" href="#rtsp">20.24 rtsp</a></li>
+    <li><a name="toc-sap" href="#sap">20.25 sap</a>
+    <ul class="toc">
+      <li><a name="toc-Muxer" href="#Muxer">20.25.1 Muxer</a></li>
+      <li><a name="toc-Demuxer" href="#Demuxer">20.25.2 Demuxer</a></li>
+    </ul></li>
+    <li><a name="toc-sctp" href="#sctp">20.26 sctp</a></li>
+    <li><a name="toc-srtp" href="#srtp">20.27 srtp</a></li>
+    <li><a name="toc-tcp" href="#tcp">20.28 tcp</a></li>
+    <li><a name="toc-tls" href="#tls">20.29 tls</a></li>
+    <li><a name="toc-udp" href="#udp">20.30 udp</a></li>
+    <li><a name="toc-unix" href="#unix">20.31 unix</a></li>
+  </ul></li>
+  <li><a name="toc-Device-Options" href="#Device-Options">21. Device Options</a></li>
+  <li><a name="toc-Input-Devices" href="#Input-Devices">22. Input Devices</a>
+  <ul class="toc">
+    <li><a name="toc-alsa-1" href="#alsa-1">22.1 alsa</a></li>
+    <li><a name="toc-bktr" href="#bktr">22.2 bktr</a></li>
+    <li><a name="toc-dshow" href="#dshow">22.3 dshow</a>
+    <ul class="toc">
+      <li><a name="toc-Options-18" href="#Options-18">22.3.1 Options</a></li>
+      <li><a name="toc-Examples-71" href="#Examples-71">22.3.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-dv1394" href="#dv1394">22.4 dv1394</a></li>
+    <li><a name="toc-fbdev-1" href="#fbdev-1">22.5 fbdev</a></li>
+    <li><a name="toc-iec61883" href="#iec61883">22.6 iec61883</a>
+    <ul class="toc">
+      <li><a name="toc-Options-5" href="#Options-5">22.6.1 Options</a></li>
+      <li><a name="toc-Examples-37" href="#Examples-37">22.6.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-jack" href="#jack">22.7 jack</a></li>
+    <li><a name="toc-lavfi" href="#lavfi">22.8 lavfi</a>
+    <ul class="toc">
+      <li><a name="toc-Options-31" href="#Options-31">22.8.1 Options</a></li>
+      <li><a name="toc-Examples-87" href="#Examples-87">22.8.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-libdc1394" href="#libdc1394">22.9 libdc1394</a></li>
+    <li><a name="toc-openal" href="#openal">22.10 openal</a>
+    <ul class="toc">
+      <li><a name="toc-Options-26" href="#Options-26">22.10.1 Options</a></li>
+      <li><a name="toc-Examples-74" href="#Examples-74">22.10.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-oss" href="#oss">22.11 oss</a></li>
+    <li><a name="toc-pulse-1" href="#pulse-1">22.12 pulse</a>
+    <ul class="toc">
+      <li><a name="toc-Options-30" href="#Options-30">22.12.1 Options</a></li>
+      <li><a name="toc-Examples-49" href="#Examples-49">22.12.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sndio-1" href="#sndio-1">22.13 sndio</a></li>
+    <li><a name="toc-video4linux2_002c-v4l2" href="#video4linux2_002c-v4l2">22.14 video4linux2, v4l2</a>
+    <ul class="toc">
+      <li><a name="toc-Options-2" href="#Options-2">22.14.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-vfwcap" href="#vfwcap">22.15 vfwcap</a></li>
+    <li><a name="toc-x11grab" href="#x11grab">22.16 x11grab</a>
+    <ul class="toc">
+      <li><a name="toc-Options-20" href="#Options-20">22.16.1 Options</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Output-Devices" href="#Output-Devices">23. Output Devices</a>
+  <ul class="toc">
+    <li><a name="toc-alsa" href="#alsa">23.1 alsa</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-33" href="#Examples-33">23.1.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-caca" href="#caca">23.2 caca</a>
+    <ul class="toc">
+      <li><a name="toc-Options-4" href="#Options-4">23.2.1 Options</a></li>
+      <li><a name="toc-Examples-56" href="#Examples-56">23.2.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-fbdev" href="#fbdev">23.3 fbdev</a>
+    <ul class="toc">
+      <li><a name="toc-Options-15" href="#Options-15">23.3.1 Options</a></li>
+      <li><a name="toc-Examples-66" href="#Examples-66">23.3.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-oss-1" href="#oss-1">23.4 oss</a></li>
+    <li><a name="toc-pulse" href="#pulse">23.5 pulse</a>
+    <ul class="toc">
+      <li><a name="toc-Options-6" href="#Options-6">23.5.1 Options</a></li>
+      <li><a name="toc-Examples-23" href="#Examples-23">23.5.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sdl" href="#sdl">23.6 sdl</a>
+    <ul class="toc">
+      <li><a name="toc-Options-12" href="#Options-12">23.6.1 Options</a></li>
+      <li><a name="toc-Interactive-commands" href="#Interactive-commands">23.6.2 Interactive commands</a></li>
+      <li><a name="toc-Examples-82" href="#Examples-82">23.6.3 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sndio" href="#sndio">23.7 sndio</a></li>
+    <li><a name="toc-xv" href="#xv">23.8 xv</a>
+    <ul class="toc">
+      <li><a name="toc-Options-3" href="#Options-3">23.8.1 Options</a></li>
+      <li><a name="toc-Examples-48" href="#Examples-48">23.8.2 Examples</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Resampler-Options" href="#Resampler-Options">24. Resampler Options</a></li>
+  <li><a name="toc-Scaler-Options" href="#Scaler-Options">25. Scaler Options</a></li>
+  <li><a name="toc-Filtering-Introduction" href="#Filtering-Introduction">26. Filtering Introduction</a></li>
+  <li><a name="toc-graph2dot" href="#graph2dot">27. graph2dot</a></li>
+  <li><a name="toc-Filtergraph-description" href="#Filtergraph-description">28. Filtergraph description</a>
+  <ul class="toc">
+    <li><a name="toc-Filtergraph-syntax-1" href="#Filtergraph-syntax-1">28.1 Filtergraph syntax</a></li>
+    <li><a name="toc-Notes-on-filtergraph-escaping" href="#Notes-on-filtergraph-escaping">28.2 Notes on filtergraph escaping</a></li>
+  </ul></li>
+  <li><a name="toc-Timeline-editing" href="#Timeline-editing">29. Timeline editing</a></li>
+  <li><a name="toc-Audio-Filters" href="#Audio-Filters">30. Audio Filters</a>
+  <ul class="toc">
+    <li><a name="toc-aconvert" href="#aconvert">30.1 aconvert</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-47" href="#Examples-47">30.1.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-adelay" href="#adelay">30.2 adelay</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-41" href="#Examples-41">30.2.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-aecho" href="#aecho">30.3 aecho</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-19" href="#Examples-19">30.3.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-aeval" href="#aeval">30.4 aeval</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-34" href="#Examples-34">30.4.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-afade" href="#afade">30.5 afade</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-24" href="#Examples-24">30.5.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-aformat-1" href="#aformat-1">30.6 aformat</a></li>
+    <li><a name="toc-allpass" href="#allpass">30.7 allpass</a></li>
+    <li><a name="toc-amerge" href="#amerge">30.8 amerge</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-62" href="#Examples-62">30.8.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-amix" href="#amix">30.9 amix</a></li>
+    <li><a name="toc-anull" href="#anull">30.10 anull</a></li>
+    <li><a name="toc-apad" href="#apad">30.11 apad</a></li>
+    <li><a name="toc-aphaser" href="#aphaser">30.12 aphaser</a></li>
+    <li><a name="toc-aresample-1" href="#aresample-1">30.13 aresample</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-22" href="#Examples-22">30.13.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-asetnsamples" href="#asetnsamples">30.14 asetnsamples</a></li>
+    <li><a name="toc-asetrate" href="#asetrate">30.15 asetrate</a></li>
+    <li><a name="toc-ashowinfo" href="#ashowinfo">30.16 ashowinfo</a></li>
+    <li><a name="toc-astats" href="#astats">30.17 astats</a></li>
+    <li><a name="toc-astreamsync" href="#astreamsync">30.18 astreamsync</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-46" href="#Examples-46">30.18.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-asyncts" href="#asyncts">30.19 asyncts</a></li>
+    <li><a name="toc-atempo" href="#atempo">30.20 atempo</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-60" href="#Examples-60">30.20.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-atrim" href="#atrim">30.21 atrim</a></li>
+    <li><a name="toc-bandpass" href="#bandpass">30.22 bandpass</a></li>
+    <li><a name="toc-bandreject" href="#bandreject">30.23 bandreject</a></li>
+    <li><a name="toc-bass" href="#bass">30.24 bass</a></li>
+    <li><a name="toc-biquad" href="#biquad">30.25 biquad</a></li>
+    <li><a name="toc-channelmap" href="#channelmap">30.26 channelmap</a></li>
+    <li><a name="toc-channelsplit" href="#channelsplit">30.27 channelsplit</a></li>
+    <li><a name="toc-compand" href="#compand">30.28 compand</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-15" href="#Examples-15">30.28.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-earwax" href="#earwax">30.29 earwax</a></li>
+    <li><a name="toc-equalizer" href="#equalizer">30.30 equalizer</a></li>
+    <li><a name="toc-highpass" href="#highpass">30.31 highpass</a></li>
+    <li><a name="toc-join" href="#join">30.32 join</a></li>
+    <li><a name="toc-ladspa" href="#ladspa">30.33 ladspa</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-9" href="#Examples-9">30.33.1 Examples</a></li>
+      <li><a name="toc-Commands-3" href="#Commands-3">30.33.2 Commands</a></li>
+    </ul></li>
+    <li><a name="toc-lowpass" href="#lowpass">30.34 lowpass</a></li>
+    <li><a name="toc-pan" href="#pan">30.35 pan</a>
+    <ul class="toc">
+      <li><a name="toc-Mixing-examples" href="#Mixing-examples">30.35.1 Mixing examples</a></li>
+      <li><a name="toc-Remapping-examples" href="#Remapping-examples">30.35.2 Remapping examples</a></li>
+    </ul></li>
+    <li><a name="toc-replaygain" href="#replaygain">30.36 replaygain</a></li>
+    <li><a name="toc-resample" href="#resample">30.37 resample</a></li>
+    <li><a name="toc-silencedetect" href="#silencedetect">30.38 silencedetect</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-64" href="#Examples-64">30.38.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-treble" href="#treble">30.39 treble</a></li>
+    <li><a name="toc-volume" href="#volume">30.40 volume</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-80" href="#Examples-80">30.40.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-volumedetect" href="#volumedetect">30.41 volumedetect</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-55" href="#Examples-55">30.41.1 Examples</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Audio-Sources" href="#Audio-Sources">31. Audio Sources</a>
+  <ul class="toc">
+    <li><a name="toc-abuffer" href="#abuffer">31.1 abuffer</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-27" href="#Examples-27">31.1.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-aevalsrc" href="#aevalsrc">31.2 aevalsrc</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-78" href="#Examples-78">31.2.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-anullsrc" href="#anullsrc">31.3 anullsrc</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-84" href="#Examples-84">31.3.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-flite" href="#flite">31.4 flite</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-85" href="#Examples-85">31.4.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sine" href="#sine">31.5 sine</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-32" href="#Examples-32">31.5.1 Examples</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Audio-Sinks" href="#Audio-Sinks">32. Audio Sinks</a>
+  <ul class="toc">
+    <li><a name="toc-abuffersink" href="#abuffersink">32.1 abuffersink</a></li>
+    <li><a name="toc-anullsink" href="#anullsink">32.2 anullsink</a></li>
+  </ul></li>
+  <li><a name="toc-Video-Filters" href="#Video-Filters">33. Video Filters</a>
+  <ul class="toc">
+    <li><a name="toc-alphaextract" href="#alphaextract">33.1 alphaextract</a></li>
+    <li><a name="toc-alphamerge" href="#alphamerge">33.2 alphamerge</a></li>
+    <li><a name="toc-ass" href="#ass">33.3 ass</a></li>
+    <li><a name="toc-bbox" href="#bbox">33.4 bbox</a></li>
+    <li><a name="toc-blackdetect" href="#blackdetect">33.5 blackdetect</a></li>
+    <li><a name="toc-blackframe" href="#blackframe">33.6 blackframe</a></li>
+    <li><a name="toc-blend" href="#blend">33.7 blend</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-54" href="#Examples-54">33.7.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-boxblur" href="#boxblur">33.8 boxblur</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-4" href="#Examples-4">33.8.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-colorbalance" href="#colorbalance">33.9 colorbalance</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-89" href="#Examples-89">33.9.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-colorchannelmixer" href="#colorchannelmixer">33.10 colorchannelmixer</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-65" href="#Examples-65">33.10.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-colormatrix" href="#colormatrix">33.11 colormatrix</a></li>
+    <li><a name="toc-copy" href="#copy">33.12 copy</a></li>
+    <li><a name="toc-crop" href="#crop">33.13 crop</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-8" href="#Examples-8">33.13.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-cropdetect" href="#cropdetect">33.14 cropdetect</a></li>
+    <li><a name="toc-curves-1" href="#curves-1">33.15 curves</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-75" href="#Examples-75">33.15.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-dctdnoiz" href="#dctdnoiz">33.16 dctdnoiz</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-20" href="#Examples-20">33.16.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-decimate-1" href="#decimate-1">33.17 decimate</a></li>
+    <li><a name="toc-delogo" href="#delogo">33.18 delogo</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-44" href="#Examples-44">33.18.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-deshake" href="#deshake">33.19 deshake</a></li>
+    <li><a name="toc-drawbox" href="#drawbox">33.20 drawbox</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-86" href="#Examples-86">33.20.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-drawgrid" href="#drawgrid">33.21 drawgrid</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-36" href="#Examples-36">33.21.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-drawtext-1" href="#drawtext-1">33.22 drawtext</a>
+    <ul class="toc">
+      <li><a name="toc-Syntax" href="#Syntax">33.22.1 Syntax</a></li>
+      <li><a name="toc-Text-expansion" href="#Text-expansion">33.22.2 Text expansion</a></li>
+      <li><a name="toc-Examples-58" href="#Examples-58">33.22.3 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-edgedetect" href="#edgedetect">33.23 edgedetect</a></li>
+    <li><a name="toc-extractplanes" href="#extractplanes">33.24 extractplanes</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-70" href="#Examples-70">33.24.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-elbg" href="#elbg">33.25 elbg</a></li>
+    <li><a name="toc-fade" href="#fade">33.26 fade</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-3" href="#Examples-3">33.26.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-field" href="#field">33.27 field</a></li>
+    <li><a name="toc-fieldmatch" href="#fieldmatch">33.28 fieldmatch</a>
+    <ul class="toc">
+      <li><a name="toc-p_002fc_002fn_002fu_002fb-meaning-1" href="#p_002fc_002fn_002fu_002fb-meaning-1">33.28.1 p/c/n/u/b meaning</a>
+      <ul class="toc">
+        <li><a name="toc-p_002fc_002fn" href="#p_002fc_002fn">33.28.1.1 p/c/n</a></li>
+        <li><a name="toc-u_002fb" href="#u_002fb">33.28.1.2 u/b</a></li>
+      </ul></li>
+      <li><a name="toc-Examples-52" href="#Examples-52">33.28.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-fieldorder" href="#fieldorder">33.29 fieldorder</a></li>
+    <li><a name="toc-fifo" href="#fifo">33.30 fifo</a></li>
+    <li><a name="toc-format-1" href="#format-1">33.31 format</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-57" href="#Examples-57">33.31.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-fps-1" href="#fps-1">33.32 fps</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-25" href="#Examples-25">33.32.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-framestep" href="#framestep">33.33 framestep</a></li>
+    <li><a name="toc-frei0r-1" href="#frei0r-1">33.34 frei0r</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-12" href="#Examples-12">33.34.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-geq" href="#geq">33.35 geq</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-79" href="#Examples-79">33.35.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-gradfun" href="#gradfun">33.36 gradfun</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-72" href="#Examples-72">33.36.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-haldclut-1" href="#haldclut-1">33.37 haldclut</a>
+    <ul class="toc">
+      <li><a name="toc-Workflow-examples" href="#Workflow-examples">33.37.1 Workflow examples</a>
+      <ul class="toc">
+        <li><a name="toc-Hald-CLUT-video-stream" href="#Hald-CLUT-video-stream">33.37.1.1 Hald CLUT video stream</a></li>
+        <li><a name="toc-Hald-CLUT-with-preview" href="#Hald-CLUT-with-preview">33.37.1.2 Hald CLUT with preview</a></li>
+      </ul>
+</li>
+    </ul></li>
+    <li><a name="toc-hflip" href="#hflip">33.38 hflip</a></li>
+    <li><a name="toc-histeq" href="#histeq">33.39 histeq</a></li>
+    <li><a name="toc-histogram" href="#histogram">33.40 histogram</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-16" href="#Examples-16">33.40.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-hqdn3d-1" href="#hqdn3d-1">33.41 hqdn3d</a></li>
+    <li><a name="toc-hue" href="#hue">33.42 hue</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-51" href="#Examples-51">33.42.1 Examples</a></li>
+      <li><a name="toc-Commands" href="#Commands">33.42.2 Commands</a></li>
+    </ul></li>
+    <li><a name="toc-idet" href="#idet">33.43 idet</a></li>
+    <li><a name="toc-il" href="#il">33.44 il</a></li>
+    <li><a name="toc-interlace" href="#interlace">33.45 interlace</a></li>
+    <li><a name="toc-kerndeint" href="#kerndeint">33.46 kerndeint</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-50" href="#Examples-50">33.46.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-lut3d-1" href="#lut3d-1">33.47 lut3d</a></li>
+    <li><a name="toc-lut_002c-lutrgb_002c-lutyuv" href="#lut_002c-lutrgb_002c-lutyuv">33.48 lut, lutrgb, lutyuv</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-14" href="#Examples-14">33.48.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mergeplanes" href="#mergeplanes">33.49 mergeplanes</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-67" href="#Examples-67">33.49.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mcdeint" href="#mcdeint">33.50 mcdeint</a></li>
+    <li><a name="toc-mp" href="#mp">33.51 mp</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-7" href="#Examples-7">33.51.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mpdecimate" href="#mpdecimate">33.52 mpdecimate</a></li>
+    <li><a name="toc-negate" href="#negate">33.53 negate</a></li>
+    <li><a name="toc-noformat" href="#noformat">33.54 noformat</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-53" href="#Examples-53">33.54.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-noise" href="#noise">33.55 noise</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-17" href="#Examples-17">33.55.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-null" href="#null">33.56 null</a></li>
+    <li><a name="toc-ocv" href="#ocv">33.57 ocv</a>
+    <ul class="toc">
+      <li><a name="toc-dilate-1" href="#dilate-1">33.57.1 dilate</a></li>
+      <li><a name="toc-erode" href="#erode">33.57.2 erode</a></li>
+      <li><a name="toc-smooth" href="#smooth">33.57.3 smooth</a></li>
+    </ul></li>
+    <li><a name="toc-overlay-1" href="#overlay-1">33.58 overlay</a>
+    <ul class="toc">
+      <li><a name="toc-Commands-2" href="#Commands-2">33.58.1 Commands</a></li>
+      <li><a name="toc-Examples-73" href="#Examples-73">33.58.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-owdenoise" href="#owdenoise">33.59 owdenoise</a></li>
+    <li><a name="toc-pad" href="#pad">33.60 pad</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-63" href="#Examples-63">33.60.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-perspective" href="#perspective">33.61 perspective</a></li>
+    <li><a name="toc-phase" href="#phase">33.62 phase</a></li>
+    <li><a name="toc-pixdesctest" href="#pixdesctest">33.63 pixdesctest</a></li>
+    <li><a name="toc-pp" href="#pp">33.64 pp</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-26" href="#Examples-26">33.64.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-psnr" href="#psnr">33.65 psnr</a></li>
+    <li><a name="toc-pullup" href="#pullup">33.66 pullup</a></li>
+    <li><a name="toc-removelogo" href="#removelogo">33.67 removelogo</a></li>
+    <li><a name="toc-rotate" href="#rotate">33.68 rotate</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-61" href="#Examples-61">33.68.1 Examples</a></li>
+      <li><a name="toc-Commands-1" href="#Commands-1">33.68.2 Commands</a></li>
+    </ul></li>
+    <li><a name="toc-sab" href="#sab">33.69 sab</a></li>
+    <li><a name="toc-scale-1" href="#scale-1">33.70 scale</a>
+    <ul class="toc">
+      <li><a name="toc-Options-21" href="#Options-21">33.70.1 Options</a></li>
+      <li><a name="toc-Examples-1" href="#Examples-1">33.70.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-separatefields" href="#separatefields">33.71 separatefields</a></li>
+    <li><a name="toc-setdar_002c-setsar" href="#setdar_002c-setsar">33.72 setdar, setsar</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-91" href="#Examples-91">33.72.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-setfield-1" href="#setfield-1">33.73 setfield</a></li>
+    <li><a name="toc-showinfo" href="#showinfo">33.74 showinfo</a></li>
+    <li><a name="toc-smartblur-1" href="#smartblur-1">33.75 smartblur</a></li>
+    <li><a name="toc-stereo3d" href="#stereo3d">33.76 stereo3d</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-77" href="#Examples-77">33.76.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-spp" href="#spp">33.77 spp</a></li>
+    <li><a name="toc-subtitles-1" href="#subtitles-1">33.78 subtitles</a></li>
+    <li><a name="toc-super2xsai" href="#super2xsai">33.79 super2xsai</a></li>
+    <li><a name="toc-swapuv" href="#swapuv">33.80 swapuv</a></li>
+    <li><a name="toc-telecine" href="#telecine">33.81 telecine</a></li>
+    <li><a name="toc-thumbnail" href="#thumbnail">33.82 thumbnail</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-30" href="#Examples-30">33.82.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-tile" href="#tile">33.83 tile</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-11" href="#Examples-11">33.83.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-tinterlace" href="#tinterlace">33.84 tinterlace</a></li>
+    <li><a name="toc-transpose" href="#transpose">33.85 transpose</a></li>
+    <li><a name="toc-trim" href="#trim">33.86 trim</a></li>
+    <li><a name="toc-unsharp" href="#unsharp">33.87 unsharp</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-6" href="#Examples-6">33.87.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-vidstabdetect-1" href="#vidstabdetect-1">33.88 vidstabdetect</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-5" href="#Examples-5">33.88.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-vidstabtransform-1" href="#vidstabtransform-1">33.89 vidstabtransform</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-10" href="#Examples-10">33.89.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-vflip" href="#vflip">33.90 vflip</a></li>
+    <li><a name="toc-vignette" href="#vignette">33.91 vignette</a>
+    <ul class="toc">
+      <li><a name="toc-Expressions" href="#Expressions">33.91.1 Expressions</a></li>
+      <li><a name="toc-Examples-45" href="#Examples-45">33.91.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-w3fdif" href="#w3fdif">33.92 w3fdif</a></li>
+    <li><a name="toc-yadif-1" href="#yadif-1">33.93 yadif</a></li>
+  </ul></li>
+  <li><a name="toc-Video-Sources" href="#Video-Sources">34. Video Sources</a>
+  <ul class="toc">
+    <li><a name="toc-buffer" href="#buffer">34.1 buffer</a></li>
+    <li><a name="toc-cellauto" href="#cellauto">34.2 cellauto</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-38" href="#Examples-38">34.2.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mandelbrot" href="#mandelbrot">34.3 mandelbrot</a></li>
+    <li><a name="toc-mptestsrc" href="#mptestsrc">34.4 mptestsrc</a></li>
+    <li><a name="toc-frei0r_005fsrc" href="#frei0r_005fsrc">34.5 frei0r_src</a></li>
+    <li><a name="toc-life" href="#life">34.6 life</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-21" href="#Examples-21">34.6.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-color_002c-haldclutsrc_002c-nullsrc_002c-rgbtestsrc_002c-smptebars_002c-smptehdbars_002c-testsrc" href="#color_002c-haldclutsrc_002c-nullsrc_002c-rgbtestsrc_002c-smptebars_002c-smptehdbars_002c-testsrc">34.7 color, haldclutsrc, nullsrc, rgbtestsrc, smptebars, smptehdbars, testsrc</a>
+    <ul class="toc">
+      <li><a name="toc-Commands-4" href="#Commands-4">34.7.1 Commands</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Video-Sinks" href="#Video-Sinks">35. Video Sinks</a>
+  <ul class="toc">
+    <li><a name="toc-buffersink" href="#buffersink">35.1 buffersink</a></li>
+    <li><a name="toc-nullsink" href="#nullsink">35.2 nullsink</a></li>
+  </ul></li>
+  <li><a name="toc-Multimedia-Filters" href="#Multimedia-Filters">36. Multimedia Filters</a>
+  <ul class="toc">
+    <li><a name="toc-avectorscope" href="#avectorscope">36.1 avectorscope</a>
+    <ul class="toc">
+      <li><a name="toc-Examples" href="#Examples">36.1.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-concat-2" href="#concat-2">36.2 concat</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-40" href="#Examples-40">36.2.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-ebur128" href="#ebur128">36.3 ebur128</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-18" href="#Examples-18">36.3.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-interleave_002c-ainterleave" href="#interleave_002c-ainterleave">36.4 interleave, ainterleave</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-35" href="#Examples-35">36.4.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-perms_002c-aperms" href="#perms_002c-aperms">36.5 perms, aperms</a></li>
+    <li><a name="toc-select_002c-aselect" href="#select_002c-aselect">36.6 select, aselect</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-76" href="#Examples-76">36.6.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sendcmd_002c-asendcmd" href="#sendcmd_002c-asendcmd">36.7 sendcmd, asendcmd</a>
+    <ul class="toc">
+      <li><a name="toc-Commands-syntax" href="#Commands-syntax">36.7.1 Commands syntax</a></li>
+      <li><a name="toc-Examples-39" href="#Examples-39">36.7.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-setpts_002c-asetpts" href="#setpts_002c-asetpts">36.8 setpts, asetpts</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-42" href="#Examples-42">36.8.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-settb_002c-asettb" href="#settb_002c-asettb">36.9 settb, asettb</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-68" href="#Examples-68">36.9.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-showspectrum" href="#showspectrum">36.10 showspectrum</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-2" href="#Examples-2">36.10.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-showwaves" href="#showwaves">36.11 showwaves</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-90" href="#Examples-90">36.11.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-split_002c-asplit" href="#split_002c-asplit">36.12 split, asplit</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-83" href="#Examples-83">36.12.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-zmq_002c-azmq" href="#zmq_002c-azmq">36.13 zmq, azmq</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-29" href="#Examples-29">36.13.1 Examples</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Multimedia-Sources" href="#Multimedia-Sources">37. Multimedia Sources</a>
+  <ul class="toc">
+    <li><a name="toc-amovie" href="#amovie">37.1 amovie</a></li>
+    <li><a name="toc-movie-1" href="#movie-1">37.2 movie</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-69" href="#Examples-69">37.2.1 Examples</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-See-Also" href="#See-Also">38. See Also</a></li>
+  <li><a name="toc-Authors" href="#Authors">39. Authors</a></li>
+</ul>
+</div>
+
+<a name="Synopsis"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Synopsis">1. Synopsis</a></h1>
+
+<p>ffplay [<var>options</var>] [&lsquo;<tt>input_file</tt>&rsquo;]
+</p>
+<a name="Description"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Description">2. Description</a></h1>
+
+<p>FFplay is a very simple and portable media player using the FFmpeg
+libraries and the SDL library. It is mostly used as a testbed for the
+various FFmpeg APIs.
+</p>
+<a name="Options-25"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Options-25">3. Options</a></h1>
+
+<p>All the numerical options, if not specified otherwise, accept a string
+representing a number as input, which may be followed by one of the SI
+unit prefixes, for example: &rsquo;K&rsquo;, &rsquo;M&rsquo;, or &rsquo;G&rsquo;.
+</p>
+<p>If &rsquo;i&rsquo; is appended to the SI unit prefix, the complete prefix will be
+interpreted as a unit prefix for binary multiplies, which are based on
+powers of 1024 instead of powers of 1000. Appending &rsquo;B&rsquo; to the SI unit
+prefix multiplies the value by 8. This allows using, for example:
+&rsquo;KB&rsquo;, &rsquo;MiB&rsquo;, &rsquo;G&rsquo; and &rsquo;B&rsquo; as number suffixes.
+</p>
+<p>Options which do not take arguments are boolean options, and set the
+corresponding value to true. They can be set to false by prefixing
+the option name with &quot;no&quot;. For example using &quot;-nofoo&quot;
+will set the boolean option with name &quot;foo&quot; to false.
+</p>
+<p><a name="Stream-specifiers"></a>
+</p><a name="Stream-specifiers-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-Stream-specifiers-1">3.1 Stream specifiers</a></h2>
+<p>Some options are applied per-stream, e.g. bitrate or codec. Stream specifiers
+are used to precisely specify which stream(s) a given option belongs to.
+</p>
+<p>A stream specifier is a string generally appended to the option name and
+separated from it by a colon. E.g. <code>-codec:a:1 ac3</code> contains the
+<code>a:1</code> stream specifier, which matches the second audio stream. Therefore, it
+would select the ac3 codec for the second audio stream.
+</p>
+<p>A stream specifier can match several streams, so that the option is applied to all
+of them. E.g. the stream specifier in <code>-b:a 128k</code> matches all audio
+streams.
+</p>
+<p>An empty stream specifier matches all streams. For example, <code>-codec copy</code>
+or <code>-codec: copy</code> would copy all the streams without reencoding.
+</p>
+<p>Possible forms of stream specifiers are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp><var>stream_index</var></samp>&rsquo;</dt>
+<dd><p>Matches the stream with this index. E.g. <code>-threads:1 4</code> would set the
+thread count for the second stream to 4.
+</p></dd>
+<dt> &lsquo;<samp><var>stream_type</var>[:<var>stream_index</var>]</samp>&rsquo;</dt>
+<dd><p><var>stream_type</var> is one of following: &rsquo;v&rsquo; for video, &rsquo;a&rsquo; for audio, &rsquo;s&rsquo; for subtitle,
+&rsquo;d&rsquo; for data, and &rsquo;t&rsquo; for attachments. If <var>stream_index</var> is given, then it matches
+stream number <var>stream_index</var> of this type. Otherwise, it matches all
+streams of this type.
+</p></dd>
+<dt> &lsquo;<samp>p:<var>program_id</var>[:<var>stream_index</var>]</samp>&rsquo;</dt>
+<dd><p>If <var>stream_index</var> is given, then it matches the stream with number <var>stream_index</var>
+in the program with the id <var>program_id</var>. Otherwise, it matches all streams in the
+program.
+</p></dd>
+<dt> &lsquo;<samp>#<var>stream_id</var></samp>&rsquo;</dt>
+<dd><p>Matches the stream by a format-specific ID.
+</p></dd>
+</dl>
+
+<a name="Generic-options"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-Generic-options">3.2 Generic options</a></h2>
+
+<p>These options are shared amongst the ff* tools.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-L</samp>&rsquo;</dt>
+<dd><p>Show license.
+</p>
+</dd>
+<dt> &lsquo;<samp>-h, -?, -help, --help [<var>arg</var>]</samp>&rsquo;</dt>
+<dd><p>Show help. An optional parameter may be specified to print help about a specific
+item. If no argument is specified, only basic (non advanced) tool
+options are shown.
+</p>
+<p>Possible values of <var>arg</var> are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>long</samp>&rsquo;</dt>
+<dd><p>Print advanced tool options in addition to the basic tool options.
+</p>
+</dd>
+<dt> &lsquo;<samp>full</samp>&rsquo;</dt>
+<dd><p>Print complete list of options, including shared and private options
+for encoders, decoders, demuxers, muxers, filters, etc.
+</p>
+</dd>
+<dt> &lsquo;<samp>decoder=<var>decoder_name</var></samp>&rsquo;</dt>
+<dd><p>Print detailed information about the decoder named <var>decoder_name</var>. Use the
+&lsquo;<samp>-decoders</samp>&rsquo; option to get a list of all decoders.
+</p>
+</dd>
+<dt> &lsquo;<samp>encoder=<var>encoder_name</var></samp>&rsquo;</dt>
+<dd><p>Print detailed information about the encoder named <var>encoder_name</var>. Use the
+&lsquo;<samp>-encoders</samp>&rsquo; option to get a list of all encoders.
+</p>
+</dd>
+<dt> &lsquo;<samp>demuxer=<var>demuxer_name</var></samp>&rsquo;</dt>
+<dd><p>Print detailed information about the demuxer named <var>demuxer_name</var>. Use the
+&lsquo;<samp>-formats</samp>&rsquo; option to get a list of all demuxers and muxers.
+</p>
+</dd>
+<dt> &lsquo;<samp>muxer=<var>muxer_name</var></samp>&rsquo;</dt>
+<dd><p>Print detailed information about the muxer named <var>muxer_name</var>. Use the
+&lsquo;<samp>-formats</samp>&rsquo; option to get a list of all muxers and demuxers.
+</p>
+</dd>
+<dt> &lsquo;<samp>filter=<var>filter_name</var></samp>&rsquo;</dt>
+<dd><p>Print detailed information about the filter name <var>filter_name</var>. Use the
+&lsquo;<samp>-filters</samp>&rsquo; option to get a list of all filters.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-version</samp>&rsquo;</dt>
+<dd><p>Show version.
+</p>
+</dd>
+<dt> &lsquo;<samp>-formats</samp>&rsquo;</dt>
+<dd><p>Show available formats.
+</p>
+</dd>
+<dt> &lsquo;<samp>-codecs</samp>&rsquo;</dt>
+<dd><p>Show all codecs known to libavcodec.
+</p>
+<p>Note that the term &rsquo;codec&rsquo; is used throughout this documentation as a shortcut
+for what is more correctly called a media bitstream format.
+</p>
+</dd>
+<dt> &lsquo;<samp>-decoders</samp>&rsquo;</dt>
+<dd><p>Show available decoders.
+</p>
+</dd>
+<dt> &lsquo;<samp>-encoders</samp>&rsquo;</dt>
+<dd><p>Show all available encoders.
+</p>
+</dd>
+<dt> &lsquo;<samp>-bsfs</samp>&rsquo;</dt>
+<dd><p>Show available bitstream filters.
+</p>
+</dd>
+<dt> &lsquo;<samp>-protocols</samp>&rsquo;</dt>
+<dd><p>Show available protocols.
+</p>
+</dd>
+<dt> &lsquo;<samp>-filters</samp>&rsquo;</dt>
+<dd><p>Show available libavfilter filters.
+</p>
+</dd>
+<dt> &lsquo;<samp>-pix_fmts</samp>&rsquo;</dt>
+<dd><p>Show available pixel formats.
+</p>
+</dd>
+<dt> &lsquo;<samp>-sample_fmts</samp>&rsquo;</dt>
+<dd><p>Show available sample formats.
+</p>
+</dd>
+<dt> &lsquo;<samp>-layouts</samp>&rsquo;</dt>
+<dd><p>Show channel names and standard channel layouts.
+</p>
+</dd>
+<dt> &lsquo;<samp>-colors</samp>&rsquo;</dt>
+<dd><p>Show recognized color names.
+</p>
+</dd>
+<dt> &lsquo;<samp>-loglevel [repeat+]<var>loglevel</var> | -v [repeat+]<var>loglevel</var></samp>&rsquo;</dt>
+<dd><p>Set the logging level used by the library.
+Adding &quot;repeat+&quot; indicates that repeated log output should not be compressed
+to the first line and the &quot;Last message repeated n times&quot; line will be
+omitted. &quot;repeat&quot; can also be used alone.
+If &quot;repeat&quot; is used alone, and with no prior loglevel set, the default
+loglevel will be used. If multiple loglevel parameters are given, using
+&rsquo;repeat&rsquo; will not change the loglevel.
+<var>loglevel</var> is a number or a string containing one of the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>quiet</samp>&rsquo;</dt>
+<dd><p>Show nothing at all; be silent.
+</p></dd>
+<dt> &lsquo;<samp>panic</samp>&rsquo;</dt>
+<dd><p>Only show fatal errors which could lead the process to crash, such as
+and assert failure. This is not currently used for anything.
+</p></dd>
+<dt> &lsquo;<samp>fatal</samp>&rsquo;</dt>
+<dd><p>Only show fatal errors. These are errors after which the process absolutely
+cannot continue after.
+</p></dd>
+<dt> &lsquo;<samp>error</samp>&rsquo;</dt>
+<dd><p>Show all errors, including ones which can be recovered from.
+</p></dd>
+<dt> &lsquo;<samp>warning</samp>&rsquo;</dt>
+<dd><p>Show all warnings and errors. Any message related to possibly
+incorrect or unexpected events will be shown.
+</p></dd>
+<dt> &lsquo;<samp>info</samp>&rsquo;</dt>
+<dd><p>Show informative messages during processing. This is in addition to
+warnings and errors. This is the default value.
+</p></dd>
+<dt> &lsquo;<samp>verbose</samp>&rsquo;</dt>
+<dd><p>Same as <code>info</code>, except more verbose.
+</p></dd>
+<dt> &lsquo;<samp>debug</samp>&rsquo;</dt>
+<dd><p>Show everything, including debugging information.
+</p></dd>
+</dl>
+
+<p>By default the program logs to stderr, if coloring is supported by the
+terminal, colors are used to mark errors and warnings. Log coloring
+can be disabled setting the environment variable
+<code>AV_LOG_FORCE_NOCOLOR</code> or <code>NO_COLOR</code>, or can be forced setting
+the environment variable <code>AV_LOG_FORCE_COLOR</code>.
+The use of the environment variable <code>NO_COLOR</code> is deprecated and
+will be dropped in a following FFmpeg version.
+</p>
+</dd>
+<dt> &lsquo;<samp>-report</samp>&rsquo;</dt>
+<dd><p>Dump full command line and console output to a file named
+<code><var>program</var>-<var>YYYYMMDD</var>-<var>HHMMSS</var>.log</code> in the current
+directory.
+This file can be useful for bug reports.
+It also implies <code>-loglevel verbose</code>.
+</p>
+<p>Setting the environment variable <code>FFREPORT</code> to any value has the
+same effect. If the value is a &rsquo;:&rsquo;-separated key=value sequence, these
+options will affect the report; options values must be escaped if they
+contain special characters or the options delimiter &rsquo;:&rsquo; (see the
+&ldquo;Quoting and escaping&rdquo; section in the ffmpeg-utils manual). The
+following option is recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>file</samp>&rsquo;</dt>
+<dd><p>set the file name to use for the report; <code>%p</code> is expanded to the name
+of the program, <code>%t</code> is expanded to a timestamp, <code>%%</code> is expanded
+to a plain <code>%</code>
+</p></dd>
+</dl>
+
+<p>Errors in parsing the environment variable are not fatal, and will not
+appear in the report.
+</p>
+</dd>
+<dt> &lsquo;<samp>-cpuflags flags (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Allows setting and clearing cpu flags. This option is intended
+for testing. Do not use it unless you know what you&rsquo;re doing.
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -cpuflags -sse+mmx ...
+ffmpeg -cpuflags mmx ...
+ffmpeg -cpuflags 0 ...
+</pre></td></tr></table>
+<p>Possible flags for this option are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>x86</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>mmx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mmxext</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse2slow</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse3</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse3slow</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ssse3</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>atom</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse4.1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse4.2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>avx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>xop</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>fma4</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>3dnow</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>3dnowext</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>cmov</samp>&rsquo;</dt>
+</dl>
+</dd>
+<dt> &lsquo;<samp>ARM</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>armv5te</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>armv6</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>armv6t2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vfp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vfpv3</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>neon</samp>&rsquo;</dt>
+</dl>
+</dd>
+<dt> &lsquo;<samp>PowerPC</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>altivec</samp>&rsquo;</dt>
+</dl>
+</dd>
+<dt> &lsquo;<samp>Specific Processors</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>pentium2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>pentium3</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>pentium4</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>k6</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>k62</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>athlon</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>athlonxp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>k8</samp>&rsquo;</dt>
+</dl>
+</dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-opencl_bench</samp>&rsquo;</dt>
+<dd><p>Benchmark all available OpenCL devices and show the results. This option
+is only available when FFmpeg has been compiled with <code>--enable-opencl</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>-opencl_options options (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Set OpenCL environment options. This option is only available when
+FFmpeg has been compiled with <code>--enable-opencl</code>.
+</p>
+<p><var>options</var> must be a list of <var>key</var>=<var>value</var> option pairs
+separated by &rsquo;:&rsquo;. See the &ldquo;OpenCL Options&rdquo; section in the
+ffmpeg-utils manual for the list of supported options.
+</p></dd>
+</dl>
+
+<a name="AVOptions"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-AVOptions">3.3 AVOptions</a></h2>
+
+<p>These options are provided directly by the libavformat, libavdevice and
+libavcodec libraries. To see the list of available AVOptions, use the
+&lsquo;<samp>-help</samp>&rsquo; option. They are separated into two categories:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>generic</samp>&rsquo;</dt>
+<dd><p>These options can be set for any container, codec or device. Generic options
+are listed under AVFormatContext options for containers/devices and under
+AVCodecContext options for codecs.
+</p></dd>
+<dt> &lsquo;<samp>private</samp>&rsquo;</dt>
+<dd><p>These options are specific to the given container, device or codec. Private
+options are listed under their corresponding containers/devices/codecs.
+</p></dd>
+</dl>
+
+<p>For example to write an ID3v2.3 header instead of a default ID3v2.4 to
+an MP3 file, use the &lsquo;<samp>id3v2_version</samp>&rsquo; private option of the MP3
+muxer:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.flac -id3v2_version 3 out.mp3
+</pre></td></tr></table>
+
+<p>All codec AVOptions are per-stream, and thus a stream specifier
+should be attached to them.
+</p>
+<p>Note: the &lsquo;<samp>-nooption</samp>&rsquo; syntax cannot be used for boolean
+AVOptions, use &lsquo;<samp>-option 0</samp>&rsquo;/&lsquo;<samp>-option 1</samp>&rsquo;.
+</p>
+<p>Note: the old undocumented way of specifying per-stream AVOptions by
+prepending v/a/s to the options name is now obsolete and will be
+removed soon.
+</p>
+<a name="Main-options"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-Main-options">3.4 Main options</a></h2>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-x <var>width</var></samp>&rsquo;</dt>
+<dd><p>Force displayed width.
+</p></dd>
+<dt> &lsquo;<samp>-y <var>height</var></samp>&rsquo;</dt>
+<dd><p>Force displayed height.
+</p></dd>
+<dt> &lsquo;<samp>-s <var>size</var></samp>&rsquo;</dt>
+<dd><p>Set frame size (WxH or abbreviation), needed for videos which do
+not contain a header with the frame size like raw YUV.  This option
+has been deprecated in favor of private options, try -video_size.
+</p></dd>
+<dt> &lsquo;<samp>-an</samp>&rsquo;</dt>
+<dd><p>Disable audio.
+</p></dd>
+<dt> &lsquo;<samp>-vn</samp>&rsquo;</dt>
+<dd><p>Disable video.
+</p></dd>
+<dt> &lsquo;<samp>-ss <var>pos</var></samp>&rsquo;</dt>
+<dd><p>Seek to a given position in seconds.
+</p></dd>
+<dt> &lsquo;<samp>-t <var>duration</var></samp>&rsquo;</dt>
+<dd><p>play &lt;duration&gt; seconds of audio/video
+</p></dd>
+<dt> &lsquo;<samp>-bytes</samp>&rsquo;</dt>
+<dd><p>Seek by bytes.
+</p></dd>
+<dt> &lsquo;<samp>-nodisp</samp>&rsquo;</dt>
+<dd><p>Disable graphical display.
+</p></dd>
+<dt> &lsquo;<samp>-f <var>fmt</var></samp>&rsquo;</dt>
+<dd><p>Force format.
+</p></dd>
+<dt> &lsquo;<samp>-window_title <var>title</var></samp>&rsquo;</dt>
+<dd><p>Set window title (default is the input filename).
+</p></dd>
+<dt> &lsquo;<samp>-loop <var>number</var></samp>&rsquo;</dt>
+<dd><p>Loops movie playback &lt;number&gt; times. 0 means forever.
+</p></dd>
+<dt> &lsquo;<samp>-showmode <var>mode</var></samp>&rsquo;</dt>
+<dd><p>Set the show mode to use.
+Available values for <var>mode</var> are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0, video</samp>&rsquo;</dt>
+<dd><p>show video
+</p></dd>
+<dt> &lsquo;<samp>1, waves</samp>&rsquo;</dt>
+<dd><p>show audio waves
+</p></dd>
+<dt> &lsquo;<samp>2, rdft</samp>&rsquo;</dt>
+<dd><p>show audio frequency band using RDFT ((Inverse) Real Discrete Fourier Transform)
+</p></dd>
+</dl>
+
+<p>Default value is &quot;video&quot;, if video is not present or cannot be played
+&quot;rdft&quot; is automatically selected.
+</p>
+<p>You can interactively cycle through the available show modes by
+pressing the key &lt;w&gt;.
+</p>
+</dd>
+<dt> &lsquo;<samp>-vf <var>filtergraph</var></samp>&rsquo;</dt>
+<dd><p>Create the filtergraph specified by <var>filtergraph</var> and use it to
+filter the video stream.
+</p>
+<p><var>filtergraph</var> is a description of the filtergraph to apply to
+the stream, and must have a single video input and a single video
+output. In the filtergraph, the input is associated to the label
+<code>in</code>, and the output to the label <code>out</code>. See the
+ffmpeg-filters manual for more information about the filtergraph
+syntax.
+</p>
+</dd>
+<dt> &lsquo;<samp>-af <var>filtergraph</var></samp>&rsquo;</dt>
+<dd><p><var>filtergraph</var> is a description of the filtergraph to apply to
+the input audio.
+Use the option &quot;-filters&quot; to show all the available filters (including
+sources and sinks).
+</p>
+</dd>
+<dt> &lsquo;<samp>-i <var>input_file</var></samp>&rsquo;</dt>
+<dd><p>Read <var>input_file</var>.
+</p></dd>
+</dl>
+
+<a name="Advanced-options"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-Advanced-options">3.5 Advanced options</a></h2>
+<dl compact="compact">
+<dt> &lsquo;<samp>-pix_fmt <var>format</var></samp>&rsquo;</dt>
+<dd><p>Set pixel format.
+This option has been deprecated in favor of private options, try -pixel_format.
+</p>
+</dd>
+<dt> &lsquo;<samp>-stats</samp>&rsquo;</dt>
+<dd><p>Print several playback statistics, in particular show the stream
+duration, the codec parameters, the current position in the stream and
+the audio/video synchronisation drift. It is on by default, to
+explicitly disable it you need to specify <code>-nostats</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>-bug</samp>&rsquo;</dt>
+<dd><p>Work around bugs.
+</p></dd>
+<dt> &lsquo;<samp>-fast</samp>&rsquo;</dt>
+<dd><p>Non-spec-compliant optimizations.
+</p></dd>
+<dt> &lsquo;<samp>-genpts</samp>&rsquo;</dt>
+<dd><p>Generate pts.
+</p></dd>
+<dt> &lsquo;<samp>-rtp_tcp</samp>&rsquo;</dt>
+<dd><p>Force RTP/TCP protocol usage instead of RTP/UDP. It is only meaningful
+if you are streaming with the RTSP protocol.
+</p></dd>
+<dt> &lsquo;<samp>-sync <var>type</var></samp>&rsquo;</dt>
+<dd><p>Set the master clock to audio (<code>type=audio</code>), video
+(<code>type=video</code>) or external (<code>type=ext</code>). Default is audio. The
+master clock is used to control audio-video synchronization. Most media
+players use audio as master clock, but in some cases (streaming or high
+quality broadcast) it is necessary to change that. This option is mainly
+used for debugging purposes.
+</p></dd>
+<dt> &lsquo;<samp>-threads <var>count</var></samp>&rsquo;</dt>
+<dd><p>Set the thread count.
+</p></dd>
+<dt> &lsquo;<samp>-ast <var>audio_stream_number</var></samp>&rsquo;</dt>
+<dd><p>Select the desired audio stream number, counting from 0. The number
+refers to the list of all the input audio streams. If it is greater
+than the number of audio streams minus one, then the last one is
+selected, if it is negative the audio playback is disabled.
+</p></dd>
+<dt> &lsquo;<samp>-vst <var>video_stream_number</var></samp>&rsquo;</dt>
+<dd><p>Select the desired video stream number, counting from 0. The number
+refers to the list of all the input video streams. If it is greater
+than the number of video streams minus one, then the last one is
+selected, if it is negative the video playback is disabled.
+</p></dd>
+<dt> &lsquo;<samp>-sst <var>subtitle_stream_number</var></samp>&rsquo;</dt>
+<dd><p>Select the desired subtitle stream number, counting from 0. The number
+refers to the list of all the input subtitle streams. If it is greater
+than the number of subtitle streams minus one, then the last one is
+selected, if it is negative the subtitle rendering is disabled.
+</p></dd>
+<dt> &lsquo;<samp>-autoexit</samp>&rsquo;</dt>
+<dd><p>Exit when video is done playing.
+</p></dd>
+<dt> &lsquo;<samp>-exitonkeydown</samp>&rsquo;</dt>
+<dd><p>Exit if any key is pressed.
+</p></dd>
+<dt> &lsquo;<samp>-exitonmousedown</samp>&rsquo;</dt>
+<dd><p>Exit if any mouse button is pressed.
+</p>
+</dd>
+<dt> &lsquo;<samp>-codec:<var>media_specifier</var> <var>codec_name</var></samp>&rsquo;</dt>
+<dd><p>Force a specific decoder implementation for the stream identified by
+<var>media_specifier</var>, which can assume the values <code>a</code> (audio),
+<code>v</code> (video), and <code>s</code> subtitle.
+</p>
+</dd>
+<dt> &lsquo;<samp>-acodec <var>codec_name</var></samp>&rsquo;</dt>
+<dd><p>Force a specific audio decoder.
+</p>
+</dd>
+<dt> &lsquo;<samp>-vcodec <var>codec_name</var></samp>&rsquo;</dt>
+<dd><p>Force a specific video decoder.
+</p>
+</dd>
+<dt> &lsquo;<samp>-scodec <var>codec_name</var></samp>&rsquo;</dt>
+<dd><p>Force a specific subtitle decoder.
+</p></dd>
+</dl>
+
+<a name="While-playing"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-While-playing">3.6 While playing</a></h2>
+
+<dl compact="compact">
+<dt> &lt;q, ESC&gt;</dt>
+<dd><p>Quit.
+</p>
+</dd>
+<dt> &lt;f&gt;</dt>
+<dd><p>Toggle full screen.
+</p>
+</dd>
+<dt> &lt;p, SPC&gt;</dt>
+<dd><p>Pause.
+</p>
+</dd>
+<dt> &lt;a&gt;</dt>
+<dd><p>Cycle audio channel in the curret program.
+</p>
+</dd>
+<dt> &lt;v&gt;</dt>
+<dd><p>Cycle video channel.
+</p>
+</dd>
+<dt> &lt;t&gt;</dt>
+<dd><p>Cycle subtitle channel in the current program.
+</p>
+</dd>
+<dt> &lt;c&gt;</dt>
+<dd><p>Cycle program.
+</p>
+</dd>
+<dt> &lt;w&gt;</dt>
+<dd><p>Show audio waves.
+</p>
+</dd>
+<dt> &lt;left/right&gt;</dt>
+<dd><p>Seek backward/forward 10 seconds.
+</p>
+</dd>
+<dt> &lt;down/up&gt;</dt>
+<dd><p>Seek backward/forward 1 minute.
+</p>
+</dd>
+<dt> &lt;page down/page up&gt;</dt>
+<dd><p>Seek backward/forward 10 minutes.
+</p>
+</dd>
+<dt> &lt;mouse click&gt;</dt>
+<dd><p>Seek to percentage in file corresponding to fraction of width.
+</p>
+</dd>
+</dl>
+
+
+<a name="Syntax-2"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Syntax-2">4. Syntax</a></h1>
+
+<p>This section documents the syntax and formats employed by the FFmpeg
+libraries and tools.
+</p>
+<p><a name="quoting_005fand_005fescaping"></a>
+</p><a name="Quoting-and-escaping"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-Quoting-and-escaping">4.1 Quoting and escaping</a></h2>
+
+<p>FFmpeg adopts the following quoting and escaping mechanism, unless
+explicitly specified. The following rules are applied:
+</p>
+<ul>
+<li>
+<code>'</code> and <code>\</code> are special characters (respectively used for
+quoting and escaping). In addition to them, there might be other
+special characters depending on the specific syntax where the escaping
+and quoting are employed.
+
+</li><li>
+A special character is escaped by prefixing it with a &rsquo;\&rsquo;.
+
+</li><li>
+All characters enclosed between &rdquo; are included literally in the
+parsed string. The quote character <code>'</code> itself cannot be quoted,
+so you may need to close the quote and escape it.
+
+</li><li>
+Leading and trailing whitespaces, unless escaped or quoted, are
+removed from the parsed string.
+</li></ul>
+
+<p>Note that you may need to add a second level of escaping when using
+the command line or a script, which depends on the syntax of the
+adopted shell language.
+</p>
+<p>The function <code>av_get_token</code> defined in
+&lsquo;<tt>libavutil/avstring.h</tt>&rsquo; can be used to parse a token quoted or
+escaped according to the rules defined above.
+</p>
+<p>The tool &lsquo;<tt>tools/ffescape</tt>&rsquo; in the FFmpeg source tree can be used
+to automatically quote or escape a string in a script.
+</p>
+<a name="Examples-13"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-13">4.1.1 Examples</a></h3>
+
+<ul>
+<li>
+Escape the string <code>Crime d'Amour</code> containing the <code>'</code> special
+character:
+<table><tr><td>&nbsp;</td><td><pre class="example">Crime d\'Amour
+</pre></td></tr></table>
+
+</li><li>
+The string above contains a quote, so the <code>'</code> needs to be escaped
+when quoting it:
+<table><tr><td>&nbsp;</td><td><pre class="example">'Crime d'\''Amour'
+</pre></td></tr></table>
+
+</li><li>
+Include leading or trailing whitespaces using quoting:
+<table><tr><td>&nbsp;</td><td><pre class="example">'  this string starts and ends with whitespaces  '
+</pre></td></tr></table>
+
+</li><li>
+Escaping and quoting can be mixed together:
+<table><tr><td>&nbsp;</td><td><pre class="example">' The string '\'string\'' is a string '
+</pre></td></tr></table>
+
+</li><li>
+To include a literal <code>\</code> you can use either escaping or quoting:
+<table><tr><td>&nbsp;</td><td><pre class="example">'c:\foo' can be written as c:\\foo
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="date-syntax"></a>
+</p><a name="Date"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-Date">4.2 Date</a></h2>
+
+<p>The accepted syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[(YYYY-MM-DD|YYYYMMDD)[T|t| ]]((HH:MM:SS[.m...]]])|(HHMMSS[.m...]]]))[Z]
+now
+</pre></td></tr></table>
+
+<p>If the value is &quot;now&quot; it takes the current time.
+</p>
+<p>Time is local time unless Z is appended, in which case it is
+interpreted as UTC.
+If the year-month-day part is not specified it takes the current
+year-month-day.
+</p>
+<p><a name="time-duration-syntax"></a>
+</p><a name="Time-duration"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-Time-duration">4.3 Time duration</a></h2>
+
+<p>There are two accepted syntaxes for expressing time duration.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">[-][<var>HH</var>:]<var>MM</var>:<var>SS</var>[.<var>m</var>...]
+</pre></td></tr></table>
+
+<p><var>HH</var> expresses the number of hours, <var>MM</var> the number of minutes
+for a maximum of 2 digits, and <var>SS</var> the number of seconds for a
+maximum of 2 digits. The <var>m</var> at the end expresses decimal value for
+<var>SS</var>.
+</p>
+<p><em>or</em>
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">[-]<var>S</var>+[.<var>m</var>...]
+</pre></td></tr></table>
+
+<p><var>S</var> expresses the number of seconds, with the optional decimal part
+<var>m</var>.
+</p>
+<p>In both expressions, the optional &lsquo;<samp>-</samp>&rsquo; indicates negative duration.
+</p>
+<a name="Examples-31"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-31">4.3.1 Examples</a></h3>
+
+<p>The following examples are all valid time duration:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>55</samp>&rsquo;</dt>
+<dd><p>55 seconds
+</p>
+</dd>
+<dt> &lsquo;<samp>12:03:45</samp>&rsquo;</dt>
+<dd><p>12 hours, 03 minutes and 45 seconds
+</p>
+</dd>
+<dt> &lsquo;<samp>23.189</samp>&rsquo;</dt>
+<dd><p>23.189 seconds
+</p></dd>
+</dl>
+
+<p><a name="video-size-syntax"></a>
+</p><a name="Video-size"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-Video-size">4.4 Video size</a></h2>
+<p>Specify the size of the sourced video, it may be a string of the form
+<var>width</var>x<var>height</var>, or the name of a size abbreviation.
+</p>
+<p>The following abbreviations are recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>ntsc</samp>&rsquo;</dt>
+<dd><p>720x480
+</p></dd>
+<dt> &lsquo;<samp>pal</samp>&rsquo;</dt>
+<dd><p>720x576
+</p></dd>
+<dt> &lsquo;<samp>qntsc</samp>&rsquo;</dt>
+<dd><p>352x240
+</p></dd>
+<dt> &lsquo;<samp>qpal</samp>&rsquo;</dt>
+<dd><p>352x288
+</p></dd>
+<dt> &lsquo;<samp>sntsc</samp>&rsquo;</dt>
+<dd><p>640x480
+</p></dd>
+<dt> &lsquo;<samp>spal</samp>&rsquo;</dt>
+<dd><p>768x576
+</p></dd>
+<dt> &lsquo;<samp>film</samp>&rsquo;</dt>
+<dd><p>352x240
+</p></dd>
+<dt> &lsquo;<samp>ntsc-film</samp>&rsquo;</dt>
+<dd><p>352x240
+</p></dd>
+<dt> &lsquo;<samp>sqcif</samp>&rsquo;</dt>
+<dd><p>128x96
+</p></dd>
+<dt> &lsquo;<samp>qcif</samp>&rsquo;</dt>
+<dd><p>176x144
+</p></dd>
+<dt> &lsquo;<samp>cif</samp>&rsquo;</dt>
+<dd><p>352x288
+</p></dd>
+<dt> &lsquo;<samp>4cif</samp>&rsquo;</dt>
+<dd><p>704x576
+</p></dd>
+<dt> &lsquo;<samp>16cif</samp>&rsquo;</dt>
+<dd><p>1408x1152
+</p></dd>
+<dt> &lsquo;<samp>qqvga</samp>&rsquo;</dt>
+<dd><p>160x120
+</p></dd>
+<dt> &lsquo;<samp>qvga</samp>&rsquo;</dt>
+<dd><p>320x240
+</p></dd>
+<dt> &lsquo;<samp>vga</samp>&rsquo;</dt>
+<dd><p>640x480
+</p></dd>
+<dt> &lsquo;<samp>svga</samp>&rsquo;</dt>
+<dd><p>800x600
+</p></dd>
+<dt> &lsquo;<samp>xga</samp>&rsquo;</dt>
+<dd><p>1024x768
+</p></dd>
+<dt> &lsquo;<samp>uxga</samp>&rsquo;</dt>
+<dd><p>1600x1200
+</p></dd>
+<dt> &lsquo;<samp>qxga</samp>&rsquo;</dt>
+<dd><p>2048x1536
+</p></dd>
+<dt> &lsquo;<samp>sxga</samp>&rsquo;</dt>
+<dd><p>1280x1024
+</p></dd>
+<dt> &lsquo;<samp>qsxga</samp>&rsquo;</dt>
+<dd><p>2560x2048
+</p></dd>
+<dt> &lsquo;<samp>hsxga</samp>&rsquo;</dt>
+<dd><p>5120x4096
+</p></dd>
+<dt> &lsquo;<samp>wvga</samp>&rsquo;</dt>
+<dd><p>852x480
+</p></dd>
+<dt> &lsquo;<samp>wxga</samp>&rsquo;</dt>
+<dd><p>1366x768
+</p></dd>
+<dt> &lsquo;<samp>wsxga</samp>&rsquo;</dt>
+<dd><p>1600x1024
+</p></dd>
+<dt> &lsquo;<samp>wuxga</samp>&rsquo;</dt>
+<dd><p>1920x1200
+</p></dd>
+<dt> &lsquo;<samp>woxga</samp>&rsquo;</dt>
+<dd><p>2560x1600
+</p></dd>
+<dt> &lsquo;<samp>wqsxga</samp>&rsquo;</dt>
+<dd><p>3200x2048
+</p></dd>
+<dt> &lsquo;<samp>wquxga</samp>&rsquo;</dt>
+<dd><p>3840x2400
+</p></dd>
+<dt> &lsquo;<samp>whsxga</samp>&rsquo;</dt>
+<dd><p>6400x4096
+</p></dd>
+<dt> &lsquo;<samp>whuxga</samp>&rsquo;</dt>
+<dd><p>7680x4800
+</p></dd>
+<dt> &lsquo;<samp>cga</samp>&rsquo;</dt>
+<dd><p>320x200
+</p></dd>
+<dt> &lsquo;<samp>ega</samp>&rsquo;</dt>
+<dd><p>640x350
+</p></dd>
+<dt> &lsquo;<samp>hd480</samp>&rsquo;</dt>
+<dd><p>852x480
+</p></dd>
+<dt> &lsquo;<samp>hd720</samp>&rsquo;</dt>
+<dd><p>1280x720
+</p></dd>
+<dt> &lsquo;<samp>hd1080</samp>&rsquo;</dt>
+<dd><p>1920x1080
+</p></dd>
+<dt> &lsquo;<samp>2k</samp>&rsquo;</dt>
+<dd><p>2048x1080
+</p></dd>
+<dt> &lsquo;<samp>2kflat</samp>&rsquo;</dt>
+<dd><p>1998x1080
+</p></dd>
+<dt> &lsquo;<samp>2kscope</samp>&rsquo;</dt>
+<dd><p>2048x858
+</p></dd>
+<dt> &lsquo;<samp>4k</samp>&rsquo;</dt>
+<dd><p>4096x2160
+</p></dd>
+<dt> &lsquo;<samp>4kflat</samp>&rsquo;</dt>
+<dd><p>3996x2160
+</p></dd>
+<dt> &lsquo;<samp>4kscope</samp>&rsquo;</dt>
+<dd><p>4096x1716
+</p></dd>
+<dt> &lsquo;<samp>nhd</samp>&rsquo;</dt>
+<dd><p>640x360
+</p></dd>
+<dt> &lsquo;<samp>hqvga</samp>&rsquo;</dt>
+<dd><p>240x160
+</p></dd>
+<dt> &lsquo;<samp>wqvga</samp>&rsquo;</dt>
+<dd><p>400x240
+</p></dd>
+<dt> &lsquo;<samp>fwqvga</samp>&rsquo;</dt>
+<dd><p>432x240
+</p></dd>
+<dt> &lsquo;<samp>hvga</samp>&rsquo;</dt>
+<dd><p>480x320
+</p></dd>
+<dt> &lsquo;<samp>qhd</samp>&rsquo;</dt>
+<dd><p>960x540
+</p></dd>
+</dl>
+
+<p><a name="video-rate-syntax"></a>
+</p><a name="Video-rate"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-Video-rate">4.5 Video rate</a></h2>
+
+<p>Specify the frame rate of a video, expressed as the number of frames
+generated per second. It has to be a string in the format
+<var>frame_rate_num</var>/<var>frame_rate_den</var>, an integer number, a float
+number or a valid video frame rate abbreviation.
+</p>
+<p>The following abbreviations are recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>ntsc</samp>&rsquo;</dt>
+<dd><p>30000/1001
+</p></dd>
+<dt> &lsquo;<samp>pal</samp>&rsquo;</dt>
+<dd><p>25/1
+</p></dd>
+<dt> &lsquo;<samp>qntsc</samp>&rsquo;</dt>
+<dd><p>30000/1001
+</p></dd>
+<dt> &lsquo;<samp>qpal</samp>&rsquo;</dt>
+<dd><p>25/1
+</p></dd>
+<dt> &lsquo;<samp>sntsc</samp>&rsquo;</dt>
+<dd><p>30000/1001
+</p></dd>
+<dt> &lsquo;<samp>spal</samp>&rsquo;</dt>
+<dd><p>25/1
+</p></dd>
+<dt> &lsquo;<samp>film</samp>&rsquo;</dt>
+<dd><p>24/1
+</p></dd>
+<dt> &lsquo;<samp>ntsc-film</samp>&rsquo;</dt>
+<dd><p>24000/1001
+</p></dd>
+</dl>
+
+<p><a name="ratio-syntax"></a>
+</p><a name="Ratio"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-Ratio">4.6 Ratio</a></h2>
+
+<p>A ratio can be expressed as an expression, or in the form
+<var>numerator</var>:<var>denominator</var>.
+</p>
+<p>Note that a ratio with infinite (1/0) or negative value is
+considered valid, so you should check on the returned value if you
+want to exclude those values.
+</p>
+<p>The undefined value can be expressed using the &quot;0:0&quot; string.
+</p>
+<p><a name="color-syntax"></a>
+</p><a name="Color"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-Color">4.7 Color</a></h2>
+
+<p>It can be the name of a color as defined below (case insensitive match) or a
+<code>[0x|#]RRGGBB[AA]</code> sequence, possibly followed by @ and a string
+representing the alpha component.
+</p>
+<p>The alpha component may be a string composed by &quot;0x&quot; followed by an
+hexadecimal number or a decimal number between 0.0 and 1.0, which
+represents the opacity value (&lsquo;<samp>0x00</samp>&rsquo; or &lsquo;<samp>0.0</samp>&rsquo; means completely
+transparent, &lsquo;<samp>0xff</samp>&rsquo; or &lsquo;<samp>1.0</samp>&rsquo; completely opaque). If the alpha
+component is not specified then &lsquo;<samp>0xff</samp>&rsquo; is assumed.
+</p>
+<p>The string &lsquo;<samp>random</samp>&rsquo; will result in a random color.
+</p>
+<p>The following names of colors are recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>AliceBlue</samp>&rsquo;</dt>
+<dd><p>0xF0F8FF
+</p></dd>
+<dt> &lsquo;<samp>AntiqueWhite</samp>&rsquo;</dt>
+<dd><p>0xFAEBD7
+</p></dd>
+<dt> &lsquo;<samp>Aqua</samp>&rsquo;</dt>
+<dd><p>0x00FFFF
+</p></dd>
+<dt> &lsquo;<samp>Aquamarine</samp>&rsquo;</dt>
+<dd><p>0x7FFFD4
+</p></dd>
+<dt> &lsquo;<samp>Azure</samp>&rsquo;</dt>
+<dd><p>0xF0FFFF
+</p></dd>
+<dt> &lsquo;<samp>Beige</samp>&rsquo;</dt>
+<dd><p>0xF5F5DC
+</p></dd>
+<dt> &lsquo;<samp>Bisque</samp>&rsquo;</dt>
+<dd><p>0xFFE4C4
+</p></dd>
+<dt> &lsquo;<samp>Black</samp>&rsquo;</dt>
+<dd><p>0x000000
+</p></dd>
+<dt> &lsquo;<samp>BlanchedAlmond</samp>&rsquo;</dt>
+<dd><p>0xFFEBCD
+</p></dd>
+<dt> &lsquo;<samp>Blue</samp>&rsquo;</dt>
+<dd><p>0x0000FF
+</p></dd>
+<dt> &lsquo;<samp>BlueViolet</samp>&rsquo;</dt>
+<dd><p>0x8A2BE2
+</p></dd>
+<dt> &lsquo;<samp>Brown</samp>&rsquo;</dt>
+<dd><p>0xA52A2A
+</p></dd>
+<dt> &lsquo;<samp>BurlyWood</samp>&rsquo;</dt>
+<dd><p>0xDEB887
+</p></dd>
+<dt> &lsquo;<samp>CadetBlue</samp>&rsquo;</dt>
+<dd><p>0x5F9EA0
+</p></dd>
+<dt> &lsquo;<samp>Chartreuse</samp>&rsquo;</dt>
+<dd><p>0x7FFF00
+</p></dd>
+<dt> &lsquo;<samp>Chocolate</samp>&rsquo;</dt>
+<dd><p>0xD2691E
+</p></dd>
+<dt> &lsquo;<samp>Coral</samp>&rsquo;</dt>
+<dd><p>0xFF7F50
+</p></dd>
+<dt> &lsquo;<samp>CornflowerBlue</samp>&rsquo;</dt>
+<dd><p>0x6495ED
+</p></dd>
+<dt> &lsquo;<samp>Cornsilk</samp>&rsquo;</dt>
+<dd><p>0xFFF8DC
+</p></dd>
+<dt> &lsquo;<samp>Crimson</samp>&rsquo;</dt>
+<dd><p>0xDC143C
+</p></dd>
+<dt> &lsquo;<samp>Cyan</samp>&rsquo;</dt>
+<dd><p>0x00FFFF
+</p></dd>
+<dt> &lsquo;<samp>DarkBlue</samp>&rsquo;</dt>
+<dd><p>0x00008B
+</p></dd>
+<dt> &lsquo;<samp>DarkCyan</samp>&rsquo;</dt>
+<dd><p>0x008B8B
+</p></dd>
+<dt> &lsquo;<samp>DarkGoldenRod</samp>&rsquo;</dt>
+<dd><p>0xB8860B
+</p></dd>
+<dt> &lsquo;<samp>DarkGray</samp>&rsquo;</dt>
+<dd><p>0xA9A9A9
+</p></dd>
+<dt> &lsquo;<samp>DarkGreen</samp>&rsquo;</dt>
+<dd><p>0x006400
+</p></dd>
+<dt> &lsquo;<samp>DarkKhaki</samp>&rsquo;</dt>
+<dd><p>0xBDB76B
+</p></dd>
+<dt> &lsquo;<samp>DarkMagenta</samp>&rsquo;</dt>
+<dd><p>0x8B008B
+</p></dd>
+<dt> &lsquo;<samp>DarkOliveGreen</samp>&rsquo;</dt>
+<dd><p>0x556B2F
+</p></dd>
+<dt> &lsquo;<samp>Darkorange</samp>&rsquo;</dt>
+<dd><p>0xFF8C00
+</p></dd>
+<dt> &lsquo;<samp>DarkOrchid</samp>&rsquo;</dt>
+<dd><p>0x9932CC
+</p></dd>
+<dt> &lsquo;<samp>DarkRed</samp>&rsquo;</dt>
+<dd><p>0x8B0000
+</p></dd>
+<dt> &lsquo;<samp>DarkSalmon</samp>&rsquo;</dt>
+<dd><p>0xE9967A
+</p></dd>
+<dt> &lsquo;<samp>DarkSeaGreen</samp>&rsquo;</dt>
+<dd><p>0x8FBC8F
+</p></dd>
+<dt> &lsquo;<samp>DarkSlateBlue</samp>&rsquo;</dt>
+<dd><p>0x483D8B
+</p></dd>
+<dt> &lsquo;<samp>DarkSlateGray</samp>&rsquo;</dt>
+<dd><p>0x2F4F4F
+</p></dd>
+<dt> &lsquo;<samp>DarkTurquoise</samp>&rsquo;</dt>
+<dd><p>0x00CED1
+</p></dd>
+<dt> &lsquo;<samp>DarkViolet</samp>&rsquo;</dt>
+<dd><p>0x9400D3
+</p></dd>
+<dt> &lsquo;<samp>DeepPink</samp>&rsquo;</dt>
+<dd><p>0xFF1493
+</p></dd>
+<dt> &lsquo;<samp>DeepSkyBlue</samp>&rsquo;</dt>
+<dd><p>0x00BFFF
+</p></dd>
+<dt> &lsquo;<samp>DimGray</samp>&rsquo;</dt>
+<dd><p>0x696969
+</p></dd>
+<dt> &lsquo;<samp>DodgerBlue</samp>&rsquo;</dt>
+<dd><p>0x1E90FF
+</p></dd>
+<dt> &lsquo;<samp>FireBrick</samp>&rsquo;</dt>
+<dd><p>0xB22222
+</p></dd>
+<dt> &lsquo;<samp>FloralWhite</samp>&rsquo;</dt>
+<dd><p>0xFFFAF0
+</p></dd>
+<dt> &lsquo;<samp>ForestGreen</samp>&rsquo;</dt>
+<dd><p>0x228B22
+</p></dd>
+<dt> &lsquo;<samp>Fuchsia</samp>&rsquo;</dt>
+<dd><p>0xFF00FF
+</p></dd>
+<dt> &lsquo;<samp>Gainsboro</samp>&rsquo;</dt>
+<dd><p>0xDCDCDC
+</p></dd>
+<dt> &lsquo;<samp>GhostWhite</samp>&rsquo;</dt>
+<dd><p>0xF8F8FF
+</p></dd>
+<dt> &lsquo;<samp>Gold</samp>&rsquo;</dt>
+<dd><p>0xFFD700
+</p></dd>
+<dt> &lsquo;<samp>GoldenRod</samp>&rsquo;</dt>
+<dd><p>0xDAA520
+</p></dd>
+<dt> &lsquo;<samp>Gray</samp>&rsquo;</dt>
+<dd><p>0x808080
+</p></dd>
+<dt> &lsquo;<samp>Green</samp>&rsquo;</dt>
+<dd><p>0x008000
+</p></dd>
+<dt> &lsquo;<samp>GreenYellow</samp>&rsquo;</dt>
+<dd><p>0xADFF2F
+</p></dd>
+<dt> &lsquo;<samp>HoneyDew</samp>&rsquo;</dt>
+<dd><p>0xF0FFF0
+</p></dd>
+<dt> &lsquo;<samp>HotPink</samp>&rsquo;</dt>
+<dd><p>0xFF69B4
+</p></dd>
+<dt> &lsquo;<samp>IndianRed</samp>&rsquo;</dt>
+<dd><p>0xCD5C5C
+</p></dd>
+<dt> &lsquo;<samp>Indigo</samp>&rsquo;</dt>
+<dd><p>0x4B0082
+</p></dd>
+<dt> &lsquo;<samp>Ivory</samp>&rsquo;</dt>
+<dd><p>0xFFFFF0
+</p></dd>
+<dt> &lsquo;<samp>Khaki</samp>&rsquo;</dt>
+<dd><p>0xF0E68C
+</p></dd>
+<dt> &lsquo;<samp>Lavender</samp>&rsquo;</dt>
+<dd><p>0xE6E6FA
+</p></dd>
+<dt> &lsquo;<samp>LavenderBlush</samp>&rsquo;</dt>
+<dd><p>0xFFF0F5
+</p></dd>
+<dt> &lsquo;<samp>LawnGreen</samp>&rsquo;</dt>
+<dd><p>0x7CFC00
+</p></dd>
+<dt> &lsquo;<samp>LemonChiffon</samp>&rsquo;</dt>
+<dd><p>0xFFFACD
+</p></dd>
+<dt> &lsquo;<samp>LightBlue</samp>&rsquo;</dt>
+<dd><p>0xADD8E6
+</p></dd>
+<dt> &lsquo;<samp>LightCoral</samp>&rsquo;</dt>
+<dd><p>0xF08080
+</p></dd>
+<dt> &lsquo;<samp>LightCyan</samp>&rsquo;</dt>
+<dd><p>0xE0FFFF
+</p></dd>
+<dt> &lsquo;<samp>LightGoldenRodYellow</samp>&rsquo;</dt>
+<dd><p>0xFAFAD2
+</p></dd>
+<dt> &lsquo;<samp>LightGreen</samp>&rsquo;</dt>
+<dd><p>0x90EE90
+</p></dd>
+<dt> &lsquo;<samp>LightGrey</samp>&rsquo;</dt>
+<dd><p>0xD3D3D3
+</p></dd>
+<dt> &lsquo;<samp>LightPink</samp>&rsquo;</dt>
+<dd><p>0xFFB6C1
+</p></dd>
+<dt> &lsquo;<samp>LightSalmon</samp>&rsquo;</dt>
+<dd><p>0xFFA07A
+</p></dd>
+<dt> &lsquo;<samp>LightSeaGreen</samp>&rsquo;</dt>
+<dd><p>0x20B2AA
+</p></dd>
+<dt> &lsquo;<samp>LightSkyBlue</samp>&rsquo;</dt>
+<dd><p>0x87CEFA
+</p></dd>
+<dt> &lsquo;<samp>LightSlateGray</samp>&rsquo;</dt>
+<dd><p>0x778899
+</p></dd>
+<dt> &lsquo;<samp>LightSteelBlue</samp>&rsquo;</dt>
+<dd><p>0xB0C4DE
+</p></dd>
+<dt> &lsquo;<samp>LightYellow</samp>&rsquo;</dt>
+<dd><p>0xFFFFE0
+</p></dd>
+<dt> &lsquo;<samp>Lime</samp>&rsquo;</dt>
+<dd><p>0x00FF00
+</p></dd>
+<dt> &lsquo;<samp>LimeGreen</samp>&rsquo;</dt>
+<dd><p>0x32CD32
+</p></dd>
+<dt> &lsquo;<samp>Linen</samp>&rsquo;</dt>
+<dd><p>0xFAF0E6
+</p></dd>
+<dt> &lsquo;<samp>Magenta</samp>&rsquo;</dt>
+<dd><p>0xFF00FF
+</p></dd>
+<dt> &lsquo;<samp>Maroon</samp>&rsquo;</dt>
+<dd><p>0x800000
+</p></dd>
+<dt> &lsquo;<samp>MediumAquaMarine</samp>&rsquo;</dt>
+<dd><p>0x66CDAA
+</p></dd>
+<dt> &lsquo;<samp>MediumBlue</samp>&rsquo;</dt>
+<dd><p>0x0000CD
+</p></dd>
+<dt> &lsquo;<samp>MediumOrchid</samp>&rsquo;</dt>
+<dd><p>0xBA55D3
+</p></dd>
+<dt> &lsquo;<samp>MediumPurple</samp>&rsquo;</dt>
+<dd><p>0x9370D8
+</p></dd>
+<dt> &lsquo;<samp>MediumSeaGreen</samp>&rsquo;</dt>
+<dd><p>0x3CB371
+</p></dd>
+<dt> &lsquo;<samp>MediumSlateBlue</samp>&rsquo;</dt>
+<dd><p>0x7B68EE
+</p></dd>
+<dt> &lsquo;<samp>MediumSpringGreen</samp>&rsquo;</dt>
+<dd><p>0x00FA9A
+</p></dd>
+<dt> &lsquo;<samp>MediumTurquoise</samp>&rsquo;</dt>
+<dd><p>0x48D1CC
+</p></dd>
+<dt> &lsquo;<samp>MediumVioletRed</samp>&rsquo;</dt>
+<dd><p>0xC71585
+</p></dd>
+<dt> &lsquo;<samp>MidnightBlue</samp>&rsquo;</dt>
+<dd><p>0x191970
+</p></dd>
+<dt> &lsquo;<samp>MintCream</samp>&rsquo;</dt>
+<dd><p>0xF5FFFA
+</p></dd>
+<dt> &lsquo;<samp>MistyRose</samp>&rsquo;</dt>
+<dd><p>0xFFE4E1
+</p></dd>
+<dt> &lsquo;<samp>Moccasin</samp>&rsquo;</dt>
+<dd><p>0xFFE4B5
+</p></dd>
+<dt> &lsquo;<samp>NavajoWhite</samp>&rsquo;</dt>
+<dd><p>0xFFDEAD
+</p></dd>
+<dt> &lsquo;<samp>Navy</samp>&rsquo;</dt>
+<dd><p>0x000080
+</p></dd>
+<dt> &lsquo;<samp>OldLace</samp>&rsquo;</dt>
+<dd><p>0xFDF5E6
+</p></dd>
+<dt> &lsquo;<samp>Olive</samp>&rsquo;</dt>
+<dd><p>0x808000
+</p></dd>
+<dt> &lsquo;<samp>OliveDrab</samp>&rsquo;</dt>
+<dd><p>0x6B8E23
+</p></dd>
+<dt> &lsquo;<samp>Orange</samp>&rsquo;</dt>
+<dd><p>0xFFA500
+</p></dd>
+<dt> &lsquo;<samp>OrangeRed</samp>&rsquo;</dt>
+<dd><p>0xFF4500
+</p></dd>
+<dt> &lsquo;<samp>Orchid</samp>&rsquo;</dt>
+<dd><p>0xDA70D6
+</p></dd>
+<dt> &lsquo;<samp>PaleGoldenRod</samp>&rsquo;</dt>
+<dd><p>0xEEE8AA
+</p></dd>
+<dt> &lsquo;<samp>PaleGreen</samp>&rsquo;</dt>
+<dd><p>0x98FB98
+</p></dd>
+<dt> &lsquo;<samp>PaleTurquoise</samp>&rsquo;</dt>
+<dd><p>0xAFEEEE
+</p></dd>
+<dt> &lsquo;<samp>PaleVioletRed</samp>&rsquo;</dt>
+<dd><p>0xD87093
+</p></dd>
+<dt> &lsquo;<samp>PapayaWhip</samp>&rsquo;</dt>
+<dd><p>0xFFEFD5
+</p></dd>
+<dt> &lsquo;<samp>PeachPuff</samp>&rsquo;</dt>
+<dd><p>0xFFDAB9
+</p></dd>
+<dt> &lsquo;<samp>Peru</samp>&rsquo;</dt>
+<dd><p>0xCD853F
+</p></dd>
+<dt> &lsquo;<samp>Pink</samp>&rsquo;</dt>
+<dd><p>0xFFC0CB
+</p></dd>
+<dt> &lsquo;<samp>Plum</samp>&rsquo;</dt>
+<dd><p>0xDDA0DD
+</p></dd>
+<dt> &lsquo;<samp>PowderBlue</samp>&rsquo;</dt>
+<dd><p>0xB0E0E6
+</p></dd>
+<dt> &lsquo;<samp>Purple</samp>&rsquo;</dt>
+<dd><p>0x800080
+</p></dd>
+<dt> &lsquo;<samp>Red</samp>&rsquo;</dt>
+<dd><p>0xFF0000
+</p></dd>
+<dt> &lsquo;<samp>RosyBrown</samp>&rsquo;</dt>
+<dd><p>0xBC8F8F
+</p></dd>
+<dt> &lsquo;<samp>RoyalBlue</samp>&rsquo;</dt>
+<dd><p>0x4169E1
+</p></dd>
+<dt> &lsquo;<samp>SaddleBrown</samp>&rsquo;</dt>
+<dd><p>0x8B4513
+</p></dd>
+<dt> &lsquo;<samp>Salmon</samp>&rsquo;</dt>
+<dd><p>0xFA8072
+</p></dd>
+<dt> &lsquo;<samp>SandyBrown</samp>&rsquo;</dt>
+<dd><p>0xF4A460
+</p></dd>
+<dt> &lsquo;<samp>SeaGreen</samp>&rsquo;</dt>
+<dd><p>0x2E8B57
+</p></dd>
+<dt> &lsquo;<samp>SeaShell</samp>&rsquo;</dt>
+<dd><p>0xFFF5EE
+</p></dd>
+<dt> &lsquo;<samp>Sienna</samp>&rsquo;</dt>
+<dd><p>0xA0522D
+</p></dd>
+<dt> &lsquo;<samp>Silver</samp>&rsquo;</dt>
+<dd><p>0xC0C0C0
+</p></dd>
+<dt> &lsquo;<samp>SkyBlue</samp>&rsquo;</dt>
+<dd><p>0x87CEEB
+</p></dd>
+<dt> &lsquo;<samp>SlateBlue</samp>&rsquo;</dt>
+<dd><p>0x6A5ACD
+</p></dd>
+<dt> &lsquo;<samp>SlateGray</samp>&rsquo;</dt>
+<dd><p>0x708090
+</p></dd>
+<dt> &lsquo;<samp>Snow</samp>&rsquo;</dt>
+<dd><p>0xFFFAFA
+</p></dd>
+<dt> &lsquo;<samp>SpringGreen</samp>&rsquo;</dt>
+<dd><p>0x00FF7F
+</p></dd>
+<dt> &lsquo;<samp>SteelBlue</samp>&rsquo;</dt>
+<dd><p>0x4682B4
+</p></dd>
+<dt> &lsquo;<samp>Tan</samp>&rsquo;</dt>
+<dd><p>0xD2B48C
+</p></dd>
+<dt> &lsquo;<samp>Teal</samp>&rsquo;</dt>
+<dd><p>0x008080
+</p></dd>
+<dt> &lsquo;<samp>Thistle</samp>&rsquo;</dt>
+<dd><p>0xD8BFD8
+</p></dd>
+<dt> &lsquo;<samp>Tomato</samp>&rsquo;</dt>
+<dd><p>0xFF6347
+</p></dd>
+<dt> &lsquo;<samp>Turquoise</samp>&rsquo;</dt>
+<dd><p>0x40E0D0
+</p></dd>
+<dt> &lsquo;<samp>Violet</samp>&rsquo;</dt>
+<dd><p>0xEE82EE
+</p></dd>
+<dt> &lsquo;<samp>Wheat</samp>&rsquo;</dt>
+<dd><p>0xF5DEB3
+</p></dd>
+<dt> &lsquo;<samp>White</samp>&rsquo;</dt>
+<dd><p>0xFFFFFF
+</p></dd>
+<dt> &lsquo;<samp>WhiteSmoke</samp>&rsquo;</dt>
+<dd><p>0xF5F5F5
+</p></dd>
+<dt> &lsquo;<samp>Yellow</samp>&rsquo;</dt>
+<dd><p>0xFFFF00
+</p></dd>
+<dt> &lsquo;<samp>YellowGreen</samp>&rsquo;</dt>
+<dd><p>0x9ACD32
+</p></dd>
+</dl>
+
+<p><a name="channel-layout-syntax"></a>
+</p><a name="Channel-Layout"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-Channel-Layout">4.8 Channel Layout</a></h2>
+
+<p>A channel layout specifies the spatial disposition of the channels in
+a multi-channel audio stream. To specify a channel layout, FFmpeg
+makes use of a special syntax.
+</p>
+<p>Individual channels are identified by an id, as given by the table
+below:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>FL</samp>&rsquo;</dt>
+<dd><p>front left
+</p></dd>
+<dt> &lsquo;<samp>FR</samp>&rsquo;</dt>
+<dd><p>front right
+</p></dd>
+<dt> &lsquo;<samp>FC</samp>&rsquo;</dt>
+<dd><p>front center
+</p></dd>
+<dt> &lsquo;<samp>LFE</samp>&rsquo;</dt>
+<dd><p>low frequency
+</p></dd>
+<dt> &lsquo;<samp>BL</samp>&rsquo;</dt>
+<dd><p>back left
+</p></dd>
+<dt> &lsquo;<samp>BR</samp>&rsquo;</dt>
+<dd><p>back right
+</p></dd>
+<dt> &lsquo;<samp>FLC</samp>&rsquo;</dt>
+<dd><p>front left-of-center
+</p></dd>
+<dt> &lsquo;<samp>FRC</samp>&rsquo;</dt>
+<dd><p>front right-of-center
+</p></dd>
+<dt> &lsquo;<samp>BC</samp>&rsquo;</dt>
+<dd><p>back center
+</p></dd>
+<dt> &lsquo;<samp>SL</samp>&rsquo;</dt>
+<dd><p>side left
+</p></dd>
+<dt> &lsquo;<samp>SR</samp>&rsquo;</dt>
+<dd><p>side right
+</p></dd>
+<dt> &lsquo;<samp>TC</samp>&rsquo;</dt>
+<dd><p>top center
+</p></dd>
+<dt> &lsquo;<samp>TFL</samp>&rsquo;</dt>
+<dd><p>top front left
+</p></dd>
+<dt> &lsquo;<samp>TFC</samp>&rsquo;</dt>
+<dd><p>top front center
+</p></dd>
+<dt> &lsquo;<samp>TFR</samp>&rsquo;</dt>
+<dd><p>top front right
+</p></dd>
+<dt> &lsquo;<samp>TBL</samp>&rsquo;</dt>
+<dd><p>top back left
+</p></dd>
+<dt> &lsquo;<samp>TBC</samp>&rsquo;</dt>
+<dd><p>top back center
+</p></dd>
+<dt> &lsquo;<samp>TBR</samp>&rsquo;</dt>
+<dd><p>top back right
+</p></dd>
+<dt> &lsquo;<samp>DL</samp>&rsquo;</dt>
+<dd><p>downmix left
+</p></dd>
+<dt> &lsquo;<samp>DR</samp>&rsquo;</dt>
+<dd><p>downmix right
+</p></dd>
+<dt> &lsquo;<samp>WL</samp>&rsquo;</dt>
+<dd><p>wide left
+</p></dd>
+<dt> &lsquo;<samp>WR</samp>&rsquo;</dt>
+<dd><p>wide right
+</p></dd>
+<dt> &lsquo;<samp>SDL</samp>&rsquo;</dt>
+<dd><p>surround direct left
+</p></dd>
+<dt> &lsquo;<samp>SDR</samp>&rsquo;</dt>
+<dd><p>surround direct right
+</p></dd>
+<dt> &lsquo;<samp>LFE2</samp>&rsquo;</dt>
+<dd><p>low frequency 2
+</p></dd>
+</dl>
+
+<p>Standard channel layout compositions can be specified by using the
+following identifiers:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>mono</samp>&rsquo;</dt>
+<dd><p>FC
+</p></dd>
+<dt> &lsquo;<samp>stereo</samp>&rsquo;</dt>
+<dd><p>FL+FR
+</p></dd>
+<dt> &lsquo;<samp>2.1</samp>&rsquo;</dt>
+<dd><p>FL+FR+LFE
+</p></dd>
+<dt> &lsquo;<samp>3.0</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC
+</p></dd>
+<dt> &lsquo;<samp>3.0(back)</samp>&rsquo;</dt>
+<dd><p>FL+FR+BC
+</p></dd>
+<dt> &lsquo;<samp>4.0</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+BC
+</p></dd>
+<dt> &lsquo;<samp>quad</samp>&rsquo;</dt>
+<dd><p>FL+FR+BL+BR
+</p></dd>
+<dt> &lsquo;<samp>quad(side)</samp>&rsquo;</dt>
+<dd><p>FL+FR+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>3.1</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE
+</p></dd>
+<dt> &lsquo;<samp>5.0</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+BL+BR
+</p></dd>
+<dt> &lsquo;<samp>5.0(side)</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>4.1</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE+BC
+</p></dd>
+<dt> &lsquo;<samp>5.1</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE+BL+BR
+</p></dd>
+<dt> &lsquo;<samp>5.1(side)</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>6.0</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+BC+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>6.0(front)</samp>&rsquo;</dt>
+<dd><p>FL+FR+FLC+FRC+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>hexagonal</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+BL+BR+BC
+</p></dd>
+<dt> &lsquo;<samp>6.1</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE+BC+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>6.1</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE+BL+BR+BC
+</p></dd>
+<dt> &lsquo;<samp>6.1(front)</samp>&rsquo;</dt>
+<dd><p>FL+FR+LFE+FLC+FRC+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>7.0</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+BL+BR+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>7.0(front)</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+FLC+FRC+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>7.1</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE+BL+BR+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>7.1(wide)</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE+BL+BR+FLC+FRC
+</p></dd>
+<dt> &lsquo;<samp>7.1(wide-side)</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE+FLC+FRC+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>octagonal</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+BL+BR+BC+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>downmix</samp>&rsquo;</dt>
+<dd><p>DL+DR
+</p></dd>
+</dl>
+
+<p>A custom channel layout can be specified as a sequence of terms, separated by
+&rsquo;+&rsquo; or &rsquo;|&rsquo;. Each term can be:
+</p><ul>
+<li>
+the name of a standard channel layout (e.g. &lsquo;<samp>mono</samp>&rsquo;,
+&lsquo;<samp>stereo</samp>&rsquo;, &lsquo;<samp>4.0</samp>&rsquo;, &lsquo;<samp>quad</samp>&rsquo;, &lsquo;<samp>5.0</samp>&rsquo;, etc.)
+
+</li><li>
+the name of a single channel (e.g. &lsquo;<samp>FL</samp>&rsquo;, &lsquo;<samp>FR</samp>&rsquo;, &lsquo;<samp>FC</samp>&rsquo;, &lsquo;<samp>LFE</samp>&rsquo;, etc.)
+
+</li><li>
+a number of channels, in decimal, optionally followed by &rsquo;c&rsquo;, yielding
+the default channel layout for that number of channels (see the
+function <code>av_get_default_channel_layout</code>)
+
+</li><li>
+a channel layout mask, in hexadecimal starting with &quot;0x&quot; (see the
+<code>AV_CH_*</code> macros in &lsquo;<tt>libavutil/channel_layout.h</tt>&rsquo;.
+</li></ul>
+
+<p>Starting from libavutil version 53 the trailing character &quot;c&quot; to
+specify a number of channels will be required, while a channel layout
+mask could also be specified as a decimal number (if and only if not
+followed by &quot;c&quot;).
+</p>
+<p>See also the function <code>av_get_channel_layout</code> defined in
+&lsquo;<tt>libavutil/channel_layout.h</tt>&rsquo;.
+</p>
+<a name="Expression-Evaluation"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Expression-Evaluation">5. Expression Evaluation</a></h1>
+
+<p>When evaluating an arithmetic expression, FFmpeg uses an internal
+formula evaluator, implemented through the &lsquo;<tt>libavutil/eval.h</tt>&rsquo;
+interface.
+</p>
+<p>An expression may contain unary, binary operators, constants, and
+functions.
+</p>
+<p>Two expressions <var>expr1</var> and <var>expr2</var> can be combined to form
+another expression &quot;<var>expr1</var>;<var>expr2</var>&quot;.
+<var>expr1</var> and <var>expr2</var> are evaluated in turn, and the new
+expression evaluates to the value of <var>expr2</var>.
+</p>
+<p>The following binary operators are available: <code>+</code>, <code>-</code>,
+<code>*</code>, <code>/</code>, <code>^</code>.
+</p>
+<p>The following unary operators are available: <code>+</code>, <code>-</code>.
+</p>
+<p>The following functions are available:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>abs(x)</samp>&rsquo;</dt>
+<dd><p>Compute absolute value of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>acos(x)</samp>&rsquo;</dt>
+<dd><p>Compute arccosine of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>asin(x)</samp>&rsquo;</dt>
+<dd><p>Compute arcsine of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>atan(x)</samp>&rsquo;</dt>
+<dd><p>Compute arctangent of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>between(x, min, max)</samp>&rsquo;</dt>
+<dd><p>Return 1 if <var>x</var> is greater than or equal to <var>min</var> and lesser than or
+equal to <var>max</var>, 0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>bitand(x, y)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bitor(x, y)</samp>&rsquo;</dt>
+<dd><p>Compute bitwise and/or operation on <var>x</var> and <var>y</var>.
+</p>
+<p>The results of the evaluation of <var>x</var> and <var>y</var> are converted to
+integers before executing the bitwise operation.
+</p>
+<p>Note that both the conversion to integer and the conversion back to
+floating point can lose precision. Beware of unexpected results for
+large numbers (usually 2^53 and larger).
+</p>
+</dd>
+<dt> &lsquo;<samp>ceil(expr)</samp>&rsquo;</dt>
+<dd><p>Round the value of expression <var>expr</var> upwards to the nearest
+integer. For example, &quot;ceil(1.5)&quot; is &quot;2.0&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>cos(x)</samp>&rsquo;</dt>
+<dd><p>Compute cosine of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>cosh(x)</samp>&rsquo;</dt>
+<dd><p>Compute hyperbolic cosine of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>eq(x, y)</samp>&rsquo;</dt>
+<dd><p>Return 1 if <var>x</var> and <var>y</var> are equivalent, 0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>exp(x)</samp>&rsquo;</dt>
+<dd><p>Compute exponential of <var>x</var> (with base <code>e</code>, the Euler&rsquo;s number).
+</p>
+</dd>
+<dt> &lsquo;<samp>floor(expr)</samp>&rsquo;</dt>
+<dd><p>Round the value of expression <var>expr</var> downwards to the nearest
+integer. For example, &quot;floor(-1.5)&quot; is &quot;-2.0&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>gauss(x)</samp>&rsquo;</dt>
+<dd><p>Compute Gauss function of <var>x</var>, corresponding to
+<code>exp(-x*x/2) / sqrt(2*PI)</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>gcd(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the greatest common divisor of <var>x</var> and <var>y</var>. If both <var>x</var> and
+<var>y</var> are 0 or either or both are less than zero then behavior is undefined.
+</p>
+</dd>
+<dt> &lsquo;<samp>gt(x, y)</samp>&rsquo;</dt>
+<dd><p>Return 1 if <var>x</var> is greater than <var>y</var>, 0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>gte(x, y)</samp>&rsquo;</dt>
+<dd><p>Return 1 if <var>x</var> is greater than or equal to <var>y</var>, 0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>hypot(x, y)</samp>&rsquo;</dt>
+<dd><p>This function is similar to the C function with the same name; it returns
+&quot;sqrt(<var>x</var>*<var>x</var> + <var>y</var>*<var>y</var>)&quot;, the length of the hypotenuse of a
+right triangle with sides of length <var>x</var> and <var>y</var>, or the distance of the
+point (<var>x</var>, <var>y</var>) from the origin.
+</p>
+</dd>
+<dt> &lsquo;<samp>if(x, y)</samp>&rsquo;</dt>
+<dd><p>Evaluate <var>x</var>, and if the result is non-zero return the result of
+the evaluation of <var>y</var>, return 0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>if(x, y, z)</samp>&rsquo;</dt>
+<dd><p>Evaluate <var>x</var>, and if the result is non-zero return the evaluation
+result of <var>y</var>, otherwise the evaluation result of <var>z</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>ifnot(x, y)</samp>&rsquo;</dt>
+<dd><p>Evaluate <var>x</var>, and if the result is zero return the result of the
+evaluation of <var>y</var>, return 0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>ifnot(x, y, z)</samp>&rsquo;</dt>
+<dd><p>Evaluate <var>x</var>, and if the result is zero return the evaluation
+result of <var>y</var>, otherwise the evaluation result of <var>z</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>isinf(x)</samp>&rsquo;</dt>
+<dd><p>Return 1.0 if <var>x</var> is +/-INFINITY, 0.0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>isnan(x)</samp>&rsquo;</dt>
+<dd><p>Return 1.0 if <var>x</var> is NAN, 0.0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>ld(var)</samp>&rsquo;</dt>
+<dd><p>Allow to load the value of the internal variable with number
+<var>var</var>, which was previously stored with st(<var>var</var>, <var>expr</var>).
+The function returns the loaded value.
+</p>
+</dd>
+<dt> &lsquo;<samp>log(x)</samp>&rsquo;</dt>
+<dd><p>Compute natural logarithm of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>lt(x, y)</samp>&rsquo;</dt>
+<dd><p>Return 1 if <var>x</var> is lesser than <var>y</var>, 0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>lte(x, y)</samp>&rsquo;</dt>
+<dd><p>Return 1 if <var>x</var> is lesser than or equal to <var>y</var>, 0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>max(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the maximum between <var>x</var> and <var>y</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>min(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the maximum between <var>x</var> and <var>y</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>mod(x, y)</samp>&rsquo;</dt>
+<dd><p>Compute the remainder of division of <var>x</var> by <var>y</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>not(expr)</samp>&rsquo;</dt>
+<dd><p>Return 1.0 if <var>expr</var> is zero, 0.0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>pow(x, y)</samp>&rsquo;</dt>
+<dd><p>Compute the power of <var>x</var> elevated <var>y</var>, it is equivalent to
+&quot;(<var>x</var>)^(<var>y</var>)&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>print(t)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>print(t, l)</samp>&rsquo;</dt>
+<dd><p>Print the value of expression <var>t</var> with loglevel <var>l</var>. If
+<var>l</var> is not specified then a default log level is used.
+Returns the value of the expression printed.
+</p>
+<p>Prints t with loglevel l
+</p>
+</dd>
+<dt> &lsquo;<samp>random(x)</samp>&rsquo;</dt>
+<dd><p>Return a pseudo random value between 0.0 and 1.0. <var>x</var> is the index of the
+internal variable which will be used to save the seed/state.
+</p>
+</dd>
+<dt> &lsquo;<samp>root(expr, max)</samp>&rsquo;</dt>
+<dd><p>Find an input value for which the function represented by <var>expr</var>
+with argument <var>ld(0)</var> is 0 in the interval 0..<var>max</var>.
+</p>
+<p>The expression in <var>expr</var> must denote a continuous function or the
+result is undefined.
+</p>
+<p><var>ld(0)</var> is used to represent the function input value, which means
+that the given expression will be evaluated multiple times with
+various input values that the expression can access through
+<code>ld(0)</code>. When the expression evaluates to 0 then the
+corresponding input value will be returned.
+</p>
+</dd>
+<dt> &lsquo;<samp>sin(x)</samp>&rsquo;</dt>
+<dd><p>Compute sine of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>sinh(x)</samp>&rsquo;</dt>
+<dd><p>Compute hyperbolic sine of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>sqrt(expr)</samp>&rsquo;</dt>
+<dd><p>Compute the square root of <var>expr</var>. This is equivalent to
+&quot;(<var>expr</var>)^.5&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>squish(x)</samp>&rsquo;</dt>
+<dd><p>Compute expression <code>1/(1 + exp(4*x))</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>st(var, expr)</samp>&rsquo;</dt>
+<dd><p>Allow to store the value of the expression <var>expr</var> in an internal
+variable. <var>var</var> specifies the number of the variable where to
+store the value, and it is a value ranging from 0 to 9. The function
+returns the value stored in the internal variable.
+Note, Variables are currently not shared between expressions.
+</p>
+</dd>
+<dt> &lsquo;<samp>tan(x)</samp>&rsquo;</dt>
+<dd><p>Compute tangent of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>tanh(x)</samp>&rsquo;</dt>
+<dd><p>Compute hyperbolic tangent of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>taylor(expr, x)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>taylor(expr, x, id)</samp>&rsquo;</dt>
+<dd><p>Evaluate a Taylor series at <var>x</var>, given an expression representing
+the <code>ld(id)</code>-th derivative of a function at 0.
+</p>
+<p>When the series does not converge the result is undefined.
+</p>
+<p><var>ld(id)</var> is used to represent the derivative order in <var>expr</var>,
+which means that the given expression will be evaluated multiple times
+with various input values that the expression can access through
+<code>ld(id)</code>. If <var>id</var> is not specified then 0 is assumed.
+</p>
+<p>Note, when you have the derivatives at y instead of 0,
+<code>taylor(expr, x-y)</code> can be used.
+</p>
+</dd>
+<dt> &lsquo;<samp>time(0)</samp>&rsquo;</dt>
+<dd><p>Return the current (wallclock) time in seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>trunc(expr)</samp>&rsquo;</dt>
+<dd><p>Round the value of expression <var>expr</var> towards zero to the nearest
+integer. For example, &quot;trunc(-1.5)&quot; is &quot;-1.0&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>while(cond, expr)</samp>&rsquo;</dt>
+<dd><p>Evaluate expression <var>expr</var> while the expression <var>cond</var> is
+non-zero, and returns the value of the last <var>expr</var> evaluation, or
+NAN if <var>cond</var> was always false.
+</p></dd>
+</dl>
+
+<p>The following constants are available:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>PI</samp>&rsquo;</dt>
+<dd><p>area of the unit disc, approximately 3.14
+</p></dd>
+<dt> &lsquo;<samp>E</samp>&rsquo;</dt>
+<dd><p>exp(1) (Euler&rsquo;s number), approximately 2.718
+</p></dd>
+<dt> &lsquo;<samp>PHI</samp>&rsquo;</dt>
+<dd><p>golden ratio (1+sqrt(5))/2, approximately 1.618
+</p></dd>
+</dl>
+
+<p>Assuming that an expression is considered &quot;true&quot; if it has a non-zero
+value, note that:
+</p>
+<p><code>*</code> works like AND
+</p>
+<p><code>+</code> works like OR
+</p>
+<p>For example the construct:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">if (A AND B) then C
+</pre></td></tr></table>
+<p>is equivalent to:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">if(A*B, C)
+</pre></td></tr></table>
+
+<p>In your C code, you can extend the list of unary and binary functions,
+and define recognized constants, so that they are available for your
+expressions.
+</p>
+<p>The evaluator also recognizes the International System unit prefixes.
+If &rsquo;i&rsquo; is appended after the prefix, binary prefixes are used, which
+are based on powers of 1024 instead of powers of 1000.
+The &rsquo;B&rsquo; postfix multiplies the value by 8, and can be appended after a
+unit prefix or used alone. This allows using for example &rsquo;KB&rsquo;, &rsquo;MiB&rsquo;,
+&rsquo;G&rsquo; and &rsquo;B&rsquo; as number postfix.
+</p>
+<p>The list of available International System prefixes follows, with
+indication of the corresponding powers of 10 and of 2.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>10^-24 / 2^-80
+</p></dd>
+<dt> &lsquo;<samp>z</samp>&rsquo;</dt>
+<dd><p>10^-21 / 2^-70
+</p></dd>
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>10^-18 / 2^-60
+</p></dd>
+<dt> &lsquo;<samp>f</samp>&rsquo;</dt>
+<dd><p>10^-15 / 2^-50
+</p></dd>
+<dt> &lsquo;<samp>p</samp>&rsquo;</dt>
+<dd><p>10^-12 / 2^-40
+</p></dd>
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>10^-9 / 2^-30
+</p></dd>
+<dt> &lsquo;<samp>u</samp>&rsquo;</dt>
+<dd><p>10^-6 / 2^-20
+</p></dd>
+<dt> &lsquo;<samp>m</samp>&rsquo;</dt>
+<dd><p>10^-3 / 2^-10
+</p></dd>
+<dt> &lsquo;<samp>c</samp>&rsquo;</dt>
+<dd><p>10^-2
+</p></dd>
+<dt> &lsquo;<samp>d</samp>&rsquo;</dt>
+<dd><p>10^-1
+</p></dd>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>10^2
+</p></dd>
+<dt> &lsquo;<samp>k</samp>&rsquo;</dt>
+<dd><p>10^3 / 2^10
+</p></dd>
+<dt> &lsquo;<samp>K</samp>&rsquo;</dt>
+<dd><p>10^3 / 2^10
+</p></dd>
+<dt> &lsquo;<samp>M</samp>&rsquo;</dt>
+<dd><p>10^6 / 2^20
+</p></dd>
+<dt> &lsquo;<samp>G</samp>&rsquo;</dt>
+<dd><p>10^9 / 2^30
+</p></dd>
+<dt> &lsquo;<samp>T</samp>&rsquo;</dt>
+<dd><p>10^12 / 2^40
+</p></dd>
+<dt> &lsquo;<samp>P</samp>&rsquo;</dt>
+<dd><p>10^15 / 2^40
+</p></dd>
+<dt> &lsquo;<samp>E</samp>&rsquo;</dt>
+<dd><p>10^18 / 2^50
+</p></dd>
+<dt> &lsquo;<samp>Z</samp>&rsquo;</dt>
+<dd><p>10^21 / 2^60
+</p></dd>
+<dt> &lsquo;<samp>Y</samp>&rsquo;</dt>
+<dd><p>10^24 / 2^70
+</p></dd>
+</dl>
+
+
+<a name="OpenCL-Options"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-OpenCL-Options">6. OpenCL Options</a></h1>
+
+<p>When FFmpeg is configured with <code>--enable-opencl</code>, it is possible
+to set the options for the global OpenCL context.
+</p>
+<p>The list of supported options follows:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>build_options</samp>&rsquo;</dt>
+<dd><p>Set build options used to compile the registered kernels.
+</p>
+<p>See reference &quot;OpenCL Specification Version: 1.2 chapter 5.6.4&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>platform_idx</samp>&rsquo;</dt>
+<dd><p>Select the index of the platform to run OpenCL code.
+</p>
+<p>The specified index must be one of the indexes in the device list
+which can be obtained with <code>ffmpeg -opencl_bench</code> or <code>av_opencl_get_device_list()</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>device_idx</samp>&rsquo;</dt>
+<dd><p>Select the index of the device used to run OpenCL code.
+</p>
+<p>The specifed index must be one of the indexes in the device list which
+can be obtained with <code>ffmpeg -opencl_bench</code> or <code>av_opencl_get_device_list()</code>.
+</p>
+</dd>
+</dl>
+
+<p><a name="codec_002doptions"></a>
+</p><a name="Codec-Options"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Codec-Options">7. Codec Options</a></h1>
+
+<p>libavcodec provides some generic global options, which can be set on
+all the encoders and decoders. In addition each codec may support
+so-called private options, which are specific for a given codec.
+</p>
+<p>Sometimes, a global option may only affect a specific kind of codec,
+and may be unsensical or ignored by another, so you need to be aware
+of the meaning of the specified options. Also some options are
+meant only for decoding or encoding.
+</p>
+<p>Options may be set by specifying -<var>option</var> <var>value</var> in the
+FFmpeg tools, or by setting the value explicitly in the
+<code>AVCodecContext</code> options or using the &lsquo;<tt>libavutil/opt.h</tt>&rsquo; API
+for programmatic use.
+</p>
+<p>The list of supported options follow:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set bitrate in bits/s. Default value is 200K.
+</p>
+</dd>
+<dt> &lsquo;<samp>ab <var>integer</var> (<em>encoding,audio</em>)</samp>&rsquo;</dt>
+<dd><p>Set audio bitrate (in bits/s). Default value is 128K.
+</p>
+</dd>
+<dt> &lsquo;<samp>bt <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set video bitrate tolerance (in bits/s). In 1-pass mode, bitrate
+tolerance specifies how far ratecontrol is willing to deviate from the
+target average bitrate value. This is not related to min/max
+bitrate. Lowering tolerance too much has an adverse effect on quality.
+</p>
+</dd>
+<dt> &lsquo;<samp>flags <var>flags</var> (<em>decoding/encoding,audio,video,subtitles</em>)</samp>&rsquo;</dt>
+<dd><p>Set generic flags.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>mv4</samp>&rsquo;</dt>
+<dd><p>Use four motion vector by macroblock (mpeg4).
+</p></dd>
+<dt> &lsquo;<samp>qpel</samp>&rsquo;</dt>
+<dd><p>Use 1/4 pel motion compensation.
+</p></dd>
+<dt> &lsquo;<samp>loop</samp>&rsquo;</dt>
+<dd><p>Use loop filter.
+</p></dd>
+<dt> &lsquo;<samp>qscale</samp>&rsquo;</dt>
+<dd><p>Use fixed qscale.
+</p></dd>
+<dt> &lsquo;<samp>gmc</samp>&rsquo;</dt>
+<dd><p>Use gmc.
+</p></dd>
+<dt> &lsquo;<samp>mv0</samp>&rsquo;</dt>
+<dd><p>Always try a mb with mv=&lt;0,0&gt;.
+</p></dd>
+<dt> &lsquo;<samp>input_preserved</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>pass1</samp>&rsquo;</dt>
+<dd><p>Use internal 2pass ratecontrol in first pass mode.
+</p></dd>
+<dt> &lsquo;<samp>pass2</samp>&rsquo;</dt>
+<dd><p>Use internal 2pass ratecontrol in second pass mode.
+</p></dd>
+<dt> &lsquo;<samp>gray</samp>&rsquo;</dt>
+<dd><p>Only decode/encode grayscale.
+</p></dd>
+<dt> &lsquo;<samp>emu_edge</samp>&rsquo;</dt>
+<dd><p>Do not draw edges.
+</p></dd>
+<dt> &lsquo;<samp>psnr</samp>&rsquo;</dt>
+<dd><p>Set error[?] variables during encoding.
+</p></dd>
+<dt> &lsquo;<samp>truncated</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>naq</samp>&rsquo;</dt>
+<dd><p>Normalize adaptive quantization.
+</p></dd>
+<dt> &lsquo;<samp>ildct</samp>&rsquo;</dt>
+<dd><p>Use interlaced DCT.
+</p></dd>
+<dt> &lsquo;<samp>low_delay</samp>&rsquo;</dt>
+<dd><p>Force low delay.
+</p></dd>
+<dt> &lsquo;<samp>global_header</samp>&rsquo;</dt>
+<dd><p>Place global headers in extradata instead of every keyframe.
+</p></dd>
+<dt> &lsquo;<samp>bitexact</samp>&rsquo;</dt>
+<dd><p>Use only bitexact stuff (except (I)DCT).
+</p></dd>
+<dt> &lsquo;<samp>aic</samp>&rsquo;</dt>
+<dd><p>Apply H263 advanced intra coding / mpeg4 ac prediction.
+</p></dd>
+<dt> &lsquo;<samp>cbp</samp>&rsquo;</dt>
+<dd><p>Deprecated, use mpegvideo private options instead.
+</p></dd>
+<dt> &lsquo;<samp>qprd</samp>&rsquo;</dt>
+<dd><p>Deprecated, use mpegvideo private options instead.
+</p></dd>
+<dt> &lsquo;<samp>ilme</samp>&rsquo;</dt>
+<dd><p>Apply interlaced motion estimation.
+</p></dd>
+<dt> &lsquo;<samp>cgop</samp>&rsquo;</dt>
+<dd><p>Use closed gop.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>me_method <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set motion estimation method.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>zero motion estimation (fastest)
+</p></dd>
+<dt> &lsquo;<samp>full</samp>&rsquo;</dt>
+<dd><p>full motion estimation (slowest)
+</p></dd>
+<dt> &lsquo;<samp>epzs</samp>&rsquo;</dt>
+<dd><p>EPZS motion estimation (default)
+</p></dd>
+<dt> &lsquo;<samp>esa</samp>&rsquo;</dt>
+<dd><p>esa motion estimation (alias for full)
+</p></dd>
+<dt> &lsquo;<samp>tesa</samp>&rsquo;</dt>
+<dd><p>tesa motion estimation
+</p></dd>
+<dt> &lsquo;<samp>dia</samp>&rsquo;</dt>
+<dd><p>dia motion estimation (alias for epzs)
+</p></dd>
+<dt> &lsquo;<samp>log</samp>&rsquo;</dt>
+<dd><p>log motion estimation
+</p></dd>
+<dt> &lsquo;<samp>phods</samp>&rsquo;</dt>
+<dd><p>phods motion estimation
+</p></dd>
+<dt> &lsquo;<samp>x1</samp>&rsquo;</dt>
+<dd><p>X1 motion estimation
+</p></dd>
+<dt> &lsquo;<samp>hex</samp>&rsquo;</dt>
+<dd><p>hex motion estimation
+</p></dd>
+<dt> &lsquo;<samp>umh</samp>&rsquo;</dt>
+<dd><p>umh motion estimation
+</p></dd>
+<dt> &lsquo;<samp>iter</samp>&rsquo;</dt>
+<dd><p>iter motion estimation
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>extradata_size <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Set extradata size.
+</p>
+</dd>
+<dt> &lsquo;<samp>time_base <var>rational number</var></samp>&rsquo;</dt>
+<dd><p>Set codec time base.
+</p>
+<p>It is the fundamental unit of time (in seconds) in terms of which
+frame timestamps are represented. For fixed-fps content, timebase
+should be <code>1 / frame_rate</code> and timestamp increments should be
+identically 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>g <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set the group of picture size. Default value is 12.
+</p>
+</dd>
+<dt> &lsquo;<samp>ar <var>integer</var> (<em>decoding/encoding,audio</em>)</samp>&rsquo;</dt>
+<dd><p>Set audio sampling rate (in Hz).
+</p>
+</dd>
+<dt> &lsquo;<samp>ac <var>integer</var> (<em>decoding/encoding,audio</em>)</samp>&rsquo;</dt>
+<dd><p>Set number of audio channels.
+</p>
+</dd>
+<dt> &lsquo;<samp>cutoff <var>integer</var> (<em>encoding,audio</em>)</samp>&rsquo;</dt>
+<dd><p>Set cutoff bandwidth.
+</p>
+</dd>
+<dt> &lsquo;<samp>frame_size <var>integer</var> (<em>encoding,audio</em>)</samp>&rsquo;</dt>
+<dd><p>Set audio frame size.
+</p>
+<p>Each submitted frame except the last must contain exactly frame_size
+samples per channel. May be 0 when the codec has
+CODEC_CAP_VARIABLE_FRAME_SIZE set, in that case the frame size is not
+restricted. It is set by some decoders to indicate constant frame
+size.
+</p>
+</dd>
+<dt> &lsquo;<samp>frame_number <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Set the frame number.
+</p>
+</dd>
+<dt> &lsquo;<samp>delay <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qcomp <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set video quantizer scale compression (VBR). It is used as a constant
+in the ratecontrol equation. Recommended range for default rc_eq:
+0.0-1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>qblur <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set video quantizer scale blur (VBR).
+</p>
+</dd>
+<dt> &lsquo;<samp>qmin <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set min video quantizer scale (VBR). Must be included between -1 and
+69, default value is 2.
+</p>
+</dd>
+<dt> &lsquo;<samp>qmax <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set max video quantizer scale (VBR). Must be included between -1 and
+1024, default value is 31.
+</p>
+</dd>
+<dt> &lsquo;<samp>qdiff <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set max difference between the quantizer scale (VBR).
+</p>
+</dd>
+<dt> &lsquo;<samp>bf <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set max number of B frames between non-B-frames.
+</p>
+<p>Must be an integer between -1 and 16. 0 means that B-frames are
+disabled. If a value of -1 is used, it will choose an automatic value
+depending on the encoder.
+</p>
+<p>Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>b_qfactor <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set qp factor between P and B frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_strategy <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set ratecontrol method.
+</p>
+</dd>
+<dt> &lsquo;<samp>b_strategy <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set strategy to choose between I/P/B-frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>ps <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set RTP payload size in bytes.
+</p>
+</dd>
+<dt> &lsquo;<samp>mv_bits <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>header_bits <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>i_tex_bits <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>p_tex_bits <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>i_count <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>p_count <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>skip_count <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>misc_bits <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>frame_bits <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>codec_tag <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bug <var>flags</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Workaround not auto detected encoder bugs.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>autodetect</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>old_msmpeg4</samp>&rsquo;</dt>
+<dd><p>some old lavc generated msmpeg4v3 files (no autodetection)
+</p></dd>
+<dt> &lsquo;<samp>xvid_ilace</samp>&rsquo;</dt>
+<dd><p>Xvid interlacing bug (autodetected if fourcc==XVIX)
+</p></dd>
+<dt> &lsquo;<samp>ump4</samp>&rsquo;</dt>
+<dd><p>(autodetected if fourcc==UMP4)
+</p></dd>
+<dt> &lsquo;<samp>no_padding</samp>&rsquo;</dt>
+<dd><p>padding bug (autodetected)
+</p></dd>
+<dt> &lsquo;<samp>amv</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ac_vlc</samp>&rsquo;</dt>
+<dd><p>illegal vlc bug (autodetected per fourcc)
+</p></dd>
+<dt> &lsquo;<samp>qpel_chroma</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>std_qpel</samp>&rsquo;</dt>
+<dd><p>old standard qpel (autodetected per fourcc/version)
+</p></dd>
+<dt> &lsquo;<samp>qpel_chroma2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>direct_blocksize</samp>&rsquo;</dt>
+<dd><p>direct-qpel-blocksize bug (autodetected per fourcc/version)
+</p></dd>
+<dt> &lsquo;<samp>edge</samp>&rsquo;</dt>
+<dd><p>edge padding bug (autodetected per fourcc/version)
+</p></dd>
+<dt> &lsquo;<samp>hpel_chroma</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dc_clip</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ms</samp>&rsquo;</dt>
+<dd><p>Workaround various bugs in microsoft broken decoders.
+</p></dd>
+<dt> &lsquo;<samp>trunc</samp>&rsquo;</dt>
+<dd><p>trancated frames
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>lelim <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set single coefficient elimination threshold for luminance (negative
+values also consider DC coefficient).
+</p>
+</dd>
+<dt> &lsquo;<samp>celim <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set single coefficient elimination threshold for chrominance (negative
+values also consider dc coefficient)
+</p>
+</dd>
+<dt> &lsquo;<samp>strict <var>integer</var> (<em>decoding/encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd><p>Specify how strictly to follow the standards.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>very</samp>&rsquo;</dt>
+<dd><p>strictly conform to a older more strict version of the spec or reference software
+</p></dd>
+<dt> &lsquo;<samp>strict</samp>&rsquo;</dt>
+<dd><p>strictly conform to all the things in the spec no matter what consequences
+</p></dd>
+<dt> &lsquo;<samp>normal</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>unofficial</samp>&rsquo;</dt>
+<dd><p>allow unofficial extensions
+</p></dd>
+<dt> &lsquo;<samp>experimental</samp>&rsquo;</dt>
+<dd><p>allow non standardized experimental things, experimental
+(unfinished/work in progress/not well tested) decoders and encoders.
+Note: experimental decoders can pose a security risk, do not use this for
+decoding untrusted input.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>b_qoffset <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set QP offset between P and B frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>err_detect <var>flags</var> (<em>decoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set error detection flags.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>crccheck</samp>&rsquo;</dt>
+<dd><p>verify embedded CRCs
+</p></dd>
+<dt> &lsquo;<samp>bitstream</samp>&rsquo;</dt>
+<dd><p>detect bitstream specification deviations
+</p></dd>
+<dt> &lsquo;<samp>buffer</samp>&rsquo;</dt>
+<dd><p>detect improper bitstream length
+</p></dd>
+<dt> &lsquo;<samp>explode</samp>&rsquo;</dt>
+<dd><p>abort decoding on minor error detection
+</p></dd>
+<dt> &lsquo;<samp>careful</samp>&rsquo;</dt>
+<dd><p>consider things that violate the spec and have not been seen in the wild as errors
+</p></dd>
+<dt> &lsquo;<samp>compliant</samp>&rsquo;</dt>
+<dd><p>consider all spec non compliancies as errors
+</p></dd>
+<dt> &lsquo;<samp>aggressive</samp>&rsquo;</dt>
+<dd><p>consider things that a sane encoder should not do as an error
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>has_b_frames <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>block_align <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mpeg_quant <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Use MPEG quantizers instead of H.263.
+</p>
+</dd>
+<dt> &lsquo;<samp>qsquish <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>How to keep quantizer between qmin and qmax (0 = clip, 1 = use
+differentiable function).
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_qmod_amp <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set experimental quantizer modulation.
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_qmod_freq <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set experimental quantizer modulation.
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_override_count <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>rc_eq <var>string</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set rate control equation. When computing the expression, besides the
+standard functions defined in the section &rsquo;Expression Evaluation&rsquo;, the
+following functions are available: bits2qp(bits), qp2bits(qp). Also
+the following constants are available: iTex pTex tex mv fCode iCount
+mcVar var isI isP isB avgQP qComp avgIITex avgPITex avgPPTex avgBPTex
+avgTex.
+</p>
+</dd>
+<dt> &lsquo;<samp>maxrate <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set max bitrate tolerance (in bits/s). Requires bufsize to be set.
+</p>
+</dd>
+<dt> &lsquo;<samp>minrate <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set min bitrate tolerance (in bits/s). Most useful in setting up a CBR
+encode. It is of little use elsewise.
+</p>
+</dd>
+<dt> &lsquo;<samp>bufsize <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set ratecontrol buffer size (in bits).
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_buf_aggressivity <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Currently useless.
+</p>
+</dd>
+<dt> &lsquo;<samp>i_qfactor <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set QP factor between P and I frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>i_qoffset <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set QP offset between P and I frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_init_cplx <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set initial complexity for 1-pass encoding.
+</p>
+</dd>
+<dt> &lsquo;<samp>dct <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set DCT algorithm.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>autoselect a good one (default)
+</p></dd>
+<dt> &lsquo;<samp>fastint</samp>&rsquo;</dt>
+<dd><p>fast integer
+</p></dd>
+<dt> &lsquo;<samp>int</samp>&rsquo;</dt>
+<dd><p>accurate integer
+</p></dd>
+<dt> &lsquo;<samp>mmx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>altivec</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>faan</samp>&rsquo;</dt>
+<dd><p>floating point AAN DCT
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>lumi_mask <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Compress bright areas stronger than medium ones.
+</p>
+</dd>
+<dt> &lsquo;<samp>tcplx_mask <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set temporal complexity masking.
+</p>
+</dd>
+<dt> &lsquo;<samp>scplx_mask <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set spatial complexity masking.
+</p>
+</dd>
+<dt> &lsquo;<samp>p_mask <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set inter masking.
+</p>
+</dd>
+<dt> &lsquo;<samp>dark_mask <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Compress dark areas stronger than medium ones.
+</p>
+</dd>
+<dt> &lsquo;<samp>idct <var>integer</var> (<em>decoding/encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Select IDCT implementation.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>int</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>simple</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>simplemmx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>arm</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>altivec</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sh4</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>simplearm</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>simplearmv5te</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>simplearmv6</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>simpleneon</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>simplealpha</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ipp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>xvidmmx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>faani</samp>&rsquo;</dt>
+<dd><p>floating point AAN IDCT
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>slice_count <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ec <var>flags</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set error concealment strategy.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>guess_mvs</samp>&rsquo;</dt>
+<dd><p>iterative motion vector (MV) search (slow)
+</p></dd>
+<dt> &lsquo;<samp>deblock</samp>&rsquo;</dt>
+<dd><p>use strong deblock filter for damaged MBs
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>bits_per_coded_sample <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>pred <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set prediction method.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>left</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>plane</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>median</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>aspect <var>rational number</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set sample aspect ratio.
+</p>
+</dd>
+<dt> &lsquo;<samp>debug <var>flags</var> (<em>decoding/encoding,audio,video,subtitles</em>)</samp>&rsquo;</dt>
+<dd><p>Print specific debug info.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>pict</samp>&rsquo;</dt>
+<dd><p>picture info
+</p></dd>
+<dt> &lsquo;<samp>rc</samp>&rsquo;</dt>
+<dd><p>rate control
+</p></dd>
+<dt> &lsquo;<samp>bitstream</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mb_type</samp>&rsquo;</dt>
+<dd><p>macroblock (MB) type
+</p></dd>
+<dt> &lsquo;<samp>qp</samp>&rsquo;</dt>
+<dd><p>per-block quantization parameter (QP)
+</p></dd>
+<dt> &lsquo;<samp>mv</samp>&rsquo;</dt>
+<dd><p>motion vector
+</p></dd>
+<dt> &lsquo;<samp>dct_coeff</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>skip</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>startcode</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>er</samp>&rsquo;</dt>
+<dd><p>error recognition
+</p></dd>
+<dt> &lsquo;<samp>mmco</samp>&rsquo;</dt>
+<dd><p>memory management control operations (H.264)
+</p></dd>
+<dt> &lsquo;<samp>bugs</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vis_qp</samp>&rsquo;</dt>
+<dd><p>visualize quantization parameter (QP), lower QP are tinted greener
+</p></dd>
+<dt> &lsquo;<samp>vis_mb_type</samp>&rsquo;</dt>
+<dd><p>visualize block types
+</p></dd>
+<dt> &lsquo;<samp>buffers</samp>&rsquo;</dt>
+<dd><p>picture buffer allocations
+</p></dd>
+<dt> &lsquo;<samp>thread_ops</samp>&rsquo;</dt>
+<dd><p>threading operations
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>vismv <var>integer</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Visualize motion vectors (MVs).
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>pf</samp>&rsquo;</dt>
+<dd><p>forward predicted MVs of P-frames
+</p></dd>
+<dt> &lsquo;<samp>bf</samp>&rsquo;</dt>
+<dd><p>forward predicted MVs of B-frames
+</p></dd>
+<dt> &lsquo;<samp>bb</samp>&rsquo;</dt>
+<dd><p>backward predicted MVs of B-frames
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>cmp <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set full pel me compare function.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sad</samp>&rsquo;</dt>
+<dd><p>sum of absolute differences, fast (default)
+</p></dd>
+<dt> &lsquo;<samp>sse</samp>&rsquo;</dt>
+<dd><p>sum of squared errors
+</p></dd>
+<dt> &lsquo;<samp>satd</samp>&rsquo;</dt>
+<dd><p>sum of absolute Hadamard transformed differences
+</p></dd>
+<dt> &lsquo;<samp>dct</samp>&rsquo;</dt>
+<dd><p>sum of absolute DCT transformed differences
+</p></dd>
+<dt> &lsquo;<samp>psnr</samp>&rsquo;</dt>
+<dd><p>sum of squared quantization errors (avoid, low quality)
+</p></dd>
+<dt> &lsquo;<samp>bit</samp>&rsquo;</dt>
+<dd><p>number of bits needed for the block
+</p></dd>
+<dt> &lsquo;<samp>rd</samp>&rsquo;</dt>
+<dd><p>rate distortion optimal, slow
+</p></dd>
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>0
+</p></dd>
+<dt> &lsquo;<samp>vsad</samp>&rsquo;</dt>
+<dd><p>sum of absolute vertical differences
+</p></dd>
+<dt> &lsquo;<samp>vsse</samp>&rsquo;</dt>
+<dd><p>sum of squared vertical differences
+</p></dd>
+<dt> &lsquo;<samp>nsse</samp>&rsquo;</dt>
+<dd><p>noise preserving sum of squared differences
+</p></dd>
+<dt> &lsquo;<samp>w53</samp>&rsquo;</dt>
+<dd><p>5/3 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>w97</samp>&rsquo;</dt>
+<dd><p>9/7 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>dctmax</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>subcmp <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set sub pel me compare function.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sad</samp>&rsquo;</dt>
+<dd><p>sum of absolute differences, fast (default)
+</p></dd>
+<dt> &lsquo;<samp>sse</samp>&rsquo;</dt>
+<dd><p>sum of squared errors
+</p></dd>
+<dt> &lsquo;<samp>satd</samp>&rsquo;</dt>
+<dd><p>sum of absolute Hadamard transformed differences
+</p></dd>
+<dt> &lsquo;<samp>dct</samp>&rsquo;</dt>
+<dd><p>sum of absolute DCT transformed differences
+</p></dd>
+<dt> &lsquo;<samp>psnr</samp>&rsquo;</dt>
+<dd><p>sum of squared quantization errors (avoid, low quality)
+</p></dd>
+<dt> &lsquo;<samp>bit</samp>&rsquo;</dt>
+<dd><p>number of bits needed for the block
+</p></dd>
+<dt> &lsquo;<samp>rd</samp>&rsquo;</dt>
+<dd><p>rate distortion optimal, slow
+</p></dd>
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>0
+</p></dd>
+<dt> &lsquo;<samp>vsad</samp>&rsquo;</dt>
+<dd><p>sum of absolute vertical differences
+</p></dd>
+<dt> &lsquo;<samp>vsse</samp>&rsquo;</dt>
+<dd><p>sum of squared vertical differences
+</p></dd>
+<dt> &lsquo;<samp>nsse</samp>&rsquo;</dt>
+<dd><p>noise preserving sum of squared differences
+</p></dd>
+<dt> &lsquo;<samp>w53</samp>&rsquo;</dt>
+<dd><p>5/3 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>w97</samp>&rsquo;</dt>
+<dd><p>9/7 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>dctmax</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>mbcmp <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set macroblock compare function.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sad</samp>&rsquo;</dt>
+<dd><p>sum of absolute differences, fast (default)
+</p></dd>
+<dt> &lsquo;<samp>sse</samp>&rsquo;</dt>
+<dd><p>sum of squared errors
+</p></dd>
+<dt> &lsquo;<samp>satd</samp>&rsquo;</dt>
+<dd><p>sum of absolute Hadamard transformed differences
+</p></dd>
+<dt> &lsquo;<samp>dct</samp>&rsquo;</dt>
+<dd><p>sum of absolute DCT transformed differences
+</p></dd>
+<dt> &lsquo;<samp>psnr</samp>&rsquo;</dt>
+<dd><p>sum of squared quantization errors (avoid, low quality)
+</p></dd>
+<dt> &lsquo;<samp>bit</samp>&rsquo;</dt>
+<dd><p>number of bits needed for the block
+</p></dd>
+<dt> &lsquo;<samp>rd</samp>&rsquo;</dt>
+<dd><p>rate distortion optimal, slow
+</p></dd>
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>0
+</p></dd>
+<dt> &lsquo;<samp>vsad</samp>&rsquo;</dt>
+<dd><p>sum of absolute vertical differences
+</p></dd>
+<dt> &lsquo;<samp>vsse</samp>&rsquo;</dt>
+<dd><p>sum of squared vertical differences
+</p></dd>
+<dt> &lsquo;<samp>nsse</samp>&rsquo;</dt>
+<dd><p>noise preserving sum of squared differences
+</p></dd>
+<dt> &lsquo;<samp>w53</samp>&rsquo;</dt>
+<dd><p>5/3 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>w97</samp>&rsquo;</dt>
+<dd><p>9/7 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>dctmax</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>ildctcmp <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set interlaced dct compare function.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sad</samp>&rsquo;</dt>
+<dd><p>sum of absolute differences, fast (default)
+</p></dd>
+<dt> &lsquo;<samp>sse</samp>&rsquo;</dt>
+<dd><p>sum of squared errors
+</p></dd>
+<dt> &lsquo;<samp>satd</samp>&rsquo;</dt>
+<dd><p>sum of absolute Hadamard transformed differences
+</p></dd>
+<dt> &lsquo;<samp>dct</samp>&rsquo;</dt>
+<dd><p>sum of absolute DCT transformed differences
+</p></dd>
+<dt> &lsquo;<samp>psnr</samp>&rsquo;</dt>
+<dd><p>sum of squared quantization errors (avoid, low quality)
+</p></dd>
+<dt> &lsquo;<samp>bit</samp>&rsquo;</dt>
+<dd><p>number of bits needed for the block
+</p></dd>
+<dt> &lsquo;<samp>rd</samp>&rsquo;</dt>
+<dd><p>rate distortion optimal, slow
+</p></dd>
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>0
+</p></dd>
+<dt> &lsquo;<samp>vsad</samp>&rsquo;</dt>
+<dd><p>sum of absolute vertical differences
+</p></dd>
+<dt> &lsquo;<samp>vsse</samp>&rsquo;</dt>
+<dd><p>sum of squared vertical differences
+</p></dd>
+<dt> &lsquo;<samp>nsse</samp>&rsquo;</dt>
+<dd><p>noise preserving sum of squared differences
+</p></dd>
+<dt> &lsquo;<samp>w53</samp>&rsquo;</dt>
+<dd><p>5/3 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>w97</samp>&rsquo;</dt>
+<dd><p>9/7 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>dctmax</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>dia_size <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set diamond type &amp; size for motion estimation.
+</p>
+</dd>
+<dt> &lsquo;<samp>last_pred <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set amount of motion predictors from the previous frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>preme <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set pre motion estimation.
+</p>
+</dd>
+<dt> &lsquo;<samp>precmp <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set pre motion estimation compare function.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sad</samp>&rsquo;</dt>
+<dd><p>sum of absolute differences, fast (default)
+</p></dd>
+<dt> &lsquo;<samp>sse</samp>&rsquo;</dt>
+<dd><p>sum of squared errors
+</p></dd>
+<dt> &lsquo;<samp>satd</samp>&rsquo;</dt>
+<dd><p>sum of absolute Hadamard transformed differences
+</p></dd>
+<dt> &lsquo;<samp>dct</samp>&rsquo;</dt>
+<dd><p>sum of absolute DCT transformed differences
+</p></dd>
+<dt> &lsquo;<samp>psnr</samp>&rsquo;</dt>
+<dd><p>sum of squared quantization errors (avoid, low quality)
+</p></dd>
+<dt> &lsquo;<samp>bit</samp>&rsquo;</dt>
+<dd><p>number of bits needed for the block
+</p></dd>
+<dt> &lsquo;<samp>rd</samp>&rsquo;</dt>
+<dd><p>rate distortion optimal, slow
+</p></dd>
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>0
+</p></dd>
+<dt> &lsquo;<samp>vsad</samp>&rsquo;</dt>
+<dd><p>sum of absolute vertical differences
+</p></dd>
+<dt> &lsquo;<samp>vsse</samp>&rsquo;</dt>
+<dd><p>sum of squared vertical differences
+</p></dd>
+<dt> &lsquo;<samp>nsse</samp>&rsquo;</dt>
+<dd><p>noise preserving sum of squared differences
+</p></dd>
+<dt> &lsquo;<samp>w53</samp>&rsquo;</dt>
+<dd><p>5/3 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>w97</samp>&rsquo;</dt>
+<dd><p>9/7 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>dctmax</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>pre_dia_size <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set diamond type &amp; size for motion estimation pre-pass.
+</p>
+</dd>
+<dt> &lsquo;<samp>subq <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set sub pel motion estimation quality.
+</p>
+</dd>
+<dt> &lsquo;<samp>dtg_active_format <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>me_range <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set limit motion vectors range (1023 for DivX player).
+</p>
+</dd>
+<dt> &lsquo;<samp>ibias <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set intra quant bias.
+</p>
+</dd>
+<dt> &lsquo;<samp>pbias <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set inter quant bias.
+</p>
+</dd>
+<dt> &lsquo;<samp>color_table_id <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>global_quality <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>coder <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>vlc</samp>&rsquo;</dt>
+<dd><p>variable length coder / huffman coder
+</p></dd>
+<dt> &lsquo;<samp>ac</samp>&rsquo;</dt>
+<dd><p>arithmetic coder
+</p></dd>
+<dt> &lsquo;<samp>raw</samp>&rsquo;</dt>
+<dd><p>raw (no encoding)
+</p></dd>
+<dt> &lsquo;<samp>rle</samp>&rsquo;</dt>
+<dd><p>run-length coder
+</p></dd>
+<dt> &lsquo;<samp>deflate</samp>&rsquo;</dt>
+<dd><p>deflate-based coder
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>context <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set context model.
+</p>
+</dd>
+<dt> &lsquo;<samp>slice_flags <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>xvmc_acceleration <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mbd <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set macroblock decision algorithm (high quality mode).
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>simple</samp>&rsquo;</dt>
+<dd><p>use mbcmp (default)
+</p></dd>
+<dt> &lsquo;<samp>bits</samp>&rsquo;</dt>
+<dd><p>use fewest bits
+</p></dd>
+<dt> &lsquo;<samp>rd</samp>&rsquo;</dt>
+<dd><p>use best rate distortion
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>stream_codec_tag <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sc_threshold <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set scene change threshold.
+</p>
+</dd>
+<dt> &lsquo;<samp>lmin <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set min lagrange factor (VBR).
+</p>
+</dd>
+<dt> &lsquo;<samp>lmax <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set max lagrange factor (VBR).
+</p>
+</dd>
+<dt> &lsquo;<samp>nr <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set noise reduction.
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_init_occupancy <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set number of bits which should be loaded into the rc buffer before
+decoding starts.
+</p>
+</dd>
+<dt> &lsquo;<samp>flags2 <var>flags</var> (<em>decoding/encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>fast</samp>&rsquo;</dt>
+<dd><p>Allow non spec compliant speedup tricks.
+</p></dd>
+<dt> &lsquo;<samp>sgop</samp>&rsquo;</dt>
+<dd><p>Deprecated, use mpegvideo private options instead.
+</p></dd>
+<dt> &lsquo;<samp>noout</samp>&rsquo;</dt>
+<dd><p>Skip bitstream encoding.
+</p></dd>
+<dt> &lsquo;<samp>ignorecrop</samp>&rsquo;</dt>
+<dd><p>Ignore cropping information from sps.
+</p></dd>
+<dt> &lsquo;<samp>local_header</samp>&rsquo;</dt>
+<dd><p>Place global headers at every keyframe instead of in extradata.
+</p></dd>
+<dt> &lsquo;<samp>chunks</samp>&rsquo;</dt>
+<dd><p>Frame data might be split into multiple chunks.
+</p></dd>
+<dt> &lsquo;<samp>showall</samp>&rsquo;</dt>
+<dd><p>Show all frames before the first keyframe.
+</p></dd>
+<dt> &lsquo;<samp>skiprd</samp>&rsquo;</dt>
+<dd><p>Deprecated, use mpegvideo private options instead.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>error <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qns <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Deprecated, use mpegvideo private options instead.
+</p>
+</dd>
+<dt> &lsquo;<samp>threads <var>integer</var> (<em>decoding/encoding,video</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>detect a good number of threads
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>me_threshold <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set motion estimation threshold.
+</p>
+</dd>
+<dt> &lsquo;<samp>mb_threshold <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set macroblock threshold.
+</p>
+</dd>
+<dt> &lsquo;<samp>dc <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set intra_dc_precision.
+</p>
+</dd>
+<dt> &lsquo;<samp>nssew <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set nsse weight.
+</p>
+</dd>
+<dt> &lsquo;<samp>skip_top <var>integer</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set number of macroblock rows at the top which are skipped.
+</p>
+</dd>
+<dt> &lsquo;<samp>skip_bottom <var>integer</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set number of macroblock rows at the bottom which are skipped.
+</p>
+</dd>
+<dt> &lsquo;<samp>profile <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>unknown</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aac_main</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aac_low</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aac_ssr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aac_ltp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aac_he</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aac_he_v2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aac_ld</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aac_eld</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mpeg2_aac_low</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mpeg2_aac_he</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dts</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dts_es</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dts_96_24</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dts_hd_hra</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dts_hd_ma</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>level <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>unknown</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>lowres <var>integer</var> (<em>decoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd><p>Decode at 1= 1/2, 2=1/4, 3=1/8 resolutions.
+</p>
+</dd>
+<dt> &lsquo;<samp>skip_threshold <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set frame skip threshold.
+</p>
+</dd>
+<dt> &lsquo;<samp>skip_factor <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set frame skip factor.
+</p>
+</dd>
+<dt> &lsquo;<samp>skip_exp <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set frame skip exponent.
+</p>
+</dd>
+<dt> &lsquo;<samp>skipcmp <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set frame skip compare function.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sad</samp>&rsquo;</dt>
+<dd><p>sum of absolute differences, fast (default)
+</p></dd>
+<dt> &lsquo;<samp>sse</samp>&rsquo;</dt>
+<dd><p>sum of squared errors
+</p></dd>
+<dt> &lsquo;<samp>satd</samp>&rsquo;</dt>
+<dd><p>sum of absolute Hadamard transformed differences
+</p></dd>
+<dt> &lsquo;<samp>dct</samp>&rsquo;</dt>
+<dd><p>sum of absolute DCT transformed differences
+</p></dd>
+<dt> &lsquo;<samp>psnr</samp>&rsquo;</dt>
+<dd><p>sum of squared quantization errors (avoid, low quality)
+</p></dd>
+<dt> &lsquo;<samp>bit</samp>&rsquo;</dt>
+<dd><p>number of bits needed for the block
+</p></dd>
+<dt> &lsquo;<samp>rd</samp>&rsquo;</dt>
+<dd><p>rate distortion optimal, slow
+</p></dd>
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>0
+</p></dd>
+<dt> &lsquo;<samp>vsad</samp>&rsquo;</dt>
+<dd><p>sum of absolute vertical differences
+</p></dd>
+<dt> &lsquo;<samp>vsse</samp>&rsquo;</dt>
+<dd><p>sum of squared vertical differences
+</p></dd>
+<dt> &lsquo;<samp>nsse</samp>&rsquo;</dt>
+<dd><p>noise preserving sum of squared differences
+</p></dd>
+<dt> &lsquo;<samp>w53</samp>&rsquo;</dt>
+<dd><p>5/3 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>w97</samp>&rsquo;</dt>
+<dd><p>9/7 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>dctmax</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>border_mask <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Increase the quantizer for macroblocks close to borders.
+</p>
+</dd>
+<dt> &lsquo;<samp>mblmin <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set min macroblock lagrange factor (VBR).
+</p>
+</dd>
+<dt> &lsquo;<samp>mblmax <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set max macroblock lagrange factor (VBR).
+</p>
+</dd>
+<dt> &lsquo;<samp>mepc <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set motion estimation bitrate penalty compensation (1.0 = 256).
+</p>
+</dd>
+<dt> &lsquo;<samp>skip_loop_filter <var>integer</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>skip_idct        <var>integer</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>skip_frame       <var>integer</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Make decoder discard processing depending on the frame type selected
+by the option value.
+</p>
+<p>&lsquo;<samp>skip_loop_filter</samp>&rsquo; skips frame loop filtering, &lsquo;<samp>skip_idct</samp>&rsquo;
+skips frame IDCT/dequantization, &lsquo;<samp>skip_frame</samp>&rsquo; skips decoding.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>Discard no frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>default</samp>&rsquo;</dt>
+<dd><p>Discard useless frames like 0-sized frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>noref</samp>&rsquo;</dt>
+<dd><p>Discard all non-reference frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>bidir</samp>&rsquo;</dt>
+<dd><p>Discard all bidirectional frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>nokey</samp>&rsquo;</dt>
+<dd><p>Discard all frames excepts keyframes.
+</p>
+</dd>
+<dt> &lsquo;<samp>all</samp>&rsquo;</dt>
+<dd><p>Discard all frames.
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>default</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>bidir_refine <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Refine the two motion vectors used in bidirectional macroblocks.
+</p>
+</dd>
+<dt> &lsquo;<samp>brd_scale <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Downscale frames for dynamic B-frame decision.
+</p>
+</dd>
+<dt> &lsquo;<samp>keyint_min <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set minimum interval between IDR-frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>refs <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set reference frames to consider for motion compensation.
+</p>
+</dd>
+<dt> &lsquo;<samp>chromaoffset <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set chroma qp offset from luma.
+</p>
+</dd>
+<dt> &lsquo;<samp>trellis <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set rate-distortion optimal quantization.
+</p>
+</dd>
+<dt> &lsquo;<samp>sc_factor <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set value multiplied by qscale for each frame and added to
+scene_change_score.
+</p>
+</dd>
+<dt> &lsquo;<samp>mv0_threshold <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>b_sensitivity <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Adjust sensitivity of b_frame_strategy 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>compression_level <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>min_prediction_order <var>integer</var> (<em>encoding,audio</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>max_prediction_order <var>integer</var> (<em>encoding,audio</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>timecode_frame_start <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set GOP timecode frame start number, in non drop frame format.
+</p>
+</dd>
+<dt> &lsquo;<samp>request_channels <var>integer</var> (<em>decoding,audio</em>)</samp>&rsquo;</dt>
+<dd><p>Set desired number of audio channels.
+</p>
+</dd>
+<dt> &lsquo;<samp>bits_per_raw_sample <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>channel_layout <var>integer</var> (<em>decoding/encoding,audio</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Possible values:
+</p></dd>
+<dt> &lsquo;<samp>request_channel_layout <var>integer</var> (<em>decoding,audio</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Possible values:
+</p></dd>
+<dt> &lsquo;<samp>rc_max_vbv_use <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>rc_min_vbv_use <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ticks_per_frame <var>integer</var> (<em>decoding/encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>color_primaries <var>integer</var> (<em>decoding/encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>color_trc <var>integer</var> (<em>decoding/encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>colorspace <var>integer</var> (<em>decoding/encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>color_range <var>integer</var> (<em>decoding/encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma_sample_location <var>integer</var> (<em>decoding/encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>log_level_offset <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Set the log level offset.
+</p>
+</dd>
+<dt> &lsquo;<samp>slices <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Number of slices, used in parallelized encoding.
+</p>
+</dd>
+<dt> &lsquo;<samp>thread_type <var>flags</var> (<em>decoding/encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Select multithreading type.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>slice</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>frame</samp>&rsquo;</dt>
+</dl>
+</dd>
+<dt> &lsquo;<samp>audio_service_type <var>integer</var> (<em>encoding,audio</em>)</samp>&rsquo;</dt>
+<dd><p>Set audio service type.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>ma</samp>&rsquo;</dt>
+<dd><p>Main Audio Service
+</p></dd>
+<dt> &lsquo;<samp>ef</samp>&rsquo;</dt>
+<dd><p>Effects
+</p></dd>
+<dt> &lsquo;<samp>vi</samp>&rsquo;</dt>
+<dd><p>Visually Impaired
+</p></dd>
+<dt> &lsquo;<samp>hi</samp>&rsquo;</dt>
+<dd><p>Hearing Impaired
+</p></dd>
+<dt> &lsquo;<samp>di</samp>&rsquo;</dt>
+<dd><p>Dialogue
+</p></dd>
+<dt> &lsquo;<samp>co</samp>&rsquo;</dt>
+<dd><p>Commentary
+</p></dd>
+<dt> &lsquo;<samp>em</samp>&rsquo;</dt>
+<dd><p>Emergency
+</p></dd>
+<dt> &lsquo;<samp>vo</samp>&rsquo;</dt>
+<dd><p>Voice Over
+</p></dd>
+<dt> &lsquo;<samp>ka</samp>&rsquo;</dt>
+<dd><p>Karaoke
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>request_sample_fmt <var>sample_fmt</var> (<em>decoding,audio</em>)</samp>&rsquo;</dt>
+<dd><p>Set sample format audio decoders should prefer. Default value is
+<code>none</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>pkt_timebase <var>rational number</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sub_charenc <var>encoding</var> (<em>decoding,subtitles</em>)</samp>&rsquo;</dt>
+<dd><p>Set the input subtitles character encoding.
+</p>
+</dd>
+<dt> &lsquo;<samp>field_order  <var>field_order</var> (<em>video</em>)</samp>&rsquo;</dt>
+<dd><p>Set/override the field order of the video.
+Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>progressive</samp>&rsquo;</dt>
+<dd><p>Progressive video
+</p></dd>
+<dt> &lsquo;<samp>tt</samp>&rsquo;</dt>
+<dd><p>Interlaced video, top field coded and displayed first
+</p></dd>
+<dt> &lsquo;<samp>bb</samp>&rsquo;</dt>
+<dd><p>Interlaced video, bottom field coded and displayed first
+</p></dd>
+<dt> &lsquo;<samp>tb</samp>&rsquo;</dt>
+<dd><p>Interlaced video, top coded first, bottom displayed first
+</p></dd>
+<dt> &lsquo;<samp>bt</samp>&rsquo;</dt>
+<dd><p>Interlaced video, bottom coded first, top displayed first
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>skip_alpha <var>integer</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set to 1 to disable processing alpha (transparency). This works like the
+&lsquo;<samp>gray</samp>&rsquo; flag in the &lsquo;<samp>flags</samp>&rsquo; option which skips chroma information
+instead of alpha. Default is 0.
+</p></dd>
+</dl>
+
+
+<a name="Decoders"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Decoders">8. Decoders</a></h1>
+
+<p>Decoders are configured elements in FFmpeg which allow the decoding of
+multimedia streams.
+</p>
+<p>When you configure your FFmpeg build, all the supported native decoders
+are enabled by default. Decoders requiring an external library must be enabled
+manually via the corresponding <code>--enable-lib</code> option. You can list all
+available decoders using the configure option <code>--list-decoders</code>.
+</p>
+<p>You can disable all the decoders with the configure option
+<code>--disable-decoders</code> and selectively enable / disable single decoders
+with the options <code>--enable-decoder=<var>DECODER</var></code> /
+<code>--disable-decoder=<var>DECODER</var></code>.
+</p>
+<p>The option <code>-codecs</code> of the ff* tools will display the list of
+enabled decoders.
+</p>
+
+<a name="Video-Decoders"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Video-Decoders">9. Video Decoders</a></h1>
+
+<p>A description of some of the currently available video decoders
+follows.
+</p>
+<a name="rawvideo-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-rawvideo-1">9.1 rawvideo</a></h2>
+
+<p>Raw video decoder.
+</p>
+<p>This decoder decodes rawvideo streams.
+</p>
+<a name="Options-9"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-9">9.1.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>top <var>top_field_first</var></samp>&rsquo;</dt>
+<dd><p>Specify the assumed field type of the input video.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>-1</samp>&rsquo;</dt>
+<dd><p>the video is assumed to be progressive (default)
+</p></dd>
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>bottom-field-first is assumed
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>top-field-first is assumed
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+
+<a name="Audio-Decoders"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Audio-Decoders">10. Audio Decoders</a></h1>
+
+<a name="ffwavesynth"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-ffwavesynth">10.1 ffwavesynth</a></h2>
+
+<p>Internal wave synthetizer.
+</p>
+<p>This decoder generates wave patterns according to predefined sequences. Its
+use is purely internal and the format of the data it accepts is not publicly
+documented.
+</p>
+<a name="libcelt"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-libcelt">10.2 libcelt</a></h2>
+
+<p>libcelt decoder wrapper.
+</p>
+<p>libcelt allows libavcodec to decode the Xiph CELT ultra-low delay audio codec.
+Requires the presence of the libcelt headers and library during configuration.
+You need to explicitly configure the build with <code>--enable-libcelt</code>.
+</p>
+<a name="libgsm"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-libgsm">10.3 libgsm</a></h2>
+
+<p>libgsm decoder wrapper.
+</p>
+<p>libgsm allows libavcodec to decode the GSM full rate audio codec. Requires
+the presence of the libgsm headers and library during configuration. You need
+to explicitly configure the build with <code>--enable-libgsm</code>.
+</p>
+<p>This decoder supports both the ordinary GSM and the Microsoft variant.
+</p>
+<a name="libilbc"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-libilbc">10.4 libilbc</a></h2>
+
+<p>libilbc decoder wrapper.
+</p>
+<p>libilbc allows libavcodec to decode the Internet Low Bitrate Codec (iLBC)
+audio codec. Requires the presence of the libilbc headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libilbc</code>.
+</p>
+<a name="Options"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options">10.4.1 Options</a></h3>
+
+<p>The following option is supported by the libilbc wrapper.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>enhance</samp>&rsquo;</dt>
+<dd>
+<p>Enable the enhancement of the decoded audio when set to 1. The default
+value is 0 (disabled).
+</p>
+</dd>
+</dl>
+
+<a name="libopencore_002damrnb-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-libopencore_002damrnb-1">10.5 libopencore-amrnb</a></h2>
+
+<p>libopencore-amrnb decoder wrapper.
+</p>
+<p>libopencore-amrnb allows libavcodec to decode the Adaptive Multi-Rate
+Narrowband audio codec. Using it requires the presence of the
+libopencore-amrnb headers and library during configuration. You need to
+explicitly configure the build with <code>--enable-libopencore-amrnb</code>.
+</p>
+<p>An FFmpeg native decoder for AMR-NB exists, so users can decode AMR-NB
+without this library.
+</p>
+<a name="libopencore_002damrwb"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-libopencore_002damrwb">10.6 libopencore-amrwb</a></h2>
+
+<p>libopencore-amrwb decoder wrapper.
+</p>
+<p>libopencore-amrwb allows libavcodec to decode the Adaptive Multi-Rate
+Wideband audio codec. Using it requires the presence of the
+libopencore-amrwb headers and library during configuration. You need to
+explicitly configure the build with <code>--enable-libopencore-amrwb</code>.
+</p>
+<p>An FFmpeg native decoder for AMR-WB exists, so users can decode AMR-WB
+without this library.
+</p>
+<a name="libopus"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-libopus">10.7 libopus</a></h2>
+
+<p>libopus decoder wrapper.
+</p>
+<p>libopus allows libavcodec to decode the Opus Interactive Audio Codec.
+Requires the presence of the libopus headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libopus</code>.
+</p>
+
+<a name="Subtitles-Decoders"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Subtitles-Decoders">11. Subtitles Decoders</a></h1>
+
+<a name="dvdsub"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-dvdsub">11.1 dvdsub</a></h2>
+
+<p>This codec decodes the bitmap subtitles used in DVDs; the same subtitles can
+also be found in VobSub file pairs and in some Matroska files.
+</p>
+<a name="Options-24"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-24">11.1.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>palette</samp>&rsquo;</dt>
+<dd><p>Specify the global palette used by the bitmaps. When stored in VobSub, the
+palette is normally specified in the index file; in Matroska, the palette is
+stored in the codec extra-data in the same format as in VobSub. In DVDs, the
+palette is stored in the IFO file, and therefore not available when reading
+from dumped VOB files.
+</p>
+<p>The format for this option is a string containing 16 24-bits hexadecimal
+numbers (without 0x prefix) separated by comas, for example <code>0d00ee,
+ee450d, 101010, eaeaea, 0ce60b, ec14ed, ebff0b, 0d617a, 7b7b7b, d1d1d1,
+7b2a0e, 0d950c, 0f007b, cf0dec, cfa80c, 7c127b</code>.
+</p></dd>
+</dl>
+
+<a name="libzvbi_002dteletext"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-libzvbi_002dteletext">11.2 libzvbi-teletext</a></h2>
+
+<p>Libzvbi allows libavcodec to decode DVB teletext pages and DVB teletext
+subtitles. Requires the presence of the libzvbi headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libzvbi</code>.
+</p>
+<a name="Options-7"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-7">11.2.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>txt_page</samp>&rsquo;</dt>
+<dd><p>List of teletext page numbers to decode. You may use the special * string to
+match all pages. Pages that do not match the specified list are dropped.
+Default value is *.
+</p></dd>
+<dt> &lsquo;<samp>txt_chop_top</samp>&rsquo;</dt>
+<dd><p>Discards the top teletext line. Default value is 1.
+</p></dd>
+<dt> &lsquo;<samp>txt_format</samp>&rsquo;</dt>
+<dd><p>Specifies the format of the decoded subtitles. The teletext decoder is capable
+of decoding the teletext pages to bitmaps or to simple text, you should use
+&quot;bitmap&quot; for teletext pages, because certain graphics and colors cannot be
+expressed in simple text. You might use &quot;text&quot; for teletext based subtitles if
+your application can handle simple text based subtitles. Default value is
+bitmap.
+</p></dd>
+<dt> &lsquo;<samp>txt_left</samp>&rsquo;</dt>
+<dd><p>X offset of generated bitmaps, default is 0.
+</p></dd>
+<dt> &lsquo;<samp>txt_top</samp>&rsquo;</dt>
+<dd><p>Y offset of generated bitmaps, default is 0.
+</p></dd>
+<dt> &lsquo;<samp>txt_chop_spaces</samp>&rsquo;</dt>
+<dd><p>Chops leading and trailing spaces and removes empty lines from the generated
+text. This option is useful for teletext based subtitles where empty spaces may
+be present at the start or at the end of the lines or empty lines may be
+present between the subtitle lines because of double-sized teletext charactes.
+Default value is 1.
+</p></dd>
+<dt> &lsquo;<samp>txt_duration</samp>&rsquo;</dt>
+<dd><p>Sets the display duration of the decoded teletext pages or subtitles in
+miliseconds. Default value is 30000 which is 30 seconds.
+</p></dd>
+<dt> &lsquo;<samp>txt_transparent</samp>&rsquo;</dt>
+<dd><p>Force transparent background of the generated teletext bitmaps. Default value
+is 0 which means an opaque (black) background.
+</p></dd>
+</dl>
+
+<a name="Encoders"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Encoders">12. Encoders</a></h1>
+
+<p>Encoders are configured elements in FFmpeg which allow the encoding of
+multimedia streams.
+</p>
+<p>When you configure your FFmpeg build, all the supported native encoders
+are enabled by default. Encoders requiring an external library must be enabled
+manually via the corresponding <code>--enable-lib</code> option. You can list all
+available encoders using the configure option <code>--list-encoders</code>.
+</p>
+<p>You can disable all the encoders with the configure option
+<code>--disable-encoders</code> and selectively enable / disable single encoders
+with the options <code>--enable-encoder=<var>ENCODER</var></code> /
+<code>--disable-encoder=<var>ENCODER</var></code>.
+</p>
+<p>The option <code>-codecs</code> of the ff* tools will display the list of
+enabled encoders.
+</p>
+
+<a name="Audio-Encoders"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Audio-Encoders">13. Audio Encoders</a></h1>
+
+<p>A description of some of the currently available audio encoders
+follows.
+</p>
+<p><a name="aacenc"></a>
+</p><a name="aac"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-aac">13.1 aac</a></h2>
+
+<p>Advanced Audio Coding (AAC) encoder.
+</p>
+<p>This encoder is an experimental FFmpeg-native AAC encoder. Currently only the
+low complexity (AAC-LC) profile is supported. To use this encoder, you must set
+&lsquo;<samp>strict</samp>&rsquo; option to &lsquo;<samp>experimental</samp>&rsquo; or lower.
+</p>
+<p>As this encoder is experimental, unexpected behavior may exist from time to
+time. For a more stable AAC encoder, see <a href="#libvo_002daacenc">libvo-aacenc</a>. However, be warned
+that it has a worse quality reported by some users.
+</p>
+<p>See also <a href="#libfdk_002daac_002denc">libfdk_aac</a> and <a href="#libfaac">libfaac</a>.
+</p>
+<a name="Options-27"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-27">13.1.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>Set bit rate in bits/s. Setting this automatically activates constant bit rate
+(CBR) mode.
+</p>
+</dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Set quality for variable bit rate (VBR) mode. This option is valid only using
+the <code>ffmpeg</code> command-line tool. For library interface users, use
+&lsquo;<samp>global_quality</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>stereo_mode</samp>&rsquo;</dt>
+<dd><p>Set stereo encoding mode. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Automatically selected by the encoder.
+</p>
+</dd>
+<dt> &lsquo;<samp>ms_off</samp>&rsquo;</dt>
+<dd><p>Disable middle/side encoding. This is the default.
+</p>
+</dd>
+<dt> &lsquo;<samp>ms_force</samp>&rsquo;</dt>
+<dd><p>Force middle/side encoding.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>aac_coder</samp>&rsquo;</dt>
+<dd><p>Set AAC encoder coding method. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>faac</samp>&rsquo;</dt>
+<dd><p>FAAC-inspired method.
+</p>
+<p>This method is a simplified reimplementation of the method used in FAAC, which
+sets thresholds proportional to the band energies, and then decreases all the
+thresholds with quantizer steps to find the appropriate quantization with
+distortion below threshold band by band.
+</p>
+<p>The quality of this method is comparable to the two loop searching method
+descibed below, but somewhat a little better and slower.
+</p>
+</dd>
+<dt> &lsquo;<samp>anmr</samp>&rsquo;</dt>
+<dd><p>Average noise to mask ratio (ANMR) trellis-based solution.
+</p>
+<p>This has a theoretic best quality out of all the coding methods, but at the
+cost of the slowest speed.
+</p>
+</dd>
+<dt> &lsquo;<samp>twoloop</samp>&rsquo;</dt>
+<dd><p>Two loop searching (TLS) method.
+</p>
+<p>This method first sets quantizers depending on band thresholds and then tries
+to find an optimal combination by adding or subtracting a specific value from
+all quantizers and adjusting some individual quantizer a little.
+</p>
+<p>This method produces similar quality with the FAAC method and is the default.
+</p>
+</dd>
+<dt> &lsquo;<samp>fast</samp>&rsquo;</dt>
+<dd><p>Constant quantizer method.
+</p>
+<p>This method sets a constant quantizer for all bands. This is the fastest of all
+the methods, yet produces the worst quality.
+</p>
+</dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="ac3-and-ac3_005ffixed"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-ac3-and-ac3_005ffixed">13.2 ac3 and ac3_fixed</a></h2>
+
+<p>AC-3 audio encoders.
+</p>
+<p>These encoders implement part of ATSC A/52:2010 and ETSI TS 102 366, as well as
+the undocumented RealAudio 3 (a.k.a. dnet).
+</p>
+<p>The <var>ac3</var> encoder uses floating-point math, while the <var>ac3_fixed</var>
+encoder only uses fixed-point integer math. This does not mean that one is
+always faster, just that one or the other may be better suited to a
+particular system. The floating-point encoder will generally produce better
+quality audio for a given bitrate. The <var>ac3_fixed</var> encoder is not the
+default codec for any of the output formats, so it must be specified explicitly
+using the option <code>-acodec ac3_fixed</code> in order to use it.
+</p>
+<a name="AC_002d3-Metadata"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-AC_002d3-Metadata">13.2.1 AC-3 Metadata</a></h3>
+
+<p>The AC-3 metadata options are used to set parameters that describe the audio,
+but in most cases do not affect the audio encoding itself. Some of the options
+do directly affect or influence the decoding and playback of the resulting
+bitstream, while others are just for informational purposes. A few of the
+options will add bits to the output stream that could otherwise be used for
+audio data, and will thus affect the quality of the output. Those will be
+indicated accordingly with a note in the option list below.
+</p>
+<p>These parameters are described in detail in several publicly-available
+documents.
+</p><ul>
+<li> <a href="http://www.atsc.org/cms/standards/a_52-2010.pdf">A/52:2010 - Digital Audio Compression (AC-3) (E-AC-3) Standard</a>
+</li><li> <a href="http://www.atsc.org/cms/standards/a_54a_with_corr_1.pdf">A/54 - Guide to the Use of the ATSC Digital Television Standard</a>
+</li><li> <a href="http://www.dolby.com/uploadedFiles/zz-_Shared_Assets/English_PDFs/Professional/18_Metadata.Guide.pdf">Dolby Metadata Guide</a>
+</li><li> <a href="http://www.dolby.com/uploadedFiles/zz-_Shared_Assets/English_PDFs/Professional/46_DDEncodingGuidelines.pdf">Dolby Digital Professional Encoding Guidelines</a>
+</li></ul>
+
+<a name="Metadata-Control-Options"></a>
+<h4 class="subsubsection"><a href="ffplay-all.html#toc-Metadata-Control-Options">13.2.1.1 Metadata Control Options</a></h4>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-per_frame_metadata <var>boolean</var></samp>&rsquo;</dt>
+<dd><p>Allow Per-Frame Metadata. Specifies if the encoder should check for changing
+metadata for each frame.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>The metadata values set at initialization will be used for every frame in the
+stream. (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>Metadata values can be changed before encoding each frame.
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Downmix-Levels"></a>
+<h4 class="subsubsection"><a href="ffplay-all.html#toc-Downmix-Levels">13.2.1.2 Downmix Levels</a></h4>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-center_mixlev <var>level</var></samp>&rsquo;</dt>
+<dd><p>Center Mix Level. The amount of gain the decoder should apply to the center
+channel when downmixing to stereo. This field will only be written to the
+bitstream if a center channel is present. The value is specified as a scale
+factor. There are 3 valid values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0.707</samp>&rsquo;</dt>
+<dd><p>Apply -3dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.595</samp>&rsquo;</dt>
+<dd><p>Apply -4.5dB gain (default)
+</p></dd>
+<dt> &lsquo;<samp>0.500</samp>&rsquo;</dt>
+<dd><p>Apply -6dB gain
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-surround_mixlev <var>level</var></samp>&rsquo;</dt>
+<dd><p>Surround Mix Level. The amount of gain the decoder should apply to the surround
+channel(s) when downmixing to stereo. This field will only be written to the
+bitstream if one or more surround channels are present. The value is specified
+as a scale factor.  There are 3 valid values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0.707</samp>&rsquo;</dt>
+<dd><p>Apply -3dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.500</samp>&rsquo;</dt>
+<dd><p>Apply -6dB gain (default)
+</p></dd>
+<dt> &lsquo;<samp>0.000</samp>&rsquo;</dt>
+<dd><p>Silence Surround Channel(s)
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Audio-Production-Information"></a>
+<h4 class="subsubsection"><a href="ffplay-all.html#toc-Audio-Production-Information">13.2.1.3 Audio Production Information</a></h4>
+<p>Audio Production Information is optional information describing the mixing
+environment.  Either none or both of the fields are written to the bitstream.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-mixing_level <var>number</var></samp>&rsquo;</dt>
+<dd><p>Mixing Level. Specifies peak sound pressure level (SPL) in the production
+environment when the mix was mastered. Valid values are 80 to 111, or -1 for
+unknown or not indicated. The default value is -1, but that value cannot be
+used if the Audio Production Information is written to the bitstream. Therefore,
+if the <code>room_type</code> option is not the default value, the <code>mixing_level</code>
+option must not be -1.
+</p>
+</dd>
+<dt> &lsquo;<samp>-room_type <var>type</var></samp>&rsquo;</dt>
+<dd><p>Room Type. Describes the equalization used during the final mixing session at
+the studio or on the dubbing stage. A large room is a dubbing stage with the
+industry standard X-curve equalization; a small room has flat equalization.
+This field will not be written to the bitstream if both the <code>mixing_level</code>
+option and the <code>room_type</code> option have the default values.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>notindicated</samp>&rsquo;</dt>
+<dd><p>Not Indicated (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>large</samp>&rsquo;</dt>
+<dd><p>Large Room
+</p></dd>
+<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>small</samp>&rsquo;</dt>
+<dd><p>Small Room
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Other-Metadata-Options"></a>
+<h4 class="subsubsection"><a href="ffplay-all.html#toc-Other-Metadata-Options">13.2.1.4 Other Metadata Options</a></h4>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-copyright <var>boolean</var></samp>&rsquo;</dt>
+<dd><p>Copyright Indicator. Specifies whether a copyright exists for this audio.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
+<dd><p>No Copyright Exists (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>on</samp>&rsquo;</dt>
+<dd><p>Copyright Exists
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-dialnorm <var>value</var></samp>&rsquo;</dt>
+<dd><p>Dialogue Normalization. Indicates how far the average dialogue level of the
+program is below digital 100% full scale (0 dBFS). This parameter determines a
+level shift during audio reproduction that sets the average volume of the
+dialogue to a preset level. The goal is to match volume level between program
+sources. A value of -31dB will result in no volume level change, relative to
+the source volume, during audio reproduction. Valid values are whole numbers in
+the range -31 to -1, with -31 being the default.
+</p>
+</dd>
+<dt> &lsquo;<samp>-dsur_mode <var>mode</var></samp>&rsquo;</dt>
+<dd><p>Dolby Surround Mode. Specifies whether the stereo signal uses Dolby Surround
+(Pro Logic). This field will only be written to the bitstream if the audio
+stream is stereo. Using this option does <b>NOT</b> mean the encoder will actually
+apply Dolby Surround processing.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>notindicated</samp>&rsquo;</dt>
+<dd><p>Not Indicated (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
+<dd><p>Not Dolby Surround Encoded
+</p></dd>
+<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>on</samp>&rsquo;</dt>
+<dd><p>Dolby Surround Encoded
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-original <var>boolean</var></samp>&rsquo;</dt>
+<dd><p>Original Bit Stream Indicator. Specifies whether this audio is from the
+original source and not a copy.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
+<dd><p>Not Original Source
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>on</samp>&rsquo;</dt>
+<dd><p>Original Source (default)
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Extended-Bitstream-Information"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Extended-Bitstream-Information">13.2.2 Extended Bitstream Information</a></h3>
+<p>The extended bitstream options are part of the Alternate Bit Stream Syntax as
+specified in Annex D of the A/52:2010 standard. It is grouped into 2 parts.
+If any one parameter in a group is specified, all values in that group will be
+written to the bitstream.  Default values are used for those that are written
+but have not been specified.  If the mixing levels are written, the decoder
+will use these values instead of the ones specified in the <code>center_mixlev</code>
+and <code>surround_mixlev</code> options if it supports the Alternate Bit Stream
+Syntax.
+</p>
+<a name="Extended-Bitstream-Information-_002d-Part-1"></a>
+<h4 class="subsubsection"><a href="ffplay-all.html#toc-Extended-Bitstream-Information-_002d-Part-1">13.2.2.1 Extended Bitstream Information - Part 1</a></h4>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-dmix_mode <var>mode</var></samp>&rsquo;</dt>
+<dd><p>Preferred Stereo Downmix Mode. Allows the user to select either Lt/Rt
+(Dolby Surround) or Lo/Ro (normal stereo) as the preferred stereo downmix mode.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>notindicated</samp>&rsquo;</dt>
+<dd><p>Not Indicated (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ltrt</samp>&rsquo;</dt>
+<dd><p>Lt/Rt Downmix Preferred
+</p></dd>
+<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>loro</samp>&rsquo;</dt>
+<dd><p>Lo/Ro Downmix Preferred
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-ltrt_cmixlev <var>level</var></samp>&rsquo;</dt>
+<dd><p>Lt/Rt Center Mix Level. The amount of gain the decoder should apply to the
+center channel when downmixing to stereo in Lt/Rt mode.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>1.414</samp>&rsquo;</dt>
+<dd><p>Apply +3dB gain
+</p></dd>
+<dt> &lsquo;<samp>1.189</samp>&rsquo;</dt>
+<dd><p>Apply +1.5dB gain
+</p></dd>
+<dt> &lsquo;<samp>1.000</samp>&rsquo;</dt>
+<dd><p>Apply 0dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.841</samp>&rsquo;</dt>
+<dd><p>Apply -1.5dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.707</samp>&rsquo;</dt>
+<dd><p>Apply -3.0dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.595</samp>&rsquo;</dt>
+<dd><p>Apply -4.5dB gain (default)
+</p></dd>
+<dt> &lsquo;<samp>0.500</samp>&rsquo;</dt>
+<dd><p>Apply -6.0dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.000</samp>&rsquo;</dt>
+<dd><p>Silence Center Channel
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-ltrt_surmixlev <var>level</var></samp>&rsquo;</dt>
+<dd><p>Lt/Rt Surround Mix Level. The amount of gain the decoder should apply to the
+surround channel(s) when downmixing to stereo in Lt/Rt mode.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0.841</samp>&rsquo;</dt>
+<dd><p>Apply -1.5dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.707</samp>&rsquo;</dt>
+<dd><p>Apply -3.0dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.595</samp>&rsquo;</dt>
+<dd><p>Apply -4.5dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.500</samp>&rsquo;</dt>
+<dd><p>Apply -6.0dB gain (default)
+</p></dd>
+<dt> &lsquo;<samp>0.000</samp>&rsquo;</dt>
+<dd><p>Silence Surround Channel(s)
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-loro_cmixlev <var>level</var></samp>&rsquo;</dt>
+<dd><p>Lo/Ro Center Mix Level. The amount of gain the decoder should apply to the
+center channel when downmixing to stereo in Lo/Ro mode.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>1.414</samp>&rsquo;</dt>
+<dd><p>Apply +3dB gain
+</p></dd>
+<dt> &lsquo;<samp>1.189</samp>&rsquo;</dt>
+<dd><p>Apply +1.5dB gain
+</p></dd>
+<dt> &lsquo;<samp>1.000</samp>&rsquo;</dt>
+<dd><p>Apply 0dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.841</samp>&rsquo;</dt>
+<dd><p>Apply -1.5dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.707</samp>&rsquo;</dt>
+<dd><p>Apply -3.0dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.595</samp>&rsquo;</dt>
+<dd><p>Apply -4.5dB gain (default)
+</p></dd>
+<dt> &lsquo;<samp>0.500</samp>&rsquo;</dt>
+<dd><p>Apply -6.0dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.000</samp>&rsquo;</dt>
+<dd><p>Silence Center Channel
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-loro_surmixlev <var>level</var></samp>&rsquo;</dt>
+<dd><p>Lo/Ro Surround Mix Level. The amount of gain the decoder should apply to the
+surround channel(s) when downmixing to stereo in Lo/Ro mode.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0.841</samp>&rsquo;</dt>
+<dd><p>Apply -1.5dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.707</samp>&rsquo;</dt>
+<dd><p>Apply -3.0dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.595</samp>&rsquo;</dt>
+<dd><p>Apply -4.5dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.500</samp>&rsquo;</dt>
+<dd><p>Apply -6.0dB gain (default)
+</p></dd>
+<dt> &lsquo;<samp>0.000</samp>&rsquo;</dt>
+<dd><p>Silence Surround Channel(s)
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Extended-Bitstream-Information-_002d-Part-2"></a>
+<h4 class="subsubsection"><a href="ffplay-all.html#toc-Extended-Bitstream-Information-_002d-Part-2">13.2.2.2 Extended Bitstream Information - Part 2</a></h4>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-dsurex_mode <var>mode</var></samp>&rsquo;</dt>
+<dd><p>Dolby Surround EX Mode. Indicates whether the stream uses Dolby Surround EX
+(7.1 matrixed to 5.1). Using this option does <b>NOT</b> mean the encoder will actually
+apply Dolby Surround EX processing.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>notindicated</samp>&rsquo;</dt>
+<dd><p>Not Indicated (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>on</samp>&rsquo;</dt>
+<dd><p>Dolby Surround EX Off
+</p></dd>
+<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
+<dd><p>Dolby Surround EX On
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-dheadphone_mode <var>mode</var></samp>&rsquo;</dt>
+<dd><p>Dolby Headphone Mode. Indicates whether the stream uses Dolby Headphone
+encoding (multi-channel matrixed to 2.0 for use with headphones). Using this
+option does <b>NOT</b> mean the encoder will actually apply Dolby Headphone
+processing.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>notindicated</samp>&rsquo;</dt>
+<dd><p>Not Indicated (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>on</samp>&rsquo;</dt>
+<dd><p>Dolby Headphone Off
+</p></dd>
+<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
+<dd><p>Dolby Headphone On
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-ad_conv_type <var>type</var></samp>&rsquo;</dt>
+<dd><p>A/D Converter Type. Indicates whether the audio has passed through HDCD A/D
+conversion.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>standard</samp>&rsquo;</dt>
+<dd><p>Standard A/D Converter (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>hdcd</samp>&rsquo;</dt>
+<dd><p>HDCD A/D Converter
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Other-AC_002d3-Encoding-Options"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Other-AC_002d3-Encoding-Options">13.2.3 Other AC-3 Encoding Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-stereo_rematrixing <var>boolean</var></samp>&rsquo;</dt>
+<dd><p>Stereo Rematrixing. Enables/Disables use of rematrixing for stereo input. This
+is an optional AC-3 feature that increases quality by selectively encoding
+the left/right channels as mid/side. This option is enabled by default, and it
+is highly recommended that it be left as enabled except for testing purposes.
+</p>
+</dd>
+</dl>
+
+<a name="Floating_002dPoint_002dOnly-AC_002d3-Encoding-Options"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Floating_002dPoint_002dOnly-AC_002d3-Encoding-Options">13.2.4 Floating-Point-Only AC-3 Encoding Options</a></h3>
+
+<p>These options are only valid for the floating-point encoder and do not exist
+for the fixed-point encoder due to the corresponding features not being
+implemented in fixed-point.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-channel_coupling <var>boolean</var></samp>&rsquo;</dt>
+<dd><p>Enables/Disables use of channel coupling, which is an optional AC-3 feature
+that increases quality by combining high frequency information from multiple
+channels into a single channel. The per-channel high frequency information is
+sent with less accuracy in both the frequency and time domains. This allows
+more bits to be used for lower frequencies while preserving enough information
+to reconstruct the high frequencies. This option is enabled by default for the
+floating-point encoder and should generally be left as enabled except for
+testing purposes or to increase encoding speed.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>-1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Selected by Encoder (default)
+</p></dd>
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
+<dd><p>Disable Channel Coupling
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>on</samp>&rsquo;</dt>
+<dd><p>Enable Channel Coupling
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-cpl_start_band <var>number</var></samp>&rsquo;</dt>
+<dd><p>Coupling Start Band. Sets the channel coupling start band, from 1 to 15. If a
+value higher than the bandwidth is used, it will be reduced to 1 less than the
+coupling end band. If <var>auto</var> is used, the start band will be determined by
+the encoder based on the bit rate, sample rate, and channel layout. This option
+has no effect if channel coupling is disabled.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>-1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Selected by Encoder (default)
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<p><a name="libfaac"></a>
+</p><a name="libfaac-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-libfaac-1">13.3 libfaac</a></h2>
+
+<p>libfaac AAC (Advanced Audio Coding) encoder wrapper.
+</p>
+<p>Requires the presence of the libfaac headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libfaac --enable-nonfree</code>.
+</p>
+<p>This encoder is considered to be of higher quality with respect to the
+<a href="#aacenc">the native experimental FFmpeg AAC encoder</a>.
+</p>
+<p>For more information see the libfaac project at
+<a href="http://www.audiocoding.com/faac.html/">http://www.audiocoding.com/faac.html/</a>.
+</p>
+<a name="Options-28"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-28">13.3.1 Options</a></h3>
+
+<p>The following shared FFmpeg codec options are recognized.
+</p>
+<p>The following options are supported by the libfaac wrapper. The
+<code>faac</code>-equivalent of the options are listed in parentheses.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b (<em>-b</em>)</samp>&rsquo;</dt>
+<dd><p>Set bit rate in bits/s for ABR (Average Bit Rate) mode. If the bit rate
+is not explicitly specified, it is automatically set to a suitable
+value depending on the selected profile. <code>faac</code> bitrate is
+expressed in kilobits/s.
+</p>
+<p>Note that libfaac does not support CBR (Constant Bit Rate) but only
+ABR (Average Bit Rate).
+</p>
+<p>If VBR mode is enabled this option is ignored.
+</p>
+</dd>
+<dt> &lsquo;<samp>ar (<em>-R</em>)</samp>&rsquo;</dt>
+<dd><p>Set audio sampling rate (in Hz).
+</p>
+</dd>
+<dt> &lsquo;<samp>ac (<em>-c</em>)</samp>&rsquo;</dt>
+<dd><p>Set the number of audio channels.
+</p>
+</dd>
+<dt> &lsquo;<samp>cutoff (<em>-C</em>)</samp>&rsquo;</dt>
+<dd><p>Set cutoff frequency. If not specified (or explicitly set to 0) it
+will use a value automatically computed by the library. Default value
+is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>profile</samp>&rsquo;</dt>
+<dd><p>Set audio profile.
+</p>
+<p>The following profiles are recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>aac_main</samp>&rsquo;</dt>
+<dd><p>Main AAC (Main)
+</p>
+</dd>
+<dt> &lsquo;<samp>aac_low</samp>&rsquo;</dt>
+<dd><p>Low Complexity AAC (LC)
+</p>
+</dd>
+<dt> &lsquo;<samp>aac_ssr</samp>&rsquo;</dt>
+<dd><p>Scalable Sample Rate (SSR)
+</p>
+</dd>
+<dt> &lsquo;<samp>aac_ltp</samp>&rsquo;</dt>
+<dd><p>Long Term Prediction (LTP)
+</p></dd>
+</dl>
+
+<p>If not specified it is set to &lsquo;<samp>aac_low</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>flags +qscale</samp>&rsquo;</dt>
+<dd><p>Set constant quality VBR (Variable Bit Rate) mode.
+</p>
+</dd>
+<dt> &lsquo;<samp>global_quality</samp>&rsquo;</dt>
+<dd><p>Set quality in VBR mode as an integer number of lambda units.
+</p>
+<p>Only relevant when VBR mode is enabled with <code>flags +qscale</code>.  The
+value is converted to QP units by dividing it by <code>FF_QP2LAMBDA</code>,
+and used to set the quality value used by libfaac. A reasonable range
+for the option value in QP units is [10-500], the higher the value the
+higher the quality.
+</p>
+</dd>
+<dt> &lsquo;<samp>q (<em>-q</em>)</samp>&rsquo;</dt>
+<dd><p>Enable VBR mode when set to a non-negative value, and set constant
+quality value as a double floating point value in QP units.
+</p>
+<p>The value sets the quality value used by libfaac. A reasonable range
+for the option value is [10-500], the higher the value the higher the
+quality.
+</p>
+<p>This option is valid only using the <code>ffmpeg</code> command-line
+tool. For library interface users, use &lsquo;<samp>global_quality</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<a name="Examples-43"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-43">13.3.2 Examples</a></h3>
+
+<ul>
+<li>
+Use <code>ffmpeg</code> to convert an audio file to ABR 128 kbps AAC in an M4A (MP4)
+container:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.wav -codec:a libfaac -b:a 128k -output.m4a
+</pre></td></tr></table>
+
+</li><li>
+Use <code>ffmpeg</code> to convert an audio file to VBR AAC, using the
+LTP AAC profile:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.wav -c:a libfaac -profile:a aac_ltp -q:a 100 output.m4a
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="libfdk_002daac_002denc"></a>
+</p><a name="libfdk_005faac"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-libfdk_005faac">13.4 libfdk_aac</a></h2>
+
+<p>libfdk-aac AAC (Advanced Audio Coding) encoder wrapper.
+</p>
+<p>The libfdk-aac library is based on the Fraunhofer FDK AAC code from
+the Android project.
+</p>
+<p>Requires the presence of the libfdk-aac headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libfdk-aac</code>. The library is also incompatible with GPL,
+so if you allow the use of GPL, you should configure with
+<code>--enable-gpl --enable-nonfree --enable-libfdk-aac</code>.
+</p>
+<p>This encoder is considered to be of higher quality with respect to
+both <a href="#aacenc">the native experimental FFmpeg AAC encoder</a> and
+<a href="#libfaac">libfaac</a>.
+</p>
+<p>VBR encoding, enabled through the &lsquo;<samp>vbr</samp>&rsquo; or &lsquo;<samp>flags
++qscale</samp>&rsquo; options, is experimental and only works with some
+combinations of parameters.
+</p>
+<p>For more information see the fdk-aac project at
+<a href="http://sourceforge.net/p/opencore-amr/fdk-aac/">http://sourceforge.net/p/opencore-amr/fdk-aac/</a>.
+</p>
+<a name="Options-8"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-8">13.4.1 Options</a></h3>
+
+<p>The following options are mapped on the shared FFmpeg codec options.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>Set bit rate in bits/s. If the bitrate is not explicitly specified, it
+is automatically set to a suitable value depending on the selected
+profile.
+</p>
+<p>In case VBR mode is enabled the option is ignored.
+</p>
+</dd>
+<dt> &lsquo;<samp>ar</samp>&rsquo;</dt>
+<dd><p>Set audio sampling rate (in Hz).
+</p>
+</dd>
+<dt> &lsquo;<samp>channels</samp>&rsquo;</dt>
+<dd><p>Set the number of audio channels.
+</p>
+</dd>
+<dt> &lsquo;<samp>flags +qscale</samp>&rsquo;</dt>
+<dd><p>Enable fixed quality, VBR (Variable Bit Rate) mode.
+Note that VBR is implicitly enabled when the &lsquo;<samp>vbr</samp>&rsquo; value is
+positive.
+</p>
+</dd>
+<dt> &lsquo;<samp>cutoff</samp>&rsquo;</dt>
+<dd><p>Set cutoff frequency. If not specified (or explicitly set to 0) it
+will use a value automatically computed by the library. Default value
+is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>profile</samp>&rsquo;</dt>
+<dd><p>Set audio profile.
+</p>
+<p>The following profiles are recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>aac_low</samp>&rsquo;</dt>
+<dd><p>Low Complexity AAC (LC)
+</p>
+</dd>
+<dt> &lsquo;<samp>aac_he</samp>&rsquo;</dt>
+<dd><p>High Efficiency AAC (HE-AAC)
+</p>
+</dd>
+<dt> &lsquo;<samp>aac_he_v2</samp>&rsquo;</dt>
+<dd><p>High Efficiency AAC version 2 (HE-AACv2)
+</p>
+</dd>
+<dt> &lsquo;<samp>aac_ld</samp>&rsquo;</dt>
+<dd><p>Low Delay AAC (LD)
+</p>
+</dd>
+<dt> &lsquo;<samp>aac_eld</samp>&rsquo;</dt>
+<dd><p>Enhanced Low Delay AAC (ELD)
+</p></dd>
+</dl>
+
+<p>If not specified it is set to &lsquo;<samp>aac_low</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<p>The following are private options of the libfdk_aac encoder.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>afterburner</samp>&rsquo;</dt>
+<dd><p>Enable afterburner feature if set to 1, disabled if set to 0. This
+improves the quality but also the required processing power.
+</p>
+<p>Default value is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>eld_sbr</samp>&rsquo;</dt>
+<dd><p>Enable SBR (Spectral Band Replication) for ELD if set to 1, disabled
+if set to 0.
+</p>
+<p>Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>signaling</samp>&rsquo;</dt>
+<dd><p>Set SBR/PS signaling style.
+</p>
+<p>It can assume one of the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>default</samp>&rsquo;</dt>
+<dd><p>choose signaling implicitly (explicit hierarchical by default,
+implicit if global header is disabled)
+</p>
+</dd>
+<dt> &lsquo;<samp>implicit</samp>&rsquo;</dt>
+<dd><p>implicit backwards compatible signaling
+</p>
+</dd>
+<dt> &lsquo;<samp>explicit_sbr</samp>&rsquo;</dt>
+<dd><p>explicit SBR, implicit PS signaling
+</p>
+</dd>
+<dt> &lsquo;<samp>explicit_hierarchical</samp>&rsquo;</dt>
+<dd><p>explicit hierarchical signaling
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>default</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>latm</samp>&rsquo;</dt>
+<dd><p>Output LATM/LOAS encapsulated data if set to 1, disabled if set to 0.
+</p>
+<p>Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>header_period</samp>&rsquo;</dt>
+<dd><p>Set StreamMuxConfig and PCE repetition period (in frames) for sending
+in-band configuration buffers within LATM/LOAS transport layer.
+</p>
+<p>Must be a 16-bits non-negative integer.
+</p>
+<p>Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>vbr</samp>&rsquo;</dt>
+<dd><p>Set VBR mode, from 1 to 5. 1 is lowest quality (though still pretty
+good) and 5 is highest quality. A value of 0 will disable VBR, and CBR
+(Constant Bit Rate) is enabled.
+</p>
+<p>Currently only the &lsquo;<samp>aac_low</samp>&rsquo; profile supports VBR encoding.
+</p>
+<p>VBR modes 1-5 correspond to roughly the following average bit rates:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>32 kbps/channel
+</p></dd>
+<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dd><p>40 kbps/channel
+</p></dd>
+<dt> &lsquo;<samp>3</samp>&rsquo;</dt>
+<dd><p>48-56 kbps/channel
+</p></dd>
+<dt> &lsquo;<samp>4</samp>&rsquo;</dt>
+<dd><p>64 kbps/channel
+</p></dd>
+<dt> &lsquo;<samp>5</samp>&rsquo;</dt>
+<dd><p>about 80-96 kbps/channel
+</p></dd>
+</dl>
+
+<p>Default value is 0.
+</p></dd>
+</dl>
+
+<a name="Examples-59"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-59">13.4.2 Examples</a></h3>
+
+<ul>
+<li>
+Use <code>ffmpeg</code> to convert an audio file to VBR AAC in an M4A (MP4)
+container:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.wav -codec:a libfdk_aac -vbr 3 output.m4a
+</pre></td></tr></table>
+
+</li><li>
+Use <code>ffmpeg</code> to convert an audio file to CBR 64k kbps AAC, using the
+High-Efficiency AAC profile:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.wav -c:a libfdk_aac -profile:a aac_he -b:a 64k output.m4a
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="libmp3lame"></a>
+</p><a name="libmp3lame-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-libmp3lame-1">13.5 libmp3lame</a></h2>
+
+<p>LAME (Lame Ain&rsquo;t an MP3 Encoder) MP3 encoder wrapper.
+</p>
+<p>Requires the presence of the libmp3lame headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libmp3lame</code>.
+</p>
+<p>See <a href="#libshine">libshine</a> for a fixed-point MP3 encoder, although with a
+lower quality.
+</p>
+<a name="Options-17"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-17">13.5.1 Options</a></h3>
+
+<p>The following options are supported by the libmp3lame wrapper. The
+<code>lame</code>-equivalent of the options are listed in parentheses.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b (<em>-b</em>)</samp>&rsquo;</dt>
+<dd><p>Set bitrate expressed in bits/s for CBR or ABR. LAME <code>bitrate</code> is
+expressed in kilobits/s.
+</p>
+</dd>
+<dt> &lsquo;<samp>q (<em>-V</em>)</samp>&rsquo;</dt>
+<dd><p>Set constant quality setting for VBR. This option is valid only
+using the <code>ffmpeg</code> command-line tool. For library interface
+users, use &lsquo;<samp>global_quality</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>compression_level (<em>-q</em>)</samp>&rsquo;</dt>
+<dd><p>Set algorithm quality. Valid arguments are integers in the 0-9 range,
+with 0 meaning highest quality but slowest, and 9 meaning fastest
+while producing the worst quality.
+</p>
+</dd>
+<dt> &lsquo;<samp>reservoir</samp>&rsquo;</dt>
+<dd><p>Enable use of bit reservoir when set to 1. Default value is 1. LAME
+has this enabled by default, but can be overriden by use
+&lsquo;<samp>--nores</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>joint_stereo (<em>-m j</em>)</samp>&rsquo;</dt>
+<dd><p>Enable the encoder to use (on a frame by frame basis) either L/R
+stereo or mid/side stereo. Default value is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>abr (<em>--abr</em>)</samp>&rsquo;</dt>
+<dd><p>Enable the encoder to use ABR when set to 1. The <code>lame</code>
+&lsquo;<samp>--abr</samp>&rsquo; sets the target bitrate, while this options only
+tells FFmpeg to use ABR still relies on &lsquo;<samp>b</samp>&rsquo; to set bitrate.
+</p>
+</dd>
+</dl>
+
+<a name="libopencore_002damrnb"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-libopencore_002damrnb">13.6 libopencore-amrnb</a></h2>
+
+<p>OpenCORE Adaptive Multi-Rate Narrowband encoder.
+</p>
+<p>Requires the presence of the libopencore-amrnb headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libopencore-amrnb --enable-version3</code>.
+</p>
+<p>This is a mono-only encoder. Officially it only supports 8000Hz sample rate,
+but you can override it by setting &lsquo;<samp>strict</samp>&rsquo; to &lsquo;<samp>unofficial</samp>&rsquo; or
+lower.
+</p>
+<a name="Options-29"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-29">13.6.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>Set bitrate in bits per second. Only the following bitrates are supported,
+otherwise libavcodec will round to the nearest valid bitrate.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>4750</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>5150</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>5900</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>6700</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>7400</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>7950</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>10200</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>12200</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>dtx</samp>&rsquo;</dt>
+<dd><p>Allow discontinuous transmission (generate comfort noise) when set to 1. The
+default value is 0 (disabled).
+</p>
+</dd>
+</dl>
+
+<p><a name="libshine"></a>
+</p><a name="libshine-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-libshine-1">13.7 libshine</a></h2>
+
+<p>Shine Fixed-Point MP3 encoder wrapper.
+</p>
+<p>Shine is a fixed-point MP3 encoder. It has a far better performance on
+platforms without an FPU, e.g. armel CPUs, and some phones and tablets.
+However, as it is more targeted on performance than quality, it is not on par
+with LAME and other production-grade encoders quality-wise. Also, according to
+the project&rsquo;s homepage, this encoder may not be free of bugs as the code was
+written a long time ago and the project was dead for at least 5 years.
+</p>
+<p>This encoder only supports stereo and mono input. This is also CBR-only.
+</p>
+<p>The original project (last updated in early 2007) is at
+<a href="http://sourceforge.net/projects/libshine-fxp/">http://sourceforge.net/projects/libshine-fxp/</a>. We only support the
+updated fork by the Savonet/Liquidsoap project at <a href="https://github.com/savonet/shine">https://github.com/savonet/shine</a>.
+</p>
+<p>Requires the presence of the libshine headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libshine</code>.
+</p>
+<p>See also <a href="#libmp3lame">libmp3lame</a>.
+</p>
+<a name="Options-16"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-16">13.7.1 Options</a></h3>
+
+<p>The following options are supported by the libshine wrapper. The
+<code>shineenc</code>-equivalent of the options are listed in parentheses.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b (<em>-b</em>)</samp>&rsquo;</dt>
+<dd><p>Set bitrate expressed in bits/s for CBR. <code>shineenc</code> &lsquo;<samp>-b</samp>&rsquo; option
+is expressed in kilobits/s.
+</p>
+</dd>
+</dl>
+
+<a name="libtwolame"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-libtwolame">13.8 libtwolame</a></h2>
+
+<p>TwoLAME MP2 encoder wrapper.
+</p>
+<p>Requires the presence of the libtwolame headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libtwolame</code>.
+</p>
+<a name="Options-22"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-22">13.8.1 Options</a></h3>
+
+<p>The following options are supported by the libtwolame wrapper. The
+<code>twolame</code>-equivalent options follow the FFmpeg ones and are in
+parentheses.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b (<em>-b</em>)</samp>&rsquo;</dt>
+<dd><p>Set bitrate expressed in bits/s for CBR. <code>twolame</code> &lsquo;<samp>b</samp>&rsquo;
+option is expressed in kilobits/s. Default value is 128k.
+</p>
+</dd>
+<dt> &lsquo;<samp>q (<em>-V</em>)</samp>&rsquo;</dt>
+<dd><p>Set quality for experimental VBR support. Maximum value range is
+from -50 to 50, useful range is from -10 to 10. The higher the
+value, the better the quality. This option is valid only using the
+<code>ffmpeg</code> command-line tool. For library interface users,
+use &lsquo;<samp>global_quality</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>mode (<em>--mode</em>)</samp>&rsquo;</dt>
+<dd><p>Set the mode of the resulting audio. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Choose mode automatically based on the input. This is the default.
+</p></dd>
+<dt> &lsquo;<samp>stereo</samp>&rsquo;</dt>
+<dd><p>Stereo
+</p></dd>
+<dt> &lsquo;<samp>joint_stereo</samp>&rsquo;</dt>
+<dd><p>Joint stereo
+</p></dd>
+<dt> &lsquo;<samp>dual_channel</samp>&rsquo;</dt>
+<dd><p>Dual channel
+</p></dd>
+<dt> &lsquo;<samp>mono</samp>&rsquo;</dt>
+<dd><p>Mono
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>psymodel (<em>--psyc-mode</em>)</samp>&rsquo;</dt>
+<dd><p>Set psychoacoustic model to use in encoding. The argument must be
+an integer between -1 and 4, inclusive. The higher the value, the
+better the quality. The default value is 3.
+</p>
+</dd>
+<dt> &lsquo;<samp>energy_levels (<em>--energy</em>)</samp>&rsquo;</dt>
+<dd><p>Enable energy levels extensions when set to 1. The default value is
+0 (disabled).
+</p>
+</dd>
+<dt> &lsquo;<samp>error_protection (<em>--protect</em>)</samp>&rsquo;</dt>
+<dd><p>Enable CRC error protection when set to 1. The default value is 0
+(disabled).
+</p>
+</dd>
+<dt> &lsquo;<samp>copyright (<em>--copyright</em>)</samp>&rsquo;</dt>
+<dd><p>Set MPEG audio copyright flag when set to 1. The default value is 0
+(disabled).
+</p>
+</dd>
+<dt> &lsquo;<samp>original (<em>--original</em>)</samp>&rsquo;</dt>
+<dd><p>Set MPEG audio original flag when set to 1. The default value is 0
+(disabled).
+</p>
+</dd>
+</dl>
+
+<p><a name="libvo_002daacenc"></a>
+</p><a name="libvo_002daacenc-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-libvo_002daacenc-1">13.9 libvo-aacenc</a></h2>
+
+<p>VisualOn AAC encoder.
+</p>
+<p>Requires the presence of the libvo-aacenc headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libvo-aacenc --enable-version3</code>.
+</p>
+<p>This encoder is considered to be worse than the
+<a href="#aacenc">native experimental FFmpeg AAC encoder</a>, according to
+multiple sources.
+</p>
+<a name="Options-11"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-11">13.9.1 Options</a></h3>
+
+<p>The VisualOn AAC encoder only support encoding AAC-LC and up to 2
+channels. It is also CBR-only.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>Set bit rate in bits/s.
+</p>
+</dd>
+</dl>
+
+<a name="libvo_002damrwbenc"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-libvo_002damrwbenc">13.10 libvo-amrwbenc</a></h2>
+
+<p>VisualOn Adaptive Multi-Rate Wideband encoder.
+</p>
+<p>Requires the presence of the libvo-amrwbenc headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libvo-amrwbenc --enable-version3</code>.
+</p>
+<p>This is a mono-only encoder. Officially it only supports 16000Hz sample
+rate, but you can override it by setting &lsquo;<samp>strict</samp>&rsquo; to
+&lsquo;<samp>unofficial</samp>&rsquo; or lower.
+</p>
+<a name="Options-23"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-23">13.10.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>Set bitrate in bits/s. Only the following bitrates are supported, otherwise
+libavcodec will round to the nearest valid bitrate.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>6600</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>8850</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>12650</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>14250</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>15850</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>18250</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>19850</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>23050</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>23850</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>dtx</samp>&rsquo;</dt>
+<dd><p>Allow discontinuous transmission (generate comfort noise) when set to 1. The
+default value is 0 (disabled).
+</p>
+</dd>
+</dl>
+
+<a name="libopus-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-libopus-1">13.11 libopus</a></h2>
+
+<p>libopus Opus Interactive Audio Codec encoder wrapper.
+</p>
+<p>Requires the presence of the libopus headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libopus</code>.
+</p>
+<a name="Option-Mapping"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Option-Mapping">13.11.1 Option Mapping</a></h3>
+
+<p>Most libopus options are modeled after the <code>opusenc</code> utility from
+opus-tools. The following is an option mapping chart describing options
+supported by the libopus wrapper, and their <code>opusenc</code>-equivalent
+in parentheses.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b (<em>bitrate</em>)</samp>&rsquo;</dt>
+<dd><p>Set the bit rate in bits/s.  FFmpeg&rsquo;s &lsquo;<samp>b</samp>&rsquo; option is
+expressed in bits/s, while <code>opusenc</code>&rsquo;s &lsquo;<samp>bitrate</samp>&rsquo; in
+kilobits/s.
+</p>
+</dd>
+<dt> &lsquo;<samp>vbr (<em>vbr</em>, <em>hard-cbr</em>, and <em>cvbr</em>)</samp>&rsquo;</dt>
+<dd><p>Set VBR mode. The FFmpeg &lsquo;<samp>vbr</samp>&rsquo; option has the following
+valid arguments, with the their <code>opusenc</code> equivalent options
+in parentheses:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>off (<em>hard-cbr</em>)</samp>&rsquo;</dt>
+<dd><p>Use constant bit rate encoding.
+</p>
+</dd>
+<dt> &lsquo;<samp>on (<em>vbr</em>)</samp>&rsquo;</dt>
+<dd><p>Use variable bit rate encoding (the default).
+</p>
+</dd>
+<dt> &lsquo;<samp>constrained (<em>cvbr</em>)</samp>&rsquo;</dt>
+<dd><p>Use constrained variable bit rate encoding.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>compression_level (<em>comp</em>)</samp>&rsquo;</dt>
+<dd><p>Set encoding algorithm complexity. Valid options are integers in
+the 0-10 range. 0 gives the fastest encodes but lower quality, while 10
+gives the highest quality but slowest encoding. The default is 10.
+</p>
+</dd>
+<dt> &lsquo;<samp>frame_duration (<em>framesize</em>)</samp>&rsquo;</dt>
+<dd><p>Set maximum frame size, or duration of a frame in milliseconds. The
+argument must be exactly the following: 2.5, 5, 10, 20, 40, 60. Smaller
+frame sizes achieve lower latency but less quality at a given bitrate.
+Sizes greater than 20ms are only interesting at fairly low bitrates.
+The default is 20ms.
+</p>
+</dd>
+<dt> &lsquo;<samp>packet_loss (<em>expect-loss</em>)</samp>&rsquo;</dt>
+<dd><p>Set expected packet loss percentage. The default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>application (N.A.)</samp>&rsquo;</dt>
+<dd><p>Set intended application type. Valid options are listed below:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>voip</samp>&rsquo;</dt>
+<dd><p>Favor improved speech intelligibility.
+</p></dd>
+<dt> &lsquo;<samp>audio</samp>&rsquo;</dt>
+<dd><p>Favor faithfulness to the input (the default).
+</p></dd>
+<dt> &lsquo;<samp>lowdelay</samp>&rsquo;</dt>
+<dd><p>Restrict to only the lowest delay modes.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>cutoff (N.A.)</samp>&rsquo;</dt>
+<dd><p>Set cutoff bandwidth in Hz. The argument must be exactly one of the
+following: 4000, 6000, 8000, 12000, or 20000, corresponding to
+narrowband, mediumband, wideband, super wideband, and fullband
+respectively. The default is 0 (cutoff disabled).
+</p>
+</dd>
+</dl>
+
+<a name="libvorbis"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-libvorbis">13.12 libvorbis</a></h2>
+
+<p>libvorbis encoder wrapper.
+</p>
+<p>Requires the presence of the libvorbisenc headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libvorbis</code>.
+</p>
+<a name="Options-32"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-32">13.12.1 Options</a></h3>
+
+<p>The following options are supported by the libvorbis wrapper. The
+<code>oggenc</code>-equivalent of the options are listed in parentheses.
+</p>
+<p>To get a more accurate and extensive documentation of the libvorbis
+options, consult the libvorbisenc&rsquo;s and <code>oggenc</code>&rsquo;s documentations.
+See <a href="http://xiph.org/vorbis/">http://xiph.org/vorbis/</a>,
+<a href="http://wiki.xiph.org/Vorbis-tools">http://wiki.xiph.org/Vorbis-tools</a>, and oggenc(1).
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b (<em>-b</em>)</samp>&rsquo;</dt>
+<dd><p>Set bitrate expressed in bits/s for ABR. <code>oggenc</code> &lsquo;<samp>-b</samp>&rsquo; is
+expressed in kilobits/s.
+</p>
+</dd>
+<dt> &lsquo;<samp>q (<em>-q</em>)</samp>&rsquo;</dt>
+<dd><p>Set constant quality setting for VBR. The value should be a float
+number in the range of -1.0 to 10.0. The higher the value, the better
+the quality. The default value is &lsquo;<samp>3.0</samp>&rsquo;.
+</p>
+<p>This option is valid only using the <code>ffmpeg</code> command-line tool.
+For library interface users, use &lsquo;<samp>global_quality</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>cutoff (<em>--advanced-encode-option lowpass_frequency=N</em>)</samp>&rsquo;</dt>
+<dd><p>Set cutoff bandwidth in Hz, a value of 0 disables cutoff. <code>oggenc</code>&rsquo;s
+related option is expressed in kHz. The default value is &lsquo;<samp>0</samp>&rsquo; (cutoff
+disabled).
+</p>
+</dd>
+<dt> &lsquo;<samp>minrate (<em>-m</em>)</samp>&rsquo;</dt>
+<dd><p>Set minimum bitrate expressed in bits/s. <code>oggenc</code> &lsquo;<samp>-m</samp>&rsquo; is
+expressed in kilobits/s.
+</p>
+</dd>
+<dt> &lsquo;<samp>maxrate (<em>-M</em>)</samp>&rsquo;</dt>
+<dd><p>Set maximum bitrate expressed in bits/s. <code>oggenc</code> &lsquo;<samp>-M</samp>&rsquo; is
+expressed in kilobits/s. This only has effect on ABR mode.
+</p>
+</dd>
+<dt> &lsquo;<samp>iblock (<em>--advanced-encode-option impulse_noisetune=N</em>)</samp>&rsquo;</dt>
+<dd><p>Set noise floor bias for impulse blocks. The value is a float number from
+-15.0 to 0.0. A negative bias instructs the encoder to pay special attention
+to the crispness of transients in the encoded audio. The tradeoff for better
+transient response is a higher bitrate.
+</p>
+</dd>
+</dl>
+
+<a name="libwavpack"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-libwavpack">13.13 libwavpack</a></h2>
+
+<p>A wrapper providing WavPack encoding through libwavpack.
+</p>
+<p>Only lossless mode using 32-bit integer samples is supported currently.
+The &lsquo;<samp>compression_level</samp>&rsquo; option can be used to control speed vs.
+compression tradeoff, with the values mapped to libwavpack as follows:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>Fast mode - corresponding to the wavpack &lsquo;<samp>-f</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>Normal (default) settings.
+</p>
+</dd>
+<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dd><p>High quality - corresponding to the wavpack &lsquo;<samp>-h</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>3</samp>&rsquo;</dt>
+<dd><p>Very high quality - corresponding to the wavpack &lsquo;<samp>-hh</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>4-8</samp>&rsquo;</dt>
+<dd><p>Same as 3, but with extra processing enabled - corresponding to the wavpack
+&lsquo;<samp>-x</samp>&rsquo; option. I.e. 4 is the same as &lsquo;<samp>-x2</samp>&rsquo; and 8 is the same as
+&lsquo;<samp>-x6</samp>&rsquo;.
+</p>
+</dd>
+</dl>
+
+
+<a name="Video-Encoders"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Video-Encoders">14. Video Encoders</a></h1>
+
+<p>A description of some of the currently available video encoders
+follows.
+</p>
+<a name="libtheora"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-libtheora">14.1 libtheora</a></h2>
+
+<p>libtheora Theora encoder wrapper.
+</p>
+<p>Requires the presence of the libtheora headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libtheora</code>.
+</p>
+<p>For more informations about the libtheora project see
+<a href="http://www.theora.org/">http://www.theora.org/</a>.
+</p>
+<a name="Options-19"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-19">14.1.1 Options</a></h3>
+
+<p>The following global options are mapped to internal libtheora options
+which affect the quality and the bitrate of the encoded stream.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>Set the video bitrate in bit/s for CBR (Constant Bit Rate) mode.  In
+case VBR (Variable Bit Rate) mode is enabled this option is ignored.
+</p>
+</dd>
+<dt> &lsquo;<samp>flags</samp>&rsquo;</dt>
+<dd><p>Used to enable constant quality mode (VBR) encoding through the
+&lsquo;<samp>qscale</samp>&rsquo; flag, and to enable the <code>pass1</code> and <code>pass2</code>
+modes.
+</p>
+</dd>
+<dt> &lsquo;<samp>g</samp>&rsquo;</dt>
+<dd><p>Set the GOP size.
+</p>
+</dd>
+<dt> &lsquo;<samp>global_quality</samp>&rsquo;</dt>
+<dd><p>Set the global quality as an integer in lambda units.
+</p>
+<p>Only relevant when VBR mode is enabled with <code>flags +qscale</code>. The
+value is converted to QP units by dividing it by <code>FF_QP2LAMBDA</code>,
+clipped in the [0 - 10] range, and then multiplied by 6.3 to get a
+value in the native libtheora range [0-63]. A higher value corresponds
+to a higher quality.
+</p>
+</dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Enable VBR mode when set to a non-negative value, and set constant
+quality value as a double floating point value in QP units.
+</p>
+<p>The value is clipped in the [0-10] range, and then multiplied by 6.3
+to get a value in the native libtheora range [0-63].
+</p>
+<p>This option is valid only using the <code>ffmpeg</code> command-line
+tool. For library interface users, use &lsquo;<samp>global_quality</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<a name="Examples-28"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-28">14.1.2 Examples</a></h3>
+
+<ul>
+<li>
+Set maximum constant quality (VBR) encoding with <code>ffmpeg</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -codec:v libtheora -q:v 10 OUTPUT.ogg
+</pre></td></tr></table>
+
+</li><li>
+Use <code>ffmpeg</code> to convert a CBR 1000 kbps Theora video stream:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -codec:v libtheora -b:v 1000k OUTPUT.ogg
+</pre></td></tr></table>
+</li></ul>
+
+<a name="libvpx"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-libvpx">14.2 libvpx</a></h2>
+
+<p>VP8 format supported through libvpx.
+</p>
+<p>Requires the presence of the libvpx headers and library during configuration.
+You need to explicitly configure the build with <code>--enable-libvpx</code>.
+</p>
+<a name="Options-1"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-1">14.2.1 Options</a></h3>
+
+<p>Mapping from FFmpeg to libvpx options with conversion notes in parentheses.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>threads</samp>&rsquo;</dt>
+<dd><p>g_threads
+</p>
+</dd>
+<dt> &lsquo;<samp>profile</samp>&rsquo;</dt>
+<dd><p>g_profile
+</p>
+</dd>
+<dt> &lsquo;<samp>vb</samp>&rsquo;</dt>
+<dd><p>rc_target_bitrate
+</p>
+</dd>
+<dt> &lsquo;<samp>g</samp>&rsquo;</dt>
+<dd><p>kf_max_dist
+</p>
+</dd>
+<dt> &lsquo;<samp>keyint_min</samp>&rsquo;</dt>
+<dd><p>kf_min_dist
+</p>
+</dd>
+<dt> &lsquo;<samp>qmin</samp>&rsquo;</dt>
+<dd><p>rc_min_quantizer
+</p>
+</dd>
+<dt> &lsquo;<samp>qmax</samp>&rsquo;</dt>
+<dd><p>rc_max_quantizer
+</p>
+</dd>
+<dt> &lsquo;<samp>bufsize, vb</samp>&rsquo;</dt>
+<dd><p>rc_buf_sz
+<code>(bufsize * 1000 / vb)</code>
+</p>
+<p>rc_buf_optimal_sz
+<code>(bufsize * 1000 / vb * 5 / 6)</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_init_occupancy, vb</samp>&rsquo;</dt>
+<dd><p>rc_buf_initial_sz
+<code>(rc_init_occupancy * 1000 / vb)</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_buffer_aggressivity</samp>&rsquo;</dt>
+<dd><p>rc_undershoot_pct
+</p>
+</dd>
+<dt> &lsquo;<samp>skip_threshold</samp>&rsquo;</dt>
+<dd><p>rc_dropframe_thresh
+</p>
+</dd>
+<dt> &lsquo;<samp>qcomp</samp>&rsquo;</dt>
+<dd><p>rc_2pass_vbr_bias_pct
+</p>
+</dd>
+<dt> &lsquo;<samp>maxrate, vb</samp>&rsquo;</dt>
+<dd><p>rc_2pass_vbr_maxsection_pct
+<code>(maxrate * 100 / vb)</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>minrate, vb</samp>&rsquo;</dt>
+<dd><p>rc_2pass_vbr_minsection_pct
+<code>(minrate * 100 / vb)</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>minrate, maxrate, vb</samp>&rsquo;</dt>
+<dd><p><code>VPX_CBR</code>
+<code>(minrate == maxrate == vb)</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>crf</samp>&rsquo;</dt>
+<dd><p><code>VPX_CQ</code>, <code>VP8E_SET_CQ_LEVEL</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>quality</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp><var>best</var></samp>&rsquo;</dt>
+<dd><p><code>VPX_DL_BEST_QUALITY</code>
+</p></dd>
+<dt> &lsquo;<samp><var>good</var></samp>&rsquo;</dt>
+<dd><p><code>VPX_DL_GOOD_QUALITY</code>
+</p></dd>
+<dt> &lsquo;<samp><var>realtime</var></samp>&rsquo;</dt>
+<dd><p><code>VPX_DL_REALTIME</code>
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>speed</samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_CPUUSED</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>nr</samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_NOISE_SENSITIVITY</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>mb_threshold</samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_STATIC_THRESHOLD</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>slices</samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_TOKEN_PARTITIONS</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>max-intra-rate</samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_MAX_INTRA_BITRATE_PCT</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>force_key_frames</samp>&rsquo;</dt>
+<dd><p><code>VPX_EFLAG_FORCE_KF</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>Alternate reference frame related</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>vp8flags altref</samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_ENABLEAUTOALTREF</code>
+</p></dd>
+<dt> &lsquo;<samp><var>arnr_max_frames</var></samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_ARNR_MAXFRAMES</code>
+</p></dd>
+<dt> &lsquo;<samp><var>arnr_type</var></samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_ARNR_TYPE</code>
+</p></dd>
+<dt> &lsquo;<samp><var>arnr_strength</var></samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_ARNR_STRENGTH</code>
+</p></dd>
+<dt> &lsquo;<samp><var>rc_lookahead</var></samp>&rsquo;</dt>
+<dd><p>g_lag_in_frames
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>vp8flags error_resilient</samp>&rsquo;</dt>
+<dd><p>g_error_resilient
+</p>
+</dd>
+</dl>
+
+<p>For more information about libvpx see:
+<a href="http://www.webmproject.org/">http://www.webmproject.org/</a>
+</p>
+<a name="libx264"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-libx264">14.3 libx264</a></h2>
+
+<p>x264 H.264/MPEG-4 AVC encoder wrapper.
+</p>
+<p>This encoder requires the presence of the libx264 headers and library
+during configuration. You need to explicitly configure the build with
+<code>--enable-libx264</code>.
+</p>
+<p>libx264 supports an impressive number of features, including 8x8 and
+4x4 adaptive spatial transform, adaptive B-frame placement, CAVLC/CABAC
+entropy coding, interlacing (MBAFF), lossless mode, psy optimizations
+for detail retention (adaptive quantization, psy-RD, psy-trellis).
+</p>
+<p>Many libx264 encoder options are mapped to FFmpeg global codec
+options, while unique encoder options are provided through private
+options. Additionally the &lsquo;<samp>x264opts</samp>&rsquo; and &lsquo;<samp>x264-params</samp>&rsquo;
+private options allows to pass a list of key=value tuples as accepted
+by the libx264 <code>x264_param_parse</code> function.
+</p>
+<p>The x264 project website is at
+<a href="http://www.videolan.org/developers/x264.html">http://www.videolan.org/developers/x264.html</a>.
+</p>
+<a name="Options-10"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-10">14.3.1 Options</a></h3>
+
+<p>The following options are supported by the libx264 wrapper. The
+<code>x264</code>-equivalent options or values are listed in parentheses
+for easy migration.
+</p>
+<p>To reduce the duplication of documentation, only the private options
+and some others requiring special attention are documented here. For
+the documentation of the undocumented generic options, see
+<a href="#codec_002doptions">the Codec Options chapter</a>.
+</p>
+<p>To get a more accurate and extensive documentation of the libx264
+options, invoke the command <code>x264 --full-help</code> or consult
+the libx264 documentation.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b (<em>bitrate</em>)</samp>&rsquo;</dt>
+<dd><p>Set bitrate in bits/s. Note that FFmpeg&rsquo;s &lsquo;<samp>b</samp>&rsquo; option is
+expressed in bits/s, while <code>x264</code>&rsquo;s &lsquo;<samp>bitrate</samp>&rsquo; is in
+kilobits/s.
+</p>
+</dd>
+<dt> &lsquo;<samp>bf (<em>bframes</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>g (<em>keyint</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qmax (<em>qpmax</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qmin (<em>qpmin</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qdiff (<em>qpstep</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qblur (<em>qblur</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qcomp (<em>qcomp</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>refs (<em>ref</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sc_threshold (<em>scenecut</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>trellis (<em>trellis</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>nr  (<em>nr</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>me_range (<em>merange</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>me_method (<em>me</em>)</samp>&rsquo;</dt>
+<dd><p>Set motion estimation method. Possible values in the decreasing order
+of speed:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>dia (<em>dia</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>epzs (<em>dia</em>)</samp>&rsquo;</dt>
+<dd><p>Diamond search with radius 1 (fastest). &lsquo;<samp>epzs</samp>&rsquo; is an alias for
+&lsquo;<samp>dia</samp>&rsquo;.
+</p></dd>
+<dt> &lsquo;<samp>hex (<em>hex</em>)</samp>&rsquo;</dt>
+<dd><p>Hexagonal search with radius 2.
+</p></dd>
+<dt> &lsquo;<samp>umh (<em>umh</em>)</samp>&rsquo;</dt>
+<dd><p>Uneven multi-hexagon search.
+</p></dd>
+<dt> &lsquo;<samp>esa (<em>esa</em>)</samp>&rsquo;</dt>
+<dd><p>Exhaustive search.
+</p></dd>
+<dt> &lsquo;<samp>tesa (<em>tesa</em>)</samp>&rsquo;</dt>
+<dd><p>Hadamard exhaustive search (slowest).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>subq (<em>subme</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>b_strategy (<em>b-adapt</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>keyint_min (<em>min-keyint</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>coder</samp>&rsquo;</dt>
+<dd><p>Set entropy encoder. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>ac</samp>&rsquo;</dt>
+<dd><p>Enable CABAC.
+</p>
+</dd>
+<dt> &lsquo;<samp>vlc</samp>&rsquo;</dt>
+<dd><p>Enable CAVLC and disable CABAC. It generates the same effect as
+<code>x264</code>&rsquo;s &lsquo;<samp>--no-cabac</samp>&rsquo; option.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>cmp</samp>&rsquo;</dt>
+<dd><p>Set full pixel motion estimation comparation algorithm. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+<dd><p>Enable chroma in motion estimation.
+</p>
+</dd>
+<dt> &lsquo;<samp>sad</samp>&rsquo;</dt>
+<dd><p>Ignore chroma in motion estimation. It generates the same effect as
+<code>x264</code>&rsquo;s &lsquo;<samp>--no-chroma-me</samp>&rsquo; option.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>threads (<em>threads</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>thread_type</samp>&rsquo;</dt>
+<dd><p>Set multithreading technique. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>slice</samp>&rsquo;</dt>
+<dd><p>Slice-based multithreading. It generates the same effect as
+<code>x264</code>&rsquo;s &lsquo;<samp>--sliced-threads</samp>&rsquo; option.
+</p></dd>
+<dt> &lsquo;<samp>frame</samp>&rsquo;</dt>
+<dd><p>Frame-based multithreading.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>flags</samp>&rsquo;</dt>
+<dd><p>Set encoding flags. It can be used to disable closed GOP and enable
+open GOP by setting it to <code>-cgop</code>. The result is similar to
+the behavior of <code>x264</code>&rsquo;s &lsquo;<samp>--open-gop</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_init_occupancy (<em>vbv-init</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>preset (<em>preset</em>)</samp>&rsquo;</dt>
+<dd><p>Set the encoding preset.
+</p>
+</dd>
+<dt> &lsquo;<samp>tune (<em>tune</em>)</samp>&rsquo;</dt>
+<dd><p>Set tuning of the encoding params.
+</p>
+</dd>
+<dt> &lsquo;<samp>profile (<em>profile</em>)</samp>&rsquo;</dt>
+<dd><p>Set profile restrictions.
+</p>
+</dd>
+<dt> &lsquo;<samp>fastfirstpass</samp>&rsquo;</dt>
+<dd><p>Enable fast settings when encoding first pass, when set to 1. When set
+to 0, it has the same effect of <code>x264</code>&rsquo;s
+&lsquo;<samp>--slow-firstpass</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>crf (<em>crf</em>)</samp>&rsquo;</dt>
+<dd><p>Set the quality for constant quality mode.
+</p>
+</dd>
+<dt> &lsquo;<samp>crf_max (<em>crf-max</em>)</samp>&rsquo;</dt>
+<dd><p>In CRF mode, prevents VBV from lowering quality beyond this point.
+</p>
+</dd>
+<dt> &lsquo;<samp>qp (<em>qp</em>)</samp>&rsquo;</dt>
+<dd><p>Set constant quantization rate control method parameter.
+</p>
+</dd>
+<dt> &lsquo;<samp>aq-mode (<em>aq-mode</em>)</samp>&rsquo;</dt>
+<dd><p>Set AQ method. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>none (<em>0</em>)</samp>&rsquo;</dt>
+<dd><p>Disabled.
+</p>
+</dd>
+<dt> &lsquo;<samp>variance (<em>1</em>)</samp>&rsquo;</dt>
+<dd><p>Variance AQ (complexity mask).
+</p>
+</dd>
+<dt> &lsquo;<samp>autovariance (<em>2</em>)</samp>&rsquo;</dt>
+<dd><p>Auto-variance AQ (experimental).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>aq-strength (<em>aq-strength</em>)</samp>&rsquo;</dt>
+<dd><p>Set AQ strength, reduce blocking and blurring in flat and textured areas.
+</p>
+</dd>
+<dt> &lsquo;<samp>psy</samp>&rsquo;</dt>
+<dd><p>Use psychovisual optimizations when set to 1. When set to 0, it has the
+same effect as <code>x264</code>&rsquo;s &lsquo;<samp>--no-psy</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>psy-rd  (<em>psy-rd</em>)</samp>&rsquo;</dt>
+<dd><p>Set strength of psychovisual optimization, in
+<var>psy-rd</var>:<var>psy-trellis</var> format.
+</p>
+</dd>
+<dt> &lsquo;<samp>rc-lookahead (<em>rc-lookahead</em>)</samp>&rsquo;</dt>
+<dd><p>Set number of frames to look ahead for frametype and ratecontrol.
+</p>
+</dd>
+<dt> &lsquo;<samp>weightb</samp>&rsquo;</dt>
+<dd><p>Enable weighted prediction for B-frames when set to 1. When set to 0,
+it has the same effect as <code>x264</code>&rsquo;s &lsquo;<samp>--no-weightb</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>weightp (<em>weightp</em>)</samp>&rsquo;</dt>
+<dd><p>Set weighted prediction method for P-frames. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>none (<em>0</em>)</samp>&rsquo;</dt>
+<dd><p>Disabled
+</p></dd>
+<dt> &lsquo;<samp>simple (<em>1</em>)</samp>&rsquo;</dt>
+<dd><p>Enable only weighted refs
+</p></dd>
+<dt> &lsquo;<samp>smart (<em>2</em>)</samp>&rsquo;</dt>
+<dd><p>Enable both weighted refs and duplicates
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>ssim (<em>ssim</em>)</samp>&rsquo;</dt>
+<dd><p>Enable calculation and printing SSIM stats after the encoding.
+</p>
+</dd>
+<dt> &lsquo;<samp>intra-refresh (<em>intra-refresh</em>)</samp>&rsquo;</dt>
+<dd><p>Enable the use of Periodic Intra Refresh instead of IDR frames when set
+to 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>bluray-compat (<em>bluray-compat</em>)</samp>&rsquo;</dt>
+<dd><p>Configure the encoder to be compatible with the bluray standard.
+It is a shorthand for setting &quot;bluray-compat=1 force-cfr=1&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>b-bias (<em>b-bias</em>)</samp>&rsquo;</dt>
+<dd><p>Set the influence on how often B-frames are used.
+</p>
+</dd>
+<dt> &lsquo;<samp>b-pyramid (<em>b-pyramid</em>)</samp>&rsquo;</dt>
+<dd><p>Set method for keeping of some B-frames as references. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>none (<em>none</em>)</samp>&rsquo;</dt>
+<dd><p>Disabled.
+</p></dd>
+<dt> &lsquo;<samp>strict (<em>strict</em>)</samp>&rsquo;</dt>
+<dd><p>Strictly hierarchical pyramid.
+</p></dd>
+<dt> &lsquo;<samp>normal (<em>normal</em>)</samp>&rsquo;</dt>
+<dd><p>Non-strict (not Blu-ray compatible).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>mixed-refs</samp>&rsquo;</dt>
+<dd><p>Enable the use of one reference per partition, as opposed to one
+reference per macroblock when set to 1. When set to 0, it has the
+same effect as <code>x264</code>&rsquo;s &lsquo;<samp>--no-mixed-refs</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>8x8dct</samp>&rsquo;</dt>
+<dd><p>Enable adaptive spatial transform (high profile 8x8 transform)
+when set to 1. When set to 0, it has the same effect as
+<code>x264</code>&rsquo;s &lsquo;<samp>--no-8x8dct</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>fast-pskip</samp>&rsquo;</dt>
+<dd><p>Enable early SKIP detection on P-frames when set to 1. When set
+to 0, it has the same effect as <code>x264</code>&rsquo;s
+&lsquo;<samp>--no-fast-pskip</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>aud (<em>aud</em>)</samp>&rsquo;</dt>
+<dd><p>Enable use of access unit delimiters when set to 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>mbtree</samp>&rsquo;</dt>
+<dd><p>Enable use macroblock tree ratecontrol when set to 1. When set
+to 0, it has the same effect as <code>x264</code>&rsquo;s
+&lsquo;<samp>--no-mbtree</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>deblock (<em>deblock</em>)</samp>&rsquo;</dt>
+<dd><p>Set loop filter parameters, in <var>alpha</var>:<var>beta</var> form.
+</p>
+</dd>
+<dt> &lsquo;<samp>cplxblur (<em>cplxblur</em>)</samp>&rsquo;</dt>
+<dd><p>Set fluctuations reduction in QP (before curve compression).
+</p>
+</dd>
+<dt> &lsquo;<samp>partitions (<em>partitions</em>)</samp>&rsquo;</dt>
+<dd><p>Set partitions to consider as a comma-separated list of. Possible
+values in the list:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>p8x8</samp>&rsquo;</dt>
+<dd><p>8x8 P-frame partition.
+</p></dd>
+<dt> &lsquo;<samp>p4x4</samp>&rsquo;</dt>
+<dd><p>4x4 P-frame partition.
+</p></dd>
+<dt> &lsquo;<samp>b8x8</samp>&rsquo;</dt>
+<dd><p>4x4 B-frame partition.
+</p></dd>
+<dt> &lsquo;<samp>i8x8</samp>&rsquo;</dt>
+<dd><p>8x8 I-frame partition.
+</p></dd>
+<dt> &lsquo;<samp>i4x4</samp>&rsquo;</dt>
+<dd><p>4x4 I-frame partition.
+(Enabling &lsquo;<samp>p4x4</samp>&rsquo; requires &lsquo;<samp>p8x8</samp>&rsquo; to be enabled. Enabling
+&lsquo;<samp>i8x8</samp>&rsquo; requires adaptive spatial transform (&lsquo;<samp>8x8dct</samp>&rsquo;
+option) to be enabled.)
+</p></dd>
+<dt> &lsquo;<samp>none (<em>none</em>)</samp>&rsquo;</dt>
+<dd><p>Do not consider any partitions.
+</p></dd>
+<dt> &lsquo;<samp>all (<em>all</em>)</samp>&rsquo;</dt>
+<dd><p>Consider every partition.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>direct-pred (<em>direct</em>)</samp>&rsquo;</dt>
+<dd><p>Set direct MV prediction mode. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>none (<em>none</em>)</samp>&rsquo;</dt>
+<dd><p>Disable MV prediction.
+</p></dd>
+<dt> &lsquo;<samp>spatial (<em>spatial</em>)</samp>&rsquo;</dt>
+<dd><p>Enable spatial predicting.
+</p></dd>
+<dt> &lsquo;<samp>temporal (<em>temporal</em>)</samp>&rsquo;</dt>
+<dd><p>Enable temporal predicting.
+</p></dd>
+<dt> &lsquo;<samp>auto (<em>auto</em>)</samp>&rsquo;</dt>
+<dd><p>Automatically decided.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>slice-max-size (<em>slice-max-size</em>)</samp>&rsquo;</dt>
+<dd><p>Set the limit of the size of each slice in bytes. If not specified
+but RTP payload size (&lsquo;<samp>ps</samp>&rsquo;) is specified, that is used.
+</p>
+</dd>
+<dt> &lsquo;<samp>stats (<em>stats</em>)</samp>&rsquo;</dt>
+<dd><p>Set the file name for multi-pass stats.
+</p>
+</dd>
+<dt> &lsquo;<samp>nal-hrd (<em>nal-hrd</em>)</samp>&rsquo;</dt>
+<dd><p>Set signal HRD information (requires &lsquo;<samp>vbv-bufsize</samp>&rsquo; to be set).
+Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>none (<em>none</em>)</samp>&rsquo;</dt>
+<dd><p>Disable HRD information signaling.
+</p></dd>
+<dt> &lsquo;<samp>vbr (<em>vbr</em>)</samp>&rsquo;</dt>
+<dd><p>Variable bit rate.
+</p></dd>
+<dt> &lsquo;<samp>cbr (<em>cbr</em>)</samp>&rsquo;</dt>
+<dd><p>Constant bit rate (not allowed in MP4 container).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>x264opts (N.A.)</samp>&rsquo;</dt>
+<dd><p>Set any x264 option, see <code>x264 --fullhelp</code> for a list.
+</p>
+<p>Argument is a list of <var>key</var>=<var>value</var> couples separated by
+&quot;:&quot;. In <var>filter</var> and <var>psy-rd</var> options that use &quot;:&quot; as a separator
+themselves, use &quot;,&quot; instead. They accept it as well since long ago but this
+is kept undocumented for some reason.
+</p>
+<p>For example to specify libx264 encoding options with <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i foo.mpg -vcodec libx264 -x264opts keyint=123:min-keyint=20 -an out.mkv
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>x264-params (N.A.)</samp>&rsquo;</dt>
+<dd><p>Override the x264 configuration using a :-separated list of key=value
+parameters.
+</p>
+<p>This option is functionally the same as the &lsquo;<samp>x264opts</samp>&rsquo;, but is
+duplicated for compability with the Libav fork.
+</p>
+<p>For example to specify libx264 encoding options with <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -c:v libx264 -x264-params level=30:bframes=0:weightp=0:\
+cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:\
+no-fast-pskip=1:subq=6:8x8dct=0:trellis=0 OUTPUT
+</pre></td></tr></table>
+</dd>
+</dl>
+
+<p>Encoding ffpresets for common usages are provided so they can be used with the
+general presets system (e.g. passing the &lsquo;<samp>pre</samp>&rsquo; option).
+</p>
+<a name="libxvid"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-libxvid">14.4 libxvid</a></h2>
+
+<p>Xvid MPEG-4 Part 2 encoder wrapper.
+</p>
+<p>This encoder requires the presence of the libxvidcore headers and library
+during configuration. You need to explicitly configure the build with
+<code>--enable-libxvid --enable-gpl</code>.
+</p>
+<p>The native <code>mpeg4</code> encoder supports the MPEG-4 Part 2 format, so
+users can encode to this format without this library.
+</p>
+<a name="Options-14"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-14">14.4.1 Options</a></h3>
+
+<p>The following options are supported by the libxvid wrapper. Some of
+the following options are listed but are not documented, and
+correspond to shared codec options. See <a href="#codec_002doptions">the Codec Options chapter</a> for their documentation. The other shared options
+which are not listed have no effect for the libxvid encoder.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>g</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qmin</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qmax</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mpeg_quant</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>threads</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bf</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>b_qfactor</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>b_qoffset</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>flags</samp>&rsquo;</dt>
+<dd><p>Set specific encoding flags. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>mv4</samp>&rsquo;</dt>
+<dd><p>Use four motion vector by macroblock.
+</p>
+</dd>
+<dt> &lsquo;<samp>aic</samp>&rsquo;</dt>
+<dd><p>Enable high quality AC prediction.
+</p>
+</dd>
+<dt> &lsquo;<samp>gray</samp>&rsquo;</dt>
+<dd><p>Only encode grayscale.
+</p>
+</dd>
+<dt> &lsquo;<samp>gmc</samp>&rsquo;</dt>
+<dd><p>Enable the use of global motion compensation (GMC).
+</p>
+</dd>
+<dt> &lsquo;<samp>qpel</samp>&rsquo;</dt>
+<dd><p>Enable quarter-pixel motion compensation.
+</p>
+</dd>
+<dt> &lsquo;<samp>cgop</samp>&rsquo;</dt>
+<dd><p>Enable closed GOP.
+</p>
+</dd>
+<dt> &lsquo;<samp>global_header</samp>&rsquo;</dt>
+<dd><p>Place global headers in extradata instead of every keyframe.
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>trellis</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>me_method</samp>&rsquo;</dt>
+<dd><p>Set motion estimation method. Possible values in decreasing order of
+speed and increasing order of quality:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>Use no motion estimation (default).
+</p>
+</dd>
+<dt> &lsquo;<samp>phods</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>x1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>log</samp>&rsquo;</dt>
+<dd><p>Enable advanced diamond zonal search for 16x16 blocks and half-pixel
+refinement for 16x16 blocks. &lsquo;<samp>x1</samp>&rsquo; and &lsquo;<samp>log</samp>&rsquo; are aliases for
+&lsquo;<samp>phods</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>epzs</samp>&rsquo;</dt>
+<dd><p>Enable all of the things described above, plus advanced diamond zonal
+search for 8x8 blocks, half-pixel refinement for 8x8 blocks, and motion
+estimation on chroma planes.
+</p>
+</dd>
+<dt> &lsquo;<samp>full</samp>&rsquo;</dt>
+<dd><p>Enable all of the things described above, plus extended 16x16 and 8x8
+blocks search.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>mbd</samp>&rsquo;</dt>
+<dd><p>Set macroblock decision algorithm. Possible values in the increasing
+order of quality:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>simple</samp>&rsquo;</dt>
+<dd><p>Use macroblock comparing function algorithm (default).
+</p>
+</dd>
+<dt> &lsquo;<samp>bits</samp>&rsquo;</dt>
+<dd><p>Enable rate distortion-based half pixel and quarter pixel refinement for
+16x16 blocks.
+</p>
+</dd>
+<dt> &lsquo;<samp>rd</samp>&rsquo;</dt>
+<dd><p>Enable all of the things described above, plus rate distortion-based
+half pixel and quarter pixel refinement for 8x8 blocks, and rate
+distortion-based search using square pattern.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>lumi_aq</samp>&rsquo;</dt>
+<dd><p>Enable lumi masking adaptive quantization when set to 1. Default is 0
+(disabled).
+</p>
+</dd>
+<dt> &lsquo;<samp>variance_aq</samp>&rsquo;</dt>
+<dd><p>Enable variance adaptive quantization when set to 1. Default is 0
+(disabled).
+</p>
+<p>When combined with &lsquo;<samp>lumi_aq</samp>&rsquo;, the resulting quality will not
+be better than any of the two specified individually. In other
+words, the resulting quality will be the worse one of the two
+effects.
+</p>
+</dd>
+<dt> &lsquo;<samp>ssim</samp>&rsquo;</dt>
+<dd><p>Set structural similarity (SSIM) displaying method. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
+<dd><p>Disable displaying of SSIM information.
+</p>
+</dd>
+<dt> &lsquo;<samp>avg</samp>&rsquo;</dt>
+<dd><p>Output average SSIM at the end of encoding to stdout. The format of
+showing the average SSIM is:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">Average SSIM: %f
+</pre></td></tr></table>
+
+<p>For users who are not familiar with C, %f means a float number, or
+a decimal (e.g. 0.939232).
+</p>
+</dd>
+<dt> &lsquo;<samp>frame</samp>&rsquo;</dt>
+<dd><p>Output both per-frame SSIM data during encoding and average SSIM at
+the end of encoding to stdout. The format of per-frame information
+is:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">       SSIM: avg: %1.3f min: %1.3f max: %1.3f
+</pre></td></tr></table>
+
+<p>For users who are not familiar with C, %1.3f means a float number
+rounded to 3 digits after the dot (e.g. 0.932).
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>ssim_acc</samp>&rsquo;</dt>
+<dd><p>Set SSIM accuracy. Valid options are integers within the range of
+0-4, while 0 gives the most accurate result and 4 computes the
+fastest.
+</p>
+</dd>
+</dl>
+
+<a name="png"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-png">14.5 png</a></h2>
+
+<p>PNG image encoder.
+</p>
+<a name="Private-options"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Private-options">14.5.1 Private options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>dpi <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Set physical density of pixels, in dots per inch, unset by default
+</p></dd>
+<dt> &lsquo;<samp>dpm <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Set physical density of pixels, in dots per meter, unset by default
+</p></dd>
+</dl>
+
+<a name="ProRes"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-ProRes">14.6 ProRes</a></h2>
+
+<p>Apple ProRes encoder.
+</p>
+<p>FFmpeg contains 2 ProRes encoders, the prores-aw and prores-ks encoder.
+The used encoder can be choosen with the <code>-vcodec</code> option.
+</p>
+<a name="Private-Options-for-prores_002dks"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Private-Options-for-prores_002dks">14.6.1 Private Options for prores-ks</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>profile <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Select the ProRes profile to encode
+</p><dl compact="compact">
+<dt> &lsquo;<samp>proxy</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>lt</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>standard</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>hq</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>4444</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>quant_mat <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Select quantization matrix.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>default</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>proxy</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>lt</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>standard</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>hq</samp>&rsquo;</dt>
+</dl>
+<p>If set to <var>auto</var>, the matrix matching the profile will be picked.
+If not set, the matrix providing the highest quality, <var>default</var>, will be
+picked.
+</p>
+</dd>
+<dt> &lsquo;<samp>bits_per_mb <var>integer</var></samp>&rsquo;</dt>
+<dd><p>How many bits to allot for coding one macroblock. Different profiles use
+between 200 and 2400 bits per macroblock, the maximum is 8000.
+</p>
+</dd>
+<dt> &lsquo;<samp>mbs_per_slice <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Number of macroblocks in each slice (1-8); the default value (8)
+should be good in almost all situations.
+</p>
+</dd>
+<dt> &lsquo;<samp>vendor <var>string</var></samp>&rsquo;</dt>
+<dd><p>Override the 4-byte vendor ID.
+A custom vendor ID like <var>apl0</var> would claim the stream was produced by
+the Apple encoder.
+</p>
+</dd>
+<dt> &lsquo;<samp>alpha_bits <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Specify number of bits for alpha component.
+Possible values are <var>0</var>, <var>8</var> and <var>16</var>.
+Use <var>0</var> to disable alpha plane coding.
+</p>
+</dd>
+</dl>
+
+<a name="Speed-considerations"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Speed-considerations">14.6.2 Speed considerations</a></h3>
+
+<p>In the default mode of operation the encoder has to honor frame constraints
+(i.e. not produc frames with size bigger than requested) while still making
+output picture as good as possible.
+A frame containing a lot of small details is harder to compress and the encoder
+would spend more time searching for appropriate quantizers for each slice.
+</p>
+<p>Setting a higher &lsquo;<samp>bits_per_mb</samp>&rsquo; limit will improve the speed.
+</p>
+<p>For the fastest encoding speed set the &lsquo;<samp>qscale</samp>&rsquo; parameter (4 is the
+recommended value) and do not set a size constraint.
+</p>
+<a name="Bitstream-Filters"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Bitstream-Filters">15. Bitstream Filters</a></h1>
+
+<p>When you configure your FFmpeg build, all the supported bitstream
+filters are enabled by default. You can list all available ones using
+the configure option <code>--list-bsfs</code>.
+</p>
+<p>You can disable all the bitstream filters using the configure option
+<code>--disable-bsfs</code>, and selectively enable any bitstream filter using
+the option <code>--enable-bsf=BSF</code>, or you can disable a particular
+bitstream filter using the option <code>--disable-bsf=BSF</code>.
+</p>
+<p>The option <code>-bsfs</code> of the ff* tools will display the list of
+all the supported bitstream filters included in your build.
+</p>
+<p>Below is a description of the currently available bitstream filters.
+</p>
+<a name="aac_005fadtstoasc"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-aac_005fadtstoasc">15.1 aac_adtstoasc</a></h2>
+
+<p>Convert MPEG-2/4 AAC ADTS to MPEG-4 Audio Specific Configuration
+bitstream filter.
+</p>
+<p>This filter creates an MPEG-4 AudioSpecificConfig from an MPEG-2/4
+ADTS header and removes the ADTS header.
+</p>
+<p>This is required for example when copying an AAC stream from a raw
+ADTS AAC container to a FLV or a MOV/MP4 file.
+</p>
+<a name="chomp"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-chomp">15.2 chomp</a></h2>
+
+<p>Remove zero padding at the end of a packet.
+</p>
+<a name="dump_005fextra"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-dump_005fextra">15.3 dump_extra</a></h2>
+
+<p>Add extradata to the beginning of the filtered packets.
+</p>
+<p>The additional argument specifies which packets should be filtered.
+It accepts the values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>add extradata to all key packets, but only if <var>local_header</var> is
+set in the &lsquo;<samp>flags2</samp>&rsquo; codec context field
+</p>
+</dd>
+<dt> &lsquo;<samp>k</samp>&rsquo;</dt>
+<dd><p>add extradata to all key packets
+</p>
+</dd>
+<dt> &lsquo;<samp>e</samp>&rsquo;</dt>
+<dd><p>add extradata to all packets
+</p></dd>
+</dl>
+
+<p>If not specified it is assumed &lsquo;<samp>k</samp>&rsquo;.
+</p>
+<p>For example the following <code>ffmpeg</code> command forces a global
+header (thus disabling individual packet headers) in the H.264 packets
+generated by the <code>libx264</code> encoder, but corrects them by adding
+the header stored in extradata to the key packets:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -map 0 -flags:v +global_header -c:v libx264 -bsf:v dump_extra out.ts
+</pre></td></tr></table>
+
+<a name="h264_005fmp4toannexb"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-h264_005fmp4toannexb">15.4 h264_mp4toannexb</a></h2>
+
+<p>Convert an H.264 bitstream from length prefixed mode to start code
+prefixed mode (as defined in the Annex B of the ITU-T H.264
+specification).
+</p>
+<p>This is required by some streaming formats, typically the MPEG-2
+transport stream format (&quot;mpegts&quot;).
+</p>
+<p>For example to remux an MP4 file containing an H.264 stream to mpegts
+format with <code>ffmpeg</code>, you can use the command:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT.mp4 -codec copy -bsf:v h264_mp4toannexb OUTPUT.ts
+</pre></td></tr></table>
+
+<a name="imx_005fdump_005fheader"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-imx_005fdump_005fheader">15.5 imx_dump_header</a></h2>
+
+<a name="mjpeg2jpeg"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-mjpeg2jpeg">15.6 mjpeg2jpeg</a></h2>
+
+<p>Convert MJPEG/AVI1 packets to full JPEG/JFIF packets.
+</p>
+<p>MJPEG is a video codec wherein each video frame is essentially a
+JPEG image. The individual frames can be extracted without loss,
+e.g. by
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i ../some_mjpeg.avi -c:v copy frames_%d.jpg
+</pre></td></tr></table>
+
+<p>Unfortunately, these chunks are incomplete JPEG images, because
+they lack the DHT segment required for decoding. Quoting from
+<a href="http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml">http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml</a>:
+</p>
+<p>Avery Lee, writing in the rec.video.desktop newsgroup in 2001,
+commented that &quot;MJPEG, or at least the MJPEG in AVIs having the
+MJPG fourcc, is restricted JPEG with a fixed &ndash; and *omitted* &ndash;
+Huffman table. The JPEG must be YCbCr colorspace, it must be 4:2:2,
+and it must use basic Huffman encoding, not arithmetic or
+progressive. . . . You can indeed extract the MJPEG frames and
+decode them with a regular JPEG decoder, but you have to prepend
+the DHT segment to them, or else the decoder won&rsquo;t have any idea
+how to decompress the data. The exact table necessary is given in
+the OpenDML spec.&quot;
+</p>
+<p>This bitstream filter patches the header of frames extracted from an MJPEG
+stream (carrying the AVI1 header ID and lacking a DHT segment) to
+produce fully qualified JPEG images.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i mjpeg-movie.avi -c:v copy -bsf:v mjpeg2jpeg frame_%d.jpg
+exiftran -i -9 frame*.jpg
+ffmpeg -i frame_%d.jpg -c:v copy rotated.avi
+</pre></td></tr></table>
+
+<a name="mjpega_005fdump_005fheader"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-mjpega_005fdump_005fheader">15.7 mjpega_dump_header</a></h2>
+
+<a name="movsub"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-movsub">15.8 movsub</a></h2>
+
+<a name="mp3_005fheader_005fdecompress"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-mp3_005fheader_005fdecompress">15.9 mp3_header_decompress</a></h2>
+
+<a name="noise-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-noise-1">15.10 noise</a></h2>
+
+<a name="remove_005fextra"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-remove_005fextra">15.11 remove_extra</a></h2>
+
+<a name="Format-Options"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Format-Options">16. Format Options</a></h1>
+
+<p>The libavformat library provides some generic global options, which
+can be set on all the muxers and demuxers. In addition each muxer or
+demuxer may support so-called private options, which are specific for
+that component.
+</p>
+<p>Options may be set by specifying -<var>option</var> <var>value</var> in the
+FFmpeg tools, or by setting the value explicitly in the
+<code>AVFormatContext</code> options or using the &lsquo;<tt>libavutil/opt.h</tt>&rsquo; API
+for programmatic use.
+</p>
+<p>The list of supported options follows:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>avioflags <var>flags</var> (<em>input/output</em>)</samp>&rsquo;</dt>
+<dd><p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>direct</samp>&rsquo;</dt>
+<dd><p>Reduce buffering.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>probesize <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Set probing size in bytes, i.e. the size of the data to analyze to get
+stream information. A higher value will allow to detect more
+information in case it is dispersed into the stream, but will increase
+latency. Must be an integer not lesser than 32. It is 5000000 by default.
+</p>
+</dd>
+<dt> &lsquo;<samp>packetsize <var>integer</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set packet size.
+</p>
+</dd>
+<dt> &lsquo;<samp>fflags <var>flags</var> (<em>input/output</em>)</samp>&rsquo;</dt>
+<dd><p>Set format flags.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>ignidx</samp>&rsquo;</dt>
+<dd><p>Ignore index.
+</p></dd>
+<dt> &lsquo;<samp>genpts</samp>&rsquo;</dt>
+<dd><p>Generate PTS.
+</p></dd>
+<dt> &lsquo;<samp>nofillin</samp>&rsquo;</dt>
+<dd><p>Do not fill in missing values that can be exactly calculated.
+</p></dd>
+<dt> &lsquo;<samp>noparse</samp>&rsquo;</dt>
+<dd><p>Disable AVParsers, this needs <code>+nofillin</code> too.
+</p></dd>
+<dt> &lsquo;<samp>igndts</samp>&rsquo;</dt>
+<dd><p>Ignore DTS.
+</p></dd>
+<dt> &lsquo;<samp>discardcorrupt</samp>&rsquo;</dt>
+<dd><p>Discard corrupted frames.
+</p></dd>
+<dt> &lsquo;<samp>sortdts</samp>&rsquo;</dt>
+<dd><p>Try to interleave output packets by DTS.
+</p></dd>
+<dt> &lsquo;<samp>keepside</samp>&rsquo;</dt>
+<dd><p>Do not merge side data.
+</p></dd>
+<dt> &lsquo;<samp>latm</samp>&rsquo;</dt>
+<dd><p>Enable RTP MP4A-LATM payload.
+</p></dd>
+<dt> &lsquo;<samp>nobuffer</samp>&rsquo;</dt>
+<dd><p>Reduce the latency introduced by optional buffering
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>seek2any <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Allow seeking to non-keyframes on demuxer level when supported if set to 1.
+Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>analyzeduration <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Specify how many microseconds are analyzed to probe the input. A
+higher value will allow to detect more accurate information, but will
+increase latency. It defaults to 5,000,000 microseconds = 5 seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>cryptokey <var>hexadecimal string</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Set decryption key.
+</p>
+</dd>
+<dt> &lsquo;<samp>indexmem <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Set max memory used for timestamp index (per stream).
+</p>
+</dd>
+<dt> &lsquo;<samp>rtbufsize <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Set max memory used for buffering real-time frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>fdebug <var>flags</var> (<em>input/output</em>)</samp>&rsquo;</dt>
+<dd><p>Print specific debug info.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>ts</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>max_delay <var>integer</var> (<em>input/output</em>)</samp>&rsquo;</dt>
+<dd><p>Set maximum muxing or demuxing delay in microseconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>fpsprobesize <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Set number of frames used to probe fps.
+</p>
+</dd>
+<dt> &lsquo;<samp>audio_preload <var>integer</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set microseconds by which audio packets should be interleaved earlier.
+</p>
+</dd>
+<dt> &lsquo;<samp>chunk_duration <var>integer</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set microseconds for each chunk.
+</p>
+</dd>
+<dt> &lsquo;<samp>chunk_size <var>integer</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set size in bytes for each chunk.
+</p>
+</dd>
+<dt> &lsquo;<samp>err_detect, f_err_detect <var>flags</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Set error detection flags. <code>f_err_detect</code> is deprecated and
+should be used only via the <code>ffmpeg</code> tool.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>crccheck</samp>&rsquo;</dt>
+<dd><p>Verify embedded CRCs.
+</p></dd>
+<dt> &lsquo;<samp>bitstream</samp>&rsquo;</dt>
+<dd><p>Detect bitstream specification deviations.
+</p></dd>
+<dt> &lsquo;<samp>buffer</samp>&rsquo;</dt>
+<dd><p>Detect improper bitstream length.
+</p></dd>
+<dt> &lsquo;<samp>explode</samp>&rsquo;</dt>
+<dd><p>Abort decoding on minor error detection.
+</p></dd>
+<dt> &lsquo;<samp>careful</samp>&rsquo;</dt>
+<dd><p>Consider things that violate the spec and have not been seen in the
+wild as errors.
+</p></dd>
+<dt> &lsquo;<samp>compliant</samp>&rsquo;</dt>
+<dd><p>Consider all spec non compliancies as errors.
+</p></dd>
+<dt> &lsquo;<samp>aggressive</samp>&rsquo;</dt>
+<dd><p>Consider things that a sane encoder should not do as an error.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>use_wallclock_as_timestamps <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Use wallclock as timestamps.
+</p>
+</dd>
+<dt> &lsquo;<samp>avoid_negative_ts <var>integer</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Shift timestamps to make them non-negative. A value of 1 enables shifting,
+a value of 0 disables it, the default value of -1 enables shifting
+when required by the target format.
+</p>
+<p>When shifting is enabled, all output timestamps are shifted by the
+same amount. Audio, video, and subtitles desynching and relative
+timestamp differences are preserved compared to how they would have
+been without shifting.
+</p>
+<p>Also note that this affects only leading negative timestamps, and not
+non-monotonic negative timestamps.
+</p>
+</dd>
+<dt> &lsquo;<samp>skip_initial_bytes <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Set number of bytes to skip before reading header and frames if set to 1.
+Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>correct_ts_overflow <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Correct single timestamp overflows if set to 1. Default is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>flush_packets <var>integer</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Flush the underlying I/O stream after each packet. Default 1 enables it, and
+has the effect of reducing the latency; 0 disables it and may slightly
+increase performance in some cases.
+</p></dd>
+</dl>
+
+
+<p><a name="Format-stream-specifiers"></a>
+</p><a name="Format-stream-specifiers-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-Format-stream-specifiers-1">16.1 Format stream specifiers</a></h2>
+
+<p>Format stream specifiers allow selection of one or more streams that
+match specific properties.
+</p>
+<p>Possible forms of stream specifiers are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp><var>stream_index</var></samp>&rsquo;</dt>
+<dd><p>Matches the stream with this index.
+</p>
+</dd>
+<dt> &lsquo;<samp><var>stream_type</var>[:<var>stream_index</var>]</samp>&rsquo;</dt>
+<dd><p><var>stream_type</var> is one of following: &rsquo;v&rsquo; for video, &rsquo;a&rsquo; for audio,
+&rsquo;s&rsquo; for subtitle, &rsquo;d&rsquo; for data, and &rsquo;t&rsquo; for attachments. If
+<var>stream_index</var> is given, then it matches the stream number
+<var>stream_index</var> of this type. Otherwise, it matches all streams of
+this type.
+</p>
+</dd>
+<dt> &lsquo;<samp>p:<var>program_id</var>[:<var>stream_index</var>]</samp>&rsquo;</dt>
+<dd><p>If <var>stream_index</var> is given, then it matches the stream with number
+<var>stream_index</var> in the program with the id
+<var>program_id</var>. Otherwise, it matches all streams in the program.
+</p>
+</dd>
+<dt> &lsquo;<samp>#<var>stream_id</var></samp>&rsquo;</dt>
+<dd><p>Matches the stream by a format-specific ID.
+</p></dd>
+</dl>
+
+<p>The exact semantics of stream specifiers is defined by the
+<code>avformat_match_stream_specifier()</code> function declared in the
+&lsquo;<tt>libavformat/avformat.h</tt>&rsquo; header.
+</p>
+<a name="Demuxers"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Demuxers">17. Demuxers</a></h1>
+
+<p>Demuxers are configured elements in FFmpeg that can read the
+multimedia streams from a particular type of file.
+</p>
+<p>When you configure your FFmpeg build, all the supported demuxers
+are enabled by default. You can list all available ones using the
+configure option <code>--list-demuxers</code>.
+</p>
+<p>You can disable all the demuxers using the configure option
+<code>--disable-demuxers</code>, and selectively enable a single demuxer with
+the option <code>--enable-demuxer=<var>DEMUXER</var></code>, or disable it
+with the option <code>--disable-demuxer=<var>DEMUXER</var></code>.
+</p>
+<p>The option <code>-formats</code> of the ff* tools will display the list of
+enabled demuxers.
+</p>
+<p>The description of some of the currently available demuxers follows.
+</p>
+<a name="applehttp"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-applehttp">17.1 applehttp</a></h2>
+
+<p>Apple HTTP Live Streaming demuxer.
+</p>
+<p>This demuxer presents all AVStreams from all variant streams.
+The id field is set to the bitrate variant index number. By setting
+the discard flags on AVStreams (by pressing &rsquo;a&rsquo; or &rsquo;v&rsquo; in ffplay),
+the caller can decide which variant streams to actually receive.
+The total bitrate of the variant that the stream belongs to is
+available in a metadata key named &quot;variant_bitrate&quot;.
+</p>
+<a name="asf"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-asf">17.2 asf</a></h2>
+
+<p>Advanced Systems Format demuxer.
+</p>
+<p>This demuxer is used to demux ASF files and MMS network streams.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-no_resync_search <var>bool</var></samp>&rsquo;</dt>
+<dd><p>Do not try to resynchronize by looking for a certain optional start code.
+</p></dd>
+</dl>
+
+<p><a name="concat"></a>
+</p><a name="concat-3"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-concat-3">17.3 concat</a></h2>
+
+<p>Virtual concatenation script demuxer.
+</p>
+<p>This demuxer reads a list of files and other directives from a text file and
+demuxes them one after the other, as if all their packet had been muxed
+together.
+</p>
+<p>The timestamps in the files are adjusted so that the first file starts at 0
+and each next file starts where the previous one finishes. Note that it is
+done globally and may cause gaps if all streams do not have exactly the same
+length.
+</p>
+<p>All files must have the same streams (same codecs, same time base, etc.).
+</p>
+<p>The duration of each file is used to adjust the timestamps of the next file:
+if the duration is incorrect (because it was computed using the bit-rate or
+because the file is truncated, for example), it can cause artifacts. The
+<code>duration</code> directive can be used to override the duration stored in
+each file.
+</p>
+<a name="Syntax-1"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Syntax-1">17.3.1 Syntax</a></h3>
+
+<p>The script is a text file in extended-ASCII, with one directive per line.
+Empty lines, leading spaces and lines starting with &rsquo;#&rsquo; are ignored. The
+following directive is recognized:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp><code>file <var>path</var></code></samp>&rsquo;</dt>
+<dd><p>Path to a file to read; special characters and spaces must be escaped with
+backslash or single quotes.
+</p>
+<p>All subsequent directives apply to that file.
+</p>
+</dd>
+<dt> &lsquo;<samp><code>ffconcat version 1.0</code></samp>&rsquo;</dt>
+<dd><p>Identify the script type and version. It also sets the &lsquo;<samp>safe</samp>&rsquo; option
+to 1 if it was to its default -1.
+</p>
+<p>To make FFmpeg recognize the format automatically, this directive must
+appears exactly as is (no extra space or byte-order-mark) on the very first
+line of the script.
+</p>
+</dd>
+<dt> &lsquo;<samp><code>duration <var>dur</var></code></samp>&rsquo;</dt>
+<dd><p>Duration of the file. This information can be specified from the file;
+specifying it here may be more efficient or help if the information from the
+file is not available or accurate.
+</p>
+<p>If the duration is set for all files, then it is possible to seek in the
+whole concatenated video.
+</p>
+</dd>
+</dl>
+
+<a name="Options-13"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-13">17.3.2 Options</a></h3>
+
+<p>This demuxer accepts the following option:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>safe</samp>&rsquo;</dt>
+<dd><p>If set to 1, reject unsafe file paths. A file path is considered safe if it
+does not contain a protocol specification and is relative and all components
+only contain characters from the portable character set (letters, digits,
+period, underscore and hyphen) and have no period at the beginning of a
+component.
+</p>
+<p>If set to 0, any file name is accepted.
+</p>
+<p>The default is -1, it is equivalent to 1 if the format was automatically
+probed and 0 otherwise.
+</p>
+</dd>
+</dl>
+
+<a name="flv"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-flv">17.4 flv</a></h2>
+
+<p>Adobe Flash Video Format demuxer.
+</p>
+<p>This demuxer is used to demux FLV files and RTMP network streams.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-flv_metadata <var>bool</var></samp>&rsquo;</dt>
+<dd><p>Allocate the streams according to the onMetaData array content.
+</p></dd>
+</dl>
+
+<a name="libgme"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-libgme">17.5 libgme</a></h2>
+
+<p>The Game Music Emu library is a collection of video game music file emulators.
+</p>
+<p>See <a href="http://code.google.com/p/game-music-emu/">http://code.google.com/p/game-music-emu/</a> for more information.
+</p>
+<p>Some files have multiple tracks. The demuxer will pick the first track by
+default. The &lsquo;<samp>track_index</samp>&rsquo; option can be used to select a different
+track. Track indexes start at 0. The demuxer exports the number of tracks as
+<var>tracks</var> meta data entry.
+</p>
+<p>For very large files, the &lsquo;<samp>max_size</samp>&rsquo; option may have to be adjusted.
+</p>
+<a name="libquvi"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-libquvi">17.6 libquvi</a></h2>
+
+<p>Play media from Internet services using the quvi project.
+</p>
+<p>The demuxer accepts a &lsquo;<samp>format</samp>&rsquo; option to request a specific quality. It
+is by default set to <var>best</var>.
+</p>
+<p>See <a href="http://quvi.sourceforge.net/">http://quvi.sourceforge.net/</a> for more information.
+</p>
+<p>FFmpeg needs to be built with <code>--enable-libquvi</code> for this demuxer to be
+enabled.
+</p>
+<a name="image2-2"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-image2-2">17.7 image2</a></h2>
+
+<p>Image file demuxer.
+</p>
+<p>This demuxer reads from a list of image files specified by a pattern.
+The syntax and meaning of the pattern is specified by the
+option <var>pattern_type</var>.
+</p>
+<p>The pattern may contain a suffix which is used to automatically
+determine the format of the images contained in the files.
+</p>
+<p>The size, the pixel format, and the format of each image must be the
+same for all the files in the sequence.
+</p>
+<p>This demuxer accepts the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>framerate</samp>&rsquo;</dt>
+<dd><p>Set the frame rate for the video stream. It defaults to 25.
+</p></dd>
+<dt> &lsquo;<samp>loop</samp>&rsquo;</dt>
+<dd><p>If set to 1, loop over the input. Default value is 0.
+</p></dd>
+<dt> &lsquo;<samp>pattern_type</samp>&rsquo;</dt>
+<dd><p>Select the pattern type used to interpret the provided filename.
+</p>
+<p><var>pattern_type</var> accepts one of the following values.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sequence</samp>&rsquo;</dt>
+<dd><p>Select a sequence pattern type, used to specify a sequence of files
+indexed by sequential numbers.
+</p>
+<p>A sequence pattern may contain the string &quot;%d&quot; or &quot;%0<var>N</var>d&quot;, which
+specifies the position of the characters representing a sequential
+number in each filename matched by the pattern. If the form
+&quot;%d0<var>N</var>d&quot; is used, the string representing the number in each
+filename is 0-padded and <var>N</var> is the total number of 0-padded
+digits representing the number. The literal character &rsquo;%&rsquo; can be
+specified in the pattern with the string &quot;%%&quot;.
+</p>
+<p>If the sequence pattern contains &quot;%d&quot; or &quot;%0<var>N</var>d&quot;, the first filename of
+the file list specified by the pattern must contain a number
+inclusively contained between <var>start_number</var> and
+<var>start_number</var>+<var>start_number_range</var>-1, and all the following
+numbers must be sequential.
+</p>
+<p>For example the pattern &quot;img-%03d.bmp&quot; will match a sequence of
+filenames of the form &lsquo;<tt>img-001.bmp</tt>&rsquo;, &lsquo;<tt>img-002.bmp</tt>&rsquo;, ...,
+&lsquo;<tt>img-010.bmp</tt>&rsquo;, etc.; the pattern &quot;i%%m%%g-%d.jpg&quot; will match a
+sequence of filenames of the form &lsquo;<tt>i%m%g-1.jpg</tt>&rsquo;,
+&lsquo;<tt>i%m%g-2.jpg</tt>&rsquo;, ..., &lsquo;<tt>i%m%g-10.jpg</tt>&rsquo;, etc.
+</p>
+<p>Note that the pattern must not necessarily contain &quot;%d&quot; or
+&quot;%0<var>N</var>d&quot;, for example to convert a single image file
+&lsquo;<tt>img.jpeg</tt>&rsquo; you can employ the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i img.jpeg img.png
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>glob</samp>&rsquo;</dt>
+<dd><p>Select a glob wildcard pattern type.
+</p>
+<p>The pattern is interpreted like a <code>glob()</code> pattern. This is only
+selectable if libavformat was compiled with globbing support.
+</p>
+</dd>
+<dt> &lsquo;<samp>glob_sequence <em>(deprecated, will be removed)</em></samp>&rsquo;</dt>
+<dd><p>Select a mixed glob wildcard/sequence pattern.
+</p>
+<p>If your version of libavformat was compiled with globbing support, and
+the provided pattern contains at least one glob meta character among
+<code>%*?[]{}</code> that is preceded by an unescaped &quot;%&quot;, the pattern is
+interpreted like a <code>glob()</code> pattern, otherwise it is interpreted
+like a sequence pattern.
+</p>
+<p>All glob special characters <code>%*?[]{}</code> must be prefixed
+with &quot;%&quot;. To escape a literal &quot;%&quot; you shall use &quot;%%&quot;.
+</p>
+<p>For example the pattern <code>foo-%*.jpeg</code> will match all the
+filenames prefixed by &quot;foo-&quot; and terminating with &quot;.jpeg&quot;, and
+<code>foo-%?%?%?.jpeg</code> will match all the filenames prefixed with
+&quot;foo-&quot;, followed by a sequence of three characters, and terminating
+with &quot;.jpeg&quot;.
+</p>
+<p>This pattern type is deprecated in favor of <var>glob</var> and
+<var>sequence</var>.
+</p></dd>
+</dl>
+
+<p>Default value is <var>glob_sequence</var>.
+</p></dd>
+<dt> &lsquo;<samp>pixel_format</samp>&rsquo;</dt>
+<dd><p>Set the pixel format of the images to read. If not specified the pixel
+format is guessed from the first image file in the sequence.
+</p></dd>
+<dt> &lsquo;<samp>start_number</samp>&rsquo;</dt>
+<dd><p>Set the index of the file matched by the image file pattern to start
+to read from. Default value is 0.
+</p></dd>
+<dt> &lsquo;<samp>start_number_range</samp>&rsquo;</dt>
+<dd><p>Set the index interval range to check when looking for the first image
+file in the sequence, starting from <var>start_number</var>. Default value
+is 5.
+</p></dd>
+<dt> &lsquo;<samp>ts_from_file</samp>&rsquo;</dt>
+<dd><p>If set to 1, will set frame timestamp to modification time of image file. Note
+that monotonity of timestamps is not provided: images go in the same order as
+without this option. Default value is 0.
+</p></dd>
+<dt> &lsquo;<samp>video_size</samp>&rsquo;</dt>
+<dd><p>Set the video size of the images to read. If not specified the video
+size is guessed from the first image file in the sequence.
+</p></dd>
+</dl>
+
+<a name="Examples-88"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-88">17.7.1 Examples</a></h3>
+
+<ul>
+<li>
+Use <code>ffmpeg</code> for creating a video from the images in the file
+sequence &lsquo;<tt>img-001.jpeg</tt>&rsquo;, &lsquo;<tt>img-002.jpeg</tt>&rsquo;, ..., assuming an
+input frame rate of 10 frames per second:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -framerate 10 -i 'img-%03d.jpeg' out.mkv
+</pre></td></tr></table>
+
+</li><li>
+As above, but start by reading from a file with index 100 in the sequence:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -framerate 10 -start_number 100 -i 'img-%03d.jpeg' out.mkv
+</pre></td></tr></table>
+
+</li><li>
+Read images matching the &quot;*.png&quot; glob pattern , that is all the files
+terminating with the &quot;.png&quot; suffix:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -framerate 10 -pattern_type glob -i &quot;*.png&quot; out.mkv
+</pre></td></tr></table>
+</li></ul>
+
+<a name="mpegts-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-mpegts-1">17.8 mpegts</a></h2>
+
+<p>MPEG-2 transport stream demuxer.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>fix_teletext_pts</samp>&rsquo;</dt>
+<dd><p>Overrides teletext packet PTS and DTS values with the timestamps calculated
+from the PCR of the first program which the teletext stream is part of and is
+not discarded. Default value is 1, set this option to 0 if you want your
+teletext packet PTS and DTS values untouched.
+</p></dd>
+</dl>
+
+<a name="rawvideo"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-rawvideo">17.9 rawvideo</a></h2>
+
+<p>Raw video demuxer.
+</p>
+<p>This demuxer allows to read raw video data. Since there is no header
+specifying the assumed video parameters, the user must specify them
+in order to be able to decode the data correctly.
+</p>
+<p>This demuxer accepts the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>framerate</samp>&rsquo;</dt>
+<dd><p>Set input video frame rate. Default value is 25.
+</p>
+</dd>
+<dt> &lsquo;<samp>pixel_format</samp>&rsquo;</dt>
+<dd><p>Set the input video pixel format. Default value is <code>yuv420p</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>video_size</samp>&rsquo;</dt>
+<dd><p>Set the input video size. This value must be specified explicitly.
+</p></dd>
+</dl>
+
+<p>For example to read a rawvideo file &lsquo;<tt>input.raw</tt>&rsquo; with
+<code>ffplay</code>, assuming a pixel format of <code>rgb24</code>, a video
+size of <code>320x240</code>, and a frame rate of 10 images per second, use
+the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f rawvideo -pixel_format rgb24 -video_size 320x240 -framerate 10 input.raw
+</pre></td></tr></table>
+
+<a name="sbg"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-sbg">17.10 sbg</a></h2>
+
+<p>SBaGen script demuxer.
+</p>
+<p>This demuxer reads the script language used by SBaGen
+<a href="http://uazu.net/sbagen/">http://uazu.net/sbagen/</a> to generate binaural beats sessions. A SBG
+script looks like that:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">-SE
+a: 300-2.5/3 440+4.5/0
+b: 300-2.5/0 440+4.5/3
+off: -
+NOW      == a
++0:07:00 == b
++0:14:00 == a
++0:21:00 == b
++0:30:00    off
+</pre></td></tr></table>
+
+<p>A SBG script can mix absolute and relative timestamps. If the script uses
+either only absolute timestamps (including the script start time) or only
+relative ones, then its layout is fixed, and the conversion is
+straightforward. On the other hand, if the script mixes both kind of
+timestamps, then the <var>NOW</var> reference for relative timestamps will be
+taken from the current time of day at the time the script is read, and the
+script layout will be frozen according to that reference. That means that if
+the script is directly played, the actual times will match the absolute
+timestamps up to the sound controller&rsquo;s clock accuracy, but if the user
+somehow pauses the playback or seeks, all times will be shifted accordingly.
+</p>
+<a name="tedcaptions"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-tedcaptions">17.11 tedcaptions</a></h2>
+
+<p>JSON captions used for <a href="http://www.ted.com/">TED Talks</a>.
+</p>
+<p>TED does not provide links to the captions, but they can be guessed from the
+page. The file &lsquo;<tt>tools/bookmarklets.html</tt>&rsquo; from the FFmpeg source tree
+contains a bookmarklet to expose them.
+</p>
+<p>This demuxer accepts the following option:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>start_time</samp>&rsquo;</dt>
+<dd><p>Set the start time of the TED talk, in milliseconds. The default is 15000
+(15s). It is used to sync the captions with the downloadable videos, because
+they include a 15s intro.
+</p></dd>
+</dl>
+
+<p>Example: convert the captions to a format most players understand:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i http://www.ted.com/talks/subtitles/id/1/lang/en talk1-en.srt
+</pre></td></tr></table>
+
+<a name="Muxers"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Muxers">18. Muxers</a></h1>
+
+<p>Muxers are configured elements in FFmpeg which allow writing
+multimedia streams to a particular type of file.
+</p>
+<p>When you configure your FFmpeg build, all the supported muxers
+are enabled by default. You can list all available muxers using the
+configure option <code>--list-muxers</code>.
+</p>
+<p>You can disable all the muxers with the configure option
+<code>--disable-muxers</code> and selectively enable / disable single muxers
+with the options <code>--enable-muxer=<var>MUXER</var></code> /
+<code>--disable-muxer=<var>MUXER</var></code>.
+</p>
+<p>The option <code>-formats</code> of the ff* tools will display the list of
+enabled muxers.
+</p>
+<p>A description of some of the currently available muxers follows.
+</p>
+<p><a name="aiff"></a>
+</p><a name="aiff-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-aiff-1">18.1 aiff</a></h2>
+
+<p>Audio Interchange File Format muxer.
+</p>
+<p>It accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>write_id3v2</samp>&rsquo;</dt>
+<dd><p>Enable ID3v2 tags writing when set to 1. Default is 0 (disabled).
+</p>
+</dd>
+<dt> &lsquo;<samp>id3v2_version</samp>&rsquo;</dt>
+<dd><p>Select ID3v2 version to write. Currently only version 3 and 4 (aka.
+ID3v2.3 and ID3v2.4) are supported. The default is version 4.
+</p>
+</dd>
+</dl>
+
+<p><a name="crc"></a>
+</p><a name="crc-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-crc-1">18.2 crc</a></h2>
+
+<p>CRC (Cyclic Redundancy Check) testing format.
+</p>
+<p>This muxer computes and prints the Adler-32 CRC of all the input audio
+and video frames. By default audio frames are converted to signed
+16-bit raw audio and video frames to raw video before computing the
+CRC.
+</p>
+<p>The output of the muxer consists of a single line of the form:
+CRC=0x<var>CRC</var>, where <var>CRC</var> is a hexadecimal number 0-padded to
+8 digits containing the CRC for all the decoded input frames.
+</p>
+<p>For example to compute the CRC of the input, and store it in the file
+&lsquo;<tt>out.crc</tt>&rsquo;:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f crc out.crc
+</pre></td></tr></table>
+
+<p>You can print the CRC to stdout with the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f crc -
+</pre></td></tr></table>
+
+<p>You can select the output format of each frame with <code>ffmpeg</code> by
+specifying the audio and video codec and format. For example to
+compute the CRC of the input audio converted to PCM unsigned 8-bit
+and the input video converted to MPEG-2 video, use the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -c:a pcm_u8 -c:v mpeg2video -f crc -
+</pre></td></tr></table>
+
+<p>See also the <a href="#framecrc">framecrc</a> muxer.
+</p>
+<p><a name="framecrc"></a>
+</p><a name="framecrc-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-framecrc-1">18.3 framecrc</a></h2>
+
+<p>Per-packet CRC (Cyclic Redundancy Check) testing format.
+</p>
+<p>This muxer computes and prints the Adler-32 CRC for each audio
+and video packet. By default audio frames are converted to signed
+16-bit raw audio and video frames to raw video before computing the
+CRC.
+</p>
+<p>The output of the muxer consists of a line for each audio and video
+packet of the form:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>stream_index</var>, <var>packet_dts</var>, <var>packet_pts</var>, <var>packet_duration</var>, <var>packet_size</var>, 0x<var>CRC</var>
+</pre></td></tr></table>
+
+<p><var>CRC</var> is a hexadecimal number 0-padded to 8 digits containing the
+CRC of the packet.
+</p>
+<p>For example to compute the CRC of the audio and video frames in
+&lsquo;<tt>INPUT</tt>&rsquo;, converted to raw audio and video packets, and store it
+in the file &lsquo;<tt>out.crc</tt>&rsquo;:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f framecrc out.crc
+</pre></td></tr></table>
+
+<p>To print the information to stdout, use the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f framecrc -
+</pre></td></tr></table>
+
+<p>With <code>ffmpeg</code>, you can select the output format to which the
+audio and video frames are encoded before computing the CRC for each
+packet by specifying the audio and video codec. For example, to
+compute the CRC of each decoded input audio frame converted to PCM
+unsigned 8-bit and of each decoded input video frame converted to
+MPEG-2 video, use the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -c:a pcm_u8 -c:v mpeg2video -f framecrc -
+</pre></td></tr></table>
+
+<p>See also the <a href="#crc">crc</a> muxer.
+</p>
+<p><a name="framemd5"></a>
+</p><a name="framemd5-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-framemd5-1">18.4 framemd5</a></h2>
+
+<p>Per-packet MD5 testing format.
+</p>
+<p>This muxer computes and prints the MD5 hash for each audio
+and video packet. By default audio frames are converted to signed
+16-bit raw audio and video frames to raw video before computing the
+hash.
+</p>
+<p>The output of the muxer consists of a line for each audio and video
+packet of the form:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>stream_index</var>, <var>packet_dts</var>, <var>packet_pts</var>, <var>packet_duration</var>, <var>packet_size</var>, <var>MD5</var>
+</pre></td></tr></table>
+
+<p><var>MD5</var> is a hexadecimal number representing the computed MD5 hash
+for the packet.
+</p>
+<p>For example to compute the MD5 of the audio and video frames in
+&lsquo;<tt>INPUT</tt>&rsquo;, converted to raw audio and video packets, and store it
+in the file &lsquo;<tt>out.md5</tt>&rsquo;:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f framemd5 out.md5
+</pre></td></tr></table>
+
+<p>To print the information to stdout, use the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f framemd5 -
+</pre></td></tr></table>
+
+<p>See also the <a href="#md5">md5</a> muxer.
+</p>
+<p><a name="gif"></a>
+</p><a name="gif-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-gif-1">18.5 gif</a></h2>
+
+<p>Animated GIF muxer.
+</p>
+<p>It accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>loop</samp>&rsquo;</dt>
+<dd><p>Set the number of times to loop the output. Use <code>-1</code> for no loop, <code>0</code>
+for looping indefinitely (default).
+</p>
+</dd>
+<dt> &lsquo;<samp>final_delay</samp>&rsquo;</dt>
+<dd><p>Force the delay (expressed in centiseconds) after the last frame. Each frame
+ends with a delay until the next frame. The default is <code>-1</code>, which is a
+special value to tell the muxer to re-use the previous delay. In case of a
+loop, you might want to customize this value to mark a pause for instance.
+</p></dd>
+</dl>
+
+<p>For example, to encode a gif looping 10 times, with a 5 seconds delay between
+the loops:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -loop 10 -final_delay 500 out.gif
+</pre></td></tr></table>
+
+<p>Note 1: if you wish to extract the frames in separate GIF files, you need to
+force the <a href="#image2">image2</a> muxer:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -c:v gif -f image2 &quot;out%d.gif&quot;
+</pre></td></tr></table>
+
+<p>Note 2: the GIF format has a very small time base: the delay between two frames
+can not be smaller than one centi second.
+</p>
+<p><a name="hls"></a>
+</p><a name="hls-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-hls-1">18.6 hls</a></h2>
+
+<p>Apple HTTP Live Streaming muxer that segments MPEG-TS according to
+the HTTP Live Streaming specification.
+</p>
+<p>It creates a playlist file and numbered segment files. The output
+filename specifies the playlist filename; the segment filenames
+receive the same basename as the playlist, a sequential number and
+a .ts extension.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.nut out.m3u8
+</pre></td></tr></table>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-hls_time <var>seconds</var></samp>&rsquo;</dt>
+<dd><p>Set the segment length in seconds.
+</p></dd>
+<dt> &lsquo;<samp>-hls_list_size <var>size</var></samp>&rsquo;</dt>
+<dd><p>Set the maximum number of playlist entries.
+</p></dd>
+<dt> &lsquo;<samp>-hls_wrap <var>wrap</var></samp>&rsquo;</dt>
+<dd><p>Set the number after which index wraps.
+</p></dd>
+<dt> &lsquo;<samp>-start_number <var>number</var></samp>&rsquo;</dt>
+<dd><p>Start the sequence from <var>number</var>.
+</p></dd>
+</dl>
+
+<p><a name="ico"></a>
+</p><a name="ico-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-ico-1">18.7 ico</a></h2>
+
+<p>ICO file muxer.
+</p>
+<p>Microsoft&rsquo;s icon file format (ICO) has some strict limitations that should be noted:
+</p>
+<ul>
+<li>
+Size cannot exceed 256 pixels in any dimension
+
+</li><li>
+Only BMP and PNG images can be stored
+
+</li><li>
+If a BMP image is used, it must be one of the following pixel formats:
+<table><tr><td>&nbsp;</td><td><pre class="example">BMP Bit Depth      FFmpeg Pixel Format
+1bit               pal8
+4bit               pal8
+8bit               pal8
+16bit              rgb555le
+24bit              bgr24
+32bit              bgra
+</pre></td></tr></table>
+
+</li><li>
+If a BMP image is used, it must use the BITMAPINFOHEADER DIB header
+
+</li><li>
+If a PNG image is used, it must use the rgba pixel format
+</li></ul>
+
+<p><a name="image2"></a>
+</p><a name="image2-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-image2-1">18.8 image2</a></h2>
+
+<p>Image file muxer.
+</p>
+<p>The image file muxer writes video frames to image files.
+</p>
+<p>The output filenames are specified by a pattern, which can be used to
+produce sequentially numbered series of files.
+The pattern may contain the string &quot;%d&quot; or &quot;%0<var>N</var>d&quot;, this string
+specifies the position of the characters representing a numbering in
+the filenames. If the form &quot;%0<var>N</var>d&quot; is used, the string
+representing the number in each filename is 0-padded to <var>N</var>
+digits. The literal character &rsquo;%&rsquo; can be specified in the pattern with
+the string &quot;%%&quot;.
+</p>
+<p>If the pattern contains &quot;%d&quot; or &quot;%0<var>N</var>d&quot;, the first filename of
+the file list specified will contain the number 1, all the following
+numbers will be sequential.
+</p>
+<p>The pattern may contain a suffix which is used to automatically
+determine the format of the image files to write.
+</p>
+<p>For example the pattern &quot;img-%03d.bmp&quot; will specify a sequence of
+filenames of the form &lsquo;<tt>img-001.bmp</tt>&rsquo;, &lsquo;<tt>img-002.bmp</tt>&rsquo;, ...,
+&lsquo;<tt>img-010.bmp</tt>&rsquo;, etc.
+The pattern &quot;img%%-%d.jpg&quot; will specify a sequence of filenames of the
+form &lsquo;<tt>img%-1.jpg</tt>&rsquo;, &lsquo;<tt>img%-2.jpg</tt>&rsquo;, ..., &lsquo;<tt>img%-10.jpg</tt>&rsquo;,
+etc.
+</p>
+<p>The following example shows how to use <code>ffmpeg</code> for creating a
+sequence of files &lsquo;<tt>img-001.jpeg</tt>&rsquo;, &lsquo;<tt>img-002.jpeg</tt>&rsquo;, ...,
+taking one image every second from the input video:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -vsync 1 -r 1 -f image2 'img-%03d.jpeg'
+</pre></td></tr></table>
+
+<p>Note that with <code>ffmpeg</code>, if the format is not specified with the
+<code>-f</code> option and the output filename specifies an image file
+format, the image2 muxer is automatically selected, so the previous
+command can be written as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -vsync 1 -r 1 'img-%03d.jpeg'
+</pre></td></tr></table>
+
+<p>Note also that the pattern must not necessarily contain &quot;%d&quot; or
+&quot;%0<var>N</var>d&quot;, for example to create a single image file
+&lsquo;<tt>img.jpeg</tt>&rsquo; from the input video you can employ the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -f image2 -frames:v 1 img.jpeg
+</pre></td></tr></table>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>start_number <var>number</var></samp>&rsquo;</dt>
+<dd><p>Start the sequence from <var>number</var>. Default value is 1. Must be a
+non-negative number.
+</p>
+</dd>
+<dt> &lsquo;<samp>-update <var>number</var></samp>&rsquo;</dt>
+<dd><p>If <var>number</var> is nonzero, the filename will always be interpreted as just a
+filename, not a pattern, and this file will be continuously overwritten with new
+images.
+</p>
+</dd>
+</dl>
+
+<p>The image muxer supports the .Y.U.V image file format. This format is
+special in that that each image frame consists of three files, for
+each of the YUV420P components. To read or write this image file format,
+specify the name of the &rsquo;.Y&rsquo; file. The muxer will automatically open the
+&rsquo;.U&rsquo; and &rsquo;.V&rsquo; files as required.
+</p>
+<a name="matroska"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-matroska">18.9 matroska</a></h2>
+
+<p>Matroska container muxer.
+</p>
+<p>This muxer implements the matroska and webm container specs.
+</p>
+<p>The recognized metadata settings in this muxer are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>title=<var>title name</var></samp>&rsquo;</dt>
+<dd><p>Name provided to a single track
+</p></dd>
+</dl>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>language=<var>language name</var></samp>&rsquo;</dt>
+<dd><p>Specifies the language of the track in the Matroska languages form
+</p></dd>
+</dl>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>stereo_mode=<var>mode</var></samp>&rsquo;</dt>
+<dd><p>Stereo 3D video layout of two views in a single video track
+</p><dl compact="compact">
+<dt> &lsquo;<samp>mono</samp>&rsquo;</dt>
+<dd><p>video is not stereo
+</p></dd>
+<dt> &lsquo;<samp>left_right</samp>&rsquo;</dt>
+<dd><p>Both views are arranged side by side, Left-eye view is on the left
+</p></dd>
+<dt> &lsquo;<samp>bottom_top</samp>&rsquo;</dt>
+<dd><p>Both views are arranged in top-bottom orientation, Left-eye view is at bottom
+</p></dd>
+<dt> &lsquo;<samp>top_bottom</samp>&rsquo;</dt>
+<dd><p>Both views are arranged in top-bottom orientation, Left-eye view is on top
+</p></dd>
+<dt> &lsquo;<samp>checkerboard_rl</samp>&rsquo;</dt>
+<dd><p>Each view is arranged in a checkerboard interleaved pattern, Left-eye view being first
+</p></dd>
+<dt> &lsquo;<samp>checkerboard_lr</samp>&rsquo;</dt>
+<dd><p>Each view is arranged in a checkerboard interleaved pattern, Right-eye view being first
+</p></dd>
+<dt> &lsquo;<samp>row_interleaved_rl</samp>&rsquo;</dt>
+<dd><p>Each view is constituted by a row based interleaving, Right-eye view is first row
+</p></dd>
+<dt> &lsquo;<samp>row_interleaved_lr</samp>&rsquo;</dt>
+<dd><p>Each view is constituted by a row based interleaving, Left-eye view is first row
+</p></dd>
+<dt> &lsquo;<samp>col_interleaved_rl</samp>&rsquo;</dt>
+<dd><p>Both views are arranged in a column based interleaving manner, Right-eye view is first column
+</p></dd>
+<dt> &lsquo;<samp>col_interleaved_lr</samp>&rsquo;</dt>
+<dd><p>Both views are arranged in a column based interleaving manner, Left-eye view is first column
+</p></dd>
+<dt> &lsquo;<samp>anaglyph_cyan_red</samp>&rsquo;</dt>
+<dd><p>All frames are in anaglyph format viewable through red-cyan filters
+</p></dd>
+<dt> &lsquo;<samp>right_left</samp>&rsquo;</dt>
+<dd><p>Both views are arranged side by side, Right-eye view is on the left
+</p></dd>
+<dt> &lsquo;<samp>anaglyph_green_magenta</samp>&rsquo;</dt>
+<dd><p>All frames are in anaglyph format viewable through green-magenta filters
+</p></dd>
+<dt> &lsquo;<samp>block_lr</samp>&rsquo;</dt>
+<dd><p>Both eyes laced in one Block, Left-eye view is first
+</p></dd>
+<dt> &lsquo;<samp>block_rl</samp>&rsquo;</dt>
+<dd><p>Both eyes laced in one Block, Right-eye view is first
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<p>For example a 3D WebM clip can be created using the following command line:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i sample_left_right_clip.mpg -an -c:v libvpx -metadata stereo_mode=left_right -y stereo_clip.webm
+</pre></td></tr></table>
+
+<p>This muxer supports the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>reserve_index_space</samp>&rsquo;</dt>
+<dd><p>By default, this muxer writes the index for seeking (called cues in Matroska
+terms) at the end of the file, because it cannot know in advance how much space
+to leave for the index at the beginning of the file. However for some use cases
+&ndash; e.g.  streaming where seeking is possible but slow &ndash; it is useful to put the
+index at the beginning of the file.
+</p>
+<p>If this option is set to a non-zero value, the muxer will reserve a given amount
+of space in the file header and then try to write the cues there when the muxing
+finishes. If the available space does not suffice, muxing will fail. A safe size
+for most use cases should be about 50kB per hour of video.
+</p>
+<p>Note that cues are only written if the output is seekable and this option will
+have no effect if it is not.
+</p>
+</dd>
+</dl>
+
+<p><a name="md5"></a>
+</p><a name="md5-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-md5-1">18.10 md5</a></h2>
+
+<p>MD5 testing format.
+</p>
+<p>This muxer computes and prints the MD5 hash of all the input audio
+and video frames. By default audio frames are converted to signed
+16-bit raw audio and video frames to raw video before computing the
+hash.
+</p>
+<p>The output of the muxer consists of a single line of the form:
+MD5=<var>MD5</var>, where <var>MD5</var> is a hexadecimal number representing
+the computed MD5 hash.
+</p>
+<p>For example to compute the MD5 hash of the input converted to raw
+audio and video, and store it in the file &lsquo;<tt>out.md5</tt>&rsquo;:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f md5 out.md5
+</pre></td></tr></table>
+
+<p>You can print the MD5 to stdout with the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f md5 -
+</pre></td></tr></table>
+
+<p>See also the <a href="#framemd5">framemd5</a> muxer.
+</p>
+<a name="mov_002fmp4_002fismv"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-mov_002fmp4_002fismv">18.11 mov/mp4/ismv</a></h2>
+
+<p>MOV/MP4/ISMV (Smooth Streaming) muxer.
+</p>
+<p>The mov/mp4/ismv muxer supports fragmentation. Normally, a MOV/MP4
+file has all the metadata about all packets stored in one location
+(written at the end of the file, it can be moved to the start for
+better playback by adding <var>faststart</var> to the <var>movflags</var>, or
+using the <code>qt-faststart</code> tool). A fragmented
+file consists of a number of fragments, where packets and metadata
+about these packets are stored together. Writing a fragmented
+file has the advantage that the file is decodable even if the
+writing is interrupted (while a normal MOV/MP4 is undecodable if
+it is not properly finished), and it requires less memory when writing
+very long files (since writing normal MOV/MP4 files stores info about
+every single packet in memory until the file is closed). The downside
+is that it is less compatible with other applications.
+</p>
+<p>Fragmentation is enabled by setting one of the AVOptions that define
+how to cut the file into fragments:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-moov_size <var>bytes</var></samp>&rsquo;</dt>
+<dd><p>Reserves space for the moov atom at the beginning of the file instead of placing the
+moov atom at the end. If the space reserved is insufficient, muxing will fail.
+</p></dd>
+<dt> &lsquo;<samp>-movflags frag_keyframe</samp>&rsquo;</dt>
+<dd><p>Start a new fragment at each video keyframe.
+</p></dd>
+<dt> &lsquo;<samp>-frag_duration <var>duration</var></samp>&rsquo;</dt>
+<dd><p>Create fragments that are <var>duration</var> microseconds long.
+</p></dd>
+<dt> &lsquo;<samp>-frag_size <var>size</var></samp>&rsquo;</dt>
+<dd><p>Create fragments that contain up to <var>size</var> bytes of payload data.
+</p></dd>
+<dt> &lsquo;<samp>-movflags frag_custom</samp>&rsquo;</dt>
+<dd><p>Allow the caller to manually choose when to cut fragments, by
+calling <code>av_write_frame(ctx, NULL)</code> to write a fragment with
+the packets written so far. (This is only useful with other
+applications integrating libavformat, not from <code>ffmpeg</code>.)
+</p></dd>
+<dt> &lsquo;<samp>-min_frag_duration <var>duration</var></samp>&rsquo;</dt>
+<dd><p>Don&rsquo;t create fragments that are shorter than <var>duration</var> microseconds long.
+</p></dd>
+</dl>
+
+<p>If more than one condition is specified, fragments are cut when
+one of the specified conditions is fulfilled. The exception to this is
+<code>-min_frag_duration</code>, which has to be fulfilled for any of the other
+conditions to apply.
+</p>
+<p>Additionally, the way the output file is written can be adjusted
+through a few other options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-movflags empty_moov</samp>&rsquo;</dt>
+<dd><p>Write an initial moov atom directly at the start of the file, without
+describing any samples in it. Generally, an mdat/moov pair is written
+at the start of the file, as a normal MOV/MP4 file, containing only
+a short portion of the file. With this option set, there is no initial
+mdat atom, and the moov atom only describes the tracks but has
+a zero duration.
+</p>
+<p>Files written with this option set do not work in QuickTime.
+This option is implicitly set when writing ismv (Smooth Streaming) files.
+</p></dd>
+<dt> &lsquo;<samp>-movflags separate_moof</samp>&rsquo;</dt>
+<dd><p>Write a separate moof (movie fragment) atom for each track. Normally,
+packets for all tracks are written in a moof atom (which is slightly
+more efficient), but with this option set, the muxer writes one moof/mdat
+pair for each track, making it easier to separate tracks.
+</p>
+<p>This option is implicitly set when writing ismv (Smooth Streaming) files.
+</p></dd>
+<dt> &lsquo;<samp>-movflags faststart</samp>&rsquo;</dt>
+<dd><p>Run a second pass moving the index (moov atom) to the beginning of the file.
+This operation can take a while, and will not work in various situations such
+as fragmented output, thus it is not enabled by default.
+</p></dd>
+<dt> &lsquo;<samp>-movflags rtphint</samp>&rsquo;</dt>
+<dd><p>Add RTP hinting tracks to the output file.
+</p></dd>
+</dl>
+
+<p>Smooth Streaming content can be pushed in real time to a publishing
+point on IIS with this muxer. Example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re <var>&lt;normal input/transcoding options&gt;</var> -movflags isml+frag_keyframe -f ismv http://server/publishingpoint.isml/Streams(Encoder1)
+</pre></td></tr></table>
+
+<a name="mp3"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-mp3">18.12 mp3</a></h2>
+
+<p>The MP3 muxer writes a raw MP3 stream with an ID3v2 header at the beginning and
+optionally an ID3v1 tag at the end. ID3v2.3 and ID3v2.4 are supported, the
+<code>id3v2_version</code> option controls which one is used. The legacy ID3v1 tag is
+not written by default, but may be enabled with the <code>write_id3v1</code> option.
+</p>
+<p>For seekable output the muxer also writes a Xing frame at the beginning, which
+contains the number of frames in the file. It is useful for computing duration
+of VBR files.
+</p>
+<p>The muxer supports writing ID3v2 attached pictures (APIC frames). The pictures
+are supplied to the muxer in form of a video stream with a single packet. There
+can be any number of those streams, each will correspond to a single APIC frame.
+The stream metadata tags <var>title</var> and <var>comment</var> map to APIC
+<var>description</var> and <var>picture type</var> respectively. See
+<a href="http://id3.org/id3v2.4.0-frames">http://id3.org/id3v2.4.0-frames</a> for allowed picture types.
+</p>
+<p>Note that the APIC frames must be written at the beginning, so the muxer will
+buffer the audio frames until it gets all the pictures. It is therefore advised
+to provide the pictures as soon as possible to avoid excessive buffering.
+</p>
+<p>Examples:
+</p>
+<p>Write an mp3 with an ID3v2.3 header and an ID3v1 footer:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -id3v2_version 3 -write_id3v1 1 out.mp3
+</pre></td></tr></table>
+
+<p>To attach a picture to an mp3 file select both the audio and the picture stream
+with <code>map</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.mp3 -i cover.png -c copy -map 0 -map 1
+-metadata:s:v title=&quot;Album cover&quot; -metadata:s:v comment=&quot;Cover (Front)&quot; out.mp3
+</pre></td></tr></table>
+
+<a name="mpegts"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-mpegts">18.13 mpegts</a></h2>
+
+<p>MPEG transport stream muxer.
+</p>
+<p>This muxer implements ISO 13818-1 and part of ETSI EN 300 468.
+</p>
+<p>The muxer options are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-mpegts_original_network_id <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set the original_network_id (default 0x0001). This is unique identifier
+of a network in DVB. Its main use is in the unique identification of a
+service through the path Original_Network_ID, Transport_Stream_ID.
+</p></dd>
+<dt> &lsquo;<samp>-mpegts_transport_stream_id <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set the transport_stream_id (default 0x0001). This identifies a
+transponder in DVB.
+</p></dd>
+<dt> &lsquo;<samp>-mpegts_service_id <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set the service_id (default 0x0001) also known as program in DVB.
+</p></dd>
+<dt> &lsquo;<samp>-mpegts_pmt_start_pid <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set the first PID for PMT (default 0x1000, max 0x1f00).
+</p></dd>
+<dt> &lsquo;<samp>-mpegts_start_pid <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set the first PID for data packets (default 0x0100, max 0x0f00).
+</p></dd>
+<dt> &lsquo;<samp>-mpegts_m2ts_mode <var>number</var></samp>&rsquo;</dt>
+<dd><p>Enable m2ts mode if set to 1. Default value is -1 which disables m2ts mode.
+</p></dd>
+<dt> &lsquo;<samp>-muxrate <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set muxrate.
+</p></dd>
+<dt> &lsquo;<samp>-pes_payload_size <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set minimum PES packet payload in bytes.
+</p></dd>
+<dt> &lsquo;<samp>-mpegts_flags <var>flags</var></samp>&rsquo;</dt>
+<dd><p>Set flags (see below).
+</p></dd>
+<dt> &lsquo;<samp>-mpegts_copyts <var>number</var></samp>&rsquo;</dt>
+<dd><p>Preserve original timestamps, if value is set to 1. Default value is -1, which
+results in shifting timestamps so that they start from 0.
+</p></dd>
+<dt> &lsquo;<samp>-tables_version <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set PAT, PMT and SDT version (default 0, valid values are from 0 to 31, inclusively).
+This option allows updating stream structure so that standard consumer may
+detect the change. To do so, reopen output AVFormatContext (in case of API
+usage) or restart ffmpeg instance, cyclically changing tables_version value:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i source1.ts -codec copy -f mpegts -tables_version 0 udp://1.1.1.1:1111
+ffmpeg -i source2.ts -codec copy -f mpegts -tables_version 1 udp://1.1.1.1:1111
+...
+ffmpeg -i source3.ts -codec copy -f mpegts -tables_version 31 udp://1.1.1.1:1111
+ffmpeg -i source1.ts -codec copy -f mpegts -tables_version 0 udp://1.1.1.1:1111
+ffmpeg -i source2.ts -codec copy -f mpegts -tables_version 1 udp://1.1.1.1:1111
+...
+</pre></td></tr></table>
+</dd>
+</dl>
+
+<p>Option mpegts_flags may take a set of such flags:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>resend_headers</samp>&rsquo;</dt>
+<dd><p>Reemit PAT/PMT before writing the next packet.
+</p></dd>
+<dt> &lsquo;<samp>latm</samp>&rsquo;</dt>
+<dd><p>Use LATM packetization for AAC.
+</p></dd>
+</dl>
+
+<p>The recognized metadata settings in mpegts muxer are <code>service_provider</code>
+and <code>service_name</code>. If they are not set the default for
+<code>service_provider</code> is &quot;FFmpeg&quot; and the default for
+<code>service_name</code> is &quot;Service01&quot;.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i file.mpg -c copy \
+     -mpegts_original_network_id 0x1122 \
+     -mpegts_transport_stream_id 0x3344 \
+     -mpegts_service_id 0x5566 \
+     -mpegts_pmt_start_pid 0x1500 \
+     -mpegts_start_pid 0x150 \
+     -metadata service_provider=&quot;Some provider&quot; \
+     -metadata service_name=&quot;Some Channel&quot; \
+     -y out.ts
+</pre></td></tr></table>
+
+<a name="null-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-null-1">18.14 null</a></h2>
+
+<p>Null muxer.
+</p>
+<p>This muxer does not generate any output file, it is mainly useful for
+testing or benchmarking purposes.
+</p>
+<p>For example to benchmark decoding with <code>ffmpeg</code> you can use the
+command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -benchmark -i INPUT -f null out.null
+</pre></td></tr></table>
+
+<p>Note that the above command does not read or write the &lsquo;<tt>out.null</tt>&rsquo;
+file, but specifying the output file is required by the <code>ffmpeg</code>
+syntax.
+</p>
+<p>Alternatively you can write the command as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -benchmark -i INPUT -f null -
+</pre></td></tr></table>
+
+<a name="ogg"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-ogg">18.15 ogg</a></h2>
+
+<p>Ogg container muxer.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-page_duration <var>duration</var></samp>&rsquo;</dt>
+<dd><p>Preferred page duration, in microseconds. The muxer will attempt to create
+pages that are approximately <var>duration</var> microseconds long. This allows the
+user to compromise between seek granularity and container overhead. The default
+is 1 second. A value of 0 will fill all segments, making pages as large as
+possible. A value of 1 will effectively use 1 packet-per-page in most
+situations, giving a small seek granularity at the cost of additional container
+overhead.
+</p></dd>
+</dl>
+
+<a name="segment_002c-stream_005fsegment_002c-ssegment"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-segment_002c-stream_005fsegment_002c-ssegment">18.16 segment, stream_segment, ssegment</a></h2>
+
+<p>Basic stream segmenter.
+</p>
+<p>The segmenter muxer outputs streams to a number of separate files of nearly
+fixed duration. Output filename pattern can be set in a fashion similar to
+<a href="#image2">image2</a>.
+</p>
+<p><code>stream_segment</code> is a variant of the muxer used to write to
+streaming output formats, i.e. which do not require global headers,
+and is recommended for outputting e.g. to MPEG transport stream segments.
+<code>ssegment</code> is a shorter alias for <code>stream_segment</code>.
+</p>
+<p>Every segment starts with a keyframe of the selected reference stream,
+which is set through the &lsquo;<samp>reference_stream</samp>&rsquo; option.
+</p>
+<p>Note that if you want accurate splitting for a video file, you need to
+make the input key frames correspond to the exact splitting times
+expected by the segmenter, or the segment muxer will start the new
+segment with the key frame found next after the specified start
+time.
+</p>
+<p>The segment muxer works best with a single constant frame rate video.
+</p>
+<p>Optionally it can generate a list of the created segments, by setting
+the option <var>segment_list</var>. The list type is specified by the
+<var>segment_list_type</var> option. The entry filenames in the segment
+list are set by default to the basename of the corresponding segment
+files.
+</p>
+<p>The segment muxer supports the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>reference_stream <var>specifier</var></samp>&rsquo;</dt>
+<dd><p>Set the reference stream, as specified by the string <var>specifier</var>.
+If <var>specifier</var> is set to <code>auto</code>, the reference is choosen
+automatically. Otherwise it must be a stream specifier (see the &ldquo;Stream
+specifiers&rdquo; chapter in the ffmpeg manual) which specifies the
+reference stream. The default value is <code>auto</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_format <var>format</var></samp>&rsquo;</dt>
+<dd><p>Override the inner container format, by default it is guessed by the filename
+extension.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_list <var>name</var></samp>&rsquo;</dt>
+<dd><p>Generate also a listfile named <var>name</var>. If not specified no
+listfile is generated.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_list_flags <var>flags</var></samp>&rsquo;</dt>
+<dd><p>Set flags affecting the segment list generation.
+</p>
+<p>It currently supports the following flags:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>cache</samp>&rsquo;</dt>
+<dd><p>Allow caching (only affects M3U8 list files).
+</p>
+</dd>
+<dt> &lsquo;<samp>live</samp>&rsquo;</dt>
+<dd><p>Allow live-friendly file generation.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>segment_list_size <var>size</var></samp>&rsquo;</dt>
+<dd><p>Update the list file so that it contains at most the last <var>size</var>
+segments. If 0 the list file will contain all the segments. Default
+value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_list_entry_prefix <var>prefix</var></samp>&rsquo;</dt>
+<dd><p>Set <var>prefix</var> to prepend to the name of each entry filename. By
+default no prefix is applied.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_list_type <var>type</var></samp>&rsquo;</dt>
+<dd><p>Specify the format for the segment list file.
+</p>
+<p>The following values are recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>flat</samp>&rsquo;</dt>
+<dd><p>Generate a flat list for the created segments, one segment per line.
+</p>
+</dd>
+<dt> &lsquo;<samp>csv, ext</samp>&rsquo;</dt>
+<dd><p>Generate a list for the created segments, one segment per line,
+each line matching the format (comma-separated values):
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>segment_filename</var>,<var>segment_start_time</var>,<var>segment_end_time</var>
+</pre></td></tr></table>
+
+<p><var>segment_filename</var> is the name of the output file generated by the
+muxer according to the provided pattern. CSV escaping (according to
+RFC4180) is applied if required.
+</p>
+<p><var>segment_start_time</var> and <var>segment_end_time</var> specify
+the segment start and end time expressed in seconds.
+</p>
+<p>A list file with the suffix <code>&quot;.csv&quot;</code> or <code>&quot;.ext&quot;</code> will
+auto-select this format.
+</p>
+<p>&lsquo;<samp>ext</samp>&rsquo; is deprecated in favor or &lsquo;<samp>csv</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>ffconcat</samp>&rsquo;</dt>
+<dd><p>Generate an ffconcat file for the created segments. The resulting file
+can be read using the FFmpeg <a href="#concat">concat</a> demuxer.
+</p>
+<p>A list file with the suffix <code>&quot;.ffcat&quot;</code> or <code>&quot;.ffconcat&quot;</code> will
+auto-select this format.
+</p>
+</dd>
+<dt> &lsquo;<samp>m3u8</samp>&rsquo;</dt>
+<dd><p>Generate an extended M3U8 file, version 3, compliant with
+<a href="http://tools.ietf.org/id/draft-pantos-http-live-streaming">http://tools.ietf.org/id/draft-pantos-http-live-streaming</a>.
+</p>
+<p>A list file with the suffix <code>&quot;.m3u8&quot;</code> will auto-select this format.
+</p></dd>
+</dl>
+
+<p>If not specified the type is guessed from the list file name suffix.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_time <var>time</var></samp>&rsquo;</dt>
+<dd><p>Set segment duration to <var>time</var>, the value must be a duration
+specification. Default value is &quot;2&quot;. See also the
+&lsquo;<samp>segment_times</samp>&rsquo; option.
+</p>
+<p>Note that splitting may not be accurate, unless you force the
+reference stream key-frames at the given time. See the introductory
+notice and the examples below.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_time_delta <var>delta</var></samp>&rsquo;</dt>
+<dd><p>Specify the accuracy time when selecting the start time for a
+segment, expressed as a duration specification. Default value is &quot;0&quot;.
+</p>
+<p>When delta is specified a key-frame will start a new segment if its
+PTS satisfies the relation:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">PTS &gt;= start_time - time_delta
+</pre></td></tr></table>
+
+<p>This option is useful when splitting video content, which is always
+split at GOP boundaries, in case a key frame is found just before the
+specified split time.
+</p>
+<p>In particular may be used in combination with the &lsquo;<tt>ffmpeg</tt>&rsquo; option
+<var>force_key_frames</var>. The key frame times specified by
+<var>force_key_frames</var> may not be set accurately because of rounding
+issues, with the consequence that a key frame time may result set just
+before the specified time. For constant frame rate videos a value of
+1/2*<var>frame_rate</var> should address the worst case mismatch between
+the specified time and the time set by <var>force_key_frames</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_times <var>times</var></samp>&rsquo;</dt>
+<dd><p>Specify a list of split points. <var>times</var> contains a list of comma
+separated duration specifications, in increasing order. See also
+the &lsquo;<samp>segment_time</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_frames <var>frames</var></samp>&rsquo;</dt>
+<dd><p>Specify a list of split video frame numbers. <var>frames</var> contains a
+list of comma separated integer numbers, in increasing order.
+</p>
+<p>This option specifies to start a new segment whenever a reference
+stream key frame is found and the sequential number (starting from 0)
+of the frame is greater or equal to the next value in the list.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_wrap <var>limit</var></samp>&rsquo;</dt>
+<dd><p>Wrap around segment index once it reaches <var>limit</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_start_number <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set the sequence number of the first segment. Defaults to <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>reset_timestamps <var>1|0</var></samp>&rsquo;</dt>
+<dd><p>Reset timestamps at the begin of each segment, so that each segment
+will start with near-zero timestamps. It is meant to ease the playback
+of the generated segments. May not work with some combinations of
+muxers/codecs. It is set to <code>0</code> by default.
+</p>
+</dd>
+<dt> &lsquo;<samp>initial_offset <var>offset</var></samp>&rsquo;</dt>
+<dd><p>Specify timestamp offset to apply to the output packet timestamps. The
+argument must be a time duration specification, and defaults to 0.
+</p></dd>
+</dl>
+
+<a name="Examples-81"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-81">18.16.1 Examples</a></h3>
+
+<ul>
+<li>
+To remux the content of file &lsquo;<tt>in.mkv</tt>&rsquo; to a list of segments
+&lsquo;<tt>out-000.nut</tt>&rsquo;, &lsquo;<tt>out-001.nut</tt>&rsquo;, etc., and write the list of
+generated segments to &lsquo;<tt>out.list</tt>&rsquo;:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.mkv -codec copy -map 0 -f segment -segment_list out.list out%03d.nut
+</pre></td></tr></table>
+
+</li><li>
+As the example above, but segment the input file according to the split
+points specified by the <var>segment_times</var> option:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.mkv -codec copy -map 0 -f segment -segment_list out.csv -segment_times 1,2,3,5,8,13,21 out%03d.nut
+</pre></td></tr></table>
+
+</li><li>
+As the example above, but use the <code>ffmpeg</code> &lsquo;<samp>force_key_frames</samp>&rsquo;
+option to force key frames in the input at the specified location, together
+with the segment option &lsquo;<samp>segment_time_delta</samp>&rsquo; to account for
+possible roundings operated when setting key frame times.
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.mkv -force_key_frames 1,2,3,5,8,13,21 -codec:v mpeg4 -codec:a pcm_s16le -map 0 \
+-f segment -segment_list out.csv -segment_times 1,2,3,5,8,13,21 -segment_time_delta 0.05 out%03d.nut
+</pre></td></tr></table>
+<p>In order to force key frames on the input file, transcoding is
+required.
+</p>
+</li><li>
+Segment the input file by splitting the input file according to the
+frame numbers sequence specified with the &lsquo;<samp>segment_frames</samp>&rsquo; option:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.mkv -codec copy -map 0 -f segment -segment_list out.csv -segment_frames 100,200,300,500,800 out%03d.nut
+</pre></td></tr></table>
+
+</li><li>
+To convert the &lsquo;<tt>in.mkv</tt>&rsquo; to TS segments using the <code>libx264</code>
+and <code>libfaac</code> encoders:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.mkv -map 0 -codec:v libx264 -codec:a libfaac -f ssegment -segment_list out.list out%03d.ts
+</pre></td></tr></table>
+
+</li><li>
+Segment the input file, and create an M3U8 live playlist (can be used
+as live HLS source):
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i in.mkv -codec copy -map 0 -f segment -segment_list playlist.m3u8 \
+-segment_list_flags +live -segment_time 10 out%03d.mkv
+</pre></td></tr></table>
+</li></ul>
+
+<a name="tee"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-tee">18.17 tee</a></h2>
+
+<p>The tee muxer can be used to write the same data to several files or any
+other kind of muxer. It can be used, for example, to both stream a video to
+the network and save it to disk at the same time.
+</p>
+<p>It is different from specifying several outputs to the <code>ffmpeg</code>
+command-line tool because the audio and video data will be encoded only once
+with the tee muxer; encoding can be a very expensive process. It is not
+useful when using the libavformat API directly because it is then possible
+to feed the same packets to several muxers directly.
+</p>
+<p>The slave outputs are specified in the file name given to the muxer,
+separated by &rsquo;|&rsquo;. If any of the slave name contains the &rsquo;|&rsquo; separator,
+leading or trailing spaces or any special character, it must be
+escaped (see the &ldquo;Quoting and escaping&rdquo; section in the ffmpeg-utils
+manual).
+</p>
+<p>Muxer options can be specified for each slave by prepending them as a list of
+<var>key</var>=<var>value</var> pairs separated by &rsquo;:&rsquo;, between square brackets. If
+the options values contain a special character or the &rsquo;:&rsquo; separator, they
+must be escaped; note that this is a second level escaping.
+</p>
+<p>The following special options are also recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>f</samp>&rsquo;</dt>
+<dd><p>Specify the format name. Useful if it cannot be guessed from the
+output name suffix.
+</p>
+</dd>
+<dt> &lsquo;<samp>bsfs[/<var>spec</var>]</samp>&rsquo;</dt>
+<dd><p>Specify a list of bitstream filters to apply to the specified
+output. It is possible to specify to which streams a given bitstream
+filter applies, by appending a stream specifier to the option
+separated by <code>/</code>. If the stream specifier is not specified, the
+bistream filters will be applied to all streams in the output.
+</p>
+<p>Several bitstream filters can be specified, separated by &quot;,&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>select</samp>&rsquo;</dt>
+<dd><p>Select the streams that should be mapped to the slave output,
+specified by a stream specifier. If not specified, this defaults to
+all the input streams.
+</p></dd>
+</dl>
+
+<p>Some examples follow.
+</p><ul>
+<li>
+Encode something and both archive it in a WebM file and stream it
+as MPEG-TS over UDP (the streams need to be explicitly mapped):
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i ... -c:v libx264 -c:a mp2 -f tee -map 0:v -map 0:a
+  &quot;archive-20121107.mkv|[f=mpegts]udp://10.0.1.255:1234/&quot;
+</pre></td></tr></table>
+
+</li><li>
+Use <code>ffmpeg</code> to encode the input, and send the output
+to three different destinations. The <code>dump_extra</code> bitstream
+filter is used to add extradata information to all the output video
+keyframes packets, as requested by the MPEG-TS format. The select
+option is applied to &lsquo;<tt>out.aac</tt>&rsquo; in order to make it contain only
+audio packets.
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i ... -map 0 -flags +global_header -c:v libx264 -c:a aac -strict experimental
+       -f tee &quot;[bsfs/v=dump_extra]out.ts|[movflags=+faststart]out.mp4|[select=a]out.aac&quot;
+</pre></td></tr></table>
+</li></ul>
+
+<p>Note: some codecs may need different options depending on the output format;
+the auto-detection of this can not work with the tee muxer. The main example
+is the &lsquo;<samp>global_header</samp>&rsquo; flag.
+</p>
+<a name="Metadata"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Metadata">19. Metadata</a></h1>
+
+<p>FFmpeg is able to dump metadata from media files into a simple UTF-8-encoded
+INI-like text file and then load it back using the metadata muxer/demuxer.
+</p>
+<p>The file format is as follows:
+</p><ol>
+<li>
+A file consists of a header and a number of metadata tags divided into sections,
+each on its own line.
+
+</li><li>
+The header is a &rsquo;;FFMETADATA&rsquo; string, followed by a version number (now 1).
+
+</li><li>
+Metadata tags are of the form &rsquo;key=value&rsquo;
+
+</li><li>
+Immediately after header follows global metadata
+
+</li><li>
+After global metadata there may be sections with per-stream/per-chapter
+metadata.
+
+</li><li>
+A section starts with the section name in uppercase (i.e. STREAM or CHAPTER) in
+brackets (&rsquo;[&rsquo;, &rsquo;]&rsquo;) and ends with next section or end of file.
+
+</li><li>
+At the beginning of a chapter section there may be an optional timebase to be
+used for start/end values. It must be in form &rsquo;TIMEBASE=num/den&rsquo;, where num and
+den are integers. If the timebase is missing then start/end times are assumed to
+be in milliseconds.
+Next a chapter section must contain chapter start and end times in form
+&rsquo;START=num&rsquo;, &rsquo;END=num&rsquo;, where num is a positive integer.
+
+</li><li>
+Empty lines and lines starting with &rsquo;;&rsquo; or &rsquo;#&rsquo; are ignored.
+
+</li><li>
+Metadata keys or values containing special characters (&rsquo;=&rsquo;, &rsquo;;&rsquo;, &rsquo;#&rsquo;, &rsquo;\&rsquo; and a
+newline) must be escaped with a backslash &rsquo;\&rsquo;.
+
+</li><li>
+Note that whitespace in metadata (e.g. foo = bar) is considered to be a part of
+the tag (in the example above key is &rsquo;foo &rsquo;, value is &rsquo; bar&rsquo;).
+</li></ol>
+
+<p>A ffmetadata file might look like this:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">;FFMETADATA1
+title=bike\\shed
+;this is a comment
+artist=FFmpeg troll team
+
+[CHAPTER]
+TIMEBASE=1/1000
+START=0
+#chapter ends at 0:01:00
+END=60000
+title=chapter \#1
+[STREAM]
+title=multi\
+line
+</pre></td></tr></table>
+
+<p>By using the ffmetadata muxer and demuxer it is possible to extract
+metadata from an input file to an ffmetadata file, and then transcode
+the file into an output file with the edited ffmetadata file.
+</p>
+<p>Extracting an ffmetadata file with &lsquo;<tt>ffmpeg</tt>&rsquo; goes as follows:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f ffmetadata FFMETADATAFILE
+</pre></td></tr></table>
+
+<p>Reinserting edited metadata information from the FFMETADATAFILE file can
+be done as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -i FFMETADATAFILE -map_metadata 1 -codec copy OUTPUT
+</pre></td></tr></table>
+
+<a name="Protocols"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Protocols">20. Protocols</a></h1>
+
+<p>Protocols are configured elements in FFmpeg that enable access to
+resources that require specific protocols.
+</p>
+<p>When you configure your FFmpeg build, all the supported protocols are
+enabled by default. You can list all available ones using the
+configure option &quot;&ndash;list-protocols&quot;.
+</p>
+<p>You can disable all the protocols using the configure option
+&quot;&ndash;disable-protocols&quot;, and selectively enable a protocol using the
+option &quot;&ndash;enable-protocol=<var>PROTOCOL</var>&quot;, or you can disable a
+particular protocol using the option
+&quot;&ndash;disable-protocol=<var>PROTOCOL</var>&quot;.
+</p>
+<p>The option &quot;-protocols&quot; of the ff* tools will display the list of
+supported protocols.
+</p>
+<p>A description of the currently available protocols follows.
+</p>
+<a name="bluray"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-bluray">20.1 bluray</a></h2>
+
+<p>Read BluRay playlist.
+</p>
+<p>The accepted options are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>angle</samp>&rsquo;</dt>
+<dd><p>BluRay angle
+</p>
+</dd>
+<dt> &lsquo;<samp>chapter</samp>&rsquo;</dt>
+<dd><p>Start chapter (1...N)
+</p>
+</dd>
+<dt> &lsquo;<samp>playlist</samp>&rsquo;</dt>
+<dd><p>Playlist to read (BDMV/PLAYLIST/?????.mpls)
+</p>
+</dd>
+</dl>
+
+<p>Examples:
+</p>
+<p>Read longest playlist from BluRay mounted to /mnt/bluray:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">bluray:/mnt/bluray
+</pre></td></tr></table>
+
+<p>Read angle 2 of playlist 4 from BluRay mounted to /mnt/bluray, start from chapter 2:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">-playlist 4 -angle 2 -chapter 2 bluray:/mnt/bluray
+</pre></td></tr></table>
+
+<a name="cache"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-cache">20.2 cache</a></h2>
+
+<p>Caching wrapper for input stream.
+</p>
+<p>Cache the input stream to temporary file. It brings seeking capability to live streams.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">cache:<var>URL</var>
+</pre></td></tr></table>
+
+<a name="concat-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-concat-1">20.3 concat</a></h2>
+
+<p>Physical concatenation protocol.
+</p>
+<p>Allow to read and seek from many resource in sequence as if they were
+a unique resource.
+</p>
+<p>A URL accepted by this protocol has the syntax:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">concat:<var>URL1</var>|<var>URL2</var>|...|<var>URLN</var>
+</pre></td></tr></table>
+
+<p>where <var>URL1</var>, <var>URL2</var>, ..., <var>URLN</var> are the urls of the
+resource to be concatenated, each one possibly specifying a distinct
+protocol.
+</p>
+<p>For example to read a sequence of files &lsquo;<tt>split1.mpeg</tt>&rsquo;,
+&lsquo;<tt>split2.mpeg</tt>&rsquo;, &lsquo;<tt>split3.mpeg</tt>&rsquo; with <code>ffplay</code> use the
+command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay concat:split1.mpeg\|split2.mpeg\|split3.mpeg
+</pre></td></tr></table>
+
+<p>Note that you may need to escape the character &quot;|&quot; which is special for
+many shells.
+</p>
+<a name="crypto"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-crypto">20.4 crypto</a></h2>
+
+<p>AES-encrypted stream reading protocol.
+</p>
+<p>The accepted options are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>key</samp>&rsquo;</dt>
+<dd><p>Set the AES decryption key binary block from given hexadecimal representation.
+</p>
+</dd>
+<dt> &lsquo;<samp>iv</samp>&rsquo;</dt>
+<dd><p>Set the AES decryption initialization vector binary block from given hexadecimal representation.
+</p></dd>
+</dl>
+
+<p>Accepted URL formats:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">crypto:<var>URL</var>
+crypto+<var>URL</var>
+</pre></td></tr></table>
+
+<a name="data"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-data">20.5 data</a></h2>
+
+<p>Data in-line in the URI. See <a href="http://en.wikipedia.org/wiki/Data_URI_scheme">http://en.wikipedia.org/wiki/Data_URI_scheme</a>.
+</p>
+<p>For example, to convert a GIF file given inline with <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i &quot;data:image/gif;base64,R0lGODdhCAAIAMIEAAAAAAAA//8AAP//AP///////////////ywAAAAACAAIAAADF0gEDLojDgdGiJdJqUX02iB4E8Q9jUMkADs=&quot; smiley.png
+</pre></td></tr></table>
+
+<a name="file"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-file">20.6 file</a></h2>
+
+<p>File access protocol.
+</p>
+<p>Allow to read from or read to a file.
+</p>
+<p>For example to read from a file &lsquo;<tt>input.mpeg</tt>&rsquo; with <code>ffmpeg</code>
+use the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i file:input.mpeg output.mpeg
+</pre></td></tr></table>
+
+<p>The ff* tools default to the file protocol, that is a resource
+specified with the name &quot;FILE.mpeg&quot; is interpreted as the URL
+&quot;file:FILE.mpeg&quot;.
+</p>
+<p>This protocol accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>truncate</samp>&rsquo;</dt>
+<dd><p>Truncate existing files on write, if set to 1. A value of 0 prevents
+truncating. Default value is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>blocksize</samp>&rsquo;</dt>
+<dd><p>Set I/O operation maximum block size, in bytes. Default value is
+<code>INT_MAX</code>, which results in not limiting the requested block size.
+Setting this value reasonably low improves user termination request reaction
+time, which is valuable for files on slow medium.
+</p></dd>
+</dl>
+
+<a name="ftp"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-ftp">20.7 ftp</a></h2>
+
+<p>FTP (File Transfer Protocol).
+</p>
+<p>Allow to read from or write to remote resources using FTP protocol.
+</p>
+<p>Following syntax is required.
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ftp://[user[:password]@]server[:port]/path/to/remote/resource.mpeg
+</pre></td></tr></table>
+
+<p>This protocol accepts the following options.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>timeout</samp>&rsquo;</dt>
+<dd><p>Set timeout of socket I/O operations used by the underlying low level
+operation. By default it is set to -1, which means that the timeout is
+not specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>ftp-anonymous-password</samp>&rsquo;</dt>
+<dd><p>Password used when login as anonymous user. Typically an e-mail address
+should be used.
+</p>
+</dd>
+<dt> &lsquo;<samp>ftp-write-seekable</samp>&rsquo;</dt>
+<dd><p>Control seekability of connection during encoding. If set to 1 the
+resource is supposed to be seekable, if set to 0 it is assumed not
+to be seekable. Default value is 0.
+</p></dd>
+</dl>
+
+<p>NOTE: Protocol can be used as output, but it is recommended to not do
+it, unless special care is taken (tests, customized server configuration
+etc.). Different FTP servers behave in different way during seek
+operation. ff* tools may produce incomplete content due to server limitations.
+</p>
+<a name="gopher"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-gopher">20.8 gopher</a></h2>
+
+<p>Gopher protocol.
+</p>
+<a name="hls-2"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-hls-2">20.9 hls</a></h2>
+
+<p>Read Apple HTTP Live Streaming compliant segmented stream as
+a uniform one. The M3U8 playlists describing the segments can be
+remote HTTP resources or local files, accessed using the standard
+file protocol.
+The nested protocol is declared by specifying
+&quot;+<var>proto</var>&quot; after the hls URI scheme name, where <var>proto</var>
+is either &quot;file&quot; or &quot;http&quot;.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">hls+http://host/path/to/remote/resource.m3u8
+hls+file://path/to/local/resource.m3u8
+</pre></td></tr></table>
+
+<p>Using this protocol is discouraged - the hls demuxer should work
+just as well (if not, please report the issues) and is more complete.
+To use the hls demuxer instead, simply use the direct URLs to the
+m3u8 files.
+</p>
+<a name="http"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-http">20.10 http</a></h2>
+
+<p>HTTP (Hyper Text Transfer Protocol).
+</p>
+<p>This protocol accepts the following options.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>seekable</samp>&rsquo;</dt>
+<dd><p>Control seekability of connection. If set to 1 the resource is
+supposed to be seekable, if set to 0 it is assumed not to be seekable,
+if set to -1 it will try to autodetect if it is seekable. Default
+value is -1.
+</p>
+</dd>
+<dt> &lsquo;<samp>chunked_post</samp>&rsquo;</dt>
+<dd><p>If set to 1 use chunked transfer-encoding for posts, default is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>headers</samp>&rsquo;</dt>
+<dd><p>Set custom HTTP headers, can override built in default headers. The
+value must be a string encoding the headers.
+</p>
+</dd>
+<dt> &lsquo;<samp>content_type</samp>&rsquo;</dt>
+<dd><p>Force a content type.
+</p>
+</dd>
+<dt> &lsquo;<samp>user-agent</samp>&rsquo;</dt>
+<dd><p>Override User-Agent header. If not specified the protocol will use a
+string describing the libavformat build.
+</p>
+</dd>
+<dt> &lsquo;<samp>multiple_requests</samp>&rsquo;</dt>
+<dd><p>Use persistent connections if set to 1. By default it is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>post_data</samp>&rsquo;</dt>
+<dd><p>Set custom HTTP post data.
+</p>
+</dd>
+<dt> &lsquo;<samp>timeout</samp>&rsquo;</dt>
+<dd><p>Set timeout of socket I/O operations used by the underlying low level
+operation. By default it is set to -1, which means that the timeout is
+not specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>mime_type</samp>&rsquo;</dt>
+<dd><p>Set MIME type.
+</p>
+</dd>
+<dt> &lsquo;<samp>icy</samp>&rsquo;</dt>
+<dd><p>If set to 1 request ICY (SHOUTcast) metadata from the server. If the server
+supports this, the metadata has to be retrieved by the application by reading
+the &lsquo;<samp>icy_metadata_headers</samp>&rsquo; and &lsquo;<samp>icy_metadata_packet</samp>&rsquo; options.
+The default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>icy_metadata_headers</samp>&rsquo;</dt>
+<dd><p>If the server supports ICY metadata, this contains the ICY specific HTTP reply
+headers, separated with newline characters.
+</p>
+</dd>
+<dt> &lsquo;<samp>icy_metadata_packet</samp>&rsquo;</dt>
+<dd><p>If the server supports ICY metadata, and &lsquo;<samp>icy</samp>&rsquo; was set to 1, this
+contains the last non-empty metadata packet sent by the server.
+</p>
+</dd>
+<dt> &lsquo;<samp>cookies</samp>&rsquo;</dt>
+<dd><p>Set the cookies to be sent in future requests. The format of each cookie is the
+same as the value of a Set-Cookie HTTP response field. Multiple cookies can be
+delimited by a newline character.
+</p></dd>
+</dl>
+
+<a name="HTTP-Cookies"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-HTTP-Cookies">20.10.1 HTTP Cookies</a></h3>
+
+<p>Some HTTP requests will be denied unless cookie values are passed in with the
+request. The &lsquo;<samp>cookies</samp>&rsquo; option allows these cookies to be specified. At
+the very least, each cookie must specify a value along with a path and domain.
+HTTP requests that match both the domain and path will automatically include the
+cookie value in the HTTP Cookie header field. Multiple cookies can be delimited
+by a newline.
+</p>
+<p>The required syntax to play a stream specifying a cookie is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay -cookies &quot;nlqptid=nltid=tsn; path=/; domain=somedomain.com;&quot; http://somedomain.com/somestream.m3u8
+</pre></td></tr></table>
+
+<a name="mmst"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-mmst">20.11 mmst</a></h2>
+
+<p>MMS (Microsoft Media Server) protocol over TCP.
+</p>
+<a name="mmsh"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-mmsh">20.12 mmsh</a></h2>
+
+<p>MMS (Microsoft Media Server) protocol over HTTP.
+</p>
+<p>The required syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">mmsh://<var>server</var>[:<var>port</var>][/<var>app</var>][/<var>playpath</var>]
+</pre></td></tr></table>
+
+<a name="md5-2"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-md5-2">20.13 md5</a></h2>
+
+<p>MD5 output protocol.
+</p>
+<p>Computes the MD5 hash of the data to be written, and on close writes
+this to the designated output or stdout if none is specified. It can
+be used to test muxers without writing an actual file.
+</p>
+<p>Some examples follow.
+</p><table><tr><td>&nbsp;</td><td><pre class="example"># Write the MD5 hash of the encoded AVI file to the file output.avi.md5.
+ffmpeg -i input.flv -f avi -y md5:output.avi.md5
+
+# Write the MD5 hash of the encoded AVI file to stdout.
+ffmpeg -i input.flv -f avi -y md5:
+</pre></td></tr></table>
+
+<p>Note that some formats (typically MOV) require the output protocol to
+be seekable, so they will fail with the MD5 output protocol.
+</p>
+<a name="pipe"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-pipe">20.14 pipe</a></h2>
+
+<p>UNIX pipe access protocol.
+</p>
+<p>Allow to read and write from UNIX pipes.
+</p>
+<p>The accepted syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pipe:[<var>number</var>]
+</pre></td></tr></table>
+
+<p><var>number</var> is the number corresponding to the file descriptor of the
+pipe (e.g. 0 for stdin, 1 for stdout, 2 for stderr).  If <var>number</var>
+is not specified, by default the stdout file descriptor will be used
+for writing, stdin for reading.
+</p>
+<p>For example to read from stdin with <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">cat test.wav | ffmpeg -i pipe:0
+# ...this is the same as...
+cat test.wav | ffmpeg -i pipe:
+</pre></td></tr></table>
+
+<p>For writing to stdout with <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i test.wav -f avi pipe:1 | cat &gt; test.avi
+# ...this is the same as...
+ffmpeg -i test.wav -f avi pipe: | cat &gt; test.avi
+</pre></td></tr></table>
+
+<p>This protocol accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>blocksize</samp>&rsquo;</dt>
+<dd><p>Set I/O operation maximum block size, in bytes. Default value is
+<code>INT_MAX</code>, which results in not limiting the requested block size.
+Setting this value reasonably low improves user termination request reaction
+time, which is valuable if data transmission is slow.
+</p></dd>
+</dl>
+
+<p>Note that some formats (typically MOV), require the output protocol to
+be seekable, so they will fail with the pipe output protocol.
+</p>
+<a name="rtmp"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-rtmp">20.15 rtmp</a></h2>
+
+<p>Real-Time Messaging Protocol.
+</p>
+<p>The Real-Time Messaging Protocol (RTMP) is used for streaming multimedia
+content across a TCP/IP network.
+</p>
+<p>The required syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">rtmp://[<var>username</var>:<var>password</var>@]<var>server</var>[:<var>port</var>][/<var>app</var>][/<var>instance</var>][/<var>playpath</var>]
+</pre></td></tr></table>
+
+<p>The accepted parameters are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>username</samp>&rsquo;</dt>
+<dd><p>An optional username (mostly for publishing).
+</p>
+</dd>
+<dt> &lsquo;<samp>password</samp>&rsquo;</dt>
+<dd><p>An optional password (mostly for publishing).
+</p>
+</dd>
+<dt> &lsquo;<samp>server</samp>&rsquo;</dt>
+<dd><p>The address of the RTMP server.
+</p>
+</dd>
+<dt> &lsquo;<samp>port</samp>&rsquo;</dt>
+<dd><p>The number of the TCP port to use (by default is 1935).
+</p>
+</dd>
+<dt> &lsquo;<samp>app</samp>&rsquo;</dt>
+<dd><p>It is the name of the application to access. It usually corresponds to
+the path where the application is installed on the RTMP server
+(e.g. &lsquo;<tt>/ondemand/</tt>&rsquo;, &lsquo;<tt>/flash/live/</tt>&rsquo;, etc.). You can override
+the value parsed from the URI through the <code>rtmp_app</code> option, too.
+</p>
+</dd>
+<dt> &lsquo;<samp>playpath</samp>&rsquo;</dt>
+<dd><p>It is the path or name of the resource to play with reference to the
+application specified in <var>app</var>, may be prefixed by &quot;mp4:&quot;. You
+can override the value parsed from the URI through the <code>rtmp_playpath</code>
+option, too.
+</p>
+</dd>
+<dt> &lsquo;<samp>listen</samp>&rsquo;</dt>
+<dd><p>Act as a server, listening for an incoming connection.
+</p>
+</dd>
+<dt> &lsquo;<samp>timeout</samp>&rsquo;</dt>
+<dd><p>Maximum time to wait for the incoming connection. Implies listen.
+</p></dd>
+</dl>
+
+<p>Additionally, the following parameters can be set via command line options
+(or in code via <code>AVOption</code>s):
+</p><dl compact="compact">
+<dt> &lsquo;<samp>rtmp_app</samp>&rsquo;</dt>
+<dd><p>Name of application to connect on the RTMP server. This option
+overrides the parameter specified in the URI.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_buffer</samp>&rsquo;</dt>
+<dd><p>Set the client buffer time in milliseconds. The default is 3000.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_conn</samp>&rsquo;</dt>
+<dd><p>Extra arbitrary AMF connection parameters, parsed from a string,
+e.g. like <code>B:1 S:authMe O:1 NN:code:1.23 NS:flag:ok O:0</code>.
+Each value is prefixed by a single character denoting the type,
+B for Boolean, N for number, S for string, O for object, or Z for null,
+followed by a colon. For Booleans the data must be either 0 or 1 for
+FALSE or TRUE, respectively.  Likewise for Objects the data must be 0 or
+1 to end or begin an object, respectively. Data items in subobjects may
+be named, by prefixing the type with &rsquo;N&rsquo; and specifying the name before
+the value (i.e. <code>NB:myFlag:1</code>). This option may be used multiple
+times to construct arbitrary AMF sequences.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_flashver</samp>&rsquo;</dt>
+<dd><p>Version of the Flash plugin used to run the SWF player. The default
+is LNX 9,0,124,2. (When publishing, the default is FMLE/3.0 (compatible;
+&lt;libavformat version&gt;).)
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_flush_interval</samp>&rsquo;</dt>
+<dd><p>Number of packets flushed in the same request (RTMPT only). The default
+is 10.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_live</samp>&rsquo;</dt>
+<dd><p>Specify that the media is a live stream. No resuming or seeking in
+live streams is possible. The default value is <code>any</code>, which means the
+subscriber first tries to play the live stream specified in the
+playpath. If a live stream of that name is not found, it plays the
+recorded stream. The other possible values are <code>live</code> and
+<code>recorded</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_pageurl</samp>&rsquo;</dt>
+<dd><p>URL of the web page in which the media was embedded. By default no
+value will be sent.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_playpath</samp>&rsquo;</dt>
+<dd><p>Stream identifier to play or to publish. This option overrides the
+parameter specified in the URI.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_subscribe</samp>&rsquo;</dt>
+<dd><p>Name of live stream to subscribe to. By default no value will be sent.
+It is only sent if the option is specified or if rtmp_live
+is set to live.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_swfhash</samp>&rsquo;</dt>
+<dd><p>SHA256 hash of the decompressed SWF file (32 bytes).
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_swfsize</samp>&rsquo;</dt>
+<dd><p>Size of the decompressed SWF file, required for SWFVerification.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_swfurl</samp>&rsquo;</dt>
+<dd><p>URL of the SWF player for the media. By default no value will be sent.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_swfverify</samp>&rsquo;</dt>
+<dd><p>URL to player swf file, compute hash/size automatically.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_tcurl</samp>&rsquo;</dt>
+<dd><p>URL of the target stream. Defaults to proto://host[:port]/app.
+</p>
+</dd>
+</dl>
+
+<p>For example to read with <code>ffplay</code> a multimedia resource named
+&quot;sample&quot; from the application &quot;vod&quot; from an RTMP server &quot;myserver&quot;:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay rtmp://myserver/vod/sample
+</pre></td></tr></table>
+
+<p>To publish to a password protected server, passing the playpath and
+app names separately:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i &lt;input&gt; -f flv -rtmp_playpath some/long/path -rtmp_app long/app/name rtmp://username:password@myserver/
+</pre></td></tr></table>
+
+<a name="rtmpe"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-rtmpe">20.16 rtmpe</a></h2>
+
+<p>Encrypted Real-Time Messaging Protocol.
+</p>
+<p>The Encrypted Real-Time Messaging Protocol (RTMPE) is used for
+streaming multimedia content within standard cryptographic primitives,
+consisting of Diffie-Hellman key exchange and HMACSHA256, generating
+a pair of RC4 keys.
+</p>
+<a name="rtmps"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-rtmps">20.17 rtmps</a></h2>
+
+<p>Real-Time Messaging Protocol over a secure SSL connection.
+</p>
+<p>The Real-Time Messaging Protocol (RTMPS) is used for streaming
+multimedia content across an encrypted connection.
+</p>
+<a name="rtmpt"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-rtmpt">20.18 rtmpt</a></h2>
+
+<p>Real-Time Messaging Protocol tunneled through HTTP.
+</p>
+<p>The Real-Time Messaging Protocol tunneled through HTTP (RTMPT) is used
+for streaming multimedia content within HTTP requests to traverse
+firewalls.
+</p>
+<a name="rtmpte"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-rtmpte">20.19 rtmpte</a></h2>
+
+<p>Encrypted Real-Time Messaging Protocol tunneled through HTTP.
+</p>
+<p>The Encrypted Real-Time Messaging Protocol tunneled through HTTP (RTMPTE)
+is used for streaming multimedia content within HTTP requests to traverse
+firewalls.
+</p>
+<a name="rtmpts"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-rtmpts">20.20 rtmpts</a></h2>
+
+<p>Real-Time Messaging Protocol tunneled through HTTPS.
+</p>
+<p>The Real-Time Messaging Protocol tunneled through HTTPS (RTMPTS) is used
+for streaming multimedia content within HTTPS requests to traverse
+firewalls.
+</p>
+<a name="libssh"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-libssh">20.21 libssh</a></h2>
+
+<p>Secure File Transfer Protocol via libssh
+</p>
+<p>Allow to read from or write to remote resources using SFTP protocol.
+</p>
+<p>Following syntax is required.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">sftp://[user[:password]@]server[:port]/path/to/remote/resource.mpeg
+</pre></td></tr></table>
+
+<p>This protocol accepts the following options.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>timeout</samp>&rsquo;</dt>
+<dd><p>Set timeout of socket I/O operations used by the underlying low level
+operation. By default it is set to -1, which means that the timeout
+is not specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>truncate</samp>&rsquo;</dt>
+<dd><p>Truncate existing files on write, if set to 1. A value of 0 prevents
+truncating. Default value is 1.
+</p>
+</dd>
+</dl>
+
+<p>Example: Play a file stored on remote server.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay sftp://user:password@server_address:22/home/user/resource.mpeg
+</pre></td></tr></table>
+
+<a name="librtmp-rtmp_002c-rtmpe_002c-rtmps_002c-rtmpt_002c-rtmpte"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-librtmp-rtmp_002c-rtmpe_002c-rtmps_002c-rtmpt_002c-rtmpte">20.22 librtmp rtmp, rtmpe, rtmps, rtmpt, rtmpte</a></h2>
+
+<p>Real-Time Messaging Protocol and its variants supported through
+librtmp.
+</p>
+<p>Requires the presence of the librtmp headers and library during
+configuration. You need to explicitly configure the build with
+&quot;&ndash;enable-librtmp&quot;. If enabled this will replace the native RTMP
+protocol.
+</p>
+<p>This protocol provides most client functions and a few server
+functions needed to support RTMP, RTMP tunneled in HTTP (RTMPT),
+encrypted RTMP (RTMPE), RTMP over SSL/TLS (RTMPS) and tunneled
+variants of these encrypted types (RTMPTE, RTMPTS).
+</p>
+<p>The required syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>rtmp_proto</var>://<var>server</var>[:<var>port</var>][/<var>app</var>][/<var>playpath</var>] <var>options</var>
+</pre></td></tr></table>
+
+<p>where <var>rtmp_proto</var> is one of the strings &quot;rtmp&quot;, &quot;rtmpt&quot;, &quot;rtmpe&quot;,
+&quot;rtmps&quot;, &quot;rtmpte&quot;, &quot;rtmpts&quot; corresponding to each RTMP variant, and
+<var>server</var>, <var>port</var>, <var>app</var> and <var>playpath</var> have the same
+meaning as specified for the RTMP native protocol.
+<var>options</var> contains a list of space-separated options of the form
+<var>key</var>=<var>val</var>.
+</p>
+<p>See the librtmp manual page (man 3 librtmp) for more information.
+</p>
+<p>For example, to stream a file in real-time to an RTMP server using
+<code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i myfile -f flv rtmp://myserver/live/mystream
+</pre></td></tr></table>
+
+<p>To play the same stream using <code>ffplay</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay &quot;rtmp://myserver/live/mystream live=1&quot;
+</pre></td></tr></table>
+
+<a name="rtp"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-rtp">20.23 rtp</a></h2>
+
+<p>Real-time Transport Protocol.
+</p>
+<p>The required syntax for an RTP URL is:
+rtp://<var>hostname</var>[:<var>port</var>][?<var>option</var>=<var>val</var>...]
+</p>
+<p><var>port</var> specifies the RTP port to use.
+</p>
+<p>The following URL options are supported:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>ttl=<var>n</var></samp>&rsquo;</dt>
+<dd><p>Set the TTL (Time-To-Live) value (for multicast only).
+</p>
+</dd>
+<dt> &lsquo;<samp>rtcpport=<var>n</var></samp>&rsquo;</dt>
+<dd><p>Set the remote RTCP port to <var>n</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>localrtpport=<var>n</var></samp>&rsquo;</dt>
+<dd><p>Set the local RTP port to <var>n</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>localrtcpport=<var>n</var>'</samp>&rsquo;</dt>
+<dd><p>Set the local RTCP port to <var>n</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>pkt_size=<var>n</var></samp>&rsquo;</dt>
+<dd><p>Set max packet size (in bytes) to <var>n</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>connect=0|1</samp>&rsquo;</dt>
+<dd><p>Do a <code>connect()</code> on the UDP socket (if set to 1) or not (if set
+to 0).
+</p>
+</dd>
+<dt> &lsquo;<samp>sources=<var>ip</var>[,<var>ip</var>]</samp>&rsquo;</dt>
+<dd><p>List allowed source IP addresses.
+</p>
+</dd>
+<dt> &lsquo;<samp>block=<var>ip</var>[,<var>ip</var>]</samp>&rsquo;</dt>
+<dd><p>List disallowed (blocked) source IP addresses.
+</p>
+</dd>
+<dt> &lsquo;<samp>write_to_source=0|1</samp>&rsquo;</dt>
+<dd><p>Send packets to the source address of the latest received packet (if
+set to 1) or to a default remote address (if set to 0).
+</p>
+</dd>
+<dt> &lsquo;<samp>localport=<var>n</var></samp>&rsquo;</dt>
+<dd><p>Set the local RTP port to <var>n</var>.
+</p>
+<p>This is a deprecated option. Instead, &lsquo;<samp>localrtpport</samp>&rsquo; should be
+used.
+</p>
+</dd>
+</dl>
+
+<p>Important notes:
+</p>
+<ol>
+<li>
+If &lsquo;<samp>rtcpport</samp>&rsquo; is not set the RTCP port will be set to the RTP
+port value plus 1.
+
+</li><li>
+If &lsquo;<samp>localrtpport</samp>&rsquo; (the local RTP port) is not set any available
+port will be used for the local RTP and RTCP ports.
+
+</li><li>
+If &lsquo;<samp>localrtcpport</samp>&rsquo; (the local RTCP port) is not set it will be
+set to the the local RTP port value plus 1.
+</li></ol>
+
+<a name="rtsp"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-rtsp">20.24 rtsp</a></h2>
+
+<p>RTSP is not technically a protocol handler in libavformat, it is a demuxer
+and muxer. The demuxer supports both normal RTSP (with data transferred
+over RTP; this is used by e.g. Apple and Microsoft) and Real-RTSP (with
+data transferred over RDT).
+</p>
+<p>The muxer can be used to send a stream using RTSP ANNOUNCE to a server
+supporting it (currently Darwin Streaming Server and Mischa Spiegelmock&rsquo;s
+<a href="http://github.com/revmischa/rtsp-server">RTSP server</a>).
+</p>
+<p>The required syntax for a RTSP url is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">rtsp://<var>hostname</var>[:<var>port</var>]/<var>path</var>
+</pre></td></tr></table>
+
+<p>The following options (set on the <code>ffmpeg</code>/<code>ffplay</code> command
+line, or set in code via <code>AVOption</code>s or in <code>avformat_open_input</code>),
+are supported:
+</p>
+<p>Flags for <code>rtsp_transport</code>:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>udp</samp>&rsquo;</dt>
+<dd><p>Use UDP as lower transport protocol.
+</p>
+</dd>
+<dt> &lsquo;<samp>tcp</samp>&rsquo;</dt>
+<dd><p>Use TCP (interleaving within the RTSP control channel) as lower
+transport protocol.
+</p>
+</dd>
+<dt> &lsquo;<samp>udp_multicast</samp>&rsquo;</dt>
+<dd><p>Use UDP multicast as lower transport protocol.
+</p>
+</dd>
+<dt> &lsquo;<samp>http</samp>&rsquo;</dt>
+<dd><p>Use HTTP tunneling as lower transport protocol, which is useful for
+passing proxies.
+</p></dd>
+</dl>
+
+<p>Multiple lower transport protocols may be specified, in that case they are
+tried one at a time (if the setup of one fails, the next one is tried).
+For the muxer, only the <code>tcp</code> and <code>udp</code> options are supported.
+</p>
+<p>Flags for <code>rtsp_flags</code>:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filter_src</samp>&rsquo;</dt>
+<dd><p>Accept packets only from negotiated peer address and port.
+</p></dd>
+<dt> &lsquo;<samp>listen</samp>&rsquo;</dt>
+<dd><p>Act as a server, listening for an incoming connection.
+</p></dd>
+</dl>
+
+<p>When receiving data over UDP, the demuxer tries to reorder received packets
+(since they may arrive out of order, or packets may get lost totally). This
+can be disabled by setting the maximum demuxing delay to zero (via
+the <code>max_delay</code> field of AVFormatContext).
+</p>
+<p>When watching multi-bitrate Real-RTSP streams with <code>ffplay</code>, the
+streams to display can be chosen with <code>-vst</code> <var>n</var> and
+<code>-ast</code> <var>n</var> for video and audio respectively, and can be switched
+on the fly by pressing <code>v</code> and <code>a</code>.
+</p>
+<p>Example command lines:
+</p>
+<p>To watch a stream over UDP, with a max reordering delay of 0.5 seconds:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -max_delay 500000 -rtsp_transport udp rtsp://server/video.mp4
+</pre></td></tr></table>
+
+<p>To watch a stream tunneled over HTTP:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -rtsp_transport http rtsp://server/video.mp4
+</pre></td></tr></table>
+
+<p>To send a stream in realtime to a RTSP server, for others to watch:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i <var>input</var> -f rtsp -muxdelay 0.1 rtsp://server/live.sdp
+</pre></td></tr></table>
+
+<p>To receive a stream in realtime:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -rtsp_flags listen -i rtsp://ownaddress/live.sdp <var>output</var>
+</pre></td></tr></table>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>stimeout</samp>&rsquo;</dt>
+<dd><p>Socket IO timeout in micro seconds.
+</p></dd>
+</dl>
+
+<a name="sap"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-sap">20.25 sap</a></h2>
+
+<p>Session Announcement Protocol (RFC 2974). This is not technically a
+protocol handler in libavformat, it is a muxer and demuxer.
+It is used for signalling of RTP streams, by announcing the SDP for the
+streams regularly on a separate port.
+</p>
+<a name="Muxer"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Muxer">20.25.1 Muxer</a></h3>
+
+<p>The syntax for a SAP url given to the muxer is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">sap://<var>destination</var>[:<var>port</var>][?<var>options</var>]
+</pre></td></tr></table>
+
+<p>The RTP packets are sent to <var>destination</var> on port <var>port</var>,
+or to port 5004 if no port is specified.
+<var>options</var> is a <code>&amp;</code>-separated list. The following options
+are supported:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>announce_addr=<var>address</var></samp>&rsquo;</dt>
+<dd><p>Specify the destination IP address for sending the announcements to.
+If omitted, the announcements are sent to the commonly used SAP
+announcement multicast address 224.2.127.254 (sap.mcast.net), or
+ff0e::2:7ffe if <var>destination</var> is an IPv6 address.
+</p>
+</dd>
+<dt> &lsquo;<samp>announce_port=<var>port</var></samp>&rsquo;</dt>
+<dd><p>Specify the port to send the announcements on, defaults to
+9875 if not specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>ttl=<var>ttl</var></samp>&rsquo;</dt>
+<dd><p>Specify the time to live value for the announcements and RTP packets,
+defaults to 255.
+</p>
+</dd>
+<dt> &lsquo;<samp>same_port=<var>0|1</var></samp>&rsquo;</dt>
+<dd><p>If set to 1, send all RTP streams on the same port pair. If zero (the
+default), all streams are sent on unique ports, with each stream on a
+port 2 numbers higher than the previous.
+VLC/Live555 requires this to be set to 1, to be able to receive the stream.
+The RTP stack in libavformat for receiving requires all streams to be sent
+on unique ports.
+</p></dd>
+</dl>
+
+<p>Example command lines follow.
+</p>
+<p>To broadcast a stream on the local subnet, for watching in VLC:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i <var>input</var> -f sap sap://224.0.0.255?same_port=1
+</pre></td></tr></table>
+
+<p>Similarly, for watching in <code>ffplay</code>:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i <var>input</var> -f sap sap://224.0.0.255
+</pre></td></tr></table>
+
+<p>And for watching in <code>ffplay</code>, over IPv6:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i <var>input</var> -f sap sap://[ff0e::1:2:3:4]
+</pre></td></tr></table>
+
+<a name="Demuxer"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Demuxer">20.25.2 Demuxer</a></h3>
+
+<p>The syntax for a SAP url given to the demuxer is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">sap://[<var>address</var>][:<var>port</var>]
+</pre></td></tr></table>
+
+<p><var>address</var> is the multicast address to listen for announcements on,
+if omitted, the default 224.2.127.254 (sap.mcast.net) is used. <var>port</var>
+is the port that is listened on, 9875 if omitted.
+</p>
+<p>The demuxers listens for announcements on the given address and port.
+Once an announcement is received, it tries to receive that particular stream.
+</p>
+<p>Example command lines follow.
+</p>
+<p>To play back the first stream announced on the normal SAP multicast address:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay sap://
+</pre></td></tr></table>
+
+<p>To play back the first stream announced on one the default IPv6 SAP multicast address:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay sap://[ff0e::2:7ffe]
+</pre></td></tr></table>
+
+<a name="sctp"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-sctp">20.26 sctp</a></h2>
+
+<p>Stream Control Transmission Protocol.
+</p>
+<p>The accepted URL syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">sctp://<var>host</var>:<var>port</var>[?<var>options</var>]
+</pre></td></tr></table>
+
+<p>The protocol accepts the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>listen</samp>&rsquo;</dt>
+<dd><p>If set to any value, listen for an incoming connection. Outgoing connection is done by default.
+</p>
+</dd>
+<dt> &lsquo;<samp>max_streams</samp>&rsquo;</dt>
+<dd><p>Set the maximum number of streams. By default no limit is set.
+</p></dd>
+</dl>
+
+<a name="srtp"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-srtp">20.27 srtp</a></h2>
+
+<p>Secure Real-time Transport Protocol.
+</p>
+<p>The accepted options are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>srtp_in_suite</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>srtp_out_suite</samp>&rsquo;</dt>
+<dd><p>Select input and output encoding suites.
+</p>
+<p>Supported values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>AES_CM_128_HMAC_SHA1_80</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>SRTP_AES128_CM_HMAC_SHA1_80</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>AES_CM_128_HMAC_SHA1_32</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>SRTP_AES128_CM_HMAC_SHA1_32</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>srtp_in_params</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>srtp_out_params</samp>&rsquo;</dt>
+<dd><p>Set input and output encoding parameters, which are expressed by a
+base64-encoded representation of a binary block. The first 16 bytes of
+this binary block are used as master key, the following 14 bytes are
+used as master salt.
+</p></dd>
+</dl>
+
+<a name="tcp"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-tcp">20.28 tcp</a></h2>
+
+<p>Trasmission Control Protocol.
+</p>
+<p>The required syntax for a TCP url is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">tcp://<var>hostname</var>:<var>port</var>[?<var>options</var>]
+</pre></td></tr></table>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>listen</samp>&rsquo;</dt>
+<dd><p>Listen for an incoming connection
+</p>
+</dd>
+<dt> &lsquo;<samp>timeout=<var>microseconds</var></samp>&rsquo;</dt>
+<dd><p>In read mode: if no data arrived in more than this time interval, raise error.
+In write mode: if socket cannot be written in more than this time interval, raise error.
+This also sets timeout on TCP connection establishing.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i <var>input</var> -f <var>format</var> tcp://<var>hostname</var>:<var>port</var>?listen
+ffplay tcp://<var>hostname</var>:<var>port</var>
+</pre></td></tr></table>
+
+</dd>
+</dl>
+
+<a name="tls"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-tls">20.29 tls</a></h2>
+
+<p>Transport Layer Security (TLS) / Secure Sockets Layer (SSL)
+</p>
+<p>The required syntax for a TLS/SSL url is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">tls://<var>hostname</var>:<var>port</var>[?<var>options</var>]
+</pre></td></tr></table>
+
+<p>The following parameters can be set via command line options
+(or in code via <code>AVOption</code>s):
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>ca_file, cafile=<var>filename</var></samp>&rsquo;</dt>
+<dd><p>A file containing certificate authority (CA) root certificates to treat
+as trusted. If the linked TLS library contains a default this might not
+need to be specified for verification to work, but not all libraries and
+setups have defaults built in.
+The file must be in OpenSSL PEM format.
+</p>
+</dd>
+<dt> &lsquo;<samp>tls_verify=<var>1|0</var></samp>&rsquo;</dt>
+<dd><p>If enabled, try to verify the peer that we are communicating with.
+Note, if using OpenSSL, this currently only makes sure that the
+peer certificate is signed by one of the root certificates in the CA
+database, but it does not validate that the certificate actually
+matches the host name we are trying to connect to. (With GnuTLS,
+the host name is validated as well.)
+</p>
+<p>This is disabled by default since it requires a CA database to be
+provided by the caller in many cases.
+</p>
+</dd>
+<dt> &lsquo;<samp>cert_file, cert=<var>filename</var></samp>&rsquo;</dt>
+<dd><p>A file containing a certificate to use in the handshake with the peer.
+(When operating as server, in listen mode, this is more often required
+by the peer, while client certificates only are mandated in certain
+setups.)
+</p>
+</dd>
+<dt> &lsquo;<samp>key_file, key=<var>filename</var></samp>&rsquo;</dt>
+<dd><p>A file containing the private key for the certificate.
+</p>
+</dd>
+<dt> &lsquo;<samp>listen=<var>1|0</var></samp>&rsquo;</dt>
+<dd><p>If enabled, listen for connections on the provided port, and assume
+the server role in the handshake instead of the client role.
+</p>
+</dd>
+</dl>
+
+<p>Example command lines:
+</p>
+<p>To create a TLS/SSL server that serves an input stream.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i <var>input</var> -f <var>format</var> tls://<var>hostname</var>:<var>port</var>?listen&amp;cert=<var>server.crt</var>&amp;key=<var>server.key</var>
+</pre></td></tr></table>
+
+<p>To play back a stream from the TLS/SSL server using <code>ffplay</code>:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay tls://<var>hostname</var>:<var>port</var>
+</pre></td></tr></table>
+
+<a name="udp"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-udp">20.30 udp</a></h2>
+
+<p>User Datagram Protocol.
+</p>
+<p>The required syntax for a UDP url is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">udp://<var>hostname</var>:<var>port</var>[?<var>options</var>]
+</pre></td></tr></table>
+
+<p><var>options</var> contains a list of &amp;-separated options of the form <var>key</var>=<var>val</var>.
+</p>
+<p>In case threading is enabled on the system, a circular buffer is used
+to store the incoming data, which allows to reduce loss of data due to
+UDP socket buffer overruns. The <var>fifo_size</var> and
+<var>overrun_nonfatal</var> options are related to this buffer.
+</p>
+<p>The list of supported options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>buffer_size=<var>size</var></samp>&rsquo;</dt>
+<dd><p>Set the UDP socket buffer size in bytes. This is used both for the
+receiving and the sending buffer size.
+</p>
+</dd>
+<dt> &lsquo;<samp>localport=<var>port</var></samp>&rsquo;</dt>
+<dd><p>Override the local UDP port to bind with.
+</p>
+</dd>
+<dt> &lsquo;<samp>localaddr=<var>addr</var></samp>&rsquo;</dt>
+<dd><p>Choose the local IP address. This is useful e.g. if sending multicast
+and the host has multiple interfaces, where the user can choose
+which interface to send on by specifying the IP address of that interface.
+</p>
+</dd>
+<dt> &lsquo;<samp>pkt_size=<var>size</var></samp>&rsquo;</dt>
+<dd><p>Set the size in bytes of UDP packets.
+</p>
+</dd>
+<dt> &lsquo;<samp>reuse=<var>1|0</var></samp>&rsquo;</dt>
+<dd><p>Explicitly allow or disallow reusing UDP sockets.
+</p>
+</dd>
+<dt> &lsquo;<samp>ttl=<var>ttl</var></samp>&rsquo;</dt>
+<dd><p>Set the time to live value (for multicast only).
+</p>
+</dd>
+<dt> &lsquo;<samp>connect=<var>1|0</var></samp>&rsquo;</dt>
+<dd><p>Initialize the UDP socket with <code>connect()</code>. In this case, the
+destination address can&rsquo;t be changed with ff_udp_set_remote_url later.
+If the destination address isn&rsquo;t known at the start, this option can
+be specified in ff_udp_set_remote_url, too.
+This allows finding out the source address for the packets with getsockname,
+and makes writes return with AVERROR(ECONNREFUSED) if &quot;destination
+unreachable&quot; is received.
+For receiving, this gives the benefit of only receiving packets from
+the specified peer address/port.
+</p>
+</dd>
+<dt> &lsquo;<samp>sources=<var>address</var>[,<var>address</var>]</samp>&rsquo;</dt>
+<dd><p>Only receive packets sent to the multicast group from one of the
+specified sender IP addresses.
+</p>
+</dd>
+<dt> &lsquo;<samp>block=<var>address</var>[,<var>address</var>]</samp>&rsquo;</dt>
+<dd><p>Ignore packets sent to the multicast group from the specified
+sender IP addresses.
+</p>
+</dd>
+<dt> &lsquo;<samp>fifo_size=<var>units</var></samp>&rsquo;</dt>
+<dd><p>Set the UDP receiving circular buffer size, expressed as a number of
+packets with size of 188 bytes. If not specified defaults to 7*4096.
+</p>
+</dd>
+<dt> &lsquo;<samp>overrun_nonfatal=<var>1|0</var></samp>&rsquo;</dt>
+<dd><p>Survive in case of UDP receiving circular buffer overrun. Default
+value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>timeout=<var>microseconds</var></samp>&rsquo;</dt>
+<dd><p>In read mode: if no data arrived in more than this time interval, raise error.
+</p></dd>
+</dl>
+
+<p>Some usage examples of the UDP protocol with <code>ffmpeg</code> follow.
+</p>
+<p>To stream over UDP to a remote endpoint:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i <var>input</var> -f <var>format</var> udp://<var>hostname</var>:<var>port</var>
+</pre></td></tr></table>
+
+<p>To stream in mpegts format over UDP using 188 sized UDP packets, using a large input buffer:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i <var>input</var> -f mpegts udp://<var>hostname</var>:<var>port</var>?pkt_size=188&amp;buffer_size=65535
+</pre></td></tr></table>
+
+<p>To receive over UDP from a remote endpoint:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i udp://[<var>multicast-address</var>]:<var>port</var>
+</pre></td></tr></table>
+
+<a name="unix"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-unix">20.31 unix</a></h2>
+
+<p>Unix local socket
+</p>
+<p>The required syntax for a Unix socket URL is:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">unix://<var>filepath</var>
+</pre></td></tr></table>
+
+<p>The following parameters can be set via command line options
+(or in code via <code>AVOption</code>s):
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>timeout</samp>&rsquo;</dt>
+<dd><p>Timeout in ms.
+</p></dd>
+<dt> &lsquo;<samp>listen</samp>&rsquo;</dt>
+<dd><p>Create the Unix socket in listening mode.
+</p></dd>
+</dl>
+
+<a name="Device-Options"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Device-Options">21. Device Options</a></h1>
+
+<p>The libavdevice library provides the same interface as
+libavformat. Namely, an input device is considered like a demuxer, and
+an output device like a muxer, and the interface and generic device
+options are the same provided by libavformat (see the ffmpeg-formats
+manual).
+</p>
+<p>In addition each input or output device may support so-called private
+options, which are specific for that component.
+</p>
+<p>Options may be set by specifying -<var>option</var> <var>value</var> in the
+FFmpeg tools, or by setting the value explicitly in the device
+<code>AVFormatContext</code> options or using the &lsquo;<tt>libavutil/opt.h</tt>&rsquo; API
+for programmatic use.
+</p>
+
+<a name="Input-Devices"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Input-Devices">22. Input Devices</a></h1>
+
+<p>Input devices are configured elements in FFmpeg which allow to access
+the data coming from a multimedia device attached to your system.
+</p>
+<p>When you configure your FFmpeg build, all the supported input devices
+are enabled by default. You can list all available ones using the
+configure option &quot;&ndash;list-indevs&quot;.
+</p>
+<p>You can disable all the input devices using the configure option
+&quot;&ndash;disable-indevs&quot;, and selectively enable an input device using the
+option &quot;&ndash;enable-indev=<var>INDEV</var>&quot;, or you can disable a particular
+input device using the option &quot;&ndash;disable-indev=<var>INDEV</var>&quot;.
+</p>
+<p>The option &quot;-formats&quot; of the ff* tools will display the list of
+supported input devices (amongst the demuxers).
+</p>
+<p>A description of the currently available input devices follows.
+</p>
+<a name="alsa-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-alsa-1">22.1 alsa</a></h2>
+
+<p>ALSA (Advanced Linux Sound Architecture) input device.
+</p>
+<p>To enable this input device during configuration you need libasound
+installed on your system.
+</p>
+<p>This device allows capturing from an ALSA device. The name of the
+device to capture has to be an ALSA card identifier.
+</p>
+<p>An ALSA identifier has the syntax:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">hw:<var>CARD</var>[,<var>DEV</var>[,<var>SUBDEV</var>]]
+</pre></td></tr></table>
+
+<p>where the <var>DEV</var> and <var>SUBDEV</var> components are optional.
+</p>
+<p>The three arguments (in order: <var>CARD</var>,<var>DEV</var>,<var>SUBDEV</var>)
+specify card number or identifier, device number and subdevice number
+(-1 means any).
+</p>
+<p>To see the list of cards currently recognized by your system check the
+files &lsquo;<tt>/proc/asound/cards</tt>&rsquo; and &lsquo;<tt>/proc/asound/devices</tt>&rsquo;.
+</p>
+<p>For example to capture with <code>ffmpeg</code> from an ALSA device with
+card id 0, you may run the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f alsa -i hw:0 alsaout.wav
+</pre></td></tr></table>
+
+<p>For more information see:
+<a href="http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html">http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html</a>
+</p>
+<a name="bktr"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-bktr">22.2 bktr</a></h2>
+
+<p>BSD video input device.
+</p>
+<a name="dshow"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-dshow">22.3 dshow</a></h2>
+
+<p>Windows DirectShow input device.
+</p>
+<p>DirectShow support is enabled when FFmpeg is built with the mingw-w64 project.
+Currently only audio and video devices are supported.
+</p>
+<p>Multiple devices may be opened as separate inputs, but they may also be
+opened on the same input, which should improve synchronism between them.
+</p>
+<p>The input name should be in the format:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example"><var>TYPE</var>=<var>NAME</var>[:<var>TYPE</var>=<var>NAME</var>]
+</pre></td></tr></table>
+
+<p>where <var>TYPE</var> can be either <var>audio</var> or <var>video</var>,
+and <var>NAME</var> is the device&rsquo;s name.
+</p>
+<a name="Options-18"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-18">22.3.1 Options</a></h3>
+
+<p>If no options are specified, the device&rsquo;s defaults are used.
+If the device does not support the requested options, it will
+fail to open.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>video_size</samp>&rsquo;</dt>
+<dd><p>Set the video size in the captured video.
+</p>
+</dd>
+<dt> &lsquo;<samp>framerate</samp>&rsquo;</dt>
+<dd><p>Set the frame rate in the captured video.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate</samp>&rsquo;</dt>
+<dd><p>Set the sample rate (in Hz) of the captured audio.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_size</samp>&rsquo;</dt>
+<dd><p>Set the sample size (in bits) of the captured audio.
+</p>
+</dd>
+<dt> &lsquo;<samp>channels</samp>&rsquo;</dt>
+<dd><p>Set the number of channels in the captured audio.
+</p>
+</dd>
+<dt> &lsquo;<samp>list_devices</samp>&rsquo;</dt>
+<dd><p>If set to &lsquo;<samp>true</samp>&rsquo;, print a list of devices and exit.
+</p>
+</dd>
+<dt> &lsquo;<samp>list_options</samp>&rsquo;</dt>
+<dd><p>If set to &lsquo;<samp>true</samp>&rsquo;, print a list of selected device&rsquo;s options
+and exit.
+</p>
+</dd>
+<dt> &lsquo;<samp>video_device_number</samp>&rsquo;</dt>
+<dd><p>Set video device number for devices with same name (starts at 0,
+defaults to 0).
+</p>
+</dd>
+<dt> &lsquo;<samp>audio_device_number</samp>&rsquo;</dt>
+<dd><p>Set audio device number for devices with same name (starts at 0,
+defaults to 0).
+</p>
+</dd>
+<dt> &lsquo;<samp>pixel_format</samp>&rsquo;</dt>
+<dd><p>Select pixel format to be used by DirectShow. This may only be set when
+the video codec is not set or set to rawvideo.
+</p>
+</dd>
+<dt> &lsquo;<samp>audio_buffer_size</samp>&rsquo;</dt>
+<dd><p>Set audio device buffer size in milliseconds (which can directly
+impact latency, depending on the device).
+Defaults to using the audio device&rsquo;s
+default buffer size (typically some multiple of 500ms).
+Setting this value too low can degrade performance.
+See also
+<a href="http://msdn.microsoft.com/en-us/library/windows/desktop/dd377582(v=vs.85).aspx">http://msdn.microsoft.com/en-us/library/windows/desktop/dd377582(v=vs.85).aspx</a>
+</p>
+</dd>
+</dl>
+
+<a name="Examples-71"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-71">22.3.2 Examples</a></h3>
+
+<ul>
+<li>
+Print the list of DirectShow supported devices and exit:
+<table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -list_devices true -f dshow -i dummy
+</pre></td></tr></table>
+
+</li><li>
+Open video device <var>Camera</var>:
+<table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f dshow -i video=&quot;Camera&quot;
+</pre></td></tr></table>
+
+</li><li>
+Open second video device with name <var>Camera</var>:
+<table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f dshow -video_device_number 1 -i video=&quot;Camera&quot;
+</pre></td></tr></table>
+
+</li><li>
+Open video device <var>Camera</var> and audio device <var>Microphone</var>:
+<table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f dshow -i video=&quot;Camera&quot;:audio=&quot;Microphone&quot;
+</pre></td></tr></table>
+
+</li><li>
+Print the list of supported options in selected device and exit:
+<table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -list_options true -f dshow -i video=&quot;Camera&quot;
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="dv1394"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-dv1394">22.4 dv1394</a></h2>
+
+<p>Linux DV 1394 input device.
+</p>
+<a name="fbdev-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-fbdev-1">22.5 fbdev</a></h2>
+
+<p>Linux framebuffer input device.
+</p>
+<p>The Linux framebuffer is a graphic hardware-independent abstraction
+layer to show graphics on a computer monitor, typically on the
+console. It is accessed through a file device node, usually
+&lsquo;<tt>/dev/fb0</tt>&rsquo;.
+</p>
+<p>For more detailed information read the file
+Documentation/fb/framebuffer.txt included in the Linux source tree.
+</p>
+<p>To record from the framebuffer device &lsquo;<tt>/dev/fb0</tt>&rsquo; with
+<code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f fbdev -r 10 -i /dev/fb0 out.avi
+</pre></td></tr></table>
+
+<p>You can take a single screenshot image with the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f fbdev -frames:v 1 -r 1 -i /dev/fb0 screenshot.jpeg
+</pre></td></tr></table>
+
+<p>See also <a href="http://linux-fbdev.sourceforge.net/">http://linux-fbdev.sourceforge.net/</a>, and fbset(1).
+</p>
+<a name="iec61883"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-iec61883">22.6 iec61883</a></h2>
+
+<p>FireWire DV/HDV input device using libiec61883.
+</p>
+<p>To enable this input device, you need libiec61883, libraw1394 and
+libavc1394 installed on your system. Use the configure option
+<code>--enable-libiec61883</code> to compile with the device enabled.
+</p>
+<p>The iec61883 capture device supports capturing from a video device
+connected via IEEE1394 (FireWire), using libiec61883 and the new Linux
+FireWire stack (juju). This is the default DV/HDV input method in Linux
+Kernel 2.6.37 and later, since the old FireWire stack was removed.
+</p>
+<p>Specify the FireWire port to be used as input file, or &quot;auto&quot;
+to choose the first port connected.
+</p>
+<a name="Options-5"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-5">22.6.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>dvtype</samp>&rsquo;</dt>
+<dd><p>Override autodetection of DV/HDV. This should only be used if auto
+detection does not work, or if usage of a different device type
+should be prohibited. Treating a DV device as HDV (or vice versa) will
+not work and result in undefined behavior.
+The values &lsquo;<samp>auto</samp>&rsquo;, &lsquo;<samp>dv</samp>&rsquo; and &lsquo;<samp>hdv</samp>&rsquo; are supported.
+</p>
+</dd>
+<dt> &lsquo;<samp>dvbuffer</samp>&rsquo;</dt>
+<dd><p>Set maxiumum size of buffer for incoming data, in frames. For DV, this
+is an exact value. For HDV, it is not frame exact, since HDV does
+not have a fixed frame size.
+</p>
+</dd>
+<dt> &lsquo;<samp>dvguid</samp>&rsquo;</dt>
+<dd><p>Select the capture device by specifying it&rsquo;s GUID. Capturing will only
+be performed from the specified device and fails if no device with the
+given GUID is found. This is useful to select the input if multiple
+devices are connected at the same time.
+Look at /sys/bus/firewire/devices to find out the GUIDs.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-37"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-37">22.6.2 Examples</a></h3>
+
+<ul>
+<li>
+Grab and show the input of a FireWire DV/HDV device.
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f iec61883 -i auto
+</pre></td></tr></table>
+
+</li><li>
+Grab and record the input of a FireWire DV/HDV device,
+using a packet buffer of 100000 packets if the source is HDV.
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f iec61883 -i auto -hdvbuffer 100000 out.mpg
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="jack"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-jack">22.7 jack</a></h2>
+
+<p>JACK input device.
+</p>
+<p>To enable this input device during configuration you need libjack
+installed on your system.
+</p>
+<p>A JACK input device creates one or more JACK writable clients, one for
+each audio channel, with name <var>client_name</var>:input_<var>N</var>, where
+<var>client_name</var> is the name provided by the application, and <var>N</var>
+is a number which identifies the channel.
+Each writable client will send the acquired data to the FFmpeg input
+device.
+</p>
+<p>Once you have created one or more JACK readable clients, you need to
+connect them to one or more JACK writable clients.
+</p>
+<p>To connect or disconnect JACK clients you can use the <code>jack_connect</code>
+and <code>jack_disconnect</code> programs, or do it through a graphical interface,
+for example with <code>qjackctl</code>.
+</p>
+<p>To list the JACK clients and their properties you can invoke the command
+<code>jack_lsp</code>.
+</p>
+<p>Follows an example which shows how to capture a JACK readable client
+with <code>ffmpeg</code>.
+</p><table><tr><td>&nbsp;</td><td><pre class="example"># Create a JACK writable client with name &quot;ffmpeg&quot;.
+$ ffmpeg -f jack -i ffmpeg -y out.wav
+
+# Start the sample jack_metro readable client.
+$ jack_metro -b 120 -d 0.2 -f 4000
+
+# List the current JACK clients.
+$ jack_lsp -c
+system:capture_1
+system:capture_2
+system:playback_1
+system:playback_2
+ffmpeg:input_1
+metro:120_bpm
+
+# Connect metro to the ffmpeg writable client.
+$ jack_connect metro:120_bpm ffmpeg:input_1
+</pre></td></tr></table>
+
+<p>For more information read:
+<a href="http://jackaudio.org/">http://jackaudio.org/</a>
+</p>
+<a name="lavfi"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-lavfi">22.8 lavfi</a></h2>
+
+<p>Libavfilter input virtual device.
+</p>
+<p>This input device reads data from the open output pads of a libavfilter
+filtergraph.
+</p>
+<p>For each filtergraph open output, the input device will create a
+corresponding stream which is mapped to the generated output. Currently
+only video data is supported. The filtergraph is specified through the
+option &lsquo;<samp>graph</samp>&rsquo;.
+</p>
+<a name="Options-31"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-31">22.8.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>graph</samp>&rsquo;</dt>
+<dd><p>Specify the filtergraph to use as input. Each video open output must be
+labelled by a unique string of the form &quot;out<var>N</var>&quot;, where <var>N</var> is a
+number starting from 0 corresponding to the mapped input stream
+generated by the device.
+The first unlabelled output is automatically assigned to the &quot;out0&quot;
+label, but all the others need to be specified explicitly.
+</p>
+<p>If not specified defaults to the filename specified for the input
+device.
+</p>
+</dd>
+<dt> &lsquo;<samp>graph_file</samp>&rsquo;</dt>
+<dd><p>Set the filename of the filtergraph to be read and sent to the other
+filters. Syntax of the filtergraph is the same as the one specified by
+the option <var>graph</var>.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-87"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-87">22.8.2 Examples</a></h3>
+
+<ul>
+<li>
+Create a color video stream and play it back with <code>ffplay</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi -graph &quot;color=c=pink [out0]&quot; dummy
+</pre></td></tr></table>
+
+</li><li>
+As the previous example, but use filename for specifying the graph
+description, and omit the &quot;out0&quot; label:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi color=c=pink
+</pre></td></tr></table>
+
+</li><li>
+Create three different video test filtered sources and play them:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi -graph &quot;testsrc [out0]; testsrc,hflip [out1]; testsrc,negate [out2]&quot; test3
+</pre></td></tr></table>
+
+</li><li>
+Read an audio stream from a file using the amovie source and play it
+back with <code>ffplay</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi &quot;amovie=test.wav&quot;
+</pre></td></tr></table>
+
+</li><li>
+Read an audio stream and a video stream and play it back with
+<code>ffplay</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi &quot;movie=test.avi[out0];amovie=test.wav[out1]&quot;
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="libdc1394"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-libdc1394">22.9 libdc1394</a></h2>
+
+<p>IIDC1394 input device, based on libdc1394 and libraw1394.
+</p>
+<a name="openal"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-openal">22.10 openal</a></h2>
+
+<p>The OpenAL input device provides audio capture on all systems with a
+working OpenAL 1.1 implementation.
+</p>
+<p>To enable this input device during configuration, you need OpenAL
+headers and libraries installed on your system, and need to configure
+FFmpeg with <code>--enable-openal</code>.
+</p>
+<p>OpenAL headers and libraries should be provided as part of your OpenAL
+implementation, or as an additional download (an SDK). Depending on your
+installation you may need to specify additional flags via the
+<code>--extra-cflags</code> and <code>--extra-ldflags</code> for allowing the build
+system to locate the OpenAL headers and libraries.
+</p>
+<p>An incomplete list of OpenAL implementations follows:
+</p>
+<dl compact="compact">
+<dt> <strong>Creative</strong></dt>
+<dd><p>The official Windows implementation, providing hardware acceleration
+with supported devices and software fallback.
+See <a href="http://openal.org/">http://openal.org/</a>.
+</p></dd>
+<dt> <strong>OpenAL Soft</strong></dt>
+<dd><p>Portable, open source (LGPL) software implementation. Includes
+backends for the most common sound APIs on the Windows, Linux,
+Solaris, and BSD operating systems.
+See <a href="http://kcat.strangesoft.net/openal.html">http://kcat.strangesoft.net/openal.html</a>.
+</p></dd>
+<dt> <strong>Apple</strong></dt>
+<dd><p>OpenAL is part of Core Audio, the official Mac OS X Audio interface.
+See <a href="http://developer.apple.com/technologies/mac/audio-and-video.html">http://developer.apple.com/technologies/mac/audio-and-video.html</a>
+</p></dd>
+</dl>
+
+<p>This device allows to capture from an audio input device handled
+through OpenAL.
+</p>
+<p>You need to specify the name of the device to capture in the provided
+filename. If the empty string is provided, the device will
+automatically select the default device. You can get the list of the
+supported devices by using the option <var>list_devices</var>.
+</p>
+<a name="Options-26"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-26">22.10.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>channels</samp>&rsquo;</dt>
+<dd><p>Set the number of channels in the captured audio. Only the values
+&lsquo;<samp>1</samp>&rsquo; (monaural) and &lsquo;<samp>2</samp>&rsquo; (stereo) are currently supported.
+Defaults to &lsquo;<samp>2</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_size</samp>&rsquo;</dt>
+<dd><p>Set the sample size (in bits) of the captured audio. Only the values
+&lsquo;<samp>8</samp>&rsquo; and &lsquo;<samp>16</samp>&rsquo; are currently supported. Defaults to
+&lsquo;<samp>16</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate</samp>&rsquo;</dt>
+<dd><p>Set the sample rate (in Hz) of the captured audio.
+Defaults to &lsquo;<samp>44.1k</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>list_devices</samp>&rsquo;</dt>
+<dd><p>If set to &lsquo;<samp>true</samp>&rsquo;, print a list of devices and exit.
+Defaults to &lsquo;<samp>false</samp>&rsquo;.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-74"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-74">22.10.2 Examples</a></h3>
+
+<p>Print the list of OpenAL supported devices and exit:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -list_devices true -f openal -i dummy out.ogg
+</pre></td></tr></table>
+
+<p>Capture from the OpenAL device &lsquo;<tt>DR-BT101 via PulseAudio</tt>&rsquo;:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out.ogg
+</pre></td></tr></table>
+
+<p>Capture from the default device (note the empty string &rdquo; as filename):
+</p><table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f openal -i '' out.ogg
+</pre></td></tr></table>
+
+<p>Capture from two devices simultaneously, writing to two different files,
+within the same <code>ffmpeg</code> command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out1.ogg -f openal -i 'ALSA Default' out2.ogg
+</pre></td></tr></table>
+<p>Note: not all OpenAL implementations support multiple simultaneous capture -
+try the latest OpenAL Soft if the above does not work.
+</p>
+<a name="oss"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-oss">22.11 oss</a></h2>
+
+<p>Open Sound System input device.
+</p>
+<p>The filename to provide to the input device is the device node
+representing the OSS input device, and is usually set to
+&lsquo;<tt>/dev/dsp</tt>&rsquo;.
+</p>
+<p>For example to grab from &lsquo;<tt>/dev/dsp</tt>&rsquo; using <code>ffmpeg</code> use the
+command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f oss -i /dev/dsp /tmp/oss.wav
+</pre></td></tr></table>
+
+<p>For more information about OSS see:
+<a href="http://manuals.opensound.com/usersguide/dsp.html">http://manuals.opensound.com/usersguide/dsp.html</a>
+</p>
+<a name="pulse-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-pulse-1">22.12 pulse</a></h2>
+
+<p>PulseAudio input device.
+</p>
+<p>To enable this output device you need to configure FFmpeg with <code>--enable-libpulse</code>.
+</p>
+<p>The filename to provide to the input device is a source device or the
+string &quot;default&quot;
+</p>
+<p>To list the PulseAudio source devices and their properties you can invoke
+the command <code>pactl list sources</code>.
+</p>
+<p>More information about PulseAudio can be found on <a href="http://www.pulseaudio.org">http://www.pulseaudio.org</a>.
+</p>
+<a name="Options-30"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-30">22.12.1 Options</a></h3>
+<dl compact="compact">
+<dt> &lsquo;<samp>server</samp>&rsquo;</dt>
+<dd><p>Connect to a specific PulseAudio server, specified by an IP address.
+Default server is used when not provided.
+</p>
+</dd>
+<dt> &lsquo;<samp>name</samp>&rsquo;</dt>
+<dd><p>Specify the application name PulseAudio will use when showing active clients,
+by default it is the <code>LIBAVFORMAT_IDENT</code> string.
+</p>
+</dd>
+<dt> &lsquo;<samp>stream_name</samp>&rsquo;</dt>
+<dd><p>Specify the stream name PulseAudio will use when showing active streams,
+by default it is &quot;record&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate</samp>&rsquo;</dt>
+<dd><p>Specify the samplerate in Hz, by default 48kHz is used.
+</p>
+</dd>
+<dt> &lsquo;<samp>channels</samp>&rsquo;</dt>
+<dd><p>Specify the channels in use, by default 2 (stereo) is set.
+</p>
+</dd>
+<dt> &lsquo;<samp>frame_size</samp>&rsquo;</dt>
+<dd><p>Specify the number of bytes per frame, by default it is set to 1024.
+</p>
+</dd>
+<dt> &lsquo;<samp>fragment_size</samp>&rsquo;</dt>
+<dd><p>Specify the minimal buffering fragment in PulseAudio, it will affect the
+audio latency. By default it is unset.
+</p></dd>
+</dl>
+
+<a name="Examples-49"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-49">22.12.2 Examples</a></h3>
+<p>Record a stream from default device:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f pulse -i default /tmp/pulse.wav
+</pre></td></tr></table>
+
+<a name="sndio-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-sndio-1">22.13 sndio</a></h2>
+
+<p>sndio input device.
+</p>
+<p>To enable this input device during configuration you need libsndio
+installed on your system.
+</p>
+<p>The filename to provide to the input device is the device node
+representing the sndio input device, and is usually set to
+&lsquo;<tt>/dev/audio0</tt>&rsquo;.
+</p>
+<p>For example to grab from &lsquo;<tt>/dev/audio0</tt>&rsquo; using <code>ffmpeg</code> use the
+command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f sndio -i /dev/audio0 /tmp/oss.wav
+</pre></td></tr></table>
+
+<a name="video4linux2_002c-v4l2"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-video4linux2_002c-v4l2">22.14 video4linux2, v4l2</a></h2>
+
+<p>Video4Linux2 input video device.
+</p>
+<p>&quot;v4l2&quot; can be used as alias for &quot;video4linux2&quot;.
+</p>
+<p>If FFmpeg is built with v4l-utils support (by using the
+<code>--enable-libv4l2</code> configure option), it is possible to use it with the
+<code>-use_libv4l2</code> input device option.
+</p>
+<p>The name of the device to grab is a file device node, usually Linux
+systems tend to automatically create such nodes when the device
+(e.g. an USB webcam) is plugged into the system, and has a name of the
+kind &lsquo;<tt>/dev/video<var>N</var></tt>&rsquo;, where <var>N</var> is a number associated to
+the device.
+</p>
+<p>Video4Linux2 devices usually support a limited set of
+<var>width</var>x<var>height</var> sizes and frame rates. You can check which are
+supported using <code>-list_formats all</code> for Video4Linux2 devices.
+Some devices, like TV cards, support one or more standards. It is possible
+to list all the supported standards using <code>-list_standards all</code>.
+</p>
+<p>The time base for the timestamps is 1 microsecond. Depending on the kernel
+version and configuration, the timestamps may be derived from the real time
+clock (origin at the Unix Epoch) or the monotonic clock (origin usually at
+boot time, unaffected by NTP or manual changes to the clock). The
+&lsquo;<samp>-timestamps abs</samp>&rsquo; or &lsquo;<samp>-ts abs</samp>&rsquo; option can be used to force
+conversion into the real time clock.
+</p>
+<p>Some usage examples of the video4linux2 device with <code>ffmpeg</code>
+and <code>ffplay</code>:
+</p><ul>
+<li>
+Grab and show the input of a video4linux2 device:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f video4linux2 -framerate 30 -video_size hd720 /dev/video0
+</pre></td></tr></table>
+
+</li><li>
+Grab and record the input of a video4linux2 device, leave the
+frame rate and size as previously set:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f video4linux2 -input_format mjpeg -i /dev/video0 out.mpeg
+</pre></td></tr></table>
+</li></ul>
+
+<p>For more information about Video4Linux, check <a href="http://linuxtv.org/">http://linuxtv.org/</a>.
+</p>
+<a name="Options-2"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-2">22.14.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>standard</samp>&rsquo;</dt>
+<dd><p>Set the standard. Must be the name of a supported standard. To get a
+list of the supported standards, use the &lsquo;<samp>list_standards</samp>&rsquo;
+option.
+</p>
+</dd>
+<dt> &lsquo;<samp>channel</samp>&rsquo;</dt>
+<dd><p>Set the input channel number. Default to -1, which means using the
+previously selected channel.
+</p>
+</dd>
+<dt> &lsquo;<samp>video_size</samp>&rsquo;</dt>
+<dd><p>Set the video frame size. The argument must be a string in the form
+<var>WIDTH</var>x<var>HEIGHT</var> or a valid size abbreviation.
+</p>
+</dd>
+<dt> &lsquo;<samp>pixel_format</samp>&rsquo;</dt>
+<dd><p>Select the pixel format (only valid for raw video input).
+</p>
+</dd>
+<dt> &lsquo;<samp>input_format</samp>&rsquo;</dt>
+<dd><p>Set the preferred pixel format (for raw video) or a codec name.
+This option allows to select the input format, when several are
+available.
+</p>
+</dd>
+<dt> &lsquo;<samp>framerate</samp>&rsquo;</dt>
+<dd><p>Set the preferred video frame rate.
+</p>
+</dd>
+<dt> &lsquo;<samp>list_formats</samp>&rsquo;</dt>
+<dd><p>List available formats (supported pixel formats, codecs, and frame
+sizes) and exit.
+</p>
+<p>Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>all</samp>&rsquo;</dt>
+<dd><p>Show all available (compressed and non-compressed) formats.
+</p>
+</dd>
+<dt> &lsquo;<samp>raw</samp>&rsquo;</dt>
+<dd><p>Show only raw video (non-compressed) formats.
+</p>
+</dd>
+<dt> &lsquo;<samp>compressed</samp>&rsquo;</dt>
+<dd><p>Show only compressed formats.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>list_standards</samp>&rsquo;</dt>
+<dd><p>List supported standards and exit.
+</p>
+<p>Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>all</samp>&rsquo;</dt>
+<dd><p>Show all supported standards.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>timestamps, ts</samp>&rsquo;</dt>
+<dd><p>Set type of timestamps for grabbed frames.
+</p>
+<p>Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>default</samp>&rsquo;</dt>
+<dd><p>Use timestamps from the kernel.
+</p>
+</dd>
+<dt> &lsquo;<samp>abs</samp>&rsquo;</dt>
+<dd><p>Use absolute timestamps (wall clock).
+</p>
+</dd>
+<dt> &lsquo;<samp>mono2abs</samp>&rsquo;</dt>
+<dd><p>Force conversion from monotonic to absolute timestamps.
+</p></dd>
+</dl>
+
+<p>Default value is <code>default</code>.
+</p></dd>
+</dl>
+
+<a name="vfwcap"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-vfwcap">22.15 vfwcap</a></h2>
+
+<p>VfW (Video for Windows) capture input device.
+</p>
+<p>The filename passed as input is the capture driver number, ranging from
+0 to 9. You may use &quot;list&quot; as filename to print a list of drivers. Any
+other filename will be interpreted as device number 0.
+</p>
+<a name="x11grab"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-x11grab">22.16 x11grab</a></h2>
+
+<p>X11 video input device.
+</p>
+<p>This device allows to capture a region of an X11 display.
+</p>
+<p>The filename passed as input has the syntax:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[<var>hostname</var>]:<var>display_number</var>.<var>screen_number</var>[+<var>x_offset</var>,<var>y_offset</var>]
+</pre></td></tr></table>
+
+<p><var>hostname</var>:<var>display_number</var>.<var>screen_number</var> specifies the
+X11 display name of the screen to grab from. <var>hostname</var> can be
+omitted, and defaults to &quot;localhost&quot;. The environment variable
+<code>DISPLAY</code> contains the default display name.
+</p>
+<p><var>x_offset</var> and <var>y_offset</var> specify the offsets of the grabbed
+area with respect to the top-left border of the X11 screen. They
+default to 0.
+</p>
+<p>Check the X11 documentation (e.g. man X) for more detailed information.
+</p>
+<p>Use the <code>dpyinfo</code> program for getting basic information about the
+properties of your X11 display (e.g. grep for &quot;name&quot; or &quot;dimensions&quot;).
+</p>
+<p>For example to grab from &lsquo;<tt>:0.0</tt>&rsquo; using <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0 out.mpg
+</pre></td></tr></table>
+
+<p>Grab at position <code>10,20</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0+10,20 out.mpg
+</pre></td></tr></table>
+
+<a name="Options-20"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-20">22.16.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>draw_mouse</samp>&rsquo;</dt>
+<dd><p>Specify whether to draw the mouse pointer. A value of <code>0</code> specify
+not to draw the pointer. Default value is <code>1</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>follow_mouse</samp>&rsquo;</dt>
+<dd><p>Make the grabbed area follow the mouse. The argument can be
+<code>centered</code> or a number of pixels <var>PIXELS</var>.
+</p>
+<p>When it is specified with &quot;centered&quot;, the grabbing region follows the mouse
+pointer and keeps the pointer at the center of region; otherwise, the region
+follows only when the mouse pointer reaches within <var>PIXELS</var> (greater than
+zero) to the edge of region.
+</p>
+<p>For example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -follow_mouse centered -framerate 25 -video_size cif -i :0.0 out.mpg
+</pre></td></tr></table>
+
+<p>To follow only when the mouse pointer reaches within 100 pixels to edge:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -follow_mouse 100 -framerate 25 -video_size cif -i :0.0 out.mpg
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>framerate</samp>&rsquo;</dt>
+<dd><p>Set the grabbing frame rate. Default value is <code>ntsc</code>,
+corresponding to a frame rate of <code>30000/1001</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>show_region</samp>&rsquo;</dt>
+<dd><p>Show grabbed region on screen.
+</p>
+<p>If <var>show_region</var> is specified with <code>1</code>, then the grabbing
+region will be indicated on screen. With this option, it is easy to
+know what is being grabbed if only a portion of the screen is grabbed.
+</p>
+<p>For example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -show_region 1 -framerate 25 -video_size cif -i :0.0+10,20 out.mpg
+</pre></td></tr></table>
+
+<p>With <var>follow_mouse</var>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -follow_mouse centered -show_region 1 -framerate 25 -video_size cif -i :0.0 out.mpg
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>video_size</samp>&rsquo;</dt>
+<dd><p>Set the video frame size. Default value is <code>vga</code>.
+</p></dd>
+</dl>
+
+<a name="Output-Devices"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Output-Devices">23. Output Devices</a></h1>
+
+<p>Output devices are configured elements in FFmpeg that can write
+multimedia data to an output device attached to your system.
+</p>
+<p>When you configure your FFmpeg build, all the supported output devices
+are enabled by default. You can list all available ones using the
+configure option &quot;&ndash;list-outdevs&quot;.
+</p>
+<p>You can disable all the output devices using the configure option
+&quot;&ndash;disable-outdevs&quot;, and selectively enable an output device using the
+option &quot;&ndash;enable-outdev=<var>OUTDEV</var>&quot;, or you can disable a particular
+input device using the option &quot;&ndash;disable-outdev=<var>OUTDEV</var>&quot;.
+</p>
+<p>The option &quot;-formats&quot; of the ff* tools will display the list of
+enabled output devices (amongst the muxers).
+</p>
+<p>A description of the currently available output devices follows.
+</p>
+<a name="alsa"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-alsa">23.1 alsa</a></h2>
+
+<p>ALSA (Advanced Linux Sound Architecture) output device.
+</p>
+<a name="Examples-33"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-33">23.1.1 Examples</a></h3>
+
+<ul>
+<li>
+Play a file on default ALSA device:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f alsa default
+</pre></td></tr></table>
+
+</li><li>
+Play a file on soundcard 1, audio device 7:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f alsa hw:1,7
+</pre></td></tr></table>
+</li></ul>
+
+<a name="caca"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-caca">23.2 caca</a></h2>
+
+<p>CACA output device.
+</p>
+<p>This output device allows to show a video stream in CACA window.
+Only one CACA window is allowed per application, so you can
+have only one instance of this output device in an application.
+</p>
+<p>To enable this output device you need to configure FFmpeg with
+<code>--enable-libcaca</code>.
+libcaca is a graphics library that outputs text instead of pixels.
+</p>
+<p>For more information about libcaca, check:
+<a href="http://caca.zoy.org/wiki/libcaca">http://caca.zoy.org/wiki/libcaca</a>
+</p>
+<a name="Options-4"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-4">23.2.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>window_title</samp>&rsquo;</dt>
+<dd><p>Set the CACA window title, if not specified default to the filename
+specified for the output device.
+</p>
+</dd>
+<dt> &lsquo;<samp>window_size</samp>&rsquo;</dt>
+<dd><p>Set the CACA window size, can be a string of the form
+<var>width</var>x<var>height</var> or a video size abbreviation.
+If not specified it defaults to the size of the input video.
+</p>
+</dd>
+<dt> &lsquo;<samp>driver</samp>&rsquo;</dt>
+<dd><p>Set display driver.
+</p>
+</dd>
+<dt> &lsquo;<samp>algorithm</samp>&rsquo;</dt>
+<dd><p>Set dithering algorithm. Dithering is necessary
+because the picture being rendered has usually far more colours than
+the available palette.
+The accepted values are listed with <code>-list_dither algorithms</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>antialias</samp>&rsquo;</dt>
+<dd><p>Set antialias method. Antialiasing smoothens the rendered
+image and avoids the commonly seen staircase effect.
+The accepted values are listed with <code>-list_dither antialiases</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>charset</samp>&rsquo;</dt>
+<dd><p>Set which characters are going to be used when rendering text.
+The accepted values are listed with <code>-list_dither charsets</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
+<dd><p>Set color to be used when rendering text.
+The accepted values are listed with <code>-list_dither colors</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>list_drivers</samp>&rsquo;</dt>
+<dd><p>If set to &lsquo;<samp>true</samp>&rsquo;, print a list of available drivers and exit.
+</p>
+</dd>
+<dt> &lsquo;<samp>list_dither</samp>&rsquo;</dt>
+<dd><p>List available dither options related to the argument.
+The argument must be one of <code>algorithms</code>, <code>antialiases</code>,
+<code>charsets</code>, <code>colors</code>.
+</p></dd>
+</dl>
+
+<a name="Examples-56"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-56">23.2.2 Examples</a></h3>
+
+<ul>
+<li>
+The following command shows the <code>ffmpeg</code> output is an
+CACA window, forcing its size to 80x25:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -vcodec rawvideo -pix_fmt rgb24 -window_size 80x25 -f caca -
+</pre></td></tr></table>
+
+</li><li>
+Show the list of available drivers and exit:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_drivers true -
+</pre></td></tr></table>
+
+</li><li>
+Show the list of available dither colors and exit:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_dither colors -
+</pre></td></tr></table>
+</li></ul>
+
+<a name="fbdev"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-fbdev">23.3 fbdev</a></h2>
+
+<p>Linux framebuffer output device.
+</p>
+<p>The Linux framebuffer is a graphic hardware-independent abstraction
+layer to show graphics on a computer monitor, typically on the
+console. It is accessed through a file device node, usually
+&lsquo;<tt>/dev/fb0</tt>&rsquo;.
+</p>
+<p>For more detailed information read the file
+&lsquo;<tt>Documentation/fb/framebuffer.txt</tt>&rsquo; included in the Linux source tree.
+</p>
+<a name="Options-15"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-15">23.3.1 Options</a></h3>
+<dl compact="compact">
+<dt> &lsquo;<samp>xoffset</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>yoffset</samp>&rsquo;</dt>
+<dd><p>Set x/y coordinate of top left corner. Default is 0.
+</p></dd>
+</dl>
+
+<a name="Examples-66"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-66">23.3.2 Examples</a></h3>
+<p>Play a file on framebuffer device &lsquo;<tt>/dev/fb0</tt>&rsquo;.
+Required pixel format depends on current framebuffer settings.
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i INPUT -vcodec rawvideo -pix_fmt bgra -f fbdev /dev/fb0
+</pre></td></tr></table>
+
+<p>See also <a href="http://linux-fbdev.sourceforge.net/">http://linux-fbdev.sourceforge.net/</a>, and fbset(1).
+</p>
+<a name="oss-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-oss-1">23.4 oss</a></h2>
+
+<p>OSS (Open Sound System) output device.
+</p>
+<a name="pulse"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-pulse">23.5 pulse</a></h2>
+
+<p>PulseAudio output device.
+</p>
+<p>To enable this output device you need to configure FFmpeg with <code>--enable-libpulse</code>.
+</p>
+<p>More information about PulseAudio can be found on <a href="http://www.pulseaudio.org">http://www.pulseaudio.org</a>
+</p>
+<a name="Options-6"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-6">23.5.1 Options</a></h3>
+<dl compact="compact">
+<dt> &lsquo;<samp>server</samp>&rsquo;</dt>
+<dd><p>Connect to a specific PulseAudio server, specified by an IP address.
+Default server is used when not provided.
+</p>
+</dd>
+<dt> &lsquo;<samp>name</samp>&rsquo;</dt>
+<dd><p>Specify the application name PulseAudio will use when showing active clients,
+by default it is the <code>LIBAVFORMAT_IDENT</code> string.
+</p>
+</dd>
+<dt> &lsquo;<samp>stream_name</samp>&rsquo;</dt>
+<dd><p>Specify the stream name PulseAudio will use when showing active streams,
+by default it is set to the specified output name.
+</p>
+</dd>
+<dt> &lsquo;<samp>device</samp>&rsquo;</dt>
+<dd><p>Specify the device to use. Default device is used when not provided.
+List of output devices can be obtained with command <code>pactl list sinks</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>buffer_size</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>buffer_duration</samp>&rsquo;</dt>
+<dd><p>Control the size and duration of the PulseAudio buffer. A small buffer
+gives more control, but requires more frequent updates.
+</p>
+<p>&lsquo;<samp>buffer_size</samp>&rsquo; specifies size in bytes while
+&lsquo;<samp>buffer_duration</samp>&rsquo; specifies duration in milliseconds.
+</p>
+<p>When both options are provided then the highest value is used
+(duration is recalculated to bytes using stream parameters). If they
+are set to 0 (which is default), the device will use the default
+PulseAudio duration value. By default PulseAudio set buffer duration
+to around 2 seconds.
+</p></dd>
+</dl>
+
+<a name="Examples-23"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-23">23.5.2 Examples</a></h3>
+<p>Play a file on default device on default server:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg  -i INPUT -f pulse &quot;stream name&quot;
+</pre></td></tr></table>
+
+<a name="sdl"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-sdl">23.6 sdl</a></h2>
+
+<p>SDL (Simple DirectMedia Layer) output device.
+</p>
+<p>This output device allows to show a video stream in an SDL
+window. Only one SDL window is allowed per application, so you can
+have only one instance of this output device in an application.
+</p>
+<p>To enable this output device you need libsdl installed on your system
+when configuring your build.
+</p>
+<p>For more information about SDL, check:
+<a href="http://www.libsdl.org/">http://www.libsdl.org/</a>
+</p>
+<a name="Options-12"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-12">23.6.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>window_title</samp>&rsquo;</dt>
+<dd><p>Set the SDL window title, if not specified default to the filename
+specified for the output device.
+</p>
+</dd>
+<dt> &lsquo;<samp>icon_title</samp>&rsquo;</dt>
+<dd><p>Set the name of the iconified SDL window, if not specified it is set
+to the same value of <var>window_title</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>window_size</samp>&rsquo;</dt>
+<dd><p>Set the SDL window size, can be a string of the form
+<var>width</var>x<var>height</var> or a video size abbreviation.
+If not specified it defaults to the size of the input video,
+downscaled according to the aspect ratio.
+</p>
+</dd>
+<dt> &lsquo;<samp>window_fullscreen</samp>&rsquo;</dt>
+<dd><p>Set fullscreen mode when non-zero value is provided.
+Default value is zero.
+</p></dd>
+</dl>
+
+<a name="Interactive-commands"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Interactive-commands">23.6.2 Interactive commands</a></h3>
+
+<p>The window created by the device can be controlled through the
+following interactive commands.
+</p>
+<dl compact="compact">
+<dt> &lt;q, ESC&gt;</dt>
+<dd><p>Quit the device immediately.
+</p></dd>
+</dl>
+
+<a name="Examples-82"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-82">23.6.3 Examples</a></h3>
+
+<p>The following command shows the <code>ffmpeg</code> output is an
+SDL window, forcing its size to the qcif format:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -vcodec rawvideo -pix_fmt yuv420p -window_size qcif -f sdl &quot;SDL output&quot;
+</pre></td></tr></table>
+
+<a name="sndio"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-sndio">23.7 sndio</a></h2>
+
+<p>sndio audio output device.
+</p>
+<a name="xv"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-xv">23.8 xv</a></h2>
+
+<p>XV (XVideo) output device.
+</p>
+<p>This output device allows to show a video stream in a X Window System
+window.
+</p>
+<a name="Options-3"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-3">23.8.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>display_name</samp>&rsquo;</dt>
+<dd><p>Specify the hardware display name, which determines the display and
+communications domain to be used.
+</p>
+<p>The display name or DISPLAY environment variable can be a string in
+the format <var>hostname</var>[:<var>number</var>[.<var>screen_number</var>]].
+</p>
+<p><var>hostname</var> specifies the name of the host machine on which the
+display is physically attached. <var>number</var> specifies the number of
+the display server on that host machine. <var>screen_number</var> specifies
+the screen to be used on that server.
+</p>
+<p>If unspecified, it defaults to the value of the DISPLAY environment
+variable.
+</p>
+<p>For example, <code>dual-headed:0.1</code> would specify screen 1 of display
+0 on the machine named &ldquo;dual-headed&rdquo;.
+</p>
+<p>Check the X11 specification for more detailed information about the
+display name format.
+</p>
+</dd>
+<dt> &lsquo;<samp>window_size</samp>&rsquo;</dt>
+<dd><p>Set the created window size, can be a string of the form
+<var>width</var>x<var>height</var> or a video size abbreviation. If not
+specified it defaults to the size of the input video.
+</p>
+</dd>
+<dt> &lsquo;<samp>window_x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>window_y</samp>&rsquo;</dt>
+<dd><p>Set the X and Y window offsets for the created window. They are both
+set to 0 by default. The values may be ignored by the window manager.
+</p>
+</dd>
+<dt> &lsquo;<samp>window_title</samp>&rsquo;</dt>
+<dd><p>Set the window title, if not specified default to the filename
+specified for the output device.
+</p></dd>
+</dl>
+
+<p>For more information about XVideo see <a href="http://www.x.org/">http://www.x.org/</a>.
+</p>
+<a name="Examples-48"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-48">23.8.2 Examples</a></h3>
+
+<ul>
+<li>
+Decode, display and encode video input with <code>ffmpeg</code> at the
+same time:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT OUTPUT -f xv display
+</pre></td></tr></table>
+
+</li><li>
+Decode and display the input video to multiple X11 windows:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f xv normal -vf negate -f xv negated
+</pre></td></tr></table>
+</li></ul>
+
+<a name="Resampler-Options"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Resampler-Options">24. Resampler Options</a></h1>
+
+<p>The audio resampler supports the following named options.
+</p>
+<p>Options may be set by specifying -<var>option</var> <var>value</var> in the
+FFmpeg tools, <var>option</var>=<var>value</var> for the aresample filter,
+by setting the value explicitly in the
+<code>SwrContext</code> options or using the &lsquo;<tt>libavutil/opt.h</tt>&rsquo; API for
+programmatic use.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>ich, in_channel_count</samp>&rsquo;</dt>
+<dd><p>Set the number of input channels. Default value is 0. Setting this
+value is not mandatory if the corresponding channel layout
+&lsquo;<samp>in_channel_layout</samp>&rsquo; is set.
+</p>
+</dd>
+<dt> &lsquo;<samp>och, out_channel_count</samp>&rsquo;</dt>
+<dd><p>Set the number of output channels. Default value is 0. Setting this
+value is not mandatory if the corresponding channel layout
+&lsquo;<samp>out_channel_layout</samp>&rsquo; is set.
+</p>
+</dd>
+<dt> &lsquo;<samp>uch, used_channel_count</samp>&rsquo;</dt>
+<dd><p>Set the number of used input channels. Default value is 0. This option is
+only used for special remapping.
+</p>
+</dd>
+<dt> &lsquo;<samp>isr, in_sample_rate</samp>&rsquo;</dt>
+<dd><p>Set the input sample rate. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>osr, out_sample_rate</samp>&rsquo;</dt>
+<dd><p>Set the output sample rate. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>isf, in_sample_fmt</samp>&rsquo;</dt>
+<dd><p>Specify the input sample format. It is set by default to <code>none</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>osf, out_sample_fmt</samp>&rsquo;</dt>
+<dd><p>Specify the output sample format. It is set by default to <code>none</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>tsf, internal_sample_fmt</samp>&rsquo;</dt>
+<dd><p>Set the internal sample format. Default value is <code>none</code>.
+This will automatically be chosen when it is not explicitly set.
+</p>
+</dd>
+<dt> &lsquo;<samp>icl, in_channel_layout</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ocl, out_channel_layout</samp>&rsquo;</dt>
+<dd><p>Set the input/output channel layout.
+</p>
+<p>See <a href="ffmpeg-utils.html#channel-layout-syntax">(ffmpeg-utils)channel layout syntax</a>
+for the required syntax.
+</p>
+</dd>
+<dt> &lsquo;<samp>clev, center_mix_level</samp>&rsquo;</dt>
+<dd><p>Set the center mix level. It is a value expressed in deciBel, and must be
+in the interval [-32,32].
+</p>
+</dd>
+<dt> &lsquo;<samp>slev, surround_mix_level</samp>&rsquo;</dt>
+<dd><p>Set the surround mix level. It is a value expressed in deciBel, and must
+be in the interval [-32,32].
+</p>
+</dd>
+<dt> &lsquo;<samp>lfe_mix_level</samp>&rsquo;</dt>
+<dd><p>Set LFE mix into non LFE level. It is used when there is a LFE input but no
+LFE output. It is a value expressed in deciBel, and must
+be in the interval [-32,32].
+</p>
+</dd>
+<dt> &lsquo;<samp>rmvol, rematrix_volume</samp>&rsquo;</dt>
+<dd><p>Set rematrix volume. Default value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>rematrix_maxval</samp>&rsquo;</dt>
+<dd><p>Set maximum output value for rematrixing.
+This can be used to prevent clipping vs. preventing volumn reduction
+A value of 1.0 prevents cliping.
+</p>
+</dd>
+<dt> &lsquo;<samp>flags, swr_flags</samp>&rsquo;</dt>
+<dd><p>Set flags used by the converter. Default value is 0.
+</p>
+<p>It supports the following individual flags:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>res</samp>&rsquo;</dt>
+<dd><p>force resampling, this flag forces resampling to be used even when the
+input and output sample rates match.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>dither_scale</samp>&rsquo;</dt>
+<dd><p>Set the dither scale. Default value is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>dither_method</samp>&rsquo;</dt>
+<dd><p>Set dither method. Default value is 0.
+</p>
+<p>Supported values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>rectangular</samp>&rsquo;</dt>
+<dd><p>select rectangular dither
+</p></dd>
+<dt> &lsquo;<samp>triangular</samp>&rsquo;</dt>
+<dd><p>select triangular dither
+</p></dd>
+<dt> &lsquo;<samp>triangular_hp</samp>&rsquo;</dt>
+<dd><p>select triangular dither with high pass
+</p></dd>
+<dt> &lsquo;<samp>lipshitz</samp>&rsquo;</dt>
+<dd><p>select lipshitz noise shaping dither
+</p></dd>
+<dt> &lsquo;<samp>shibata</samp>&rsquo;</dt>
+<dd><p>select shibata noise shaping dither
+</p></dd>
+<dt> &lsquo;<samp>low_shibata</samp>&rsquo;</dt>
+<dd><p>select low shibata noise shaping dither
+</p></dd>
+<dt> &lsquo;<samp>high_shibata</samp>&rsquo;</dt>
+<dd><p>select high shibata noise shaping dither
+</p></dd>
+<dt> &lsquo;<samp>f_weighted</samp>&rsquo;</dt>
+<dd><p>select f-weighted noise shaping dither
+</p></dd>
+<dt> &lsquo;<samp>modified_e_weighted</samp>&rsquo;</dt>
+<dd><p>select modified-e-weighted noise shaping dither
+</p></dd>
+<dt> &lsquo;<samp>improved_e_weighted</samp>&rsquo;</dt>
+<dd><p>select improved-e-weighted noise shaping dither
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>resampler</samp>&rsquo;</dt>
+<dd><p>Set resampling engine. Default value is swr.
+</p>
+<p>Supported values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>swr</samp>&rsquo;</dt>
+<dd><p>select the native SW Resampler; filter options precision and cheby are not
+applicable in this case.
+</p></dd>
+<dt> &lsquo;<samp>soxr</samp>&rsquo;</dt>
+<dd><p>select the SoX Resampler (where available); compensation, and filter options
+filter_size, phase_shift, filter_type &amp; kaiser_beta, are not applicable in this
+case.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>filter_size</samp>&rsquo;</dt>
+<dd><p>For swr only, set resampling filter size, default value is 32.
+</p>
+</dd>
+<dt> &lsquo;<samp>phase_shift</samp>&rsquo;</dt>
+<dd><p>For swr only, set resampling phase shift, default value is 10, and must be in
+the interval [0,30].
+</p>
+</dd>
+<dt> &lsquo;<samp>linear_interp</samp>&rsquo;</dt>
+<dd><p>Use Linear Interpolation if set to 1, default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>cutoff</samp>&rsquo;</dt>
+<dd><p>Set cutoff frequency (swr: 6dB point; soxr: 0dB point) ratio; must be a float
+value between 0 and 1.  Default value is 0.97 with swr, and 0.91 with soxr
+(which, with a sample-rate of 44100, preserves the entire audio band to 20kHz).
+</p>
+</dd>
+<dt> &lsquo;<samp>precision</samp>&rsquo;</dt>
+<dd><p>For soxr only, the precision in bits to which the resampled signal will be
+calculated.  The default value of 20 (which, with suitable dithering, is
+appropriate for a destination bit-depth of 16) gives SoX&rsquo;s &rsquo;High Quality&rsquo;; a
+value of 28 gives SoX&rsquo;s &rsquo;Very High Quality&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>cheby</samp>&rsquo;</dt>
+<dd><p>For soxr only, selects passband rolloff none (Chebyshev) &amp; higher-precision
+approximation for &rsquo;irrational&rsquo; ratios. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>async</samp>&rsquo;</dt>
+<dd><p>For swr only, simple 1 parameter audio sync to timestamps using stretching,
+squeezing, filling and trimming. Setting this to 1 will enable filling and
+trimming, larger values represent the maximum amount in samples that the data
+may be stretched or squeezed for each second.
+Default value is 0, thus no compensation is applied to make the samples match
+the audio timestamps.
+</p>
+</dd>
+<dt> &lsquo;<samp>first_pts</samp>&rsquo;</dt>
+<dd><p>For swr only, assume the first pts should be this value. The time unit is 1 / sample rate.
+This allows for padding/trimming at the start of stream. By default, no
+assumption is made about the first frame&rsquo;s expected pts, so no padding or
+trimming is done. For example, this could be set to 0 to pad the beginning with
+silence if an audio stream starts after the video stream or to trim any samples
+with a negative pts due to encoder delay.
+</p>
+</dd>
+<dt> &lsquo;<samp>min_comp</samp>&rsquo;</dt>
+<dd><p>For swr only, set the minimum difference between timestamps and audio data (in
+seconds) to trigger stretching/squeezing/filling or trimming of the
+data to make it match the timestamps. The default is that
+stretching/squeezing/filling and trimming is disabled
+(&lsquo;<samp>min_comp</samp>&rsquo; = <code>FLT_MAX</code>).
+</p>
+</dd>
+<dt> &lsquo;<samp>min_hard_comp</samp>&rsquo;</dt>
+<dd><p>For swr only, set the minimum difference between timestamps and audio data (in
+seconds) to trigger adding/dropping samples to make it match the
+timestamps.  This option effectively is a threshold to select between
+hard (trim/fill) and soft (squeeze/stretch) compensation. Note that
+all compensation is by default disabled through &lsquo;<samp>min_comp</samp>&rsquo;.
+The default is 0.1.
+</p>
+</dd>
+<dt> &lsquo;<samp>comp_duration</samp>&rsquo;</dt>
+<dd><p>For swr only, set duration (in seconds) over which data is stretched/squeezed
+to make it match the timestamps. Must be a non-negative double float value,
+default value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>max_soft_comp</samp>&rsquo;</dt>
+<dd><p>For swr only, set maximum factor by which data is stretched/squeezed to make it
+match the timestamps. Must be a non-negative double float value, default value
+is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>matrix_encoding</samp>&rsquo;</dt>
+<dd><p>Select matrixed stereo encoding.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>select none
+</p></dd>
+<dt> &lsquo;<samp>dolby</samp>&rsquo;</dt>
+<dd><p>select Dolby
+</p></dd>
+<dt> &lsquo;<samp>dplii</samp>&rsquo;</dt>
+<dd><p>select Dolby Pro Logic II
+</p></dd>
+</dl>
+
+<p>Default value is <code>none</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>filter_type</samp>&rsquo;</dt>
+<dd><p>For swr only, select resampling filter type. This only affects resampling
+operations.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>cubic</samp>&rsquo;</dt>
+<dd><p>select cubic
+</p></dd>
+<dt> &lsquo;<samp>blackman_nuttall</samp>&rsquo;</dt>
+<dd><p>select Blackman Nuttall Windowed Sinc
+</p></dd>
+<dt> &lsquo;<samp>kaiser</samp>&rsquo;</dt>
+<dd><p>select Kaiser Windowed Sinc
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>kaiser_beta</samp>&rsquo;</dt>
+<dd><p>For swr only, set Kaiser Window Beta value. Must be an integer in the
+interval [2,16], default value is 9.
+</p>
+</dd>
+<dt> &lsquo;<samp>output_sample_bits</samp>&rsquo;</dt>
+<dd><p>For swr only, set number of used output sample bits for dithering. Must be an integer in the
+interval [0,64], default value is 0, which means it&rsquo;s not used.
+</p>
+</dd>
+</dl>
+
+<p><a name="scaler_005foptions"></a>
+</p><a name="Scaler-Options"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Scaler-Options">25. Scaler Options</a></h1>
+
+<p>The video scaler supports the following named options.
+</p>
+<p>Options may be set by specifying -<var>option</var> <var>value</var> in the
+FFmpeg tools. For programmatic use, they can be set explicitly in the
+<code>SwsContext</code> options or through the &lsquo;<tt>libavutil/opt.h</tt>&rsquo; API.
+</p>
+<dl compact="compact">
+<dd>
+<p><a name="sws_005fflags"></a>
+</p></dd>
+<dt> &lsquo;<samp>sws_flags</samp>&rsquo;</dt>
+<dd><p>Set the scaler flags. This is also used to set the scaling
+algorithm. Only a single algorithm should be selected.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>fast_bilinear</samp>&rsquo;</dt>
+<dd><p>Select fast bilinear scaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>bilinear</samp>&rsquo;</dt>
+<dd><p>Select bilinear scaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>bicubic</samp>&rsquo;</dt>
+<dd><p>Select bicubic scaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>experimental</samp>&rsquo;</dt>
+<dd><p>Select experimental scaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>neighbor</samp>&rsquo;</dt>
+<dd><p>Select nearest neighbor rescaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>area</samp>&rsquo;</dt>
+<dd><p>Select averaging area rescaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>bicubiclin</samp>&rsquo;</dt>
+<dd><p>Select bicubic scaling algorithm for the luma component, bilinear for
+chroma components.
+</p>
+</dd>
+<dt> &lsquo;<samp>gauss</samp>&rsquo;</dt>
+<dd><p>Select Gaussian rescaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>sinc</samp>&rsquo;</dt>
+<dd><p>Select sinc rescaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>lanczos</samp>&rsquo;</dt>
+<dd><p>Select lanczos rescaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>spline</samp>&rsquo;</dt>
+<dd><p>Select natural bicubic spline rescaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>print_info</samp>&rsquo;</dt>
+<dd><p>Enable printing/debug logging.
+</p>
+</dd>
+<dt> &lsquo;<samp>accurate_rnd</samp>&rsquo;</dt>
+<dd><p>Enable accurate rounding.
+</p>
+</dd>
+<dt> &lsquo;<samp>full_chroma_int</samp>&rsquo;</dt>
+<dd><p>Enable full chroma interpolation.
+</p>
+</dd>
+<dt> &lsquo;<samp>full_chroma_inp</samp>&rsquo;</dt>
+<dd><p>Select full chroma input.
+</p>
+</dd>
+<dt> &lsquo;<samp>bitexact</samp>&rsquo;</dt>
+<dd><p>Enable bitexact output.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>srcw</samp>&rsquo;</dt>
+<dd><p>Set source width.
+</p>
+</dd>
+<dt> &lsquo;<samp>srch</samp>&rsquo;</dt>
+<dd><p>Set source height.
+</p>
+</dd>
+<dt> &lsquo;<samp>dstw</samp>&rsquo;</dt>
+<dd><p>Set destination width.
+</p>
+</dd>
+<dt> &lsquo;<samp>dsth</samp>&rsquo;</dt>
+<dd><p>Set destination height.
+</p>
+</dd>
+<dt> &lsquo;<samp>src_format</samp>&rsquo;</dt>
+<dd><p>Set source pixel format (must be expressed as an integer).
+</p>
+</dd>
+<dt> &lsquo;<samp>dst_format</samp>&rsquo;</dt>
+<dd><p>Set destination pixel format (must be expressed as an integer).
+</p>
+</dd>
+<dt> &lsquo;<samp>src_range</samp>&rsquo;</dt>
+<dd><p>Select source range.
+</p>
+</dd>
+<dt> &lsquo;<samp>dst_range</samp>&rsquo;</dt>
+<dd><p>Select destination range.
+</p>
+</dd>
+<dt> &lsquo;<samp>param0, param1</samp>&rsquo;</dt>
+<dd><p>Set scaling algorithm parameters. The specified values are specific of
+some scaling algorithms and ignored by others. The specified values
+are floating point number values.
+</p>
+</dd>
+<dt> &lsquo;<samp>sws_dither</samp>&rsquo;</dt>
+<dd><p>Set the dithering algorithm. Accepts one of the following
+values. Default value is &lsquo;<samp>auto</samp>&rsquo;.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>automatic choice
+</p>
+</dd>
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>no dithering
+</p>
+</dd>
+<dt> &lsquo;<samp>bayer</samp>&rsquo;</dt>
+<dd><p>bayer dither
+</p>
+</dd>
+<dt> &lsquo;<samp>ed</samp>&rsquo;</dt>
+<dd><p>error diffusion dither
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Filtering-Introduction"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Filtering-Introduction">26. Filtering Introduction</a></h1>
+
+<p>Filtering in FFmpeg is enabled through the libavfilter library.
+</p>
+<p>In libavfilter, a filter can have multiple inputs and multiple
+outputs.
+To illustrate the sorts of things that are possible, we consider the
+following filtergraph.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">                [main]
+input --&gt; split ---------------------&gt; overlay --&gt; output
+            |                             ^
+            |[tmp]                  [flip]|
+            +-----&gt; crop --&gt; vflip -------+
+</pre></td></tr></table>
+
+<p>This filtergraph splits the input 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:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -vf &quot;split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2&quot; OUTPUT
+</pre></td></tr></table>
+
+<p>The result will be that in output the top half of the video is mirrored
+onto the bottom half.
+</p>
+<p>Filters in the same linear chain are separated by commas, and distinct
+linear chains of filters are separated by semicolons. In our example,
+<var>crop,vflip</var> are in one linear chain, <var>split</var> and
+<var>overlay</var> are separately in another. The points where the linear
+chains join are labelled by names enclosed in square brackets. In the
+example, the split filter generates two outputs that are associated to
+the labels <var>[main]</var> and <var>[tmp]</var>.
+</p>
+<p>The stream sent to the second output of <var>split</var>, labelled as
+<var>[tmp]</var>, is processed through the <var>crop</var> filter, which crops
+away the lower half part of the video, and then vertically flipped. The
+<var>overlay</var> filter takes in input the first unchanged output of the
+split filter (which was labelled as <var>[main]</var>), and overlay on its
+lower half the output generated by the <var>crop,vflip</var> filterchain.
+</p>
+<p>Some filters take in input a list of parameters: they are specified
+after the filter name and an equal sign, and are separated from each other
+by a colon.
+</p>
+<p>There exist so-called <var>source filters</var> that do not have an
+audio/video input, and <var>sink filters</var> that will not have audio/video
+output.
+</p>
+
+<a name="graph2dot"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-graph2dot">27. graph2dot</a></h1>
+
+<p>The &lsquo;<tt>graph2dot</tt>&rsquo; program included in the FFmpeg &lsquo;<tt>tools</tt>&rsquo;
+directory can be used to parse a filtergraph description and issue a
+corresponding textual representation in the dot language.
+</p>
+<p>Invoke the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">graph2dot -h
+</pre></td></tr></table>
+
+<p>to see how to use &lsquo;<tt>graph2dot</tt>&rsquo;.
+</p>
+<p>You can then pass the dot description to the &lsquo;<tt>dot</tt>&rsquo; program (from
+the graphviz suite of programs) and obtain a graphical representation
+of the filtergraph.
+</p>
+<p>For example the sequence of commands:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">echo <var>GRAPH_DESCRIPTION</var> | \
+tools/graph2dot -o graph.tmp &amp;&amp; \
+dot -Tpng graph.tmp -o graph.png &amp;&amp; \
+display graph.png
+</pre></td></tr></table>
+
+<p>can be used to create and display an image representing the graph
+described by the <var>GRAPH_DESCRIPTION</var> string. Note that this string must be
+a complete self-contained graph, with its inputs and outputs explicitly defined.
+For example if your command line is of the form:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i infile -vf scale=640:360 outfile
+</pre></td></tr></table>
+<p>your <var>GRAPH_DESCRIPTION</var> string will need to be of the form:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">nullsrc,scale=640:360,nullsink
+</pre></td></tr></table>
+<p>you may also need to set the <var>nullsrc</var> parameters and add a <var>format</var>
+filter in order to simulate a specific input file.
+</p>
+
+<a name="Filtergraph-description"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Filtergraph-description">28. Filtergraph description</a></h1>
+
+<p>A filtergraph is a directed graph of connected filters. It can contain
+cycles, and there can be multiple links between a pair of
+filters. Each link has one input pad on one side connecting it to one
+filter from which it takes its input, and one output pad on the other
+side connecting it to the one filter accepting its output.
+</p>
+<p>Each filter in a filtergraph is an instance of a filter class
+registered in the application, which defines the features and the
+number of input and output pads of the filter.
+</p>
+<p>A filter with no input pads is called a &quot;source&quot;, a filter with no
+output pads is called a &quot;sink&quot;.
+</p>
+<p><a name="Filtergraph-syntax"></a>
+</p><a name="Filtergraph-syntax-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-Filtergraph-syntax-1">28.1 Filtergraph syntax</a></h2>
+
+<p>A filtergraph can be represented using a textual representation, which is
+recognized by the &lsquo;<samp>-filter</samp>&rsquo;/&lsquo;<samp>-vf</samp>&rsquo; and &lsquo;<samp>-filter_complex</samp>&rsquo;
+options in <code>ffmpeg</code> and &lsquo;<samp>-vf</samp>&rsquo; in <code>ffplay</code>, and by the
+<code>avfilter_graph_parse()</code>/<code>avfilter_graph_parse2()</code> function defined in
+&lsquo;<tt>libavfilter/avfilter.h</tt>&rsquo;.
+</p>
+<p>A filterchain consists of a sequence of connected filters, each one
+connected to the previous one in the sequence. A filterchain is
+represented by a list of &quot;,&quot;-separated filter descriptions.
+</p>
+<p>A filtergraph consists of a sequence of filterchains. A sequence of
+filterchains is represented by a list of &quot;;&quot;-separated filterchain
+descriptions.
+</p>
+<p>A filter is represented by a string of the form:
+[<var>in_link_1</var>]...[<var>in_link_N</var>]<var>filter_name</var>=<var>arguments</var>[<var>out_link_1</var>]...[<var>out_link_M</var>]
+</p>
+<p><var>filter_name</var> is the name of the filter class of which the
+described filter is an instance of, and has to be the name of one of
+the filter classes registered in the program.
+The name of the filter class is optionally followed by a string
+&quot;=<var>arguments</var>&quot;.
+</p>
+<p><var>arguments</var> is a string which contains the parameters used to
+initialize the filter instance. It may have one of the following forms:
+</p><ul>
+<li>
+A &rsquo;:&rsquo;-separated list of <var>key=value</var> pairs.
+
+</li><li>
+A &rsquo;:&rsquo;-separated list of <var>value</var>. In this case, the keys are assumed to be
+the option names in the order they are declared. E.g. the <code>fade</code> filter
+declares three options in this order &ndash; &lsquo;<samp>type</samp>&rsquo;, &lsquo;<samp>start_frame</samp>&rsquo; and
+&lsquo;<samp>nb_frames</samp>&rsquo;. Then the parameter list <var>in:0:30</var> means that the value
+<var>in</var> is assigned to the option &lsquo;<samp>type</samp>&rsquo;, <var>0</var> to
+&lsquo;<samp>start_frame</samp>&rsquo; and <var>30</var> to &lsquo;<samp>nb_frames</samp>&rsquo;.
+
+</li><li>
+A &rsquo;:&rsquo;-separated list of mixed direct <var>value</var> and long <var>key=value</var>
+pairs. The direct <var>value</var> must precede the <var>key=value</var> pairs, and
+follow the same constraints order of the previous point. The following
+<var>key=value</var> pairs can be set in any preferred order.
+
+</li></ul>
+
+<p>If the option value itself is a list of items (e.g. the <code>format</code> filter
+takes a list of pixel formats), the items in the list are usually separated by
+&rsquo;|&rsquo;.
+</p>
+<p>The list of arguments can be quoted using the character &quot;&rsquo;&quot; as initial
+and ending mark, and the character &rsquo;\&rsquo; for escaping the characters
+within the quoted text; otherwise the argument string is considered
+terminated when the next special character (belonging to the set
+&quot;[]=;,&quot;) is encountered.
+</p>
+<p>The name and arguments of the filter are optionally preceded and
+followed by a list of link labels.
+A link label allows to name a link and associate it to a filter output
+or input pad. The preceding labels <var>in_link_1</var>
+... <var>in_link_N</var>, are associated to the filter input pads,
+the following labels <var>out_link_1</var> ... <var>out_link_M</var>, are
+associated to the output pads.
+</p>
+<p>When two link labels with the same name are found in the
+filtergraph, a link between the corresponding input and output pad is
+created.
+</p>
+<p>If an output pad is not labelled, it is linked by default to the first
+unlabelled input pad of the next filter in the filterchain.
+For example in the filterchain:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">nullsrc, split[L1], [L2]overlay, nullsink
+</pre></td></tr></table>
+<p>the split filter instance has two output pads, and the overlay filter
+instance two input pads. The first output pad of split is labelled
+&quot;L1&quot;, the first input pad of overlay is labelled &quot;L2&quot;, and the second
+output pad of split is linked to the second input pad of overlay,
+which are both unlabelled.
+</p>
+<p>In a complete filterchain all the unlabelled filter input and output
+pads must be connected. A filtergraph is considered valid if all the
+filter input and output pads of all the filterchains are connected.
+</p>
+<p>Libavfilter will automatically insert <a href="#scale">scale</a> filters where format
+conversion is required. It is possible to specify swscale flags
+for those automatically inserted scalers by prepending
+<code>sws_flags=<var>flags</var>;</code>
+to the filtergraph description.
+</p>
+<p>Follows a BNF description for the filtergraph syntax:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>NAME</var>             ::= sequence of alphanumeric characters and '_'
+<var>LINKLABEL</var>        ::= &quot;[&quot; <var>NAME</var> &quot;]&quot;
+<var>LINKLABELS</var>       ::= <var>LINKLABEL</var> [<var>LINKLABELS</var>]
+<var>FILTER_ARGUMENTS</var> ::= sequence of chars (eventually quoted)
+<var>FILTER</var>           ::= [<var>LINKLABELS</var>] <var>NAME</var> [&quot;=&quot; <var>FILTER_ARGUMENTS</var>] [<var>LINKLABELS</var>]
+<var>FILTERCHAIN</var>      ::= <var>FILTER</var> [,<var>FILTERCHAIN</var>]
+<var>FILTERGRAPH</var>      ::= [sws_flags=<var>flags</var>;] <var>FILTERCHAIN</var> [;<var>FILTERGRAPH</var>]
+</pre></td></tr></table>
+
+<a name="Notes-on-filtergraph-escaping"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-Notes-on-filtergraph-escaping">28.2 Notes on filtergraph escaping</a></h2>
+
+<p>Some filter arguments require the use of special characters, typically
+<code>:</code> to separate key=value pairs in a named options list. In this
+case the user should perform a first level escaping when specifying
+the filter arguments. For example, consider the following literal
+string to be embedded in the <a href="#drawtext">drawtext</a> filter arguments:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">this is a 'string': may contain one, or more, special characters
+</pre></td></tr></table>
+
+<p>Since <code>:</code> is special for the filter arguments syntax, it needs to
+be escaped, so you get:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">text=this is a \'string\'\: may contain one, or more, special characters
+</pre></td></tr></table>
+
+<p>A second level of escaping is required when embedding the filter
+arguments in a filtergraph description, in order to escape all the
+filtergraph special characters. Thus the example above becomes:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">drawtext=text=this is a \\\'string\\\'\\: may contain one\, or more\, special characters
+</pre></td></tr></table>
+
+<p>Finally an additional level of escaping may be needed when writing the
+filtergraph description in a shell command, which depends on the
+escaping rules of the adopted shell. For example, assuming that
+<code>\</code> is special and needs to be escaped with another <code>\</code>, the
+previous string will finally result in:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">-vf &quot;drawtext=text=this is a \\\\\\'string\\\\\\'\\\\: may contain one\\, or more\\, special characters&quot;
+</pre></td></tr></table>
+
+<p>Sometimes, it might be more convenient to employ quoting in place of
+escaping. For example the string:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">Caesar: tu quoque, Brute, fili mi
+</pre></td></tr></table>
+
+<p>Can be quoted in the filter arguments as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">text='Caesar: tu quoque, Brute, fili mi'
+</pre></td></tr></table>
+
+<p>And finally inserted in a filtergraph like:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">drawtext=text=\'Caesar: tu quoque\, Brute\, fili mi\'
+</pre></td></tr></table>
+
+<p>See the &ldquo;Quoting and escaping&rdquo; section in the ffmpeg-utils manual
+for more information about the escaping and quoting rules adopted by
+FFmpeg.
+</p>
+<a name="Timeline-editing"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Timeline-editing">29. Timeline editing</a></h1>
+
+<p>Some filters support a generic &lsquo;<samp>enable</samp>&rsquo; option. For the filters
+supporting timeline editing, this option can be set to an expression which is
+evaluated before sending a frame to the filter. If the evaluation is non-zero,
+the filter will be enabled, otherwise the frame will be sent unchanged to the
+next filter in the filtergraph.
+</p>
+<p>The expression accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>timestamp expressed in seconds, NAN if the input timestamp is unknown
+</p>
+</dd>
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>sequential number of the input frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
+<dd><p>the position in the file of the input frame, NAN if unknown
+</p></dd>
+</dl>
+
+<p>Additionally, these filters support an &lsquo;<samp>enable</samp>&rsquo; command that can be used
+to re-define the expression.
+</p>
+<p>Like any other filtering option, the &lsquo;<samp>enable</samp>&rsquo; option follows the same
+rules.
+</p>
+<p>For example, to enable a blur filter (<a href="#smartblur">smartblur</a>) from 10 seconds to 3
+minutes, and a <a href="#curves">curves</a> filter starting at 3 seconds:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">smartblur = enable='between(t,10,3*60)',
+curves    = enable='gte(t,3)' : preset=cross_process
+</pre></td></tr></table>
+
+
+<a name="Audio-Filters"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Audio-Filters">30. Audio Filters</a></h1>
+
+<p>When you configure your FFmpeg build, you can disable any of the
+existing filters using <code>--disable-filters</code>.
+The configure output will show the audio filters included in your
+build.
+</p>
+<p>Below is a description of the currently available audio filters.
+</p>
+<a name="aconvert"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-aconvert">30.1 aconvert</a></h2>
+
+<p>Convert the input audio format to the specified formats.
+</p>
+<p><em>This filter is deprecated. Use <a href="#aformat">aformat</a> instead.</em>
+</p>
+<p>The filter accepts a string of the form:
+&quot;<var>sample_format</var>:<var>channel_layout</var>&quot;.
+</p>
+<p><var>sample_format</var> specifies the sample format, and can be a string or the
+corresponding numeric value defined in &lsquo;<tt>libavutil/samplefmt.h</tt>&rsquo;. Use &rsquo;p&rsquo;
+suffix for a planar sample format.
+</p>
+<p><var>channel_layout</var> specifies the channel layout, and can be a string
+or the corresponding number value defined in &lsquo;<tt>libavutil/channel_layout.h</tt>&rsquo;.
+</p>
+<p>The special parameter &quot;auto&quot;, signifies that the filter will
+automatically select the output format depending on the output filter.
+</p>
+<a name="Examples-47"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-47">30.1.1 Examples</a></h3>
+
+<ul>
+<li>
+Convert input to float, planar, stereo:
+<table><tr><td>&nbsp;</td><td><pre class="example">aconvert=fltp:stereo
+</pre></td></tr></table>
+
+</li><li>
+Convert input to unsigned 8-bit, automatically select out channel layout:
+<table><tr><td>&nbsp;</td><td><pre class="example">aconvert=u8:auto
+</pre></td></tr></table>
+</li></ul>
+
+<a name="adelay"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-adelay">30.2 adelay</a></h2>
+
+<p>Delay one or more audio channels.
+</p>
+<p>Samples in delayed channel are filled with silence.
+</p>
+<p>The filter accepts the following option:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>delays</samp>&rsquo;</dt>
+<dd><p>Set list of delays in milliseconds for each channel separated by &rsquo;|&rsquo;.
+At least one delay greater than 0 should be provided.
+Unused delays will be silently ignored. If number of given delays is
+smaller than number of channels all remaining channels will not be delayed.
+</p></dd>
+</dl>
+
+<a name="Examples-41"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-41">30.2.1 Examples</a></h3>
+
+<ul>
+<li>
+Delay first channel by 1.5 seconds, the third channel by 0.5 seconds and leave
+the second channel (and any other channels that may be present) unchanged.
+<table><tr><td>&nbsp;</td><td><pre class="example">adelay=1500|0|500
+</pre></td></tr></table>
+</li></ul>
+
+<a name="aecho"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-aecho">30.3 aecho</a></h2>
+
+<p>Apply echoing to the input audio.
+</p>
+<p>Echoes are reflected sound and can occur naturally amongst mountains
+(and sometimes large buildings) when talking or shouting; digital echo
+effects emulate this behaviour and are often used to help fill out the
+sound of a single instrument or vocal. The time difference between the
+original signal and the reflection is the <code>delay</code>, and the
+loudness of the reflected signal is the <code>decay</code>.
+Multiple echoes can have different delays and decays.
+</p>
+<p>A description of the accepted parameters follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>in_gain</samp>&rsquo;</dt>
+<dd><p>Set input gain of reflected signal. Default is <code>0.6</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>out_gain</samp>&rsquo;</dt>
+<dd><p>Set output gain of reflected signal. Default is <code>0.3</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>delays</samp>&rsquo;</dt>
+<dd><p>Set list of time intervals in milliseconds between original signal and reflections
+separated by &rsquo;|&rsquo;. Allowed range for each <code>delay</code> is <code>(0 - 90000.0]</code>.
+Default is <code>1000</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>decays</samp>&rsquo;</dt>
+<dd><p>Set list of loudnesses of reflected signals separated by &rsquo;|&rsquo;.
+Allowed range for each <code>decay</code> is <code>(0 - 1.0]</code>.
+Default is <code>0.5</code>.
+</p></dd>
+</dl>
+
+<a name="Examples-19"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-19">30.3.1 Examples</a></h3>
+
+<ul>
+<li>
+Make it sound as if there are twice as many instruments as are actually playing:
+<table><tr><td>&nbsp;</td><td><pre class="example">aecho=0.8:0.88:60:0.4
+</pre></td></tr></table>
+
+</li><li>
+If delay is very short, then it sound like a (metallic) robot playing music:
+<table><tr><td>&nbsp;</td><td><pre class="example">aecho=0.8:0.88:6:0.4
+</pre></td></tr></table>
+
+</li><li>
+A longer delay will sound like an open air concert in the mountains:
+<table><tr><td>&nbsp;</td><td><pre class="example">aecho=0.8:0.9:1000:0.3
+</pre></td></tr></table>
+
+</li><li>
+Same as above but with one more mountain:
+<table><tr><td>&nbsp;</td><td><pre class="example">aecho=0.8:0.9:1000|1800:0.3|0.25
+</pre></td></tr></table>
+</li></ul>
+
+<a name="aeval"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-aeval">30.4 aeval</a></h2>
+
+<p>Modify an audio signal according to the specified expressions.
+</p>
+<p>This filter accepts one or more expressions (one for each channel),
+which are evaluated and used to modify a corresponding audio signal.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>exprs</samp>&rsquo;</dt>
+<dd><p>Set the &rsquo;|&rsquo;-separated expressions list for each separate channel. If
+the number of input channels is greater than the number of
+expressions, the last specified expression is used for the remaining
+output channels.
+</p>
+</dd>
+<dt> &lsquo;<samp>channel_layout, c</samp>&rsquo;</dt>
+<dd><p>Set output channel layout. If not specified, the channel layout is
+specified by the number of expressions. If set to &lsquo;<samp>same</samp>&rsquo;, it will
+use by default the same input channel layout.
+</p></dd>
+</dl>
+
+<p>Each expression in <var>exprs</var> can contain the following constants and functions:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>ch</samp>&rsquo;</dt>
+<dd><p>channel number of the current expression
+</p>
+</dd>
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>number of the evaluated sample, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>sample rate
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>time of the evaluated sample expressed in seconds
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_in_channels</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>nb_out_channels</samp>&rsquo;</dt>
+<dd><p>input and output number of channels
+</p>
+</dd>
+<dt> &lsquo;<samp>val(CH)</samp>&rsquo;</dt>
+<dd><p>the value of input channel with number <var>CH</var>
+</p></dd>
+</dl>
+
+<p>Note: this filter is slow. For faster processing you should use a
+dedicated filter.
+</p>
+<a name="Examples-34"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-34">30.4.1 Examples</a></h3>
+
+<ul>
+<li>
+Half volume:
+<table><tr><td>&nbsp;</td><td><pre class="example">aeval=val(ch)/2:c=same
+</pre></td></tr></table>
+
+</li><li>
+Invert phase of the second channel:
+<table><tr><td>&nbsp;</td><td><pre class="example">eval=val(0)|-val(1)
+</pre></td></tr></table>
+</li></ul>
+
+<a name="afade"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-afade">30.5 afade</a></h2>
+
+<p>Apply fade-in/out effect to input audio.
+</p>
+<p>A description of the accepted parameters follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>type, t</samp>&rsquo;</dt>
+<dd><p>Specify the effect type, can be either <code>in</code> for fade-in, or
+<code>out</code> for a fade-out effect. Default is <code>in</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_sample, ss</samp>&rsquo;</dt>
+<dd><p>Specify the number of the start sample for starting to apply the fade
+effect. Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_samples, ns</samp>&rsquo;</dt>
+<dd><p>Specify the number of samples for which the fade effect has to last. At
+the end of the fade-in effect the output audio will have the same
+volume as the input audio, at the end of the fade-out transition
+the output audio will be silence. Default is 44100.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_time, st</samp>&rsquo;</dt>
+<dd><p>Specify time for starting to apply the fade effect. Default is 0.
+The accepted syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[-]HH[:MM[:SS[.m...]]]
+[-]S+[.m...]
+</pre></td></tr></table>
+<p>See also the function <code>av_parse_time()</code>.
+If set this option is used instead of <var>start_sample</var> one.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
+<dd><p>Specify the duration for which the fade effect has to last. Default is 0.
+The accepted syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[-]HH[:MM[:SS[.m...]]]
+[-]S+[.m...]
+</pre></td></tr></table>
+<p>See also the function <code>av_parse_time()</code>.
+At the end of the fade-in effect the output audio will have the same
+volume as the input audio, at the end of the fade-out transition
+the output audio will be silence.
+If set this option is used instead of <var>nb_samples</var> one.
+</p>
+</dd>
+<dt> &lsquo;<samp>curve</samp>&rsquo;</dt>
+<dd><p>Set curve for fade transition.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>tri</samp>&rsquo;</dt>
+<dd><p>select triangular, linear slope (default)
+</p></dd>
+<dt> &lsquo;<samp>qsin</samp>&rsquo;</dt>
+<dd><p>select quarter of sine wave
+</p></dd>
+<dt> &lsquo;<samp>hsin</samp>&rsquo;</dt>
+<dd><p>select half of sine wave
+</p></dd>
+<dt> &lsquo;<samp>esin</samp>&rsquo;</dt>
+<dd><p>select exponential sine wave
+</p></dd>
+<dt> &lsquo;<samp>log</samp>&rsquo;</dt>
+<dd><p>select logarithmic
+</p></dd>
+<dt> &lsquo;<samp>par</samp>&rsquo;</dt>
+<dd><p>select inverted parabola
+</p></dd>
+<dt> &lsquo;<samp>qua</samp>&rsquo;</dt>
+<dd><p>select quadratic
+</p></dd>
+<dt> &lsquo;<samp>cub</samp>&rsquo;</dt>
+<dd><p>select cubic
+</p></dd>
+<dt> &lsquo;<samp>squ</samp>&rsquo;</dt>
+<dd><p>select square root
+</p></dd>
+<dt> &lsquo;<samp>cbr</samp>&rsquo;</dt>
+<dd><p>select cubic root
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<a name="Examples-24"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-24">30.5.1 Examples</a></h3>
+
+<ul>
+<li>
+Fade in first 15 seconds of audio:
+<table><tr><td>&nbsp;</td><td><pre class="example">afade=t=in:ss=0:d=15
+</pre></td></tr></table>
+
+</li><li>
+Fade out last 25 seconds of a 900 seconds audio:
+<table><tr><td>&nbsp;</td><td><pre class="example">afade=t=out:st=875:d=25
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="aformat"></a>
+</p><a name="aformat-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-aformat-1">30.6 aformat</a></h2>
+
+<p>Set output format constraints for the input audio. The framework will
+negotiate the most appropriate format to minimize conversions.
+</p>
+<p>The filter accepts the following named parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sample_fmts</samp>&rsquo;</dt>
+<dd><p>A &rsquo;|&rsquo;-separated list of requested sample formats.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rates</samp>&rsquo;</dt>
+<dd><p>A &rsquo;|&rsquo;-separated list of requested sample rates.
+</p>
+</dd>
+<dt> &lsquo;<samp>channel_layouts</samp>&rsquo;</dt>
+<dd><p>A &rsquo;|&rsquo;-separated list of requested channel layouts.
+</p>
+<p>See <a href="ffmpeg-utils.html#channel-layout-syntax">(ffmpeg-utils)channel layout syntax</a>
+for the required syntax.
+</p></dd>
+</dl>
+
+<p>If a parameter is omitted, all values are allowed.
+</p>
+<p>For example to force the output to either unsigned 8-bit or signed 16-bit stereo:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">aformat=sample_fmts=u8|s16:channel_layouts=stereo
+</pre></td></tr></table>
+
+<a name="allpass"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-allpass">30.7 allpass</a></h2>
+
+<p>Apply a two-pole all-pass filter with central frequency (in Hz)
+<var>frequency</var>, and filter-width <var>width</var>.
+An all-pass filter changes the audio&rsquo;s frequency to phase relationship
+without changing its frequency to amplitude relationship.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set frequency in Hz.
+</p>
+</dd>
+<dt> &lsquo;<samp>width_type</samp>&rsquo;</dt>
+<dd><p>Set method to specify band-width of filter.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Hz
+</p></dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Q-Factor
+</p></dd>
+<dt> &lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>octave
+</p></dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>slope
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dd><p>Specify the band-width of a filter in width_type units.
+</p></dd>
+</dl>
+
+<a name="amerge"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-amerge">30.8 amerge</a></h2>
+
+<p>Merge two or more audio streams into a single multi-channel stream.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>inputs</samp>&rsquo;</dt>
+<dd><p>Set the number of inputs. Default is 2.
+</p>
+</dd>
+</dl>
+
+<p>If the channel layouts of the inputs are disjoint, and therefore compatible,
+the channel layout of the output will be set accordingly and the channels
+will be reordered as necessary. If the channel layouts of the inputs are not
+disjoint, the output will have all the channels of the first input then all
+the channels of the second input, in that order, and the channel layout of
+the output will be the default value corresponding to the total number of
+channels.
+</p>
+<p>For example, if the first input is in 2.1 (FL+FR+LF) and the second input
+is FC+BL+BR, then the output will be in 5.1, with the channels in the
+following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
+first input, b1 is the first channel of the second input).
+</p>
+<p>On the other hand, if both input are in stereo, the output channels will be
+in the default order: a1, a2, b1, b2, and the channel layout will be
+arbitrarily set to 4.0, which may or may not be the expected value.
+</p>
+<p>All inputs must have the same sample rate, and format.
+</p>
+<p>If inputs do not have the same duration, the output will stop with the
+shortest.
+</p>
+<a name="Examples-62"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-62">30.8.1 Examples</a></h3>
+
+<ul>
+<li>
+Merge two mono files into a stereo stream:
+<table><tr><td>&nbsp;</td><td><pre class="example">amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
+</pre></td></tr></table>
+
+</li><li>
+Multiple merges assuming 1 video stream and 6 audio streams in &lsquo;<tt>input.mkv</tt>&rsquo;:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.mkv -filter_complex &quot;[0:1][0:2][0:3][0:4][0:5][0:6] amerge=inputs=6&quot; -c:a pcm_s16le output.mkv
+</pre></td></tr></table>
+</li></ul>
+
+<a name="amix"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-amix">30.9 amix</a></h2>
+
+<p>Mixes multiple audio inputs into a single output.
+</p>
+<p>For example
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
+</pre></td></tr></table>
+<p>will mix 3 input audio streams to a single output with the same duration as the
+first input and a dropout transition time of 3 seconds.
+</p>
+<p>The filter accepts the following named parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>inputs</samp>&rsquo;</dt>
+<dd><p>Number of inputs. If unspecified, it defaults to 2.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration</samp>&rsquo;</dt>
+<dd><p>How to determine the end-of-stream.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>longest</samp>&rsquo;</dt>
+<dd><p>Duration of longest input. (default)
+</p>
+</dd>
+<dt> &lsquo;<samp>shortest</samp>&rsquo;</dt>
+<dd><p>Duration of shortest input.
+</p>
+</dd>
+<dt> &lsquo;<samp>first</samp>&rsquo;</dt>
+<dd><p>Duration of first input.
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>dropout_transition</samp>&rsquo;</dt>
+<dd><p>Transition time, in seconds, for volume renormalization when an input
+stream ends. The default value is 2 seconds.
+</p>
+</dd>
+</dl>
+
+<a name="anull"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-anull">30.10 anull</a></h2>
+
+<p>Pass the audio source unchanged to the output.
+</p>
+<a name="apad"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-apad">30.11 apad</a></h2>
+
+<p>Pad the end of a audio stream with silence, this can be used together with
+-shortest to extend audio streams to the same length as the video stream.
+</p>
+<a name="aphaser"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-aphaser">30.12 aphaser</a></h2>
+<p>Add a phasing effect to the input audio.
+</p>
+<p>A phaser filter creates series of peaks and troughs in the frequency spectrum.
+The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
+</p>
+<p>A description of the accepted parameters follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>in_gain</samp>&rsquo;</dt>
+<dd><p>Set input gain. Default is 0.4.
+</p>
+</dd>
+<dt> &lsquo;<samp>out_gain</samp>&rsquo;</dt>
+<dd><p>Set output gain. Default is 0.74
+</p>
+</dd>
+<dt> &lsquo;<samp>delay</samp>&rsquo;</dt>
+<dd><p>Set delay in milliseconds. Default is 3.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>decay</samp>&rsquo;</dt>
+<dd><p>Set decay. Default is 0.4.
+</p>
+</dd>
+<dt> &lsquo;<samp>speed</samp>&rsquo;</dt>
+<dd><p>Set modulation speed in Hz. Default is 0.5.
+</p>
+</dd>
+<dt> &lsquo;<samp>type</samp>&rsquo;</dt>
+<dd><p>Set modulation type. Default is triangular.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>triangular, t</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sinusoidal, s</samp>&rsquo;</dt>
+</dl>
+</dd>
+</dl>
+
+<p><a name="aresample"></a>
+</p><a name="aresample-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-aresample-1">30.13 aresample</a></h2>
+
+<p>Resample the input audio to the specified parameters, using the
+libswresample library. If none are specified then the filter will
+automatically convert between its input and output.
+</p>
+<p>This filter is also able to stretch/squeeze the audio data to make it match
+the timestamps or to inject silence / cut out audio to make it match the
+timestamps, do a combination of both or do neither.
+</p>
+<p>The filter accepts the syntax
+[<var>sample_rate</var>:]<var>resampler_options</var>, where <var>sample_rate</var>
+expresses a sample rate and <var>resampler_options</var> is a list of
+<var>key</var>=<var>value</var> pairs, separated by &quot;:&quot;. See the
+ffmpeg-resampler manual for the complete list of supported options.
+</p>
+<a name="Examples-22"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-22">30.13.1 Examples</a></h3>
+
+<ul>
+<li>
+Resample the input audio to 44100Hz:
+<table><tr><td>&nbsp;</td><td><pre class="example">aresample=44100
+</pre></td></tr></table>
+
+</li><li>
+Stretch/squeeze samples to the given timestamps, with a maximum of 1000
+samples per second compensation:
+<table><tr><td>&nbsp;</td><td><pre class="example">aresample=async=1000
+</pre></td></tr></table>
+</li></ul>
+
+<a name="asetnsamples"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-asetnsamples">30.14 asetnsamples</a></h2>
+
+<p>Set the number of samples per each output audio frame.
+</p>
+<p>The last output packet may contain a different number of samples, as
+the filter will flush all the remaining samples when the input audio
+signal its end.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>nb_out_samples, n</samp>&rsquo;</dt>
+<dd><p>Set the number of frames per each output audio frame. The number is
+intended as the number of samples <em>per each channel</em>.
+Default value is 1024.
+</p>
+</dd>
+<dt> &lsquo;<samp>pad, p</samp>&rsquo;</dt>
+<dd><p>If set to 1, the filter will pad the last audio frame with zeroes, so
+that the last frame will contain the same number of samples as the
+previous ones. Default value is 1.
+</p></dd>
+</dl>
+
+<p>For example, to set the number of per-frame samples to 1234 and
+disable padding for the last frame, use:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">asetnsamples=n=1234:p=0
+</pre></td></tr></table>
+
+<a name="asetrate"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-asetrate">30.15 asetrate</a></h2>
+
+<p>Set the sample rate without altering the PCM data.
+This will result in a change of speed and pitch.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>sample_rate, r</samp>&rsquo;</dt>
+<dd><p>Set the output sample rate. Default is 44100 Hz.
+</p></dd>
+</dl>
+
+<a name="ashowinfo"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-ashowinfo">30.16 ashowinfo</a></h2>
+
+<p>Show a line containing various information for each input audio frame.
+The input audio is not modified.
+</p>
+<p>The shown line contains a sequence of key/value pairs of the form
+<var>key</var>:<var>value</var>.
+</p>
+<p>A description of each shown parameter follows:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>sequential number of the input frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
+<dd><p>Presentation timestamp of the input frame, in time base units; the time base
+depends on the filter input pad, and is usually 1/<var>sample_rate</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>pts_time</samp>&rsquo;</dt>
+<dd><p>presentation timestamp of the input frame in seconds
+</p>
+</dd>
+<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
+<dd><p>position of the frame in the input stream, -1 if this information in
+unavailable and/or meaningless (for example in case of synthetic audio)
+</p>
+</dd>
+<dt> &lsquo;<samp>fmt</samp>&rsquo;</dt>
+<dd><p>sample format
+</p>
+</dd>
+<dt> &lsquo;<samp>chlayout</samp>&rsquo;</dt>
+<dd><p>channel layout
+</p>
+</dd>
+<dt> &lsquo;<samp>rate</samp>&rsquo;</dt>
+<dd><p>sample rate for the audio frame
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_samples</samp>&rsquo;</dt>
+<dd><p>number of samples (per channel) in the frame
+</p>
+</dd>
+<dt> &lsquo;<samp>checksum</samp>&rsquo;</dt>
+<dd><p>Adler-32 checksum (printed in hexadecimal) of the audio data. For planar audio
+the data is treated as if all the planes were concatenated.
+</p>
+</dd>
+<dt> &lsquo;<samp>plane_checksums</samp>&rsquo;</dt>
+<dd><p>A list of Adler-32 checksums for each data plane.
+</p></dd>
+</dl>
+
+<a name="astats"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-astats">30.17 astats</a></h2>
+
+<p>Display time domain statistical information about the audio channels.
+Statistics are calculated and displayed for each audio channel and,
+where applicable, an overall figure is also given.
+</p>
+<p>The filter accepts the following option:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>length</samp>&rsquo;</dt>
+<dd><p>Short window length in seconds, used for peak and trough RMS measurement.
+Default is <code>0.05</code> (50 miliseconds). Allowed range is <code>[0.1 - 10]</code>.
+</p></dd>
+</dl>
+
+<p>A description of each shown parameter follows:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>DC offset</samp>&rsquo;</dt>
+<dd><p>Mean amplitude displacement from zero.
+</p>
+</dd>
+<dt> &lsquo;<samp>Min level</samp>&rsquo;</dt>
+<dd><p>Minimal sample level.
+</p>
+</dd>
+<dt> &lsquo;<samp>Max level</samp>&rsquo;</dt>
+<dd><p>Maximal sample level.
+</p>
+</dd>
+<dt> &lsquo;<samp>Peak level dB</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>RMS level dB</samp>&rsquo;</dt>
+<dd><p>Standard peak and RMS level measured in dBFS.
+</p>
+</dd>
+<dt> &lsquo;<samp>RMS peak dB</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>RMS trough dB</samp>&rsquo;</dt>
+<dd><p>Peak and trough values for RMS level measured over a short window.
+</p>
+</dd>
+<dt> &lsquo;<samp>Crest factor</samp>&rsquo;</dt>
+<dd><p>Standard ratio of peak to RMS level (note: not in dB).
+</p>
+</dd>
+<dt> &lsquo;<samp>Flat factor</samp>&rsquo;</dt>
+<dd><p>Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
+(i.e. either <var>Min level</var> or <var>Max level</var>).
+</p>
+</dd>
+<dt> &lsquo;<samp>Peak count</samp>&rsquo;</dt>
+<dd><p>Number of occasions (not the number of samples) that the signal attained either
+<var>Min level</var> or <var>Max level</var>.
+</p></dd>
+</dl>
+
+<a name="astreamsync"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-astreamsync">30.18 astreamsync</a></h2>
+
+<p>Forward two audio streams and control the order the buffers are forwarded.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>expr, e</samp>&rsquo;</dt>
+<dd><p>Set the expression deciding which stream should be
+forwarded next: if the result is negative, the first stream is forwarded; if
+the result is positive or zero, the second stream is forwarded. It can use
+the following variables:
+</p>
+<dl compact="compact">
+<dt> <var>b1 b2</var></dt>
+<dd><p>number of buffers forwarded so far on each stream
+</p></dd>
+<dt> <var>s1 s2</var></dt>
+<dd><p>number of samples forwarded so far on each stream
+</p></dd>
+<dt> <var>t1 t2</var></dt>
+<dd><p>current timestamp of each stream
+</p></dd>
+</dl>
+
+<p>The default value is <code>t1-t2</code>, which means to always forward the stream
+that has a smaller timestamp.
+</p></dd>
+</dl>
+
+<a name="Examples-46"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-46">30.18.1 Examples</a></h3>
+
+<p>Stress-test <code>amerge</code> by randomly sending buffers on the wrong
+input, while avoiding too much of a desynchronization:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">amovie=file.ogg [a] ; amovie=file.mp3 [b] ;
+[a] [b] astreamsync=(2*random(1))-1+tanh(5*(t1-t2)) [a2] [b2] ;
+[a2] [b2] amerge
+</pre></td></tr></table>
+
+<a name="asyncts"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-asyncts">30.19 asyncts</a></h2>
+
+<p>Synchronize audio data with timestamps by squeezing/stretching it and/or
+dropping samples/adding silence when needed.
+</p>
+<p>This filter is not built by default, please use <a href="#aresample">aresample</a> to do squeezing/stretching.
+</p>
+<p>The filter accepts the following named parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>compensate</samp>&rsquo;</dt>
+<dd><p>Enable stretching/squeezing the data to make it match the timestamps. Disabled
+by default. When disabled, time gaps are covered with silence.
+</p>
+</dd>
+<dt> &lsquo;<samp>min_delta</samp>&rsquo;</dt>
+<dd><p>Minimum difference between timestamps and audio data (in seconds) to trigger
+adding/dropping samples. Default value is 0.1. If you get non-perfect sync with
+this filter, try setting this parameter to 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>max_comp</samp>&rsquo;</dt>
+<dd><p>Maximum compensation in samples per second. Relevant only with compensate=1.
+Default value 500.
+</p>
+</dd>
+<dt> &lsquo;<samp>first_pts</samp>&rsquo;</dt>
+<dd><p>Assume the first pts should be this value. The time base is 1 / sample rate.
+This allows for padding/trimming at the start of stream. By default, no
+assumption is made about the first frame&rsquo;s expected pts, so no padding or
+trimming is done. For example, this could be set to 0 to pad the beginning with
+silence if an audio stream starts after the video stream or to trim any samples
+with a negative pts due to encoder delay.
+</p>
+</dd>
+</dl>
+
+<a name="atempo"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-atempo">30.20 atempo</a></h2>
+
+<p>Adjust audio tempo.
+</p>
+<p>The filter accepts exactly one parameter, the audio tempo. If not
+specified then the filter will assume nominal 1.0 tempo. Tempo must
+be in the [0.5, 2.0] range.
+</p>
+<a name="Examples-60"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-60">30.20.1 Examples</a></h3>
+
+<ul>
+<li>
+Slow down audio to 80% tempo:
+<table><tr><td>&nbsp;</td><td><pre class="example">atempo=0.8
+</pre></td></tr></table>
+
+</li><li>
+To speed up audio to 125% tempo:
+<table><tr><td>&nbsp;</td><td><pre class="example">atempo=1.25
+</pre></td></tr></table>
+</li></ul>
+
+<a name="atrim"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-atrim">30.21 atrim</a></h2>
+
+<p>Trim the input so that the output contains one continuous subpart of the input.
+</p>
+<p>This filter accepts the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>start</samp>&rsquo;</dt>
+<dd><p>Specify time of the start of the kept section, i.e. the audio sample
+with the timestamp <var>start</var> will be the first sample in the output.
+</p>
+</dd>
+<dt> &lsquo;<samp>end</samp>&rsquo;</dt>
+<dd><p>Specify time of the first audio sample that will be dropped, i.e. the
+audio sample immediately preceding the one with the timestamp <var>end</var> will be
+the last sample in the output.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_pts</samp>&rsquo;</dt>
+<dd><p>Same as <var>start</var>, except this option sets the start timestamp in samples
+instead of seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>end_pts</samp>&rsquo;</dt>
+<dd><p>Same as <var>end</var>, except this option sets the end timestamp in samples instead
+of seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration</samp>&rsquo;</dt>
+<dd><p>Specify maximum duration of the output.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_sample</samp>&rsquo;</dt>
+<dd><p>Number of the first sample that should be passed to output.
+</p>
+</dd>
+<dt> &lsquo;<samp>end_sample</samp>&rsquo;</dt>
+<dd><p>Number of the first sample that should be dropped.
+</p></dd>
+</dl>
+
+<p>&lsquo;<samp>start</samp>&rsquo;, &lsquo;<samp>end</samp>&rsquo;, &lsquo;<samp>duration</samp>&rsquo; are expressed as time
+duration specifications, check the &quot;Time duration&quot; section in the
+ffmpeg-utils manual.
+</p>
+<p>Note that the first two sets of the start/end options and the &lsquo;<samp>duration</samp>&rsquo;
+option look at the frame timestamp, while the _sample options simply count the
+samples that pass through the filter. So start/end_pts and start/end_sample will
+give different results when the timestamps are wrong, inexact or do not start at
+zero. Also note that this filter does not modify the timestamps. If you wish
+that the output timestamps start at zero, insert the asetpts filter after the
+atrim filter.
+</p>
+<p>If multiple start or end options are set, this filter tries to be greedy and
+keep all samples that match at least one of the specified constraints. To keep
+only the part that matches all the constraints at once, chain multiple atrim
+filters.
+</p>
+<p>The defaults are such that all the input is kept. So it is possible to set e.g.
+just the end values to keep everything before the specified time.
+</p>
+<p>Examples:
+</p><ul>
+<li>
+drop everything except the second minute of input
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -af atrim=60:120
+</pre></td></tr></table>
+
+</li><li>
+keep only the first 1000 samples
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -af atrim=end_sample=1000
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="bandpass"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-bandpass">30.22 bandpass</a></h2>
+
+<p>Apply a two-pole Butterworth band-pass filter with central
+frequency <var>frequency</var>, and (3dB-point) band-width width.
+The <var>csg</var> option selects a constant skirt gain (peak gain = Q)
+instead of the default: constant 0dB peak gain.
+The filter roll off at 6dB per octave (20dB per decade).
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set the filter&rsquo;s central frequency. Default is <code>3000</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>csg</samp>&rsquo;</dt>
+<dd><p>Constant skirt gain if set to 1. Defaults to 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>width_type</samp>&rsquo;</dt>
+<dd><p>Set method to specify band-width of filter.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Hz
+</p></dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Q-Factor
+</p></dd>
+<dt> &lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>octave
+</p></dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>slope
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dd><p>Specify the band-width of a filter in width_type units.
+</p></dd>
+</dl>
+
+<a name="bandreject"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-bandreject">30.23 bandreject</a></h2>
+
+<p>Apply a two-pole Butterworth band-reject filter with central
+frequency <var>frequency</var>, and (3dB-point) band-width <var>width</var>.
+The filter roll off at 6dB per octave (20dB per decade).
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set the filter&rsquo;s central frequency. Default is <code>3000</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>width_type</samp>&rsquo;</dt>
+<dd><p>Set method to specify band-width of filter.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Hz
+</p></dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Q-Factor
+</p></dd>
+<dt> &lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>octave
+</p></dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>slope
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dd><p>Specify the band-width of a filter in width_type units.
+</p></dd>
+</dl>
+
+<a name="bass"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-bass">30.24 bass</a></h2>
+
+<p>Boost or cut the bass (lower) frequencies of the audio using a two-pole
+shelving filter with a response similar to that of a standard
+hi-fi&rsquo;s tone-controls. This is also known as shelving equalisation (EQ).
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>gain, g</samp>&rsquo;</dt>
+<dd><p>Give the gain at 0 Hz. Its useful range is about -20
+(for a large cut) to +20 (for a large boost).
+Beware of clipping when using a positive gain.
+</p>
+</dd>
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set the filter&rsquo;s central frequency and so can be used
+to extend or reduce the frequency range to be boosted or cut.
+The default value is <code>100</code> Hz.
+</p>
+</dd>
+<dt> &lsquo;<samp>width_type</samp>&rsquo;</dt>
+<dd><p>Set method to specify band-width of filter.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Hz
+</p></dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Q-Factor
+</p></dd>
+<dt> &lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>octave
+</p></dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>slope
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dd><p>Determine how steep is the filter&rsquo;s shelf transition.
+</p></dd>
+</dl>
+
+<a name="biquad"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-biquad">30.25 biquad</a></h2>
+
+<p>Apply a biquad IIR filter with the given coefficients.
+Where <var>b0</var>, <var>b1</var>, <var>b2</var> and <var>a0</var>, <var>a1</var>, <var>a2</var>
+are the numerator and denominator coefficients respectively.
+</p>
+<a name="channelmap"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-channelmap">30.26 channelmap</a></h2>
+
+<p>Remap input channels to new locations.
+</p>
+<p>This filter accepts the following named parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>channel_layout</samp>&rsquo;</dt>
+<dd><p>Channel layout of the output stream.
+</p>
+</dd>
+<dt> &lsquo;<samp>map</samp>&rsquo;</dt>
+<dd><p>Map channels from input to output. The argument is a &rsquo;|&rsquo;-separated list of
+mappings, each in the <code><var>in_channel</var>-<var>out_channel</var></code> or
+<var>in_channel</var> form. <var>in_channel</var> can be either the name of the input
+channel (e.g. FL for front left) or its index in the input channel layout.
+<var>out_channel</var> is the name of the output channel or its index in the output
+channel layout. If <var>out_channel</var> is not given then it is implicitly an
+index, starting with zero and increasing by one for each mapping.
+</p></dd>
+</dl>
+
+<p>If no mapping is present, the filter will implicitly map input channels to
+output channels preserving index.
+</p>
+<p>For example, assuming a 5.1+downmix input MOV file
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
+</pre></td></tr></table>
+<p>will create an output WAV file tagged as stereo from the downmix channels of
+the input.
+</p>
+<p>To fix a 5.1 WAV improperly encoded in AAC&rsquo;s native channel order
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:channel_layout=5.1' out.wav
+</pre></td></tr></table>
+
+<a name="channelsplit"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-channelsplit">30.27 channelsplit</a></h2>
+
+<p>Split each channel in input audio stream into a separate output stream.
+</p>
+<p>This filter accepts the following named parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>channel_layout</samp>&rsquo;</dt>
+<dd><p>Channel layout of the input stream. Default is &quot;stereo&quot;.
+</p></dd>
+</dl>
+
+<p>For example, assuming a stereo input MP3 file
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
+</pre></td></tr></table>
+<p>will create an output Matroska file with two audio streams, one containing only
+the left channel and the other the right channel.
+</p>
+<p>To split a 5.1 WAV file into per-channel files
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.wav -filter_complex
+'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
+-map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
+front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
+side_right.wav
+</pre></td></tr></table>
+
+<a name="compand"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-compand">30.28 compand</a></h2>
+
+<p>Compress or expand audio dynamic range.
+</p>
+<p>A description of the accepted options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>attacks</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>decays</samp>&rsquo;</dt>
+<dd><p>Set list of times in seconds for each channel over which the instantaneous
+level of the input signal is averaged to determine its volume.
+&lsquo;<samp>attacks</samp>&rsquo; refers to increase of volume and &lsquo;<samp>decays</samp>&rsquo; refers
+to decrease of volume.
+For most situations, the attack time (response to the audio getting louder)
+should be shorter than the decay time because the human ear is more sensitive
+to sudden loud audio than sudden soft audio.
+Typical value for attack is <code>0.3</code> seconds and for decay <code>0.8</code>
+seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>points</samp>&rsquo;</dt>
+<dd><p>Set list of points for transfer function, specified in dB relative to maximum
+possible signal amplitude.
+Each key points list need to be defined using the following syntax:
+<code>x0/y0 x1/y1 x2/y2 ...</code>.
+</p>
+<p>The input values must be in strictly increasing order but the transfer
+function does not have to be monotonically rising.
+The point <code>0/0</code> is assumed but may be overridden (by <code>0/out-dBn</code>).
+Typical values for the transfer function are <code>-70/-70 -60/-20</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>soft-knee</samp>&rsquo;</dt>
+<dd><p>Set amount for which the points at where adjacent line segments on the
+transfer function meet will be rounded. Defaults is <code>0.01</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>gain</samp>&rsquo;</dt>
+<dd><p>Set additional gain in dB to be applied at all points on the transfer function
+and allows easy adjustment of the overall gain.
+Default is <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>volume</samp>&rsquo;</dt>
+<dd><p>Set initial volume in dB to be assumed for each channel when filtering starts.
+This permits the user to supply a nominal level initially, so that,
+for example, a very large gain is not applied to initial signal levels before
+the companding has begun to operate. A typical value for audio which is
+initially quiet is -90 dB. Default is <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>delay</samp>&rsquo;</dt>
+<dd><p>Set delay in seconds. Default is <code>0</code>. The input audio
+is analysed immediately, but audio is delayed before being fed to the
+volume adjuster. Specifying a delay approximately equal to the attack/decay
+times allows the filter to effectively operate in predictive rather than
+reactive mode.
+</p></dd>
+</dl>
+
+<a name="Examples-15"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-15">30.28.1 Examples</a></h3>
+<ul>
+<li>
+Make music with both quiet and loud passages suitable for listening
+in a noisy environment:
+<table><tr><td>&nbsp;</td><td><pre class="example">compand=.3 .3:1 1:-90/-60 -60/-40 -40/-30 -20/-20:6:0:-90:0.2
+</pre></td></tr></table>
+
+</li><li>
+Noise-gate for when the noise is at a lower level than the signal:
+<table><tr><td>&nbsp;</td><td><pre class="example">compand=.1 .1:.2 .2:-900/-900 -50.1/-900 -50/-50:.01:0:-90:.1
+</pre></td></tr></table>
+
+</li><li>
+Here is another noise-gate, this time for when the noise is at a higher level
+than the signal (making it, in some ways, similar to squelch):
+<table><tr><td>&nbsp;</td><td><pre class="example">compand=.1 .1:.1 .1:-45.1/-45.1 -45/-900 0/-900:.01:45:-90:.1
+</pre></td></tr></table>
+</li></ul>
+
+<a name="earwax"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-earwax">30.29 earwax</a></h2>
+
+<p>Make audio easier to listen to on headphones.
+</p>
+<p>This filter adds &lsquo;cues&rsquo; to 44.1kHz stereo (i.e. audio CD format) audio
+so that when listened to on headphones the stereo image is moved from
+inside your head (standard for headphones) to outside and in front of
+the listener (standard for speakers).
+</p>
+<p>Ported from SoX.
+</p>
+<a name="equalizer"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-equalizer">30.30 equalizer</a></h2>
+
+<p>Apply a two-pole peaking equalisation (EQ) filter. With this
+filter, the signal-level at and around a selected frequency can
+be increased or decreased, whilst (unlike bandpass and bandreject
+filters) that at all other frequencies is unchanged.
+</p>
+<p>In order to produce complex equalisation curves, this filter can
+be given several times, each with a different central frequency.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set the filter&rsquo;s central frequency in Hz.
+</p>
+</dd>
+<dt> &lsquo;<samp>width_type</samp>&rsquo;</dt>
+<dd><p>Set method to specify band-width of filter.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Hz
+</p></dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Q-Factor
+</p></dd>
+<dt> &lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>octave
+</p></dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>slope
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dd><p>Specify the band-width of a filter in width_type units.
+</p>
+</dd>
+<dt> &lsquo;<samp>gain, g</samp>&rsquo;</dt>
+<dd><p>Set the required gain or attenuation in dB.
+Beware of clipping when using a positive gain.
+</p></dd>
+</dl>
+
+<a name="highpass"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-highpass">30.31 highpass</a></h2>
+
+<p>Apply a high-pass filter with 3dB point frequency.
+The filter can be either single-pole, or double-pole (the default).
+The filter roll off at 6dB per pole per octave (20dB per pole per decade).
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set frequency in Hz. Default is 3000.
+</p>
+</dd>
+<dt> &lsquo;<samp>poles, p</samp>&rsquo;</dt>
+<dd><p>Set number of poles. Default is 2.
+</p>
+</dd>
+<dt> &lsquo;<samp>width_type</samp>&rsquo;</dt>
+<dd><p>Set method to specify band-width of filter.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Hz
+</p></dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Q-Factor
+</p></dd>
+<dt> &lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>octave
+</p></dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>slope
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dd><p>Specify the band-width of a filter in width_type units.
+Applies only to double-pole filter.
+The default is 0.707q and gives a Butterworth response.
+</p></dd>
+</dl>
+
+<a name="join"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-join">30.32 join</a></h2>
+
+<p>Join multiple input streams into one multi-channel stream.
+</p>
+<p>The filter accepts the following named parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>inputs</samp>&rsquo;</dt>
+<dd><p>Number of input streams. Defaults to 2.
+</p>
+</dd>
+<dt> &lsquo;<samp>channel_layout</samp>&rsquo;</dt>
+<dd><p>Desired output channel layout. Defaults to stereo.
+</p>
+</dd>
+<dt> &lsquo;<samp>map</samp>&rsquo;</dt>
+<dd><p>Map channels from inputs to output. The argument is a &rsquo;|&rsquo;-separated list of
+mappings, each in the <code><var>input_idx</var>.<var>in_channel</var>-<var>out_channel</var></code>
+form. <var>input_idx</var> is the 0-based index of the input stream. <var>in_channel</var>
+can be either the name of the input channel (e.g. FL for front left) or its
+index in the specified input stream. <var>out_channel</var> is the name of the output
+channel.
+</p></dd>
+</dl>
+
+<p>The filter will attempt to guess the mappings when those are not specified
+explicitly. It does so by first trying to find an unused matching input channel
+and if that fails it picks the first unused input channel.
+</p>
+<p>E.g. to join 3 inputs (with properly set channel layouts)
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
+</pre></td></tr></table>
+
+<p>To build a 5.1 output from 6 single-channel streams:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
+'join=inputs=6:channel_layout=5.1:map=0.0-FL|1.0-FR|2.0-FC|3.0-SL|4.0-SR|5.0-LFE'
+out
+</pre></td></tr></table>
+
+<a name="ladspa"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-ladspa">30.33 ladspa</a></h2>
+
+<p>Load a LADSPA (Linux Audio Developer&rsquo;s Simple Plugin API) plugin.
+</p>
+<p>To enable compilation of this filter you need to configure FFmpeg with
+<code>--enable-ladspa</code>.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>file, f</samp>&rsquo;</dt>
+<dd><p>Specifies the name of LADSPA plugin library to load. If the environment
+variable <code>LADSPA_PATH</code> is defined, the LADSPA plugin is searched in
+each one of the directories specified by the colon separated list in
+<code>LADSPA_PATH</code>, otherwise in the standard LADSPA paths, which are in
+this order: &lsquo;<tt>HOME/.ladspa/lib/</tt>&rsquo;, &lsquo;<tt>/usr/local/lib/ladspa/</tt>&rsquo;,
+&lsquo;<tt>/usr/lib/ladspa/</tt>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>plugin, p</samp>&rsquo;</dt>
+<dd><p>Specifies the plugin within the library. Some libraries contain only
+one plugin, but others contain many of them. If this is not set filter
+will list all available plugins within the specified library.
+</p>
+</dd>
+<dt> &lsquo;<samp>controls, c</samp>&rsquo;</dt>
+<dd><p>Set the &rsquo;|&rsquo; separated list of controls which are zero or more floating point
+values that determine the behavior of the loaded plugin (for example delay,
+threshold or gain).
+Controls need to be defined using the following syntax:
+c0=<var>value0</var>|c1=<var>value1</var>|c2=<var>value2</var>|..., where
+<var>valuei</var> is the value set on the <var>i</var>-th control.
+If &lsquo;<samp>controls</samp>&rsquo; is set to <code>help</code>, all available controls and
+their valid ranges are printed.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate, s</samp>&rsquo;</dt>
+<dd><p>Specify the sample rate, default to 44100. Only used if plugin have
+zero inputs.
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_samples, n</samp>&rsquo;</dt>
+<dd><p>Set the number of samples per channel per each output frame, default
+is 1024. Only used if plugin have zero inputs.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
+<dd><p>Set the minimum duration of the sourced audio. See the function
+<code>av_parse_time()</code> for the accepted format, also check the &quot;Time duration&quot;
+section in the ffmpeg-utils manual.
+Note that the resulting duration may be greater than the specified duration,
+as the generated audio is always cut at the end of a complete frame.
+If not specified, or the expressed duration is negative, the audio is
+supposed to be generated forever.
+Only used if plugin have zero inputs.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-9"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-9">30.33.1 Examples</a></h3>
+
+<ul>
+<li>
+List all available plugins within amp (LADSPA example plugin) library:
+<table><tr><td>&nbsp;</td><td><pre class="example">ladspa=file=amp
+</pre></td></tr></table>
+
+</li><li>
+List all available controls and their valid ranges for <code>vcf_notch</code>
+plugin from <code>VCF</code> library:
+<table><tr><td>&nbsp;</td><td><pre class="example">ladspa=f=vcf:p=vcf_notch:c=help
+</pre></td></tr></table>
+
+</li><li>
+Simulate low quality audio equipment using <code>Computer Music Toolkit</code> (CMT)
+plugin library:
+<table><tr><td>&nbsp;</td><td><pre class="example">ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
+</pre></td></tr></table>
+
+</li><li>
+Add reverberation to the audio using TAP-plugins
+(Tom&rsquo;s Audio Processing plugins):
+<table><tr><td>&nbsp;</td><td><pre class="example">ladspa=file=tap_reverb:tap_reverb
+</pre></td></tr></table>
+
+</li><li>
+Generate white noise, with 0.2 amplitude:
+<table><tr><td>&nbsp;</td><td><pre class="example">ladspa=file=cmt:noise_source_white:c=c0=.2
+</pre></td></tr></table>
+
+</li><li>
+Generate 20 bpm clicks using plugin <code>C* Click - Metronome</code> from the
+<code>C* Audio Plugin Suite</code> (CAPS) library:
+<table><tr><td>&nbsp;</td><td><pre class="example">ladspa=file=caps:Click:c=c1=20'
+</pre></td></tr></table>
+
+</li><li>
+Apply <code>C* Eq10X2 - Stereo 10-band equaliser</code> effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
+</pre></td></tr></table>
+</li></ul>
+
+<a name="Commands-3"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Commands-3">30.33.2 Commands</a></h3>
+
+<p>This filter supports the following commands:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>cN</samp>&rsquo;</dt>
+<dd><p>Modify the <var>N</var>-th control value.
+</p>
+<p>If the specified value is not valid, it is ignored and prior one is kept.
+</p></dd>
+</dl>
+
+<a name="lowpass"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-lowpass">30.34 lowpass</a></h2>
+
+<p>Apply a low-pass filter with 3dB point frequency.
+The filter can be either single-pole or double-pole (the default).
+The filter roll off at 6dB per pole per octave (20dB per pole per decade).
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set frequency in Hz. Default is 500.
+</p>
+</dd>
+<dt> &lsquo;<samp>poles, p</samp>&rsquo;</dt>
+<dd><p>Set number of poles. Default is 2.
+</p>
+</dd>
+<dt> &lsquo;<samp>width_type</samp>&rsquo;</dt>
+<dd><p>Set method to specify band-width of filter.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Hz
+</p></dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Q-Factor
+</p></dd>
+<dt> &lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>octave
+</p></dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>slope
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dd><p>Specify the band-width of a filter in width_type units.
+Applies only to double-pole filter.
+The default is 0.707q and gives a Butterworth response.
+</p></dd>
+</dl>
+
+<a name="pan"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-pan">30.35 pan</a></h2>
+
+<p>Mix channels with specific gain levels. The filter accepts the output
+channel layout followed by a set of channels definitions.
+</p>
+<p>This filter is also designed to remap efficiently the channels of an audio
+stream.
+</p>
+<p>The filter accepts parameters of the form:
+&quot;<var>l</var>:<var>outdef</var>:<var>outdef</var>:...&quot;
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>l</samp>&rsquo;</dt>
+<dd><p>output channel layout or number of channels
+</p>
+</dd>
+<dt> &lsquo;<samp>outdef</samp>&rsquo;</dt>
+<dd><p>output channel specification, of the form:
+&quot;<var>out_name</var>=[<var>gain</var>*]<var>in_name</var>[+[<var>gain</var>*]<var>in_name</var>...]&quot;
+</p>
+</dd>
+<dt> &lsquo;<samp>out_name</samp>&rsquo;</dt>
+<dd><p>output channel to define, either a channel name (FL, FR, etc.) or a channel
+number (c0, c1, etc.)
+</p>
+</dd>
+<dt> &lsquo;<samp>gain</samp>&rsquo;</dt>
+<dd><p>multiplicative coefficient for the channel, 1 leaving the volume unchanged
+</p>
+</dd>
+<dt> &lsquo;<samp>in_name</samp>&rsquo;</dt>
+<dd><p>input channel to use, see out_name for details; it is not possible to mix
+named and numbered input channels
+</p></dd>
+</dl>
+
+<p>If the &lsquo;=&rsquo; in a channel specification is replaced by &lsquo;&lt;&rsquo;, then the gains for
+that specification will be renormalized so that the total is 1, thus
+avoiding clipping noise.
+</p>
+<a name="Mixing-examples"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Mixing-examples">30.35.1 Mixing examples</a></h3>
+
+<p>For example, if you want to down-mix from stereo to mono, but with a bigger
+factor for the left channel:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pan=1:c0=0.9*c0+0.1*c1
+</pre></td></tr></table>
+
+<p>A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
+7-channels surround:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pan=stereo: FL &lt; FL + 0.5*FC + 0.6*BL + 0.6*SL : FR &lt; FR + 0.5*FC + 0.6*BR + 0.6*SR
+</pre></td></tr></table>
+
+<p>Note that <code>ffmpeg</code> integrates a default down-mix (and up-mix) system
+that should be preferred (see &quot;-ac&quot; option) unless you have very specific
+needs.
+</p>
+<a name="Remapping-examples"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Remapping-examples">30.35.2 Remapping examples</a></h3>
+
+<p>The channel remapping will be effective if, and only if:
+</p>
+<ul>
+<li> gain coefficients are zeroes or ones,
+</li><li> only one input per channel output,
+</li></ul>
+
+<p>If all these conditions are satisfied, the filter will notify the user (&quot;Pure
+channel mapping detected&quot;), and use an optimized and lossless method to do the
+remapping.
+</p>
+<p>For example, if you have a 5.1 source and want a stereo audio stream by
+dropping the extra channels:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pan=&quot;stereo: c0=FL : c1=FR&quot;
+</pre></td></tr></table>
+
+<p>Given the same source, you can also switch front left and front right channels
+and keep the input channel layout:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pan=&quot;5.1: c0=c1 : c1=c0 : c2=c2 : c3=c3 : c4=c4 : c5=c5&quot;
+</pre></td></tr></table>
+
+<p>If the input is a stereo audio stream, you can mute the front left channel (and
+still keep the stereo channel layout) with:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pan=&quot;stereo:c1=c1&quot;
+</pre></td></tr></table>
+
+<p>Still with a stereo audio stream input, you can copy the right channel in both
+front left and right:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pan=&quot;stereo: c0=FR : c1=FR&quot;
+</pre></td></tr></table>
+
+<a name="replaygain"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-replaygain">30.36 replaygain</a></h2>
+
+<p>ReplayGain scanner filter. This filter takes an audio stream as an input and
+outputs it unchanged.
+At end of filtering it displays <code>track_gain</code> and <code>track_peak</code>.
+</p>
+<a name="resample"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-resample">30.37 resample</a></h2>
+
+<p>Convert the audio sample format, sample rate and channel layout. This filter is
+not meant to be used directly.
+</p>
+<a name="silencedetect"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-silencedetect">30.38 silencedetect</a></h2>
+
+<p>Detect silence in an audio stream.
+</p>
+<p>This filter logs a message when it detects that the input audio volume is less
+or equal to a noise tolerance value for a duration greater or equal to the
+minimum detected noise duration.
+</p>
+<p>The printed times and duration are expressed in seconds.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
+<dd><p>Set silence duration until notification (default is 2 seconds).
+</p>
+</dd>
+<dt> &lsquo;<samp>noise, n</samp>&rsquo;</dt>
+<dd><p>Set noise tolerance. Can be specified in dB (in case &quot;dB&quot; is appended to the
+specified value) or amplitude ratio. Default is -60dB, or 0.001.
+</p></dd>
+</dl>
+
+<a name="Examples-64"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-64">30.38.1 Examples</a></h3>
+
+<ul>
+<li>
+Detect 5 seconds of silence with -50dB noise tolerance:
+<table><tr><td>&nbsp;</td><td><pre class="example">silencedetect=n=-50dB:d=5
+</pre></td></tr></table>
+
+</li><li>
+Complete example with <code>ffmpeg</code> to detect silence with 0.0001 noise
+tolerance in &lsquo;<tt>silence.mp3</tt>&rsquo;:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
+</pre></td></tr></table>
+</li></ul>
+
+<a name="treble"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-treble">30.39 treble</a></h2>
+
+<p>Boost or cut treble (upper) frequencies of the audio using a two-pole
+shelving filter with a response similar to that of a standard
+hi-fi&rsquo;s tone-controls. This is also known as shelving equalisation (EQ).
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>gain, g</samp>&rsquo;</dt>
+<dd><p>Give the gain at whichever is the lower of ~22 kHz and the
+Nyquist frequency. Its useful range is about -20 (for a large cut)
+to +20 (for a large boost). Beware of clipping when using a positive gain.
+</p>
+</dd>
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set the filter&rsquo;s central frequency and so can be used
+to extend or reduce the frequency range to be boosted or cut.
+The default value is <code>3000</code> Hz.
+</p>
+</dd>
+<dt> &lsquo;<samp>width_type</samp>&rsquo;</dt>
+<dd><p>Set method to specify band-width of filter.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Hz
+</p></dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Q-Factor
+</p></dd>
+<dt> &lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>octave
+</p></dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>slope
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dd><p>Determine how steep is the filter&rsquo;s shelf transition.
+</p></dd>
+</dl>
+
+<a name="volume"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-volume">30.40 volume</a></h2>
+
+<p>Adjust the input audio volume.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>volume</samp>&rsquo;</dt>
+<dd><p>Expresses how the audio volume will be increased or decreased.
+</p>
+<p>Output values are clipped to the maximum value.
+</p>
+<p>The output audio volume is given by the relation:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>output_volume</var> = <var>volume</var> * <var>input_volume</var>
+</pre></td></tr></table>
+
+<p>Default value for <var>volume</var> is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>precision</samp>&rsquo;</dt>
+<dd><p>Set the mathematical precision.
+</p>
+<p>This determines which input sample formats will be allowed, which affects the
+precision of the volume scaling.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>fixed</samp>&rsquo;</dt>
+<dd><p>8-bit fixed-point; limits input sample format to U8, S16, and S32.
+</p></dd>
+<dt> &lsquo;<samp>float</samp>&rsquo;</dt>
+<dd><p>32-bit floating-point; limits input sample format to FLT. (default)
+</p></dd>
+<dt> &lsquo;<samp>double</samp>&rsquo;</dt>
+<dd><p>64-bit floating-point; limits input sample format to DBL.
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<a name="Examples-80"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-80">30.40.1 Examples</a></h3>
+
+<ul>
+<li>
+Halve the input audio volume:
+<table><tr><td>&nbsp;</td><td><pre class="example">volume=volume=0.5
+volume=volume=1/2
+volume=volume=-6.0206dB
+</pre></td></tr></table>
+
+<p>In all the above example the named key for &lsquo;<samp>volume</samp>&rsquo; can be
+omitted, for example like in:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">volume=0.5
+</pre></td></tr></table>
+
+</li><li>
+Increase input audio power by 6 decibels using fixed-point precision:
+<table><tr><td>&nbsp;</td><td><pre class="example">volume=volume=6dB:precision=fixed
+</pre></td></tr></table>
+</li></ul>
+
+<a name="volumedetect"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-volumedetect">30.41 volumedetect</a></h2>
+
+<p>Detect the volume of the input video.
+</p>
+<p>The filter has no parameters. The input is not modified. Statistics about
+the volume will be printed in the log when the input stream end is reached.
+</p>
+<p>In particular it will show the mean volume (root mean square), maximum
+volume (on a per-sample basis), and the beginning of a histogram of the
+registered volume values (from the maximum value to a cumulated 1/1000 of
+the samples).
+</p>
+<p>All volumes are in decibels relative to the maximum PCM value.
+</p>
+<a name="Examples-55"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-55">30.41.1 Examples</a></h3>
+
+<p>Here is an excerpt of the output:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[Parsed_volumedetect_0 &nbsp;0xa23120] mean_volume: -27 dB
+[Parsed_volumedetect_0 &nbsp;0xa23120] max_volume: -4 dB
+[Parsed_volumedetect_0 &nbsp;0xa23120] histogram_4db: 6
+[Parsed_volumedetect_0 &nbsp;0xa23120] histogram_5db: 62
+[Parsed_volumedetect_0 &nbsp;0xa23120] histogram_6db: 286
+[Parsed_volumedetect_0 &nbsp;0xa23120] histogram_7db: 1042
+[Parsed_volumedetect_0 &nbsp;0xa23120] histogram_8db: 2551
+[Parsed_volumedetect_0 &nbsp;0xa23120] histogram_9db: 4609
+[Parsed_volumedetect_0 &nbsp;0xa23120] histogram_10db: 8409
+</pre></td></tr></table>
+
+<p>It means that:
+</p><ul>
+<li>
+The mean square energy is approximately -27 dB, or 10^-2.7.
+</li><li>
+The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
+</li><li>
+There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
+</li></ul>
+
+<p>In other words, raising the volume by +4 dB does not cause any clipping,
+raising it by +5 dB causes clipping for 6 samples, etc.
+</p>
+
+<a name="Audio-Sources"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Audio-Sources">31. Audio Sources</a></h1>
+
+<p>Below is a description of the currently available audio sources.
+</p>
+<a name="abuffer"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-abuffer">31.1 abuffer</a></h2>
+
+<p>Buffer audio frames, and make them available to the filter chain.
+</p>
+<p>This source is mainly intended for a programmatic use, in particular
+through the interface defined in &lsquo;<tt>libavfilter/asrc_abuffer.h</tt>&rsquo;.
+</p>
+<p>It accepts the following named parameters:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>time_base</samp>&rsquo;</dt>
+<dd><p>Timebase which will be used for timestamps of submitted frames. It must be
+either a floating-point number or in <var>numerator</var>/<var>denominator</var> form.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate</samp>&rsquo;</dt>
+<dd><p>The sample rate of the incoming audio buffers.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_fmt</samp>&rsquo;</dt>
+<dd><p>The sample format of the incoming audio buffers.
+Either a sample format name or its corresponging integer representation from
+the enum AVSampleFormat in &lsquo;<tt>libavutil/samplefmt.h</tt>&rsquo;
+</p>
+</dd>
+<dt> &lsquo;<samp>channel_layout</samp>&rsquo;</dt>
+<dd><p>The channel layout of the incoming audio buffers.
+Either a channel layout name from channel_layout_map in
+&lsquo;<tt>libavutil/channel_layout.c</tt>&rsquo; or its corresponding integer representation
+from the AV_CH_LAYOUT_* macros in &lsquo;<tt>libavutil/channel_layout.h</tt>&rsquo;
+</p>
+</dd>
+<dt> &lsquo;<samp>channels</samp>&rsquo;</dt>
+<dd><p>The number of channels of the incoming audio buffers.
+If both <var>channels</var> and <var>channel_layout</var> are specified, then they
+must be consistent.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-27"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-27">31.1.1 Examples</a></h3>
+
+<table><tr><td>&nbsp;</td><td><pre class="example">abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
+</pre></td></tr></table>
+
+<p>will instruct the source to accept planar 16bit signed stereo at 44100Hz.
+Since the sample format with name &quot;s16p&quot; corresponds to the number
+6 and the &quot;stereo&quot; channel layout corresponds to the value 0x3, this is
+equivalent to:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
+</pre></td></tr></table>
+
+<a name="aevalsrc"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-aevalsrc">31.2 aevalsrc</a></h2>
+
+<p>Generate an audio signal specified by an expression.
+</p>
+<p>This source accepts in input one or more expressions (one for each
+channel), which are evaluated and used to generate a corresponding
+audio signal.
+</p>
+<p>This source accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>exprs</samp>&rsquo;</dt>
+<dd><p>Set the &rsquo;|&rsquo;-separated expressions list for each separate channel. In case the
+&lsquo;<samp>channel_layout</samp>&rsquo; option is not specified, the selected channel layout
+depends on the number of provided expressions. Otherwise the last
+specified expression is applied to the remaining output channels.
+</p>
+</dd>
+<dt> &lsquo;<samp>channel_layout, c</samp>&rsquo;</dt>
+<dd><p>Set the channel layout. The number of channels in the specified layout
+must be equal to the number of specified expressions.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
+<dd><p>Set the minimum duration of the sourced audio. See the function
+<code>av_parse_time()</code> for the accepted format.
+Note that the resulting duration may be greater than the specified
+duration, as the generated audio is always cut at the end of a
+complete frame.
+</p>
+<p>If not specified, or the expressed duration is negative, the audio is
+supposed to be generated forever.
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_samples, n</samp>&rsquo;</dt>
+<dd><p>Set the number of samples per channel per each output frame,
+default to 1024.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate, s</samp>&rsquo;</dt>
+<dd><p>Specify the sample rate, default to 44100.
+</p></dd>
+</dl>
+
+<p>Each expression in <var>exprs</var> can contain the following constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>number of the evaluated sample, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>time of the evaluated sample expressed in seconds, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>sample rate
+</p>
+</dd>
+</dl>
+
+<a name="Examples-78"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-78">31.2.1 Examples</a></h3>
+
+<ul>
+<li>
+Generate silence:
+<table><tr><td>&nbsp;</td><td><pre class="example">aevalsrc=0
+</pre></td></tr></table>
+
+</li><li>
+Generate a sin signal with frequency of 440 Hz, set sample rate to
+8000 Hz:
+<table><tr><td>&nbsp;</td><td><pre class="example">aevalsrc=&quot;sin(440*2*PI*t):s=8000&quot;
+</pre></td></tr></table>
+
+</li><li>
+Generate a two channels signal, specify the channel layout (Front
+Center + Back Center) explicitly:
+<table><tr><td>&nbsp;</td><td><pre class="example">aevalsrc=&quot;sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC&quot;
+</pre></td></tr></table>
+
+</li><li>
+Generate white noise:
+<table><tr><td>&nbsp;</td><td><pre class="example">aevalsrc=&quot;-2+random(0)&quot;
+</pre></td></tr></table>
+
+</li><li>
+Generate an amplitude modulated signal:
+<table><tr><td>&nbsp;</td><td><pre class="example">aevalsrc=&quot;sin(10*2*PI*t)*sin(880*2*PI*t)&quot;
+</pre></td></tr></table>
+
+</li><li>
+Generate 2.5 Hz binaural beats on a 360 Hz carrier:
+<table><tr><td>&nbsp;</td><td><pre class="example">aevalsrc=&quot;0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)&quot;
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="anullsrc"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-anullsrc">31.3 anullsrc</a></h2>
+
+<p>Null audio source, return unprocessed audio frames. It is mainly useful
+as a template and to be employed in analysis / debugging tools, or as
+the source for filters which ignore the input data (for example the sox
+synth filter).
+</p>
+<p>This source accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>channel_layout, cl</samp>&rsquo;</dt>
+<dd>
+<p>Specify the channel layout, and can be either an integer or a string
+representing a channel layout. The default value of <var>channel_layout</var>
+is &quot;stereo&quot;.
+</p>
+<p>Check the channel_layout_map definition in
+&lsquo;<tt>libavutil/channel_layout.c</tt>&rsquo; for the mapping between strings and
+channel layout values.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate, r</samp>&rsquo;</dt>
+<dd><p>Specify the sample rate, and defaults to 44100.
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_samples, n</samp>&rsquo;</dt>
+<dd><p>Set the number of samples per requested frames.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-84"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-84">31.3.1 Examples</a></h3>
+
+<ul>
+<li>
+Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
+<table><tr><td>&nbsp;</td><td><pre class="example">anullsrc=r=48000:cl=4
+</pre></td></tr></table>
+
+</li><li>
+Do the same operation with a more obvious syntax:
+<table><tr><td>&nbsp;</td><td><pre class="example">anullsrc=r=48000:cl=mono
+</pre></td></tr></table>
+</li></ul>
+
+<p>All the parameters need to be explicitly defined.
+</p>
+<a name="flite"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-flite">31.4 flite</a></h2>
+
+<p>Synthesize a voice utterance using the libflite library.
+</p>
+<p>To enable compilation of this filter you need to configure FFmpeg with
+<code>--enable-libflite</code>.
+</p>
+<p>Note that the flite library is not thread-safe.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>list_voices</samp>&rsquo;</dt>
+<dd><p>If set to 1, list the names of the available voices and exit
+immediately. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_samples, n</samp>&rsquo;</dt>
+<dd><p>Set the maximum number of samples per frame. Default value is 512.
+</p>
+</dd>
+<dt> &lsquo;<samp>textfile</samp>&rsquo;</dt>
+<dd><p>Set the filename containing the text to speak.
+</p>
+</dd>
+<dt> &lsquo;<samp>text</samp>&rsquo;</dt>
+<dd><p>Set the text to speak.
+</p>
+</dd>
+<dt> &lsquo;<samp>voice, v</samp>&rsquo;</dt>
+<dd><p>Set the voice to use for the speech synthesis. Default value is
+<code>kal</code>. See also the <var>list_voices</var> option.
+</p></dd>
+</dl>
+
+<a name="Examples-85"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-85">31.4.1 Examples</a></h3>
+
+<ul>
+<li>
+Read from file &lsquo;<tt>speech.txt</tt>&rsquo;, and synthetize the text using the
+standard flite voice:
+<table><tr><td>&nbsp;</td><td><pre class="example">flite=textfile=speech.txt
+</pre></td></tr></table>
+
+</li><li>
+Read the specified text selecting the <code>slt</code> voice:
+<table><tr><td>&nbsp;</td><td><pre class="example">flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
+</pre></td></tr></table>
+
+</li><li>
+Input text to ffmpeg:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
+</pre></td></tr></table>
+
+</li><li>
+Make &lsquo;<tt>ffplay</tt>&rsquo; speak the specified text, using <code>flite</code> and
+the <code>lavfi</code> device:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
+</pre></td></tr></table>
+</li></ul>
+
+<p>For more information about libflite, check:
+<a href="http://www.speech.cs.cmu.edu/flite/">http://www.speech.cs.cmu.edu/flite/</a>
+</p>
+<a name="sine"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-sine">31.5 sine</a></h2>
+
+<p>Generate an audio signal made of a sine wave with amplitude 1/8.
+</p>
+<p>The audio signal is bit-exact.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set the carrier frequency. Default is 440 Hz.
+</p>
+</dd>
+<dt> &lsquo;<samp>beep_factor, b</samp>&rsquo;</dt>
+<dd><p>Enable a periodic beep every second with frequency <var>beep_factor</var> times
+the carrier frequency. Default is 0, meaning the beep is disabled.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate, r</samp>&rsquo;</dt>
+<dd><p>Specify the sample rate, default is 44100.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
+<dd><p>Specify the duration of the generated audio stream.
+</p>
+</dd>
+<dt> &lsquo;<samp>samples_per_frame</samp>&rsquo;</dt>
+<dd><p>Set the number of samples per output frame, default is 1024.
+</p></dd>
+</dl>
+
+<a name="Examples-32"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-32">31.5.1 Examples</a></h3>
+
+<ul>
+<li>
+Generate a simple 440 Hz sine wave:
+<table><tr><td>&nbsp;</td><td><pre class="example">sine
+</pre></td></tr></table>
+
+</li><li>
+Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
+<table><tr><td>&nbsp;</td><td><pre class="example">sine=220:4:d=5
+sine=f=220:b=4:d=5
+sine=frequency=220:beep_factor=4:duration=5
+</pre></td></tr></table>
+
+</li></ul>
+
+
+<a name="Audio-Sinks"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Audio-Sinks">32. Audio Sinks</a></h1>
+
+<p>Below is a description of the currently available audio sinks.
+</p>
+<a name="abuffersink"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-abuffersink">32.1 abuffersink</a></h2>
+
+<p>Buffer audio frames, and make them available to the end of filter chain.
+</p>
+<p>This sink is mainly intended for programmatic use, in particular
+through the interface defined in &lsquo;<tt>libavfilter/buffersink.h</tt>&rsquo;
+or the options system.
+</p>
+<p>It accepts a pointer to an AVABufferSinkContext structure, which
+defines the incoming buffers&rsquo; formats, to be passed as the opaque
+parameter to <code>avfilter_init_filter</code> for initialization.
+</p>
+<a name="anullsink"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-anullsink">32.2 anullsink</a></h2>
+
+<p>Null audio sink, do absolutely nothing with the input audio. It is
+mainly useful as a template and to be employed in analysis / debugging
+tools.
+</p>
+
+<a name="Video-Filters"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Video-Filters">33. Video Filters</a></h1>
+
+<p>When you configure your FFmpeg build, you can disable any of the
+existing filters using <code>--disable-filters</code>.
+The configure output will show the video filters included in your
+build.
+</p>
+<p>Below is a description of the currently available video filters.
+</p>
+<a name="alphaextract"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-alphaextract">33.1 alphaextract</a></h2>
+
+<p>Extract the alpha component from the input as a grayscale video. This
+is especially useful with the <var>alphamerge</var> filter.
+</p>
+<a name="alphamerge"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-alphamerge">33.2 alphamerge</a></h2>
+
+<p>Add or replace the alpha component of the primary input with the
+grayscale value of a second input. This is intended for use with
+<var>alphaextract</var> to allow the transmission or storage of frame
+sequences that have alpha in a format that doesn&rsquo;t support an alpha
+channel.
+</p>
+<p>For example, to reconstruct full frames from a normal YUV-encoded video
+and a separate video created with <var>alphaextract</var>, you might use:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
+</pre></td></tr></table>
+
+<p>Since this filter is designed for reconstruction, it operates on frame
+sequences without considering timestamps, and terminates when either
+input reaches end of stream. This will cause problems if your encoding
+pipeline drops frames. If you&rsquo;re trying to apply an image as an
+overlay to a video stream, consider the <var>overlay</var> filter instead.
+</p>
+<a name="ass"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-ass">33.3 ass</a></h2>
+
+<p>Same as the <a href="#subtitles">subtitles</a> filter, except that it doesn&rsquo;t require libavcodec
+and libavformat to work. On the other hand, it is limited to ASS (Advanced
+Substation Alpha) subtitles files.
+</p>
+<a name="bbox"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-bbox">33.4 bbox</a></h2>
+
+<p>Compute the bounding box for the non-black pixels in the input frame
+luminance plane.
+</p>
+<p>This filter computes the bounding box containing all the pixels with a
+luminance value greater than the minimum allowed value.
+The parameters describing the bounding box are printed on the filter
+log.
+</p>
+<p>The filter accepts the following option:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>min_val</samp>&rsquo;</dt>
+<dd><p>Set the minimal luminance value. Default is <code>16</code>.
+</p></dd>
+</dl>
+
+<a name="blackdetect"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-blackdetect">33.5 blackdetect</a></h2>
+
+<p>Detect video intervals that are (almost) completely black. Can be
+useful to detect chapter transitions, commercials, or invalid
+recordings. Output lines contains the time for the start, end and
+duration of the detected black interval expressed in seconds.
+</p>
+<p>In order to display the output lines, you need to set the loglevel at
+least to the AV_LOG_INFO value.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>black_min_duration, d</samp>&rsquo;</dt>
+<dd><p>Set the minimum detected black duration expressed in seconds. It must
+be a non-negative floating point number.
+</p>
+<p>Default value is 2.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>picture_black_ratio_th, pic_th</samp>&rsquo;</dt>
+<dd><p>Set the threshold for considering a picture &quot;black&quot;.
+Express the minimum value for the ratio:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>nb_black_pixels</var> / <var>nb_pixels</var>
+</pre></td></tr></table>
+
+<p>for which a picture is considered black.
+Default value is 0.98.
+</p>
+</dd>
+<dt> &lsquo;<samp>pixel_black_th, pix_th</samp>&rsquo;</dt>
+<dd><p>Set the threshold for considering a pixel &quot;black&quot;.
+</p>
+<p>The threshold expresses the maximum pixel luminance value for which a
+pixel is considered &quot;black&quot;. The provided value is scaled according to
+the following equation:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>absolute_threshold</var> = <var>luminance_minimum_value</var> + <var>pixel_black_th</var> * <var>luminance_range_size</var>
+</pre></td></tr></table>
+
+<p><var>luminance_range_size</var> and <var>luminance_minimum_value</var> depend on
+the input video format, the range is [0-255] for YUV full-range
+formats and [16-235] for YUV non full-range formats.
+</p>
+<p>Default value is 0.10.
+</p></dd>
+</dl>
+
+<p>The following example sets the maximum pixel threshold to the minimum
+value, and detects only black intervals of 2 or more seconds:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">blackdetect=d=2:pix_th=0.00
+</pre></td></tr></table>
+
+<a name="blackframe"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-blackframe">33.6 blackframe</a></h2>
+
+<p>Detect frames that are (almost) completely black. Can be useful to
+detect chapter transitions or commercials. Output lines consist of
+the frame number of the detected frame, the percentage of blackness,
+the position in the file if known or -1 and the timestamp in seconds.
+</p>
+<p>In order to display the output lines, you need to set the loglevel at
+least to the AV_LOG_INFO value.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>amount</samp>&rsquo;</dt>
+<dd><p>Set the percentage of the pixels that have to be below the threshold, defaults
+to <code>98</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>threshold, thresh</samp>&rsquo;</dt>
+<dd><p>Set the threshold below which a pixel value is considered black, defaults to
+<code>32</code>.
+</p>
+</dd>
+</dl>
+
+<a name="blend"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-blend">33.7 blend</a></h2>
+
+<p>Blend two video frames into each other.
+</p>
+<p>It takes two input streams and outputs one stream, the first input is the
+&quot;top&quot; layer and second input is &quot;bottom&quot; layer.
+Output terminates when shortest input terminates.
+</p>
+<p>A description of the accepted options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>c0_mode</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c1_mode</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c2_mode</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c3_mode</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>all_mode</samp>&rsquo;</dt>
+<dd><p>Set blend mode for specific pixel component or all pixel components in case
+of <var>all_mode</var>. Default value is <code>normal</code>.
+</p>
+<p>Available values for component modes are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>addition</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>and</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>average</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>burn</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>darken</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>difference</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>divide</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dodge</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>exclusion</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>hardlight</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>lighten</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>multiply</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>negation</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>normal</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>or</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>overlay</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>phoenix</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>pinlight</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>reflect</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>screen</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>softlight</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>subtract</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vividlight</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>xor</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>c0_opacity</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c1_opacity</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c2_opacity</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c3_opacity</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>all_opacity</samp>&rsquo;</dt>
+<dd><p>Set blend opacity for specific pixel component or all pixel components in case
+of <var>all_opacity</var>. Only used in combination with pixel component blend modes.
+</p>
+</dd>
+<dt> &lsquo;<samp>c0_expr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c1_expr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c2_expr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c3_expr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>all_expr</samp>&rsquo;</dt>
+<dd><p>Set blend expression for specific pixel component or all pixel components in case
+of <var>all_expr</var>. Note that related mode options will be ignored if those are set.
+</p>
+<p>The expressions can use the following variables:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>N</samp>&rsquo;</dt>
+<dd><p>The sequential number of the filtered frame, starting from <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>X</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>Y</samp>&rsquo;</dt>
+<dd><p>the coordinates of the current sample
+</p>
+</dd>
+<dt> &lsquo;<samp>W</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>H</samp>&rsquo;</dt>
+<dd><p>the width and height of currently filtered plane
+</p>
+</dd>
+<dt> &lsquo;<samp>SW</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>SH</samp>&rsquo;</dt>
+<dd><p>Width and height scale depending on the currently filtered plane. It is the
+ratio between the corresponding luma plane number of pixels and the current
+plane ones. E.g. for YUV4:2:0 the values are <code>1,1</code> for the luma plane, and
+<code>0.5,0.5</code> for chroma planes.
+</p>
+</dd>
+<dt> &lsquo;<samp>T</samp>&rsquo;</dt>
+<dd><p>Time of the current frame, expressed in seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>TOP, A</samp>&rsquo;</dt>
+<dd><p>Value of pixel component at current location for first video frame (top layer).
+</p>
+</dd>
+<dt> &lsquo;<samp>BOTTOM, B</samp>&rsquo;</dt>
+<dd><p>Value of pixel component at current location for second video frame (bottom layer).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>shortest</samp>&rsquo;</dt>
+<dd><p>Force termination when the shortest input terminates. Default is <code>0</code>.
+</p></dd>
+<dt> &lsquo;<samp>repeatlast</samp>&rsquo;</dt>
+<dd><p>Continue applying the last bottom frame after the end of the stream. A value of
+<code>0</code> disable the filter after the last frame of the bottom layer is reached.
+Default is <code>1</code>.
+</p></dd>
+</dl>
+
+<a name="Examples-54"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-54">33.7.1 Examples</a></h3>
+
+<ul>
+<li>
+Apply transition from bottom layer to top layer in first 10 seconds:
+<table><tr><td>&nbsp;</td><td><pre class="example">blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
+</pre></td></tr></table>
+
+</li><li>
+Apply 1x1 checkerboard effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
+</pre></td></tr></table>
+
+</li><li>
+Apply uncover left effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">blend=all_expr='if(gte(N*SW+X,W),A,B)'
+</pre></td></tr></table>
+
+</li><li>
+Apply uncover down effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">blend=all_expr='if(gte(Y-N*SH,0),A,B)'
+</pre></td></tr></table>
+
+</li><li>
+Apply uncover up-left effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
+</pre></td></tr></table>
+</li></ul>
+
+<a name="boxblur"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-boxblur">33.8 boxblur</a></h2>
+
+<p>Apply boxblur algorithm to the input video.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>luma_radius, lr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>luma_power, lp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma_radius, cr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma_power, cp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>alpha_radius, ar</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>alpha_power, ap</samp>&rsquo;</dt>
+</dl>
+
+<p>A description of the accepted options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>luma_radius, lr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma_radius, cr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>alpha_radius, ar</samp>&rsquo;</dt>
+<dd><p>Set an expression for the box radius in pixels used for blurring the
+corresponding input plane.
+</p>
+<p>The radius value must be a non-negative number, and must not be
+greater than the value of the expression <code>min(w,h)/2</code> for the
+luma and alpha planes, and of <code>min(cw,ch)/2</code> for the chroma
+planes.
+</p>
+<p>Default value for &lsquo;<samp>luma_radius</samp>&rsquo; is &quot;2&quot;. If not specified,
+&lsquo;<samp>chroma_radius</samp>&rsquo; and &lsquo;<samp>alpha_radius</samp>&rsquo; default to the
+corresponding value set for &lsquo;<samp>luma_radius</samp>&rsquo;.
+</p>
+<p>The expressions can contain the following constants:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>the input width and height in pixels
+</p>
+</dd>
+<dt> &lsquo;<samp>cw</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ch</samp>&rsquo;</dt>
+<dd><p>the input chroma image width and height in pixels
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>luma_power, lp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma_power, cp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>alpha_power, ap</samp>&rsquo;</dt>
+<dd><p>Specify how many times the boxblur filter is applied to the
+corresponding plane.
+</p>
+<p>Default value for &lsquo;<samp>luma_power</samp>&rsquo; is 2. If not specified,
+&lsquo;<samp>chroma_power</samp>&rsquo; and &lsquo;<samp>alpha_power</samp>&rsquo; default to the
+corresponding value set for &lsquo;<samp>luma_power</samp>&rsquo;.
+</p>
+<p>A value of 0 will disable the effect.
+</p></dd>
+</dl>
+
+<a name="Examples-4"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-4">33.8.1 Examples</a></h3>
+
+<ul>
+<li>
+Apply a boxblur filter with luma, chroma, and alpha radius
+set to 2:
+<table><tr><td>&nbsp;</td><td><pre class="example">boxblur=luma_radius=2:luma_power=1
+boxblur=2:1
+</pre></td></tr></table>
+
+</li><li>
+Set luma radius to 2, alpha and chroma radius to 0:
+<table><tr><td>&nbsp;</td><td><pre class="example">boxblur=2:1:cr=0:ar=0
+</pre></td></tr></table>
+
+</li><li>
+Set luma and chroma radius to a fraction of the video dimension:
+<table><tr><td>&nbsp;</td><td><pre class="example">boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
+</pre></td></tr></table>
+</li></ul>
+
+<a name="colorbalance"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-colorbalance">33.9 colorbalance</a></h2>
+<p>Modify intensity of primary colors (red, green and blue) of input frames.
+</p>
+<p>The filter allows an input frame to be adjusted in the shadows, midtones or highlights
+regions for the red-cyan, green-magenta or blue-yellow balance.
+</p>
+<p>A positive adjustment value shifts the balance towards the primary color, a negative
+value towards the complementary color.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>rs</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>gs</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bs</samp>&rsquo;</dt>
+<dd><p>Adjust red, green and blue shadows (darkest pixels).
+</p>
+</dd>
+<dt> &lsquo;<samp>rm</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>gm</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bm</samp>&rsquo;</dt>
+<dd><p>Adjust red, green and blue midtones (medium pixels).
+</p>
+</dd>
+<dt> &lsquo;<samp>rh</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>gh</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bh</samp>&rsquo;</dt>
+<dd><p>Adjust red, green and blue highlights (brightest pixels).
+</p>
+<p>Allowed ranges for options are <code>[-1.0, 1.0]</code>. Defaults are <code>0</code>.
+</p></dd>
+</dl>
+
+<a name="Examples-89"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-89">33.9.1 Examples</a></h3>
+
+<ul>
+<li>
+Add red color cast to shadows:
+<table><tr><td>&nbsp;</td><td><pre class="example">colorbalance=rs=.3
+</pre></td></tr></table>
+</li></ul>
+
+<a name="colorchannelmixer"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-colorchannelmixer">33.10 colorchannelmixer</a></h2>
+
+<p>Adjust video input frames by re-mixing color channels.
+</p>
+<p>This filter modifies a color channel by adding the values associated to
+the other channels of the same pixels. For example if the value to
+modify is red, the output value will be:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>red</var>=<var>red</var>*<var>rr</var> + <var>blue</var>*<var>rb</var> + <var>green</var>*<var>rg</var> + <var>alpha</var>*<var>ra</var>
+</pre></td></tr></table>
+
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>rr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>rg</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>rb</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ra</samp>&rsquo;</dt>
+<dd><p>Adjust contribution of input red, green, blue and alpha channels for output red channel.
+Default is <code>1</code> for <var>rr</var>, and <code>0</code> for <var>rg</var>, <var>rb</var> and <var>ra</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>gr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>gg</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>gb</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ga</samp>&rsquo;</dt>
+<dd><p>Adjust contribution of input red, green, blue and alpha channels for output green channel.
+Default is <code>1</code> for <var>gg</var>, and <code>0</code> for <var>gr</var>, <var>gb</var> and <var>ga</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>br</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bg</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bb</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ba</samp>&rsquo;</dt>
+<dd><p>Adjust contribution of input red, green, blue and alpha channels for output blue channel.
+Default is <code>1</code> for <var>bb</var>, and <code>0</code> for <var>br</var>, <var>bg</var> and <var>ba</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>ar</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ag</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ab</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aa</samp>&rsquo;</dt>
+<dd><p>Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
+Default is <code>1</code> for <var>aa</var>, and <code>0</code> for <var>ar</var>, <var>ag</var> and <var>ab</var>.
+</p>
+<p>Allowed ranges for options are <code>[-2.0, 2.0]</code>.
+</p></dd>
+</dl>
+
+<a name="Examples-65"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-65">33.10.1 Examples</a></h3>
+
+<ul>
+<li>
+Convert source to grayscale:
+<table><tr><td>&nbsp;</td><td><pre class="example">colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
+</pre></td></tr></table>
+</li><li>
+Simulate sepia tones:
+<table><tr><td>&nbsp;</td><td><pre class="example">colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
+</pre></td></tr></table>
+</li></ul>
+
+<a name="colormatrix"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-colormatrix">33.11 colormatrix</a></h2>
+
+<p>Convert color matrix.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>src</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dst</samp>&rsquo;</dt>
+<dd><p>Specify the source and destination color matrix. Both values must be
+specified.
+</p>
+<p>The accepted values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>bt709</samp>&rsquo;</dt>
+<dd><p>BT.709
+</p>
+</dd>
+<dt> &lsquo;<samp>bt601</samp>&rsquo;</dt>
+<dd><p>BT.601
+</p>
+</dd>
+<dt> &lsquo;<samp>smpte240m</samp>&rsquo;</dt>
+<dd><p>SMPTE-240M
+</p>
+</dd>
+<dt> &lsquo;<samp>fcc</samp>&rsquo;</dt>
+<dd><p>FCC
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<p>For example to convert from BT.601 to SMPTE-240M, use the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">colormatrix=bt601:smpte240m
+</pre></td></tr></table>
+
+<a name="copy"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-copy">33.12 copy</a></h2>
+
+<p>Copy the input source unchanged to the output. Mainly useful for
+testing purposes.
+</p>
+<a name="crop"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-crop">33.13 crop</a></h2>
+
+<p>Crop the input video to given dimensions.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>w, out_w</samp>&rsquo;</dt>
+<dd><p>Width of the output video. It defaults to <code>iw</code>.
+This expression is evaluated only once during the filter
+configuration.
+</p>
+</dd>
+<dt> &lsquo;<samp>h, out_h</samp>&rsquo;</dt>
+<dd><p>Height of the output video. It defaults to <code>ih</code>.
+This expression is evaluated only once during the filter
+configuration.
+</p>
+</dd>
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dd><p>Horizontal position, in the input video, of the left edge of the output video.
+It defaults to <code>(in_w-out_w)/2</code>.
+This expression is evaluated per-frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>Vertical position, in the input video, of the top edge of the output video.
+It defaults to <code>(in_h-out_h)/2</code>.
+This expression is evaluated per-frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>keep_aspect</samp>&rsquo;</dt>
+<dd><p>If set to 1 will force the output display aspect ratio
+to be the same of the input, by changing the output sample aspect
+ratio. It defaults to 0.
+</p></dd>
+</dl>
+
+<p>The <var>out_w</var>, <var>out_h</var>, <var>x</var>, <var>y</var> parameters are
+expressions containing the following constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>the computed values for <var>x</var> and <var>y</var>. They are evaluated for
+each new frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>in_w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>in_h</samp>&rsquo;</dt>
+<dd><p>the input width and height
+</p>
+</dd>
+<dt> &lsquo;<samp>iw</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ih</samp>&rsquo;</dt>
+<dd><p>same as <var>in_w</var> and <var>in_h</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>out_w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>out_h</samp>&rsquo;</dt>
+<dd><p>the output (cropped) width and height
+</p>
+</dd>
+<dt> &lsquo;<samp>ow</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>oh</samp>&rsquo;</dt>
+<dd><p>same as <var>out_w</var> and <var>out_h</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>same as <var>iw</var> / <var>ih</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
+<dd><p>input sample aspect ratio
+</p>
+</dd>
+<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
+<dd><p>input display aspect ratio, it is the same as (<var>iw</var> / <var>ih</var>) * <var>sar</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>the number of input frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
+<dd><p>the position in the file of the input frame, NAN if unknown
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>timestamp expressed in seconds, NAN if the input timestamp is unknown
+</p>
+</dd>
+</dl>
+
+<p>The expression for <var>out_w</var> may depend on the value of <var>out_h</var>,
+and the expression for <var>out_h</var> may depend on <var>out_w</var>, but they
+cannot depend on <var>x</var> and <var>y</var>, as <var>x</var> and <var>y</var> are
+evaluated after <var>out_w</var> and <var>out_h</var>.
+</p>
+<p>The <var>x</var> and <var>y</var> parameters specify the expressions for the
+position of the top-left corner of the output (non-cropped) area. They
+are evaluated for each frame. If the evaluated value is not valid, it
+is approximated to the nearest valid value.
+</p>
+<p>The expression for <var>x</var> may depend on <var>y</var>, and the expression
+for <var>y</var> may depend on <var>x</var>.
+</p>
+<a name="Examples-8"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-8">33.13.1 Examples</a></h3>
+
+<ul>
+<li>
+Crop area with size 100x100 at position (12,34).
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=100:100:12:34
+</pre></td></tr></table>
+
+<p>Using named options, the example above becomes:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">crop=w=100:h=100:x=12:y=34
+</pre></td></tr></table>
+
+</li><li>
+Crop the central input area with size 100x100:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=100:100
+</pre></td></tr></table>
+
+</li><li>
+Crop the central input area with size 2/3 of the input video:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=2/3*in_w:2/3*in_h
+</pre></td></tr></table>
+
+</li><li>
+Crop the input video central square:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=out_w=in_h
+crop=in_h
+</pre></td></tr></table>
+
+</li><li>
+Delimit the rectangle with the top-left corner placed at position
+100:100 and the right-bottom corner corresponding to the right-bottom
+corner of the input image:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=in_w-100:in_h-100:100:100
+</pre></td></tr></table>
+
+</li><li>
+Crop 10 pixels from the left and right borders, and 20 pixels from
+the top and bottom borders
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=in_w-2*10:in_h-2*20
+</pre></td></tr></table>
+
+</li><li>
+Keep only the bottom right quarter of the input image:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=in_w/2:in_h/2:in_w/2:in_h/2
+</pre></td></tr></table>
+
+</li><li>
+Crop height for getting Greek harmony:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=in_w:1/PHI*in_w
+</pre></td></tr></table>
+
+</li><li>
+Appply trembling effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(n/10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(n/7)
+</pre></td></tr></table>
+
+</li><li>
+Apply erratic camera effect depending on timestamp:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(t*10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(t*13)&quot;
+</pre></td></tr></table>
+
+</li><li>
+Set x depending on the value of y:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=in_w/2:in_h/2:y:10+10*sin(n/10)
+</pre></td></tr></table>
+</li></ul>
+
+<a name="cropdetect"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-cropdetect">33.14 cropdetect</a></h2>
+
+<p>Auto-detect crop size.
+</p>
+<p>Calculate necessary cropping parameters and prints the recommended
+parameters through the logging system. The detected dimensions
+correspond to the non-black area of the input video.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>limit</samp>&rsquo;</dt>
+<dd><p>Set higher black value threshold, which can be optionally specified
+from nothing (0) to everything (255). An intensity value greater
+to the set value is considered non-black. Default value is 24.
+</p>
+</dd>
+<dt> &lsquo;<samp>round</samp>&rsquo;</dt>
+<dd><p>Set the value for which the width/height should be divisible by. The
+offset is automatically adjusted to center the video. Use 2 to get
+only even dimensions (needed for 4:2:2 video). 16 is best when
+encoding to most video codecs. Default value is 16.
+</p>
+</dd>
+<dt> &lsquo;<samp>reset_count, reset</samp>&rsquo;</dt>
+<dd><p>Set the counter that determines after how many frames cropdetect will
+reset the previously detected largest video area and start over to
+detect the current optimal crop area. Default value is 0.
+</p>
+<p>This can be useful when channel logos distort the video area. 0
+indicates never reset and return the largest area encountered during
+playback.
+</p></dd>
+</dl>
+
+<p><a name="curves"></a>
+</p><a name="curves-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-curves-1">33.15 curves</a></h2>
+
+<p>Apply color adjustments using curves.
+</p>
+<p>This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
+component (red, green and blue) has its values defined by <var>N</var> key points
+tied from each other using a smooth curve. The x-axis represents the pixel
+values from the input frame, and the y-axis the new pixel values to be set for
+the output frame.
+</p>
+<p>By default, a component curve is defined by the two points <var>(0;0)</var> and
+<var>(1;1)</var>. This creates a straight line where each original pixel value is
+&quot;adjusted&quot; to its own value, which means no change to the image.
+</p>
+<p>The filter allows you to redefine these two points and add some more. A new
+curve (using a natural cubic spline interpolation) will be define to pass
+smoothly through all these new coordinates. The new defined points needs to be
+strictly increasing over the x-axis, and their <var>x</var> and <var>y</var> values must
+be in the <var>[0;1]</var> interval.  If the computed curves happened to go outside
+the vector spaces, the values will be clipped accordingly.
+</p>
+<p>If there is no key point defined in <code>x=0</code>, the filter will automatically
+insert a <var>(0;0)</var> point. In the same way, if there is no key point defined
+in <code>x=1</code>, the filter will automatically insert a <var>(1;1)</var> point.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>preset</samp>&rsquo;</dt>
+<dd><p>Select one of the available color presets. This option can be used in addition
+to the &lsquo;<samp>r</samp>&rsquo;, &lsquo;<samp>g</samp>&rsquo;, &lsquo;<samp>b</samp>&rsquo; parameters; in this case, the later
+options takes priority on the preset values.
+Available presets are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>color_negative</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>cross_process</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>darker</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>increase_contrast</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>lighter</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>linear_contrast</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>medium_contrast</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>negative</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>strong_contrast</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vintage</samp>&rsquo;</dt>
+</dl>
+<p>Default is <code>none</code>.
+</p></dd>
+<dt> &lsquo;<samp>master, m</samp>&rsquo;</dt>
+<dd><p>Set the master key points. These points will define a second pass mapping. It
+is sometimes called a &quot;luminance&quot; or &quot;value&quot; mapping. It can be used with
+&lsquo;<samp>r</samp>&rsquo;, &lsquo;<samp>g</samp>&rsquo;, &lsquo;<samp>b</samp>&rsquo; or &lsquo;<samp>all</samp>&rsquo; since it acts like a
+post-processing LUT.
+</p></dd>
+<dt> &lsquo;<samp>red, r</samp>&rsquo;</dt>
+<dd><p>Set the key points for the red component.
+</p></dd>
+<dt> &lsquo;<samp>green, g</samp>&rsquo;</dt>
+<dd><p>Set the key points for the green component.
+</p></dd>
+<dt> &lsquo;<samp>blue, b</samp>&rsquo;</dt>
+<dd><p>Set the key points for the blue component.
+</p></dd>
+<dt> &lsquo;<samp>all</samp>&rsquo;</dt>
+<dd><p>Set the key points for all components (not including master).
+Can be used in addition to the other key points component
+options. In this case, the unset component(s) will fallback on this
+&lsquo;<samp>all</samp>&rsquo; setting.
+</p></dd>
+<dt> &lsquo;<samp>psfile</samp>&rsquo;</dt>
+<dd><p>Specify a Photoshop curves file (<code>.asv</code>) to import the settings from.
+</p></dd>
+</dl>
+
+<p>To avoid some filtergraph syntax conflicts, each key points list need to be
+defined using the following syntax: <code>x0/y0 x1/y1 x2/y2 ...</code>.
+</p>
+<a name="Examples-75"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-75">33.15.1 Examples</a></h3>
+
+<ul>
+<li>
+Increase slightly the middle level of blue:
+<table><tr><td>&nbsp;</td><td><pre class="example">curves=blue='0.5/0.58'
+</pre></td></tr></table>
+
+</li><li>
+Vintage effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">curves=r='0/0.11 .42/.51 1/0.95':g='0.50/0.48':b='0/0.22 .49/.44 1/0.8'
+</pre></td></tr></table>
+<p>Here we obtain the following coordinates for each components:
+</p><dl compact="compact">
+<dt> <var>red</var></dt>
+<dd><p><code>(0;0.11) (0.42;0.51) (1;0.95)</code>
+</p></dd>
+<dt> <var>green</var></dt>
+<dd><p><code>(0;0) (0.50;0.48) (1;1)</code>
+</p></dd>
+<dt> <var>blue</var></dt>
+<dd><p><code>(0;0.22) (0.49;0.44) (1;0.80)</code>
+</p></dd>
+</dl>
+
+</li><li>
+The previous example can also be achieved with the associated built-in preset:
+<table><tr><td>&nbsp;</td><td><pre class="example">curves=preset=vintage
+</pre></td></tr></table>
+
+</li><li>
+Or simply:
+<table><tr><td>&nbsp;</td><td><pre class="example">curves=vintage
+</pre></td></tr></table>
+
+</li><li>
+Use a Photoshop preset and redefine the points of the green component:
+<table><tr><td>&nbsp;</td><td><pre class="example">curves=psfile='MyCurvesPresets/purple.asv':green='0.45/0.53'
+</pre></td></tr></table>
+</li></ul>
+
+<a name="dctdnoiz"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-dctdnoiz">33.16 dctdnoiz</a></h2>
+
+<p>Denoise frames using 2D DCT (frequency domain filtering).
+</p>
+<p>This filter is not designed for real time and can be extremely slow.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>sigma, s</samp>&rsquo;</dt>
+<dd><p>Set the noise sigma constant.
+</p>
+<p>This <var>sigma</var> defines a hard threshold of <code>3 * sigma</code>; every DCT
+coefficient (absolute value) below this threshold with be dropped.
+</p>
+<p>If you need a more advanced filtering, see &lsquo;<samp>expr</samp>&rsquo;.
+</p>
+<p>Default is <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>overlap</samp>&rsquo;</dt>
+<dd><p>Set number overlapping pixels for each block. Each block is of size
+<code>16x16</code>. Since the filter can be slow, you may want to reduce this value,
+at the cost of a less effective filter and the risk of various artefacts.
+</p>
+<p>If the overlapping value doesn&rsquo;t allow to process the whole input width or
+height, a warning will be displayed and according borders won&rsquo;t be denoised.
+</p>
+<p>Default value is <code>15</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>expr, e</samp>&rsquo;</dt>
+<dd><p>Set the coefficient factor expression.
+</p>
+<p>For each coefficient of a DCT block, this expression will be evaluated as a
+multiplier value for the coefficient.
+</p>
+<p>If this is option is set, the &lsquo;<samp>sigma</samp>&rsquo; option will be ignored.
+</p>
+<p>The absolute value of the coefficient can be accessed through the <var>c</var>
+variable.
+</p></dd>
+</dl>
+
+<a name="Examples-20"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-20">33.16.1 Examples</a></h3>
+
+<p>Apply a denoise with a &lsquo;<samp>sigma</samp>&rsquo; of <code>4.5</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">dctdnoiz=4.5
+</pre></td></tr></table>
+
+<p>The same operation can be achieved using the expression system:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">dctdnoiz=e='gte(c, 4.5*3)'
+</pre></td></tr></table>
+
+<p><a name="decimate"></a>
+</p><a name="decimate-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-decimate-1">33.17 decimate</a></h2>
+
+<p>Drop duplicated frames at regular intervals.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>cycle</samp>&rsquo;</dt>
+<dd><p>Set the number of frames from which one will be dropped. Setting this to
+<var>N</var> means one frame in every batch of <var>N</var> frames will be dropped.
+Default is <code>5</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>dupthresh</samp>&rsquo;</dt>
+<dd><p>Set the threshold for duplicate detection. If the difference metric for a frame
+is less than or equal to this value, then it is declared as duplicate. Default
+is <code>1.1</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>scthresh</samp>&rsquo;</dt>
+<dd><p>Set scene change threshold. Default is <code>15</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>blockx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>blocky</samp>&rsquo;</dt>
+<dd><p>Set the size of the x and y-axis blocks used during metric calculations.
+Larger blocks give better noise suppression, but also give worse detection of
+small movements. Must be a power of two. Default is <code>32</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>ppsrc</samp>&rsquo;</dt>
+<dd><p>Mark main input as a pre-processed input and activate clean source input
+stream. This allows the input to be pre-processed with various filters to help
+the metrics calculation while keeping the frame selection lossless. When set to
+<code>1</code>, the first stream is for the pre-processed input, and the second
+stream is the clean source from where the kept frames are chosen. Default is
+<code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+<dd><p>Set whether or not chroma is considered in the metric calculations. Default is
+<code>1</code>.
+</p></dd>
+</dl>
+
+<a name="delogo"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-delogo">33.18 delogo</a></h2>
+
+<p>Suppress a TV station logo by a simple interpolation of the surrounding
+pixels. Just set a rectangle covering the logo and watch it disappear
+(and sometimes something even uglier appear - your mileage may vary).
+</p>
+<p>This filter accepts the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>Specify the top left corner coordinates of the logo. They must be
+specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Specify the width and height of the logo to clear. They must be
+specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>band, t</samp>&rsquo;</dt>
+<dd><p>Specify the thickness of the fuzzy edge of the rectangle (added to
+<var>w</var> and <var>h</var>). The default value is 4.
+</p>
+</dd>
+<dt> &lsquo;<samp>show</samp>&rsquo;</dt>
+<dd><p>When set to 1, a green rectangle is drawn on the screen to simplify
+finding the right <var>x</var>, <var>y</var>, <var>w</var>, and <var>h</var> parameters.
+The default value is 0.
+</p>
+<p>The rectangle is drawn on the outermost pixels which will be (partly)
+replaced with interpolated values. The values of the next pixels
+immediately outside this rectangle in each direction will be used to
+compute the interpolated pixel values inside the rectangle.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-44"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-44">33.18.1 Examples</a></h3>
+
+<ul>
+<li>
+Set a rectangle covering the area with top left corner coordinates 0,0
+and size 100x77, setting a band of size 10:
+<table><tr><td>&nbsp;</td><td><pre class="example">delogo=x=0:y=0:w=100:h=77:band=10
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="deshake"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-deshake">33.19 deshake</a></h2>
+
+<p>Attempt to fix small changes in horizontal and/or vertical shift. This
+filter helps remove camera shake from hand-holding a camera, bumping a
+tripod, moving on a vehicle, etc.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Specify a rectangular area where to limit the search for motion
+vectors.
+If desired the search for motion vectors can be limited to a
+rectangular area of the frame defined by its top left corner, width
+and height. These parameters have the same meaning as the drawbox
+filter which can be used to visualise the position of the bounding
+box.
+</p>
+<p>This is useful when simultaneous movement of subjects within the frame
+might be confused for camera motion by the motion vector search.
+</p>
+<p>If any or all of <var>x</var>, <var>y</var>, <var>w</var> and <var>h</var> are set to -1
+then the full frame is used. This allows later options to be set
+without specifying the bounding box for the motion vector search.
+</p>
+<p>Default - search the whole frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>rx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ry</samp>&rsquo;</dt>
+<dd><p>Specify the maximum extent of movement in x and y directions in the
+range 0-64 pixels. Default 16.
+</p>
+</dd>
+<dt> &lsquo;<samp>edge</samp>&rsquo;</dt>
+<dd><p>Specify how to generate pixels to fill blanks at the edge of the
+frame. Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>blank, 0</samp>&rsquo;</dt>
+<dd><p>Fill zeroes at blank locations
+</p></dd>
+<dt> &lsquo;<samp>original, 1</samp>&rsquo;</dt>
+<dd><p>Original image at blank locations
+</p></dd>
+<dt> &lsquo;<samp>clamp, 2</samp>&rsquo;</dt>
+<dd><p>Extruded edge value at blank locations
+</p></dd>
+<dt> &lsquo;<samp>mirror, 3</samp>&rsquo;</dt>
+<dd><p>Mirrored edge at blank locations
+</p></dd>
+</dl>
+<p>Default value is &lsquo;<samp>mirror</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>blocksize</samp>&rsquo;</dt>
+<dd><p>Specify the blocksize to use for motion search. Range 4-128 pixels,
+default 8.
+</p>
+</dd>
+<dt> &lsquo;<samp>contrast</samp>&rsquo;</dt>
+<dd><p>Specify the contrast threshold for blocks. Only blocks with more than
+the specified contrast (difference between darkest and lightest
+pixels) will be considered. Range 1-255, default 125.
+</p>
+</dd>
+<dt> &lsquo;<samp>search</samp>&rsquo;</dt>
+<dd><p>Specify the search strategy. Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>exhaustive, 0</samp>&rsquo;</dt>
+<dd><p>Set exhaustive search
+</p></dd>
+<dt> &lsquo;<samp>less, 1</samp>&rsquo;</dt>
+<dd><p>Set less exhaustive search.
+</p></dd>
+</dl>
+<p>Default value is &lsquo;<samp>exhaustive</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>filename</samp>&rsquo;</dt>
+<dd><p>If set then a detailed log of the motion search is written to the
+specified file.
+</p>
+</dd>
+<dt> &lsquo;<samp>opencl</samp>&rsquo;</dt>
+<dd><p>If set to 1, specify using OpenCL capabilities, only available if
+FFmpeg was configured with <code>--enable-opencl</code>. Default value is 0.
+</p>
+</dd>
+</dl>
+
+<a name="drawbox"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-drawbox">33.20 drawbox</a></h2>
+
+<p>Draw a colored box on the input image.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>The expressions which specify the top left corner coordinates of the box. Default to 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>height, h</samp>&rsquo;</dt>
+<dd><p>The expressions which specify the width and height of the box, if 0 they are interpreted as
+the input width and height. Default to 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>color, c</samp>&rsquo;</dt>
+<dd><p>Specify the color of the box to write. For the general syntax of this option,
+check the &quot;Color&quot; section in the ffmpeg-utils manual. If the special
+value <code>invert</code> is used, the box edge color is the same as the
+video with inverted luma.
+</p>
+</dd>
+<dt> &lsquo;<samp>thickness, t</samp>&rsquo;</dt>
+<dd><p>The expression which sets the thickness of the box edge. Default value is <code>3</code>.
+</p>
+<p>See below for the list of accepted constants.
+</p></dd>
+</dl>
+
+<p>The parameters for <var>x</var>, <var>y</var>, <var>w</var> and <var>h</var> and <var>t</var> are expressions containing the
+following constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
+<dd><p>The input display aspect ratio, it is the same as (<var>w</var> / <var>h</var>) * <var>sar</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>in_h, ih</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>in_w, iw</samp>&rsquo;</dt>
+<dd><p>The input width and height.
+</p>
+</dd>
+<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
+<dd><p>The input sample aspect ratio.
+</p>
+</dd>
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>The x and y offset coordinates where the box is drawn.
+</p>
+</dd>
+<dt> &lsquo;<samp>w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>The width and height of the drawn box.
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>The thickness of the drawn box.
+</p>
+<p>These constants allow the <var>x</var>, <var>y</var>, <var>w</var>, <var>h</var> and <var>t</var> expressions to refer to
+each other, so you may for example specify <code>y=x/dar</code> or <code>h=w/dar</code>.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-86"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-86">33.20.1 Examples</a></h3>
+
+<ul>
+<li>
+Draw a black box around the edge of the input image:
+<table><tr><td>&nbsp;</td><td><pre class="example">drawbox
+</pre></td></tr></table>
+
+</li><li>
+Draw a box with color red and an opacity of 50%:
+<table><tr><td>&nbsp;</td><td><pre class="example">drawbox=10:20:200:60:red@0.5
+</pre></td></tr></table>
+
+<p>The previous example can be specified as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">drawbox=x=10:y=20:w=200:h=60:color=red@0.5
+</pre></td></tr></table>
+
+</li><li>
+Fill the box with pink color:
+<table><tr><td>&nbsp;</td><td><pre class="example">drawbox=x=10:y=10:w=100:h=100:color=pink@0.5:t=max
+</pre></td></tr></table>
+
+</li><li>
+Draw a 2-pixel red 2.40:1 mask:
+<table><tr><td>&nbsp;</td><td><pre class="example">drawbox=x=-t:y=0.5*(ih-iw/2.4)-t:w=iw+t*2:h=iw/2.4+t*2:t=2:c=red
+</pre></td></tr></table>
+</li></ul>
+
+<a name="drawgrid"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-drawgrid">33.21 drawgrid</a></h2>
+
+<p>Draw a grid on the input image.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>height, h</samp>&rsquo;</dt>
+<dd><p>The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
+input width and height, respectively, minus <code>thickness</code>, so image gets
+framed. Default to 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>color, c</samp>&rsquo;</dt>
+<dd><p>Specify the color of the grid. For the general syntax of this option,
+check the &quot;Color&quot; section in the ffmpeg-utils manual. If the special
+value <code>invert</code> is used, the grid color is the same as the
+video with inverted luma.
+</p>
+</dd>
+<dt> &lsquo;<samp>thickness, t</samp>&rsquo;</dt>
+<dd><p>The expression which sets the thickness of the grid line. Default value is <code>1</code>.
+</p>
+<p>See below for the list of accepted constants.
+</p></dd>
+</dl>
+
+<p>The parameters for <var>x</var>, <var>y</var>, <var>w</var> and <var>h</var> and <var>t</var> are expressions containing the
+following constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
+<dd><p>The input display aspect ratio, it is the same as (<var>w</var> / <var>h</var>) * <var>sar</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>in_h, ih</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>in_w, iw</samp>&rsquo;</dt>
+<dd><p>The input grid cell width and height.
+</p>
+</dd>
+<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
+<dd><p>The input sample aspect ratio.
+</p>
+</dd>
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>The x and y coordinates of some point of grid intersection (meant to configure offset).
+</p>
+</dd>
+<dt> &lsquo;<samp>w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>The width and height of the drawn cell.
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>The thickness of the drawn cell.
+</p>
+<p>These constants allow the <var>x</var>, <var>y</var>, <var>w</var>, <var>h</var> and <var>t</var> expressions to refer to
+each other, so you may for example specify <code>y=x/dar</code> or <code>h=w/dar</code>.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-36"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-36">33.21.1 Examples</a></h3>
+
+<ul>
+<li>
+Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
+<table><tr><td>&nbsp;</td><td><pre class="example">drawgrid=width=100:height=100:thickness=2:color=red@0.5
+</pre></td></tr></table>
+
+</li><li>
+Draw a white 3x3 grid with an opacity of 50%:
+<table><tr><td>&nbsp;</td><td><pre class="example">drawgrid=w=iw/3:h=ih/3:t=2:c=white@0.5
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="drawtext"></a>
+</p><a name="drawtext-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-drawtext-1">33.22 drawtext</a></h2>
+
+<p>Draw text string or text from specified file on top of video using the
+libfreetype library.
+</p>
+<p>To enable compilation of this filter you need to configure FFmpeg with
+<code>--enable-libfreetype</code>.
+</p>
+<a name="Syntax"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Syntax">33.22.1 Syntax</a></h3>
+
+<p>The description of the accepted parameters follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>box</samp>&rsquo;</dt>
+<dd><p>Used to draw a box around text using background color.
+Value should be either 1 (enable) or 0 (disable).
+The default value of <var>box</var> is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>boxcolor</samp>&rsquo;</dt>
+<dd><p>The color to be used for drawing box around text. For the syntax of this
+option, check the &quot;Color&quot; section in the ffmpeg-utils manual.
+</p>
+<p>The default value of <var>boxcolor</var> is &quot;white&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>expansion</samp>&rsquo;</dt>
+<dd><p>Select how the <var>text</var> is expanded. Can be either <code>none</code>,
+<code>strftime</code> (deprecated) or
+<code>normal</code> (default). See the <a href="#drawtext_005fexpansion">Text expansion</a> section
+below for details.
+</p>
+</dd>
+<dt> &lsquo;<samp>fix_bounds</samp>&rsquo;</dt>
+<dd><p>If true, check and fix text coords to avoid clipping.
+</p>
+</dd>
+<dt> &lsquo;<samp>fontcolor</samp>&rsquo;</dt>
+<dd><p>The color to be used for drawing fonts. For the syntax of this option, check
+the &quot;Color&quot; section in the ffmpeg-utils manual.
+</p>
+<p>The default value of <var>fontcolor</var> is &quot;black&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>fontfile</samp>&rsquo;</dt>
+<dd><p>The font file to be used for drawing text. Path must be included.
+This parameter is mandatory.
+</p>
+</dd>
+<dt> &lsquo;<samp>fontsize</samp>&rsquo;</dt>
+<dd><p>The font size to be used for drawing text.
+The default value of <var>fontsize</var> is 16.
+</p>
+</dd>
+<dt> &lsquo;<samp>ft_load_flags</samp>&rsquo;</dt>
+<dd><p>Flags to be used for loading the fonts.
+</p>
+<p>The flags map the corresponding flags supported by libfreetype, and are
+a combination of the following values:
+</p><dl compact="compact">
+<dt> <var>default</var></dt>
+<dt> <var>no_scale</var></dt>
+<dt> <var>no_hinting</var></dt>
+<dt> <var>render</var></dt>
+<dt> <var>no_bitmap</var></dt>
+<dt> <var>vertical_layout</var></dt>
+<dt> <var>force_autohint</var></dt>
+<dt> <var>crop_bitmap</var></dt>
+<dt> <var>pedantic</var></dt>
+<dt> <var>ignore_global_advance_width</var></dt>
+<dt> <var>no_recurse</var></dt>
+<dt> <var>ignore_transform</var></dt>
+<dt> <var>monochrome</var></dt>
+<dt> <var>linear_design</var></dt>
+<dt> <var>no_autohint</var></dt>
+</dl>
+
+<p>Default value is &quot;render&quot;.
+</p>
+<p>For more information consult the documentation for the FT_LOAD_*
+libfreetype flags.
+</p>
+</dd>
+<dt> &lsquo;<samp>shadowcolor</samp>&rsquo;</dt>
+<dd><p>The color to be used for drawing a shadow behind the drawn text. For the
+syntax of this option, check the &quot;Color&quot; section in the ffmpeg-utils manual.
+</p>
+<p>The default value of <var>shadowcolor</var> is &quot;black&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>shadowx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>shadowy</samp>&rsquo;</dt>
+<dd><p>The x and y offsets for the text shadow position with respect to the
+position of the text. They can be either positive or negative
+values. Default value for both is &quot;0&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_number</samp>&rsquo;</dt>
+<dd><p>The starting frame number for the n/frame_num variable. The default value
+is &quot;0&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>tabsize</samp>&rsquo;</dt>
+<dd><p>The size in number of spaces to use for rendering the tab.
+Default value is 4.
+</p>
+</dd>
+<dt> &lsquo;<samp>timecode</samp>&rsquo;</dt>
+<dd><p>Set the initial timecode representation in &quot;hh:mm:ss[:;.]ff&quot;
+format. It can be used with or without text parameter. <var>timecode_rate</var>
+option must be specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>timecode_rate, rate, r</samp>&rsquo;</dt>
+<dd><p>Set the timecode frame rate (timecode only).
+</p>
+</dd>
+<dt> &lsquo;<samp>text</samp>&rsquo;</dt>
+<dd><p>The text string to be drawn. The text must be a sequence of UTF-8
+encoded characters.
+This parameter is mandatory if no file is specified with the parameter
+<var>textfile</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>textfile</samp>&rsquo;</dt>
+<dd><p>A text file containing text to be drawn. The text must be a sequence
+of UTF-8 encoded characters.
+</p>
+<p>This parameter is mandatory if no text string is specified with the
+parameter <var>text</var>.
+</p>
+<p>If both <var>text</var> and <var>textfile</var> are specified, an error is thrown.
+</p>
+</dd>
+<dt> &lsquo;<samp>reload</samp>&rsquo;</dt>
+<dd><p>If set to 1, the <var>textfile</var> will be reloaded before each frame.
+Be sure to update it atomically, or it may be read partially, or even fail.
+</p>
+</dd>
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>The expressions which specify the offsets where text will be drawn
+within the video frame. They are relative to the top/left border of the
+output image.
+</p>
+<p>The default value of <var>x</var> and <var>y</var> is &quot;0&quot;.
+</p>
+<p>See below for the list of accepted constants and functions.
+</p></dd>
+</dl>
+
+<p>The parameters for <var>x</var> and <var>y</var> are expressions containing the
+following constants and functions:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
+<dd><p>input display aspect ratio, it is the same as (<var>w</var> / <var>h</var>) * <var>sar</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>line_h, lh</samp>&rsquo;</dt>
+<dd><p>the height of each text line
+</p>
+</dd>
+<dt> &lsquo;<samp>main_h, h, H</samp>&rsquo;</dt>
+<dd><p>the input height
+</p>
+</dd>
+<dt> &lsquo;<samp>main_w, w, W</samp>&rsquo;</dt>
+<dd><p>the input width
+</p>
+</dd>
+<dt> &lsquo;<samp>max_glyph_a, ascent</samp>&rsquo;</dt>
+<dd><p>the maximum distance from the baseline to the highest/upper grid
+coordinate used to place a glyph outline point, for all the rendered
+glyphs.
+It is a positive value, due to the grid&rsquo;s orientation with the Y axis
+upwards.
+</p>
+</dd>
+<dt> &lsquo;<samp>max_glyph_d, descent</samp>&rsquo;</dt>
+<dd><p>the maximum distance from the baseline to the lowest grid coordinate
+used to place a glyph outline point, for all the rendered glyphs.
+This is a negative value, due to the grid&rsquo;s orientation, with the Y axis
+upwards.
+</p>
+</dd>
+<dt> &lsquo;<samp>max_glyph_h</samp>&rsquo;</dt>
+<dd><p>maximum glyph height, that is the maximum height for all the glyphs
+contained in the rendered text, it is equivalent to <var>ascent</var> -
+<var>descent</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>max_glyph_w</samp>&rsquo;</dt>
+<dd><p>maximum glyph width, that is the maximum width for all the glyphs
+contained in the rendered text
+</p>
+</dd>
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>the number of input frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>rand(min, max)</samp>&rsquo;</dt>
+<dd><p>return a random number included between <var>min</var> and <var>max</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
+<dd><p>input sample aspect ratio
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>timestamp expressed in seconds, NAN if the input timestamp is unknown
+</p>
+</dd>
+<dt> &lsquo;<samp>text_h, th</samp>&rsquo;</dt>
+<dd><p>the height of the rendered text
+</p>
+</dd>
+<dt> &lsquo;<samp>text_w, tw</samp>&rsquo;</dt>
+<dd><p>the width of the rendered text
+</p>
+</dd>
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>the x and y offset coordinates where the text is drawn.
+</p>
+<p>These parameters allow the <var>x</var> and <var>y</var> expressions to refer
+each other, so you can for example specify <code>y=x/dar</code>.
+</p></dd>
+</dl>
+
+<p>If libavfilter was built with <code>--enable-fontconfig</code>, then
+&lsquo;<samp>fontfile</samp>&rsquo; can be a fontconfig pattern or omitted.
+</p>
+<p><a name="drawtext_005fexpansion"></a>
+</p><a name="Text-expansion"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Text-expansion">33.22.2 Text expansion</a></h3>
+
+<p>If &lsquo;<samp>expansion</samp>&rsquo; is set to <code>strftime</code>,
+the filter recognizes strftime() sequences in the provided text and
+expands them accordingly. Check the documentation of strftime(). This
+feature is deprecated.
+</p>
+<p>If &lsquo;<samp>expansion</samp>&rsquo; is set to <code>none</code>, the text is printed verbatim.
+</p>
+<p>If &lsquo;<samp>expansion</samp>&rsquo; is set to <code>normal</code> (which is the default),
+the following expansion mechanism is used.
+</p>
+<p>The backslash character &rsquo;\&rsquo;, followed by any character, always expands to
+the second character.
+</p>
+<p>Sequence of the form <code>%{...}</code> are expanded. The text between the
+braces is a function name, possibly followed by arguments separated by &rsquo;:&rsquo;.
+If the arguments contain special characters or delimiters (&rsquo;:&rsquo; or &rsquo;}&rsquo;),
+they should be escaped.
+</p>
+<p>Note that they probably must also be escaped as the value for the
+&lsquo;<samp>text</samp>&rsquo; option in the filter argument string and as the filter
+argument in the filtergraph description, and possibly also for the shell,
+that makes up to four levels of escaping; using a text file avoids these
+problems.
+</p>
+<p>The following functions are available:
+</p>
+<dl compact="compact">
+<dt> <code>expr, e</code></dt>
+<dd><p>The expression evaluation result.
+</p>
+<p>It must take one argument specifying the expression to be evaluated,
+which accepts the same constants and functions as the <var>x</var> and
+<var>y</var> values. Note that not all constants should be used, for
+example the text size is not known when evaluating the expression, so
+the constants <var>text_w</var> and <var>text_h</var> will have an undefined
+value.
+</p>
+</dd>
+<dt> <code>gmtime</code></dt>
+<dd><p>The time at which the filter is running, expressed in UTC.
+It can accept an argument: a strftime() format string.
+</p>
+</dd>
+<dt> <code>localtime</code></dt>
+<dd><p>The time at which the filter is running, expressed in the local time zone.
+It can accept an argument: a strftime() format string.
+</p>
+</dd>
+<dt> <code>metadata</code></dt>
+<dd><p>Frame metadata. It must take one argument specifying metadata key.
+</p>
+</dd>
+<dt> <code>n, frame_num</code></dt>
+<dd><p>The frame number, starting from 0.
+</p>
+</dd>
+<dt> <code>pict_type</code></dt>
+<dd><p>A 1 character description of the current picture type.
+</p>
+</dd>
+<dt> <code>pts</code></dt>
+<dd><p>The timestamp of the current frame, in seconds, with microsecond accuracy.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-58"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-58">33.22.3 Examples</a></h3>
+
+<ul>
+<li>
+Draw &quot;Test Text&quot; with font FreeSerif, using the default values for the
+optional parameters.
+
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'&quot;
+</pre></td></tr></table>
+
+</li><li>
+Draw &rsquo;Test Text&rsquo; with font FreeSerif of size 24 at position x=100
+and y=50 (counting from the top-left corner of the screen), text is
+yellow with a red box around it. Both the text and the box have an
+opacity of 20%.
+
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
+          x=100: y=50: fontsize=24: fontcolor=yellow@0.2: box=1: boxcolor=red@0.2&quot;
+</pre></td></tr></table>
+
+<p>Note that the double quotes are not necessary if spaces are not used
+within the parameter list.
+</p>
+</li><li>
+Show the text at the center of the video frame:
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h-line_h)/2&quot;
+</pre></td></tr></table>
+
+</li><li>
+Show a text line sliding from right to left in the last row of the video
+frame. The file &lsquo;<tt>LONG_LINE</tt>&rsquo; is assumed to contain a single line
+with no newlines.
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t&quot;
+</pre></td></tr></table>
+
+</li><li>
+Show the content of file &lsquo;<tt>CREDITS</tt>&rsquo; off the bottom of the frame and scroll up.
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t&quot;
+</pre></td></tr></table>
+
+</li><li>
+Draw a single green letter &quot;g&quot;, at the center of the input video.
+The glyph baseline is placed at half screen height.
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent&quot;
+</pre></td></tr></table>
+
+</li><li>
+Show text for 1 second every 3 seconds:
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'&quot;
+</pre></td></tr></table>
+
+</li><li>
+Use fontconfig to set the font. Note that the colons need to be escaped.
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
+</pre></td></tr></table>
+
+</li><li>
+Print the date of a real-time encoding (see strftime(3)):
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext='fontfile=FreeSans.ttf:text=%{localtime:%a %b %d %Y}'
+</pre></td></tr></table>
+
+</li></ul>
+
+<p>For more information about libfreetype, check:
+<a href="http://www.freetype.org/">http://www.freetype.org/</a>.
+</p>
+<p>For more information about fontconfig, check:
+<a href="http://freedesktop.org/software/fontconfig/fontconfig-user.html">http://freedesktop.org/software/fontconfig/fontconfig-user.html</a>.
+</p>
+<a name="edgedetect"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-edgedetect">33.23 edgedetect</a></h2>
+
+<p>Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>low</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>high</samp>&rsquo;</dt>
+<dd><p>Set low and high threshold values used by the Canny thresholding
+algorithm.
+</p>
+<p>The high threshold selects the &quot;strong&quot; edge pixels, which are then
+connected through 8-connectivity with the &quot;weak&quot; edge pixels selected
+by the low threshold.
+</p>
+<p><var>low</var> and <var>high</var> threshold values must be choosen in the range
+[0,1], and <var>low</var> should be lesser or equal to <var>high</var>.
+</p>
+<p>Default value for <var>low</var> is <code>20/255</code>, and default value for <var>high</var>
+is <code>50/255</code>.
+</p></dd>
+</dl>
+
+<p>Example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">edgedetect=low=0.1:high=0.4
+</pre></td></tr></table>
+
+<a name="extractplanes"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-extractplanes">33.24 extractplanes</a></h2>
+
+<p>Extract color channel components from input video stream into
+separate grayscale video streams.
+</p>
+<p>The filter accepts the following option:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>planes</samp>&rsquo;</dt>
+<dd><p>Set plane(s) to extract.
+</p>
+<p>Available values for planes are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>u</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>v</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>r</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>g</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+</dl>
+
+<p>Choosing planes not available in the input will result in an error.
+That means you cannot select <code>r</code>, <code>g</code>, <code>b</code> planes
+with <code>y</code>, <code>u</code>, <code>v</code> planes at same time.
+</p></dd>
+</dl>
+
+<a name="Examples-70"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-70">33.24.1 Examples</a></h3>
+
+<ul>
+<li>
+Extract luma, u and v color channel component from input video frame
+into 3 grayscale outputs:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i video.avi -filter_complex 'extractplanes=y+u+v[y][u][v]' -map '[y]' y.avi -map '[u]' u.avi -map '[v]' v.avi
+</pre></td></tr></table>
+</li></ul>
+
+<a name="elbg"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-elbg">33.25 elbg</a></h2>
+
+<p>Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
+</p>
+<p>For each input image, the filter will compute the optimal mapping from
+the input to the output given the codebook length, that is the number
+of distinct output colors.
+</p>
+<p>This filter accepts the following options.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>codebook_length, l</samp>&rsquo;</dt>
+<dd><p>Set codebook length. The value must be a positive integer, and
+represents the number of distinct output colors. Default value is 256.
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_steps, n</samp>&rsquo;</dt>
+<dd><p>Set the maximum number of iterations to apply for computing the optimal
+mapping. The higher the value the better the result and the higher the
+computation time. Default value is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>seed, s</samp>&rsquo;</dt>
+<dd><p>Set a random seed, must be an integer included between 0 and
+UINT32_MAX. If not specified, or if explicitly set to -1, the filter
+will try to use a good random seed on a best effort basis.
+</p></dd>
+</dl>
+
+<a name="fade"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-fade">33.26 fade</a></h2>
+
+<p>Apply fade-in/out effect to input video.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>type, t</samp>&rsquo;</dt>
+<dd><p>The effect type &ndash; can be either &quot;in&quot; for fade-in, or &quot;out&quot; for a fade-out
+effect.
+Default is <code>in</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_frame, s</samp>&rsquo;</dt>
+<dd><p>Specify the number of the start frame for starting to apply the fade
+effect. Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_frames, n</samp>&rsquo;</dt>
+<dd><p>The number of frames for which the fade effect has to last. At the end of the
+fade-in effect the output video will have the same intensity as the input video,
+at the end of the fade-out transition the output video will be filled with the
+selected &lsquo;<samp>color</samp>&rsquo;.
+Default is 25.
+</p>
+</dd>
+<dt> &lsquo;<samp>alpha</samp>&rsquo;</dt>
+<dd><p>If set to 1, fade only alpha channel, if one exists on the input.
+Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_time, st</samp>&rsquo;</dt>
+<dd><p>Specify the timestamp (in seconds) of the frame to start to apply the fade
+effect. If both start_frame and start_time are specified, the fade will start at
+whichever comes last.  Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
+<dd><p>The number of seconds for which the fade effect has to last. At the end of the
+fade-in effect the output video will have the same intensity as the input video,
+at the end of the fade-out transition the output video will be filled with the
+selected &lsquo;<samp>color</samp>&rsquo;.
+If both duration and nb_frames are specified, duration is used. Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>color, c</samp>&rsquo;</dt>
+<dd><p>Specify the color of the fade. Default is &quot;black&quot;.
+</p></dd>
+</dl>
+
+<a name="Examples-3"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-3">33.26.1 Examples</a></h3>
+
+<ul>
+<li>
+Fade in first 30 frames of video:
+<table><tr><td>&nbsp;</td><td><pre class="example">fade=in:0:30
+</pre></td></tr></table>
+
+<p>The command above is equivalent to:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">fade=t=in:s=0:n=30
+</pre></td></tr></table>
+
+</li><li>
+Fade out last 45 frames of a 200-frame video:
+<table><tr><td>&nbsp;</td><td><pre class="example">fade=out:155:45
+fade=type=out:start_frame=155:nb_frames=45
+</pre></td></tr></table>
+
+</li><li>
+Fade in first 25 frames and fade out last 25 frames of a 1000-frame video:
+<table><tr><td>&nbsp;</td><td><pre class="example">fade=in:0:25, fade=out:975:25
+</pre></td></tr></table>
+
+</li><li>
+Make first 5 frames yellow, then fade in from frame 5-24:
+<table><tr><td>&nbsp;</td><td><pre class="example">fade=in:5:20:color=yellow
+</pre></td></tr></table>
+
+</li><li>
+Fade in alpha over first 25 frames of video:
+<table><tr><td>&nbsp;</td><td><pre class="example">fade=in:0:25:alpha=1
+</pre></td></tr></table>
+
+</li><li>
+Make first 5.5 seconds black, then fade in for 0.5 seconds:
+<table><tr><td>&nbsp;</td><td><pre class="example">fade=t=in:st=5.5:d=0.5
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="field"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-field">33.27 field</a></h2>
+
+<p>Extract a single field from an interlaced image using stride
+arithmetic to avoid wasting CPU time. The output frames are marked as
+non-interlaced.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>type</samp>&rsquo;</dt>
+<dd><p>Specify whether to extract the top (if the value is <code>0</code> or
+<code>top</code>) or the bottom field (if the value is <code>1</code> or
+<code>bottom</code>).
+</p></dd>
+</dl>
+
+<a name="fieldmatch"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-fieldmatch">33.28 fieldmatch</a></h2>
+
+<p>Field matching filter for inverse telecine. It is meant to reconstruct the
+progressive frames from a telecined stream. The filter does not drop duplicated
+frames, so to achieve a complete inverse telecine <code>fieldmatch</code> needs to be
+followed by a decimation filter such as <a href="#decimate">decimate</a> in the filtergraph.
+</p>
+<p>The separation of the field matching and the decimation is notably motivated by
+the possibility of inserting a de-interlacing filter fallback between the two.
+If the source has mixed telecined and real interlaced content,
+<code>fieldmatch</code> will not be able to match fields for the interlaced parts.
+But these remaining combed frames will be marked as interlaced, and thus can be
+de-interlaced by a later filter such as <a href="#yadif">yadif</a> before decimation.
+</p>
+<p>In addition to the various configuration options, <code>fieldmatch</code> can take an
+optional second stream, activated through the &lsquo;<samp>ppsrc</samp>&rsquo; option. If
+enabled, the frames reconstruction will be based on the fields and frames from
+this second stream. This allows the first input to be pre-processed in order to
+help the various algorithms of the filter, while keeping the output lossless
+(assuming the fields are matched properly). Typically, a field-aware denoiser,
+or brightness/contrast adjustments can help.
+</p>
+<p>Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
+and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
+which <code>fieldmatch</code> is based on. While the semantic and usage are very
+close, some behaviour and options names can differ.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>order</samp>&rsquo;</dt>
+<dd><p>Specify the assumed field order of the input stream. Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Auto detect parity (use FFmpeg&rsquo;s internal parity value).
+</p></dd>
+<dt> &lsquo;<samp>bff</samp>&rsquo;</dt>
+<dd><p>Assume bottom field first.
+</p></dd>
+<dt> &lsquo;<samp>tff</samp>&rsquo;</dt>
+<dd><p>Assume top field first.
+</p></dd>
+</dl>
+
+<p>Note that it is sometimes recommended not to trust the parity announced by the
+stream.
+</p>
+<p>Default value is <var>auto</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Set the matching mode or strategy to use. &lsquo;<samp>pc</samp>&rsquo; mode is the safest in the
+sense that it won&rsquo;t risk creating jerkiness due to duplicate frames when
+possible, but if there are bad edits or blended fields it will end up
+outputting combed frames when a good match might actually exist. On the other
+hand, &lsquo;<samp>pcn_ub</samp>&rsquo; mode is the most risky in terms of creating jerkiness,
+but will almost always find a good frame if there is one. The other values are
+all somewhere in between &lsquo;<samp>pc</samp>&rsquo; and &lsquo;<samp>pcn_ub</samp>&rsquo; in terms of risking
+jerkiness and creating duplicate frames versus finding good matches in sections
+with bad edits, orphaned fields, blended fields, etc.
+</p>
+<p>More details about p/c/n/u/b are available in <a href="#p_002fc_002fn_002fu_002fb-meaning">p/c/n/u/b meaning</a> section.
+</p>
+<p>Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>pc</samp>&rsquo;</dt>
+<dd><p>2-way matching (p/c)
+</p></dd>
+<dt> &lsquo;<samp>pc_n</samp>&rsquo;</dt>
+<dd><p>2-way matching, and trying 3rd match if still combed (p/c + n)
+</p></dd>
+<dt> &lsquo;<samp>pc_u</samp>&rsquo;</dt>
+<dd><p>2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
+</p></dd>
+<dt> &lsquo;<samp>pc_n_ub</samp>&rsquo;</dt>
+<dd><p>2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
+still combed (p/c + n + u/b)
+</p></dd>
+<dt> &lsquo;<samp>pcn</samp>&rsquo;</dt>
+<dd><p>3-way matching (p/c/n)
+</p></dd>
+<dt> &lsquo;<samp>pcn_ub</samp>&rsquo;</dt>
+<dd><p>3-way matching, and trying 4th/5th matches if all 3 of the original matches are
+detected as combed (p/c/n + u/b)
+</p></dd>
+</dl>
+
+<p>The parenthesis at the end indicate the matches that would be used for that
+mode assuming &lsquo;<samp>order</samp>&rsquo;=<var>tff</var> (and &lsquo;<samp>field</samp>&rsquo; on <var>auto</var> or
+<var>top</var>).
+</p>
+<p>In terms of speed &lsquo;<samp>pc</samp>&rsquo; mode is by far the fastest and &lsquo;<samp>pcn_ub</samp>&rsquo; is
+the slowest.
+</p>
+<p>Default value is <var>pc_n</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>ppsrc</samp>&rsquo;</dt>
+<dd><p>Mark the main input stream as a pre-processed input, and enable the secondary
+input stream as the clean source to pick the fields from. See the filter
+introduction for more details. It is similar to the &lsquo;<samp>clip2</samp>&rsquo; feature from
+VFM/TFM.
+</p>
+<p>Default value is <code>0</code> (disabled).
+</p>
+</dd>
+<dt> &lsquo;<samp>field</samp>&rsquo;</dt>
+<dd><p>Set the field to match from. It is recommended to set this to the same value as
+&lsquo;<samp>order</samp>&rsquo; unless you experience matching failures with that setting. In
+certain circumstances changing the field that is used to match from can have a
+large impact on matching performance. Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Automatic (same value as &lsquo;<samp>order</samp>&rsquo;).
+</p></dd>
+<dt> &lsquo;<samp>bottom</samp>&rsquo;</dt>
+<dd><p>Match from the bottom field.
+</p></dd>
+<dt> &lsquo;<samp>top</samp>&rsquo;</dt>
+<dd><p>Match from the top field.
+</p></dd>
+</dl>
+
+<p>Default value is <var>auto</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>mchroma</samp>&rsquo;</dt>
+<dd><p>Set whether or not chroma is included during the match comparisons. In most
+cases it is recommended to leave this enabled. You should set this to <code>0</code>
+only if your clip has bad chroma problems such as heavy rainbowing or other
+artifacts. Setting this to <code>0</code> could also be used to speed things up at
+the cost of some accuracy.
+</p>
+<p>Default value is <code>1</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>y0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y1</samp>&rsquo;</dt>
+<dd><p>These define an exclusion band which excludes the lines between &lsquo;<samp>y0</samp>&rsquo; and
+&lsquo;<samp>y1</samp>&rsquo; from being included in the field matching decision. An exclusion
+band can be used to ignore subtitles, a logo, or other things that may
+interfere with the matching. &lsquo;<samp>y0</samp>&rsquo; sets the starting scan line and
+&lsquo;<samp>y1</samp>&rsquo; sets the ending line; all lines in between &lsquo;<samp>y0</samp>&rsquo; and
+&lsquo;<samp>y1</samp>&rsquo; (including &lsquo;<samp>y0</samp>&rsquo; and &lsquo;<samp>y1</samp>&rsquo;) will be ignored. Setting
+&lsquo;<samp>y0</samp>&rsquo; and &lsquo;<samp>y1</samp>&rsquo; to the same value will disable the feature.
+&lsquo;<samp>y0</samp>&rsquo; and &lsquo;<samp>y1</samp>&rsquo; defaults to <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>scthresh</samp>&rsquo;</dt>
+<dd><p>Set the scene change detection threshold as a percentage of maximum change on
+the luma plane. Good values are in the <code>[8.0, 14.0]</code> range. Scene change
+detection is only relevant in case &lsquo;<samp>combmatch</samp>&rsquo;=<var>sc</var>.  The range for
+&lsquo;<samp>scthresh</samp>&rsquo; is <code>[0.0, 100.0]</code>.
+</p>
+<p>Default value is <code>12.0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>combmatch</samp>&rsquo;</dt>
+<dd><p>When &lsquo;<samp>combatch</samp>&rsquo; is not <var>none</var>, <code>fieldmatch</code> will take into
+account the combed scores of matches when deciding what match to use as the
+final match. Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>No final matching based on combed scores.
+</p></dd>
+<dt> &lsquo;<samp>sc</samp>&rsquo;</dt>
+<dd><p>Combed scores are only used when a scene change is detected.
+</p></dd>
+<dt> &lsquo;<samp>full</samp>&rsquo;</dt>
+<dd><p>Use combed scores all the time.
+</p></dd>
+</dl>
+
+<p>Default is <var>sc</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>combdbg</samp>&rsquo;</dt>
+<dd><p>Force <code>fieldmatch</code> to calculate the combed metrics for certain matches and
+print them. This setting is known as &lsquo;<samp>micout</samp>&rsquo; in TFM/VFM vocabulary.
+Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>No forced calculation.
+</p></dd>
+<dt> &lsquo;<samp>pcn</samp>&rsquo;</dt>
+<dd><p>Force p/c/n calculations.
+</p></dd>
+<dt> &lsquo;<samp>pcnub</samp>&rsquo;</dt>
+<dd><p>Force p/c/n/u/b calculations.
+</p></dd>
+</dl>
+
+<p>Default value is <var>none</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>cthresh</samp>&rsquo;</dt>
+<dd><p>This is the area combing threshold used for combed frame detection. This
+essentially controls how &quot;strong&quot; or &quot;visible&quot; combing must be to be detected.
+Larger values mean combing must be more visible and smaller values mean combing
+can be less visible or strong and still be detected. Valid settings are from
+<code>-1</code> (every pixel will be detected as combed) to <code>255</code> (no pixel will
+be detected as combed). This is basically a pixel difference value. A good
+range is <code>[8, 12]</code>.
+</p>
+<p>Default value is <code>9</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+<dd><p>Sets whether or not chroma is considered in the combed frame decision.  Only
+disable this if your source has chroma problems (rainbowing, etc.) that are
+causing problems for the combed frame detection with chroma enabled. Actually,
+using &lsquo;<samp>chroma</samp>&rsquo;=<var>0</var> is usually more reliable, except for the case
+where there is chroma only combing in the source.
+</p>
+<p>Default value is <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>blockx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>blocky</samp>&rsquo;</dt>
+<dd><p>Respectively set the x-axis and y-axis size of the window used during combed
+frame detection. This has to do with the size of the area in which
+&lsquo;<samp>combpel</samp>&rsquo; pixels are required to be detected as combed for a frame to be
+declared combed. See the &lsquo;<samp>combpel</samp>&rsquo; parameter description for more info.
+Possible values are any number that is a power of 2 starting at 4 and going up
+to 512.
+</p>
+<p>Default value is <code>16</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>combpel</samp>&rsquo;</dt>
+<dd><p>The number of combed pixels inside any of the &lsquo;<samp>blocky</samp>&rsquo; by
+&lsquo;<samp>blockx</samp>&rsquo; size blocks on the frame for the frame to be detected as
+combed. While &lsquo;<samp>cthresh</samp>&rsquo; controls how &quot;visible&quot; the combing must be, this
+setting controls &quot;how much&quot; combing there must be in any localized area (a
+window defined by the &lsquo;<samp>blockx</samp>&rsquo; and &lsquo;<samp>blocky</samp>&rsquo; settings) on the
+frame. Minimum value is <code>0</code> and maximum is <code>blocky x blockx</code> (at
+which point no frames will ever be detected as combed). This setting is known
+as &lsquo;<samp>MI</samp>&rsquo; in TFM/VFM vocabulary.
+</p>
+<p>Default value is <code>80</code>.
+</p></dd>
+</dl>
+
+<p><a name="p_002fc_002fn_002fu_002fb-meaning"></a>
+</p><a name="p_002fc_002fn_002fu_002fb-meaning-1"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-p_002fc_002fn_002fu_002fb-meaning-1">33.28.1 p/c/n/u/b meaning</a></h3>
+
+<a name="p_002fc_002fn"></a>
+<h4 class="subsubsection"><a href="ffplay-all.html#toc-p_002fc_002fn">33.28.1.1 p/c/n</a></h4>
+
+<p>We assume the following telecined stream:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">Top fields:     1 2 2 3 4
+Bottom fields:  1 2 3 4 4
+</pre></td></tr></table>
+
+<p>The numbers correspond to the progressive frame the fields relate to. Here, the
+first two frames are progressive, the 3rd and 4th are combed, and so on.
+</p>
+<p>When <code>fieldmatch</code> is configured to run a matching from bottom
+(&lsquo;<samp>field</samp>&rsquo;=<var>bottom</var>) this is how this input stream get transformed:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">Input stream:
+                T     1 2 2 3 4
+                B     1 2 3 4 4   &lt;-- matching reference
+
+Matches:              c c n n c
+
+Output stream:
+                T     1 2 3 4 4
+                B     1 2 3 4 4
+</pre></td></tr></table>
+
+<p>As a result of the field matching, we can see that some frames get duplicated.
+To perform a complete inverse telecine, you need to rely on a decimation filter
+after this operation. See for instance the <a href="#decimate">decimate</a> filter.
+</p>
+<p>The same operation now matching from top fields (&lsquo;<samp>field</samp>&rsquo;=<var>top</var>)
+looks like this:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">Input stream:
+                T     1 2 2 3 4   &lt;-- matching reference
+                B     1 2 3 4 4
+
+Matches:              c c p p c
+
+Output stream:
+                T     1 2 2 3 4
+                B     1 2 2 3 4
+</pre></td></tr></table>
+
+<p>In these examples, we can see what <var>p</var>, <var>c</var> and <var>n</var> mean;
+basically, they refer to the frame and field of the opposite parity:
+</p>
+<ul>
+<li> <var>p</var> matches the field of the opposite parity in the previous frame
+</li><li> <var>c</var> matches the field of the opposite parity in the current frame
+</li><li> <var>n</var> matches the field of the opposite parity in the next frame
+</li></ul>
+
+<a name="u_002fb"></a>
+<h4 class="subsubsection"><a href="ffplay-all.html#toc-u_002fb">33.28.1.2 u/b</a></h4>
+
+<p>The <var>u</var> and <var>b</var> matching are a bit special in the sense that they match
+from the opposite parity flag. In the following examples, we assume that we are
+currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
+&rsquo;x&rsquo; is placed above and below each matched fields.
+</p>
+<p>With bottom matching (&lsquo;<samp>field</samp>&rsquo;=<var>bottom</var>):
+</p><table><tr><td>&nbsp;</td><td><pre class="example">Match:           c         p           n          b          u
+
+                 x       x               x        x          x
+  Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
+  Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
+                 x         x           x        x              x
+
+Output frames:
+                 2          1          2          2          2
+                 2          2          2          1          3
+</pre></td></tr></table>
+
+<p>With top matching (&lsquo;<samp>field</samp>&rsquo;=<var>top</var>):
+</p><table><tr><td>&nbsp;</td><td><pre class="example">Match:           c         p           n          b          u
+
+                 x         x           x        x              x
+  Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
+  Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
+                 x       x               x        x          x
+
+Output frames:
+                 2          2          2          1          2
+                 2          1          3          2          2
+</pre></td></tr></table>
+
+<a name="Examples-52"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-52">33.28.2 Examples</a></h3>
+
+<p>Simple IVTC of a top field first telecined stream:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">fieldmatch=order=tff:combmatch=none, decimate
+</pre></td></tr></table>
+
+<p>Advanced IVTC, with fallback on <a href="#yadif">yadif</a> for still combed frames:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
+</pre></td></tr></table>
+
+<a name="fieldorder"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-fieldorder">33.29 fieldorder</a></h2>
+
+<p>Transform the field order of the input video.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>order</samp>&rsquo;</dt>
+<dd><p>Output field order. Valid values are <var>tff</var> for top field first or <var>bff</var>
+for bottom field first.
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>tff</samp>&rsquo;.
+</p>
+<p>Transformation is achieved by shifting the picture content up or down
+by one line, and filling the remaining line with appropriate picture content.
+This method is consistent with most broadcast field order converters.
+</p>
+<p>If the input video is not flagged as being interlaced, or it is already
+flagged as being of the required output field order then this filter does
+not alter the incoming video.
+</p>
+<p>This filter is very useful when converting to or from PAL DV material,
+which is bottom field first.
+</p>
+<p>For example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.vob -vf &quot;fieldorder=bff&quot; out.dv
+</pre></td></tr></table>
+
+<a name="fifo"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-fifo">33.30 fifo</a></h2>
+
+<p>Buffer input images and send them when they are requested.
+</p>
+<p>This filter is mainly useful when auto-inserted by the libavfilter
+framework.
+</p>
+<p>The filter does not take parameters.
+</p>
+<p><a name="format"></a>
+</p><a name="format-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-format-1">33.31 format</a></h2>
+
+<p>Convert the input video to one of the specified pixel formats.
+Libavfilter will try to pick one that is supported for the input to
+the next filter.
+</p>
+<p>This filter accepts the following parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>pix_fmts</samp>&rsquo;</dt>
+<dd><p>A &rsquo;|&rsquo;-separated list of pixel format names, for example
+&quot;pix_fmts=yuv420p|monow|rgb24&quot;.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-57"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-57">33.31.1 Examples</a></h3>
+
+<ul>
+<li>
+Convert the input video to the format <var>yuv420p</var>
+<table><tr><td>&nbsp;</td><td><pre class="example">format=pix_fmts=yuv420p
+</pre></td></tr></table>
+
+<p>Convert the input video to any of the formats in the list
+</p><table><tr><td>&nbsp;</td><td><pre class="example">format=pix_fmts=yuv420p|yuv444p|yuv410p
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="fps"></a>
+</p><a name="fps-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-fps-1">33.32 fps</a></h2>
+
+<p>Convert the video to specified constant frame rate by duplicating or dropping
+frames as necessary.
+</p>
+<p>This filter accepts the following named parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>fps</samp>&rsquo;</dt>
+<dd><p>Desired output frame rate. The default is <code>25</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>round</samp>&rsquo;</dt>
+<dd><p>Rounding method.
+</p>
+<p>Possible values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>zero round towards 0
+</p></dd>
+<dt> &lsquo;<samp>inf</samp>&rsquo;</dt>
+<dd><p>round away from 0
+</p></dd>
+<dt> &lsquo;<samp>down</samp>&rsquo;</dt>
+<dd><p>round towards -infinity
+</p></dd>
+<dt> &lsquo;<samp>up</samp>&rsquo;</dt>
+<dd><p>round towards +infinity
+</p></dd>
+<dt> &lsquo;<samp>near</samp>&rsquo;</dt>
+<dd><p>round to nearest
+</p></dd>
+</dl>
+<p>The default is <code>near</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_time</samp>&rsquo;</dt>
+<dd><p>Assume the first PTS should be the given value, in seconds. This allows for
+padding/trimming at the start of stream. By default, no assumption is made
+about the first frame&rsquo;s expected PTS, so no padding or trimming is done.
+For example, this could be set to 0 to pad the beginning with duplicates of
+the first frame if a video stream starts after the audio stream or to trim any
+frames with a negative PTS.
+</p>
+</dd>
+</dl>
+
+<p>Alternatively, the options can be specified as a flat string:
+<var>fps</var>[:<var>round</var>].
+</p>
+<p>See also the <a href="#setpts">setpts</a> filter.
+</p>
+<a name="Examples-25"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-25">33.32.1 Examples</a></h3>
+
+<ul>
+<li>
+A typical usage in order to set the fps to 25:
+<table><tr><td>&nbsp;</td><td><pre class="example">fps=fps=25
+</pre></td></tr></table>
+
+</li><li>
+Sets the fps to 24, using abbreviation and rounding method to round to nearest:
+<table><tr><td>&nbsp;</td><td><pre class="example">fps=fps=film:round=near
+</pre></td></tr></table>
+</li></ul>
+
+<a name="framestep"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-framestep">33.33 framestep</a></h2>
+
+<p>Select one frame every N-th frame.
+</p>
+<p>This filter accepts the following option:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>step</samp>&rsquo;</dt>
+<dd><p>Select frame after every <code>step</code> frames.
+Allowed values are positive integers higher than 0. Default value is <code>1</code>.
+</p></dd>
+</dl>
+
+<p><a name="frei0r"></a>
+</p><a name="frei0r-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-frei0r-1">33.34 frei0r</a></h2>
+
+<p>Apply a frei0r effect to the input video.
+</p>
+<p>To enable compilation of this filter you need to install the frei0r
+header and configure FFmpeg with <code>--enable-frei0r</code>.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filter_name</samp>&rsquo;</dt>
+<dd><p>The name to the frei0r effect to load. If the environment variable
+<code>FREI0R_PATH</code> is defined, the frei0r effect is searched in each one of the
+directories specified by the colon separated list in <code>FREIOR_PATH</code>,
+otherwise in the standard frei0r paths, which are in this order:
+&lsquo;<tt>HOME/.frei0r-1/lib/</tt>&rsquo;, &lsquo;<tt>/usr/local/lib/frei0r-1/</tt>&rsquo;,
+&lsquo;<tt>/usr/lib/frei0r-1/</tt>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>filter_params</samp>&rsquo;</dt>
+<dd><p>A &rsquo;|&rsquo;-separated list of parameters to pass to the frei0r effect.
+</p>
+</dd>
+</dl>
+
+<p>A frei0r effect parameter can be a boolean (whose values are specified
+with &quot;y&quot; and &quot;n&quot;), a double, a color (specified by the syntax
+<var>R</var>/<var>G</var>/<var>B</var>, (<var>R</var>, <var>G</var>, and <var>B</var> being float
+numbers from 0.0 to 1.0) or by a color description specified in the &quot;Color&quot;
+section in the ffmpeg-utils manual), a position (specified by the syntax <var>X</var>/<var>Y</var>,
+<var>X</var> and <var>Y</var> being float numbers) and a string.
+</p>
+<p>The number and kind of parameters depend on the loaded effect. If an
+effect parameter is not specified the default value is set.
+</p>
+<a name="Examples-12"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-12">33.34.1 Examples</a></h3>
+
+<ul>
+<li>
+Apply the distort0r effect, set the first two double parameters:
+<table><tr><td>&nbsp;</td><td><pre class="example">frei0r=filter_name=distort0r:filter_params=0.5|0.01
+</pre></td></tr></table>
+
+</li><li>
+Apply the colordistance effect, take a color as first parameter:
+<table><tr><td>&nbsp;</td><td><pre class="example">frei0r=colordistance:0.2/0.3/0.4
+frei0r=colordistance:violet
+frei0r=colordistance:0x112233
+</pre></td></tr></table>
+
+</li><li>
+Apply the perspective effect, specify the top left and top right image
+positions:
+<table><tr><td>&nbsp;</td><td><pre class="example">frei0r=perspective:0.2/0.2|0.8/0.2
+</pre></td></tr></table>
+</li></ul>
+
+<p>For more information see:
+<a href="http://frei0r.dyne.org">http://frei0r.dyne.org</a>
+</p>
+<a name="geq"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-geq">33.35 geq</a></h2>
+
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>lum_expr, lum</samp>&rsquo;</dt>
+<dd><p>Set the luminance expression.
+</p></dd>
+<dt> &lsquo;<samp>cb_expr, cb</samp>&rsquo;</dt>
+<dd><p>Set the chrominance blue expression.
+</p></dd>
+<dt> &lsquo;<samp>cr_expr, cr</samp>&rsquo;</dt>
+<dd><p>Set the chrominance red expression.
+</p></dd>
+<dt> &lsquo;<samp>alpha_expr, a</samp>&rsquo;</dt>
+<dd><p>Set the alpha expression.
+</p></dd>
+<dt> &lsquo;<samp>red_expr, r</samp>&rsquo;</dt>
+<dd><p>Set the red expression.
+</p></dd>
+<dt> &lsquo;<samp>green_expr, g</samp>&rsquo;</dt>
+<dd><p>Set the green expression.
+</p></dd>
+<dt> &lsquo;<samp>blue_expr, b</samp>&rsquo;</dt>
+<dd><p>Set the blue expression.
+</p></dd>
+</dl>
+
+<p>The colorspace is selected according to the specified options. If one
+of the &lsquo;<samp>lum_expr</samp>&rsquo;, &lsquo;<samp>cb_expr</samp>&rsquo;, or &lsquo;<samp>cr_expr</samp>&rsquo;
+options is specified, the filter will automatically select a YCbCr
+colorspace. If one of the &lsquo;<samp>red_expr</samp>&rsquo;, &lsquo;<samp>green_expr</samp>&rsquo;, or
+&lsquo;<samp>blue_expr</samp>&rsquo; options is specified, it will select an RGB
+colorspace.
+</p>
+<p>If one of the chrominance expression is not defined, it falls back on the other
+one. If no alpha expression is specified it will evaluate to opaque value.
+If none of chrominance expressions are specified, they will evaluate
+to the luminance expression.
+</p>
+<p>The expressions can use the following variables and functions:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>N</samp>&rsquo;</dt>
+<dd><p>The sequential number of the filtered frame, starting from <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>X</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>Y</samp>&rsquo;</dt>
+<dd><p>The coordinates of the current sample.
+</p>
+</dd>
+<dt> &lsquo;<samp>W</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>H</samp>&rsquo;</dt>
+<dd><p>The width and height of the image.
+</p>
+</dd>
+<dt> &lsquo;<samp>SW</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>SH</samp>&rsquo;</dt>
+<dd><p>Width and height scale depending on the currently filtered plane. It is the
+ratio between the corresponding luma plane number of pixels and the current
+plane ones. E.g. for YUV4:2:0 the values are <code>1,1</code> for the luma plane, and
+<code>0.5,0.5</code> for chroma planes.
+</p>
+</dd>
+<dt> &lsquo;<samp>T</samp>&rsquo;</dt>
+<dd><p>Time of the current frame, expressed in seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>p(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the value of the pixel at location (<var>x</var>,<var>y</var>) of the current
+plane.
+</p>
+</dd>
+<dt> &lsquo;<samp>lum(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the value of the pixel at location (<var>x</var>,<var>y</var>) of the luminance
+plane.
+</p>
+</dd>
+<dt> &lsquo;<samp>cb(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the value of the pixel at location (<var>x</var>,<var>y</var>) of the
+blue-difference chroma plane. Return 0 if there is no such plane.
+</p>
+</dd>
+<dt> &lsquo;<samp>cr(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the value of the pixel at location (<var>x</var>,<var>y</var>) of the
+red-difference chroma plane. Return 0 if there is no such plane.
+</p>
+</dd>
+<dt> &lsquo;<samp>r(x, y)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>g(x, y)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>b(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the value of the pixel at location (<var>x</var>,<var>y</var>) of the
+red/green/blue component. Return 0 if there is no such component.
+</p>
+</dd>
+<dt> &lsquo;<samp>alpha(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the value of the pixel at location (<var>x</var>,<var>y</var>) of the alpha
+plane. Return 0 if there is no such plane.
+</p></dd>
+</dl>
+
+<p>For functions, if <var>x</var> and <var>y</var> are outside the area, the value will be
+automatically clipped to the closer edge.
+</p>
+<a name="Examples-79"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-79">33.35.1 Examples</a></h3>
+
+<ul>
+<li>
+Flip the image horizontally:
+<table><tr><td>&nbsp;</td><td><pre class="example">geq=p(W-X\,Y)
+</pre></td></tr></table>
+
+</li><li>
+Generate a bidimensional sine wave, with angle <code>PI/3</code> and a
+wavelength of 100 pixels:
+<table><tr><td>&nbsp;</td><td><pre class="example">geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
+</pre></td></tr></table>
+
+</li><li>
+Generate a fancy enigmatic moving light:
+<table><tr><td>&nbsp;</td><td><pre class="example">nullsrc=s=256x256,geq=random(1)/hypot(X-cos(N*0.07)*W/2-W/2\,Y-sin(N*0.09)*H/2-H/2)^2*1000000*sin(N*0.02):128:128
+</pre></td></tr></table>
+
+</li><li>
+Generate a quick emboss effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
+</pre></td></tr></table>
+
+</li><li>
+Modify RGB components depending on pixel position:
+<table><tr><td>&nbsp;</td><td><pre class="example">geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
+</pre></td></tr></table>
+</li></ul>
+
+<a name="gradfun"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-gradfun">33.36 gradfun</a></h2>
+
+<p>Fix the banding artifacts that are sometimes introduced into nearly flat
+regions by truncation to 8bit color depth.
+Interpolate the gradients that should go where the bands are, and
+dither them.
+</p>
+<p>This filter is designed for playback only.  Do not use it prior to
+lossy compression, because compression tends to lose the dither and
+bring back the bands.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>strength</samp>&rsquo;</dt>
+<dd><p>The maximum amount by which the filter will change any one pixel. Also the
+threshold for detecting nearly flat regions. Acceptable values range from .51 to
+64, default value is 1.2, out-of-range values will be clipped to the valid
+range.
+</p>
+</dd>
+<dt> &lsquo;<samp>radius</samp>&rsquo;</dt>
+<dd><p>The neighborhood to fit the gradient to. A larger radius makes for smoother
+gradients, but also prevents the filter from modifying the pixels near detailed
+regions. Acceptable values are 8-32, default value is 16, out-of-range values
+will be clipped to the valid range.
+</p>
+</dd>
+</dl>
+
+<p>Alternatively, the options can be specified as a flat string:
+<var>strength</var>[:<var>radius</var>]
+</p>
+<a name="Examples-72"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-72">33.36.1 Examples</a></h3>
+
+<ul>
+<li>
+Apply the filter with a <code>3.5</code> strength and radius of <code>8</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">gradfun=3.5:8
+</pre></td></tr></table>
+
+</li><li>
+Specify radius, omitting the strength (which will fall-back to the default
+value):
+<table><tr><td>&nbsp;</td><td><pre class="example">gradfun=radius=8
+</pre></td></tr></table>
+
+</li></ul>
+
+<p><a name="haldclut"></a>
+</p><a name="haldclut-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-haldclut-1">33.37 haldclut</a></h2>
+
+<p>Apply a Hald CLUT to a video stream.
+</p>
+<p>First input is the video stream to process, and second one is the Hald CLUT.
+The Hald CLUT input can be a simple picture or a complete video stream.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>shortest</samp>&rsquo;</dt>
+<dd><p>Force termination when the shortest input terminates. Default is <code>0</code>.
+</p></dd>
+<dt> &lsquo;<samp>repeatlast</samp>&rsquo;</dt>
+<dd><p>Continue applying the last CLUT after the end of the stream. A value of
+<code>0</code> disable the filter after the last frame of the CLUT is reached.
+Default is <code>1</code>.
+</p></dd>
+</dl>
+
+<p><code>haldclut</code> also has the same interpolation options as <a href="#lut3d">lut3d</a> (both
+filters share the same internals).
+</p>
+<p>More information about the Hald CLUT can be found on Eskil Steenberg&rsquo;s website
+(Hald CLUT author) at <a href="http://www.quelsolaar.com/technology/clut.html">http://www.quelsolaar.com/technology/clut.html</a>.
+</p>
+<a name="Workflow-examples"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Workflow-examples">33.37.1 Workflow examples</a></h3>
+
+<a name="Hald-CLUT-video-stream"></a>
+<h4 class="subsubsection"><a href="ffplay-all.html#toc-Hald-CLUT-video-stream">33.37.1.1 Hald CLUT video stream</a></h4>
+
+<p>Generate an identity Hald CLUT stream altered with various effects:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f lavfi -i <a href="#haldclutsrc">haldclutsrc</a>=8 -vf &quot;hue=H=2*PI*t:s=sin(2*PI*t)+1, curves=cross_process&quot; -t 10 -c:v ffv1 clut.nut
+</pre></td></tr></table>
+
+<p>Note: make sure you use a lossless codec.
+</p>
+<p>Then use it with <code>haldclut</code> to apply it on some random stream:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
+</pre></td></tr></table>
+
+<p>The Hald CLUT will be applied to the 10 first seconds (duration of
+&lsquo;<tt>clut.nut</tt>&rsquo;), then the latest picture of that CLUT stream will be applied
+to the remaining frames of the <code>mandelbrot</code> stream.
+</p>
+<a name="Hald-CLUT-with-preview"></a>
+<h4 class="subsubsection"><a href="ffplay-all.html#toc-Hald-CLUT-with-preview">33.37.1.2 Hald CLUT with preview</a></h4>
+
+<p>A Hald CLUT is supposed to be a squared image of <code>Level*Level*Level</code> by
+<code>Level*Level*Level</code> pixels. For a given Hald CLUT, FFmpeg will select the
+biggest possible square starting at the top left of the picture. The remaining
+padding pixels (bottom or right) will be ignored. This area can be used to add
+a preview of the Hald CLUT.
+</p>
+<p>Typically, the following generated Hald CLUT will be supported by the
+<code>haldclut</code> filter:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f lavfi -i <a href="#haldclutsrc">haldclutsrc</a>=8 -vf &quot;
+   pad=iw+320 [padded_clut];
+   smptebars=s=320x256, split [a][b];
+   [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
+   [main][b] overlay=W-320&quot; -frames:v 1 clut.png
+</pre></td></tr></table>
+
+<p>It contains the original and a preview of the effect of the CLUT: SMPTE color
+bars are displayed on the right-top, and below the same color bars processed by
+the color changes.
+</p>
+<p>Then, the effect of this Hald CLUT can be visualized with:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay input.mkv -vf &quot;movie=clut.png, [in] haldclut&quot;
+</pre></td></tr></table>
+
+<a name="hflip"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-hflip">33.38 hflip</a></h2>
+
+<p>Flip the input video horizontally.
+</p>
+<p>For example to horizontally flip the input video with <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -vf &quot;hflip&quot; out.avi
+</pre></td></tr></table>
+
+<a name="histeq"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-histeq">33.39 histeq</a></h2>
+<p>This filter applies a global color histogram equalization on a
+per-frame basis.
+</p>
+<p>It can be used to correct video that has a compressed range of pixel
+intensities.  The filter redistributes the pixel intensities to
+equalize their distribution across the intensity range. It may be
+viewed as an &quot;automatically adjusting contrast filter&quot;. This filter is
+useful only for correcting degraded or poorly captured source
+video.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>strength</samp>&rsquo;</dt>
+<dd><p>Determine the amount of equalization to be applied.  As the strength
+is reduced, the distribution of pixel intensities more-and-more
+approaches that of the input frame. The value must be a float number
+in the range [0,1] and defaults to 0.200.
+</p>
+</dd>
+<dt> &lsquo;<samp>intensity</samp>&rsquo;</dt>
+<dd><p>Set the maximum intensity that can generated and scale the output
+values appropriately.  The strength should be set as desired and then
+the intensity can be limited if needed to avoid washing-out. The value
+must be a float number in the range [0,1] and defaults to 0.210.
+</p>
+</dd>
+<dt> &lsquo;<samp>antibanding</samp>&rsquo;</dt>
+<dd><p>Set the antibanding level. If enabled the filter will randomly vary
+the luminance of output pixels by a small amount to avoid banding of
+the histogram. Possible values are <code>none</code>, <code>weak</code> or
+<code>strong</code>. It defaults to <code>none</code>.
+</p></dd>
+</dl>
+
+<a name="histogram"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-histogram">33.40 histogram</a></h2>
+
+<p>Compute and draw a color distribution histogram for the input video.
+</p>
+<p>The computed histogram is a representation of distribution of color components
+in an image.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Set histogram mode.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>levels</samp>&rsquo;</dt>
+<dd><p>standard histogram that display color components distribution in an image.
+Displays color graph for each color component. Shows distribution
+of the Y, U, V, A or R, G, B components, depending on input format,
+in current frame. Bellow each graph is color component scale meter.
+</p>
+</dd>
+<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
+<dd><p>chroma values in vectorscope, if brighter more such chroma values are
+distributed in an image.
+Displays chroma values (U/V color placement) in two dimensional graph
+(which is called a vectorscope). It can be used to read of the hue and
+saturation of the current frame. At a same time it is a histogram.
+The whiter a pixel in the vectorscope, the more pixels of the input frame
+correspond to that pixel (that is the more pixels have this chroma value).
+The V component is displayed on the horizontal (X) axis, with the leftmost
+side being V = 0 and the rightmost side being V = 255.
+The U component is displayed on the vertical (Y) axis, with the top
+representing U = 0 and the bottom representing U = 255.
+</p>
+<p>The position of a white pixel in the graph corresponds to the chroma value
+of a pixel of the input clip. So the graph can be used to read of the
+hue (color flavor) and the saturation (the dominance of the hue in the color).
+As the hue of a color changes, it moves around the square. At the center of
+the square, the saturation is zero, which means that the corresponding pixel
+has no color. If you increase the amount of a specific color, while leaving
+the other colors unchanged, the saturation increases, and you move towards
+the edge of the square.
+</p>
+</dd>
+<dt> &lsquo;<samp>color2</samp>&rsquo;</dt>
+<dd><p>chroma values in vectorscope, similar as <code>color</code> but actual chroma values
+are displayed.
+</p>
+</dd>
+<dt> &lsquo;<samp>waveform</samp>&rsquo;</dt>
+<dd><p>per row/column color component graph. In row mode graph in the left side represents
+color component value 0 and right side represents value = 255. In column mode top
+side represents color component value = 0 and bottom side represents value = 255.
+</p></dd>
+</dl>
+<p>Default value is <code>levels</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>level_height</samp>&rsquo;</dt>
+<dd><p>Set height of level in <code>levels</code>. Default value is <code>200</code>.
+Allowed range is [50, 2048].
+</p>
+</dd>
+<dt> &lsquo;<samp>scale_height</samp>&rsquo;</dt>
+<dd><p>Set height of color scale in <code>levels</code>. Default value is <code>12</code>.
+Allowed range is [0, 40].
+</p>
+</dd>
+<dt> &lsquo;<samp>step</samp>&rsquo;</dt>
+<dd><p>Set step for <code>waveform</code> mode. Smaller values are useful to find out how much
+of same luminance values across input rows/columns are distributed.
+Default value is <code>10</code>. Allowed range is [1, 255].
+</p>
+</dd>
+<dt> &lsquo;<samp>waveform_mode</samp>&rsquo;</dt>
+<dd><p>Set mode for <code>waveform</code>. Can be either <code>row</code>, or <code>column</code>.
+Default is <code>row</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>waveform_mirror</samp>&rsquo;</dt>
+<dd><p>Set mirroring mode for <code>waveform</code>. <code>0</code> means unmirrored, <code>1</code>
+means mirrored. In mirrored mode, higher values will be represented on the left
+side for <code>row</code> mode and at the top for <code>column</code> mode. Default is
+<code>0</code> (unmirrored).
+</p>
+</dd>
+<dt> &lsquo;<samp>display_mode</samp>&rsquo;</dt>
+<dd><p>Set display mode for <code>waveform</code> and <code>levels</code>.
+It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>parade</samp>&rsquo;</dt>
+<dd><p>Display separate graph for the color components side by side in
+<code>row</code> waveform mode or one below other in <code>column</code> waveform mode
+for <code>waveform</code> histogram mode. For <code>levels</code> histogram mode
+per color component graphs are placed one bellow other.
+</p>
+<p>This display mode in <code>waveform</code> histogram mode makes it easy to spot
+color casts in the highlights and shadows of an image, by comparing the
+contours of the top and the bottom of each waveform.
+Since whites, grays, and blacks are characterized by
+exactly equal amounts of red, green, and blue, neutral areas of the
+picture should display three waveforms of roughly equal width/height.
+If not, the correction is easy to make by making adjustments to level the
+three waveforms.
+</p>
+</dd>
+<dt> &lsquo;<samp>overlay</samp>&rsquo;</dt>
+<dd><p>Presents information that&rsquo;s identical to that in the <code>parade</code>, except
+that the graphs representing color components are superimposed directly
+over one another.
+</p>
+<p>This display mode in <code>waveform</code> histogram mode can make it easier to spot
+the relative differences or similarities in overlapping areas of the color
+components that are supposed to be identical, such as neutral whites, grays,
+or blacks.
+</p></dd>
+</dl>
+<p>Default is <code>parade</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>levels_mode</samp>&rsquo;</dt>
+<dd><p>Set mode for <code>levels</code>. Can be either <code>linear</code>, or <code>logarithmic</code>.
+Default is <code>linear</code>.
+</p></dd>
+</dl>
+
+<a name="Examples-16"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-16">33.40.1 Examples</a></h3>
+
+<ul>
+<li>
+Calculate and draw histogram:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -i input -vf histogram
+</pre></td></tr></table>
+
+</li></ul>
+
+<p><a name="hqdn3d"></a>
+</p><a name="hqdn3d-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-hqdn3d-1">33.41 hqdn3d</a></h2>
+
+<p>High precision/quality 3d denoise filter. This filter aims to reduce
+image noise producing smooth images and making still images really
+still. It should enhance compressibility.
+</p>
+<p>It accepts the following optional parameters:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>luma_spatial</samp>&rsquo;</dt>
+<dd><p>a non-negative float number which specifies spatial luma strength,
+defaults to 4.0
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_spatial</samp>&rsquo;</dt>
+<dd><p>a non-negative float number which specifies spatial chroma strength,
+defaults to 3.0*<var>luma_spatial</var>/4.0
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_tmp</samp>&rsquo;</dt>
+<dd><p>a float number which specifies luma temporal strength, defaults to
+6.0*<var>luma_spatial</var>/4.0
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_tmp</samp>&rsquo;</dt>
+<dd><p>a float number which specifies chroma temporal strength, defaults to
+<var>luma_tmp</var>*<var>chroma_spatial</var>/<var>luma_spatial</var>
+</p></dd>
+</dl>
+
+<a name="hue"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-hue">33.42 hue</a></h2>
+
+<p>Modify the hue and/or the saturation of the input.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Specify the hue angle as a number of degrees. It accepts an expression,
+and defaults to &quot;0&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>Specify the saturation in the [-10,10] range. It accepts an expression and
+defaults to &quot;1&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>H</samp>&rsquo;</dt>
+<dd><p>Specify the hue angle as a number of radians. It accepts an
+expression, and defaults to &quot;0&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>Specify the brightness in the [-10,10] range. It accepts an expression and
+defaults to &quot;0&quot;.
+</p></dd>
+</dl>
+
+<p>&lsquo;<samp>h</samp>&rsquo; and &lsquo;<samp>H</samp>&rsquo; are mutually exclusive, and can&rsquo;t be
+specified at the same time.
+</p>
+<p>The &lsquo;<samp>b</samp>&rsquo;, &lsquo;<samp>h</samp>&rsquo;, &lsquo;<samp>H</samp>&rsquo; and &lsquo;<samp>s</samp>&rsquo; option values are
+expressions containing the following constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>frame count of the input frame starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
+<dd><p>presentation timestamp of the input frame expressed in time base units
+</p>
+</dd>
+<dt> &lsquo;<samp>r</samp>&rsquo;</dt>
+<dd><p>frame rate of the input video, NAN if the input frame rate is unknown
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>timestamp expressed in seconds, NAN if the input timestamp is unknown
+</p>
+</dd>
+<dt> &lsquo;<samp>tb</samp>&rsquo;</dt>
+<dd><p>time base of the input video
+</p></dd>
+</dl>
+
+<a name="Examples-51"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-51">33.42.1 Examples</a></h3>
+
+<ul>
+<li>
+Set the hue to 90 degrees and the saturation to 1.0:
+<table><tr><td>&nbsp;</td><td><pre class="example">hue=h=90:s=1
+</pre></td></tr></table>
+
+</li><li>
+Same command but expressing the hue in radians:
+<table><tr><td>&nbsp;</td><td><pre class="example">hue=H=PI/2:s=1
+</pre></td></tr></table>
+
+</li><li>
+Rotate hue and make the saturation swing between 0
+and 2 over a period of 1 second:
+<table><tr><td>&nbsp;</td><td><pre class="example">hue=&quot;H=2*PI*t: s=sin(2*PI*t)+1&quot;
+</pre></td></tr></table>
+
+</li><li>
+Apply a 3 seconds saturation fade-in effect starting at 0:
+<table><tr><td>&nbsp;</td><td><pre class="example">hue=&quot;s=min(t/3\,1)&quot;
+</pre></td></tr></table>
+
+<p>The general fade-in expression can be written as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">hue=&quot;s=min(0\, max((t-START)/DURATION\, 1))&quot;
+</pre></td></tr></table>
+
+</li><li>
+Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
+<table><tr><td>&nbsp;</td><td><pre class="example">hue=&quot;s=max(0\, min(1\, (8-t)/3))&quot;
+</pre></td></tr></table>
+
+<p>The general fade-out expression can be written as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">hue=&quot;s=max(0\, min(1\, (START+DURATION-t)/DURATION))&quot;
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="Commands"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Commands">33.42.2 Commands</a></h3>
+
+<p>This filter supports the following commands:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>H</samp>&rsquo;</dt>
+<dd><p>Modify the hue and/or the saturation and/or brightness of the input video.
+The command accepts the same syntax of the corresponding option.
+</p>
+<p>If the specified expression is not valid, it is kept at its current
+value.
+</p></dd>
+</dl>
+
+<a name="idet"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-idet">33.43 idet</a></h2>
+
+<p>Detect video interlacing type.
+</p>
+<p>This filter tries to detect if the input is interlaced or progressive,
+top or bottom field first.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>intl_thres</samp>&rsquo;</dt>
+<dd><p>Set interlacing threshold.
+</p></dd>
+<dt> &lsquo;<samp>prog_thres</samp>&rsquo;</dt>
+<dd><p>Set progressive threshold.
+</p></dd>
+</dl>
+
+<a name="il"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-il">33.44 il</a></h2>
+
+<p>Deinterleave or interleave fields.
+</p>
+<p>This filter allows to process interlaced images fields without
+deinterlacing them. Deinterleaving splits the input frame into 2
+fields (so called half pictures). Odd lines are moved to the top
+half of the output image, even lines to the bottom half.
+You can process (filter) them independently and then re-interleave them.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>luma_mode, l</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma_mode, c</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>alpha_mode, a</samp>&rsquo;</dt>
+<dd><p>Available values for <var>luma_mode</var>, <var>chroma_mode</var> and
+<var>alpha_mode</var> are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>Do nothing.
+</p>
+</dd>
+<dt> &lsquo;<samp>deinterleave, d</samp>&rsquo;</dt>
+<dd><p>Deinterleave fields, placing one above the other.
+</p>
+</dd>
+<dt> &lsquo;<samp>interleave, i</samp>&rsquo;</dt>
+<dd><p>Interleave fields. Reverse the effect of deinterleaving.
+</p></dd>
+</dl>
+<p>Default value is <code>none</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_swap, ls</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma_swap, cs</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>alpha_swap, as</samp>&rsquo;</dt>
+<dd><p>Swap luma/chroma/alpha fields. Exchange even &amp; odd lines. Default value is <code>0</code>.
+</p></dd>
+</dl>
+
+<a name="interlace"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-interlace">33.45 interlace</a></h2>
+
+<p>Simple interlacing filter from progressive contents. This interleaves upper (or
+lower) lines from odd frames with lower (or upper) lines from even frames,
+halving the frame rate and preserving image height.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">   Original        Original             New Frame
+   Frame 'j'      Frame 'j+1'             (tff)
+  ==========      ===========       ==================
+    Line 0  --------------------&gt;    Frame 'j' Line 0
+    Line 1          Line 1  ----&gt;   Frame 'j+1' Line 1
+    Line 2 ---------------------&gt;    Frame 'j' Line 2
+    Line 3          Line 3  ----&gt;   Frame 'j+1' Line 3
+     ...             ...                   ...
+New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
+</pre></td></tr></table>
+
+<p>It accepts the following optional parameters:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>scan</samp>&rsquo;</dt>
+<dd><p>determines whether the interlaced frame is taken from the even (tff - default)
+or odd (bff) lines of the progressive frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>lowpass</samp>&rsquo;</dt>
+<dd><p>Enable (default) or disable the vertical lowpass filter to avoid twitter
+interlacing and reduce moire patterns.
+</p></dd>
+</dl>
+
+<a name="kerndeint"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-kerndeint">33.46 kerndeint</a></h2>
+
+<p>Deinterlace input video by applying Donald Graft&rsquo;s adaptive kernel
+deinterling. Work on interlaced parts of a video to produce
+progressive frames.
+</p>
+<p>The description of the accepted parameters follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>thresh</samp>&rsquo;</dt>
+<dd><p>Set the threshold which affects the filter&rsquo;s tolerance when
+determining if a pixel line must be processed. It must be an integer
+in the range [0,255] and defaults to 10. A value of 0 will result in
+applying the process on every pixels.
+</p>
+</dd>
+<dt> &lsquo;<samp>map</samp>&rsquo;</dt>
+<dd><p>Paint pixels exceeding the threshold value to white if set to 1.
+Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>order</samp>&rsquo;</dt>
+<dd><p>Set the fields order. Swap fields if set to 1, leave fields alone if
+0. Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>sharp</samp>&rsquo;</dt>
+<dd><p>Enable additional sharpening if set to 1. Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>twoway</samp>&rsquo;</dt>
+<dd><p>Enable twoway sharpening if set to 1. Default is 0.
+</p></dd>
+</dl>
+
+<a name="Examples-50"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-50">33.46.1 Examples</a></h3>
+
+<ul>
+<li>
+Apply default values:
+<table><tr><td>&nbsp;</td><td><pre class="example">kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
+</pre></td></tr></table>
+
+</li><li>
+Enable additional sharpening:
+<table><tr><td>&nbsp;</td><td><pre class="example">kerndeint=sharp=1
+</pre></td></tr></table>
+
+</li><li>
+Paint processed pixels in white:
+<table><tr><td>&nbsp;</td><td><pre class="example">kerndeint=map=1
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="lut3d"></a>
+</p><a name="lut3d-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-lut3d-1">33.47 lut3d</a></h2>
+
+<p>Apply a 3D LUT to an input video.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>file</samp>&rsquo;</dt>
+<dd><p>Set the 3D LUT file name.
+</p>
+<p>Currently supported formats:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>3dl</samp>&rsquo;</dt>
+<dd><p>AfterEffects
+</p></dd>
+<dt> &lsquo;<samp>cube</samp>&rsquo;</dt>
+<dd><p>Iridas
+</p></dd>
+<dt> &lsquo;<samp>dat</samp>&rsquo;</dt>
+<dd><p>DaVinci
+</p></dd>
+<dt> &lsquo;<samp>m3d</samp>&rsquo;</dt>
+<dd><p>Pandora
+</p></dd>
+</dl>
+</dd>
+<dt> &lsquo;<samp>interp</samp>&rsquo;</dt>
+<dd><p>Select interpolation mode.
+</p>
+<p>Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>nearest</samp>&rsquo;</dt>
+<dd><p>Use values from the nearest defined point.
+</p></dd>
+<dt> &lsquo;<samp>trilinear</samp>&rsquo;</dt>
+<dd><p>Interpolate values using the 8 points defining a cube.
+</p></dd>
+<dt> &lsquo;<samp>tetrahedral</samp>&rsquo;</dt>
+<dd><p>Interpolate values using a tetrahedron.
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<a name="lut_002c-lutrgb_002c-lutyuv"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-lut_002c-lutrgb_002c-lutyuv">33.48 lut, lutrgb, lutyuv</a></h2>
+
+<p>Compute a look-up table for binding each pixel component input value
+to an output value, and apply it to input video.
+</p>
+<p><var>lutyuv</var> applies a lookup table to a YUV input video, <var>lutrgb</var>
+to an RGB input video.
+</p>
+<p>These filters accept the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>c0</samp>&rsquo;</dt>
+<dd><p>set first pixel component expression
+</p></dd>
+<dt> &lsquo;<samp>c1</samp>&rsquo;</dt>
+<dd><p>set second pixel component expression
+</p></dd>
+<dt> &lsquo;<samp>c2</samp>&rsquo;</dt>
+<dd><p>set third pixel component expression
+</p></dd>
+<dt> &lsquo;<samp>c3</samp>&rsquo;</dt>
+<dd><p>set fourth pixel component expression, corresponds to the alpha component
+</p>
+</dd>
+<dt> &lsquo;<samp>r</samp>&rsquo;</dt>
+<dd><p>set red component expression
+</p></dd>
+<dt> &lsquo;<samp>g</samp>&rsquo;</dt>
+<dd><p>set green component expression
+</p></dd>
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>set blue component expression
+</p></dd>
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>alpha component expression
+</p>
+</dd>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>set Y/luminance component expression
+</p></dd>
+<dt> &lsquo;<samp>u</samp>&rsquo;</dt>
+<dd><p>set U/Cb component expression
+</p></dd>
+<dt> &lsquo;<samp>v</samp>&rsquo;</dt>
+<dd><p>set V/Cr component expression
+</p></dd>
+</dl>
+
+<p>Each of them specifies the expression to use for computing the lookup table for
+the corresponding pixel component values.
+</p>
+<p>The exact component associated to each of the <var>c*</var> options depends on the
+format in input.
+</p>
+<p>The <var>lut</var> filter requires either YUV or RGB pixel formats in input,
+<var>lutrgb</var> requires RGB pixel formats in input, and <var>lutyuv</var> requires YUV.
+</p>
+<p>The expressions can contain the following constants and functions:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>the input width and height
+</p>
+</dd>
+<dt> &lsquo;<samp>val</samp>&rsquo;</dt>
+<dd><p>input value for the pixel component
+</p>
+</dd>
+<dt> &lsquo;<samp>clipval</samp>&rsquo;</dt>
+<dd><p>the input value clipped in the <var>minval</var>-<var>maxval</var> range
+</p>
+</dd>
+<dt> &lsquo;<samp>maxval</samp>&rsquo;</dt>
+<dd><p>maximum value for the pixel component
+</p>
+</dd>
+<dt> &lsquo;<samp>minval</samp>&rsquo;</dt>
+<dd><p>minimum value for the pixel component
+</p>
+</dd>
+<dt> &lsquo;<samp>negval</samp>&rsquo;</dt>
+<dd><p>the negated value for the pixel component value clipped in the
+<var>minval</var>-<var>maxval</var> range , it corresponds to the expression
+&quot;maxval-clipval+minval&quot;
+</p>
+</dd>
+<dt> &lsquo;<samp>clip(val)</samp>&rsquo;</dt>
+<dd><p>the computed value in <var>val</var> clipped in the
+<var>minval</var>-<var>maxval</var> range
+</p>
+</dd>
+<dt> &lsquo;<samp>gammaval(gamma)</samp>&rsquo;</dt>
+<dd><p>the computed gamma correction value of the pixel component value
+clipped in the <var>minval</var>-<var>maxval</var> range, corresponds to the
+expression
+&quot;pow((clipval-minval)/(maxval-minval)\,<var>gamma</var>)*(maxval-minval)+minval&quot;
+</p>
+</dd>
+</dl>
+
+<p>All expressions default to &quot;val&quot;.
+</p>
+<a name="Examples-14"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-14">33.48.1 Examples</a></h3>
+
+<ul>
+<li>
+Negate input video:
+<table><tr><td>&nbsp;</td><td><pre class="example">lutrgb=&quot;r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val&quot;
+lutyuv=&quot;y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val&quot;
+</pre></td></tr></table>
+
+<p>The above is the same as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">lutrgb=&quot;r=negval:g=negval:b=negval&quot;
+lutyuv=&quot;y=negval:u=negval:v=negval&quot;
+</pre></td></tr></table>
+
+</li><li>
+Negate luminance:
+<table><tr><td>&nbsp;</td><td><pre class="example">lutyuv=y=negval
+</pre></td></tr></table>
+
+</li><li>
+Remove chroma components, turns the video into a graytone image:
+<table><tr><td>&nbsp;</td><td><pre class="example">lutyuv=&quot;u=128:v=128&quot;
+</pre></td></tr></table>
+
+</li><li>
+Apply a luma burning effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">lutyuv=&quot;y=2*val&quot;
+</pre></td></tr></table>
+
+</li><li>
+Remove green and blue components:
+<table><tr><td>&nbsp;</td><td><pre class="example">lutrgb=&quot;g=0:b=0&quot;
+</pre></td></tr></table>
+
+</li><li>
+Set a constant alpha channel value on input:
+<table><tr><td>&nbsp;</td><td><pre class="example">format=rgba,lutrgb=a=&quot;maxval-minval/2&quot;
+</pre></td></tr></table>
+
+</li><li>
+Correct luminance gamma by a 0.5 factor:
+<table><tr><td>&nbsp;</td><td><pre class="example">lutyuv=y=gammaval(0.5)
+</pre></td></tr></table>
+
+</li><li>
+Discard least significant bits of luma:
+<table><tr><td>&nbsp;</td><td><pre class="example">lutyuv=y='bitand(val, 128+64+32)'
+</pre></td></tr></table>
+</li></ul>
+
+<a name="mergeplanes"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-mergeplanes">33.49 mergeplanes</a></h2>
+
+<p>Merge color channel components from several video streams.
+</p>
+<p>The filter accepts up to 4 input streams, and merge selected input
+planes to the output video.
+</p>
+<p>This filter accepts the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>mapping</samp>&rsquo;</dt>
+<dd><p>Set input to output plane mapping. Default is <code>0</code>.
+</p>
+<p>The mappings is specified as a bitmap. It should be specified as a
+hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. &rsquo;Aa&rsquo; describes the
+mapping for the first plane of the output stream. &rsquo;A&rsquo; sets the number of
+the input stream to use (from 0 to 3), and &rsquo;a&rsquo; the plane number of the
+corresponding input to use (from 0 to 3). The rest of the mappings is
+similar, &rsquo;Bb&rsquo; describes the mapping for the output stream second
+plane, &rsquo;Cc&rsquo; describes the mapping for the output stream third plane and
+&rsquo;Dd&rsquo; describes the mapping for the output stream fourth plane.
+</p>
+</dd>
+<dt> &lsquo;<samp>format</samp>&rsquo;</dt>
+<dd><p>Set output pixel format. Default is <code>yuva444p</code>.
+</p></dd>
+</dl>
+
+<a name="Examples-67"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-67">33.49.1 Examples</a></h3>
+
+<ul>
+<li>
+Merge three gray video streams of same width and height into single video stream:
+<table><tr><td>&nbsp;</td><td><pre class="example">[a0][a1][a2]mergeplanes=0x001020:yuv444p
+</pre></td></tr></table>
+
+</li><li>
+Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
+<table><tr><td>&nbsp;</td><td><pre class="example">[a0][a1]mergeplanes=0x00010210:yuva444p
+</pre></td></tr></table>
+
+</li><li>
+Swap Y and A plane in yuva444p stream:
+<table><tr><td>&nbsp;</td><td><pre class="example">format=yuva444p,mergeplanes=0x03010200:yuva444p
+</pre></td></tr></table>
+
+</li><li>
+Swap U and V plane in yuv420p stream:
+<table><tr><td>&nbsp;</td><td><pre class="example">format=yuv420p,mergeplanes=0x000201:yuv420p
+</pre></td></tr></table>
+
+</li><li>
+Cast a rgb24 clip to yuv444p:
+<table><tr><td>&nbsp;</td><td><pre class="example">format=rgb24,mergeplanes=0x000102:yuv444p
+</pre></td></tr></table>
+</li></ul>
+
+<a name="mcdeint"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-mcdeint">33.50 mcdeint</a></h2>
+
+<p>Apply motion-compensation deinterlacing.
+</p>
+<p>It needs one field per frame as input and must thus be used together
+with yadif=1/3 or equivalent.
+</p>
+<p>This filter accepts the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Set the deinterlacing mode.
+</p>
+<p>It accepts one of the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>fast</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>medium</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>slow</samp>&rsquo;</dt>
+<dd><p>use iterative motion estimation
+</p></dd>
+<dt> &lsquo;<samp>extra_slow</samp>&rsquo;</dt>
+<dd><p>like &lsquo;<samp>slow</samp>&rsquo;, but use multiple reference frames.
+</p></dd>
+</dl>
+<p>Default value is &lsquo;<samp>fast</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>parity</samp>&rsquo;</dt>
+<dd><p>Set the picture field parity assumed for the input video. It must be
+one of the following values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>0, tff</samp>&rsquo;</dt>
+<dd><p>assume top field first
+</p></dd>
+<dt> &lsquo;<samp>1, bff</samp>&rsquo;</dt>
+<dd><p>assume bottom field first
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>bff</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>qp</samp>&rsquo;</dt>
+<dd><p>Set per-block quantization parameter (QP) used by the internal
+encoder.
+</p>
+<p>Higher values should result in a smoother motion vector field but less
+optimal individual vectors. Default value is 1.
+</p></dd>
+</dl>
+
+<a name="mp"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-mp">33.51 mp</a></h2>
+
+<p>Apply an MPlayer filter to the input video.
+</p>
+<p>This filter provides a wrapper around some of the filters of
+MPlayer/MEncoder.
+</p>
+<p>This wrapper is considered experimental. Some of the wrapped filters
+may not work properly and we may drop support for them, as they will
+be implemented natively into FFmpeg. Thus you should avoid
+depending on them when writing portable scripts.
+</p>
+<p>The filter accepts the parameters:
+<var>filter_name</var>[:=]<var>filter_params</var>
+</p>
+<p><var>filter_name</var> is the name of a supported MPlayer filter,
+<var>filter_params</var> is a string containing the parameters accepted by
+the named filter.
+</p>
+<p>The list of the currently supported filters follows:
+</p><dl compact="compact">
+<dt> <var>eq2</var></dt>
+<dt> <var>eq</var></dt>
+<dt> <var>fspp</var></dt>
+<dt> <var>ilpack</var></dt>
+<dt> <var>pp7</var></dt>
+<dt> <var>softpulldown</var></dt>
+<dt> <var>uspp</var></dt>
+</dl>
+
+<p>The parameter syntax and behavior for the listed filters are the same
+of the corresponding MPlayer filters. For detailed instructions check
+the &quot;VIDEO FILTERS&quot; section in the MPlayer manual.
+</p>
+<a name="Examples-7"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-7">33.51.1 Examples</a></h3>
+
+<ul>
+<li>
+Adjust gamma, brightness, contrast:
+<table><tr><td>&nbsp;</td><td><pre class="example">mp=eq2=1.0:2:0.5
+</pre></td></tr></table>
+</li></ul>
+
+<p>See also mplayer(1), <a href="http://www.mplayerhq.hu/">http://www.mplayerhq.hu/</a>.
+</p>
+<a name="mpdecimate"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-mpdecimate">33.52 mpdecimate</a></h2>
+
+<p>Drop frames that do not differ greatly from the previous frame in
+order to reduce frame rate.
+</p>
+<p>The main use of this filter is for very-low-bitrate encoding
+(e.g. streaming over dialup modem), but it could in theory be used for
+fixing movies that were inverse-telecined incorrectly.
+</p>
+<p>A description of the accepted options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>max</samp>&rsquo;</dt>
+<dd><p>Set the maximum number of consecutive frames which can be dropped (if
+positive), or the minimum interval between dropped frames (if
+negative). If the value is 0, the frame is dropped unregarding the
+number of previous sequentially dropped frames.
+</p>
+<p>Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>hi</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>lo</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>frac</samp>&rsquo;</dt>
+<dd><p>Set the dropping threshold values.
+</p>
+<p>Values for &lsquo;<samp>hi</samp>&rsquo; and &lsquo;<samp>lo</samp>&rsquo; are for 8x8 pixel blocks and
+represent actual pixel value differences, so a threshold of 64
+corresponds to 1 unit of difference for each pixel, or the same spread
+out differently over the block.
+</p>
+<p>A frame is a candidate for dropping if no 8x8 blocks differ by more
+than a threshold of &lsquo;<samp>hi</samp>&rsquo;, and if no more than &lsquo;<samp>frac</samp>&rsquo; blocks (1
+meaning the whole image) differ by more than a threshold of &lsquo;<samp>lo</samp>&rsquo;.
+</p>
+<p>Default value for &lsquo;<samp>hi</samp>&rsquo; is 64*12, default value for &lsquo;<samp>lo</samp>&rsquo; is
+64*5, and default value for &lsquo;<samp>frac</samp>&rsquo; is 0.33.
+</p></dd>
+</dl>
+
+
+<a name="negate"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-negate">33.53 negate</a></h2>
+
+<p>Negate input video.
+</p>
+<p>This filter accepts an integer in input, if non-zero it negates the
+alpha component (if available). The default value in input is 0.
+</p>
+<a name="noformat"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-noformat">33.54 noformat</a></h2>
+
+<p>Force libavfilter not to use any of the specified pixel formats for the
+input to the next filter.
+</p>
+<p>This filter accepts the following parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>pix_fmts</samp>&rsquo;</dt>
+<dd><p>A &rsquo;|&rsquo;-separated list of pixel format names, for example
+&quot;pix_fmts=yuv420p|monow|rgb24&quot;.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-53"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-53">33.54.1 Examples</a></h3>
+
+<ul>
+<li>
+Force libavfilter to use a format different from <var>yuv420p</var> for the
+input to the vflip filter:
+<table><tr><td>&nbsp;</td><td><pre class="example">noformat=pix_fmts=yuv420p,vflip
+</pre></td></tr></table>
+
+</li><li>
+Convert the input video to any of the formats not contained in the list:
+<table><tr><td>&nbsp;</td><td><pre class="example">noformat=yuv420p|yuv444p|yuv410p
+</pre></td></tr></table>
+</li></ul>
+
+<a name="noise"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-noise">33.55 noise</a></h2>
+
+<p>Add noise on video input frame.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>all_seed</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c0_seed</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c1_seed</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c2_seed</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c3_seed</samp>&rsquo;</dt>
+<dd><p>Set noise seed for specific pixel component or all pixel components in case
+of <var>all_seed</var>. Default value is <code>123457</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>all_strength, alls</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c0_strength, c0s</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c1_strength, c1s</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c2_strength, c2s</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c3_strength, c3s</samp>&rsquo;</dt>
+<dd><p>Set noise strength for specific pixel component or all pixel components in case
+<var>all_strength</var>. Default value is <code>0</code>. Allowed range is [0, 100].
+</p>
+</dd>
+<dt> &lsquo;<samp>all_flags, allf</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c0_flags, c0f</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c1_flags, c1f</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c2_flags, c2f</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c3_flags, c3f</samp>&rsquo;</dt>
+<dd><p>Set pixel component flags or set flags for all components if <var>all_flags</var>.
+Available values for component flags are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>averaged temporal noise (smoother)
+</p></dd>
+<dt> &lsquo;<samp>p</samp>&rsquo;</dt>
+<dd><p>mix random noise with a (semi)regular pattern
+</p></dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>temporal noise (noise pattern changes between frames)
+</p></dd>
+<dt> &lsquo;<samp>u</samp>&rsquo;</dt>
+<dd><p>uniform noise (gaussian otherwise)
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<a name="Examples-17"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-17">33.55.1 Examples</a></h3>
+
+<p>Add temporal and uniform noise to input video:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">noise=alls=20:allf=t+u
+</pre></td></tr></table>
+
+<a name="null"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-null">33.56 null</a></h2>
+
+<p>Pass the video source unchanged to the output.
+</p>
+<a name="ocv"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-ocv">33.57 ocv</a></h2>
+
+<p>Apply video transform using libopencv.
+</p>
+<p>To enable this filter install libopencv library and headers and
+configure FFmpeg with <code>--enable-libopencv</code>.
+</p>
+<p>This filter accepts the following parameters:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filter_name</samp>&rsquo;</dt>
+<dd><p>The name of the libopencv filter to apply.
+</p>
+</dd>
+<dt> &lsquo;<samp>filter_params</samp>&rsquo;</dt>
+<dd><p>The parameters to pass to the libopencv filter. If not specified the default
+values are assumed.
+</p>
+</dd>
+</dl>
+
+<p>Refer to the official libopencv documentation for more precise
+information:
+<a href="http://opencv.willowgarage.com/documentation/c/image_filtering.html">http://opencv.willowgarage.com/documentation/c/image_filtering.html</a>
+</p>
+<p>Follows the list of supported libopencv filters.
+</p>
+<p><a name="dilate"></a>
+</p><a name="dilate-1"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-dilate-1">33.57.1 dilate</a></h3>
+
+<p>Dilate an image by using a specific structuring element.
+This filter corresponds to the libopencv function <code>cvDilate</code>.
+</p>
+<p>It accepts the parameters: <var>struct_el</var>|<var>nb_iterations</var>.
+</p>
+<p><var>struct_el</var> represents a structuring element, and has the syntax:
+<var>cols</var>x<var>rows</var>+<var>anchor_x</var>x<var>anchor_y</var>/<var>shape</var>
+</p>
+<p><var>cols</var> and <var>rows</var> represent the number of columns and rows of
+the structuring element, <var>anchor_x</var> and <var>anchor_y</var> the anchor
+point, and <var>shape</var> the shape for the structuring element, and
+can be one of the values &quot;rect&quot;, &quot;cross&quot;, &quot;ellipse&quot;, &quot;custom&quot;.
+</p>
+<p>If the value for <var>shape</var> is &quot;custom&quot;, it must be followed by a
+string of the form &quot;=<var>filename</var>&quot;. The file with name
+<var>filename</var> is assumed to represent a binary image, with each
+printable character corresponding to a bright pixel. When a custom
+<var>shape</var> is used, <var>cols</var> and <var>rows</var> are ignored, the number
+or columns and rows of the read file are assumed instead.
+</p>
+<p>The default value for <var>struct_el</var> is &quot;3x3+0x0/rect&quot;.
+</p>
+<p><var>nb_iterations</var> specifies the number of times the transform is
+applied to the image, and defaults to 1.
+</p>
+<p>Follow some example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"># use the default values
+ocv=dilate
+
+# dilate using a structuring element with a 5x5 cross, iterate two times
+ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
+
+# read the shape from the file diamond.shape, iterate two times
+# the file diamond.shape may contain a pattern of characters like this:
+#   *
+#  ***
+# *****
+#  ***
+#   *
+# the specified cols and rows are ignored (but not the anchor point coordinates)
+ocv=dilate:0x0+2x2/custom=diamond.shape|2
+</pre></td></tr></table>
+
+<a name="erode"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-erode">33.57.2 erode</a></h3>
+
+<p>Erode an image by using a specific structuring element.
+This filter corresponds to the libopencv function <code>cvErode</code>.
+</p>
+<p>The filter accepts the parameters: <var>struct_el</var>:<var>nb_iterations</var>,
+with the same syntax and semantics as the <a href="#dilate">dilate</a> filter.
+</p>
+<a name="smooth"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-smooth">33.57.3 smooth</a></h3>
+
+<p>Smooth the input video.
+</p>
+<p>The filter takes the following parameters:
+<var>type</var>|<var>param1</var>|<var>param2</var>|<var>param3</var>|<var>param4</var>.
+</p>
+<p><var>type</var> is the type of smooth filter to apply, and can be one of
+the following values: &quot;blur&quot;, &quot;blur_no_scale&quot;, &quot;median&quot;, &quot;gaussian&quot;,
+&quot;bilateral&quot;. The default value is &quot;gaussian&quot;.
+</p>
+<p><var>param1</var>, <var>param2</var>, <var>param3</var>, and <var>param4</var> are
+parameters whose meanings depend on smooth type. <var>param1</var> and
+<var>param2</var> accept integer positive values or 0, <var>param3</var> and
+<var>param4</var> accept float values.
+</p>
+<p>The default value for <var>param1</var> is 3, the default value for the
+other parameters is 0.
+</p>
+<p>These parameters correspond to the parameters assigned to the
+libopencv function <code>cvSmooth</code>.
+</p>
+<p><a name="overlay"></a>
+</p><a name="overlay-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-overlay-1">33.58 overlay</a></h2>
+
+<p>Overlay one video on top of another.
+</p>
+<p>It takes two inputs and one output, the first input is the &quot;main&quot;
+video on which the second input is overlayed.
+</p>
+<p>This filter accepts the following parameters:
+</p>
+<p>A description of the accepted options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>Set the expression for the x and y coordinates of the overlayed video
+on the main video. Default value is &quot;0&quot; for both expressions. In case
+the expression is invalid, it is set to a huge value (meaning that the
+overlay will not be displayed within the output visible area).
+</p>
+</dd>
+<dt> &lsquo;<samp>eval</samp>&rsquo;</dt>
+<dd><p>Set when the expressions for &lsquo;<samp>x</samp>&rsquo;, and &lsquo;<samp>y</samp>&rsquo; are evaluated.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>init</samp>&rsquo;</dt>
+<dd><p>only evaluate expressions once during the filter initialization or
+when a command is processed
+</p>
+</dd>
+<dt> &lsquo;<samp>frame</samp>&rsquo;</dt>
+<dd><p>evaluate expressions for each incoming frame
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>frame</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>shortest</samp>&rsquo;</dt>
+<dd><p>If set to 1, force the output to terminate when the shortest input
+terminates. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>format</samp>&rsquo;</dt>
+<dd><p>Set the format for the output video.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>yuv420</samp>&rsquo;</dt>
+<dd><p>force YUV420 output
+</p>
+</dd>
+<dt> &lsquo;<samp>yuv444</samp>&rsquo;</dt>
+<dd><p>force YUV444 output
+</p>
+</dd>
+<dt> &lsquo;<samp>rgb</samp>&rsquo;</dt>
+<dd><p>force RGB output
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>yuv420</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>rgb <em>(deprecated)</em></samp>&rsquo;</dt>
+<dd><p>If set to 1, force the filter to accept inputs in the RGB
+color space. Default value is 0. This option is deprecated, use
+&lsquo;<samp>format</samp>&rsquo; instead.
+</p>
+</dd>
+<dt> &lsquo;<samp>repeatlast</samp>&rsquo;</dt>
+<dd><p>If set to 1, force the filter to draw the last overlay frame over the
+main input until the end of the stream. A value of 0 disables this
+behavior. Default value is 1.
+</p></dd>
+</dl>
+
+<p>The &lsquo;<samp>x</samp>&rsquo;, and &lsquo;<samp>y</samp>&rsquo; expressions can contain the following
+parameters.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>main_w, W</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>main_h, H</samp>&rsquo;</dt>
+<dd><p>main input width and height
+</p>
+</dd>
+<dt> &lsquo;<samp>overlay_w, w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>overlay_h, h</samp>&rsquo;</dt>
+<dd><p>overlay input width and height
+</p>
+</dd>
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>the computed values for <var>x</var> and <var>y</var>. They are evaluated for
+each new frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values of the output
+format. For example for the pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and
+<var>vsub</var> is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>the number of input frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
+<dd><p>the position in the file of the input frame, NAN if unknown
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>timestamp expressed in seconds, NAN if the input timestamp is unknown
+</p></dd>
+</dl>
+
+<p>Note that the <var>n</var>, <var>pos</var>, <var>t</var> variables are available only
+when evaluation is done <em>per frame</em>, and will evaluate to NAN
+when &lsquo;<samp>eval</samp>&rsquo; is set to &lsquo;<samp>init</samp>&rsquo;.
+</p>
+<p>Be aware that frames are taken from each input video in timestamp
+order, hence, if their initial timestamps differ, it is a good idea
+to pass the two inputs through a <var>setpts=PTS-STARTPTS</var> filter to
+have them begin in the same zero timestamp, as it does the example for
+the <var>movie</var> filter.
+</p>
+<p>You can chain together more overlays but you should test the
+efficiency of such approach.
+</p>
+<a name="Commands-2"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Commands-2">33.58.1 Commands</a></h3>
+
+<p>This filter supports the following commands:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>Modify the x and y of the overlay input.
+The command accepts the same syntax of the corresponding option.
+</p>
+<p>If the specified expression is not valid, it is kept at its current
+value.
+</p></dd>
+</dl>
+
+<a name="Examples-73"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-73">33.58.2 Examples</a></h3>
+
+<ul>
+<li>
+Draw the overlay at 10 pixels from the bottom right corner of the main
+video:
+<table><tr><td>&nbsp;</td><td><pre class="example">overlay=main_w-overlay_w-10:main_h-overlay_h-10
+</pre></td></tr></table>
+
+<p>Using named options the example above becomes:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
+</pre></td></tr></table>
+
+</li><li>
+Insert a transparent PNG logo in the bottom left corner of the input,
+using the <code>ffmpeg</code> tool with the <code>-filter_complex</code> option:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
+</pre></td></tr></table>
+
+</li><li>
+Insert 2 different transparent PNG logos (second logo on bottom
+right corner) using the <code>ffmpeg</code> tool:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input -i logo1 -i logo2 -filter_complex 'overlay=x=10:y=H-h-10,overlay=x=W-w-10:y=H-h-10' output
+</pre></td></tr></table>
+
+</li><li>
+Add a transparent color layer on top of the main video, <code>WxH</code>
+must specify the size of the main input to the overlay filter:
+<table><tr><td>&nbsp;</td><td><pre class="example">color=color=red@.3:size=WxH [over]; [in][over] overlay [out]
+</pre></td></tr></table>
+
+</li><li>
+Play an original video and a filtered version (here with the deshake
+filter) side by side using the <code>ffplay</code> tool:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
+</pre></td></tr></table>
+
+<p>The above command is the same as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
+</pre></td></tr></table>
+
+</li><li>
+Make a sliding overlay appearing from the left to the right top part of the
+screen starting since time 2:
+<table><tr><td>&nbsp;</td><td><pre class="example">overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
+</pre></td></tr></table>
+
+</li><li>
+Compose output by putting two input videos side to side:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i left.avi -i right.avi -filter_complex &quot;
+nullsrc=size=200x100 [background];
+[0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
+[1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
+[background][left]       overlay=shortest=1       [background+left];
+[background+left][right] overlay=shortest=1:x=100 [left+right]
+&quot;
+</pre></td></tr></table>
+
+</li><li>
+Chain several overlays in cascade:
+<table><tr><td>&nbsp;</td><td><pre class="example">nullsrc=s=200x200 [bg];
+testsrc=s=100x100, split=4 [in0][in1][in2][in3];
+[in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
+[in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
+[in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
+[in3] null,       [mid2] overlay=100:100 [out0]
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="owdenoise"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-owdenoise">33.59 owdenoise</a></h2>
+
+<p>Apply Overcomplete Wavelet denoiser.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>depth</samp>&rsquo;</dt>
+<dd><p>Set depth.
+</p>
+<p>Larger depth values will denoise lower frequency components more, but
+slow down filtering.
+</p>
+<p>Must be an int in the range 8-16, default is <code>8</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_strength, ls</samp>&rsquo;</dt>
+<dd><p>Set luma strength.
+</p>
+<p>Must be a double value in the range 0-1000, default is <code>1.0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_strength, cs</samp>&rsquo;</dt>
+<dd><p>Set chroma strength.
+</p>
+<p>Must be a double value in the range 0-1000, default is <code>1.0</code>.
+</p></dd>
+</dl>
+
+<a name="pad"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-pad">33.60 pad</a></h2>
+
+<p>Add paddings to the input image, and place the original input at the
+given coordinates <var>x</var>, <var>y</var>.
+</p>
+<p>This filter accepts the following parameters:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>height, h</samp>&rsquo;</dt>
+<dd><p>Specify an expression for the size of the output image with the
+paddings added. If the value for <var>width</var> or <var>height</var> is 0, the
+corresponding input size is used for the output.
+</p>
+<p>The <var>width</var> expression can reference the value set by the
+<var>height</var> expression, and vice versa.
+</p>
+<p>The default value of <var>width</var> and <var>height</var> is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>Specify an expression for the offsets where to place the input image
+in the padded area with respect to the top/left border of the output
+image.
+</p>
+<p>The <var>x</var> expression can reference the value set by the <var>y</var>
+expression, and vice versa.
+</p>
+<p>The default value of <var>x</var> and <var>y</var> is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
+<dd><p>Specify the color of the padded area. For the syntax of this option,
+check the &quot;Color&quot; section in the ffmpeg-utils manual.
+</p>
+<p>The default value of <var>color</var> is &quot;black&quot;.
+</p></dd>
+</dl>
+
+<p>The value for the <var>width</var>, <var>height</var>, <var>x</var>, and <var>y</var>
+options are expressions containing the following constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>in_w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>in_h</samp>&rsquo;</dt>
+<dd><p>the input video width and height
+</p>
+</dd>
+<dt> &lsquo;<samp>iw</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ih</samp>&rsquo;</dt>
+<dd><p>same as <var>in_w</var> and <var>in_h</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>out_w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>out_h</samp>&rsquo;</dt>
+<dd><p>the output width and height, that is the size of the padded area as
+specified by the <var>width</var> and <var>height</var> expressions
+</p>
+</dd>
+<dt> &lsquo;<samp>ow</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>oh</samp>&rsquo;</dt>
+<dd><p>same as <var>out_w</var> and <var>out_h</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>x and y offsets as specified by the <var>x</var> and <var>y</var>
+expressions, or NAN if not yet specified
+</p>
+</dd>
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>same as <var>iw</var> / <var>ih</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
+<dd><p>input sample aspect ratio
+</p>
+</dd>
+<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
+<dd><p>input display aspect ratio, it is the same as (<var>iw</var> / <var>ih</var>) * <var>sar</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p></dd>
+</dl>
+
+<a name="Examples-63"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-63">33.60.1 Examples</a></h3>
+
+<ul>
+<li>
+Add paddings with color &quot;violet&quot; to the input video. Output video
+size is 640x480, the top-left corner of the input video is placed at
+column 0, row 40:
+<table><tr><td>&nbsp;</td><td><pre class="example">pad=640:480:0:40:violet
+</pre></td></tr></table>
+
+<p>The example above is equivalent to the following command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pad=width=640:height=480:x=0:y=40:color=violet
+</pre></td></tr></table>
+
+</li><li>
+Pad the input to get an output with dimensions increased by 3/2,
+and put the input video at the center of the padded area:
+<table><tr><td>&nbsp;</td><td><pre class="example">pad=&quot;3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2&quot;
+</pre></td></tr></table>
+
+</li><li>
+Pad the input to get a squared output with size equal to the maximum
+value between the input width and height, and put the input video at
+the center of the padded area:
+<table><tr><td>&nbsp;</td><td><pre class="example">pad=&quot;max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2&quot;
+</pre></td></tr></table>
+
+</li><li>
+Pad the input to get a final w/h ratio of 16:9:
+<table><tr><td>&nbsp;</td><td><pre class="example">pad=&quot;ih*16/9:ih:(ow-iw)/2:(oh-ih)/2&quot;
+</pre></td></tr></table>
+
+</li><li>
+In case of anamorphic video, in order to set the output display aspect
+correctly, it is necessary to use <var>sar</var> in the expression,
+according to the relation:
+<table><tr><td>&nbsp;</td><td><pre class="example">(ih * X / ih) * sar = output_dar
+X = output_dar / sar
+</pre></td></tr></table>
+
+<p>Thus the previous example needs to be modified to:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pad=&quot;ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2&quot;
+</pre></td></tr></table>
+
+</li><li>
+Double output size and put the input video in the bottom-right
+corner of the output padded area:
+<table><tr><td>&nbsp;</td><td><pre class="example">pad=&quot;2*iw:2*ih:ow-iw:oh-ih&quot;
+</pre></td></tr></table>
+</li></ul>
+
+<a name="perspective"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-perspective">33.61 perspective</a></h2>
+
+<p>Correct perspective of video not recorded perpendicular to the screen.
+</p>
+<p>A description of the accepted parameters follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>x0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>x1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>x2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>x3</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y3</samp>&rsquo;</dt>
+<dd><p>Set coordinates expression for top left, top right, bottom left and bottom right corners.
+Default values are <code>0:0:W:0:0:H:W:H</code> with which perspective will remain unchanged.
+</p>
+<p>The expressions can use the following variables:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>W</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>H</samp>&rsquo;</dt>
+<dd><p>the width and height of video frame.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>interpolation</samp>&rsquo;</dt>
+<dd><p>Set interpolation for perspective correction.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>linear</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>cubic</samp>&rsquo;</dt>
+</dl>
+
+<p>Default value is &lsquo;<samp>linear</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<a name="phase"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-phase">33.62 phase</a></h2>
+
+<p>Delay interlaced video by one field time so that the field order changes.
+</p>
+<p>The intended use is to fix PAL movies that have been captured with the
+opposite field order to the film-to-video transfer.
+</p>
+<p>A description of the accepted parameters follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Set phase mode.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>Capture field order top-first, transfer bottom-first.
+Filter will delay the bottom field.
+</p>
+</dd>
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>Capture field order bottom-first, transfer top-first.
+Filter will delay the top field.
+</p>
+</dd>
+<dt> &lsquo;<samp>p</samp>&rsquo;</dt>
+<dd><p>Capture and transfer with the same field order. This mode only exists
+for the documentation of the other options to refer to, but if you
+actually select it, the filter will faithfully do nothing.
+</p>
+</dd>
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>Capture field order determined automatically by field flags, transfer
+opposite.
+Filter selects among &lsquo;<samp>t</samp>&rsquo; and &lsquo;<samp>b</samp>&rsquo; modes on a frame by frame
+basis using field flags. If no field information is available,
+then this works just like &lsquo;<samp>u</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>u</samp>&rsquo;</dt>
+<dd><p>Capture unknown or varying, transfer opposite.
+Filter selects among &lsquo;<samp>t</samp>&rsquo; and &lsquo;<samp>b</samp>&rsquo; on a frame by frame basis by
+analyzing the images and selecting the alternative that produces best
+match between the fields.
+</p>
+</dd>
+<dt> &lsquo;<samp>T</samp>&rsquo;</dt>
+<dd><p>Capture top-first, transfer unknown or varying.
+Filter selects among &lsquo;<samp>t</samp>&rsquo; and &lsquo;<samp>p</samp>&rsquo; using image analysis.
+</p>
+</dd>
+<dt> &lsquo;<samp>B</samp>&rsquo;</dt>
+<dd><p>Capture bottom-first, transfer unknown or varying.
+Filter selects among &lsquo;<samp>b</samp>&rsquo; and &lsquo;<samp>p</samp>&rsquo; using image analysis.
+</p>
+</dd>
+<dt> &lsquo;<samp>A</samp>&rsquo;</dt>
+<dd><p>Capture determined by field flags, transfer unknown or varying.
+Filter selects among &lsquo;<samp>t</samp>&rsquo;, &lsquo;<samp>b</samp>&rsquo; and &lsquo;<samp>p</samp>&rsquo; using field flags and
+image analysis. If no field information is available, then this works just
+like &lsquo;<samp>U</samp>&rsquo;. This is the default mode.
+</p>
+</dd>
+<dt> &lsquo;<samp>U</samp>&rsquo;</dt>
+<dd><p>Both capture and transfer unknown or varying.
+Filter selects among &lsquo;<samp>t</samp>&rsquo;, &lsquo;<samp>b</samp>&rsquo; and &lsquo;<samp>p</samp>&rsquo; using image analysis only.
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<a name="pixdesctest"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-pixdesctest">33.63 pixdesctest</a></h2>
+
+<p>Pixel format descriptor test filter, mainly useful for internal
+testing. The output video should be equal to the input video.
+</p>
+<p>For example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">format=monow, pixdesctest
+</pre></td></tr></table>
+
+<p>can be used to test the monowhite pixel format descriptor definition.
+</p>
+<a name="pp"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-pp">33.64 pp</a></h2>
+
+<p>Enable the specified chain of postprocessing subfilters using libpostproc. This
+library should be automatically selected with a GPL build (<code>--enable-gpl</code>).
+Subfilters must be separated by &rsquo;/&rsquo; and can be disabled by prepending a &rsquo;-&rsquo;.
+Each subfilter and some options have a short and a long name that can be used
+interchangeably, i.e. dr/dering are the same.
+</p>
+<p>The filters accept the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>subfilters</samp>&rsquo;</dt>
+<dd><p>Set postprocessing subfilters string.
+</p></dd>
+</dl>
+
+<p>All subfilters share common options to determine their scope:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>a/autoq</samp>&rsquo;</dt>
+<dd><p>Honor the quality commands for this subfilter.
+</p>
+</dd>
+<dt> &lsquo;<samp>c/chrom</samp>&rsquo;</dt>
+<dd><p>Do chrominance filtering, too (default).
+</p>
+</dd>
+<dt> &lsquo;<samp>y/nochrom</samp>&rsquo;</dt>
+<dd><p>Do luminance filtering only (no chrominance).
+</p>
+</dd>
+<dt> &lsquo;<samp>n/noluma</samp>&rsquo;</dt>
+<dd><p>Do chrominance filtering only (no luminance).
+</p></dd>
+</dl>
+
+<p>These options can be appended after the subfilter name, separated by a &rsquo;|&rsquo;.
+</p>
+<p>Available subfilters are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>hb/hdeblock[|difference[|flatness]]</samp>&rsquo;</dt>
+<dd><p>Horizontal deblocking filter
+</p><dl compact="compact">
+<dt> &lsquo;<samp>difference</samp>&rsquo;</dt>
+<dd><p>Difference factor where higher values mean more deblocking (default: <code>32</code>).
+</p></dd>
+<dt> &lsquo;<samp>flatness</samp>&rsquo;</dt>
+<dd><p>Flatness threshold where lower values mean more deblocking (default: <code>39</code>).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>vb/vdeblock[|difference[|flatness]]</samp>&rsquo;</dt>
+<dd><p>Vertical deblocking filter
+</p><dl compact="compact">
+<dt> &lsquo;<samp>difference</samp>&rsquo;</dt>
+<dd><p>Difference factor where higher values mean more deblocking (default: <code>32</code>).
+</p></dd>
+<dt> &lsquo;<samp>flatness</samp>&rsquo;</dt>
+<dd><p>Flatness threshold where lower values mean more deblocking (default: <code>39</code>).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>ha/hadeblock[|difference[|flatness]]</samp>&rsquo;</dt>
+<dd><p>Accurate horizontal deblocking filter
+</p><dl compact="compact">
+<dt> &lsquo;<samp>difference</samp>&rsquo;</dt>
+<dd><p>Difference factor where higher values mean more deblocking (default: <code>32</code>).
+</p></dd>
+<dt> &lsquo;<samp>flatness</samp>&rsquo;</dt>
+<dd><p>Flatness threshold where lower values mean more deblocking (default: <code>39</code>).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>va/vadeblock[|difference[|flatness]]</samp>&rsquo;</dt>
+<dd><p>Accurate vertical deblocking filter
+</p><dl compact="compact">
+<dt> &lsquo;<samp>difference</samp>&rsquo;</dt>
+<dd><p>Difference factor where higher values mean more deblocking (default: <code>32</code>).
+</p></dd>
+<dt> &lsquo;<samp>flatness</samp>&rsquo;</dt>
+<dd><p>Flatness threshold where lower values mean more deblocking (default: <code>39</code>).
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<p>The horizontal and vertical deblocking filters share the difference and
+flatness values so you cannot set different horizontal and vertical
+thresholds.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>h1/x1hdeblock</samp>&rsquo;</dt>
+<dd><p>Experimental horizontal deblocking filter
+</p>
+</dd>
+<dt> &lsquo;<samp>v1/x1vdeblock</samp>&rsquo;</dt>
+<dd><p>Experimental vertical deblocking filter
+</p>
+</dd>
+<dt> &lsquo;<samp>dr/dering</samp>&rsquo;</dt>
+<dd><p>Deringing filter
+</p>
+</dd>
+<dt> &lsquo;<samp>tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>threshold1</samp>&rsquo;</dt>
+<dd><p>larger -&gt; stronger filtering
+</p></dd>
+<dt> &lsquo;<samp>threshold2</samp>&rsquo;</dt>
+<dd><p>larger -&gt; stronger filtering
+</p></dd>
+<dt> &lsquo;<samp>threshold3</samp>&rsquo;</dt>
+<dd><p>larger -&gt; stronger filtering
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>al/autolevels[:f/fullyrange], automatic brightness / contrast correction</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>f/fullyrange</samp>&rsquo;</dt>
+<dd><p>Stretch luminance to <code>0-255</code>.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>lb/linblenddeint</samp>&rsquo;</dt>
+<dd><p>Linear blend deinterlacing filter that deinterlaces the given block by
+filtering all lines with a <code>(1 2 1)</code> filter.
+</p>
+</dd>
+<dt> &lsquo;<samp>li/linipoldeint</samp>&rsquo;</dt>
+<dd><p>Linear interpolating deinterlacing filter that deinterlaces the given block by
+linearly interpolating every second line.
+</p>
+</dd>
+<dt> &lsquo;<samp>ci/cubicipoldeint</samp>&rsquo;</dt>
+<dd><p>Cubic interpolating deinterlacing filter deinterlaces the given block by
+cubically interpolating every second line.
+</p>
+</dd>
+<dt> &lsquo;<samp>md/mediandeint</samp>&rsquo;</dt>
+<dd><p>Median deinterlacing filter that deinterlaces the given block by applying a
+median filter to every second line.
+</p>
+</dd>
+<dt> &lsquo;<samp>fd/ffmpegdeint</samp>&rsquo;</dt>
+<dd><p>FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
+second line with a <code>(-1 4 2 4 -1)</code> filter.
+</p>
+</dd>
+<dt> &lsquo;<samp>l5/lowpass5</samp>&rsquo;</dt>
+<dd><p>Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
+block by filtering all lines with a <code>(-1 2 6 2 -1)</code> filter.
+</p>
+</dd>
+<dt> &lsquo;<samp>fq/forceQuant[|quantizer]</samp>&rsquo;</dt>
+<dd><p>Overrides the quantizer table from the input with the constant quantizer you
+specify.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>quantizer</samp>&rsquo;</dt>
+<dd><p>Quantizer to use
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>de/default</samp>&rsquo;</dt>
+<dd><p>Default pp filter combination (<code>hb|a,vb|a,dr|a</code>)
+</p>
+</dd>
+<dt> &lsquo;<samp>fa/fast</samp>&rsquo;</dt>
+<dd><p>Fast pp filter combination (<code>h1|a,v1|a,dr|a</code>)
+</p>
+</dd>
+<dt> &lsquo;<samp>ac</samp>&rsquo;</dt>
+<dd><p>High quality pp filter combination (<code>ha|a|128|7,va|a,dr|a</code>)
+</p></dd>
+</dl>
+
+<a name="Examples-26"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-26">33.64.1 Examples</a></h3>
+
+<ul>
+<li>
+Apply horizontal and vertical deblocking, deringing and automatic
+brightness/contrast:
+<table><tr><td>&nbsp;</td><td><pre class="example">pp=hb/vb/dr/al
+</pre></td></tr></table>
+
+</li><li>
+Apply default filters without brightness/contrast correction:
+<table><tr><td>&nbsp;</td><td><pre class="example">pp=de/-al
+</pre></td></tr></table>
+
+</li><li>
+Apply default filters and temporal denoiser:
+<table><tr><td>&nbsp;</td><td><pre class="example">pp=default/tmpnoise|1|2|3
+</pre></td></tr></table>
+
+</li><li>
+Apply deblocking on luminance only, and switch vertical deblocking on or off
+automatically depending on available CPU time:
+<table><tr><td>&nbsp;</td><td><pre class="example">pp=hb|y/vb|a
+</pre></td></tr></table>
+</li></ul>
+
+<a name="psnr"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-psnr">33.65 psnr</a></h2>
+
+<p>Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
+Ratio) between two input videos.
+</p>
+<p>This filter takes in input two input videos, the first input is
+considered the &quot;main&quot; source and is passed unchanged to the
+output. The second input is used as a &quot;reference&quot; video for computing
+the PSNR.
+</p>
+<p>Both video inputs must have the same resolution and pixel format for
+this filter to work correctly. Also it assumes that both inputs
+have the same number of frames, which are compared one by one.
+</p>
+<p>The obtained average PSNR is printed through the logging system.
+</p>
+<p>The filter stores the accumulated MSE (mean squared error) of each
+frame, and at the end of the processing it is averaged across all frames
+equally, and the following formula is applied to obtain the PSNR:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">PSNR = 10*log10(MAX^2/MSE)
+</pre></td></tr></table>
+
+<p>Where MAX is the average of the maximum values of each component of the
+image.
+</p>
+<p>The description of the accepted parameters follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>stats_file, f</samp>&rsquo;</dt>
+<dd><p>If specified the filter will use the named file to save the PSNR of
+each individual frame.
+</p></dd>
+</dl>
+
+<p>The file printed if <var>stats_file</var> is selected, contains a sequence of
+key/value pairs of the form <var>key</var>:<var>value</var> for each compared
+couple of frames.
+</p>
+<p>A description of each shown parameter follows:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>sequential number of the input frame, starting from 1
+</p>
+</dd>
+<dt> &lsquo;<samp>mse_avg</samp>&rsquo;</dt>
+<dd><p>Mean Square Error pixel-by-pixel average difference of the compared
+frames, averaged over all the image components.
+</p>
+</dd>
+<dt> &lsquo;<samp>mse_y, mse_u, mse_v, mse_r, mse_g, mse_g, mse_a</samp>&rsquo;</dt>
+<dd><p>Mean Square Error pixel-by-pixel average difference of the compared
+frames for the component specified by the suffix.
+</p>
+</dd>
+<dt> &lsquo;<samp>psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a</samp>&rsquo;</dt>
+<dd><p>Peak Signal to Noise ratio of the compared frames for the component
+specified by the suffix.
+</p></dd>
+</dl>
+
+<p>For example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
+[main][ref] psnr=&quot;stats_file=stats.log&quot; [out]
+</pre></td></tr></table>
+
+<p>On this example the input file being processed is compared with the
+reference file &lsquo;<tt>ref_movie.mpg</tt>&rsquo;. The PSNR of each individual frame
+is stored in &lsquo;<tt>stats.log</tt>&rsquo;.
+</p>
+<a name="pullup"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-pullup">33.66 pullup</a></h2>
+
+<p>Pulldown reversal (inverse telecine) filter, capable of handling mixed
+hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
+content.
+</p>
+<p>The pullup filter is designed to take advantage of future context in making
+its decisions. This filter is stateless in the sense that it does not lock
+onto a pattern to follow, but it instead looks forward to the following
+fields in order to identify matches and rebuild progressive frames.
+</p>
+<p>To produce content with an even framerate, insert the fps filter after
+pullup, use <code>fps=24000/1001</code> if the input frame rate is 29.97fps,
+<code>fps=24</code> for 30fps and the (rare) telecined 25fps input.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>jl</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>jr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>jt</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>jb</samp>&rsquo;</dt>
+<dd><p>These options set the amount of &quot;junk&quot; to ignore at the left, right, top, and
+bottom of the image, respectively. Left and right are in units of 8 pixels,
+while top and bottom are in units of 2 lines.
+The default is 8 pixels on each side.
+</p>
+</dd>
+<dt> &lsquo;<samp>sb</samp>&rsquo;</dt>
+<dd><p>Set the strict breaks. Setting this option to 1 will reduce the chances of
+filter generating an occasional mismatched frame, but it may also cause an
+excessive number of frames to be dropped during high motion sequences.
+Conversely, setting it to -1 will make filter match fields more easily.
+This may help processing of video where there is slight blurring between
+the fields, but may also cause there to be interlaced frames in the output.
+Default value is <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>mp</samp>&rsquo;</dt>
+<dd><p>Set the metric plane to use. It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>l</samp>&rsquo;</dt>
+<dd><p>Use luma plane.
+</p>
+</dd>
+<dt> &lsquo;<samp>u</samp>&rsquo;</dt>
+<dd><p>Use chroma blue plane.
+</p>
+</dd>
+<dt> &lsquo;<samp>v</samp>&rsquo;</dt>
+<dd><p>Use chroma red plane.
+</p></dd>
+</dl>
+
+<p>This option may be set to use chroma plane instead of the default luma plane
+for doing filter&rsquo;s computations. This may improve accuracy on very clean
+source material, but more likely will decrease accuracy, especially if there
+is chroma noise (rainbow effect) or any grayscale video.
+The main purpose of setting &lsquo;<samp>mp</samp>&rsquo; to a chroma plane is to reduce CPU
+load and make pullup usable in realtime on slow machines.
+</p></dd>
+</dl>
+
+<p>For best results (without duplicated frames in the output file) it is
+necessary to change the output frame rate. For example, to inverse
+telecine NTSC input:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input -vf pullup -r 24000/1001 ...
+</pre></td></tr></table>
+
+<a name="removelogo"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-removelogo">33.67 removelogo</a></h2>
+
+<p>Suppress a TV station logo, using an image file to determine which
+pixels comprise the logo. It works by filling in the pixels that
+comprise the logo with neighboring pixels.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filename, f</samp>&rsquo;</dt>
+<dd><p>Set the filter bitmap file, which can be any image format supported by
+libavformat. The width and height of the image file must match those of the
+video stream being processed.
+</p></dd>
+</dl>
+
+<p>Pixels in the provided bitmap image with a value of zero are not
+considered part of the logo, non-zero pixels are considered part of
+the logo. If you use white (255) for the logo and black (0) for the
+rest, you will be safe. For making the filter bitmap, it is
+recommended to take a screen capture of a black frame with the logo
+visible, and then using a threshold filter followed by the erode
+filter once or twice.
+</p>
+<p>If needed, little splotches can be fixed manually. Remember that if
+logo pixels are not covered, the filter quality will be much
+reduced. Marking too many pixels as part of the logo does not hurt as
+much, but it will increase the amount of blurring needed to cover over
+the image and will destroy more information than necessary, and extra
+pixels will slow things down on a large logo.
+</p>
+<a name="rotate"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-rotate">33.68 rotate</a></h2>
+
+<p>Rotate video by an arbitrary angle expressed in radians.
+</p>
+<p>The filter accepts the following options:
+</p>
+<p>A description of the optional parameters follows.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>angle, a</samp>&rsquo;</dt>
+<dd><p>Set an expression for the angle by which to rotate the input video
+clockwise, expressed as a number of radians. A negative value will
+result in a counter-clockwise rotation. By default it is set to &quot;0&quot;.
+</p>
+<p>This expression is evaluated for each frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>out_w, ow</samp>&rsquo;</dt>
+<dd><p>Set the output width expression, default value is &quot;iw&quot;.
+This expression is evaluated just once during configuration.
+</p>
+</dd>
+<dt> &lsquo;<samp>out_h, oh</samp>&rsquo;</dt>
+<dd><p>Set the output height expression, default value is &quot;ih&quot;.
+This expression is evaluated just once during configuration.
+</p>
+</dd>
+<dt> &lsquo;<samp>bilinear</samp>&rsquo;</dt>
+<dd><p>Enable bilinear interpolation if set to 1, a value of 0 disables
+it. Default value is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>fillcolor, c</samp>&rsquo;</dt>
+<dd><p>Set the color used to fill the output area not covered by the rotated
+image. For the generalsyntax of this option, check the &quot;Color&quot; section in the
+ffmpeg-utils manual. If the special value &quot;none&quot; is selected then no
+background is printed (useful for example if the background is never shown).
+</p>
+<p>Default value is &quot;black&quot;.
+</p></dd>
+</dl>
+
+<p>The expressions for the angle and the output size can contain the
+following constants and functions:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>sequential number of the input frame, starting from 0. It is always NAN
+before the first frame is filtered.
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>time in seconds of the input frame, it is set to 0 when the filter is
+configured. It is always NAN before the first frame is filtered.
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>in_w, iw</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>in_h, ih</samp>&rsquo;</dt>
+<dd><p>the input video width and heigth
+</p>
+</dd>
+<dt> &lsquo;<samp>out_w, ow</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>out_h, oh</samp>&rsquo;</dt>
+<dd><p>the output width and heigth, that is the size of the padded area as
+specified by the <var>width</var> and <var>height</var> expressions
+</p>
+</dd>
+<dt> &lsquo;<samp>rotw(a)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>roth(a)</samp>&rsquo;</dt>
+<dd><p>the minimal width/height required for completely containing the input
+video rotated by <var>a</var> radians.
+</p>
+<p>These are only available when computing the &lsquo;<samp>out_w</samp>&rsquo; and
+&lsquo;<samp>out_h</samp>&rsquo; expressions.
+</p></dd>
+</dl>
+
+<a name="Examples-61"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-61">33.68.1 Examples</a></h3>
+
+<ul>
+<li>
+Rotate the input by PI/6 radians clockwise:
+<table><tr><td>&nbsp;</td><td><pre class="example">rotate=PI/6
+</pre></td></tr></table>
+
+</li><li>
+Rotate the input by PI/6 radians counter-clockwise:
+<table><tr><td>&nbsp;</td><td><pre class="example">rotate=-PI/6
+</pre></td></tr></table>
+
+</li><li>
+Apply a constant rotation with period T, starting from an angle of PI/3:
+<table><tr><td>&nbsp;</td><td><pre class="example">rotate=PI/3+2*PI*t/T
+</pre></td></tr></table>
+
+</li><li>
+Make the input video rotation oscillating with a period of T
+seconds and an amplitude of A radians:
+<table><tr><td>&nbsp;</td><td><pre class="example">rotate=A*sin(2*PI/T*t)
+</pre></td></tr></table>
+
+</li><li>
+Rotate the video, output size is choosen so that the whole rotating
+input video is always completely contained in the output:
+<table><tr><td>&nbsp;</td><td><pre class="example">rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
+</pre></td></tr></table>
+
+</li><li>
+Rotate the video, reduce the output size so that no background is ever
+shown:
+<table><tr><td>&nbsp;</td><td><pre class="example">rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
+</pre></td></tr></table>
+</li></ul>
+
+<a name="Commands-1"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Commands-1">33.68.2 Commands</a></h3>
+
+<p>The filter supports the following commands:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>a, angle</samp>&rsquo;</dt>
+<dd><p>Set the angle expression.
+The command accepts the same syntax of the corresponding option.
+</p>
+<p>If the specified expression is not valid, it is kept at its current
+value.
+</p></dd>
+</dl>
+
+<a name="sab"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-sab">33.69 sab</a></h2>
+
+<p>Apply Shape Adaptive Blur.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>luma_radius, lr</samp>&rsquo;</dt>
+<dd><p>Set luma blur filter strength, must be a value in range 0.1-4.0, default
+value is 1.0. A greater value will result in a more blurred image, and
+in slower processing.
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_pre_filter_radius, lpfr</samp>&rsquo;</dt>
+<dd><p>Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
+value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_strength, ls</samp>&rsquo;</dt>
+<dd><p>Set luma maximum difference between pixels to still be considered, must
+be a value in the 0.1-100.0 range, default value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_radius, cr</samp>&rsquo;</dt>
+<dd><p>Set chroma blur filter strength, must be a value in range 0.1-4.0. A
+greater value will result in a more blurred image, and in slower
+processing.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_pre_filter_radius, cpfr</samp>&rsquo;</dt>
+<dd><p>Set chroma pre-filter radius, must be a value in the 0.1-2.0 range.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_strength, cs</samp>&rsquo;</dt>
+<dd><p>Set chroma maximum difference between pixels to still be considered,
+must be a value in the 0.1-100.0 range.
+</p></dd>
+</dl>
+
+<p>Each chroma option value, if not explicitly specified, is set to the
+corresponding luma option value.
+</p>
+<p><a name="scale"></a>
+</p><a name="scale-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-scale-1">33.70 scale</a></h2>
+
+<p>Scale (resize) the input video, using the libswscale library.
+</p>
+<p>The scale filter forces the output display aspect ratio to be the same
+of the input, by changing the output sample aspect ratio.
+</p>
+<p>If the input image format is different from the format requested by
+the next filter, the scale filter will convert the input to the
+requested format.
+</p>
+<a name="Options-21"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-21">33.70.1 Options</a></h3>
+<p>The filter accepts the following options, or any of the options
+supported by the libswscale scaler.
+</p>
+<p>See <a href="ffmpeg-scaler.html#scaler_005foptions">(ffmpeg-scaler)scaler_options</a> for
+the complete list of scaler options.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>height, h</samp>&rsquo;</dt>
+<dd><p>Set the output video dimension expression. Default value is the input
+dimension.
+</p>
+<p>If the value is 0, the input width is used for the output.
+</p>
+<p>If one of the values is -1, the scale filter will use a value that
+maintains the aspect ratio of the input image, calculated from the
+other specified dimension. If both of them are -1, the input size is
+used
+</p>
+<p>See below for the list of accepted constants for use in the dimension
+expression.
+</p>
+</dd>
+<dt> &lsquo;<samp>interl</samp>&rsquo;</dt>
+<dd><p>Set the interlacing mode. It accepts the following values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>Force interlaced aware scaling.
+</p>
+</dd>
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>Do not apply interlaced scaling.
+</p>
+</dd>
+<dt> &lsquo;<samp>-1</samp>&rsquo;</dt>
+<dd><p>Select interlaced aware scaling depending on whether the source frames
+are flagged as interlaced or not.
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>0</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>flags</samp>&rsquo;</dt>
+<dd><p>Set libswscale scaling flags. See
+<a href="ffmpeg-scaler.html#sws_005fflags">(ffmpeg-scaler)sws_flags</a> for the
+complete list of values. If not explictly specified the filter applies
+the default flags.
+</p>
+</dd>
+<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
+<dd><p>Set the video size. For the syntax of this option, check the &quot;Video size&quot;
+section in the ffmpeg-utils manual.
+</p>
+</dd>
+<dt> &lsquo;<samp>in_color_matrix</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>out_color_matrix</samp>&rsquo;</dt>
+<dd><p>Set in/output YCbCr color space type.
+</p>
+<p>This allows the autodetected value to be overridden as well as allows forcing
+a specific value used for the output and encoder.
+</p>
+<p>If not specified, the color space type depends on the pixel format.
+</p>
+<p>Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Choose automatically.
+</p>
+</dd>
+<dt> &lsquo;<samp>bt709</samp>&rsquo;</dt>
+<dd><p>Format conforming to International Telecommunication Union (ITU)
+Recommendation BT.709.
+</p>
+</dd>
+<dt> &lsquo;<samp>fcc</samp>&rsquo;</dt>
+<dd><p>Set color space conforming to the United States Federal Communications
+Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
+</p>
+</dd>
+<dt> &lsquo;<samp>bt601</samp>&rsquo;</dt>
+<dd><p>Set color space conforming to:
+</p>
+<ul>
+<li>
+ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
+
+</li><li>
+ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
+
+</li><li>
+Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
+
+</li></ul>
+
+</dd>
+<dt> &lsquo;<samp>smpte240m</samp>&rsquo;</dt>
+<dd><p>Set color space conforming to SMPTE ST 240:1999.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>in_range</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>out_range</samp>&rsquo;</dt>
+<dd><p>Set in/output YCbCr sample range.
+</p>
+<p>This allows the autodetected value to be overridden as well as allows forcing
+a specific value used for the output and encoder. If not specified, the
+range depends on the pixel format. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Choose automatically.
+</p>
+</dd>
+<dt> &lsquo;<samp>jpeg/full/pc</samp>&rsquo;</dt>
+<dd><p>Set full range (0-255 in case of 8-bit luma).
+</p>
+</dd>
+<dt> &lsquo;<samp>mpeg/tv</samp>&rsquo;</dt>
+<dd><p>Set &quot;MPEG&quot; range (16-235 in case of 8-bit luma).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>force_original_aspect_ratio</samp>&rsquo;</dt>
+<dd><p>Enable decreasing or increasing output video width or height if necessary to
+keep the original aspect ratio. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>disable</samp>&rsquo;</dt>
+<dd><p>Scale the video as specified and disable this feature.
+</p>
+</dd>
+<dt> &lsquo;<samp>decrease</samp>&rsquo;</dt>
+<dd><p>The output video dimensions will automatically be decreased if needed.
+</p>
+</dd>
+<dt> &lsquo;<samp>increase</samp>&rsquo;</dt>
+<dd><p>The output video dimensions will automatically be increased if needed.
+</p>
+</dd>
+</dl>
+
+<p>One useful instance of this option is that when you know a specific device&rsquo;s
+maximum allowed resolution, you can use this to limit the output video to
+that, while retaining the aspect ratio. For example, device A allows
+1280x720 playback, and your video is 1920x800. Using this option (set it to
+decrease) and specifying 1280x720 to the command line makes the output
+1280x533.
+</p>
+<p>Please note that this is a different thing than specifying -1 for &lsquo;<samp>w</samp>&rsquo;
+or &lsquo;<samp>h</samp>&rsquo;, you still need to specify the output resolution for this option
+to work.
+</p>
+</dd>
+</dl>
+
+<p>The values of the &lsquo;<samp>w</samp>&rsquo; and &lsquo;<samp>h</samp>&rsquo; options are expressions
+containing the following constants:
+</p>
+<dl compact="compact">
+<dt> <var>in_w</var></dt>
+<dt> <var>in_h</var></dt>
+<dd><p>the input width and height
+</p>
+</dd>
+<dt> <var>iw</var></dt>
+<dt> <var>ih</var></dt>
+<dd><p>same as <var>in_w</var> and <var>in_h</var>
+</p>
+</dd>
+<dt> <var>out_w</var></dt>
+<dt> <var>out_h</var></dt>
+<dd><p>the output (scaled) width and height
+</p>
+</dd>
+<dt> <var>ow</var></dt>
+<dt> <var>oh</var></dt>
+<dd><p>same as <var>out_w</var> and <var>out_h</var>
+</p>
+</dd>
+<dt> <var>a</var></dt>
+<dd><p>same as <var>iw</var> / <var>ih</var>
+</p>
+</dd>
+<dt> <var>sar</var></dt>
+<dd><p>input sample aspect ratio
+</p>
+</dd>
+<dt> <var>dar</var></dt>
+<dd><p>input display aspect ratio. Calculated from <code>(iw / ih) * sar</code>.
+</p>
+</dd>
+<dt> <var>hsub</var></dt>
+<dt> <var>vsub</var></dt>
+<dd><p>horizontal and vertical input chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p>
+</dd>
+<dt> <var>ohsub</var></dt>
+<dt> <var>ovsub</var></dt>
+<dd><p>horizontal and vertical output chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p></dd>
+</dl>
+
+<a name="Examples-1"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-1">33.70.2 Examples</a></h3>
+
+<ul>
+<li>
+Scale the input video to a size of 200x100:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=w=200:h=100
+</pre></td></tr></table>
+
+<p>This is equivalent to:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">scale=200:100
+</pre></td></tr></table>
+
+<p>or:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">scale=200x100
+</pre></td></tr></table>
+
+</li><li>
+Specify a size abbreviation for the output size:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=qcif
+</pre></td></tr></table>
+
+<p>which can also be written as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">scale=size=qcif
+</pre></td></tr></table>
+
+</li><li>
+Scale the input to 2x:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=w=2*iw:h=2*ih
+</pre></td></tr></table>
+
+</li><li>
+The above is the same as:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=2*in_w:2*in_h
+</pre></td></tr></table>
+
+</li><li>
+Scale the input to 2x with forced interlaced scaling:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=2*iw:2*ih:interl=1
+</pre></td></tr></table>
+
+</li><li>
+Scale the input to half size:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=w=iw/2:h=ih/2
+</pre></td></tr></table>
+
+</li><li>
+Increase the width, and set the height to the same size:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=3/2*iw:ow
+</pre></td></tr></table>
+
+</li><li>
+Seek for Greek harmony:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=iw:1/PHI*iw
+scale=ih*PHI:ih
+</pre></td></tr></table>
+
+</li><li>
+Increase the height, and set the width to 3/2 of the height:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=w=3/2*oh:h=3/5*ih
+</pre></td></tr></table>
+
+</li><li>
+Increase the size, but make the size a multiple of the chroma
+subsample values:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=&quot;trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub&quot;
+</pre></td></tr></table>
+
+</li><li>
+Increase the width to a maximum of 500 pixels, keep the same input
+aspect ratio:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=w='min(500\, iw*3/2):h=-1'
+</pre></td></tr></table>
+</li></ul>
+
+<a name="separatefields"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-separatefields">33.71 separatefields</a></h2>
+
+<p>The <code>separatefields</code> takes a frame-based video input and splits
+each frame into its components fields, producing a new half height clip
+with twice the frame rate and twice the frame count.
+</p>
+<p>This filter use field-dominance information in frame to decide which
+of each pair of fields to place first in the output.
+If it gets it wrong use <a href="#setfield">setfield</a> filter before <code>separatefields</code> filter.
+</p>
+<a name="setdar_002c-setsar"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-setdar_002c-setsar">33.72 setdar, setsar</a></h2>
+
+<p>The <code>setdar</code> filter sets the Display Aspect Ratio for the filter
+output video.
+</p>
+<p>This is done by changing the specified Sample (aka Pixel) Aspect
+Ratio, according to the following equation:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>DAR</var> = <var>HORIZONTAL_RESOLUTION</var> / <var>VERTICAL_RESOLUTION</var> * <var>SAR</var>
+</pre></td></tr></table>
+
+<p>Keep in mind that the <code>setdar</code> filter does not modify the pixel
+dimensions of the video frame. Also the display aspect ratio set by
+this filter may be changed by later filters in the filterchain,
+e.g. in case of scaling or if another &quot;setdar&quot; or a &quot;setsar&quot; filter is
+applied.
+</p>
+<p>The <code>setsar</code> filter sets the Sample (aka Pixel) Aspect Ratio for
+the filter output video.
+</p>
+<p>Note that as a consequence of the application of this filter, the
+output display aspect ratio will change according to the equation
+above.
+</p>
+<p>Keep in mind that the sample aspect ratio set by the <code>setsar</code>
+filter may be changed by later filters in the filterchain, e.g. if
+another &quot;setsar&quot; or a &quot;setdar&quot; filter is applied.
+</p>
+<p>The filters accept the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>r, ratio, dar (<code>setdar</code> only), sar (<code>setsar</code> only)</samp>&rsquo;</dt>
+<dd><p>Set the aspect ratio used by the filter.
+</p>
+<p>The parameter can be a floating point number string, an expression, or
+a string of the form <var>num</var>:<var>den</var>, where <var>num</var> and
+<var>den</var> are the numerator and denominator of the aspect ratio. If
+the parameter is not specified, it is assumed the value &quot;0&quot;.
+In case the form &quot;<var>num</var>:<var>den</var>&quot; is used, the <code>:</code> character
+should be escaped.
+</p>
+</dd>
+<dt> &lsquo;<samp>max</samp>&rsquo;</dt>
+<dd><p>Set the maximum integer value to use for expressing numerator and
+denominator when reducing the expressed aspect ratio to a rational.
+Default value is <code>100</code>.
+</p>
+</dd>
+</dl>
+
+<p>The parameter <var>sar</var> is an expression containing
+the following constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>E, PI, PHI</samp>&rsquo;</dt>
+<dd><p>the corresponding mathematical approximated values for e
+(euler number), pi (greek PI), phi (golden ratio)
+</p>
+</dd>
+<dt> &lsquo;<samp>w, h</samp>&rsquo;</dt>
+<dd><p>the input width and height
+</p>
+</dd>
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>same as <var>w</var> / <var>h</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
+<dd><p>input sample aspect ratio
+</p>
+</dd>
+<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
+<dd><p>input display aspect ratio, it is the same as (<var>w</var> / <var>h</var>) * <var>sar</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub, vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p></dd>
+</dl>
+
+<a name="Examples-91"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-91">33.72.1 Examples</a></h3>
+
+<ul>
+<li>
+To change the display aspect ratio to 16:9, specify one of the following:
+<table><tr><td>&nbsp;</td><td><pre class="example">setdar=dar=1.77777
+setdar=dar=16/9
+setdar=dar=1.77777
+</pre></td></tr></table>
+
+</li><li>
+To change the sample aspect ratio to 10:11, specify:
+<table><tr><td>&nbsp;</td><td><pre class="example">setsar=sar=10/11
+</pre></td></tr></table>
+
+</li><li>
+To set a display aspect ratio of 16:9, and specify a maximum integer value of
+1000 in the aspect ratio reduction, use the command:
+<table><tr><td>&nbsp;</td><td><pre class="example">setdar=ratio=16/9:max=1000
+</pre></td></tr></table>
+
+</li></ul>
+
+<p><a name="setfield"></a>
+</p><a name="setfield-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-setfield-1">33.73 setfield</a></h2>
+
+<p>Force field for the output video frame.
+</p>
+<p>The <code>setfield</code> filter marks the interlace type field for the
+output frames. It does not change the input frame, but only sets the
+corresponding property, which affects how the frame is treated by
+following filters (e.g. <code>fieldorder</code> or <code>yadif</code>).
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Keep the same field property.
+</p>
+</dd>
+<dt> &lsquo;<samp>bff</samp>&rsquo;</dt>
+<dd><p>Mark the frame as bottom-field-first.
+</p>
+</dd>
+<dt> &lsquo;<samp>tff</samp>&rsquo;</dt>
+<dd><p>Mark the frame as top-field-first.
+</p>
+</dd>
+<dt> &lsquo;<samp>prog</samp>&rsquo;</dt>
+<dd><p>Mark the frame as progressive.
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<a name="showinfo"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-showinfo">33.74 showinfo</a></h2>
+
+<p>Show a line containing various information for each input video frame.
+The input video is not modified.
+</p>
+<p>The shown line contains a sequence of key/value pairs of the form
+<var>key</var>:<var>value</var>.
+</p>
+<p>A description of each shown parameter follows:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>sequential number of the input frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
+<dd><p>Presentation TimeStamp of the input frame, expressed as a number of
+time base units. The time base unit depends on the filter input pad.
+</p>
+</dd>
+<dt> &lsquo;<samp>pts_time</samp>&rsquo;</dt>
+<dd><p>Presentation TimeStamp of the input frame, expressed as a number of
+seconds
+</p>
+</dd>
+<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
+<dd><p>position of the frame in the input stream, -1 if this information in
+unavailable and/or meaningless (for example in case of synthetic video)
+</p>
+</dd>
+<dt> &lsquo;<samp>fmt</samp>&rsquo;</dt>
+<dd><p>pixel format name
+</p>
+</dd>
+<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
+<dd><p>sample aspect ratio of the input frame, expressed in the form
+<var>num</var>/<var>den</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>size of the input frame. For the syntax of this option, check the &quot;Video size&quot;
+section in the ffmpeg-utils manual.
+</p>
+</dd>
+<dt> &lsquo;<samp>i</samp>&rsquo;</dt>
+<dd><p>interlaced mode (&quot;P&quot; for &quot;progressive&quot;, &quot;T&quot; for top field first, &quot;B&quot;
+for bottom field first)
+</p>
+</dd>
+<dt> &lsquo;<samp>iskey</samp>&rsquo;</dt>
+<dd><p>1 if the frame is a key frame, 0 otherwise
+</p>
+</dd>
+<dt> &lsquo;<samp>type</samp>&rsquo;</dt>
+<dd><p>picture type of the input frame (&quot;I&quot; for an I-frame, &quot;P&quot; for a
+P-frame, &quot;B&quot; for a B-frame, &quot;?&quot; for unknown type).
+Check also the documentation of the <code>AVPictureType</code> enum and of
+the <code>av_get_picture_type_char</code> function defined in
+&lsquo;<tt>libavutil/avutil.h</tt>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>checksum</samp>&rsquo;</dt>
+<dd><p>Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame
+</p>
+</dd>
+<dt> &lsquo;<samp>plane_checksum</samp>&rsquo;</dt>
+<dd><p>Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
+expressed in the form &quot;[<var>c0</var> <var>c1</var> <var>c2</var> <var>c3</var>]&quot;
+</p></dd>
+</dl>
+
+<p><a name="smartblur"></a>
+</p><a name="smartblur-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-smartblur-1">33.75 smartblur</a></h2>
+
+<p>Blur the input video without impacting the outlines.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>luma_radius, lr</samp>&rsquo;</dt>
+<dd><p>Set the luma radius. The option value must be a float number in
+the range [0.1,5.0] that specifies the variance of the gaussian filter
+used to blur the image (slower if larger). Default value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_strength, ls</samp>&rsquo;</dt>
+<dd><p>Set the luma strength. The option value must be a float number
+in the range [-1.0,1.0] that configures the blurring. A value included
+in [0.0,1.0] will blur the image whereas a value included in
+[-1.0,0.0] will sharpen the image. Default value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_threshold, lt</samp>&rsquo;</dt>
+<dd><p>Set the luma threshold used as a coefficient to determine
+whether a pixel should be blurred or not. The option value must be an
+integer in the range [-30,30]. A value of 0 will filter all the image,
+a value included in [0,30] will filter flat areas and a value included
+in [-30,0] will filter edges. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_radius, cr</samp>&rsquo;</dt>
+<dd><p>Set the chroma radius. The option value must be a float number in
+the range [0.1,5.0] that specifies the variance of the gaussian filter
+used to blur the image (slower if larger). Default value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_strength, cs</samp>&rsquo;</dt>
+<dd><p>Set the chroma strength. The option value must be a float number
+in the range [-1.0,1.0] that configures the blurring. A value included
+in [0.0,1.0] will blur the image whereas a value included in
+[-1.0,0.0] will sharpen the image. Default value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_threshold, ct</samp>&rsquo;</dt>
+<dd><p>Set the chroma threshold used as a coefficient to determine
+whether a pixel should be blurred or not. The option value must be an
+integer in the range [-30,30]. A value of 0 will filter all the image,
+a value included in [0,30] will filter flat areas and a value included
+in [-30,0] will filter edges. Default value is 0.
+</p></dd>
+</dl>
+
+<p>If a chroma option is not explicitly set, the corresponding luma value
+is set.
+</p>
+<a name="stereo3d"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-stereo3d">33.76 stereo3d</a></h2>
+
+<p>Convert between different stereoscopic image formats.
+</p>
+<p>The filters accept the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>in</samp>&rsquo;</dt>
+<dd><p>Set stereoscopic image format of input.
+</p>
+<p>Available values for input image formats are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sbsl</samp>&rsquo;</dt>
+<dd><p>side by side parallel (left eye left, right eye right)
+</p>
+</dd>
+<dt> &lsquo;<samp>sbsr</samp>&rsquo;</dt>
+<dd><p>side by side crosseye (right eye left, left eye right)
+</p>
+</dd>
+<dt> &lsquo;<samp>sbs2l</samp>&rsquo;</dt>
+<dd><p>side by side parallel with half width resolution
+(left eye left, right eye right)
+</p>
+</dd>
+<dt> &lsquo;<samp>sbs2r</samp>&rsquo;</dt>
+<dd><p>side by side crosseye with half width resolution
+(right eye left, left eye right)
+</p>
+</dd>
+<dt> &lsquo;<samp>abl</samp>&rsquo;</dt>
+<dd><p>above-below (left eye above, right eye below)
+</p>
+</dd>
+<dt> &lsquo;<samp>abr</samp>&rsquo;</dt>
+<dd><p>above-below (right eye above, left eye below)
+</p>
+</dd>
+<dt> &lsquo;<samp>ab2l</samp>&rsquo;</dt>
+<dd><p>above-below with half height resolution
+(left eye above, right eye below)
+</p>
+</dd>
+<dt> &lsquo;<samp>ab2r</samp>&rsquo;</dt>
+<dd><p>above-below with half height resolution
+(right eye above, left eye below)
+</p>
+</dd>
+<dt> &lsquo;<samp>al</samp>&rsquo;</dt>
+<dd><p>alternating frames (left eye first, right eye second)
+</p>
+</dd>
+<dt> &lsquo;<samp>ar</samp>&rsquo;</dt>
+<dd><p>alternating frames (right eye first, left eye second)
+</p>
+<p>Default value is &lsquo;<samp>sbsl</samp>&rsquo;.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>out</samp>&rsquo;</dt>
+<dd><p>Set stereoscopic image format of output.
+</p>
+<p>Available values for output image formats are all the input formats as well as:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>arbg</samp>&rsquo;</dt>
+<dd><p>anaglyph red/blue gray
+(red filter on left eye, blue filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>argg</samp>&rsquo;</dt>
+<dd><p>anaglyph red/green gray
+(red filter on left eye, green filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>arcg</samp>&rsquo;</dt>
+<dd><p>anaglyph red/cyan gray
+(red filter on left eye, cyan filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>arch</samp>&rsquo;</dt>
+<dd><p>anaglyph red/cyan half colored
+(red filter on left eye, cyan filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>arcc</samp>&rsquo;</dt>
+<dd><p>anaglyph red/cyan color
+(red filter on left eye, cyan filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>arcd</samp>&rsquo;</dt>
+<dd><p>anaglyph red/cyan color optimized with the least squares projection of dubois
+(red filter on left eye, cyan filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>agmg</samp>&rsquo;</dt>
+<dd><p>anaglyph green/magenta gray
+(green filter on left eye, magenta filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>agmh</samp>&rsquo;</dt>
+<dd><p>anaglyph green/magenta half colored
+(green filter on left eye, magenta filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>agmc</samp>&rsquo;</dt>
+<dd><p>anaglyph green/magenta colored
+(green filter on left eye, magenta filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>agmd</samp>&rsquo;</dt>
+<dd><p>anaglyph green/magenta color optimized with the least squares projection of dubois
+(green filter on left eye, magenta filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>aybg</samp>&rsquo;</dt>
+<dd><p>anaglyph yellow/blue gray
+(yellow filter on left eye, blue filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>aybh</samp>&rsquo;</dt>
+<dd><p>anaglyph yellow/blue half colored
+(yellow filter on left eye, blue filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>aybc</samp>&rsquo;</dt>
+<dd><p>anaglyph yellow/blue colored
+(yellow filter on left eye, blue filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>aybd</samp>&rsquo;</dt>
+<dd><p>anaglyph yellow/blue color optimized with the least squares projection of dubois
+(yellow filter on left eye, blue filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>irl</samp>&rsquo;</dt>
+<dd><p>interleaved rows (left eye has top row, right eye starts on next row)
+</p>
+</dd>
+<dt> &lsquo;<samp>irr</samp>&rsquo;</dt>
+<dd><p>interleaved rows (right eye has top row, left eye starts on next row)
+</p>
+</dd>
+<dt> &lsquo;<samp>ml</samp>&rsquo;</dt>
+<dd><p>mono output (left eye only)
+</p>
+</dd>
+<dt> &lsquo;<samp>mr</samp>&rsquo;</dt>
+<dd><p>mono output (right eye only)
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>arcd</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<a name="Examples-77"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-77">33.76.1 Examples</a></h3>
+
+<ul>
+<li>
+Convert input video from side by side parallel to anaglyph yellow/blue dubois:
+<table><tr><td>&nbsp;</td><td><pre class="example">stereo3d=sbsl:aybd
+</pre></td></tr></table>
+
+</li><li>
+Convert input video from above bellow (left eye above, right eye below) to side by side crosseye.
+<table><tr><td>&nbsp;</td><td><pre class="example">stereo3d=abl:sbsr
+</pre></td></tr></table>
+</li></ul>
+
+<a name="spp"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-spp">33.77 spp</a></h2>
+
+<p>Apply a simple postprocessing filter that compresses and decompresses the image
+at several (or - in the case of &lsquo;<samp>quality</samp>&rsquo; level <code>6</code> - all) shifts
+and average the results.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>quality</samp>&rsquo;</dt>
+<dd><p>Set quality. This option defines the number of levels for averaging. It accepts
+an integer in the range 0-6. If set to <code>0</code>, the filter will have no
+effect. A value of <code>6</code> means the higher quality. For each increment of
+that value the speed drops by a factor of approximately 2.  Default value is
+<code>3</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>qp</samp>&rsquo;</dt>
+<dd><p>Force a constant quantization parameter. If not set, the filter will use the QP
+from the video stream (if available).
+</p>
+</dd>
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Set thresholding mode. Available modes are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>hard</samp>&rsquo;</dt>
+<dd><p>Set hard thresholding (default).
+</p></dd>
+<dt> &lsquo;<samp>soft</samp>&rsquo;</dt>
+<dd><p>Set soft thresholding (better de-ringing effect, but likely blurrier).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>use_bframe_qp</samp>&rsquo;</dt>
+<dd><p>Enable the use of the QP from the B-Frames if set to <code>1</code>. Using this
+option may cause flicker since the B-Frames have often larger QP. Default is
+<code>0</code> (not enabled).
+</p></dd>
+</dl>
+
+<p><a name="subtitles"></a>
+</p><a name="subtitles-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-subtitles-1">33.78 subtitles</a></h2>
+
+<p>Draw subtitles on top of input video using the libass library.
+</p>
+<p>To enable compilation of this filter you need to configure FFmpeg with
+<code>--enable-libass</code>. This filter also requires a build with libavcodec and
+libavformat to convert the passed subtitles file to ASS (Advanced Substation
+Alpha) subtitles format.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filename, f</samp>&rsquo;</dt>
+<dd><p>Set the filename of the subtitle file to read. It must be specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>original_size</samp>&rsquo;</dt>
+<dd><p>Specify the size of the original video, the video for which the ASS file
+was composed. For the syntax of this option, check the &quot;Video size&quot; section in
+the ffmpeg-utils manual. Due to a misdesign in ASS aspect ratio arithmetic,
+this is necessary to correctly scale the fonts if the aspect ratio has been
+changed.
+</p>
+</dd>
+<dt> &lsquo;<samp>charenc</samp>&rsquo;</dt>
+<dd><p>Set subtitles input character encoding. <code>subtitles</code> filter only. Only
+useful if not UTF-8.
+</p></dd>
+</dl>
+
+<p>If the first key is not specified, it is assumed that the first value
+specifies the &lsquo;<samp>filename</samp>&rsquo;.
+</p>
+<p>For example, to render the file &lsquo;<tt>sub.srt</tt>&rsquo; on top of the input
+video, use the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">subtitles=sub.srt
+</pre></td></tr></table>
+
+<p>which is equivalent to:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">subtitles=filename=sub.srt
+</pre></td></tr></table>
+
+<a name="super2xsai"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-super2xsai">33.79 super2xsai</a></h2>
+
+<p>Scale the input by 2x and smooth using the Super2xSaI (Scale and
+Interpolate) pixel art scaling algorithm.
+</p>
+<p>Useful for enlarging pixel art images without reducing sharpness.
+</p>
+<a name="swapuv"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-swapuv">33.80 swapuv</a></h2>
+<p>Swap U &amp; V plane.
+</p>
+<a name="telecine"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-telecine">33.81 telecine</a></h2>
+
+<p>Apply telecine process to the video.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>first_field</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>top, t</samp>&rsquo;</dt>
+<dd><p>top field first
+</p></dd>
+<dt> &lsquo;<samp>bottom, b</samp>&rsquo;</dt>
+<dd><p>bottom field first
+The default value is <code>top</code>.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>pattern</samp>&rsquo;</dt>
+<dd><p>A string of numbers representing the pulldown pattern you wish to apply.
+The default value is <code>23</code>.
+</p></dd>
+</dl>
+
+<table><tr><td>&nbsp;</td><td><pre class="example">Some typical patterns:
+
+NTSC output (30i):
+27.5p: 32222
+24p: 23 (classic)
+24p: 2332 (preferred)
+20p: 33
+18p: 334
+16p: 3444
+
+PAL output (25i):
+27.5p: 12222
+24p: 222222222223 (&quot;Euro pulldown&quot;)
+16.67p: 33
+16p: 33333334
+</pre></td></tr></table>
+
+<a name="thumbnail"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-thumbnail">33.82 thumbnail</a></h2>
+<p>Select the most representative frame in a given sequence of consecutive frames.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>Set the frames batch size to analyze; in a set of <var>n</var> frames, the filter
+will pick one of them, and then handle the next batch of <var>n</var> frames until
+the end. Default is <code>100</code>.
+</p></dd>
+</dl>
+
+<p>Since the filter keeps track of the whole frames sequence, a bigger <var>n</var>
+value will result in a higher memory usage, so a high value is not recommended.
+</p>
+<a name="Examples-30"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-30">33.82.1 Examples</a></h3>
+
+<ul>
+<li>
+Extract one picture each 50 frames:
+<table><tr><td>&nbsp;</td><td><pre class="example">thumbnail=50
+</pre></td></tr></table>
+
+</li><li>
+Complete example of a thumbnail creation with <code>ffmpeg</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
+</pre></td></tr></table>
+</li></ul>
+
+<a name="tile"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-tile">33.83 tile</a></h2>
+
+<p>Tile several successive frames together.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>layout</samp>&rsquo;</dt>
+<dd><p>Set the grid size (i.e. the number of lines and columns). For the syntax of
+this option, check the &quot;Video size&quot; section in the ffmpeg-utils manual.
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_frames</samp>&rsquo;</dt>
+<dd><p>Set the maximum number of frames to render in the given area. It must be less
+than or equal to <var>w</var>x<var>h</var>. The default value is <code>0</code>, meaning all
+the area will be used.
+</p>
+</dd>
+<dt> &lsquo;<samp>margin</samp>&rsquo;</dt>
+<dd><p>Set the outer border margin in pixels.
+</p>
+</dd>
+<dt> &lsquo;<samp>padding</samp>&rsquo;</dt>
+<dd><p>Set the inner border thickness (i.e. the number of pixels between frames). For
+more advanced padding options (such as having different values for the edges),
+refer to the pad video filter.
+</p>
+</dd>
+<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
+<dd><p>Specify the color of the unused areaFor the syntax of this option, check the
+&quot;Color&quot; section in the ffmpeg-utils manual. The default value of <var>color</var>
+is &quot;black&quot;.
+</p></dd>
+</dl>
+
+<a name="Examples-11"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-11">33.83.1 Examples</a></h3>
+
+<ul>
+<li>
+Produce 8x8 PNG tiles of all keyframes (&lsquo;<samp>-skip_frame nokey</samp>&rsquo;) in a movie:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
+</pre></td></tr></table>
+<p>The &lsquo;<samp>-vsync 0</samp>&rsquo; is necessary to prevent <code>ffmpeg</code> from
+duplicating each output frame to accomodate the originally detected frame
+rate.
+</p>
+</li><li>
+Display <code>5</code> pictures in an area of <code>3x2</code> frames,
+with <code>7</code> pixels between them, and <code>2</code> pixels of initial margin, using
+mixed flat and named options:
+<table><tr><td>&nbsp;</td><td><pre class="example">tile=3x2:nb_frames=5:padding=7:margin=2
+</pre></td></tr></table>
+</li></ul>
+
+<a name="tinterlace"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-tinterlace">33.84 tinterlace</a></h2>
+
+<p>Perform various types of temporal field interlacing.
+</p>
+<p>Frames are counted starting from 1, so the first input frame is
+considered odd.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Specify the mode of the interlacing. This option can also be specified
+as a value alone. See below for a list of values for this option.
+</p>
+<p>Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>merge, 0</samp>&rsquo;</dt>
+<dd><p>Move odd frames into the upper field, even into the lower field,
+generating a double height frame at half frame rate.
+</p>
+</dd>
+<dt> &lsquo;<samp>drop_odd, 1</samp>&rsquo;</dt>
+<dd><p>Only output even frames, odd frames are dropped, generating a frame with
+unchanged height at half frame rate.
+</p>
+</dd>
+<dt> &lsquo;<samp>drop_even, 2</samp>&rsquo;</dt>
+<dd><p>Only output odd frames, even frames are dropped, generating a frame with
+unchanged height at half frame rate.
+</p>
+</dd>
+<dt> &lsquo;<samp>pad, 3</samp>&rsquo;</dt>
+<dd><p>Expand each frame to full height, but pad alternate lines with black,
+generating a frame with double height at the same input frame rate.
+</p>
+</dd>
+<dt> &lsquo;<samp>interleave_top, 4</samp>&rsquo;</dt>
+<dd><p>Interleave the upper field from odd frames with the lower field from
+even frames, generating a frame with unchanged height at half frame rate.
+</p>
+</dd>
+<dt> &lsquo;<samp>interleave_bottom, 5</samp>&rsquo;</dt>
+<dd><p>Interleave the lower field from odd frames with the upper field from
+even frames, generating a frame with unchanged height at half frame rate.
+</p>
+</dd>
+<dt> &lsquo;<samp>interlacex2, 6</samp>&rsquo;</dt>
+<dd><p>Double frame rate with unchanged height. Frames are inserted each
+containing the second temporal field from the previous input frame and
+the first temporal field from the next input frame. This mode relies on
+the top_field_first flag. Useful for interlaced video displays with no
+field synchronisation.
+</p></dd>
+</dl>
+
+<p>Numeric values are deprecated but are accepted for backward
+compatibility reasons.
+</p>
+<p>Default mode is <code>merge</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>flags</samp>&rsquo;</dt>
+<dd><p>Specify flags influencing the filter process.
+</p>
+<p>Available value for <var>flags</var> is:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>low_pass_filter, vlfp</samp>&rsquo;</dt>
+<dd><p>Enable vertical low-pass filtering in the filter.
+Vertical low-pass filtering is required when creating an interlaced
+destination from a progressive source which contains high-frequency
+vertical detail. Filtering will reduce interlace &rsquo;twitter&rsquo; and Moire
+patterning.
+</p>
+<p>Vertical low-pass filtering can only be enabled for &lsquo;<samp>mode</samp>&rsquo;
+<var>interleave_top</var> and <var>interleave_bottom</var>.
+</p>
+</dd>
+</dl>
+</dd>
+</dl>
+
+<a name="transpose"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-transpose">33.85 transpose</a></h2>
+
+<p>Transpose rows with columns in the input video and optionally flip it.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>dir</samp>&rsquo;</dt>
+<dd><p>Specify the transposition direction.
+</p>
+<p>Can assume the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0, 4, cclock_flip</samp>&rsquo;</dt>
+<dd><p>Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">L.R     L.l
+. . -&gt;  . .
+l.r     R.r
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>1, 5, clock</samp>&rsquo;</dt>
+<dd><p>Rotate by 90 degrees clockwise, that is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">L.R     l.L
+. . -&gt;  . .
+l.r     r.R
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>2, 6, cclock</samp>&rsquo;</dt>
+<dd><p>Rotate by 90 degrees counterclockwise, that is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">L.R     R.r
+. . -&gt;  . .
+l.r     L.l
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>3, 7, clock_flip</samp>&rsquo;</dt>
+<dd><p>Rotate by 90 degrees clockwise and vertically flip, that is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">L.R     r.R
+. . -&gt;  . .
+l.r     l.L
+</pre></td></tr></table>
+</dd>
+</dl>
+
+<p>For values between 4-7, the transposition is only done if the input
+video geometry is portrait and not landscape. These values are
+deprecated, the <code>passthrough</code> option should be used instead.
+</p>
+<p>Numerical values are deprecated, and should be dropped in favor of
+symbolic constants.
+</p>
+</dd>
+<dt> &lsquo;<samp>passthrough</samp>&rsquo;</dt>
+<dd><p>Do not apply the transposition if the input geometry matches the one
+specified by the specified value. It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>Always apply transposition.
+</p></dd>
+<dt> &lsquo;<samp>portrait</samp>&rsquo;</dt>
+<dd><p>Preserve portrait geometry (when <var>height</var> &gt;= <var>width</var>).
+</p></dd>
+<dt> &lsquo;<samp>landscape</samp>&rsquo;</dt>
+<dd><p>Preserve landscape geometry (when <var>width</var> &gt;= <var>height</var>).
+</p></dd>
+</dl>
+
+<p>Default value is <code>none</code>.
+</p></dd>
+</dl>
+
+<p>For example to rotate by 90 degrees clockwise and preserve portrait
+layout:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">transpose=dir=1:passthrough=portrait
+</pre></td></tr></table>
+
+<p>The command above can also be specified as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">transpose=1:portrait
+</pre></td></tr></table>
+
+<a name="trim"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-trim">33.86 trim</a></h2>
+<p>Trim the input so that the output contains one continuous subpart of the input.
+</p>
+<p>This filter accepts the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>start</samp>&rsquo;</dt>
+<dd><p>Specify time of the start of the kept section, i.e. the frame with the
+timestamp <var>start</var> will be the first frame in the output.
+</p>
+</dd>
+<dt> &lsquo;<samp>end</samp>&rsquo;</dt>
+<dd><p>Specify time of the first frame that will be dropped, i.e. the frame
+immediately preceding the one with the timestamp <var>end</var> will be the last
+frame in the output.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_pts</samp>&rsquo;</dt>
+<dd><p>Same as <var>start</var>, except this option sets the start timestamp in timebase
+units instead of seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>end_pts</samp>&rsquo;</dt>
+<dd><p>Same as <var>end</var>, except this option sets the end timestamp in timebase units
+instead of seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration</samp>&rsquo;</dt>
+<dd><p>Specify maximum duration of the output.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_frame</samp>&rsquo;</dt>
+<dd><p>Number of the first frame that should be passed to output.
+</p>
+</dd>
+<dt> &lsquo;<samp>end_frame</samp>&rsquo;</dt>
+<dd><p>Number of the first frame that should be dropped.
+</p></dd>
+</dl>
+
+<p>&lsquo;<samp>start</samp>&rsquo;, &lsquo;<samp>end</samp>&rsquo;, &lsquo;<samp>duration</samp>&rsquo; are expressed as time
+duration specifications, check the &quot;Time duration&quot; section in the
+ffmpeg-utils manual.
+</p>
+<p>Note that the first two sets of the start/end options and the &lsquo;<samp>duration</samp>&rsquo;
+option look at the frame timestamp, while the _frame variants simply count the
+frames that pass through the filter. Also note that this filter does not modify
+the timestamps. If you wish that the output timestamps start at zero, insert a
+setpts filter after the trim filter.
+</p>
+<p>If multiple start or end options are set, this filter tries to be greedy and
+keep all the frames that match at least one of the specified constraints. To keep
+only the part that matches all the constraints at once, chain multiple trim
+filters.
+</p>
+<p>The defaults are such that all the input is kept. So it is possible to set e.g.
+just the end values to keep everything before the specified time.
+</p>
+<p>Examples:
+</p><ul>
+<li>
+drop everything except the second minute of input
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -vf trim=60:120
+</pre></td></tr></table>
+
+</li><li>
+keep only the first second
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -vf trim=duration=1
+</pre></td></tr></table>
+
+</li></ul>
+
+
+<a name="unsharp"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-unsharp">33.87 unsharp</a></h2>
+
+<p>Sharpen or blur the input video.
+</p>
+<p>It accepts the following parameters:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>luma_msize_x, lx</samp>&rsquo;</dt>
+<dd><p>Set the luma matrix horizontal size. It must be an odd integer between
+3 and 63, default value is 5.
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_msize_y, ly</samp>&rsquo;</dt>
+<dd><p>Set the luma matrix vertical size. It must be an odd integer between 3
+and 63, default value is 5.
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_amount, la</samp>&rsquo;</dt>
+<dd><p>Set the luma effect strength. It can be a float number, reasonable
+values lay between -1.5 and 1.5.
+</p>
+<p>Negative values will blur the input video, while positive values will
+sharpen it, a value of zero will disable the effect.
+</p>
+<p>Default value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_msize_x, cx</samp>&rsquo;</dt>
+<dd><p>Set the chroma matrix horizontal size. It must be an odd integer
+between 3 and 63, default value is 5.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_msize_y, cy</samp>&rsquo;</dt>
+<dd><p>Set the chroma matrix vertical size. It must be an odd integer
+between 3 and 63, default value is 5.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_amount, ca</samp>&rsquo;</dt>
+<dd><p>Set the chroma effect strength. It can be a float number, reasonable
+values lay between -1.5 and 1.5.
+</p>
+<p>Negative values will blur the input video, while positive values will
+sharpen it, a value of zero will disable the effect.
+</p>
+<p>Default value is 0.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>opencl</samp>&rsquo;</dt>
+<dd><p>If set to 1, specify using OpenCL capabilities, only available if
+FFmpeg was configured with <code>--enable-opencl</code>. Default value is 0.
+</p>
+</dd>
+</dl>
+
+<p>All parameters are optional and default to the equivalent of the
+string &rsquo;5:5:1.0:5:5:0.0&rsquo;.
+</p>
+<a name="Examples-6"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-6">33.87.1 Examples</a></h3>
+
+<ul>
+<li>
+Apply strong luma sharpen effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
+</pre></td></tr></table>
+
+</li><li>
+Apply strong blur of both luma and chroma parameters:
+<table><tr><td>&nbsp;</td><td><pre class="example">unsharp=7:7:-2:7:7:-2
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="vidstabdetect"></a>
+</p><a name="vidstabdetect-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-vidstabdetect-1">33.88 vidstabdetect</a></h2>
+
+<p>Analyze video stabilization/deshaking. Perform pass 1 of 2, see
+<a href="#vidstabtransform">vidstabtransform</a> for pass 2.
+</p>
+<p>This filter generates a file with relative translation and rotation
+transform information about subsequent frames, which is then used by
+the <a href="#vidstabtransform">vidstabtransform</a> filter.
+</p>
+<p>To enable compilation of this filter you need to configure FFmpeg with
+<code>--enable-libvidstab</code>.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>result</samp>&rsquo;</dt>
+<dd><p>Set the path to the file used to write the transforms information.
+Default value is &lsquo;<tt>transforms.trf</tt>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>shakiness</samp>&rsquo;</dt>
+<dd><p>Set how shaky the video is and how quick the camera is. It accepts an
+integer in the range 1-10, a value of 1 means little shakiness, a
+value of 10 means strong shakiness. Default value is 5.
+</p>
+</dd>
+<dt> &lsquo;<samp>accuracy</samp>&rsquo;</dt>
+<dd><p>Set the accuracy of the detection process. It must be a value in the
+range 1-15. A value of 1 means low accuracy, a value of 15 means high
+accuracy. Default value is 9.
+</p>
+</dd>
+<dt> &lsquo;<samp>stepsize</samp>&rsquo;</dt>
+<dd><p>Set stepsize of the search process. The region around minimum is
+scanned with 1 pixel resolution. Default value is 6.
+</p>
+</dd>
+<dt> &lsquo;<samp>mincontrast</samp>&rsquo;</dt>
+<dd><p>Set minimum contrast. Below this value a local measurement field is
+discarded. Must be a floating point value in the range 0-1. Default
+value is 0.3.
+</p>
+</dd>
+<dt> &lsquo;<samp>tripod</samp>&rsquo;</dt>
+<dd><p>Set reference frame number for tripod mode.
+</p>
+<p>If enabled, the motion of the frames is compared to a reference frame
+in the filtered stream, identified by the specified number. The idea
+is to compensate all movements in a more-or-less static scene and keep
+the camera view absolutely still.
+</p>
+<p>If set to 0, it is disabled. The frames are counted starting from 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>show</samp>&rsquo;</dt>
+<dd><p>Show fields and transforms in the resulting frames. It accepts an
+integer in the range 0-2. Default value is 0, which disables any
+visualization.
+</p></dd>
+</dl>
+
+<a name="Examples-5"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-5">33.88.1 Examples</a></h3>
+
+<ul>
+<li>
+Use default values:
+<table><tr><td>&nbsp;</td><td><pre class="example">vidstabdetect
+</pre></td></tr></table>
+
+</li><li>
+Analyze strongly shaky movie and put the results in file
+&lsquo;<tt>mytransforms.trf</tt>&rsquo;:
+<table><tr><td>&nbsp;</td><td><pre class="example">vidstabdetect=shakiness=10:accuracy=15:result=&quot;mytransforms.trf&quot;
+</pre></td></tr></table>
+
+</li><li>
+Visualize the result of internal transformations in the resulting
+video:
+<table><tr><td>&nbsp;</td><td><pre class="example">vidstabdetect=show=1
+</pre></td></tr></table>
+
+</li><li>
+Analyze a video with medium shakiness using <code>ffmpeg</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="vidstabtransform"></a>
+</p><a name="vidstabtransform-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-vidstabtransform-1">33.89 vidstabtransform</a></h2>
+
+<p>Video stabilization/deshaking: pass 2 of 2,
+see <a href="#vidstabdetect">vidstabdetect</a> for pass 1.
+</p>
+<p>Read a file with transform information for each frame and
+apply/compensate them. Together with the <a href="#vidstabdetect">vidstabdetect</a>
+filter this can be used to deshake videos. See also
+<a href="http://public.hronopik.de/vid.stab">http://public.hronopik.de/vid.stab</a>. It is important to also use
+the unsharp filter, see below.
+</p>
+<p>To enable compilation of this filter you need to configure FFmpeg with
+<code>--enable-libvidstab</code>.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>input</samp>&rsquo;</dt>
+<dd><p>path to the file used to read the transforms (default: &lsquo;<tt>transforms.trf</tt>&rsquo;)
+</p>
+</dd>
+<dt> &lsquo;<samp>smoothing</samp>&rsquo;</dt>
+<dd><p>number of frames (value*2 + 1) used for lowpass filtering the camera movements
+(default: 10). For example a number of 10 means that 21 frames are used
+(10 in the past and 10 in the future) to smoothen the motion in the
+video. A larger values leads to a smoother video, but limits the
+acceleration of the camera (pan/tilt movements).
+</p>
+</dd>
+<dt> &lsquo;<samp>maxshift</samp>&rsquo;</dt>
+<dd><p>maximal number of pixels to translate frames (default: -1 no limit)
+</p>
+</dd>
+<dt> &lsquo;<samp>maxangle</samp>&rsquo;</dt>
+<dd><p>maximal angle in radians (degree*PI/180) to rotate frames (default: -1
+no limit)
+</p>
+</dd>
+<dt> &lsquo;<samp>crop</samp>&rsquo;</dt>
+<dd><p>How to deal with borders that may be visible due to movement
+compensation. Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>keep</samp>&rsquo;</dt>
+<dd><p>keep image information from previous frame (default)
+</p></dd>
+<dt> &lsquo;<samp>black</samp>&rsquo;</dt>
+<dd><p>fill the border black
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>invert</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>keep transforms normal (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>invert transforms
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>relative</samp>&rsquo;</dt>
+<dd><p>consider transforms as
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>absolute
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>relative to previous frame (default)
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>zoom</samp>&rsquo;</dt>
+<dd><p>percentage to zoom (default: 0)
+</p><dl compact="compact">
+<dt> &lsquo;<samp>&gt;0</samp>&rsquo;</dt>
+<dd><p>zoom in
+</p></dd>
+<dt> &lsquo;<samp>&lt;0</samp>&rsquo;</dt>
+<dd><p>zoom out
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>optzoom</samp>&rsquo;</dt>
+<dd><p>set optimal zooming to avoid borders
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>disabled
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>optimal static zoom value is determined (only very strong movements will lead to visible borders) (default)
+</p></dd>
+<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dd><p>optimal adaptive zoom value is determined (no borders will be visible)
+</p></dd>
+</dl>
+<p>Note that the value given at zoom is added to the one calculated
+here.
+</p>
+</dd>
+<dt> &lsquo;<samp>interpol</samp>&rsquo;</dt>
+<dd><p>type of interpolation
+</p>
+<p>Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>no</samp>&rsquo;</dt>
+<dd><p>no interpolation
+</p></dd>
+<dt> &lsquo;<samp>linear</samp>&rsquo;</dt>
+<dd><p>linear only horizontal
+</p></dd>
+<dt> &lsquo;<samp>bilinear</samp>&rsquo;</dt>
+<dd><p>linear in both directions (default)
+</p></dd>
+<dt> &lsquo;<samp>bicubic</samp>&rsquo;</dt>
+<dd><p>cubic in both directions (slow)
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>tripod</samp>&rsquo;</dt>
+<dd><p>virtual tripod mode means that the video is stabilized such that the
+camera stays stationary. Use also <code>tripod</code> option of
+<a href="#vidstabdetect">vidstabdetect</a>.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>off (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>virtual tripod mode: equivalent to <code>relative=0:smoothing=0</code>
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Examples-10"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-10">33.89.1 Examples</a></h3>
+
+<ul>
+<li>
+typical call with default default values:
+ (note the unsharp filter which is always recommended)
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
+</pre></td></tr></table>
+
+</li><li>
+zoom in a bit more and load transform data from a given file
+<table><tr><td>&nbsp;</td><td><pre class="example">vidstabtransform=zoom=5:input=&quot;mytransforms.trf&quot;
+</pre></td></tr></table>
+
+</li><li>
+smoothen the video even more
+<table><tr><td>&nbsp;</td><td><pre class="example">vidstabtransform=smoothing=30
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="vflip"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-vflip">33.90 vflip</a></h2>
+
+<p>Flip the input video vertically.
+</p>
+<p>For example, to vertically flip a video with <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -vf &quot;vflip&quot; out.avi
+</pre></td></tr></table>
+
+<a name="vignette"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-vignette">33.91 vignette</a></h2>
+
+<p>Make or reverse a natural vignetting effect.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>angle, a</samp>&rsquo;</dt>
+<dd><p>Set lens angle expression as a number of radians.
+</p>
+<p>The value is clipped in the <code>[0,PI/2]</code> range.
+</p>
+<p>Default value: <code>&quot;PI/5&quot;</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>x0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y0</samp>&rsquo;</dt>
+<dd><p>Set center coordinates expressions. Respectively <code>&quot;w/2&quot;</code> and <code>&quot;h/2&quot;</code>
+by default.
+</p>
+</dd>
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Set forward/backward mode.
+</p>
+<p>Available modes are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>forward</samp>&rsquo;</dt>
+<dd><p>The larger the distance from the central point, the darker the image becomes.
+</p>
+</dd>
+<dt> &lsquo;<samp>backward</samp>&rsquo;</dt>
+<dd><p>The larger the distance from the central point, the brighter the image becomes.
+This can be used to reverse a vignette effect, though there is no automatic
+detection to extract the lens &lsquo;<samp>angle</samp>&rsquo; and other settings (yet). It can
+also be used to create a burning effect.
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>forward</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>eval</samp>&rsquo;</dt>
+<dd><p>Set evaluation mode for the expressions (&lsquo;<samp>angle</samp>&rsquo;, &lsquo;<samp>x0</samp>&rsquo;, &lsquo;<samp>y0</samp>&rsquo;).
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>init</samp>&rsquo;</dt>
+<dd><p>Evaluate expressions only once during the filter initialization.
+</p>
+</dd>
+<dt> &lsquo;<samp>frame</samp>&rsquo;</dt>
+<dd><p>Evaluate expressions for each incoming frame. This is way slower than the
+&lsquo;<samp>init</samp>&rsquo; mode since it requires all the scalers to be re-computed, but it
+allows advanced dynamic expressions.
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>init</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>dither</samp>&rsquo;</dt>
+<dd><p>Set dithering to reduce the circular banding effects. Default is <code>1</code>
+(enabled).
+</p>
+</dd>
+<dt> &lsquo;<samp>aspect</samp>&rsquo;</dt>
+<dd><p>Set vignette aspect. This setting allows to adjust the shape of the vignette.
+Setting this value to the SAR of the input will make a rectangular vignetting
+following the dimensions of the video.
+</p>
+<p>Default is <code>1/1</code>.
+</p></dd>
+</dl>
+
+<a name="Expressions"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Expressions">33.91.1 Expressions</a></h3>
+
+<p>The &lsquo;<samp>alpha</samp>&rsquo;, &lsquo;<samp>x0</samp>&rsquo; and &lsquo;<samp>y0</samp>&rsquo; expressions can contain the
+following parameters.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>input width and height
+</p>
+</dd>
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>the number of input frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
+<dd><p>the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
+<var>TB</var> units, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>r</samp>&rsquo;</dt>
+<dd><p>frame rate of the input video, NAN if the input frame rate is unknown
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>the PTS (Presentation TimeStamp) of the filtered video frame,
+expressed in seconds, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>tb</samp>&rsquo;</dt>
+<dd><p>time base of the input video
+</p></dd>
+</dl>
+
+
+<a name="Examples-45"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-45">33.91.2 Examples</a></h3>
+
+<ul>
+<li>
+Apply simple strong vignetting effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">vignette=PI/4
+</pre></td></tr></table>
+
+</li><li>
+Make a flickering vignetting:
+<table><tr><td>&nbsp;</td><td><pre class="example">vignette='PI/4+random(1)*PI/50':eval=frame
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="w3fdif"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-w3fdif">33.92 w3fdif</a></h2>
+
+<p>Deinterlace the input video (&quot;w3fdif&quot; stands for &quot;Weston 3 Field
+Deinterlacing Filter&quot;).
+</p>
+<p>Based on the process described by Martin Weston for BBC R&amp;D, and
+implemented based on the de-interlace algorithm written by Jim
+Easterbrook for BBC R&amp;D, the Weston 3 field deinterlacing filter
+uses filter coefficients calculated by BBC R&amp;D.
+</p>
+<p>There are two sets of filter coefficients, so called &quot;simple&quot;:
+and &quot;complex&quot;. Which set of filter coefficients is used can
+be set by passing an optional parameter:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filter</samp>&rsquo;</dt>
+<dd><p>Set the interlacing filter coefficients. Accepts one of the following values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>simple</samp>&rsquo;</dt>
+<dd><p>Simple filter coefficient set.
+</p></dd>
+<dt> &lsquo;<samp>complex</samp>&rsquo;</dt>
+<dd><p>More-complex filter coefficient set.
+</p></dd>
+</dl>
+<p>Default value is &lsquo;<samp>complex</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>deint</samp>&rsquo;</dt>
+<dd><p>Specify which frames to deinterlace. Accept one of the following values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>all</samp>&rsquo;</dt>
+<dd><p>Deinterlace all frames,
+</p></dd>
+<dt> &lsquo;<samp>interlaced</samp>&rsquo;</dt>
+<dd><p>Only deinterlace frames marked as interlaced.
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>all</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<p><a name="yadif"></a>
+</p><a name="yadif-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-yadif-1">33.93 yadif</a></h2>
+
+<p>Deinterlace the input video (&quot;yadif&quot; means &quot;yet another deinterlacing
+filter&quot;).
+</p>
+<p>This filter accepts the following options:
+</p>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>The interlacing mode to adopt, accepts one of the following values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>0, send_frame</samp>&rsquo;</dt>
+<dd><p>output 1 frame for each frame
+</p></dd>
+<dt> &lsquo;<samp>1, send_field</samp>&rsquo;</dt>
+<dd><p>output 1 frame for each field
+</p></dd>
+<dt> &lsquo;<samp>2, send_frame_nospatial</samp>&rsquo;</dt>
+<dd><p>like <code>send_frame</code> but skip spatial interlacing check
+</p></dd>
+<dt> &lsquo;<samp>3, send_field_nospatial</samp>&rsquo;</dt>
+<dd><p>like <code>send_field</code> but skip spatial interlacing check
+</p></dd>
+</dl>
+
+<p>Default value is <code>send_frame</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>parity</samp>&rsquo;</dt>
+<dd><p>The picture field parity assumed for the input interlaced video, accepts one of
+the following values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>0, tff</samp>&rsquo;</dt>
+<dd><p>assume top field first
+</p></dd>
+<dt> &lsquo;<samp>1, bff</samp>&rsquo;</dt>
+<dd><p>assume bottom field first
+</p></dd>
+<dt> &lsquo;<samp>-1, auto</samp>&rsquo;</dt>
+<dd><p>enable automatic detection
+</p></dd>
+</dl>
+
+<p>Default value is <code>auto</code>.
+If interlacing is unknown or decoder does not export this information,
+top field first will be assumed.
+</p>
+</dd>
+<dt> &lsquo;<samp>deint</samp>&rsquo;</dt>
+<dd><p>Specify which frames to deinterlace. Accept one of the following
+values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>0, all</samp>&rsquo;</dt>
+<dd><p>deinterlace all frames
+</p></dd>
+<dt> &lsquo;<samp>1, interlaced</samp>&rsquo;</dt>
+<dd><p>only deinterlace frames marked as interlaced
+</p></dd>
+</dl>
+
+<p>Default value is <code>all</code>.
+</p></dd>
+</dl>
+
+
+<a name="Video-Sources"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Video-Sources">34. Video Sources</a></h1>
+
+<p>Below is a description of the currently available video sources.
+</p>
+<a name="buffer"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-buffer">34.1 buffer</a></h2>
+
+<p>Buffer video frames, and make them available to the filter chain.
+</p>
+<p>This source is mainly intended for a programmatic use, in particular
+through the interface defined in &lsquo;<tt>libavfilter/vsrc_buffer.h</tt>&rsquo;.
+</p>
+<p>This source accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>video_size</samp>&rsquo;</dt>
+<dd><p>Specify the size (width and height) of the buffered video frames. For the
+syntax of this option, check the &quot;Video size&quot; section in the ffmpeg-utils
+manual.
+</p>
+</dd>
+<dt> &lsquo;<samp>width</samp>&rsquo;</dt>
+<dd><p>Input video width.
+</p>
+</dd>
+<dt> &lsquo;<samp>height</samp>&rsquo;</dt>
+<dd><p>Input video height.
+</p>
+</dd>
+<dt> &lsquo;<samp>pix_fmt</samp>&rsquo;</dt>
+<dd><p>A string representing the pixel format of the buffered video frames.
+It may be a number corresponding to a pixel format, or a pixel format
+name.
+</p>
+</dd>
+<dt> &lsquo;<samp>time_base</samp>&rsquo;</dt>
+<dd><p>Specify the timebase assumed by the timestamps of the buffered frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>frame_rate</samp>&rsquo;</dt>
+<dd><p>Specify the frame rate expected for the video stream.
+</p>
+</dd>
+<dt> &lsquo;<samp>pixel_aspect, sar</samp>&rsquo;</dt>
+<dd><p>Specify the sample aspect ratio assumed by the video frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>sws_param</samp>&rsquo;</dt>
+<dd><p>Specify the optional parameters to be used for the scale filter which
+is automatically inserted when an input change is detected in the
+input size or format.
+</p></dd>
+</dl>
+
+<p>For example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
+</pre></td></tr></table>
+
+<p>will instruct the source to accept video frames with size 320x240 and
+with format &quot;yuv410p&quot;, assuming 1/24 as the timestamps timebase and
+square pixels (1:1 sample aspect ratio).
+Since the pixel format with name &quot;yuv410p&quot; corresponds to the number 6
+(check the enum AVPixelFormat definition in &lsquo;<tt>libavutil/pixfmt.h</tt>&rsquo;),
+this example corresponds to:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
+</pre></td></tr></table>
+
+<p>Alternatively, the options can be specified as a flat string, but this
+syntax is deprecated:
+</p>
+<p><var>width</var>:<var>height</var>:<var>pix_fmt</var>:<var>time_base.num</var>:<var>time_base.den</var>:<var>pixel_aspect.num</var>:<var>pixel_aspect.den</var>[:<var>sws_param</var>]
+</p>
+<a name="cellauto"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-cellauto">34.2 cellauto</a></h2>
+
+<p>Create a pattern generated by an elementary cellular automaton.
+</p>
+<p>The initial state of the cellular automaton can be defined through the
+&lsquo;<samp>filename</samp>&rsquo;, and &lsquo;<samp>pattern</samp>&rsquo; options. If such options are
+not specified an initial state is created randomly.
+</p>
+<p>At each new frame a new row in the video is filled with the result of
+the cellular automaton next generation. The behavior when the whole
+frame is filled is defined by the &lsquo;<samp>scroll</samp>&rsquo; option.
+</p>
+<p>This source accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filename, f</samp>&rsquo;</dt>
+<dd><p>Read the initial cellular automaton state, i.e. the starting row, from
+the specified file.
+In the file, each non-whitespace character is considered an alive
+cell, a newline will terminate the row, and further characters in the
+file will be ignored.
+</p>
+</dd>
+<dt> &lsquo;<samp>pattern, p</samp>&rsquo;</dt>
+<dd><p>Read the initial cellular automaton state, i.e. the starting row, from
+the specified string.
+</p>
+<p>Each non-whitespace character in the string is considered an alive
+cell, a newline will terminate the row, and further characters in the
+string will be ignored.
+</p>
+</dd>
+<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
+<dd><p>Set the video rate, that is the number of frames generated per second.
+Default is 25.
+</p>
+</dd>
+<dt> &lsquo;<samp>random_fill_ratio, ratio</samp>&rsquo;</dt>
+<dd><p>Set the random fill ratio for the initial cellular automaton row. It
+is a floating point number value ranging from 0 to 1, defaults to
+1/PHI.
+</p>
+<p>This option is ignored when a file or a pattern is specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>random_seed, seed</samp>&rsquo;</dt>
+<dd><p>Set the seed for filling randomly the initial row, must be an integer
+included between 0 and UINT32_MAX. If not specified, or if explicitly
+set to -1, the filter will try to use a good random seed on a best
+effort basis.
+</p>
+</dd>
+<dt> &lsquo;<samp>rule</samp>&rsquo;</dt>
+<dd><p>Set the cellular automaton rule, it is a number ranging from 0 to 255.
+Default value is 110.
+</p>
+</dd>
+<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
+<dd><p>Set the size of the output video. For the syntax of this option, check
+the &quot;Video size&quot; section in the ffmpeg-utils manual.
+</p>
+<p>If &lsquo;<samp>filename</samp>&rsquo; or &lsquo;<samp>pattern</samp>&rsquo; is specified, the size is set
+by default to the width of the specified initial state row, and the
+height is set to <var>width</var> * PHI.
+</p>
+<p>If &lsquo;<samp>size</samp>&rsquo; is set, it must contain the width of the specified
+pattern string, and the specified pattern will be centered in the
+larger row.
+</p>
+<p>If a filename or a pattern string is not specified, the size value
+defaults to &quot;320x518&quot; (used for a randomly generated initial state).
+</p>
+</dd>
+<dt> &lsquo;<samp>scroll</samp>&rsquo;</dt>
+<dd><p>If set to 1, scroll the output upward when all the rows in the output
+have been already filled. If set to 0, the new generated row will be
+written over the top row just after the bottom row is filled.
+Defaults to 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_full, full</samp>&rsquo;</dt>
+<dd><p>If set to 1, completely fill the output with generated rows before
+outputting the first frame.
+This is the default behavior, for disabling set the value to 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>stitch</samp>&rsquo;</dt>
+<dd><p>If set to 1, stitch the left and right row edges together.
+This is the default behavior, for disabling set the value to 0.
+</p></dd>
+</dl>
+
+<a name="Examples-38"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-38">34.2.1 Examples</a></h3>
+
+<ul>
+<li>
+Read the initial state from &lsquo;<tt>pattern</tt>&rsquo;, and specify an output of
+size 200x400.
+<table><tr><td>&nbsp;</td><td><pre class="example">cellauto=f=pattern:s=200x400
+</pre></td></tr></table>
+
+</li><li>
+Generate a random initial row with a width of 200 cells, with a fill
+ratio of 2/3:
+<table><tr><td>&nbsp;</td><td><pre class="example">cellauto=ratio=2/3:s=200x200
+</pre></td></tr></table>
+
+</li><li>
+Create a pattern generated by rule 18 starting by a single alive cell
+centered on an initial row with width 100:
+<table><tr><td>&nbsp;</td><td><pre class="example">cellauto=p=@:s=100x400:full=0:rule=18
+</pre></td></tr></table>
+
+</li><li>
+Specify a more elaborated initial pattern:
+<table><tr><td>&nbsp;</td><td><pre class="example">cellauto=p='@@ @ @@':s=100x400:full=0:rule=18
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="mandelbrot"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-mandelbrot">34.3 mandelbrot</a></h2>
+
+<p>Generate a Mandelbrot set fractal, and progressively zoom towards the
+point specified with <var>start_x</var> and <var>start_y</var>.
+</p>
+<p>This source accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>end_pts</samp>&rsquo;</dt>
+<dd><p>Set the terminal pts value. Default value is 400.
+</p>
+</dd>
+<dt> &lsquo;<samp>end_scale</samp>&rsquo;</dt>
+<dd><p>Set the terminal scale value.
+Must be a floating point value. Default value is 0.3.
+</p>
+</dd>
+<dt> &lsquo;<samp>inner</samp>&rsquo;</dt>
+<dd><p>Set the inner coloring mode, that is the algorithm used to draw the
+Mandelbrot fractal internal region.
+</p>
+<p>It shall assume one of the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>black</samp>&rsquo;</dt>
+<dd><p>Set black mode.
+</p></dd>
+<dt> &lsquo;<samp>convergence</samp>&rsquo;</dt>
+<dd><p>Show time until convergence.
+</p></dd>
+<dt> &lsquo;<samp>mincol</samp>&rsquo;</dt>
+<dd><p>Set color based on point closest to the origin of the iterations.
+</p></dd>
+<dt> &lsquo;<samp>period</samp>&rsquo;</dt>
+<dd><p>Set period mode.
+</p></dd>
+</dl>
+
+<p>Default value is <var>mincol</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>bailout</samp>&rsquo;</dt>
+<dd><p>Set the bailout value. Default value is 10.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>maxiter</samp>&rsquo;</dt>
+<dd><p>Set the maximum of iterations performed by the rendering
+algorithm. Default value is 7189.
+</p>
+</dd>
+<dt> &lsquo;<samp>outer</samp>&rsquo;</dt>
+<dd><p>Set outer coloring mode.
+It shall assume one of following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>iteration_count</samp>&rsquo;</dt>
+<dd><p>Set iteration cound mode.
+</p></dd>
+<dt> &lsquo;<samp>normalized_iteration_count</samp>&rsquo;</dt>
+<dd><p>set normalized iteration count mode.
+</p></dd>
+</dl>
+<p>Default value is <var>normalized_iteration_count</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
+<dd><p>Set frame rate, expressed as number of frames per second. Default
+value is &quot;25&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
+<dd><p>Set frame size. For the syntax of this option, check the &quot;Video
+size&quot; section in the ffmpeg-utils manual. Default value is &quot;640x480&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_scale</samp>&rsquo;</dt>
+<dd><p>Set the initial scale value. Default value is 3.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_x</samp>&rsquo;</dt>
+<dd><p>Set the initial x position. Must be a floating point value between
+-100 and 100. Default value is -0.743643887037158704752191506114774.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_y</samp>&rsquo;</dt>
+<dd><p>Set the initial y position. Must be a floating point value between
+-100 and 100. Default value is -0.131825904205311970493132056385139.
+</p></dd>
+</dl>
+
+<a name="mptestsrc"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-mptestsrc">34.4 mptestsrc</a></h2>
+
+<p>Generate various test patterns, as generated by the MPlayer test filter.
+</p>
+<p>The size of the generated video is fixed, and is 256x256.
+This source is useful in particular for testing encoding features.
+</p>
+<p>This source accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
+<dd><p>Specify the frame rate of the sourced video, as the number of frames
+generated per second. It has to be a string in the format
+<var>frame_rate_num</var>/<var>frame_rate_den</var>, an integer number, a float
+number or a valid video frame rate abbreviation. The default value is
+&quot;25&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
+<dd><p>Set the video duration of the sourced video. The accepted syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[-]HH:MM:SS[.m...]
+[-]S+[.m...]
+</pre></td></tr></table>
+<p>See also the function <code>av_parse_time()</code>.
+</p>
+<p>If not specified, or the expressed duration is negative, the video is
+supposed to be generated forever.
+</p>
+</dd>
+<dt> &lsquo;<samp>test, t</samp>&rsquo;</dt>
+<dd>
+<p>Set the number or the name of the test to perform. Supported tests are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>dc_luma</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dc_chroma</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>freq_luma</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>freq_chroma</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>amp_luma</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>amp_chroma</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>cbp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mv</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ring1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ring2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>all</samp>&rsquo;</dt>
+</dl>
+
+<p>Default value is &quot;all&quot;, which will cycle through the list of all tests.
+</p></dd>
+</dl>
+
+<p>For example the following:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">testsrc=t=dc_luma
+</pre></td></tr></table>
+
+<p>will generate a &quot;dc_luma&quot; test pattern.
+</p>
+<a name="frei0r_005fsrc"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-frei0r_005fsrc">34.5 frei0r_src</a></h2>
+
+<p>Provide a frei0r source.
+</p>
+<p>To enable compilation of this filter you need to install the frei0r
+header and configure FFmpeg with <code>--enable-frei0r</code>.
+</p>
+<p>This source accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>size</samp>&rsquo;</dt>
+<dd><p>The size of the video to generate. For the syntax of this option, check the
+&quot;Video size&quot; section in the ffmpeg-utils manual.
+</p>
+</dd>
+<dt> &lsquo;<samp>framerate</samp>&rsquo;</dt>
+<dd><p>Framerate of the generated video, may be a string of the form
+<var>num</var>/<var>den</var> or a frame rate abbreviation.
+</p>
+</dd>
+<dt> &lsquo;<samp>filter_name</samp>&rsquo;</dt>
+<dd><p>The name to the frei0r source to load. For more information regarding frei0r and
+how to set the parameters read the section <a href="#frei0r">frei0r</a> in the description of
+the video filters.
+</p>
+</dd>
+<dt> &lsquo;<samp>filter_params</samp>&rsquo;</dt>
+<dd><p>A &rsquo;|&rsquo;-separated list of parameters to pass to the frei0r source.
+</p>
+</dd>
+</dl>
+
+<p>For example, to generate a frei0r partik0l source with size 200x200
+and frame rate 10 which is overlayed on the overlay filter main input:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
+</pre></td></tr></table>
+
+<a name="life"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-life">34.6 life</a></h2>
+
+<p>Generate a life pattern.
+</p>
+<p>This source is based on a generalization of John Conway&rsquo;s life game.
+</p>
+<p>The sourced input represents a life grid, each pixel represents a cell
+which can be in one of two possible states, alive or dead. Every cell
+interacts with its eight neighbours, which are the cells that are
+horizontally, vertically, or diagonally adjacent.
+</p>
+<p>At each interaction the grid evolves according to the adopted rule,
+which specifies the number of neighbor alive cells which will make a
+cell stay alive or born. The &lsquo;<samp>rule</samp>&rsquo; option allows to specify
+the rule to adopt.
+</p>
+<p>This source accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filename, f</samp>&rsquo;</dt>
+<dd><p>Set the file from which to read the initial grid state. In the file,
+each non-whitespace character is considered an alive cell, and newline
+is used to delimit the end of each row.
+</p>
+<p>If this option is not specified, the initial grid is generated
+randomly.
+</p>
+</dd>
+<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
+<dd><p>Set the video rate, that is the number of frames generated per second.
+Default is 25.
+</p>
+</dd>
+<dt> &lsquo;<samp>random_fill_ratio, ratio</samp>&rsquo;</dt>
+<dd><p>Set the random fill ratio for the initial random grid. It is a
+floating point number value ranging from 0 to 1, defaults to 1/PHI.
+It is ignored when a file is specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>random_seed, seed</samp>&rsquo;</dt>
+<dd><p>Set the seed for filling the initial random grid, must be an integer
+included between 0 and UINT32_MAX. If not specified, or if explicitly
+set to -1, the filter will try to use a good random seed on a best
+effort basis.
+</p>
+</dd>
+<dt> &lsquo;<samp>rule</samp>&rsquo;</dt>
+<dd><p>Set the life rule.
+</p>
+<p>A rule can be specified with a code of the kind &quot;S<var>NS</var>/B<var>NB</var>&quot;,
+where <var>NS</var> and <var>NB</var> are sequences of numbers in the range 0-8,
+<var>NS</var> specifies the number of alive neighbor cells which make a
+live cell stay alive, and <var>NB</var> the number of alive neighbor cells
+which make a dead cell to become alive (i.e. to &quot;born&quot;).
+&quot;s&quot; and &quot;b&quot; can be used in place of &quot;S&quot; and &quot;B&quot;, respectively.
+</p>
+<p>Alternatively a rule can be specified by an 18-bits integer. The 9
+high order bits are used to encode the next cell state if it is alive
+for each number of neighbor alive cells, the low order bits specify
+the rule for &quot;borning&quot; new cells. Higher order bits encode for an
+higher number of neighbor cells.
+For example the number 6153 = <code>(12&lt;&lt;9)+9</code> specifies a stay alive
+rule of 12 and a born rule of 9, which corresponds to &quot;S23/B03&quot;.
+</p>
+<p>Default value is &quot;S23/B3&quot;, which is the original Conway&rsquo;s game of life
+rule, and will keep a cell alive if it has 2 or 3 neighbor alive
+cells, and will born a new cell if there are three alive cells around
+a dead cell.
+</p>
+</dd>
+<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
+<dd><p>Set the size of the output video. For the syntax of this option, check the
+&quot;Video size&quot; section in the ffmpeg-utils manual.
+</p>
+<p>If &lsquo;<samp>filename</samp>&rsquo; is specified, the size is set by default to the
+same size of the input file. If &lsquo;<samp>size</samp>&rsquo; is set, it must contain
+the size specified in the input file, and the initial grid defined in
+that file is centered in the larger resulting area.
+</p>
+<p>If a filename is not specified, the size value defaults to &quot;320x240&quot;
+(used for a randomly generated initial grid).
+</p>
+</dd>
+<dt> &lsquo;<samp>stitch</samp>&rsquo;</dt>
+<dd><p>If set to 1, stitch the left and right grid edges together, and the
+top and bottom edges also. Defaults to 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>mold</samp>&rsquo;</dt>
+<dd><p>Set cell mold speed. If set, a dead cell will go from &lsquo;<samp>death_color</samp>&rsquo; to
+&lsquo;<samp>mold_color</samp>&rsquo; with a step of &lsquo;<samp>mold</samp>&rsquo;. &lsquo;<samp>mold</samp>&rsquo; can have a
+value from 0 to 255.
+</p>
+</dd>
+<dt> &lsquo;<samp>life_color</samp>&rsquo;</dt>
+<dd><p>Set the color of living (or new born) cells.
+</p>
+</dd>
+<dt> &lsquo;<samp>death_color</samp>&rsquo;</dt>
+<dd><p>Set the color of dead cells. If &lsquo;<samp>mold</samp>&rsquo; is set, this is the first color
+used to represent a dead cell.
+</p>
+</dd>
+<dt> &lsquo;<samp>mold_color</samp>&rsquo;</dt>
+<dd><p>Set mold color, for definitely dead and moldy cells.
+</p>
+<p>For the syntax of these 3 color options, check the &quot;Color&quot; section in the
+ffmpeg-utils manual.
+</p></dd>
+</dl>
+
+<a name="Examples-21"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-21">34.6.1 Examples</a></h3>
+
+<ul>
+<li>
+Read a grid from &lsquo;<tt>pattern</tt>&rsquo;, and center it on a grid of size
+300x300 pixels:
+<table><tr><td>&nbsp;</td><td><pre class="example">life=f=pattern:s=300x300
+</pre></td></tr></table>
+
+</li><li>
+Generate a random grid of size 200x200, with a fill ratio of 2/3:
+<table><tr><td>&nbsp;</td><td><pre class="example">life=ratio=2/3:s=200x200
+</pre></td></tr></table>
+
+</li><li>
+Specify a custom rule for evolving a randomly generated grid:
+<table><tr><td>&nbsp;</td><td><pre class="example">life=rule=S14/B34
+</pre></td></tr></table>
+
+</li><li>
+Full example with slow death effect (mold) using <code>ffplay</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="color"></a>
+<a name="haldclutsrc"></a>
+<a name="nullsrc"></a>
+<a name="rgbtestsrc"></a>
+<a name="smptebars"></a>
+<a name="smptehdbars"></a>
+<a name="testsrc"></a>
+</p><a name="color_002c-haldclutsrc_002c-nullsrc_002c-rgbtestsrc_002c-smptebars_002c-smptehdbars_002c-testsrc"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-color_002c-haldclutsrc_002c-nullsrc_002c-rgbtestsrc_002c-smptebars_002c-smptehdbars_002c-testsrc">34.7 color, haldclutsrc, nullsrc, rgbtestsrc, smptebars, smptehdbars, testsrc</a></h2>
+
+<p>The <code>color</code> source provides an uniformly colored input.
+</p>
+<p>The <code>haldclutsrc</code> source provides an identity Hald CLUT. See also
+<a href="#haldclut">haldclut</a> filter.
+</p>
+<p>The <code>nullsrc</code> source returns unprocessed video frames. It is
+mainly useful to be employed in analysis / debugging tools, or as the
+source for filters which ignore the input data.
+</p>
+<p>The <code>rgbtestsrc</code> source generates an RGB test pattern useful for
+detecting RGB vs BGR issues. You should see a red, green and blue
+stripe from top to bottom.
+</p>
+<p>The <code>smptebars</code> source generates a color bars pattern, based on
+the SMPTE Engineering Guideline EG 1-1990.
+</p>
+<p>The <code>smptehdbars</code> source generates a color bars pattern, based on
+the SMPTE RP 219-2002.
+</p>
+<p>The <code>testsrc</code> source generates a test video pattern, showing a
+color pattern, a scrolling gradient and a timestamp. This is mainly
+intended for testing purposes.
+</p>
+<p>The sources accept the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>color, c</samp>&rsquo;</dt>
+<dd><p>Specify the color of the source, only available in the <code>color</code>
+source. For the syntax of this option, check the &quot;Color&quot; section in the
+ffmpeg-utils manual.
+</p>
+</dd>
+<dt> &lsquo;<samp>level</samp>&rsquo;</dt>
+<dd><p>Specify the level of the Hald CLUT, only available in the <code>haldclutsrc</code>
+source. A level of <code>N</code> generates a picture of <code>N*N*N</code> by <code>N*N*N</code>
+pixels to be used as identity matrix for 3D lookup tables. Each component is
+coded on a <code>1/(N*N)</code> scale.
+</p>
+</dd>
+<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
+<dd><p>Specify the size of the sourced video. For the syntax of this option, check the
+&quot;Video size&quot; section in the ffmpeg-utils manual. The default value is
+&quot;320x240&quot;.
+</p>
+<p>This option is not available with the <code>haldclutsrc</code> filter.
+</p>
+</dd>
+<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
+<dd><p>Specify the frame rate of the sourced video, as the number of frames
+generated per second. It has to be a string in the format
+<var>frame_rate_num</var>/<var>frame_rate_den</var>, an integer number, a float
+number or a valid video frame rate abbreviation. The default value is
+&quot;25&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
+<dd><p>Set the sample aspect ratio of the sourced video.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
+<dd><p>Set the video duration of the sourced video. The accepted syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[-]HH[:MM[:SS[.m...]]]
+[-]S+[.m...]
+</pre></td></tr></table>
+<p>See also the function <code>av_parse_time()</code>.
+</p>
+<p>If not specified, or the expressed duration is negative, the video is
+supposed to be generated forever.
+</p>
+</dd>
+<dt> &lsquo;<samp>decimals, n</samp>&rsquo;</dt>
+<dd><p>Set the number of decimals to show in the timestamp, only available in the
+<code>testsrc</code> source.
+</p>
+<p>The displayed timestamp value will correspond to the original
+timestamp value multiplied by the power of 10 of the specified
+value. Default value is 0.
+</p></dd>
+</dl>
+
+<p>For example the following:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">testsrc=duration=5.3:size=qcif:rate=10
+</pre></td></tr></table>
+
+<p>will generate a video with a duration of 5.3 seconds, with size
+176x144 and a frame rate of 10 frames per second.
+</p>
+<p>The following graph description will generate a red source
+with an opacity of 0.2, with size &quot;qcif&quot; and a frame rate of 10
+frames per second.
+</p><table><tr><td>&nbsp;</td><td><pre class="example">color=c=red@0.2:s=qcif:r=10
+</pre></td></tr></table>
+
+<p>If the input content is to be ignored, <code>nullsrc</code> can be used. The
+following command generates noise in the luminance plane by employing
+the <code>geq</code> filter:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">nullsrc=s=256x256, geq=random(1)*255:128:128
+</pre></td></tr></table>
+
+<a name="Commands-4"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Commands-4">34.7.1 Commands</a></h3>
+
+<p>The <code>color</code> source supports the following commands:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>c, color</samp>&rsquo;</dt>
+<dd><p>Set the color of the created image. Accepts the same syntax of the
+corresponding &lsquo;<samp>color</samp>&rsquo; option.
+</p></dd>
+</dl>
+
+
+<a name="Video-Sinks"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Video-Sinks">35. Video Sinks</a></h1>
+
+<p>Below is a description of the currently available video sinks.
+</p>
+<a name="buffersink"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-buffersink">35.1 buffersink</a></h2>
+
+<p>Buffer video frames, and make them available to the end of the filter
+graph.
+</p>
+<p>This sink is mainly intended for a programmatic use, in particular
+through the interface defined in &lsquo;<tt>libavfilter/buffersink.h</tt>&rsquo;
+or the options system.
+</p>
+<p>It accepts a pointer to an AVBufferSinkContext structure, which
+defines the incoming buffers&rsquo; formats, to be passed as the opaque
+parameter to <code>avfilter_init_filter</code> for initialization.
+</p>
+<a name="nullsink"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-nullsink">35.2 nullsink</a></h2>
+
+<p>Null video sink, do absolutely nothing with the input video. It is
+mainly useful as a template and to be employed in analysis / debugging
+tools.
+</p>
+
+<a name="Multimedia-Filters"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Multimedia-Filters">36. Multimedia Filters</a></h1>
+
+<p>Below is a description of the currently available multimedia filters.
+</p>
+<a name="avectorscope"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-avectorscope">36.1 avectorscope</a></h2>
+
+<p>Convert input audio to a video output, representing the audio vector
+scope.
+</p>
+<p>The filter is used to measure the difference between channels of stereo
+audio stream. A monoaural signal, consisting of identical left and right
+signal, results in straight vertical line. Any stereo separation is visible
+as a deviation from this line, creating a Lissajous figure.
+If the straight (or deviation from it) but horizontal line appears this
+indicates that the left and right channels are out of phase.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>mode, m</samp>&rsquo;</dt>
+<dd><p>Set the vectorscope mode.
+</p>
+<p>Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>lissajous</samp>&rsquo;</dt>
+<dd><p>Lissajous rotated by 45 degrees.
+</p>
+</dd>
+<dt> &lsquo;<samp>lissajous_xy</samp>&rsquo;</dt>
+<dd><p>Same as above but not rotated.
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>lissajous</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
+<dd><p>Set the video size for the output. For the syntax of this option, check the &quot;Video size&quot;
+section in the ffmpeg-utils manual. Default value is <code>400x400</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
+<dd><p>Set the output frame rate. Default value is <code>25</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>rc</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>gc</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bc</samp>&rsquo;</dt>
+<dd><p>Specify the red, green and blue contrast. Default values are <code>40</code>, <code>160</code> and <code>80</code>.
+Allowed range is <code>[0, 255]</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>rf</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>gf</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bf</samp>&rsquo;</dt>
+<dd><p>Specify the red, green and blue fade. Default values are <code>15</code>, <code>10</code> and <code>5</code>.
+Allowed range is <code>[0, 255]</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>zoom</samp>&rsquo;</dt>
+<dd><p>Set the zoom factor. Default value is <code>1</code>. Allowed range is <code>[1, 10]</code>.
+</p></dd>
+</dl>
+
+<a name="Examples"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples">36.1.1 Examples</a></h3>
+
+<ul>
+<li>
+Complete example using <code>ffplay</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
+             [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
+</pre></td></tr></table>
+</li></ul>
+
+<a name="concat-2"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-concat-2">36.2 concat</a></h2>
+
+<p>Concatenate audio and video streams, joining them together one after the
+other.
+</p>
+<p>The filter works on segments of synchronized video and audio streams. All
+segments must have the same number of streams of each type, and that will
+also be the number of streams at output.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>Set the number of segments. Default is 2.
+</p>
+</dd>
+<dt> &lsquo;<samp>v</samp>&rsquo;</dt>
+<dd><p>Set the number of output video streams, that is also the number of video
+streams in each segment. Default is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>Set the number of output audio streams, that is also the number of video
+streams in each segment. Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>unsafe</samp>&rsquo;</dt>
+<dd><p>Activate unsafe mode: do not fail if segments have a different format.
+</p>
+</dd>
+</dl>
+
+<p>The filter has <var>v</var>+<var>a</var> outputs: first <var>v</var> video outputs, then
+<var>a</var> audio outputs.
+</p>
+<p>There are <var>n</var>x(<var>v</var>+<var>a</var>) inputs: first the inputs for the first
+segment, in the same order as the outputs, then the inputs for the second
+segment, etc.
+</p>
+<p>Related streams do not always have exactly the same duration, for various
+reasons including codec frame size or sloppy authoring. For that reason,
+related synchronized streams (e.g. a video and its audio track) should be
+concatenated at once. The concat filter will use the duration of the longest
+stream in each segment (except the last one), and if necessary pad shorter
+audio streams with silence.
+</p>
+<p>For this filter to work correctly, all segments must start at timestamp 0.
+</p>
+<p>All corresponding streams must have the same parameters in all segments; the
+filtering system will automatically select a common pixel format for video
+streams, and a common sample format, sample rate and channel layout for
+audio streams, but other settings, such as resolution, must be converted
+explicitly by the user.
+</p>
+<p>Different frame rates are acceptable but will result in variable frame rate
+at output; be sure to configure the output file to handle it.
+</p>
+<a name="Examples-40"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-40">36.2.1 Examples</a></h3>
+
+<ul>
+<li>
+Concatenate an opening, an episode and an ending, all in bilingual version
+(video in stream 0, audio in streams 1 and 2):
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
+  '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
+   concat=n=3:v=1:a=2 [v] [a1] [a2]' \
+  -map '[v]' -map '[a1]' -map '[a2]' output.mkv
+</pre></td></tr></table>
+
+</li><li>
+Concatenate two parts, handling audio and video separately, using the
+(a)movie sources, and adjusting the resolution:
+<table><tr><td>&nbsp;</td><td><pre class="example">movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
+movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
+[v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
+</pre></td></tr></table>
+<p>Note that a desync will happen at the stitch if the audio and video streams
+do not have exactly the same duration in the first file.
+</p>
+</li></ul>
+
+<a name="ebur128"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-ebur128">36.3 ebur128</a></h2>
+
+<p>EBU R128 scanner filter. This filter takes an audio stream as input and outputs
+it unchanged. By default, it logs a message at a frequency of 10Hz with the
+Momentary loudness (identified by <code>M</code>), Short-term loudness (<code>S</code>),
+Integrated loudness (<code>I</code>) and Loudness Range (<code>LRA</code>).
+</p>
+<p>The filter also has a video output (see the <var>video</var> option) with a real
+time graph to observe the loudness evolution. The graphic contains the logged
+message mentioned above, so it is not printed anymore when this option is set,
+unless the verbose logging is set. The main graphing area contains the
+short-term loudness (3 seconds of analysis), and the gauge on the right is for
+the momentary loudness (400 milliseconds).
+</p>
+<p>More information about the Loudness Recommendation EBU R128 on
+<a href="http://tech.ebu.ch/loudness">http://tech.ebu.ch/loudness</a>.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>video</samp>&rsquo;</dt>
+<dd><p>Activate the video output. The audio stream is passed unchanged whether this
+option is set or no. The video stream will be the first output stream if
+activated. Default is <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>size</samp>&rsquo;</dt>
+<dd><p>Set the video size. This option is for video only. For the syntax of this
+option, check the &quot;Video size&quot; section in the ffmpeg-utils manual. Default
+and minimum resolution is <code>640x480</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>meter</samp>&rsquo;</dt>
+<dd><p>Set the EBU scale meter. Default is <code>9</code>. Common values are <code>9</code> and
+<code>18</code>, respectively for EBU scale meter +9 and EBU scale meter +18. Any
+other integer value between this range is allowed.
+</p>
+</dd>
+<dt> &lsquo;<samp>metadata</samp>&rsquo;</dt>
+<dd><p>Set metadata injection. If set to <code>1</code>, the audio input will be segmented
+into 100ms output frames, each of them containing various loudness information
+in metadata.  All the metadata keys are prefixed with <code>lavfi.r128.</code>.
+</p>
+<p>Default is <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>framelog</samp>&rsquo;</dt>
+<dd><p>Force the frame logging level.
+</p>
+<p>Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>info</samp>&rsquo;</dt>
+<dd><p>information logging level
+</p></dd>
+<dt> &lsquo;<samp>verbose</samp>&rsquo;</dt>
+<dd><p>verbose logging level
+</p></dd>
+</dl>
+
+<p>By default, the logging level is set to <var>info</var>. If the &lsquo;<samp>video</samp>&rsquo; or
+the &lsquo;<samp>metadata</samp>&rsquo; options are set, it switches to <var>verbose</var>.
+</p></dd>
+</dl>
+
+<a name="Examples-18"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-18">36.3.1 Examples</a></h3>
+
+<ul>
+<li>
+Real-time graph using <code>ffplay</code>, with a EBU scale meter +18:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi -i &quot;amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]&quot;
+</pre></td></tr></table>
+
+</li><li>
+Run an analysis with <code>ffmpeg</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
+</pre></td></tr></table>
+</li></ul>
+
+<a name="interleave_002c-ainterleave"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-interleave_002c-ainterleave">36.4 interleave, ainterleave</a></h2>
+
+<p>Temporally interleave frames from several inputs.
+</p>
+<p><code>interleave</code> works with video inputs, <code>ainterleave</code> with audio.
+</p>
+<p>These filters read frames from several inputs and send the oldest
+queued frame to the output.
+</p>
+<p>Input streams must have a well defined, monotonically increasing frame
+timestamp values.
+</p>
+<p>In order to submit one frame to output, these filters need to enqueue
+at least one frame for each input, so they cannot work in case one
+input is not yet terminated and will not receive incoming frames.
+</p>
+<p>For example consider the case when one input is a <code>select</code> filter
+which always drop input frames. The <code>interleave</code> filter will keep
+reading from that input, but it will never be able to send new frames
+to output until the input will send an end-of-stream signal.
+</p>
+<p>Also, depending on inputs synchronization, the filters will drop
+frames in case one input receives more frames than the other ones, and
+the queue is already filled.
+</p>
+<p>These filters accept the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>nb_inputs, n</samp>&rsquo;</dt>
+<dd><p>Set the number of different inputs, it is 2 by default.
+</p></dd>
+</dl>
+
+<a name="Examples-35"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-35">36.4.1 Examples</a></h3>
+
+<ul>
+<li>
+Interleave frames belonging to different streams using <code>ffmpeg</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex &quot;[0:v][1:v] interleave&quot; out.avi
+</pre></td></tr></table>
+
+</li><li>
+Add flickering blur effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
+</pre></td></tr></table>
+</li></ul>
+
+<a name="perms_002c-aperms"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-perms_002c-aperms">36.5 perms, aperms</a></h2>
+
+<p>Set read/write permissions for the output frames.
+</p>
+<p>These filters are mainly aimed at developers to test direct path in the
+following filter in the filtergraph.
+</p>
+<p>The filters accept the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Select the permissions mode.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>Do nothing. This is the default.
+</p></dd>
+<dt> &lsquo;<samp>ro</samp>&rsquo;</dt>
+<dd><p>Set all the output frames read-only.
+</p></dd>
+<dt> &lsquo;<samp>rw</samp>&rsquo;</dt>
+<dd><p>Set all the output frames directly writable.
+</p></dd>
+<dt> &lsquo;<samp>toggle</samp>&rsquo;</dt>
+<dd><p>Make the frame read-only if writable, and writable if read-only.
+</p></dd>
+<dt> &lsquo;<samp>random</samp>&rsquo;</dt>
+<dd><p>Set each output frame read-only or writable randomly.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>seed</samp>&rsquo;</dt>
+<dd><p>Set the seed for the <var>random</var> mode, must be an integer included between
+<code>0</code> and <code>UINT32_MAX</code>. If not specified, or if explicitly set to
+<code>-1</code>, the filter will try to use a good random seed on a best effort
+basis.
+</p></dd>
+</dl>
+
+<p>Note: in case of auto-inserted filter between the permission filter and the
+following one, the permission might not be received as expected in that
+following filter. Inserting a <a href="#format">format</a> or <a href="#aformat">aformat</a> filter before the
+perms/aperms filter can avoid this problem.
+</p>
+<a name="select_002c-aselect"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-select_002c-aselect">36.6 select, aselect</a></h2>
+
+<p>Select frames to pass in output.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>expr, e</samp>&rsquo;</dt>
+<dd><p>Set expression, which is evaluated for each input frame.
+</p>
+<p>If the expression is evaluated to zero, the frame is discarded.
+</p>
+<p>If the evaluation result is negative or NaN, the frame is sent to the
+first output; otherwise it is sent to the output with index
+<code>ceil(val)-1</code>, assuming that the input index starts from 0.
+</p>
+<p>For example a value of <code>1.2</code> corresponds to the output with index
+<code>ceil(1.2)-1 = 2-1 = 1</code>, that is the second output.
+</p>
+</dd>
+<dt> &lsquo;<samp>outputs, n</samp>&rsquo;</dt>
+<dd><p>Set the number of outputs. The output to which to send the selected
+frame is based on the result of the evaluation. Default value is 1.
+</p></dd>
+</dl>
+
+<p>The expression can contain the following constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>the sequential number of the filtered frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>selected_n</samp>&rsquo;</dt>
+<dd><p>the sequential number of the selected frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>prev_selected_n</samp>&rsquo;</dt>
+<dd><p>the sequential number of the last selected frame, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>TB</samp>&rsquo;</dt>
+<dd><p>timebase of the input timestamps
+</p>
+</dd>
+<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
+<dd><p>the PTS (Presentation TimeStamp) of the filtered video frame,
+expressed in <var>TB</var> units, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>the PTS (Presentation TimeStamp) of the filtered video frame,
+expressed in seconds, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>prev_pts</samp>&rsquo;</dt>
+<dd><p>the PTS of the previously filtered video frame, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>prev_selected_pts</samp>&rsquo;</dt>
+<dd><p>the PTS of the last previously filtered video frame, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>prev_selected_t</samp>&rsquo;</dt>
+<dd><p>the PTS of the last previously selected video frame, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>start_pts</samp>&rsquo;</dt>
+<dd><p>the PTS of the first video frame in the video, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>start_t</samp>&rsquo;</dt>
+<dd><p>the time of the first video frame in the video, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>pict_type <em>(video only)</em></samp>&rsquo;</dt>
+<dd><p>the type of the filtered frame, can assume one of the following
+values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>I</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>P</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>B</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>S</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>SI</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>SP</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>BI</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>interlace_type <em>(video only)</em></samp>&rsquo;</dt>
+<dd><p>the frame interlace type, can assume one of the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>PROGRESSIVE</samp>&rsquo;</dt>
+<dd><p>the frame is progressive (not interlaced)
+</p></dd>
+<dt> &lsquo;<samp>TOPFIRST</samp>&rsquo;</dt>
+<dd><p>the frame is top-field-first
+</p></dd>
+<dt> &lsquo;<samp>BOTTOMFIRST</samp>&rsquo;</dt>
+<dd><p>the frame is bottom-field-first
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>consumed_sample_n <em>(audio only)</em></samp>&rsquo;</dt>
+<dd><p>the number of selected samples before the current frame
+</p>
+</dd>
+<dt> &lsquo;<samp>samples_n <em>(audio only)</em></samp>&rsquo;</dt>
+<dd><p>the number of samples in the current frame
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate <em>(audio only)</em></samp>&rsquo;</dt>
+<dd><p>the input sample rate
+</p>
+</dd>
+<dt> &lsquo;<samp>key</samp>&rsquo;</dt>
+<dd><p>1 if the filtered frame is a key-frame, 0 otherwise
+</p>
+</dd>
+<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
+<dd><p>the position in the file of the filtered frame, -1 if the information
+is not available (e.g. for synthetic video)
+</p>
+</dd>
+<dt> &lsquo;<samp>scene <em>(video only)</em></samp>&rsquo;</dt>
+<dd><p>value between 0 and 1 to indicate a new scene; a low value reflects a low
+probability for the current frame to introduce a new scene, while a higher
+value means the current frame is more likely to be one (see the example below)
+</p>
+</dd>
+</dl>
+
+<p>The default value of the select expression is &quot;1&quot;.
+</p>
+<a name="Examples-76"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-76">36.6.1 Examples</a></h3>
+
+<ul>
+<li>
+Select all frames in input:
+<table><tr><td>&nbsp;</td><td><pre class="example">select
+</pre></td></tr></table>
+
+<p>The example above is the same as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">select=1
+</pre></td></tr></table>
+
+</li><li>
+Skip all frames:
+<table><tr><td>&nbsp;</td><td><pre class="example">select=0
+</pre></td></tr></table>
+
+</li><li>
+Select only I-frames:
+<table><tr><td>&nbsp;</td><td><pre class="example">select='eq(pict_type\,I)'
+</pre></td></tr></table>
+
+</li><li>
+Select one frame every 100:
+<table><tr><td>&nbsp;</td><td><pre class="example">select='not(mod(n\,100))'
+</pre></td></tr></table>
+
+</li><li>
+Select only frames contained in the 10-20 time interval:
+<table><tr><td>&nbsp;</td><td><pre class="example">select=between(t\,10\,20)
+</pre></td></tr></table>
+
+</li><li>
+Select only I frames contained in the 10-20 time interval:
+<table><tr><td>&nbsp;</td><td><pre class="example">select=between(t\,10\,20)*eq(pict_type\,I)
+</pre></td></tr></table>
+
+</li><li>
+Select frames with a minimum distance of 10 seconds:
+<table><tr><td>&nbsp;</td><td><pre class="example">select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
+</pre></td></tr></table>
+
+</li><li>
+Use aselect to select only audio frames with samples number &gt; 100:
+<table><tr><td>&nbsp;</td><td><pre class="example">aselect='gt(samples_n\,100)'
+</pre></td></tr></table>
+
+</li><li>
+Create a mosaic of the first scenes:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
+</pre></td></tr></table>
+
+<p>Comparing <var>scene</var> against a value between 0.3 and 0.5 is generally a sane
+choice.
+</p>
+</li><li>
+Send even and odd frames to separate outputs, and compose them:
+<table><tr><td>&nbsp;</td><td><pre class="example">select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
+</pre></td></tr></table>
+</li></ul>
+
+<a name="sendcmd_002c-asendcmd"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-sendcmd_002c-asendcmd">36.7 sendcmd, asendcmd</a></h2>
+
+<p>Send commands to filters in the filtergraph.
+</p>
+<p>These filters read commands to be sent to other filters in the
+filtergraph.
+</p>
+<p><code>sendcmd</code> must be inserted between two video filters,
+<code>asendcmd</code> must be inserted between two audio filters, but apart
+from that they act the same way.
+</p>
+<p>The specification of commands can be provided in the filter arguments
+with the <var>commands</var> option, or in a file specified by the
+<var>filename</var> option.
+</p>
+<p>These filters accept the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>commands, c</samp>&rsquo;</dt>
+<dd><p>Set the commands to be read and sent to the other filters.
+</p></dd>
+<dt> &lsquo;<samp>filename, f</samp>&rsquo;</dt>
+<dd><p>Set the filename of the commands to be read and sent to the other
+filters.
+</p></dd>
+</dl>
+
+<a name="Commands-syntax"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Commands-syntax">36.7.1 Commands syntax</a></h3>
+
+<p>A commands description consists of a sequence of interval
+specifications, comprising a list of commands to be executed when a
+particular event related to that interval occurs. The occurring event
+is typically the current frame time entering or leaving a given time
+interval.
+</p>
+<p>An interval is specified by the following syntax:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>START</var>[-<var>END</var>] <var>COMMANDS</var>;
+</pre></td></tr></table>
+
+<p>The time interval is specified by the <var>START</var> and <var>END</var> times.
+<var>END</var> is optional and defaults to the maximum time.
+</p>
+<p>The current frame time is considered within the specified interval if
+it is included in the interval [<var>START</var>, <var>END</var>), that is when
+the time is greater or equal to <var>START</var> and is lesser than
+<var>END</var>.
+</p>
+<p><var>COMMANDS</var> consists of a sequence of one or more command
+specifications, separated by &quot;,&quot;, relating to that interval.  The
+syntax of a command specification is given by:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[<var>FLAGS</var>] <var>TARGET</var> <var>COMMAND</var> <var>ARG</var>
+</pre></td></tr></table>
+
+<p><var>FLAGS</var> is optional and specifies the type of events relating to
+the time interval which enable sending the specified command, and must
+be a non-null sequence of identifier flags separated by &quot;+&quot; or &quot;|&quot; and
+enclosed between &quot;[&quot; and &quot;]&quot;.
+</p>
+<p>The following flags are recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>enter</samp>&rsquo;</dt>
+<dd><p>The command is sent when the current frame timestamp enters the
+specified interval. In other words, the command is sent when the
+previous frame timestamp was not in the given interval, and the
+current is.
+</p>
+</dd>
+<dt> &lsquo;<samp>leave</samp>&rsquo;</dt>
+<dd><p>The command is sent when the current frame timestamp leaves the
+specified interval. In other words, the command is sent when the
+previous frame timestamp was in the given interval, and the
+current is not.
+</p></dd>
+</dl>
+
+<p>If <var>FLAGS</var> is not specified, a default value of <code>[enter]</code> is
+assumed.
+</p>
+<p><var>TARGET</var> specifies the target of the command, usually the name of
+the filter class or a specific filter instance name.
+</p>
+<p><var>COMMAND</var> specifies the name of the command for the target filter.
+</p>
+<p><var>ARG</var> is optional and specifies the optional list of argument for
+the given <var>COMMAND</var>.
+</p>
+<p>Between one interval specification and another, whitespaces, or
+sequences of characters starting with <code>#</code> until the end of line,
+are ignored and can be used to annotate comments.
+</p>
+<p>A simplified BNF description of the commands specification syntax
+follows:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>COMMAND_FLAG</var>  ::= &quot;enter&quot; | &quot;leave&quot;
+<var>COMMAND_FLAGS</var> ::= <var>COMMAND_FLAG</var> [(+|&quot;|&quot;)<var>COMMAND_FLAG</var>]
+<var>COMMAND</var>       ::= [&quot;[&quot; <var>COMMAND_FLAGS</var> &quot;]&quot;] <var>TARGET</var> <var>COMMAND</var> [<var>ARG</var>]
+<var>COMMANDS</var>      ::= <var>COMMAND</var> [,<var>COMMANDS</var>]
+<var>INTERVAL</var>      ::= <var>START</var>[-<var>END</var>] <var>COMMANDS</var>
+<var>INTERVALS</var>     ::= <var>INTERVAL</var>[;<var>INTERVALS</var>]
+</pre></td></tr></table>
+
+<a name="Examples-39"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-39">36.7.2 Examples</a></h3>
+
+<ul>
+<li>
+Specify audio tempo change at second 4:
+<table><tr><td>&nbsp;</td><td><pre class="example">asendcmd=c='4.0 atempo tempo 1.5',atempo
+</pre></td></tr></table>
+
+</li><li>
+Specify a list of drawtext and hue commands in a file.
+<table><tr><td>&nbsp;</td><td><pre class="example"># show text in the interval 5-10
+5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
+         [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
+
+# desaturate the image in the interval 15-20
+15.0-20.0 [enter] hue s 0,
+          [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
+          [leave] hue s 1,
+          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
+
+# apply an exponential saturation fade-out effect, starting from time 25
+25 [enter] hue s exp(25-t)
+</pre></td></tr></table>
+
+<p>A filtergraph allowing to read and process the above command list
+stored in a file &lsquo;<tt>test.cmd</tt>&rsquo;, can be specified with:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="setpts"></a>
+</p><a name="setpts_002c-asetpts"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-setpts_002c-asetpts">36.8 setpts, asetpts</a></h2>
+
+<p>Change the PTS (presentation timestamp) of the input frames.
+</p>
+<p><code>setpts</code> works on video frames, <code>asetpts</code> on audio frames.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>expr</samp>&rsquo;</dt>
+<dd><p>The expression which is evaluated for each frame to construct its timestamp.
+</p>
+</dd>
+</dl>
+
+<p>The expression is evaluated through the eval API and can contain the following
+constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>FRAME_RATE</samp>&rsquo;</dt>
+<dd><p>frame rate, only defined for constant frame-rate video
+</p>
+</dd>
+<dt> &lsquo;<samp>PTS</samp>&rsquo;</dt>
+<dd><p>the presentation timestamp in input
+</p>
+</dd>
+<dt> &lsquo;<samp>N</samp>&rsquo;</dt>
+<dd><p>the count of the input frame for video or the number of consumed samples,
+not including the current frame for audio, starting from 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>NB_CONSUMED_SAMPLES</samp>&rsquo;</dt>
+<dd><p>the number of consumed samples, not including the current frame (only
+audio)
+</p>
+</dd>
+<dt> &lsquo;<samp>NB_SAMPLES, S</samp>&rsquo;</dt>
+<dd><p>the number of samples in the current frame (only audio)
+</p>
+</dd>
+<dt> &lsquo;<samp>SAMPLE_RATE, SR</samp>&rsquo;</dt>
+<dd><p>audio sample rate
+</p>
+</dd>
+<dt> &lsquo;<samp>STARTPTS</samp>&rsquo;</dt>
+<dd><p>the PTS of the first frame
+</p>
+</dd>
+<dt> &lsquo;<samp>STARTT</samp>&rsquo;</dt>
+<dd><p>the time in seconds of the first frame
+</p>
+</dd>
+<dt> &lsquo;<samp>INTERLACED</samp>&rsquo;</dt>
+<dd><p>tell if the current frame is interlaced
+</p>
+</dd>
+<dt> &lsquo;<samp>T</samp>&rsquo;</dt>
+<dd><p>the time in seconds of the current frame
+</p>
+</dd>
+<dt> &lsquo;<samp>POS</samp>&rsquo;</dt>
+<dd><p>original position in the file of the frame, or undefined if undefined
+for the current frame
+</p>
+</dd>
+<dt> &lsquo;<samp>PREV_INPTS</samp>&rsquo;</dt>
+<dd><p>previous input PTS
+</p>
+</dd>
+<dt> &lsquo;<samp>PREV_INT</samp>&rsquo;</dt>
+<dd><p>previous input time in seconds
+</p>
+</dd>
+<dt> &lsquo;<samp>PREV_OUTPTS</samp>&rsquo;</dt>
+<dd><p>previous output PTS
+</p>
+</dd>
+<dt> &lsquo;<samp>PREV_OUTT</samp>&rsquo;</dt>
+<dd><p>previous output time in seconds
+</p>
+</dd>
+<dt> &lsquo;<samp>RTCTIME</samp>&rsquo;</dt>
+<dd><p>wallclock (RTC) time in microseconds. This is deprecated, use time(0)
+instead.
+</p>
+</dd>
+<dt> &lsquo;<samp>RTCSTART</samp>&rsquo;</dt>
+<dd><p>wallclock (RTC) time at the start of the movie in microseconds
+</p>
+</dd>
+<dt> &lsquo;<samp>TB</samp>&rsquo;</dt>
+<dd><p>timebase of the input timestamps
+</p>
+</dd>
+</dl>
+
+<a name="Examples-42"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-42">36.8.1 Examples</a></h3>
+
+<ul>
+<li>
+Start counting PTS from zero
+<table><tr><td>&nbsp;</td><td><pre class="example">setpts=PTS-STARTPTS
+</pre></td></tr></table>
+
+</li><li>
+Apply fast motion effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">setpts=0.5*PTS
+</pre></td></tr></table>
+
+</li><li>
+Apply slow motion effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">setpts=2.0*PTS
+</pre></td></tr></table>
+
+</li><li>
+Set fixed rate of 25 frames per second:
+<table><tr><td>&nbsp;</td><td><pre class="example">setpts=N/(25*TB)
+</pre></td></tr></table>
+
+</li><li>
+Set fixed rate 25 fps with some jitter:
+<table><tr><td>&nbsp;</td><td><pre class="example">setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
+</pre></td></tr></table>
+
+</li><li>
+Apply an offset of 10 seconds to the input PTS:
+<table><tr><td>&nbsp;</td><td><pre class="example">setpts=PTS+10/TB
+</pre></td></tr></table>
+
+</li><li>
+Generate timestamps from a &quot;live source&quot; and rebase onto the current timebase:
+<table><tr><td>&nbsp;</td><td><pre class="example">setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
+</pre></td></tr></table>
+
+</li><li>
+Generate timestamps by counting samples:
+<table><tr><td>&nbsp;</td><td><pre class="example">asetpts=N/SR/TB
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="settb_002c-asettb"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-settb_002c-asettb">36.9 settb, asettb</a></h2>
+
+<p>Set the timebase to use for the output frames timestamps.
+It is mainly useful for testing timebase configuration.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>expr, tb</samp>&rsquo;</dt>
+<dd><p>The expression which is evaluated into the output timebase.
+</p>
+</dd>
+</dl>
+
+<p>The value for &lsquo;<samp>tb</samp>&rsquo; is an arithmetic expression representing a
+rational. The expression can contain the constants &quot;AVTB&quot; (the default
+timebase), &quot;intb&quot; (the input timebase) and &quot;sr&quot; (the sample rate,
+audio only). Default value is &quot;intb&quot;.
+</p>
+<a name="Examples-68"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-68">36.9.1 Examples</a></h3>
+
+<ul>
+<li>
+Set the timebase to 1/25:
+<table><tr><td>&nbsp;</td><td><pre class="example">settb=expr=1/25
+</pre></td></tr></table>
+
+</li><li>
+Set the timebase to 1/10:
+<table><tr><td>&nbsp;</td><td><pre class="example">settb=expr=0.1
+</pre></td></tr></table>
+
+</li><li>
+Set the timebase to 1001/1000:
+<table><tr><td>&nbsp;</td><td><pre class="example">settb=1+0.001
+</pre></td></tr></table>
+
+</li><li>
+Set the timebase to 2*intb:
+<table><tr><td>&nbsp;</td><td><pre class="example">settb=2*intb
+</pre></td></tr></table>
+
+</li><li>
+Set the default timebase value:
+<table><tr><td>&nbsp;</td><td><pre class="example">settb=AVTB
+</pre></td></tr></table>
+</li></ul>
+
+<a name="showspectrum"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-showspectrum">36.10 showspectrum</a></h2>
+
+<p>Convert input audio to a video output, representing the audio frequency
+spectrum.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
+<dd><p>Specify the video size for the output. For the syntax of this option, check
+the &quot;Video size&quot; section in the ffmpeg-utils manual. Default value is
+<code>640x512</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>slide</samp>&rsquo;</dt>
+<dd><p>Specify if the spectrum should slide along the window. Default value is
+<code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Specify display mode.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>combined</samp>&rsquo;</dt>
+<dd><p>all channels are displayed in the same row
+</p></dd>
+<dt> &lsquo;<samp>separate</samp>&rsquo;</dt>
+<dd><p>all channels are displayed in separate rows
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>combined</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
+<dd><p>Specify display color mode.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>channel</samp>&rsquo;</dt>
+<dd><p>each channel is displayed in a separate color
+</p></dd>
+<dt> &lsquo;<samp>intensity</samp>&rsquo;</dt>
+<dd><p>each channel is is displayed using the same color scheme
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>channel</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>scale</samp>&rsquo;</dt>
+<dd><p>Specify scale used for calculating intensity color values.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>lin</samp>&rsquo;</dt>
+<dd><p>linear
+</p></dd>
+<dt> &lsquo;<samp>sqrt</samp>&rsquo;</dt>
+<dd><p>square root, default
+</p></dd>
+<dt> &lsquo;<samp>cbrt</samp>&rsquo;</dt>
+<dd><p>cubic root
+</p></dd>
+<dt> &lsquo;<samp>log</samp>&rsquo;</dt>
+<dd><p>logarithmic
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>sqrt</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>saturation</samp>&rsquo;</dt>
+<dd><p>Set saturation modifier for displayed colors. Negative values provide
+alternative color scheme. <code>0</code> is no saturation at all.
+Saturation must be in [-10.0, 10.0] range.
+Default value is <code>1</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>win_func</samp>&rsquo;</dt>
+<dd><p>Set window function.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>No samples pre-processing (do not expect this to be faster)
+</p></dd>
+<dt> &lsquo;<samp>hann</samp>&rsquo;</dt>
+<dd><p>Hann window
+</p></dd>
+<dt> &lsquo;<samp>hamming</samp>&rsquo;</dt>
+<dd><p>Hamming window
+</p></dd>
+<dt> &lsquo;<samp>blackman</samp>&rsquo;</dt>
+<dd><p>Blackman window
+</p></dd>
+</dl>
+
+<p>Default value is <code>hann</code>.
+</p></dd>
+</dl>
+
+<p>The usage is very similar to the showwaves filter; see the examples in that
+section.
+</p>
+<a name="Examples-2"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-2">36.10.1 Examples</a></h3>
+
+<ul>
+<li>
+Large window with logarithmic color scaling:
+<table><tr><td>&nbsp;</td><td><pre class="example">showspectrum=s=1280x480:scale=log
+</pre></td></tr></table>
+
+</li><li>
+Complete example for a colored and sliding spectrum per channel using <code>ffplay</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
+             [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
+</pre></td></tr></table>
+</li></ul>
+
+<a name="showwaves"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-showwaves">36.11 showwaves</a></h2>
+
+<p>Convert input audio to a video output, representing the samples waves.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
+<dd><p>Specify the video size for the output. For the syntax of this option, check
+the &quot;Video size&quot; section in the ffmpeg-utils manual. Default value
+is &quot;600x240&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Set display mode.
+</p>
+<p>Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>point</samp>&rsquo;</dt>
+<dd><p>Draw a point for each sample.
+</p>
+</dd>
+<dt> &lsquo;<samp>line</samp>&rsquo;</dt>
+<dd><p>Draw a vertical line for each sample.
+</p></dd>
+</dl>
+
+<p>Default value is <code>point</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>Set the number of samples which are printed on the same column. A
+larger value will decrease the frame rate. Must be a positive
+integer. This option can be set only if the value for <var>rate</var>
+is not explicitly specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
+<dd><p>Set the (approximate) output frame rate. This is done by setting the
+option <var>n</var>. Default value is &quot;25&quot;.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-90"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-90">36.11.1 Examples</a></h3>
+
+<ul>
+<li>
+Output the input file audio and the corresponding video representation
+at the same time:
+<table><tr><td>&nbsp;</td><td><pre class="example">amovie=a.mp3,asplit[out0],showwaves[out1]
+</pre></td></tr></table>
+
+</li><li>
+Create a synthetic signal and show it with showwaves, forcing a
+frame rate of 30 frames per second:
+<table><tr><td>&nbsp;</td><td><pre class="example">aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
+</pre></td></tr></table>
+</li></ul>
+
+<a name="split_002c-asplit"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-split_002c-asplit">36.12 split, asplit</a></h2>
+
+<p>Split input into several identical outputs.
+</p>
+<p><code>asplit</code> works with audio input, <code>split</code> with video.
+</p>
+<p>The filter accepts a single parameter which specifies the number of outputs. If
+unspecified, it defaults to 2.
+</p>
+<a name="Examples-83"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-83">36.12.1 Examples</a></h3>
+
+<ul>
+<li>
+Create two separate outputs from the same input:
+<table><tr><td>&nbsp;</td><td><pre class="example">[in] split [out0][out1]
+</pre></td></tr></table>
+
+</li><li>
+To create 3 or more outputs, you need to specify the number of
+outputs, like in:
+<table><tr><td>&nbsp;</td><td><pre class="example">[in] asplit=3 [out0][out1][out2]
+</pre></td></tr></table>
+
+</li><li>
+Create two separate outputs from the same input, one cropped and
+one padded:
+<table><tr><td>&nbsp;</td><td><pre class="example">[in] split [splitout1][splitout2];
+[splitout1] crop=100:100:0:0    [cropout];
+[splitout2] pad=200:200:100:100 [padout];
+</pre></td></tr></table>
+
+</li><li>
+Create 5 copies of the input audio with <code>ffmpeg</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
+</pre></td></tr></table>
+</li></ul>
+
+<a name="zmq_002c-azmq"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-zmq_002c-azmq">36.13 zmq, azmq</a></h2>
+
+<p>Receive commands sent through a libzmq client, and forward them to
+filters in the filtergraph.
+</p>
+<p><code>zmq</code> and <code>azmq</code> work as a pass-through filters. <code>zmq</code>
+must be inserted between two video filters, <code>azmq</code> between two
+audio filters.
+</p>
+<p>To enable these filters you need to install the libzmq library and
+headers and configure FFmpeg with <code>--enable-libzmq</code>.
+</p>
+<p>For more information about libzmq see:
+<a href="http://www.zeromq.org/">http://www.zeromq.org/</a>
+</p>
+<p>The <code>zmq</code> and <code>azmq</code> filters work as a libzmq server, which
+receives messages sent through a network interface defined by the
+&lsquo;<samp>bind_address</samp>&rsquo; option.
+</p>
+<p>The received message must be in the form:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>TARGET</var> <var>COMMAND</var> [<var>ARG</var>]
+</pre></td></tr></table>
+
+<p><var>TARGET</var> specifies the target of the command, usually the name of
+the filter class or a specific filter instance name.
+</p>
+<p><var>COMMAND</var> specifies the name of the command for the target filter.
+</p>
+<p><var>ARG</var> is optional and specifies the optional argument list for the
+given <var>COMMAND</var>.
+</p>
+<p>Upon reception, the message is processed and the corresponding command
+is injected into the filtergraph. Depending on the result, the filter
+will send a reply to the client, adopting the format:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>ERROR_CODE</var> <var>ERROR_REASON</var>
+<var>MESSAGE</var>
+</pre></td></tr></table>
+
+<p><var>MESSAGE</var> is optional.
+</p>
+<a name="Examples-29"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-29">36.13.1 Examples</a></h3>
+
+<p>Look at &lsquo;<tt>tools/zmqsend</tt>&rsquo; for an example of a zmq client which can
+be used to send commands processed by these filters.
+</p>
+<p>Consider the following filtergraph generated by <code>ffplay</code>
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay -dumpgraph 1 -f lavfi &quot;
+color=s=100x100:c=red  [l];
+color=s=100x100:c=blue [r];
+nullsrc=s=200x100, zmq [bg];
+[bg][l]   overlay      [bg+l];
+[bg+l][r] overlay=x=100 &quot;
+</pre></td></tr></table>
+
+<p>To change the color of the left side of the video, the following
+command can be used:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">echo Parsed_color_0 c yellow | tools/zmqsend
+</pre></td></tr></table>
+
+<p>To change the right side:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">echo Parsed_color_1 c pink | tools/zmqsend
+</pre></td></tr></table>
+
+
+<a name="Multimedia-Sources"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Multimedia-Sources">37. Multimedia Sources</a></h1>
+
+<p>Below is a description of the currently available multimedia sources.
+</p>
+<a name="amovie"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-amovie">37.1 amovie</a></h2>
+
+<p>This is the same as <a href="#movie">movie</a> source, except it selects an audio
+stream by default.
+</p>
+<p><a name="movie"></a>
+</p><a name="movie-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-movie-1">37.2 movie</a></h2>
+
+<p>Read audio and/or video stream(s) from a movie container.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filename</samp>&rsquo;</dt>
+<dd><p>The name of the resource to read (not necessarily a file but also a device or a
+stream accessed through some protocol).
+</p>
+</dd>
+<dt> &lsquo;<samp>format_name, f</samp>&rsquo;</dt>
+<dd><p>Specifies the format assumed for the movie to read, and can be either
+the name of a container or an input device. If not specified the
+format is guessed from <var>movie_name</var> or by probing.
+</p>
+</dd>
+<dt> &lsquo;<samp>seek_point, sp</samp>&rsquo;</dt>
+<dd><p>Specifies the seek point in seconds, the frames will be output
+starting from this seek point, the parameter is evaluated with
+<code>av_strtod</code> so the numerical value may be suffixed by an IS
+postfix. Default value is &quot;0&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>streams, s</samp>&rsquo;</dt>
+<dd><p>Specifies the streams to read. Several streams can be specified,
+separated by &quot;+&quot;. The source will then have as many outputs, in the
+same order. The syntax is explained in the &ldquo;Stream specifiers&rdquo;
+section in the ffmpeg manual. Two special names, &quot;dv&quot; and &quot;da&quot; specify
+respectively the default (best suited) video and audio stream. Default
+is &quot;dv&quot;, or &quot;da&quot; if the filter is called as &quot;amovie&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>stream_index, si</samp>&rsquo;</dt>
+<dd><p>Specifies the index of the video stream to read. If the value is -1,
+the best suited video stream will be automatically selected. Default
+value is &quot;-1&quot;. Deprecated. If the filter is called &quot;amovie&quot;, it will select
+audio instead of video.
+</p>
+</dd>
+<dt> &lsquo;<samp>loop</samp>&rsquo;</dt>
+<dd><p>Specifies how many times to read the stream in sequence.
+If the value is less than 1, the stream will be read again and again.
+Default value is &quot;1&quot;.
+</p>
+<p>Note that when the movie is looped the source timestamps are not
+changed, so it will generate non monotonically increasing timestamps.
+</p></dd>
+</dl>
+
+<p>This filter allows to overlay a second video on top of main input of
+a filtergraph as shown in this graph:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">input -----------&gt; deltapts0 --&gt; overlay --&gt; output
+                                    ^
+                                    |
+movie --&gt; scale--&gt; deltapts1 -------+
+</pre></td></tr></table>
+
+<a name="Examples-69"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-69">37.2.1 Examples</a></h3>
+
+<ul>
+<li>
+Skip 3.2 seconds from the start of the avi file in.avi, and overlay it
+on top of the input labelled as &quot;in&quot;:
+<table><tr><td>&nbsp;</td><td><pre class="example">movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
+[in] setpts=PTS-STARTPTS [main];
+[main][over] overlay=16:16 [out]
+</pre></td></tr></table>
+
+</li><li>
+Read from a video4linux2 device, and overlay it on top of the input
+labelled as &quot;in&quot;:
+<table><tr><td>&nbsp;</td><td><pre class="example">movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
+[in] setpts=PTS-STARTPTS [main];
+[main][over] overlay=16:16 [out]
+</pre></td></tr></table>
+
+</li><li>
+Read the first video stream and the audio stream with id 0x81 from
+dvd.vob; the video is connected to the pad named &quot;video&quot; and the audio is
+connected to the pad named &quot;audio&quot;:
+<table><tr><td>&nbsp;</td><td><pre class="example">movie=dvd.vob:s=v:0+#0x81 [video] [audio]
+</pre></td></tr></table>
+</li></ul>
+
+
+<a name="See-Also"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-See-Also">38. See Also</a></h1>
+
+<p><a href="ffplay.html">ffplay</a>,
+<a href="ffmpeg.html">ffmpeg</a>, <a href="ffprobe.html">ffprobe</a>, <a href="ffserver.html">ffserver</a>,
+<a href="ffmpeg-utils.html">ffmpeg-utils</a>,
+<a href="ffmpeg-scaler.html">ffmpeg-scaler</a>,
+<a href="ffmpeg-resampler.html">ffmpeg-resampler</a>,
+<a href="ffmpeg-codecs.html">ffmpeg-codecs</a>,
+<a href="ffmpeg-bitstream-filters.html">ffmpeg-bitstream-filters</a>,
+<a href="ffmpeg-formats.html">ffmpeg-formats</a>,
+<a href="ffmpeg-devices.html">ffmpeg-devices</a>,
+<a href="ffmpeg-protocols.html">ffmpeg-protocols</a>,
+<a href="ffmpeg-filters.html">ffmpeg-filters</a>
+</p>
+
+<a name="Authors"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Authors">39. Authors</a></h1>
+
+<p>The FFmpeg developers.
+</p>
+<p>For details about the authorship, see the Git history of the project
+(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
+<code>git log</code> in the FFmpeg source directory, or browsing the
+online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
+</p>
+<p>Maintainers for the specific components are listed in the file
+&lsquo;<tt>MAINTAINERS</tt>&rsquo; in the source code tree.
+</p>
+
+<footer class="footer pagination-right">
+<span class="label label-info">This document was generated by <em>Kyle Schwarz</em> on <em>December 14, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
index afe53874003a70bd25a9d43c38eb2a2ca45f729b..e89b9d356cd07794eb9aed6a60c8e0284431892b 100644 (file)
@@ -1,6 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<!DOCTYPE html>
 <html>
-<!-- Created on September 2, 2011 by texi2html 1.82
+<!-- Created on December 14, 2013 by texi2html 1.82 -->
+<!--
 texi2html was written by: 
             Lionel Cons <Lionel.Cons@cern.ch> (original author)
             Karl Berry  <karl@freefriends.org>
@@ -8,38 +9,22 @@ texi2html was written by:
             and many others.
 Maintained by: Many creative people.
 Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
 -->
 <head>
-<title>ffplay Documentation</title>
+<title>FFmpeg documentation : ffplay </title>
 
-<meta name="description" content="ffplay Documentation">
-<meta name="keywords" content="ffplay Documentation">
-<meta name="resource-type" content="document">
-<meta name="distribution" content="global">
+<meta name="description" content="ffplay Documentation: ">
+<meta name="keywords" content="FFmpeg documentation : ffplay ">
 <meta name="Generator" content="texi2html 1.82">
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<style type="text/css">
-<!--
-a.summary-letter {text-decoration: none}
-blockquote.smallquotation {font-size: smaller}
-pre.display {font-family: serif}
-pre.format {font-family: serif}
-pre.menu-comment {font-family: serif}
-pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: serif; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: serif; font-size: smaller}
-pre.smalllisp {font-size: smaller}
-span.roman {font-family:serif; font-weight:normal;}
-span.sansserif {font-family:sans-serif; font-weight:normal;}
-ul.toc {list-style: none}
--->
-</style>
-
+<link rel="stylesheet" type="text/css" href="default.css" />
 
+<link rel="icon" href="favicon.png" type="image/png" />
 </head>
-
-<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<body>
+<div id="container">
+<div id="body">
 
 <a name="SEC_Top"></a>
 <h1 class="settitle">ffplay Documentation</h1>
@@ -51,195 +36,25 @@ ul.toc {list-style: none}
 <ul class="toc">
   <li><a name="toc-Synopsis" href="#Synopsis">1. Synopsis</a></li>
   <li><a name="toc-Description" href="#Description">2. Description</a></li>
-  <li><a name="toc-Options-4" href="#Options-4">3. Options</a>
-  <ul class="toc">
-    <li><a name="toc-Generic-options" href="#Generic-options">3.1 Generic options</a></li>
-    <li><a name="toc-AVOptions" href="#AVOptions">3.2 AVOptions</a></li>
-    <li><a name="toc-Main-options" href="#Main-options">3.3 Main options</a></li>
-    <li><a name="toc-Advanced-options" href="#Advanced-options">3.4 Advanced options</a></li>
-    <li><a name="toc-While-playing" href="#While-playing">3.5 While playing</a></li>
-  </ul></li>
-  <li><a name="toc-Expression-Evaluation" href="#Expression-Evaluation">4. Expression Evaluation</a></li>
-  <li><a name="toc-Decoders" href="#Decoders">5. Decoders</a></li>
-  <li><a name="toc-Video-Decoders" href="#Video-Decoders">6. Video Decoders</a>
-  <ul class="toc">
-    <li><a name="toc-rawvideo" href="#rawvideo">6.1 rawvideo</a>
-    <ul class="toc">
-      <li><a name="toc-Options-3" href="#Options-3">6.1.1 Options</a></li>
-    </ul>
-</li>
-  </ul></li>
-  <li><a name="toc-Demuxers" href="#Demuxers">7. Demuxers</a>
-  <ul class="toc">
-    <li><a name="toc-image2-1" href="#image2-1">7.1 image2</a></li>
-    <li><a name="toc-applehttp" href="#applehttp">7.2 applehttp</a></li>
-  </ul></li>
-  <li><a name="toc-Muxers" href="#Muxers">8. Muxers</a>
-  <ul class="toc">
-    <li><a name="toc-crc-1" href="#crc-1">8.1 crc</a></li>
-    <li><a name="toc-framecrc-1" href="#framecrc-1">8.2 framecrc</a></li>
-    <li><a name="toc-image2" href="#image2">8.3 image2</a></li>
-    <li><a name="toc-mpegts" href="#mpegts">8.4 mpegts</a></li>
-    <li><a name="toc-null" href="#null">8.5 null</a></li>
-    <li><a name="toc-matroska" href="#matroska">8.6 matroska</a></li>
-  </ul></li>
-  <li><a name="toc-Input-Devices" href="#Input-Devices">9. Input Devices</a>
-  <ul class="toc">
-    <li><a name="toc-alsa-1" href="#alsa-1">9.1 alsa</a></li>
-    <li><a name="toc-bktr" href="#bktr">9.2 bktr</a></li>
-    <li><a name="toc-dv1394" href="#dv1394">9.3 dv1394</a></li>
-    <li><a name="toc-fbdev" href="#fbdev">9.4 fbdev</a></li>
-    <li><a name="toc-jack" href="#jack">9.5 jack</a></li>
-    <li><a name="toc-lavfi" href="#lavfi">9.6 lavfi</a>
-    <ul class="toc">
-      <li><a name="toc-Options" href="#Options">9.6.1 Options</a></li>
-      <li><a name="toc-Examples" href="#Examples">9.6.2 Examples</a></li>
-    </ul></li>
-    <li><a name="toc-libdc1394" href="#libdc1394">9.7 libdc1394</a></li>
-    <li><a name="toc-openal" href="#openal">9.8 openal</a>
-    <ul class="toc">
-      <li><a name="toc-Options-1" href="#Options-1">9.8.1 Options</a></li>
-      <li><a name="toc-Examples-2" href="#Examples-2">9.8.2 Examples</a></li>
-    </ul></li>
-    <li><a name="toc-oss" href="#oss">9.9 oss</a></li>
-    <li><a name="toc-sndio-1" href="#sndio-1">9.10 sndio</a></li>
-    <li><a name="toc-video4linux-and-video4linux2" href="#video4linux-and-video4linux2">9.11 video4linux and video4linux2</a></li>
-    <li><a name="toc-vfwcap" href="#vfwcap">9.12 vfwcap</a></li>
-    <li><a name="toc-x11grab" href="#x11grab">9.13 x11grab</a>
-    <ul class="toc">
-      <li><a name="toc-follow_005fmouse-AVOption" href="#follow_005fmouse-AVOption">9.13.1 <var>follow_mouse</var> AVOption</a></li>
-      <li><a name="toc-show_005fregion-AVOption" href="#show_005fregion-AVOption">9.13.2 <var>show_region</var> AVOption</a></li>
-    </ul>
-</li>
-  </ul></li>
-  <li><a name="toc-Output-Devices" href="#Output-Devices">10. Output Devices</a>
+  <li><a name="toc-Options" href="#Options">3. Options</a>
   <ul class="toc">
-    <li><a name="toc-alsa" href="#alsa">10.1 alsa</a></li>
-    <li><a name="toc-oss-1" href="#oss-1">10.2 oss</a></li>
-    <li><a name="toc-sdl" href="#sdl">10.3 sdl</a>
-    <ul class="toc">
-      <li><a name="toc-Options-2" href="#Options-2">10.3.1 Options</a></li>
-      <li><a name="toc-Examples-1" href="#Examples-1">10.3.2 Examples</a></li>
-    </ul></li>
-    <li><a name="toc-sndio" href="#sndio">10.4 sndio</a></li>
+    <li><a name="toc-Stream-specifiers-1" href="#Stream-specifiers-1">3.1 Stream specifiers</a></li>
+    <li><a name="toc-Generic-options" href="#Generic-options">3.2 Generic options</a></li>
+    <li><a name="toc-AVOptions" href="#AVOptions">3.3 AVOptions</a></li>
+    <li><a name="toc-Main-options" href="#Main-options">3.4 Main options</a></li>
+    <li><a name="toc-Advanced-options" href="#Advanced-options">3.5 Advanced options</a></li>
+    <li><a name="toc-While-playing" href="#While-playing">3.6 While playing</a></li>
   </ul></li>
-  <li><a name="toc-Protocols" href="#Protocols">11. Protocols</a>
-  <ul class="toc">
-    <li><a name="toc-applehttp-1" href="#applehttp-1">11.1 applehttp</a></li>
-    <li><a name="toc-concat" href="#concat">11.2 concat</a></li>
-    <li><a name="toc-file" href="#file">11.3 file</a></li>
-    <li><a name="toc-gopher" href="#gopher">11.4 gopher</a></li>
-    <li><a name="toc-http" href="#http">11.5 http</a></li>
-    <li><a name="toc-mmst" href="#mmst">11.6 mmst</a></li>
-    <li><a name="toc-mmsh" href="#mmsh">11.7 mmsh</a></li>
-    <li><a name="toc-md5" href="#md5">11.8 md5</a></li>
-    <li><a name="toc-pipe" href="#pipe">11.9 pipe</a></li>
-    <li><a name="toc-rtmp" href="#rtmp">11.10 rtmp</a></li>
-    <li><a name="toc-rtmp_002c-rtmpe_002c-rtmps_002c-rtmpt_002c-rtmpte" href="#rtmp_002c-rtmpe_002c-rtmps_002c-rtmpt_002c-rtmpte">11.11 rtmp, rtmpe, rtmps, rtmpt, rtmpte</a></li>
-    <li><a name="toc-rtp" href="#rtp">11.12 rtp</a></li>
-    <li><a name="toc-rtsp" href="#rtsp">11.13 rtsp</a></li>
-    <li><a name="toc-sap" href="#sap">11.14 sap</a>
-    <ul class="toc">
-      <li><a name="toc-Muxer" href="#Muxer">11.14.1 Muxer</a></li>
-      <li><a name="toc-Demuxer" href="#Demuxer">11.14.2 Demuxer</a></li>
-    </ul></li>
-    <li><a name="toc-tcp" href="#tcp">11.15 tcp</a></li>
-    <li><a name="toc-udp" href="#udp">11.16 udp</a></li>
-  </ul></li>
-  <li><a name="toc-Filtergraph-description" href="#Filtergraph-description">12. Filtergraph description</a>
-  <ul class="toc">
-    <li><a name="toc-Filtergraph-syntax" href="#Filtergraph-syntax">12.1 Filtergraph syntax</a></li>
-  </ul></li>
-  <li><a name="toc-Audio-Filters" href="#Audio-Filters">13. Audio Filters</a>
-  <ul class="toc">
-    <li><a name="toc-aformat" href="#aformat">13.1 aformat</a></li>
-    <li><a name="toc-anull" href="#anull">13.2 anull</a></li>
-    <li><a name="toc-aresample" href="#aresample">13.3 aresample</a></li>
-    <li><a name="toc-ashowinfo" href="#ashowinfo">13.4 ashowinfo</a></li>
-  </ul></li>
-  <li><a name="toc-Audio-Sources" href="#Audio-Sources">14. Audio Sources</a>
-  <ul class="toc">
-    <li><a name="toc-abuffer" href="#abuffer">14.1 abuffer</a></li>
-    <li><a name="toc-amovie" href="#amovie">14.2 amovie</a></li>
-    <li><a name="toc-anullsrc" href="#anullsrc">14.3 anullsrc</a></li>
-  </ul></li>
-  <li><a name="toc-Audio-Sinks" href="#Audio-Sinks">15. Audio Sinks</a>
-  <ul class="toc">
-    <li><a name="toc-abuffersink" href="#abuffersink">15.1 abuffersink</a></li>
-    <li><a name="toc-anullsink" href="#anullsink">15.2 anullsink</a></li>
-  </ul></li>
-  <li><a name="toc-Video-Filters" href="#Video-Filters">16. Video Filters</a>
-  <ul class="toc">
-    <li><a name="toc-blackframe" href="#blackframe">16.1 blackframe</a></li>
-    <li><a name="toc-boxblur" href="#boxblur">16.2 boxblur</a></li>
-    <li><a name="toc-copy" href="#copy">16.3 copy</a></li>
-    <li><a name="toc-crop" href="#crop">16.4 crop</a></li>
-    <li><a name="toc-cropdetect" href="#cropdetect">16.5 cropdetect</a></li>
-    <li><a name="toc-delogo" href="#delogo">16.6 delogo</a></li>
-    <li><a name="toc-drawbox" href="#drawbox">16.7 drawbox</a></li>
-    <li><a name="toc-drawtext" href="#drawtext">16.8 drawtext</a></li>
-    <li><a name="toc-fade" href="#fade">16.9 fade</a></li>
-    <li><a name="toc-fieldorder" href="#fieldorder">16.10 fieldorder</a></li>
-    <li><a name="toc-fifo" href="#fifo">16.11 fifo</a></li>
-    <li><a name="toc-format" href="#format">16.12 format</a></li>
-    <li><a name="toc-frei0r-1" href="#frei0r-1">16.13 frei0r</a></li>
-    <li><a name="toc-gradfun" href="#gradfun">16.14 gradfun</a></li>
-    <li><a name="toc-hflip" href="#hflip">16.15 hflip</a></li>
-    <li><a name="toc-hqdn3d" href="#hqdn3d">16.16 hqdn3d</a></li>
-    <li><a name="toc-lut_002c-lutrgb_002c-lutyuv" href="#lut_002c-lutrgb_002c-lutyuv">16.17 lut, lutrgb, lutyuv</a></li>
-    <li><a name="toc-mp" href="#mp">16.18 mp</a></li>
-    <li><a name="toc-negate" href="#negate">16.19 negate</a></li>
-    <li><a name="toc-noformat" href="#noformat">16.20 noformat</a></li>
-    <li><a name="toc-null-1" href="#null-1">16.21 null</a></li>
-    <li><a name="toc-ocv" href="#ocv">16.22 ocv</a>
-    <ul class="toc">
-      <li><a name="toc-dilate-1" href="#dilate-1">16.22.1 dilate</a></li>
-      <li><a name="toc-erode" href="#erode">16.22.2 erode</a></li>
-      <li><a name="toc-smooth" href="#smooth">16.22.3 smooth</a></li>
-    </ul></li>
-    <li><a name="toc-overlay" href="#overlay">16.23 overlay</a></li>
-    <li><a name="toc-pad" href="#pad">16.24 pad</a></li>
-    <li><a name="toc-pixdesctest" href="#pixdesctest">16.25 pixdesctest</a></li>
-    <li><a name="toc-scale" href="#scale">16.26 scale</a></li>
-    <li><a name="toc-select" href="#select">16.27 select</a></li>
-    <li><a name="toc-setdar-1" href="#setdar-1">16.28 setdar</a></li>
-    <li><a name="toc-setpts" href="#setpts">16.29 setpts</a></li>
-    <li><a name="toc-setsar-1" href="#setsar-1">16.30 setsar</a></li>
-    <li><a name="toc-settb" href="#settb">16.31 settb</a></li>
-    <li><a name="toc-showinfo" href="#showinfo">16.32 showinfo</a></li>
-    <li><a name="toc-slicify" href="#slicify">16.33 slicify</a></li>
-    <li><a name="toc-split" href="#split">16.34 split</a></li>
-    <li><a name="toc-transpose" href="#transpose">16.35 transpose</a></li>
-    <li><a name="toc-unsharp" href="#unsharp">16.36 unsharp</a></li>
-    <li><a name="toc-vflip" href="#vflip">16.37 vflip</a></li>
-    <li><a name="toc-yadif" href="#yadif">16.38 yadif</a></li>
-  </ul></li>
-  <li><a name="toc-Video-Sources" href="#Video-Sources">17. Video Sources</a>
-  <ul class="toc">
-    <li><a name="toc-buffer" href="#buffer">17.1 buffer</a></li>
-    <li><a name="toc-color" href="#color">17.2 color</a></li>
-    <li><a name="toc-movie" href="#movie">17.3 movie</a></li>
-    <li><a name="toc-mptestsrc" href="#mptestsrc">17.4 mptestsrc</a></li>
-    <li><a name="toc-nullsrc" href="#nullsrc">17.5 nullsrc</a></li>
-    <li><a name="toc-frei0r_005fsrc" href="#frei0r_005fsrc">17.6 frei0r_src</a></li>
-    <li><a name="toc-rgbtestsrc_002c-testsrc" href="#rgbtestsrc_002c-testsrc">17.7 rgbtestsrc, testsrc</a></li>
-  </ul></li>
-  <li><a name="toc-Video-Sinks" href="#Video-Sinks">18. Video Sinks</a>
-  <ul class="toc">
-    <li><a name="toc-buffersink" href="#buffersink">18.1 buffersink</a></li>
-    <li><a name="toc-nullsink" href="#nullsink">18.2 nullsink</a></li>
-  </ul>
-</li>
+  <li><a name="toc-See-Also" href="#See-Also">4. See Also</a></li>
+  <li><a name="toc-Authors" href="#Authors">5. Authors</a></li>
 </ul>
 </div>
 
-<hr size="1">
 <a name="Synopsis"></a>
 <h1 class="chapter"><a href="ffplay.html#toc-Synopsis">1. Synopsis</a></h1>
 
-<table><tr><td>&nbsp;</td><td><pre class="example">ffplay [options] [&lsquo;<tt>input_file</tt>&rsquo;]
-</pre></td></tr></table>
-
+<p>ffplay [<var>options</var>] [&lsquo;<tt>input_file</tt>&rsquo;]
+</p>
 <a name="Description"></a>
 <h1 class="chapter"><a href="ffplay.html#toc-Description">2. Description</a></h1>
 
@@ -247,24 +62,66 @@ ul.toc {list-style: none}
 libraries and the SDL library. It is mostly used as a testbed for the
 various FFmpeg APIs.
 </p>
-<a name="Options-4"></a>
-<h1 class="chapter"><a href="ffplay.html#toc-Options-4">3. Options</a></h1>
+<a name="Options"></a>
+<h1 class="chapter"><a href="ffplay.html#toc-Options">3. Options</a></h1>
 
-<p>All the numerical options, if not specified otherwise, accept in input
-a string representing a number, which may contain one of the
-International System number postfixes, for example &rsquo;K&rsquo;, &rsquo;M&rsquo;, &rsquo;G&rsquo;.
-If &rsquo;i&rsquo; is appended after the postfix, powers of 2 are used instead of
-powers of 10. The &rsquo;B&rsquo; postfix multiplies the value for 8, and can be
-appended after another postfix or used alone. This allows using for
-example &rsquo;KB&rsquo;, &rsquo;MiB&rsquo;, &rsquo;G&rsquo; and &rsquo;B&rsquo; as postfix.
+<p>All the numerical options, if not specified otherwise, accept a string
+representing a number as input, which may be followed by one of the SI
+unit prefixes, for example: &rsquo;K&rsquo;, &rsquo;M&rsquo;, or &rsquo;G&rsquo;.
+</p>
+<p>If &rsquo;i&rsquo; is appended to the SI unit prefix, the complete prefix will be
+interpreted as a unit prefix for binary multiplies, which are based on
+powers of 1024 instead of powers of 1000. Appending &rsquo;B&rsquo; to the SI unit
+prefix multiplies the value by 8. This allows using, for example:
+&rsquo;KB&rsquo;, &rsquo;MiB&rsquo;, &rsquo;G&rsquo; and &rsquo;B&rsquo; as number suffixes.
 </p>
 <p>Options which do not take arguments are boolean options, and set the
 corresponding value to true. They can be set to false by prefixing
-with &quot;no&quot; the option name, for example using &quot;-nofoo&quot; in the
-commandline will set to false the boolean option with name &quot;foo&quot;.
+the option name with &quot;no&quot;. For example using &quot;-nofoo&quot;
+will set the boolean option with name &quot;foo&quot; to false.
+</p>
+<p><a name="Stream-specifiers"></a>
+</p><a name="Stream-specifiers-1"></a>
+<h2 class="section"><a href="ffplay.html#toc-Stream-specifiers-1">3.1 Stream specifiers</a></h2>
+<p>Some options are applied per-stream, e.g. bitrate or codec. Stream specifiers
+are used to precisely specify which stream(s) a given option belongs to.
+</p>
+<p>A stream specifier is a string generally appended to the option name and
+separated from it by a colon. E.g. <code>-codec:a:1 ac3</code> contains the
+<code>a:1</code> stream specifier, which matches the second audio stream. Therefore, it
+would select the ac3 codec for the second audio stream.
+</p>
+<p>A stream specifier can match several streams, so that the option is applied to all
+of them. E.g. the stream specifier in <code>-b:a 128k</code> matches all audio
+streams.
+</p>
+<p>An empty stream specifier matches all streams. For example, <code>-codec copy</code>
+or <code>-codec: copy</code> would copy all the streams without reencoding.
 </p>
+<p>Possible forms of stream specifiers are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp><var>stream_index</var></samp>&rsquo;</dt>
+<dd><p>Matches the stream with this index. E.g. <code>-threads:1 4</code> would set the
+thread count for the second stream to 4.
+</p></dd>
+<dt> &lsquo;<samp><var>stream_type</var>[:<var>stream_index</var>]</samp>&rsquo;</dt>
+<dd><p><var>stream_type</var> is one of following: &rsquo;v&rsquo; for video, &rsquo;a&rsquo; for audio, &rsquo;s&rsquo; for subtitle,
+&rsquo;d&rsquo; for data, and &rsquo;t&rsquo; for attachments. If <var>stream_index</var> is given, then it matches
+stream number <var>stream_index</var> of this type. Otherwise, it matches all
+streams of this type.
+</p></dd>
+<dt> &lsquo;<samp>p:<var>program_id</var>[:<var>stream_index</var>]</samp>&rsquo;</dt>
+<dd><p>If <var>stream_index</var> is given, then it matches the stream with number <var>stream_index</var>
+in the program with the id <var>program_id</var>. Otherwise, it matches all streams in the
+program.
+</p></dd>
+<dt> &lsquo;<samp>#<var>stream_id</var></samp>&rsquo;</dt>
+<dd><p>Matches the stream by a format-specific ID.
+</p></dd>
+</dl>
+
 <a name="Generic-options"></a>
-<h2 class="section"><a href="ffplay.html#toc-Generic-options">3.1 Generic options</a></h2>
+<h2 class="section"><a href="ffplay.html#toc-Generic-options">3.2 Generic options</a></h2>
 
 <p>These options are shared amongst the ff* tools.
 </p>
@@ -273,9 +130,48 @@ commandline will set to false the boolean option with name &quot;foo&quot;.
 <dd><p>Show license.
 </p>
 </dd>
-<dt> &lsquo;<samp>-h, -?, -help, --help</samp>&rsquo;</dt>
-<dd><p>Show help.
+<dt> &lsquo;<samp>-h, -?, -help, --help [<var>arg</var>]</samp>&rsquo;</dt>
+<dd><p>Show help. An optional parameter may be specified to print help about a specific
+item. If no argument is specified, only basic (non advanced) tool
+options are shown.
+</p>
+<p>Possible values of <var>arg</var> are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>long</samp>&rsquo;</dt>
+<dd><p>Print advanced tool options in addition to the basic tool options.
+</p>
+</dd>
+<dt> &lsquo;<samp>full</samp>&rsquo;</dt>
+<dd><p>Print complete list of options, including shared and private options
+for encoders, decoders, demuxers, muxers, filters, etc.
+</p>
+</dd>
+<dt> &lsquo;<samp>decoder=<var>decoder_name</var></samp>&rsquo;</dt>
+<dd><p>Print detailed information about the decoder named <var>decoder_name</var>. Use the
+&lsquo;<samp>-decoders</samp>&rsquo; option to get a list of all decoders.
+</p>
+</dd>
+<dt> &lsquo;<samp>encoder=<var>encoder_name</var></samp>&rsquo;</dt>
+<dd><p>Print detailed information about the encoder named <var>encoder_name</var>. Use the
+&lsquo;<samp>-encoders</samp>&rsquo; option to get a list of all encoders.
+</p>
+</dd>
+<dt> &lsquo;<samp>demuxer=<var>demuxer_name</var></samp>&rsquo;</dt>
+<dd><p>Print detailed information about the demuxer named <var>demuxer_name</var>. Use the
+&lsquo;<samp>-formats</samp>&rsquo; option to get a list of all demuxers and muxers.
+</p>
+</dd>
+<dt> &lsquo;<samp>muxer=<var>muxer_name</var></samp>&rsquo;</dt>
+<dd><p>Print detailed information about the muxer named <var>muxer_name</var>. Use the
+&lsquo;<samp>-formats</samp>&rsquo; option to get a list of all muxers and demuxers.
 </p>
+</dd>
+<dt> &lsquo;<samp>filter=<var>filter_name</var></samp>&rsquo;</dt>
+<dd><p>Print detailed information about the filter name <var>filter_name</var>. Use the
+&lsquo;<samp>-filters</samp>&rsquo; option to get a list of all filters.
+</p></dd>
+</dl>
+
 </dd>
 <dt> &lsquo;<samp>-version</samp>&rsquo;</dt>
 <dd><p>Show version.
@@ -284,42 +180,21 @@ commandline will set to false the boolean option with name &quot;foo&quot;.
 <dt> &lsquo;<samp>-formats</samp>&rsquo;</dt>
 <dd><p>Show available formats.
 </p>
-<p>The fields preceding the format names have the following meanings:
-</p><dl compact="compact">
-<dt> &lsquo;<samp>D</samp>&rsquo;</dt>
-<dd><p>Decoding available
-</p></dd>
-<dt> &lsquo;<samp>E</samp>&rsquo;</dt>
-<dd><p>Encoding available
-</p></dd>
-</dl>
-
 </dd>
 <dt> &lsquo;<samp>-codecs</samp>&rsquo;</dt>
-<dd><p>Show available codecs.
+<dd><p>Show all codecs known to libavcodec.
+</p>
+<p>Note that the term &rsquo;codec&rsquo; is used throughout this documentation as a shortcut
+for what is more correctly called a media bitstream format.
+</p>
+</dd>
+<dt> &lsquo;<samp>-decoders</samp>&rsquo;</dt>
+<dd><p>Show available decoders.
+</p>
+</dd>
+<dt> &lsquo;<samp>-encoders</samp>&rsquo;</dt>
+<dd><p>Show all available encoders.
 </p>
-<p>The fields preceding the codec names have the following meanings:
-</p><dl compact="compact">
-<dt> &lsquo;<samp>D</samp>&rsquo;</dt>
-<dd><p>Decoding available
-</p></dd>
-<dt> &lsquo;<samp>E</samp>&rsquo;</dt>
-<dd><p>Encoding available
-</p></dd>
-<dt> &lsquo;<samp>V/A/S</samp>&rsquo;</dt>
-<dd><p>Video/audio/subtitle codec
-</p></dd>
-<dt> &lsquo;<samp>S</samp>&rsquo;</dt>
-<dd><p>Codec supports slices
-</p></dd>
-<dt> &lsquo;<samp>D</samp>&rsquo;</dt>
-<dd><p>Codec supports direct rendering
-</p></dd>
-<dt> &lsquo;<samp>T</samp>&rsquo;</dt>
-<dd><p>Codec can handle input truncated at random locations instead of only at frame boundaries
-</p></dd>
-</dl>
-
 </dd>
 <dt> &lsquo;<samp>-bsfs</samp>&rsquo;</dt>
 <dd><p>Show available bitstream filters.
@@ -337,41 +212,177 @@ commandline will set to false the boolean option with name &quot;foo&quot;.
 <dd><p>Show available pixel formats.
 </p>
 </dd>
-<dt> &lsquo;<samp>-loglevel <var>loglevel</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>-sample_fmts</samp>&rsquo;</dt>
+<dd><p>Show available sample formats.
+</p>
+</dd>
+<dt> &lsquo;<samp>-layouts</samp>&rsquo;</dt>
+<dd><p>Show channel names and standard channel layouts.
+</p>
+</dd>
+<dt> &lsquo;<samp>-colors</samp>&rsquo;</dt>
+<dd><p>Show recognized color names.
+</p>
+</dd>
+<dt> &lsquo;<samp>-loglevel [repeat+]<var>loglevel</var> | -v [repeat+]<var>loglevel</var></samp>&rsquo;</dt>
 <dd><p>Set the logging level used by the library.
+Adding &quot;repeat+&quot; indicates that repeated log output should not be compressed
+to the first line and the &quot;Last message repeated n times&quot; line will be
+omitted. &quot;repeat&quot; can also be used alone.
+If &quot;repeat&quot; is used alone, and with no prior loglevel set, the default
+loglevel will be used. If multiple loglevel parameters are given, using
+&rsquo;repeat&rsquo; will not change the loglevel.
 <var>loglevel</var> is a number or a string containing one of the following values:
 </p><dl compact="compact">
 <dt> &lsquo;<samp>quiet</samp>&rsquo;</dt>
+<dd><p>Show nothing at all; be silent.
+</p></dd>
 <dt> &lsquo;<samp>panic</samp>&rsquo;</dt>
+<dd><p>Only show fatal errors which could lead the process to crash, such as
+and assert failure. This is not currently used for anything.
+</p></dd>
 <dt> &lsquo;<samp>fatal</samp>&rsquo;</dt>
+<dd><p>Only show fatal errors. These are errors after which the process absolutely
+cannot continue after.
+</p></dd>
 <dt> &lsquo;<samp>error</samp>&rsquo;</dt>
+<dd><p>Show all errors, including ones which can be recovered from.
+</p></dd>
 <dt> &lsquo;<samp>warning</samp>&rsquo;</dt>
+<dd><p>Show all warnings and errors. Any message related to possibly
+incorrect or unexpected events will be shown.
+</p></dd>
 <dt> &lsquo;<samp>info</samp>&rsquo;</dt>
+<dd><p>Show informative messages during processing. This is in addition to
+warnings and errors. This is the default value.
+</p></dd>
 <dt> &lsquo;<samp>verbose</samp>&rsquo;</dt>
+<dd><p>Same as <code>info</code>, except more verbose.
+</p></dd>
 <dt> &lsquo;<samp>debug</samp>&rsquo;</dt>
+<dd><p>Show everything, including debugging information.
+</p></dd>
 </dl>
 
 <p>By default the program logs to stderr, if coloring is supported by the
 terminal, colors are used to mark errors and warnings. Log coloring
 can be disabled setting the environment variable
-<code>FFMPEG_FORCE_NOCOLOR</code> or <code>NO_COLOR</code>, or can be forced setting
-the environment variable <code>FFMPEG_FORCE_COLOR</code>.
+<code>AV_LOG_FORCE_NOCOLOR</code> or <code>NO_COLOR</code>, or can be forced setting
+the environment variable <code>AV_LOG_FORCE_COLOR</code>.
 The use of the environment variable <code>NO_COLOR</code> is deprecated and
 will be dropped in a following FFmpeg version.
 </p>
 </dd>
+<dt> &lsquo;<samp>-report</samp>&rsquo;</dt>
+<dd><p>Dump full command line and console output to a file named
+<code><var>program</var>-<var>YYYYMMDD</var>-<var>HHMMSS</var>.log</code> in the current
+directory.
+This file can be useful for bug reports.
+It also implies <code>-loglevel verbose</code>.
+</p>
+<p>Setting the environment variable <code>FFREPORT</code> to any value has the
+same effect. If the value is a &rsquo;:&rsquo;-separated key=value sequence, these
+options will affect the report; options values must be escaped if they
+contain special characters or the options delimiter &rsquo;:&rsquo; (see the
+&ldquo;Quoting and escaping&rdquo; section in the ffmpeg-utils manual). The
+following option is recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>file</samp>&rsquo;</dt>
+<dd><p>set the file name to use for the report; <code>%p</code> is expanded to the name
+of the program, <code>%t</code> is expanded to a timestamp, <code>%%</code> is expanded
+to a plain <code>%</code>
+</p></dd>
+</dl>
+
+<p>Errors in parsing the environment variable are not fatal, and will not
+appear in the report.
+</p>
+</dd>
+<dt> &lsquo;<samp>-cpuflags flags (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Allows setting and clearing cpu flags. This option is intended
+for testing. Do not use it unless you know what you&rsquo;re doing.
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -cpuflags -sse+mmx ...
+ffmpeg -cpuflags mmx ...
+ffmpeg -cpuflags 0 ...
+</pre></td></tr></table>
+<p>Possible flags for this option are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>x86</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>mmx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mmxext</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse2slow</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse3</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse3slow</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ssse3</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>atom</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse4.1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse4.2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>avx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>xop</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>fma4</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>3dnow</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>3dnowext</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>cmov</samp>&rsquo;</dt>
+</dl>
+</dd>
+<dt> &lsquo;<samp>ARM</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>armv5te</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>armv6</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>armv6t2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vfp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vfpv3</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>neon</samp>&rsquo;</dt>
+</dl>
+</dd>
+<dt> &lsquo;<samp>PowerPC</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>altivec</samp>&rsquo;</dt>
+</dl>
+</dd>
+<dt> &lsquo;<samp>Specific Processors</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>pentium2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>pentium3</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>pentium4</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>k6</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>k62</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>athlon</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>athlonxp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>k8</samp>&rsquo;</dt>
+</dl>
+</dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-opencl_bench</samp>&rsquo;</dt>
+<dd><p>Benchmark all available OpenCL devices and show the results. This option
+is only available when FFmpeg has been compiled with <code>--enable-opencl</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>-opencl_options options (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Set OpenCL environment options. This option is only available when
+FFmpeg has been compiled with <code>--enable-opencl</code>.
+</p>
+<p><var>options</var> must be a list of <var>key</var>=<var>value</var> option pairs
+separated by &rsquo;:&rsquo;. See the &ldquo;OpenCL Options&rdquo; section in the
+ffmpeg-utils manual for the list of supported options.
+</p></dd>
 </dl>
 
 <a name="AVOptions"></a>
-<h2 class="section"><a href="ffplay.html#toc-AVOptions">3.2 AVOptions</a></h2>
+<h2 class="section"><a href="ffplay.html#toc-AVOptions">3.3 AVOptions</a></h2>
 
 <p>These options are provided directly by the libavformat, libavdevice and
 libavcodec libraries. To see the list of available AVOptions, use the
 &lsquo;<samp>-help</samp>&rsquo; option. They are separated into two categories:
 </p><dl compact="compact">
 <dt> &lsquo;<samp>generic</samp>&rsquo;</dt>
-<dd><p>These options can be set for any container, codec or device. Generic options are
-listed under AVFormatContext options for containers/devices and under
+<dd><p>These options can be set for any container, codec or device. Generic options
+are listed under AVFormatContext options for containers/devices and under
 AVCodecContext options for codecs.
 </p></dd>
 <dt> &lsquo;<samp>private</samp>&rsquo;</dt>
@@ -386,27 +397,18 @@ muxer:
 </p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.flac -id3v2_version 3 out.mp3
 </pre></td></tr></table>
 
-<p>You can precisely specify which stream(s) should the codec AVOption apply to by
-appending a stream specifier of the form
-&lsquo;<samp>[:<var>stream_type</var>][:<var>stream_index</var>]</samp>&rsquo; to the option name.
-<var>stream_type</var> is &rsquo;v&rsquo; for video, &rsquo;a&rsquo; for audio and &rsquo;s&rsquo; for subtitle streams.
-<var>stream_index</var> is a global stream index when <var>stream_type</var> isn&rsquo;t
-given, otherwise it counts streams of the given type only. As always, the index
-is zero-based. For example
-</p><table><tr><td>&nbsp;</td><td><pre class="example">-foo -- applies to all applicable streams
--foo:v -- applies to all video streams
--foo:a:2 -- applies to the third audio stream
--foo:0 -- applies to the first stream
-</pre></td></tr></table>
-
-<p>Note -nooption syntax cannot be used for boolean AVOptions, use -option
-0/-option 1.
+<p>All codec AVOptions are per-stream, and thus a stream specifier
+should be attached to them.
 </p>
-<p>Note2 old undocumented way of specifying per-stream AVOptions by prepending
-v/a/s to the options name is now obsolete and will be removed soon.
+<p>Note: the &lsquo;<samp>-nooption</samp>&rsquo; syntax cannot be used for boolean
+AVOptions, use &lsquo;<samp>-option 0</samp>&rsquo;/&lsquo;<samp>-option 1</samp>&rsquo;.
+</p>
+<p>Note: the old undocumented way of specifying per-stream AVOptions by
+prepending v/a/s to the options name is now obsolete and will be
+removed soon.
 </p>
 <a name="Main-options"></a>
-<h2 class="section"><a href="ffplay.html#toc-Main-options">3.3 Main options</a></h2>
+<h2 class="section"><a href="ffplay.html#toc-Main-options">3.4 Main options</a></h2>
 
 <dl compact="compact">
 <dt> &lsquo;<samp>-x <var>width</var></samp>&rsquo;</dt>
@@ -469,11 +471,23 @@ Available values for <var>mode</var> are:
 pressing the key &lt;w&gt;.
 </p>
 </dd>
-<dt> &lsquo;<samp>-vf <var>filter_graph</var></samp>&rsquo;</dt>
-<dd><p><var>filter_graph</var> is a description of the filter graph to apply to
-the input video.
+<dt> &lsquo;<samp>-vf <var>filtergraph</var></samp>&rsquo;</dt>
+<dd><p>Create the filtergraph specified by <var>filtergraph</var> and use it to
+filter the video stream.
+</p>
+<p><var>filtergraph</var> is a description of the filtergraph to apply to
+the stream, and must have a single video input and a single video
+output. In the filtergraph, the input is associated to the label
+<code>in</code>, and the output to the label <code>out</code>. See the
+ffmpeg-filters manual for more information about the filtergraph
+syntax.
+</p>
+</dd>
+<dt> &lsquo;<samp>-af <var>filtergraph</var></samp>&rsquo;</dt>
+<dd><p><var>filtergraph</var> is a description of the filtergraph to apply to
+the input audio.
 Use the option &quot;-filters&quot; to show all the available filters (including
-also sources and sinks).
+sources and sinks).
 </p>
 </dd>
 <dt> &lsquo;<samp>-i <var>input_file</var></samp>&rsquo;</dt>
@@ -482,16 +496,20 @@ also sources and sinks).
 </dl>
 
 <a name="Advanced-options"></a>
-<h2 class="section"><a href="ffplay.html#toc-Advanced-options">3.4 Advanced options</a></h2>
+<h2 class="section"><a href="ffplay.html#toc-Advanced-options">3.5 Advanced options</a></h2>
 <dl compact="compact">
 <dt> &lsquo;<samp>-pix_fmt <var>format</var></samp>&rsquo;</dt>
 <dd><p>Set pixel format.
 This option has been deprecated in favor of private options, try -pixel_format.
-</p></dd>
+</p>
+</dd>
 <dt> &lsquo;<samp>-stats</samp>&rsquo;</dt>
-<dd><p>Show the stream duration, the codec parameters, the current position in
-the stream and the audio/video synchronisation drift.
-</p></dd>
+<dd><p>Print several playback statistics, in particular show the stream
+duration, the codec parameters, the current position in the stream and
+the audio/video synchronisation drift. It is on by default, to
+explicitly disable it you need to specify <code>-nostats</code>.
+</p>
+</dd>
 <dt> &lsquo;<samp>-bug</samp>&rsquo;</dt>
 <dd><p>Work around bugs.
 </p></dd>
@@ -542,11 +560,29 @@ selected, if it is negative the subtitle rendering is disabled.
 </p></dd>
 <dt> &lsquo;<samp>-exitonmousedown</samp>&rsquo;</dt>
 <dd><p>Exit if any mouse button is pressed.
+</p>
+</dd>
+<dt> &lsquo;<samp>-codec:<var>media_specifier</var> <var>codec_name</var></samp>&rsquo;</dt>
+<dd><p>Force a specific decoder implementation for the stream identified by
+<var>media_specifier</var>, which can assume the values <code>a</code> (audio),
+<code>v</code> (video), and <code>s</code> subtitle.
+</p>
+</dd>
+<dt> &lsquo;<samp>-acodec <var>codec_name</var></samp>&rsquo;</dt>
+<dd><p>Force a specific audio decoder.
+</p>
+</dd>
+<dt> &lsquo;<samp>-vcodec <var>codec_name</var></samp>&rsquo;</dt>
+<dd><p>Force a specific video decoder.
+</p>
+</dd>
+<dt> &lsquo;<samp>-scodec <var>codec_name</var></samp>&rsquo;</dt>
+<dd><p>Force a specific subtitle decoder.
 </p></dd>
 </dl>
 
 <a name="While-playing"></a>
-<h2 class="section"><a href="ffplay.html#toc-While-playing">3.5 While playing</a></h2>
+<h2 class="section"><a href="ffplay.html#toc-While-playing">3.6 While playing</a></h2>
 
 <dl compact="compact">
 <dt> &lt;q, ESC&gt;</dt>
@@ -562,7 +598,7 @@ selected, if it is negative the subtitle rendering is disabled.
 </p>
 </dd>
 <dt> &lt;a&gt;</dt>
-<dd><p>Cycle audio channel.
+<dd><p>Cycle audio channel in the curret program.
 </p>
 </dd>
 <dt> &lt;v&gt;</dt>
@@ -570,7 +606,11 @@ selected, if it is negative the subtitle rendering is disabled.
 </p>
 </dd>
 <dt> &lt;t&gt;</dt>
-<dd><p>Cycle subtitle channel.
+<dd><p>Cycle subtitle channel in the current program.
+</p>
+</dd>
+<dt> &lt;c&gt;</dt>
+<dd><p>Cycle program.
 </p>
 </dd>
 <dt> &lt;w&gt;</dt>
@@ -585,4211 +625,47 @@ selected, if it is negative the subtitle rendering is disabled.
 <dd><p>Seek backward/forward 1 minute.
 </p>
 </dd>
-<dt> &lt;mouse click&gt;</dt>
-<dd><p>Seek to percentage in file corresponding to fraction of width.
-</p>
-</dd>
-</dl>
-
-
-<a name="Expression-Evaluation"></a>
-<h1 class="chapter"><a href="ffplay.html#toc-Expression-Evaluation">4. Expression Evaluation</a></h1>
-
-<p>When evaluating an arithemetic expression, FFmpeg uses an internal
-formula evaluator, implemented through the &lsquo;<tt>libavutil/eval.h</tt>&rsquo;
-interface.
-</p>
-<p>An expression may contain unary, binary operators, constants, and
-functions.
-</p>
-<p>Two expressions <var>expr1</var> and <var>expr2</var> can be combined to form
-another expression &quot;<var>expr1</var>;<var>expr2</var>&quot;.
-<var>expr1</var> and <var>expr2</var> are evaluated in turn, and the new
-expression evaluates to the value of <var>expr2</var>.
-</p>
-<p>The following binary operators are available: <code>+</code>, <code>-</code>,
-<code>*</code>, <code>/</code>, <code>^</code>.
-</p>
-<p>The following unary operators are available: <code>+</code>, <code>-</code>.
-</p>
-<p>The following functions are available:
-</p><dl compact="compact">
-<dt> &lsquo;<samp>sinh(x)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>cosh(x)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>tanh(x)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>sin(x)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>cos(x)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>tan(x)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>atan(x)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>asin(x)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>acos(x)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>exp(x)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>log(x)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>abs(x)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>squish(x)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>gauss(x)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>isnan(x)</samp>&rsquo;</dt>
-<dd><p>Return 1.0 if <var>x</var> is NAN, 0.0 otherwise.
-</p>
-</dd>
-<dt> &lsquo;<samp>mod(x, y)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>max(x, y)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>min(x, y)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>eq(x, y)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>gte(x, y)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>gt(x, y)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>lte(x, y)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>lt(x, y)</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>st(var, expr)</samp>&rsquo;</dt>
-<dd><p>Allow to store the value of the expression <var>expr</var> in an internal
-variable. <var>var</var> specifies the number of the variable where to
-store the value, and it is a value ranging from 0 to 9. The function
-returns the value stored in the internal variable.
-</p>
-</dd>
-<dt> &lsquo;<samp>ld(var)</samp>&rsquo;</dt>
-<dd><p>Allow to load the value of the internal variable with number
-<var>var</var>, which was previosly stored with st(<var>var</var>, <var>expr</var>).
-The function returns the loaded value.
-</p>
-</dd>
-<dt> &lsquo;<samp>while(cond, expr)</samp>&rsquo;</dt>
-<dd><p>Evaluate expression <var>expr</var> while the expression <var>cond</var> is
-non-zero, and returns the value of the last <var>expr</var> evaluation, or
-NAN if <var>cond</var> was always false.
-</p>
-</dd>
-<dt> &lsquo;<samp>ceil(expr)</samp>&rsquo;</dt>
-<dd><p>Round the value of expression <var>expr</var> upwards to the nearest
-integer. For example, &quot;ceil(1.5)&quot; is &quot;2.0&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>floor(expr)</samp>&rsquo;</dt>
-<dd><p>Round the value of expression <var>expr</var> downwards to the nearest
-integer. For example, &quot;floor(-1.5)&quot; is &quot;-2.0&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>trunc(expr)</samp>&rsquo;</dt>
-<dd><p>Round the value of expression <var>expr</var> towards zero to the nearest
-integer. For example, &quot;trunc(-1.5)&quot; is &quot;-1.0&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>sqrt(expr)</samp>&rsquo;</dt>
-<dd><p>Compute the square root of <var>expr</var>. This is equivalent to
-&quot;(<var>expr</var>)^.5&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>not(expr)</samp>&rsquo;</dt>
-<dd><p>Return 1.0 if <var>expr</var> is zero, 0.0 otherwise.
+<dt> &lt;page down/page up&gt;</dt>
+<dd><p>Seek backward/forward 10 minutes.
 </p>
 </dd>
-<dt> &lsquo;<samp>pow(x, y)</samp>&rsquo;</dt>
-<dd><p>Compute the power of <var>x</var> elevated <var>y</var>, it is equivalent to
-&quot;(<var>x</var>)^(<var>y</var>)&quot;.
-</p></dd>
-</dl>
-
-<p>Note that:
-</p>
-<p><code>*</code> works like AND
-</p>
-<p><code>+</code> works like OR
-</p>
-<p>thus
-</p><table><tr><td>&nbsp;</td><td><pre class="example">if A then B else C
-</pre></td></tr></table>
-<p>is equivalent to
-</p><table><tr><td>&nbsp;</td><td><pre class="example">A*B + not(A)*C
-</pre></td></tr></table>
-
-<p>In your C code, you can extend the list of unary and binary functions,
-and define recognized constants, so that they are available for your
-expressions.
-</p>
-<p>The evaluator also recognizes the International System number
-postfixes. If &rsquo;i&rsquo; is appended after the postfix, powers of 2 are used
-instead of powers of 10. The &rsquo;B&rsquo; postfix multiplies the value for 8,
-and can be appended after another postfix or used alone. This allows
-using for example &rsquo;KB&rsquo;, &rsquo;MiB&rsquo;, &rsquo;G&rsquo; and &rsquo;B&rsquo; as postfix.
-</p>
-<p>Follows the list of available International System postfixes, with
-indication of the corresponding powers of 10 and of 2.
-</p><dl compact="compact">
-<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
-<dd><p>-24 / -80
-</p></dd>
-<dt> &lsquo;<samp>z</samp>&rsquo;</dt>
-<dd><p>-21 / -70
-</p></dd>
-<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
-<dd><p>-18 / -60
-</p></dd>
-<dt> &lsquo;<samp>f</samp>&rsquo;</dt>
-<dd><p>-15 / -50
-</p></dd>
-<dt> &lsquo;<samp>p</samp>&rsquo;</dt>
-<dd><p>-12 / -40
-</p></dd>
-<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
-<dd><p>-9 / -30
-</p></dd>
-<dt> &lsquo;<samp>u</samp>&rsquo;</dt>
-<dd><p>-6 / -20
-</p></dd>
-<dt> &lsquo;<samp>m</samp>&rsquo;</dt>
-<dd><p>-3 / -10
-</p></dd>
-<dt> &lsquo;<samp>c</samp>&rsquo;</dt>
-<dd><p>-2
-</p></dd>
-<dt> &lsquo;<samp>d</samp>&rsquo;</dt>
-<dd><p>-1
-</p></dd>
-<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
-<dd><p>2
-</p></dd>
-<dt> &lsquo;<samp>k</samp>&rsquo;</dt>
-<dd><p>3 / 10
-</p></dd>
-<dt> &lsquo;<samp>K</samp>&rsquo;</dt>
-<dd><p>3 / 10
-</p></dd>
-<dt> &lsquo;<samp>M</samp>&rsquo;</dt>
-<dd><p>6 / 20
-</p></dd>
-<dt> &lsquo;<samp>G</samp>&rsquo;</dt>
-<dd><p>9 / 30
-</p></dd>
-<dt> &lsquo;<samp>T</samp>&rsquo;</dt>
-<dd><p>12 / 40
-</p></dd>
-<dt> &lsquo;<samp>P</samp>&rsquo;</dt>
-<dd><p>15 / 40
-</p></dd>
-<dt> &lsquo;<samp>E</samp>&rsquo;</dt>
-<dd><p>18 / 50
-</p></dd>
-<dt> &lsquo;<samp>Z</samp>&rsquo;</dt>
-<dd><p>21 / 60
-</p></dd>
-<dt> &lsquo;<samp>Y</samp>&rsquo;</dt>
-<dd><p>24 / 70
-</p></dd>
-</dl>
-
-<a name="Decoders"></a>
-<h1 class="chapter"><a href="ffplay.html#toc-Decoders">5. Decoders</a></h1>
-
-<p>Decoders are configured elements in FFmpeg which allow the decoding of
-multimedia streams.
-</p>
-<p>When you configure your FFmpeg build, all the supported native decoders
-are enabled by default. Decoders requiring an external library must be enabled
-manually via the corresponding <code>--enable-lib</code> option. You can list all
-available decoders using the configure option <code>--list-decoders</code>.
-</p>
-<p>You can disable all the decoders with the configure option
-<code>--disable-decoders</code> and selectively enable / disable single decoders
-with the options <code>--enable-decoder=<var>DECODER</var></code> /
-<code>--disable-decoder=<var>DECODER</var></code>.
-</p>
-<p>The option <code>-codecs</code> of the ff* tools will display the list of
-enabled decoders.
-</p>
-
-<a name="Video-Decoders"></a>
-<h1 class="chapter"><a href="ffplay.html#toc-Video-Decoders">6. Video Decoders</a></h1>
-
-<p>A description of some of the currently available video decoders
-follows.
-</p>
-<a name="rawvideo"></a>
-<h2 class="section"><a href="ffplay.html#toc-rawvideo">6.1 rawvideo</a></h2>
-
-<p>Rawvideo decoder.
-</p>
-<p>This decoder decodes rawvideo streams.
+<dt> &lt;mouse click&gt;</dt>
+<dd><p>Seek to percentage in file corresponding to fraction of width.
 </p>
-<a name="Options-3"></a>
-<h3 class="subsection"><a href="ffplay.html#toc-Options-3">6.1.1 Options</a></h3>
-
-<dl compact="compact">
-<dt> &lsquo;<samp>top <var>top_field_first</var></samp>&rsquo;</dt>
-<dd><p>Specify the assumed field type of the input video.
-</p><dl compact="compact">
-<dt> &lsquo;<samp>-1</samp>&rsquo;</dt>
-<dd><p>the video is assumed to be progressive (default)
-</p></dd>
-<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
-<dd><p>bottom-field-first is assumed
-</p></dd>
-<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
-<dd><p>top-field-first is assumed
-</p></dd>
-</dl>
-
 </dd>
 </dl>
 
-<a name="Demuxers"></a>
-<h1 class="chapter"><a href="ffplay.html#toc-Demuxers">7. Demuxers</a></h1>
-
-<p>Demuxers are configured elements in FFmpeg which allow to read the
-multimedia streams from a particular type of file.
-</p>
-<p>When you configure your FFmpeg build, all the supported demuxers
-are enabled by default. You can list all available ones using the
-configure option &quot;&ndash;list-demuxers&quot;.
-</p>
-<p>You can disable all the demuxers using the configure option
-&quot;&ndash;disable-demuxers&quot;, and selectively enable a single demuxer with
-the option &quot;&ndash;enable-demuxer=<var>DEMUXER</var>&quot;, or disable it
-with the option &quot;&ndash;disable-demuxer=<var>DEMUXER</var>&quot;.
-</p>
-<p>The option &quot;-formats&quot; of the ff* tools will display the list of
-enabled demuxers.
-</p>
-<p>The description of some of the currently available demuxers follows.
-</p>
-<a name="image2-1"></a>
-<h2 class="section"><a href="ffplay.html#toc-image2-1">7.1 image2</a></h2>
-
-<p>Image file demuxer.
-</p>
-<p>This demuxer reads from a list of image files specified by a pattern.
-</p>
-<p>The pattern may contain the string &quot;%d&quot; or &quot;%0<var>N</var>d&quot;, which
-specifies the position of the characters representing a sequential
-number in each filename matched by the pattern. If the form
-&quot;%d0<var>N</var>d&quot; is used, the string representing the number in each
-filename is 0-padded and <var>N</var> is the total number of 0-padded
-digits representing the number. The literal character &rsquo;%&rsquo; can be
-specified in the pattern with the string &quot;%%&quot;.
-</p>
-<p>If the pattern contains &quot;%d&quot; or &quot;%0<var>N</var>d&quot;, the first filename of
-the file list specified by the pattern must contain a number
-inclusively contained between 0 and 4, all the following numbers must
-be sequential. This limitation may be hopefully fixed.
-</p>
-<p>The pattern may contain a suffix which is used to automatically
-determine the format of the images contained in the files.
-</p>
-<p>For example the pattern &quot;img-%03d.bmp&quot; will match a sequence of
-filenames of the form &lsquo;<tt>img-001.bmp</tt>&rsquo;, &lsquo;<tt>img-002.bmp</tt>&rsquo;, ...,
-&lsquo;<tt>img-010.bmp</tt>&rsquo;, etc.; the pattern &quot;i%%m%%g-%d.jpg&quot; will match a
-sequence of filenames of the form &lsquo;<tt>i%m%g-1.jpg</tt>&rsquo;,
-&lsquo;<tt>i%m%g-2.jpg</tt>&rsquo;, ..., &lsquo;<tt>i%m%g-10.jpg</tt>&rsquo;, etc.
-</p>
-<p>The size, the pixel format, and the format of each image must be the
-same for all the files in the sequence.
-</p>
-<p>The following example shows how to use &lsquo;<tt>ffmpeg</tt>&rsquo; for creating a
-video from the images in the file sequence &lsquo;<tt>img-001.jpeg</tt>&rsquo;,
-&lsquo;<tt>img-002.jpeg</tt>&rsquo;, ..., assuming an input framerate of 10 frames per
-second:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -r 10 -f image2 -i 'img-%03d.jpeg' out.avi
-</pre></td></tr></table>
 
-<p>Note that the pattern must not necessarily contain &quot;%d&quot; or
-&quot;%0<var>N</var>d&quot;, for example to convert a single image file
-&lsquo;<tt>img.jpeg</tt>&rsquo; you can employ the command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f image2 -i img.jpeg img.png
-</pre></td></tr></table>
 
-<a name="applehttp"></a>
-<h2 class="section"><a href="ffplay.html#toc-applehttp">7.2 applehttp</a></h2>
+<a name="See-Also"></a>
+<h1 class="chapter"><a href="ffplay.html#toc-See-Also">4. See Also</a></h1>
 
-<p>Apple HTTP Live Streaming demuxer.
-</p>
-<p>This demuxer presents all AVStreams from all variant streams.
-The id field is set to the bitrate variant index number. By setting
-the discard flags on AVStreams (by pressing &rsquo;a&rsquo; or &rsquo;v&rsquo; in ffplay),
-the caller can decide which variant streams to actually receive.
-The total bitrate of the variant that the stream belongs to is
-available in a metadata key named &quot;variant_bitrate&quot;.
+<p><a href="ffplay-all.html">ffmpeg-all</a>,
+<a href="ffmpeg.html">ffmpeg</a>, <a href="ffprobe.html">ffprobe</a>, <a href="ffserver.html">ffserver</a>,
+<a href="ffmpeg-utils.html">ffmpeg-utils</a>,
+<a href="ffmpeg-scaler.html">ffmpeg-scaler</a>,
+<a href="ffmpeg-resampler.html">ffmpeg-resampler</a>,
+<a href="ffmpeg-codecs.html">ffmpeg-codecs</a>,
+<a href="ffmpeg-bitstream-filters.html">ffmpeg-bitstream-filters</a>,
+<a href="ffmpeg-formats.html">ffmpeg-formats</a>,
+<a href="ffmpeg-devices.html">ffmpeg-devices</a>,
+<a href="ffmpeg-protocols.html">ffmpeg-protocols</a>,
+<a href="ffmpeg-filters.html">ffmpeg-filters</a>
 </p>
-<a name="Muxers"></a>
-<h1 class="chapter"><a href="ffplay.html#toc-Muxers">8. Muxers</a></h1>
 
-<p>Muxers are configured elements in FFmpeg which allow writing
-multimedia streams to a particular type of file.
-</p>
-<p>When you configure your FFmpeg build, all the supported muxers
-are enabled by default. You can list all available muxers using the
-configure option <code>--list-muxers</code>.
-</p>
-<p>You can disable all the muxers with the configure option
-<code>--disable-muxers</code> and selectively enable / disable single muxers
-with the options <code>--enable-muxer=<var>MUXER</var></code> /
-<code>--disable-muxer=<var>MUXER</var></code>.
-</p>
-<p>The option <code>-formats</code> of the ff* tools will display the list of
-enabled muxers.
-</p>
-<p>A description of some of the currently available muxers follows.
-</p>
-<p><a name="crc"></a>
-</p><a name="crc-1"></a>
-<h2 class="section"><a href="ffplay.html#toc-crc-1">8.1 crc</a></h2>
+<a name="Authors"></a>
+<h1 class="chapter"><a href="ffplay.html#toc-Authors">5. Authors</a></h1>
 
-<p>CRC (Cyclic Redundancy Check) testing format.
-</p>
-<p>This muxer computes and prints the Adler-32 CRC of all the input audio
-and video frames. By default audio frames are converted to signed
-16-bit raw audio and video frames to raw video before computing the
-CRC.
+<p>The FFmpeg developers.
 </p>
-<p>The output of the muxer consists of a single line of the form:
-CRC=0x<var>CRC</var>, where <var>CRC</var> is a hexadecimal number 0-padded to
-8 digits containing the CRC for all the decoded input frames.
+<p>For details about the authorship, see the Git history of the project
+(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
+<code>git log</code> in the FFmpeg source directory, or browsing the
+online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
 </p>
-<p>For example to compute the CRC of the input, and store it in the file
-&lsquo;<tt>out.crc</tt>&rsquo;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f crc out.crc
-</pre></td></tr></table>
-
-<p>You can print the CRC to stdout with the command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f crc -
-</pre></td></tr></table>
-
-<p>You can select the output format of each frame with &lsquo;<tt>ffmpeg</tt>&rsquo; by
-specifying the audio and video codec and format. For example to
-compute the CRC of the input audio converted to PCM unsigned 8-bit
-and the input video converted to MPEG-2 video, use the command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -acodec pcm_u8 -vcodec mpeg2video -f crc -
-</pre></td></tr></table>
-
-<p>See also the <a href="#framecrc">framecrc</a> muxer.
+<p>Maintainers for the specific components are listed in the file
+&lsquo;<tt>MAINTAINERS</tt>&rsquo; in the source code tree.
 </p>
-<p><a name="framecrc"></a>
-</p><a name="framecrc-1"></a>
-<h2 class="section"><a href="ffplay.html#toc-framecrc-1">8.2 framecrc</a></h2>
 
-<p>Per-frame CRC (Cyclic Redundancy Check) testing format.
-</p>
-<p>This muxer computes and prints the Adler-32 CRC for each decoded audio
-and video frame. By default audio frames are converted to signed
-16-bit raw audio and video frames to raw video before computing the
-CRC.
-</p>
-<p>The output of the muxer consists of a line for each audio and video
-frame of the form: <var>stream_index</var>, <var>frame_dts</var>,
-<var>frame_size</var>, 0x<var>CRC</var>, where <var>CRC</var> is a hexadecimal
-number 0-padded to 8 digits containing the CRC of the decoded frame.
-</p>
-<p>For example to compute the CRC of each decoded frame in the input, and
-store it in the file &lsquo;<tt>out.crc</tt>&rsquo;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f framecrc out.crc
-</pre></td></tr></table>
-
-<p>You can print the CRC of each decoded frame to stdout with the command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f framecrc -
-</pre></td></tr></table>
-
-<p>You can select the output format of each frame with &lsquo;<tt>ffmpeg</tt>&rsquo; by
-specifying the audio and video codec and format. For example, to
-compute the CRC of each decoded input audio frame converted to PCM
-unsigned 8-bit and of each decoded input video frame converted to
-MPEG-2 video, use the command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -acodec pcm_u8 -vcodec mpeg2video -f framecrc -
-</pre></td></tr></table>
-
-<p>See also the <a href="#crc">crc</a> muxer.
-</p>
-<a name="image2"></a>
-<h2 class="section"><a href="ffplay.html#toc-image2">8.3 image2</a></h2>
-
-<p>Image file muxer.
-</p>
-<p>The image file muxer writes video frames to image files.
-</p>
-<p>The output filenames are specified by a pattern, which can be used to
-produce sequentially numbered series of files.
-The pattern may contain the string &quot;%d&quot; or &quot;%0<var>N</var>d&quot;, this string
-specifies the position of the characters representing a numbering in
-the filenames. If the form &quot;%0<var>N</var>d&quot; is used, the string
-representing the number in each filename is 0-padded to <var>N</var>
-digits. The literal character &rsquo;%&rsquo; can be specified in the pattern with
-the string &quot;%%&quot;.
-</p>
-<p>If the pattern contains &quot;%d&quot; or &quot;%0<var>N</var>d&quot;, the first filename of
-the file list specified will contain the number 1, all the following
-numbers will be sequential.
-</p>
-<p>The pattern may contain a suffix which is used to automatically
-determine the format of the image files to write.
-</p>
-<p>For example the pattern &quot;img-%03d.bmp&quot; will specify a sequence of
-filenames of the form &lsquo;<tt>img-001.bmp</tt>&rsquo;, &lsquo;<tt>img-002.bmp</tt>&rsquo;, ...,
-&lsquo;<tt>img-010.bmp</tt>&rsquo;, etc.
-The pattern &quot;img%%-%d.jpg&quot; will specify a sequence of filenames of the
-form &lsquo;<tt>img%-1.jpg</tt>&rsquo;, &lsquo;<tt>img%-2.jpg</tt>&rsquo;, ..., &lsquo;<tt>img%-10.jpg</tt>&rsquo;,
-etc.
-</p>
-<p>The following example shows how to use &lsquo;<tt>ffmpeg</tt>&rsquo; for creating a
-sequence of files &lsquo;<tt>img-001.jpeg</tt>&rsquo;, &lsquo;<tt>img-002.jpeg</tt>&rsquo;, ...,
-taking one image every second from the input video:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -r 1 -f image2 'img-%03d.jpeg'
-</pre></td></tr></table>
-
-<p>Note that with &lsquo;<tt>ffmpeg</tt>&rsquo;, if the format is not specified with the
-<code>-f</code> option and the output filename specifies an image file
-format, the image2 muxer is automatically selected, so the previous
-command can be written as:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -r 1 'img-%03d.jpeg'
-</pre></td></tr></table>
-
-<p>Note also that the pattern must not necessarily contain &quot;%d&quot; or
-&quot;%0<var>N</var>d&quot;, for example to create a single image file
-&lsquo;<tt>img.jpeg</tt>&rsquo; from the input video you can employ the command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -f image2 -vframes 1 img.jpeg
-</pre></td></tr></table>
-
-<p>The image muxer supports the .Y.U.V image file format. This format is
-special in that that each image frame consists of three files, for
-each of the YUV420P components. To read or write this image file format,
-specify the name of the &rsquo;.Y&rsquo; file. The muxer will automatically open the
-&rsquo;.U&rsquo; and &rsquo;.V&rsquo; files as required.
-</p>
-<a name="mpegts"></a>
-<h2 class="section"><a href="ffplay.html#toc-mpegts">8.4 mpegts</a></h2>
-
-<p>MPEG transport stream muxer.
-</p>
-<p>This muxer implements ISO 13818-1 and part of ETSI EN 300 468.
-</p>
-<p>The muxer options are:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>-mpegts_original_network_id <var>number</var></samp>&rsquo;</dt>
-<dd><p>Set the original_network_id (default 0x0001). This is unique identifier
-of a network in DVB. Its main use is in the unique identification of a
-service through the path Original_Network_ID, Transport_Stream_ID.
-</p></dd>
-<dt> &lsquo;<samp>-mpegts_transport_stream_id <var>number</var></samp>&rsquo;</dt>
-<dd><p>Set the transport_stream_id (default 0x0001). This identifies a
-transponder in DVB.
-</p></dd>
-<dt> &lsquo;<samp>-mpegts_service_id <var>number</var></samp>&rsquo;</dt>
-<dd><p>Set the service_id (default 0x0001) also known as program in DVB.
-</p></dd>
-<dt> &lsquo;<samp>-mpegts_pmt_start_pid <var>number</var></samp>&rsquo;</dt>
-<dd><p>Set the first PID for PMT (default 0x1000, max 0x1f00).
-</p></dd>
-<dt> &lsquo;<samp>-mpegts_start_pid <var>number</var></samp>&rsquo;</dt>
-<dd><p>Set the first PID for data packets (default 0x0100, max 0x0f00).
-</p></dd>
-</dl>
-
-<p>The recognized metadata settings in mpegts muxer are <code>service_provider</code>
-and <code>service_name</code>. If they are not set the default for
-<code>service_provider</code> is &quot;FFmpeg&quot; and the default for
-<code>service_name</code> is &quot;Service01&quot;.
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i file.mpg -acodec copy -vcodec copy \
-     -mpegts_original_network_id 0x1122 \
-     -mpegts_transport_stream_id 0x3344 \
-     -mpegts_service_id 0x5566 \
-     -mpegts_pmt_start_pid 0x1500 \
-     -mpegts_start_pid 0x150 \
-     -metadata service_provider=&quot;Some provider&quot; \
-     -metadata service_name=&quot;Some Channel&quot; \
-     -y out.ts
-</pre></td></tr></table>
-
-<a name="null"></a>
-<h2 class="section"><a href="ffplay.html#toc-null">8.5 null</a></h2>
-
-<p>Null muxer.
-</p>
-<p>This muxer does not generate any output file, it is mainly useful for
-testing or benchmarking purposes.
-</p>
-<p>For example to benchmark decoding with &lsquo;<tt>ffmpeg</tt>&rsquo; you can use the
-command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -benchmark -i INPUT -f null out.null
-</pre></td></tr></table>
-
-<p>Note that the above command does not read or write the &lsquo;<tt>out.null</tt>&rsquo;
-file, but specifying the output file is required by the &lsquo;<tt>ffmpeg</tt>&rsquo;
-syntax.
-</p>
-<p>Alternatively you can write the command as:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -benchmark -i INPUT -f null -
-</pre></td></tr></table>
-
-<a name="matroska"></a>
-<h2 class="section"><a href="ffplay.html#toc-matroska">8.6 matroska</a></h2>
-
-<p>Matroska container muxer.
-</p>
-<p>This muxer implements the matroska and webm container specs.
-</p>
-<p>The recognized metadata settings in this muxer are:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>title=<var>title name</var></samp>&rsquo;</dt>
-<dd><p>Name provided to a single track
-</p></dd>
-</dl>
-
-<dl compact="compact">
-<dt> &lsquo;<samp>language=<var>language name</var></samp>&rsquo;</dt>
-<dd><p>Specifies the language of the track in the Matroska languages form
-</p></dd>
-</dl>
-
-<dl compact="compact">
-<dt> &lsquo;<samp>stereo_mode=<var>mode</var></samp>&rsquo;</dt>
-<dd><p>Stereo 3D video layout of two views in a single video track
-</p><dl compact="compact">
-<dt> &lsquo;<samp>mono</samp>&rsquo;</dt>
-<dd><p>video is not stereo
-</p></dd>
-<dt> &lsquo;<samp>left_right</samp>&rsquo;</dt>
-<dd><p>Both views are arranged side by side, Left-eye view is on the left
-</p></dd>
-<dt> &lsquo;<samp>bottom_top</samp>&rsquo;</dt>
-<dd><p>Both views are arranged in top-bottom orientation, Left-eye view is at bottom
-</p></dd>
-<dt> &lsquo;<samp>top_bottom</samp>&rsquo;</dt>
-<dd><p>Both views are arranged in top-bottom orientation, Left-eye view is on top
-</p></dd>
-<dt> &lsquo;<samp>checkerboard_rl</samp>&rsquo;</dt>
-<dd><p>Each view is arranged in a checkerboard interleaved pattern, Left-eye view being first
-</p></dd>
-<dt> &lsquo;<samp>checkerboard_lr</samp>&rsquo;</dt>
-<dd><p>Each view is arranged in a checkerboard interleaved pattern, Right-eye view being first
-</p></dd>
-<dt> &lsquo;<samp>row_interleaved_rl</samp>&rsquo;</dt>
-<dd><p>Each view is constituted by a row based interleaving, Right-eye view is first row
-</p></dd>
-<dt> &lsquo;<samp>row_interleaved_lr</samp>&rsquo;</dt>
-<dd><p>Each view is constituted by a row based interleaving, Left-eye view is first row
-</p></dd>
-<dt> &lsquo;<samp>col_interleaved_rl</samp>&rsquo;</dt>
-<dd><p>Both views are arranged in a column based interleaving manner, Right-eye view is first column
-</p></dd>
-<dt> &lsquo;<samp>col_interleaved_lr</samp>&rsquo;</dt>
-<dd><p>Both views are arranged in a column based interleaving manner, Left-eye view is first column
-</p></dd>
-<dt> &lsquo;<samp>anaglyph_cyan_red</samp>&rsquo;</dt>
-<dd><p>All frames are in anaglyph format viewable through red-cyan filters
-</p></dd>
-<dt> &lsquo;<samp>right_left</samp>&rsquo;</dt>
-<dd><p>Both views are arranged side by side, Right-eye view is on the left
-</p></dd>
-<dt> &lsquo;<samp>anaglyph_green_magenta</samp>&rsquo;</dt>
-<dd><p>All frames are in anaglyph format viewable through green-magenta filters
-</p></dd>
-<dt> &lsquo;<samp>block_lr</samp>&rsquo;</dt>
-<dd><p>Both eyes laced in one Block, Left-eye view is first
-</p></dd>
-<dt> &lsquo;<samp>block_rl</samp>&rsquo;</dt>
-<dd><p>Both eyes laced in one Block, Right-eye view is first
-</p></dd>
-</dl>
-</dd>
-</dl>
-
-<p>For example a 3D WebM clip can be created using the following command line:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i sample_left_right_clip.mpg -an -vcodec libvpx -metadata stereo_mode=left_right -y stereo_clip.webm
-</pre></td></tr></table>
-
-<a name="Input-Devices"></a>
-<h1 class="chapter"><a href="ffplay.html#toc-Input-Devices">9. Input Devices</a></h1>
-
-<p>Input devices are configured elements in FFmpeg which allow to access
-the data coming from a multimedia device attached to your system.
-</p>
-<p>When you configure your FFmpeg build, all the supported input devices
-are enabled by default. You can list all available ones using the
-configure option &quot;&ndash;list-indevs&quot;.
-</p>
-<p>You can disable all the input devices using the configure option
-&quot;&ndash;disable-indevs&quot;, and selectively enable an input device using the
-option &quot;&ndash;enable-indev=<var>INDEV</var>&quot;, or you can disable a particular
-input device using the option &quot;&ndash;disable-indev=<var>INDEV</var>&quot;.
-</p>
-<p>The option &quot;-formats&quot; of the ff* tools will display the list of
-supported input devices (amongst the demuxers).
-</p>
-<p>A description of the currently available input devices follows.
-</p>
-<a name="alsa-1"></a>
-<h2 class="section"><a href="ffplay.html#toc-alsa-1">9.1 alsa</a></h2>
-
-<p>ALSA (Advanced Linux Sound Architecture) input device.
-</p>
-<p>To enable this input device during configuration you need libasound
-installed on your system.
-</p>
-<p>This device allows capturing from an ALSA device. The name of the
-device to capture has to be an ALSA card identifier.
-</p>
-<p>An ALSA identifier has the syntax:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">hw:<var>CARD</var>[,<var>DEV</var>[,<var>SUBDEV</var>]]
-</pre></td></tr></table>
-
-<p>where the <var>DEV</var> and <var>SUBDEV</var> components are optional.
-</p>
-<p>The three arguments (in order: <var>CARD</var>,<var>DEV</var>,<var>SUBDEV</var>)
-specify card number or identifier, device number and subdevice number
-(-1 means any).
-</p>
-<p>To see the list of cards currently recognized by your system check the
-files &lsquo;<tt>/proc/asound/cards</tt>&rsquo; and &lsquo;<tt>/proc/asound/devices</tt>&rsquo;.
-</p>
-<p>For example to capture with &lsquo;<tt>ffmpeg</tt>&rsquo; from an ALSA device with
-card id 0, you may run the command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f alsa -i hw:0 alsaout.wav
-</pre></td></tr></table>
-
-<p>For more information see:
-<a href="http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html">http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html</a>
-</p>
-<a name="bktr"></a>
-<h2 class="section"><a href="ffplay.html#toc-bktr">9.2 bktr</a></h2>
-
-<p>BSD video input device.
-</p>
-<a name="dv1394"></a>
-<h2 class="section"><a href="ffplay.html#toc-dv1394">9.3 dv1394</a></h2>
-
-<p>Linux DV 1394 input device.
-</p>
-<a name="fbdev"></a>
-<h2 class="section"><a href="ffplay.html#toc-fbdev">9.4 fbdev</a></h2>
-
-<p>Linux framebuffer input device.
-</p>
-<p>The Linux framebuffer is a graphic hardware-independent abstraction
-layer to show graphics on a computer monitor, typically on the
-console. It is accessed through a file device node, usually
-&lsquo;<tt>/dev/fb0</tt>&rsquo;.
-</p>
-<p>For more detailed information read the file
-Documentation/fb/framebuffer.txt included in the Linux source tree.
-</p>
-<p>To record from the framebuffer device &lsquo;<tt>/dev/fb0</tt>&rsquo; with
-&lsquo;<tt>ffmpeg</tt>&rsquo;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f fbdev -r 10 -i /dev/fb0 out.avi
-</pre></td></tr></table>
-
-<p>You can take a single screenshot image with the command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f fbdev -vframes 1 -r 1 -i /dev/fb0 screenshot.jpeg
-</pre></td></tr></table>
-
-<p>See also <a href="http://linux-fbdev.sourceforge.net/">http://linux-fbdev.sourceforge.net/</a>, and fbset(1).
-</p>
-<a name="jack"></a>
-<h2 class="section"><a href="ffplay.html#toc-jack">9.5 jack</a></h2>
-
-<p>JACK input device.
-</p>
-<p>To enable this input device during configuration you need libjack
-installed on your system.
-</p>
-<p>A JACK input device creates one or more JACK writable clients, one for
-each audio channel, with name <var>client_name</var>:input_<var>N</var>, where
-<var>client_name</var> is the name provided by the application, and <var>N</var>
-is a number which identifies the channel.
-Each writable client will send the acquired data to the FFmpeg input
-device.
-</p>
-<p>Once you have created one or more JACK readable clients, you need to
-connect them to one or more JACK writable clients.
-</p>
-<p>To connect or disconnect JACK clients you can use the
-&lsquo;<tt>jack_connect</tt>&rsquo; and &lsquo;<tt>jack_disconnect</tt>&rsquo; programs, or do it
-through a graphical interface, for example with &lsquo;<tt>qjackctl</tt>&rsquo;.
-</p>
-<p>To list the JACK clients and their properties you can invoke the command
-&lsquo;<tt>jack_lsp</tt>&rsquo;.
-</p>
-<p>Follows an example which shows how to capture a JACK readable client
-with &lsquo;<tt>ffmpeg</tt>&rsquo;.
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># Create a JACK writable client with name &quot;ffmpeg&quot;.
-$ ffmpeg -f jack -i ffmpeg -y out.wav
-
-# Start the sample jack_metro readable client.
-$ jack_metro -b 120 -d 0.2 -f 4000
-
-# List the current JACK clients.
-$ jack_lsp -c
-system:capture_1
-system:capture_2
-system:playback_1
-system:playback_2
-ffmpeg:input_1
-metro:120_bpm
-
-# Connect metro to the ffmpeg writable client.
-$ jack_connect metro:120_bpm ffmpeg:input_1
-</pre></td></tr></table>
-
-<p>For more information read:
-<a href="http://jackaudio.org/">http://jackaudio.org/</a>
-</p>
-<a name="lavfi"></a>
-<h2 class="section"><a href="ffplay.html#toc-lavfi">9.6 lavfi</a></h2>
-
-<p>Libavfilter input virtual device.
-</p>
-<p>This input device reads data from the open output pads of a libavfilter
-filtergraph.
-</p>
-<p>For each filtergraph open output, the input device will create a
-corresponding stream which is mapped to the generated output. Currently
-only video data is supported. The filtergraph is specified through the
-option &lsquo;<samp>graph</samp>&rsquo;.
-</p>
-<p>To enable this input device, you need to configure your build with
-<code>--enable-libavfilter</code>.
-</p>
-<a name="Options"></a>
-<h3 class="subsection"><a href="ffplay.html#toc-Options">9.6.1 Options</a></h3>
-
-<dl compact="compact">
-<dt> &lsquo;<samp>graph</samp>&rsquo;</dt>
-<dd><p>Specify the filtergraph to use as input. Each video open output must be
-labelled by a unique string of the form &quot;out<var>N</var>&quot;, where <var>N</var> is a
-number starting from 0 corresponding to the mapped input stream
-generated by the device.
-The first unlabelled output is automatically assigned to the &quot;out0&quot;
-label, but all the others need to be specified explicitely.
-</p>
-<p>If not specified defaults to the filename specified for the input
-device.
-</p></dd>
-</dl>
-
-<a name="Examples"></a>
-<h3 class="subsection"><a href="ffplay.html#toc-Examples">9.6.2 Examples</a></h3>
-
-<ul>
-<li>
-Create a color video stream and play it back with &lsquo;<tt>ffplay</tt>&rsquo;:
-<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi -graph &quot;color=pink [out0]&quot; dummy
-</pre></td></tr></table>
-
-</li><li>
-As the previous example, but use filename for specifying the graph
-description, and omit the &quot;out0&quot; label:
-<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi color=pink
-</pre></td></tr></table>
-
-</li><li>
-Create three different video test filtered sources and play them:
-<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi -graph &quot;testsrc [out0]; testsrc,hflip [out1]; testsrc,negate [out2]&quot; test3
-</pre></td></tr></table>
-</li></ul>
-
-<a name="libdc1394"></a>
-<h2 class="section"><a href="ffplay.html#toc-libdc1394">9.7 libdc1394</a></h2>
-
-<p>IIDC1394 input device, based on libdc1394 and libraw1394.
-</p>
-<a name="openal"></a>
-<h2 class="section"><a href="ffplay.html#toc-openal">9.8 openal</a></h2>
-
-<p>The OpenAL input device provides audio capture on all systems with a
-working OpenAL 1.1 implementation.
-</p>
-<p>To enable this input device during configuration, you need OpenAL
-headers and libraries installed on your system, and need to configure
-FFmpeg with <code>--enable-openal</code>.
-</p>
-<p>OpenAL headers and libraries should be provided as part of your OpenAL
-implementation, or as an additional download (an SDK). Depending on your
-installation you may need to specify additional flags via the
-<code>--extra-cflags</code> and <code>--extra-ldflags</code> for allowing the build
-system to locate the OpenAL headers and libraries.
-</p>
-<p>An incomplete list of OpenAL implementations follows:
-</p>
-<dl compact="compact">
-<dt> <strong>Creative</strong></dt>
-<dd><p>The official Windows implementation, providing hardware acceleration
-with supported devices and software fallback.
-See <a href="http://openal.org/">http://openal.org/</a>.
-</p></dd>
-<dt> <strong>OpenAL Soft</strong></dt>
-<dd><p>Portable, open source (LGPL) software implementation. Includes
-backends for the most common sound APIs on the Windows, Linux,
-Solaris, and BSD operating systems.
-See <a href="http://kcat.strangesoft.net/openal.html">http://kcat.strangesoft.net/openal.html</a>.
-</p></dd>
-<dt> <strong>Apple</strong></dt>
-<dd><p>OpenAL is part of Core Audio, the official Mac OS X Audio interface.
-See <a href="http://developer.apple.com/technologies/mac/audio-and-video.html">http://developer.apple.com/technologies/mac/audio-and-video.html</a>
-</p></dd>
-</dl>
-
-<p>This device allows to capture from an audio input device handled
-through OpenAL.
-</p>
-<p>You need to specify the name of the device to capture in the provided
-filename. If the empty string is provided, the device will
-automatically select the default device. You can get the list of the
-supported devices by using the option <var>list_devices</var>.
-</p>
-<a name="Options-1"></a>
-<h3 class="subsection"><a href="ffplay.html#toc-Options-1">9.8.1 Options</a></h3>
-
-<dl compact="compact">
-<dt> &lsquo;<samp>channels</samp>&rsquo;</dt>
-<dd><p>Set the number of channels in the captured audio. Only the values
-&lsquo;<samp>1</samp>&rsquo; (monaural) and &lsquo;<samp>2</samp>&rsquo; (stereo) are currently supported.
-Defaults to &lsquo;<samp>2</samp>&rsquo;.
-</p>
-</dd>
-<dt> &lsquo;<samp>sample_size</samp>&rsquo;</dt>
-<dd><p>Set the sample size (in bits) of the captured audio. Only the values
-&lsquo;<samp>8</samp>&rsquo; and &lsquo;<samp>16</samp>&rsquo; are currently supported. Defaults to
-&lsquo;<samp>16</samp>&rsquo;.
-</p>
-</dd>
-<dt> &lsquo;<samp>sample_rate</samp>&rsquo;</dt>
-<dd><p>Set the sample rate (in Hz) of the captured audio.
-Defaults to &lsquo;<samp>44.1k</samp>&rsquo;.
-</p>
-</dd>
-<dt> &lsquo;<samp>list_devices</samp>&rsquo;</dt>
-<dd><p>If set to &lsquo;<samp>true</samp>&rsquo;, print a list of devices and exit.
-Defaults to &lsquo;<samp>false</samp>&rsquo;.
-</p>
-</dd>
-</dl>
-
-<a name="Examples-2"></a>
-<h3 class="subsection"><a href="ffplay.html#toc-Examples-2">9.8.2 Examples</a></h3>
-
-<p>Print the list of OpenAL supported devices and exit:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -list_devices true -f openal -i dummy out.ogg
-</pre></td></tr></table>
-
-<p>Capture from the OpenAL device &lsquo;<tt>DR-BT101 via PulseAudio</tt>&rsquo;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out.ogg
-</pre></td></tr></table>
-
-<p>Capture from the default device (note the empty string &rdquo; as filename):
-</p><table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f openal -i '' out.ogg
-</pre></td></tr></table>
-
-<p>Capture from two devices simultaneously, writing to two different files,
-within the same &lsquo;<tt>ffmpeg</tt>&rsquo; command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out1.ogg -f openal -i 'ALSA Default' out2.ogg
-</pre></td></tr></table>
-<p>Note: not all OpenAL implementations support multiple simultaneous capture -
-try the latest OpenAL Soft if the above does not work.
-</p>
-<a name="oss"></a>
-<h2 class="section"><a href="ffplay.html#toc-oss">9.9 oss</a></h2>
-
-<p>Open Sound System input device.
-</p>
-<p>The filename to provide to the input device is the device node
-representing the OSS input device, and is usually set to
-&lsquo;<tt>/dev/dsp</tt>&rsquo;.
-</p>
-<p>For example to grab from &lsquo;<tt>/dev/dsp</tt>&rsquo; using &lsquo;<tt>ffmpeg</tt>&rsquo; use the
-command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f oss -i /dev/dsp /tmp/oss.wav
-</pre></td></tr></table>
-
-<p>For more information about OSS see:
-<a href="http://manuals.opensound.com/usersguide/dsp.html">http://manuals.opensound.com/usersguide/dsp.html</a>
-</p>
-<a name="sndio-1"></a>
-<h2 class="section"><a href="ffplay.html#toc-sndio-1">9.10 sndio</a></h2>
-
-<p>sndio input device.
-</p>
-<p>To enable this input device during configuration you need libsndio
-installed on your system.
-</p>
-<p>The filename to provide to the input device is the device node
-representing the sndio input device, and is usually set to
-&lsquo;<tt>/dev/audio0</tt>&rsquo;.
-</p>
-<p>For example to grab from &lsquo;<tt>/dev/audio0</tt>&rsquo; using &lsquo;<tt>ffmpeg</tt>&rsquo; use the
-command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f sndio -i /dev/audio0 /tmp/oss.wav
-</pre></td></tr></table>
-
-<a name="video4linux-and-video4linux2"></a>
-<h2 class="section"><a href="ffplay.html#toc-video4linux-and-video4linux2">9.11 video4linux and video4linux2</a></h2>
-
-<p>Video4Linux and Video4Linux2 input video devices.
-</p>
-<p>The name of the device to grab is a file device node, usually Linux
-systems tend to automatically create such nodes when the device
-(e.g. an USB webcam) is plugged into the system, and has a name of the
-kind &lsquo;<tt>/dev/video<var>N</var></tt>&rsquo;, where <var>N</var> is a number associated to
-the device.
-</p>
-<p>Video4Linux and Video4Linux2 devices only support a limited set of
-<var>width</var>x<var>height</var> sizes and framerates. You can check which are
-supported for example with the command &lsquo;<tt>dov4l</tt>&rsquo; for Video4Linux
-devices and the command &lsquo;<tt>v4l-info</tt>&rsquo; for Video4Linux2 devices.
-</p>
-<p>If the size for the device is set to 0x0, the input device will
-try to autodetect the size to use.
-Only for the video4linux2 device, if the frame rate is set to 0/0 the
-input device will use the frame rate value already set in the driver.
-</p>
-<p>Video4Linux support is deprecated since Linux 2.6.30, and will be
-dropped in later versions.
-</p>
-<p>Follow some usage examples of the video4linux devices with the ff*
-tools.
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># Grab and show the input of a video4linux device, frame rate is set
-# to the default of 25/1.
-ffplay -s 320x240 -f video4linux /dev/video0
-
-# Grab and show the input of a video4linux2 device, autoadjust size.
-ffplay -f video4linux2 /dev/video0
-
-# Grab and record the input of a video4linux2 device, autoadjust size,
-# frame rate value defaults to 0/0 so it is read from the video4linux2
-# driver.
-ffmpeg -f video4linux2 -i /dev/video0 out.mpeg
-</pre></td></tr></table>
-
-<a name="vfwcap"></a>
-<h2 class="section"><a href="ffplay.html#toc-vfwcap">9.12 vfwcap</a></h2>
-
-<p>VfW (Video for Windows) capture input device.
-</p>
-<p>The filename passed as input is the capture driver number, ranging from
-0 to 9. You may use &quot;list&quot; as filename to print a list of drivers. Any
-other filename will be interpreted as device number 0.
-</p>
-<a name="x11grab"></a>
-<h2 class="section"><a href="ffplay.html#toc-x11grab">9.13 x11grab</a></h2>
-
-<p>X11 video input device.
-</p>
-<p>This device allows to capture a region of an X11 display.
-</p>
-<p>The filename passed as input has the syntax:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">[<var>hostname</var>]:<var>display_number</var>.<var>screen_number</var>[+<var>x_offset</var>,<var>y_offset</var>]
-</pre></td></tr></table>
-
-<p><var>hostname</var>:<var>display_number</var>.<var>screen_number</var> specifies the
-X11 display name of the screen to grab from. <var>hostname</var> can be
-ommitted, and defaults to &quot;localhost&quot;. The environment variable
-<code>DISPLAY</code> contains the default display name.
-</p>
-<p><var>x_offset</var> and <var>y_offset</var> specify the offsets of the grabbed
-area with respect to the top-left border of the X11 screen. They
-default to 0.
-</p>
-<p>Check the X11 documentation (e.g. man X) for more detailed information.
-</p>
-<p>Use the &lsquo;<tt>dpyinfo</tt>&rsquo; program for getting basic information about the
-properties of your X11 display (e.g. grep for &quot;name&quot; or &quot;dimensions&quot;).
-</p>
-<p>For example to grab from &lsquo;<tt>:0.0</tt>&rsquo; using &lsquo;<tt>ffmpeg</tt>&rsquo;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -r 25 -s cif -i :0.0 out.mpg
-
-# Grab at position 10,20.
-ffmpeg -f x11grab -r 25 -s cif -i :0.0+10,20 out.mpg
-</pre></td></tr></table>
-
-<a name="follow_005fmouse-AVOption"></a>
-<h3 class="subsection"><a href="ffplay.html#toc-follow_005fmouse-AVOption">9.13.1 <var>follow_mouse</var> AVOption</a></h3>
-
-<p>The syntax is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">-follow_mouse centered|<var>PIXELS</var>
-</pre></td></tr></table>
-
-<p>When it is specified with &quot;centered&quot;, the grabbing region follows the mouse
-pointer and keeps the pointer at the center of region; otherwise, the region
-follows only when the mouse pointer reaches within <var>PIXELS</var> (greater than
-zero) to the edge of region.
-</p>
-<p>For example:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -follow_mouse centered -r 25 -s cif -i :0.0 out.mpg
-
-# Follows only when the mouse pointer reaches within 100 pixels to edge
-ffmpeg -f x11grab -follow_mouse 100 -r 25 -s cif -i :0.0 out.mpg
-</pre></td></tr></table>
-
-<a name="show_005fregion-AVOption"></a>
-<h3 class="subsection"><a href="ffplay.html#toc-show_005fregion-AVOption">9.13.2 <var>show_region</var> AVOption</a></h3>
-
-<p>The syntax is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">-show_region 1
-</pre></td></tr></table>
-
-<p>If <var>show_region</var> AVOption is specified with <var>1</var>, then the grabbing
-region will be indicated on screen. With this option, it&rsquo;s easy to know what is
-being grabbed if only a portion of the screen is grabbed.
-</p>
-<p>For example:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -show_region 1 -r 25 -s cif -i :0.0+10,20 out.mpg
-
-# With follow_mouse
-ffmpeg -f x11grab -follow_mouse centered -show_region 1  -r 25 -s cif -i :0.0 out.mpg
-</pre></td></tr></table>
-
-<a name="Output-Devices"></a>
-<h1 class="chapter"><a href="ffplay.html#toc-Output-Devices">10. Output Devices</a></h1>
-
-<p>Output devices are configured elements in FFmpeg which allow to write
-multimedia data to an output device attached to your system.
-</p>
-<p>When you configure your FFmpeg build, all the supported output devices
-are enabled by default. You can list all available ones using the
-configure option &quot;&ndash;list-outdevs&quot;.
-</p>
-<p>You can disable all the output devices using the configure option
-&quot;&ndash;disable-outdevs&quot;, and selectively enable an output device using the
-option &quot;&ndash;enable-outdev=<var>OUTDEV</var>&quot;, or you can disable a particular
-input device using the option &quot;&ndash;disable-outdev=<var>OUTDEV</var>&quot;.
-</p>
-<p>The option &quot;-formats&quot; of the ff* tools will display the list of
-enabled output devices (amongst the muxers).
-</p>
-<p>A description of the currently available output devices follows.
-</p>
-<a name="alsa"></a>
-<h2 class="section"><a href="ffplay.html#toc-alsa">10.1 alsa</a></h2>
-
-<p>ALSA (Advanced Linux Sound Architecture) output device.
-</p>
-<a name="oss-1"></a>
-<h2 class="section"><a href="ffplay.html#toc-oss-1">10.2 oss</a></h2>
-
-<p>OSS (Open Sound System) output device.
-</p>
-<a name="sdl"></a>
-<h2 class="section"><a href="ffplay.html#toc-sdl">10.3 sdl</a></h2>
-
-<p>SDL (Simple Directmedia Layer) output device.
-</p>
-<p>This output devices allows to show a video stream in an SDL
-window. Only one SDL window is allowed per application, so you can
-have only one instance of this output device in an application.
-</p>
-<p>To enable this output device you need libsdl installed on your system
-when configuring your build.
-</p>
-<p>For more information about SDL, check:
-<a href="http://www.libsdl.org/">http://www.libsdl.org/</a>
-</p>
-<a name="Options-2"></a>
-<h3 class="subsection"><a href="ffplay.html#toc-Options-2">10.3.1 Options</a></h3>
-
-<dl compact="compact">
-<dt> &lsquo;<samp>window_title</samp>&rsquo;</dt>
-<dd><p>Set the SDL window title, if not specified default to the filename
-specified for the output device.
-</p>
-</dd>
-<dt> &lsquo;<samp>icon_title</samp>&rsquo;</dt>
-<dd><p>Set the name of the iconified SDL window, if not specified it is set
-to the same value of <var>window_title</var>.
-</p>
-</dd>
-<dt> &lsquo;<samp>window_size</samp>&rsquo;</dt>
-<dd><p>Set the SDL window size, can be a string of the form
-<var>width</var>x<var>height</var> or a video size abbreviation.
-If not specified it defaults to the size of the input video.
-</p></dd>
-</dl>
-
-<a name="Examples-1"></a>
-<h3 class="subsection"><a href="ffplay.html#toc-Examples-1">10.3.2 Examples</a></h3>
-
-<p>The following command shows the &lsquo;<tt>ffmpeg</tt>&rsquo; output is an
-SDL window, forcing its size to the qcif format:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -vcodec rawvideo -pix_fmt yuv420p -window_size qcif -f sdl &quot;SDL output&quot;
-</pre></td></tr></table>
-
-<a name="sndio"></a>
-<h2 class="section"><a href="ffplay.html#toc-sndio">10.4 sndio</a></h2>
-
-<p>sndio audio output device.
-</p>
-<a name="Protocols"></a>
-<h1 class="chapter"><a href="ffplay.html#toc-Protocols">11. Protocols</a></h1>
-
-<p>Protocols are configured elements in FFmpeg which allow to access
-resources which require the use of a particular protocol.
-</p>
-<p>When you configure your FFmpeg build, all the supported protocols are
-enabled by default. You can list all available ones using the
-configure option &quot;&ndash;list-protocols&quot;.
-</p>
-<p>You can disable all the protocols using the configure option
-&quot;&ndash;disable-protocols&quot;, and selectively enable a protocol using the
-option &quot;&ndash;enable-protocol=<var>PROTOCOL</var>&quot;, or you can disable a
-particular protocol using the option
-&quot;&ndash;disable-protocol=<var>PROTOCOL</var>&quot;.
-</p>
-<p>The option &quot;-protocols&quot; of the ff* tools will display the list of
-supported protocols.
-</p>
-<p>A description of the currently available protocols follows.
-</p>
-<a name="applehttp-1"></a>
-<h2 class="section"><a href="ffplay.html#toc-applehttp-1">11.1 applehttp</a></h2>
-
-<p>Read Apple HTTP Live Streaming compliant segmented stream as
-a uniform one. The M3U8 playlists describing the segments can be
-remote HTTP resources or local files, accessed using the standard
-file protocol.
-HTTP is default, specific protocol can be declared by specifying
-&quot;+<var>proto</var>&quot; after the applehttp URI scheme name, where <var>proto</var>
-is either &quot;file&quot; or &quot;http&quot;.
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">applehttp://host/path/to/remote/resource.m3u8
-applehttp+http://host/path/to/remote/resource.m3u8
-applehttp+file://path/to/local/resource.m3u8
-</pre></td></tr></table>
-
-<a name="concat"></a>
-<h2 class="section"><a href="ffplay.html#toc-concat">11.2 concat</a></h2>
-
-<p>Physical concatenation protocol.
-</p>
-<p>Allow to read and seek from many resource in sequence as if they were
-a unique resource.
-</p>
-<p>A URL accepted by this protocol has the syntax:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">concat:<var>URL1</var>|<var>URL2</var>|...|<var>URLN</var>
-</pre></td></tr></table>
-
-<p>where <var>URL1</var>, <var>URL2</var>, ..., <var>URLN</var> are the urls of the
-resource to be concatenated, each one possibly specifying a distinct
-protocol.
-</p>
-<p>For example to read a sequence of files &lsquo;<tt>split1.mpeg</tt>&rsquo;,
-&lsquo;<tt>split2.mpeg</tt>&rsquo;, &lsquo;<tt>split3.mpeg</tt>&rsquo; with &lsquo;<tt>ffplay</tt>&rsquo; use the
-command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay concat:split1.mpeg\|split2.mpeg\|split3.mpeg
-</pre></td></tr></table>
-
-<p>Note that you may need to escape the character &quot;|&quot; which is special for
-many shells.
-</p>
-<a name="file"></a>
-<h2 class="section"><a href="ffplay.html#toc-file">11.3 file</a></h2>
-
-<p>File access protocol.
-</p>
-<p>Allow to read from or read to a file.
-</p>
-<p>For example to read from a file &lsquo;<tt>input.mpeg</tt>&rsquo; with &lsquo;<tt>ffmpeg</tt>&rsquo;
-use the command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i file:input.mpeg output.mpeg
-</pre></td></tr></table>
-
-<p>The ff* tools default to the file protocol, that is a resource
-specified with the name &quot;FILE.mpeg&quot; is interpreted as the URL
-&quot;file:FILE.mpeg&quot;.
-</p>
-<a name="gopher"></a>
-<h2 class="section"><a href="ffplay.html#toc-gopher">11.4 gopher</a></h2>
-
-<p>Gopher protocol.
-</p>
-<a name="http"></a>
-<h2 class="section"><a href="ffplay.html#toc-http">11.5 http</a></h2>
-
-<p>HTTP (Hyper Text Transfer Protocol).
-</p>
-<a name="mmst"></a>
-<h2 class="section"><a href="ffplay.html#toc-mmst">11.6 mmst</a></h2>
-
-<p>MMS (Microsoft Media Server) protocol over TCP.
-</p>
-<a name="mmsh"></a>
-<h2 class="section"><a href="ffplay.html#toc-mmsh">11.7 mmsh</a></h2>
-
-<p>MMS (Microsoft Media Server) protocol over HTTP.
-</p>
-<p>The required syntax is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">mmsh://<var>server</var>[:<var>port</var>][/<var>app</var>][/<var>playpath</var>]
-</pre></td></tr></table>
-
-<a name="md5"></a>
-<h2 class="section"><a href="ffplay.html#toc-md5">11.8 md5</a></h2>
-
-<p>MD5 output protocol.
-</p>
-<p>Computes the MD5 hash of the data to be written, and on close writes
-this to the designated output or stdout if none is specified. It can
-be used to test muxers without writing an actual file.
-</p>
-<p>Some examples follow.
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># Write the MD5 hash of the encoded AVI file to the file output.avi.md5.
-ffmpeg -i input.flv -f avi -y md5:output.avi.md5
-
-# Write the MD5 hash of the encoded AVI file to stdout.
-ffmpeg -i input.flv -f avi -y md5:
-</pre></td></tr></table>
-
-<p>Note that some formats (typically MOV) require the output protocol to
-be seekable, so they will fail with the MD5 output protocol.
-</p>
-<a name="pipe"></a>
-<h2 class="section"><a href="ffplay.html#toc-pipe">11.9 pipe</a></h2>
-
-<p>UNIX pipe access protocol.
-</p>
-<p>Allow to read and write from UNIX pipes.
-</p>
-<p>The accepted syntax is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">pipe:[<var>number</var>]
-</pre></td></tr></table>
-
-<p><var>number</var> is the number corresponding to the file descriptor of the
-pipe (e.g. 0 for stdin, 1 for stdout, 2 for stderr).  If <var>number</var>
-is not specified, by default the stdout file descriptor will be used
-for writing, stdin for reading.
-</p>
-<p>For example to read from stdin with &lsquo;<tt>ffmpeg</tt>&rsquo;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">cat test.wav | ffmpeg -i pipe:0
-# ...this is the same as...
-cat test.wav | ffmpeg -i pipe:
-</pre></td></tr></table>
-
-<p>For writing to stdout with &lsquo;<tt>ffmpeg</tt>&rsquo;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i test.wav -f avi pipe:1 | cat &gt; test.avi
-# ...this is the same as...
-ffmpeg -i test.wav -f avi pipe: | cat &gt; test.avi
-</pre></td></tr></table>
-
-<p>Note that some formats (typically MOV), require the output protocol to
-be seekable, so they will fail with the pipe output protocol.
-</p>
-<a name="rtmp"></a>
-<h2 class="section"><a href="ffplay.html#toc-rtmp">11.10 rtmp</a></h2>
-
-<p>Real-Time Messaging Protocol.
-</p>
-<p>The Real-Time Messaging Protocol (RTMP) is used for streaming multime‐
-dia content across a TCP/IP network.
-</p>
-<p>The required syntax is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">rtmp://<var>server</var>[:<var>port</var>][/<var>app</var>][/<var>playpath</var>]
-</pre></td></tr></table>
-
-<p>The accepted parameters are:
-</p><dl compact="compact">
-<dt> &lsquo;<samp>server</samp>&rsquo;</dt>
-<dd><p>The address of the RTMP server.
-</p>
-</dd>
-<dt> &lsquo;<samp>port</samp>&rsquo;</dt>
-<dd><p>The number of the TCP port to use (by default is 1935).
-</p>
-</dd>
-<dt> &lsquo;<samp>app</samp>&rsquo;</dt>
-<dd><p>It is the name of the application to access. It usually corresponds to
-the path where the application is installed on the RTMP server
-(e.g. &lsquo;<tt>/ondemand/</tt>&rsquo;, &lsquo;<tt>/flash/live/</tt>&rsquo;, etc.).
-</p>
-</dd>
-<dt> &lsquo;<samp>playpath</samp>&rsquo;</dt>
-<dd><p>It is the path or name of the resource to play with reference to the
-application specified in <var>app</var>, may be prefixed by &quot;mp4:&quot;.
-</p>
-</dd>
-</dl>
-
-<p>For example to read with &lsquo;<tt>ffplay</tt>&rsquo; a multimedia resource named
-&quot;sample&quot; from the application &quot;vod&quot; from an RTMP server &quot;myserver&quot;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay rtmp://myserver/vod/sample
-</pre></td></tr></table>
-
-<a name="rtmp_002c-rtmpe_002c-rtmps_002c-rtmpt_002c-rtmpte"></a>
-<h2 class="section"><a href="ffplay.html#toc-rtmp_002c-rtmpe_002c-rtmps_002c-rtmpt_002c-rtmpte">11.11 rtmp, rtmpe, rtmps, rtmpt, rtmpte</a></h2>
-
-<p>Real-Time Messaging Protocol and its variants supported through
-librtmp.
-</p>
-<p>Requires the presence of the librtmp headers and library during
-configuration. You need to explicitely configure the build with
-&quot;&ndash;enable-librtmp&quot;. If enabled this will replace the native RTMP
-protocol.
-</p>
-<p>This protocol provides most client functions and a few server
-functions needed to support RTMP, RTMP tunneled in HTTP (RTMPT),
-encrypted RTMP (RTMPE), RTMP over SSL/TLS (RTMPS) and tunneled
-variants of these encrypted types (RTMPTE, RTMPTS).
-</p>
-<p>The required syntax is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>rtmp_proto</var>://<var>server</var>[:<var>port</var>][/<var>app</var>][/<var>playpath</var>] <var>options</var>
-</pre></td></tr></table>
-
-<p>where <var>rtmp_proto</var> is one of the strings &quot;rtmp&quot;, &quot;rtmpt&quot;, &quot;rtmpe&quot;,
-&quot;rtmps&quot;, &quot;rtmpte&quot;, &quot;rtmpts&quot; corresponding to each RTMP variant, and
-<var>server</var>, <var>port</var>, <var>app</var> and <var>playpath</var> have the same
-meaning as specified for the RTMP native protocol.
-<var>options</var> contains a list of space-separated options of the form
-<var>key</var>=<var>val</var>.
-</p>
-<p>See the librtmp manual page (man 3 librtmp) for more information.
-</p>
-<p>For example, to stream a file in real-time to an RTMP server using
-&lsquo;<tt>ffmpeg</tt>&rsquo;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i myfile -f flv rtmp://myserver/live/mystream
-</pre></td></tr></table>
-
-<p>To play the same stream using &lsquo;<tt>ffplay</tt>&rsquo;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay &quot;rtmp://myserver/live/mystream live=1&quot;
-</pre></td></tr></table>
-
-<a name="rtp"></a>
-<h2 class="section"><a href="ffplay.html#toc-rtp">11.12 rtp</a></h2>
-
-<p>Real-Time Protocol.
-</p>
-<a name="rtsp"></a>
-<h2 class="section"><a href="ffplay.html#toc-rtsp">11.13 rtsp</a></h2>
-
-<p>RTSP is not technically a protocol handler in libavformat, it is a demuxer
-and muxer. The demuxer supports both normal RTSP (with data transferred
-over RTP; this is used by e.g. Apple and Microsoft) and Real-RTSP (with
-data transferred over RDT).
-</p>
-<p>The muxer can be used to send a stream using RTSP ANNOUNCE to a server
-supporting it (currently Darwin Streaming Server and Mischa Spiegelmock&rsquo;s
-<a href="http://github.com/revmischa/rtsp-server">RTSP server</a>).
-</p>
-<p>The required syntax for a RTSP url is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">rtsp://<var>hostname</var>[:<var>port</var>]/<var>path</var>[?<var>options</var>]
-</pre></td></tr></table>
-
-<p><var>options</var> is a <code>&amp;</code>-separated list. The following options
-are supported:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>udp</samp>&rsquo;</dt>
-<dd><p>Use UDP as lower transport protocol.
-</p>
-</dd>
-<dt> &lsquo;<samp>tcp</samp>&rsquo;</dt>
-<dd><p>Use TCP (interleaving within the RTSP control channel) as lower
-transport protocol.
-</p>
-</dd>
-<dt> &lsquo;<samp>multicast</samp>&rsquo;</dt>
-<dd><p>Use UDP multicast as lower transport protocol.
-</p>
-</dd>
-<dt> &lsquo;<samp>http</samp>&rsquo;</dt>
-<dd><p>Use HTTP tunneling as lower transport protocol, which is useful for
-passing proxies.
-</p>
-</dd>
-<dt> &lsquo;<samp>filter_src</samp>&rsquo;</dt>
-<dd><p>Accept packets only from negotiated peer address and port.
-</p></dd>
-</dl>
-
-<p>Multiple lower transport protocols may be specified, in that case they are
-tried one at a time (if the setup of one fails, the next one is tried).
-For the muxer, only the <code>tcp</code> and <code>udp</code> options are supported.
-</p>
-<p>When receiving data over UDP, the demuxer tries to reorder received packets
-(since they may arrive out of order, or packets may get lost totally). In
-order for this to be enabled, a maximum delay must be specified in the
-<code>max_delay</code> field of AVFormatContext.
-</p>
-<p>When watching multi-bitrate Real-RTSP streams with &lsquo;<tt>ffplay</tt>&rsquo;, the
-streams to display can be chosen with <code>-vst</code> <var>n</var> and
-<code>-ast</code> <var>n</var> for video and audio respectively, and can be switched
-on the fly by pressing <code>v</code> and <code>a</code>.
-</p>
-<p>Example command lines:
-</p>
-<p>To watch a stream over UDP, with a max reordering delay of 0.5 seconds:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -max_delay 500000 rtsp://server/video.mp4?udp
-</pre></td></tr></table>
-
-<p>To watch a stream tunneled over HTTP:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffplay rtsp://server/video.mp4?http
-</pre></td></tr></table>
-
-<p>To send a stream in realtime to a RTSP server, for others to watch:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i <var>input</var> -f rtsp -muxdelay 0.1 rtsp://server/live.sdp
-</pre></td></tr></table>
-
-<a name="sap"></a>
-<h2 class="section"><a href="ffplay.html#toc-sap">11.14 sap</a></h2>
-
-<p>Session Announcement Protocol (RFC 2974). This is not technically a
-protocol handler in libavformat, it is a muxer and demuxer.
-It is used for signalling of RTP streams, by announcing the SDP for the
-streams regularly on a separate port.
-</p>
-<a name="Muxer"></a>
-<h3 class="subsection"><a href="ffplay.html#toc-Muxer">11.14.1 Muxer</a></h3>
-
-<p>The syntax for a SAP url given to the muxer is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">sap://<var>destination</var>[:<var>port</var>][?<var>options</var>]
-</pre></td></tr></table>
-
-<p>The RTP packets are sent to <var>destination</var> on port <var>port</var>,
-or to port 5004 if no port is specified.
-<var>options</var> is a <code>&amp;</code>-separated list. The following options
-are supported:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>announce_addr=<var>address</var></samp>&rsquo;</dt>
-<dd><p>Specify the destination IP address for sending the announcements to.
-If omitted, the announcements are sent to the commonly used SAP
-announcement multicast address 224.2.127.254 (sap.mcast.net), or
-ff0e::2:7ffe if <var>destination</var> is an IPv6 address.
-</p>
-</dd>
-<dt> &lsquo;<samp>announce_port=<var>port</var></samp>&rsquo;</dt>
-<dd><p>Specify the port to send the announcements on, defaults to
-9875 if not specified.
-</p>
-</dd>
-<dt> &lsquo;<samp>ttl=<var>ttl</var></samp>&rsquo;</dt>
-<dd><p>Specify the time to live value for the announcements and RTP packets,
-defaults to 255.
-</p>
-</dd>
-<dt> &lsquo;<samp>same_port=<var>0|1</var></samp>&rsquo;</dt>
-<dd><p>If set to 1, send all RTP streams on the same port pair. If zero (the
-default), all streams are sent on unique ports, with each stream on a
-port 2 numbers higher than the previous.
-VLC/Live555 requires this to be set to 1, to be able to receive the stream.
-The RTP stack in libavformat for receiving requires all streams to be sent
-on unique ports.
-</p></dd>
-</dl>
-
-<p>Example command lines follow.
-</p>
-<p>To broadcast a stream on the local subnet, for watching in VLC:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i <var>input</var> -f sap sap://224.0.0.255?same_port=1
-</pre></td></tr></table>
-
-<p>Similarly, for watching in ffplay:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i <var>input</var> -f sap sap://224.0.0.255
-</pre></td></tr></table>
-
-<p>And for watching in ffplay, over IPv6:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i <var>input</var> -f sap sap://[ff0e::1:2:3:4]
-</pre></td></tr></table>
-
-<a name="Demuxer"></a>
-<h3 class="subsection"><a href="ffplay.html#toc-Demuxer">11.14.2 Demuxer</a></h3>
-
-<p>The syntax for a SAP url given to the demuxer is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">sap://[<var>address</var>][:<var>port</var>]
-</pre></td></tr></table>
-
-<p><var>address</var> is the multicast address to listen for announcements on,
-if omitted, the default 224.2.127.254 (sap.mcast.net) is used. <var>port</var>
-is the port that is listened on, 9875 if omitted.
-</p>
-<p>The demuxers listens for announcements on the given address and port.
-Once an announcement is received, it tries to receive that particular stream.
-</p>
-<p>Example command lines follow.
-</p>
-<p>To play back the first stream announced on the normal SAP multicast address:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffplay sap://
-</pre></td></tr></table>
-
-<p>To play back the first stream announced on one the default IPv6 SAP multicast address:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffplay sap://[ff0e::2:7ffe]
-</pre></td></tr></table>
-
-<a name="tcp"></a>
-<h2 class="section"><a href="ffplay.html#toc-tcp">11.15 tcp</a></h2>
-
-<p>Trasmission Control Protocol.
-</p>
-<p>The required syntax for a TCP url is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">tcp://<var>hostname</var>:<var>port</var>[?<var>options</var>]
-</pre></td></tr></table>
-
-<dl compact="compact">
-<dt> &lsquo;<samp>listen</samp>&rsquo;</dt>
-<dd><p>Listen for an incoming connection
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i <var>input</var> -f <var>format</var> tcp://<var>hostname</var>:<var>port</var>?listen
-ffplay tcp://<var>hostname</var>:<var>port</var>
-</pre></td></tr></table>
-
-</dd>
-</dl>
-
-<a name="udp"></a>
-<h2 class="section"><a href="ffplay.html#toc-udp">11.16 udp</a></h2>
-
-<p>User Datagram Protocol.
-</p>
-<p>The required syntax for a UDP url is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">udp://<var>hostname</var>:<var>port</var>[?<var>options</var>]
-</pre></td></tr></table>
-
-<p><var>options</var> contains a list of &amp;-seperated options of the form <var>key</var>=<var>val</var>.
-Follow the list of supported options.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>buffer_size=<var>size</var></samp>&rsquo;</dt>
-<dd><p>set the UDP buffer size in bytes
-</p>
-</dd>
-<dt> &lsquo;<samp>localport=<var>port</var></samp>&rsquo;</dt>
-<dd><p>override the local UDP port to bind with
-</p>
-</dd>
-<dt> &lsquo;<samp>pkt_size=<var>size</var></samp>&rsquo;</dt>
-<dd><p>set the size in bytes of UDP packets
-</p>
-</dd>
-<dt> &lsquo;<samp>reuse=<var>1|0</var></samp>&rsquo;</dt>
-<dd><p>explicitly allow or disallow reusing UDP sockets
-</p>
-</dd>
-<dt> &lsquo;<samp>ttl=<var>ttl</var></samp>&rsquo;</dt>
-<dd><p>set the time to live value (for multicast only)
-</p>
-</dd>
-<dt> &lsquo;<samp>connect=<var>1|0</var></samp>&rsquo;</dt>
-<dd><p>Initialize the UDP socket with <code>connect()</code>. In this case, the
-destination address can&rsquo;t be changed with ff_udp_set_remote_url later.
-If the destination address isn&rsquo;t known at the start, this option can
-be specified in ff_udp_set_remote_url, too.
-This allows finding out the source address for the packets with getsockname,
-and makes writes return with AVERROR(ECONNREFUSED) if &quot;destination
-unreachable&quot; is received.
-For receiving, this gives the benefit of only receiving packets from
-the specified peer address/port.
-</p></dd>
-</dl>
-
-<p>Some usage examples of the udp protocol with &lsquo;<tt>ffmpeg</tt>&rsquo; follow.
-</p>
-<p>To stream over UDP to a remote endpoint:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i <var>input</var> -f <var>format</var> udp://<var>hostname</var>:<var>port</var>
-</pre></td></tr></table>
-
-<p>To stream in mpegts format over UDP using 188 sized UDP packets, using a large input buffer:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i <var>input</var> -f mpegts udp://<var>hostname</var>:<var>port</var>?pkt_size=188&amp;buffer_size=65535
-</pre></td></tr></table>
-
-<p>To receive over UDP from a remote endpoint:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i udp://[<var>multicast-address</var>]:<var>port</var>
-</pre></td></tr></table>
-
-<a name="Filtergraph-description"></a>
-<h1 class="chapter"><a href="ffplay.html#toc-Filtergraph-description">12. Filtergraph description</a></h1>
-
-<p>A filtergraph is a directed graph of connected filters. It can contain
-cycles, and there can be multiple links between a pair of
-filters. Each link has one input pad on one side connecting it to one
-filter from which it takes its input, and one output pad on the other
-side connecting it to the one filter accepting its output.
-</p>
-<p>Each filter in a filtergraph is an instance of a filter class
-registered in the application, which defines the features and the
-number of input and output pads of the filter.
-</p>
-<p>A filter with no input pads is called a &quot;source&quot;, a filter with no
-output pads is called a &quot;sink&quot;.
-</p>
-<a name="Filtergraph-syntax"></a>
-<h2 class="section"><a href="ffplay.html#toc-Filtergraph-syntax">12.1 Filtergraph syntax</a></h2>
-
-<p>A filtergraph can be represented using a textual representation, which
-is recognized by the <code>-vf</code> and <code>-af</code> options of the ff*
-tools, and by the <code>avfilter_graph_parse()</code> function defined in
-&lsquo;<tt>libavfilter/avfiltergraph.h</tt>&rsquo;.
-</p>
-<p>A filterchain consists of a sequence of connected filters, each one
-connected to the previous one in the sequence. A filterchain is
-represented by a list of &quot;,&quot;-separated filter descriptions.
-</p>
-<p>A filtergraph consists of a sequence of filterchains. A sequence of
-filterchains is represented by a list of &quot;;&quot;-separated filterchain
-descriptions.
-</p>
-<p>A filter is represented by a string of the form:
-[<var>in_link_1</var>]...[<var>in_link_N</var>]<var>filter_name</var>=<var>arguments</var>[<var>out_link_1</var>]...[<var>out_link_M</var>]
-</p>
-<p><var>filter_name</var> is the name of the filter class of which the
-described filter is an instance of, and has to be the name of one of
-the filter classes registered in the program.
-The name of the filter class is optionally followed by a string
-&quot;=<var>arguments</var>&quot;.
-</p>
-<p><var>arguments</var> is a string which contains the parameters used to
-initialize the filter instance, and are described in the filter
-descriptions below.
-</p>
-<p>The list of arguments can be quoted using the character &quot;&rsquo;&quot; as initial
-and ending mark, and the character &rsquo;\&rsquo; for escaping the characters
-within the quoted text; otherwise the argument string is considered
-terminated when the next special character (belonging to the set
-&quot;[]=;,&quot;) is encountered.
-</p>
-<p>The name and arguments of the filter are optionally preceded and
-followed by a list of link labels.
-A link label allows to name a link and associate it to a filter output
-or input pad. The preceding labels <var>in_link_1</var>
-... <var>in_link_N</var>, are associated to the filter input pads,
-the following labels <var>out_link_1</var> ... <var>out_link_M</var>, are
-associated to the output pads.
-</p>
-<p>When two link labels with the same name are found in the
-filtergraph, a link between the corresponding input and output pad is
-created.
-</p>
-<p>If an output pad is not labelled, it is linked by default to the first
-unlabelled input pad of the next filter in the filterchain.
-For example in the filterchain:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">nullsrc, split[L1], [L2]overlay, nullsink
-</pre></td></tr></table>
-<p>the split filter instance has two output pads, and the overlay filter
-instance two input pads. The first output pad of split is labelled
-&quot;L1&quot;, the first input pad of overlay is labelled &quot;L2&quot;, and the second
-output pad of split is linked to the second input pad of overlay,
-which are both unlabelled.
-</p>
-<p>In a complete filterchain all the unlabelled filter input and output
-pads must be connected. A filtergraph is considered valid if all the
-filter input and output pads of all the filterchains are connected.
-</p>
-<p>Follows a BNF description for the filtergraph syntax:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>NAME</var>             ::= sequence of alphanumeric characters and '_'
-<var>LINKLABEL</var>        ::= &quot;[&quot; <var>NAME</var> &quot;]&quot;
-<var>LINKLABELS</var>       ::= <var>LINKLABEL</var> [<var>LINKLABELS</var>]
-<var>FILTER_ARGUMENTS</var> ::= sequence of chars (eventually quoted)
-<var>FILTER</var>           ::= [<var>LINKNAMES</var>] <var>NAME</var> [&quot;=&quot; <var>ARGUMENTS</var>] [<var>LINKNAMES</var>]
-<var>FILTERCHAIN</var>      ::= <var>FILTER</var> [,<var>FILTERCHAIN</var>]
-<var>FILTERGRAPH</var>      ::= <var>FILTERCHAIN</var> [;<var>FILTERGRAPH</var>]
-</pre></td></tr></table>
-
-
-<a name="Audio-Filters"></a>
-<h1 class="chapter"><a href="ffplay.html#toc-Audio-Filters">13. Audio Filters</a></h1>
-
-<p>When you configure your FFmpeg build, you can disable any of the
-existing filters using &ndash;disable-filters.
-The configure output will show the audio filters included in your
-build.
-</p>
-<p>Below is a description of the currently available audio filters.
-</p>
-<a name="aformat"></a>
-<h2 class="section"><a href="ffplay.html#toc-aformat">13.1 aformat</a></h2>
-
-<p>Convert the input audio to one of the specified formats. The framework will
-negotiate the most appropriate format to minimize conversions.
-</p>
-<p>The filter accepts three lists of formats, separated by &quot;:&quot;, in the form:
-&quot;<var>sample_formats</var>:<var>channel_layouts</var>:<var>packing_formats</var>&quot;.
-</p>
-<p>Elements in each list are separated by &quot;,&quot; which has to be escaped in the
-filtergraph specification.
-</p>
-<p>The special parameter &quot;all&quot;, in place of a list of elements, signifies all
-supported formats.
-</p>
-<p>Some examples follow:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">aformat=u8\\,s16:mono:packed
-
-aformat=s16:mono\\,stereo:all
-</pre></td></tr></table>
-
-<a name="anull"></a>
-<h2 class="section"><a href="ffplay.html#toc-anull">13.2 anull</a></h2>
-
-<p>Pass the audio source unchanged to the output.
-</p>
-<a name="aresample"></a>
-<h2 class="section"><a href="ffplay.html#toc-aresample">13.3 aresample</a></h2>
-
-<p>Resample the input audio to the specified sample rate.
-</p>
-<p>The filter accepts exactly one parameter, the output sample rate. If not
-specified then the filter will automatically convert between its input
-and output sample rates.
-</p>
-<p>For example, to resample the input audio to 44100Hz:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">aresample=44100
-</pre></td></tr></table>
-
-<a name="ashowinfo"></a>
-<h2 class="section"><a href="ffplay.html#toc-ashowinfo">13.4 ashowinfo</a></h2>
-
-<p>Show a line containing various information for each input audio frame.
-The input audio is not modified.
-</p>
-<p>The shown line contains a sequence of key/value pairs of the form
-<var>key</var>:<var>value</var>.
-</p>
-<p>A description of each shown parameter follows:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
-<dd><p>sequential number of the input frame, starting from 0
-</p>
-</dd>
-<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
-<dd><p>presentation TimeStamp of the input frame, expressed as a number of
-time base units. The time base unit depends on the filter input pad, and
-is usually 1/<var>sample_rate</var>.
-</p>
-</dd>
-<dt> &lsquo;<samp>pts_time</samp>&rsquo;</dt>
-<dd><p>presentation TimeStamp of the input frame, expressed as a number of
-seconds
-</p>
-</dd>
-<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
-<dd><p>position of the frame in the input stream, -1 if this information in
-unavailable and/or meanigless (for example in case of synthetic audio)
-</p>
-</dd>
-<dt> &lsquo;<samp>fmt</samp>&rsquo;</dt>
-<dd><p>sample format name
-</p>
-</dd>
-<dt> &lsquo;<samp>chlayout</samp>&rsquo;</dt>
-<dd><p>channel layout description
-</p>
-</dd>
-<dt> &lsquo;<samp>nb_samples</samp>&rsquo;</dt>
-<dd><p>number of samples (per each channel) contained in the filtered frame
-</p>
-</dd>
-<dt> &lsquo;<samp>rate</samp>&rsquo;</dt>
-<dd><p>sample rate for the audio frame
-</p>
-</dd>
-<dt> &lsquo;<samp>planar</samp>&rsquo;</dt>
-<dd><p>if the packing format is planar, 0 if packed
-</p>
-</dd>
-<dt> &lsquo;<samp>checksum</samp>&rsquo;</dt>
-<dd><p>Adler-32 checksum of all the planes of the input frame
-</p>
-</dd>
-<dt> &lsquo;<samp>plane_checksum</samp>&rsquo;</dt>
-<dd><p>Adler-32 checksum for each input frame plane, expressed in the form
-&quot;[<var>c0</var> <var>c1</var> <var>c2</var> <var>c3</var> <var>c4</var> <var>c5</var> <var>c6</var> <var>c7</var>]&quot;
-</p></dd>
-</dl>
-
-
-<a name="Audio-Sources"></a>
-<h1 class="chapter"><a href="ffplay.html#toc-Audio-Sources">14. Audio Sources</a></h1>
-
-<p>Below is a description of the currently available audio sources.
-</p>
-<a name="abuffer"></a>
-<h2 class="section"><a href="ffplay.html#toc-abuffer">14.1 abuffer</a></h2>
-
-<p>Buffer audio frames, and make them available to the filter chain.
-</p>
-<p>This source is mainly intended for a programmatic use, in particular
-through the interface defined in &lsquo;<tt>libavfilter/asrc_abuffer.h</tt>&rsquo;.
-</p>
-<p>It accepts the following mandatory parameters:
-<var>sample_rate</var>:<var>sample_fmt</var>:<var>channel_layout</var>:<var>packing</var>
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>sample_rate</samp>&rsquo;</dt>
-<dd><p>The sample rate of the incoming audio buffers.
-</p>
-</dd>
-<dt> &lsquo;<samp>sample_fmt</samp>&rsquo;</dt>
-<dd><p>The sample format of the incoming audio buffers.
-Either a sample format name or its corresponging integer representation from
-the enum AVSampleFormat in &lsquo;<tt>libavutil/samplefmt.h</tt>&rsquo;
-</p>
-</dd>
-<dt> &lsquo;<samp>channel_layout</samp>&rsquo;</dt>
-<dd><p>The channel layout of the incoming audio buffers.
-Either a channel layout name from channel_layout_map in
-&lsquo;<tt>libavutil/audioconvert.c</tt>&rsquo; or its corresponding integer representation
-from the AV_CH_LAYOUT_* macros in &lsquo;<tt>libavutil/audioconvert.h</tt>&rsquo;
-</p>
-</dd>
-<dt> &lsquo;<samp>packing</samp>&rsquo;</dt>
-<dd><p>Either &quot;packed&quot; or &quot;planar&quot;, or their integer representation: 0 or 1
-respectively.
-</p>
-</dd>
-</dl>
-
-<p>For example:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">abuffer=44100:s16:stereo:planar
-</pre></td></tr></table>
-
-<p>will instruct the source to accept planar 16bit signed stereo at 44100Hz.
-Since the sample format with name &quot;s16&quot; corresponds to the number
-1 and the &quot;stereo&quot; channel layout corresponds to the value 3, this is
-equivalent to:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">abuffer=44100:1:3:1
-</pre></td></tr></table>
-
-<a name="amovie"></a>
-<h2 class="section"><a href="ffplay.html#toc-amovie">14.2 amovie</a></h2>
-
-<p>Read an audio stream from a movie container.
-</p>
-<p>It accepts the syntax: <var>movie_name</var>[:<var>options</var>] where
-<var>movie_name</var> is the name of the resource to read (not necessarily
-a file but also a device or a stream accessed through some protocol),
-and <var>options</var> is an optional sequence of <var>key</var>=<var>value</var>
-pairs, separated by &quot;:&quot;.
-</p>
-<p>The description of the accepted options follows.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>format_name, f</samp>&rsquo;</dt>
-<dd><p>Specify the format assumed for the movie to read, and can be either
-the name of a container or an input device. If not specified the
-format is guessed from <var>movie_name</var> or by probing.
-</p>
-</dd>
-<dt> &lsquo;<samp>seek_point, sp</samp>&rsquo;</dt>
-<dd><p>Specify the seek point in seconds, the frames will be output
-starting from this seek point, the parameter is evaluated with
-<code>av_strtod</code> so the numerical value may be suffixed by an IS
-postfix. Default value is &quot;0&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>stream_index, si</samp>&rsquo;</dt>
-<dd><p>Specify the index of the audio stream to read. If the value is -1,
-the best suited audio stream will be automatically selected. Default
-value is &quot;-1&quot;.
-</p>
-</dd>
-</dl>
-
-<a name="anullsrc"></a>
-<h2 class="section"><a href="ffplay.html#toc-anullsrc">14.3 anullsrc</a></h2>
-
-<p>Null audio source, never return audio frames. It is mainly useful as a
-template and to be employed in analysis / debugging tools.
-</p>
-<p>It accepts as optional parameter a string of the form
-<var>sample_rate</var>:<var>channel_layout</var>.
-</p>
-<p><var>sample_rate</var> specify the sample rate, and defaults to 44100.
-</p>
-<p><var>channel_layout</var> specify the channel layout, and can be either an
-integer or a string representing a channel layout. The default value
-of <var>channel_layout</var> is 3, which corresponds to CH_LAYOUT_STEREO.
-</p>
-<p>Check the channel_layout_map definition in
-&lsquo;<tt>libavcodec/audioconvert.c</tt>&rsquo; for the mapping between strings and
-channel layout values.
-</p>
-<p>Follow some examples:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">#  set the sample rate to 48000 Hz and the channel layout to CH_LAYOUT_MONO.
-anullsrc=48000:4
-
-# same as
-anullsrc=48000:mono
-</pre></td></tr></table>
-
-
-<a name="Audio-Sinks"></a>
-<h1 class="chapter"><a href="ffplay.html#toc-Audio-Sinks">15. Audio Sinks</a></h1>
-
-<p>Below is a description of the currently available audio sinks.
-</p>
-<a name="abuffersink"></a>
-<h2 class="section"><a href="ffplay.html#toc-abuffersink">15.1 abuffersink</a></h2>
-
-<p>Buffer audio frames, and make them available to the end of filter chain.
-</p>
-<p>This sink is mainly intended for programmatic use, in particular
-through the interface defined in &lsquo;<tt>libavfilter/asink_abuffer.h</tt>&rsquo;.
-</p>
-<p>It requires a pointer to a ABufferSinkContext structure, which defines the
-incoming buffers&rsquo; format, to be passed as the opaque parameter to
-<code>avfilter_init_filter</code> for initialization.
-</p>
-<a name="anullsink"></a>
-<h2 class="section"><a href="ffplay.html#toc-anullsink">15.2 anullsink</a></h2>
-
-<p>Null audio sink, do absolutely nothing with the input audio. It is
-mainly useful as a template and to be employed in analysis / debugging
-tools.
-</p>
-
-<a name="Video-Filters"></a>
-<h1 class="chapter"><a href="ffplay.html#toc-Video-Filters">16. Video Filters</a></h1>
-
-<p>When you configure your FFmpeg build, you can disable any of the
-existing filters using &ndash;disable-filters.
-The configure output will show the video filters included in your
-build.
-</p>
-<p>Below is a description of the currently available video filters.
-</p>
-<a name="blackframe"></a>
-<h2 class="section"><a href="ffplay.html#toc-blackframe">16.1 blackframe</a></h2>
-
-<p>Detect frames that are (almost) completely black. Can be useful to
-detect chapter transitions or commercials. Output lines consist of
-the frame number of the detected frame, the percentage of blackness,
-the position in the file if known or -1 and the timestamp in seconds.
-</p>
-<p>In order to display the output lines, you need to set the loglevel at
-least to the AV_LOG_INFO value.
-</p>
-<p>The filter accepts the syntax:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">blackframe[=<var>amount</var>:[<var>threshold</var>]]
-</pre></td></tr></table>
-
-<p><var>amount</var> is the percentage of the pixels that have to be below the
-threshold, and defaults to 98.
-</p>
-<p><var>threshold</var> is the threshold below which a pixel value is
-considered black, and defaults to 32.
-</p>
-<a name="boxblur"></a>
-<h2 class="section"><a href="ffplay.html#toc-boxblur">16.2 boxblur</a></h2>
-
-<p>Apply boxblur algorithm to the input video.
-</p>
-<p>This filter accepts the parameters:
-<var>luma_power</var>:<var>luma_radius</var>:<var>chroma_radius</var>:<var>chroma_power</var>:<var>alpha_radius</var>:<var>alpha_power</var>
-</p>
-<p>Chroma and alpha parameters are optional, if not specified they default
-to the corresponding values set for <var>luma_radius</var> and
-<var>luma_power</var>.
-</p>
-<p><var>luma_radius</var>, <var>chroma_radius</var>, and <var>alpha_radius</var> represent
-the radius in pixels of the box used for blurring the corresponding
-input plane. They are expressions, and can contain the following
-constants:
-</p><dl compact="compact">
-<dt> &lsquo;<samp>w, h</samp>&rsquo;</dt>
-<dd><p>the input width and heigth in pixels
-</p>
-</dd>
-<dt> &lsquo;<samp>cw, ch</samp>&rsquo;</dt>
-<dd><p>the input chroma image width and height in pixels
-</p>
-</dd>
-<dt> &lsquo;<samp>hsub, vsub</samp>&rsquo;</dt>
-<dd><p>horizontal and vertical chroma subsample values. For example for the
-pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
-</p></dd>
-</dl>
-
-<p>The radius must be a non-negative number, and must be not greater than
-the value of the expression <code>min(w,h)/2</code> for the luma and alpha planes,
-and of <code>min(cw,ch)/2</code> for the chroma planes.
-</p>
-<p><var>luma_power</var>, <var>chroma_power</var>, and <var>alpha_power</var> represent
-how many times the boxblur filter is applied to the corresponding
-plane.
-</p>
-<p>Some examples follow:
-</p>
-<ul>
-<li>
-Apply a boxblur filter with luma, chroma, and alpha radius
-set to 2:
-<table><tr><td>&nbsp;</td><td><pre class="example">boxblur=2:1
-</pre></td></tr></table>
-
-</li><li>
-Set luma radius to 2, alpha and chroma radius to 0
-<table><tr><td>&nbsp;</td><td><pre class="example">boxblur=2:1:0:0:0:0
-</pre></td></tr></table>
-
-</li><li>
-Set luma and chroma radius to a fraction of the video dimension
-<table><tr><td>&nbsp;</td><td><pre class="example">boxblur=min(h\,w)/10:1:min(cw\,ch)/10:1
-</pre></td></tr></table>
-
-</li></ul>
-
-<a name="copy"></a>
-<h2 class="section"><a href="ffplay.html#toc-copy">16.3 copy</a></h2>
-
-<p>Copy the input source unchanged to the output. Mainly useful for
-testing purposes.
-</p>
-<a name="crop"></a>
-<h2 class="section"><a href="ffplay.html#toc-crop">16.4 crop</a></h2>
-
-<p>Crop the input video to <var>out_w</var>:<var>out_h</var>:<var>x</var>:<var>y</var>.
-</p>
-<p>The parameters are expressions containing the following constants:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>E, PI, PHI</samp>&rsquo;</dt>
-<dd><p>the corresponding mathematical approximated values for e
-(euler number), pi (greek PI), PHI (golden ratio)
-</p>
-</dd>
-<dt> &lsquo;<samp>x, y</samp>&rsquo;</dt>
-<dd><p>the computed values for <var>x</var> and <var>y</var>. They are evaluated for
-each new frame.
-</p>
-</dd>
-<dt> &lsquo;<samp>in_w, in_h</samp>&rsquo;</dt>
-<dd><p>the input width and heigth
-</p>
-</dd>
-<dt> &lsquo;<samp>iw, ih</samp>&rsquo;</dt>
-<dd><p>same as <var>in_w</var> and <var>in_h</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>out_w, out_h</samp>&rsquo;</dt>
-<dd><p>the output (cropped) width and heigth
-</p>
-</dd>
-<dt> &lsquo;<samp>ow, oh</samp>&rsquo;</dt>
-<dd><p>same as <var>out_w</var> and <var>out_h</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
-<dd><p>same as <var>iw</var> / <var>ih</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
-<dd><p>input sample aspect ratio
-</p>
-</dd>
-<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
-<dd><p>input display aspect ratio, it is the same as (<var>iw</var> / <var>ih</var>) * <var>sar</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>hsub, vsub</samp>&rsquo;</dt>
-<dd><p>horizontal and vertical chroma subsample values. For example for the
-pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
-</p>
-</dd>
-<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
-<dd><p>the number of input frame, starting from 0
-</p>
-</dd>
-<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
-<dd><p>the position in the file of the input frame, NAN if unknown
-</p>
-</dd>
-<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
-<dd><p>timestamp expressed in seconds, NAN if the input timestamp is unknown
-</p>
-</dd>
-</dl>
-
-<p>The <var>out_w</var> and <var>out_h</var> parameters specify the expressions for
-the width and height of the output (cropped) video. They are
-evaluated just at the configuration of the filter.
-</p>
-<p>The default value of <var>out_w</var> is &quot;in_w&quot;, and the default value of
-<var>out_h</var> is &quot;in_h&quot;.
-</p>
-<p>The expression for <var>out_w</var> may depend on the value of <var>out_h</var>,
-and the expression for <var>out_h</var> may depend on <var>out_w</var>, but they
-cannot depend on <var>x</var> and <var>y</var>, as <var>x</var> and <var>y</var> are
-evaluated after <var>out_w</var> and <var>out_h</var>.
-</p>
-<p>The <var>x</var> and <var>y</var> parameters specify the expressions for the
-position of the top-left corner of the output (non-cropped) area. They
-are evaluated for each frame. If the evaluated value is not valid, it
-is approximated to the nearest valid value.
-</p>
-<p>The default value of <var>x</var> is &quot;(in_w-out_w)/2&quot;, and the default
-value for <var>y</var> is &quot;(in_h-out_h)/2&quot;, which set the cropped area at
-the center of the input image.
-</p>
-<p>The expression for <var>x</var> may depend on <var>y</var>, and the expression
-for <var>y</var> may depend on <var>x</var>.
-</p>
-<p>Follow some examples:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># crop the central input area with size 100x100
-crop=100:100
-
-# crop the central input area with size 2/3 of the input video
-&quot;crop=2/3*in_w:2/3*in_h&quot;
-
-# crop the input video central square
-crop=in_h
-
-# delimit the rectangle with the top-left corner placed at position
-# 100:100 and the right-bottom corner corresponding to the right-bottom
-# corner of the input image.
-crop=in_w-100:in_h-100:100:100
-
-# crop 10 pixels from the left and right borders, and 20 pixels from
-# the top and bottom borders
-&quot;crop=in_w-2*10:in_h-2*20&quot;
-
-# keep only the bottom right quarter of the input image
-&quot;crop=in_w/2:in_h/2:in_w/2:in_h/2&quot;
-
-# crop height for getting Greek harmony
-&quot;crop=in_w:1/PHI*in_w&quot;
-
-# trembling effect
-&quot;crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(n/10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(n/7)&quot;
-
-# erratic camera effect depending on timestamp
-&quot;crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(t*10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(t*13)&quot;
-
-# set x depending on the value of y
-&quot;crop=in_w/2:in_h/2:y:10+10*sin(n/10)&quot;
-</pre></td></tr></table>
-
-<a name="cropdetect"></a>
-<h2 class="section"><a href="ffplay.html#toc-cropdetect">16.5 cropdetect</a></h2>
-
-<p>Auto-detect crop size.
-</p>
-<p>Calculate necessary cropping parameters and prints the recommended
-parameters through the logging system. The detected dimensions
-correspond to the non-black area of the input video.
-</p>
-<p>It accepts the syntax:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">cropdetect[=<var>limit</var>[:<var>round</var>[:<var>reset</var>]]]
-</pre></td></tr></table>
-
-<dl compact="compact">
-<dt> &lsquo;<samp>limit</samp>&rsquo;</dt>
-<dd><p>Threshold, which can be optionally specified from nothing (0) to
-everything (255), defaults to 24.
-</p>
-</dd>
-<dt> &lsquo;<samp>round</samp>&rsquo;</dt>
-<dd><p>Value which the width/height should be divisible by, defaults to
-16. The offset is automatically adjusted to center the video. Use 2 to
-get only even dimensions (needed for 4:2:2 video). 16 is best when
-encoding to most video codecs.
-</p>
-</dd>
-<dt> &lsquo;<samp>reset</samp>&rsquo;</dt>
-<dd><p>Counter that determines after how many frames cropdetect will reset
-the previously detected largest video area and start over to detect
-the current optimal crop area. Defaults to 0.
-</p>
-<p>This can be useful when channel logos distort the video area. 0
-indicates never reset and return the largest area encountered during
-playback.
-</p></dd>
-</dl>
-
-<a name="delogo"></a>
-<h2 class="section"><a href="ffplay.html#toc-delogo">16.6 delogo</a></h2>
-
-<p>Suppress a TV station logo by a simple interpolation of the surrounding
-pixels. Just set a rectangle covering the logo and watch it disappear
-(and sometimes something even uglier appear - your mileage may vary).
-</p>
-<p>The filter accepts parameters as a string of the form
-&quot;<var>x</var>:<var>y</var>:<var>w</var>:<var>h</var>:<var>band</var>&quot;, or as a list of
-<var>key</var>=<var>value</var> pairs, separated by &quot;:&quot;.
-</p>
-<p>The description of the accepted parameters follows.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>x, y</samp>&rsquo;</dt>
-<dd><p>Specify the top left corner coordinates of the logo. They must be
-specified.
-</p>
-</dd>
-<dt> &lsquo;<samp>w, h</samp>&rsquo;</dt>
-<dd><p>Specify the width and height of the logo to clear. They must be
-specified.
-</p>
-</dd>
-<dt> &lsquo;<samp>band, t</samp>&rsquo;</dt>
-<dd><p>Specify the thickness of the fuzzy edge of the rectangle (added to
-<var>w</var> and <var>h</var>). The default value is 4.
-</p>
-</dd>
-<dt> &lsquo;<samp>show</samp>&rsquo;</dt>
-<dd><p>When set to 1, a green rectangle is drawn on the screen to simplify
-finding the right <var>x</var>, <var>y</var>, <var>w</var>, <var>h</var> parameters, and
-<var>band</var> is set to 4. The default value is 0.
-</p>
-</dd>
-</dl>
-
-<p>Some examples follow.
-</p>
-<ul>
-<li>
-Set a rectangle covering the area with top left corner coordinates 0,0
-and size 100x77, setting a band of size 10:
-<table><tr><td>&nbsp;</td><td><pre class="example">delogo=0:0:100:77:10
-</pre></td></tr></table>
-
-</li><li>
-As the previous example, but use named options:
-<table><tr><td>&nbsp;</td><td><pre class="example">delogo=x=0:y=0:w=100:h=77:band=10
-</pre></td></tr></table>
-
-</li></ul>
-
-<a name="drawbox"></a>
-<h2 class="section"><a href="ffplay.html#toc-drawbox">16.7 drawbox</a></h2>
-
-<p>Draw a colored box on the input image.
-</p>
-<p>It accepts the syntax:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">drawbox=<var>x</var>:<var>y</var>:<var>width</var>:<var>height</var>:<var>color</var>
-</pre></td></tr></table>
-
-<dl compact="compact">
-<dt> &lsquo;<samp>x, y</samp>&rsquo;</dt>
-<dd><p>Specify the top left corner coordinates of the box. Default to 0.
-</p>
-</dd>
-<dt> &lsquo;<samp>width, height</samp>&rsquo;</dt>
-<dd><p>Specify the width and height of the box, if 0 they are interpreted as
-the input width and height. Default to 0.
-</p>
-</dd>
-<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
-<dd><p>Specify the color of the box to write, it can be the name of a color
-(case insensitive match) or a 0xRRGGBB[AA] sequence.
-</p></dd>
-</dl>
-
-<p>Follow some examples:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># draw a black box around the edge of the input image
-drawbox
-
-# draw a box with color red and an opacity of 50%
-drawbox=10:20:200:60:red@0.5&quot;
-</pre></td></tr></table>
-
-<a name="drawtext"></a>
-<h2 class="section"><a href="ffplay.html#toc-drawtext">16.8 drawtext</a></h2>
-
-<p>Draw text string or text from specified file on top of video using the
-libfreetype library.
-</p>
-<p>To enable compilation of this filter you need to configure FFmpeg with
-<code>--enable-libfreetype</code>.
-</p>
-<p>The filter also recognizes strftime() sequences in the provided text
-and expands them accordingly. Check the documentation of strftime().
-</p>
-<p>The filter accepts parameters as a list of <var>key</var>=<var>value</var> pairs,
-separated by &quot;:&quot;.
-</p>
-<p>The description of the accepted parameters follows.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>fontfile</samp>&rsquo;</dt>
-<dd><p>The font file to be used for drawing text. Path must be included.
-This parameter is mandatory.
-</p>
-</dd>
-<dt> &lsquo;<samp>text</samp>&rsquo;</dt>
-<dd><p>The text string to be drawn. The text must be a sequence of UTF-8
-encoded characters.
-This parameter is mandatory if no file is specified with the parameter
-<var>textfile</var>.
-</p>
-</dd>
-<dt> &lsquo;<samp>textfile</samp>&rsquo;</dt>
-<dd><p>A text file containing text to be drawn. The text must be a sequence
-of UTF-8 encoded characters.
-</p>
-<p>This parameter is mandatory if no text string is specified with the
-parameter <var>text</var>.
-</p>
-<p>If both text and textfile are specified, an error is thrown.
-</p>
-</dd>
-<dt> &lsquo;<samp>x, y</samp>&rsquo;</dt>
-<dd><p>The offsets where text will be drawn within the video frame.
-Relative to the top/left border of the output image.
-</p>
-<p>The default value of <var>x</var> and <var>y</var> is 0.
-</p>
-</dd>
-<dt> &lsquo;<samp>fontsize</samp>&rsquo;</dt>
-<dd><p>The font size to be used for drawing text.
-The default value of <var>fontsize</var> is 16.
-</p>
-</dd>
-<dt> &lsquo;<samp>fontcolor</samp>&rsquo;</dt>
-<dd><p>The color to be used for drawing fonts.
-Either a string (e.g. &quot;red&quot;) or in 0xRRGGBB[AA] format
-(e.g. &quot;0xff000033&quot;), possibly followed by an alpha specifier.
-The default value of <var>fontcolor</var> is &quot;black&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>boxcolor</samp>&rsquo;</dt>
-<dd><p>The color to be used for drawing box around text.
-Either a string (e.g. &quot;yellow&quot;) or in 0xRRGGBB[AA] format
-(e.g. &quot;0xff00ff&quot;), possibly followed by an alpha specifier.
-The default value of <var>boxcolor</var> is &quot;white&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>box</samp>&rsquo;</dt>
-<dd><p>Used to draw a box around text using background color.
-Value should be either 1 (enable) or 0 (disable).
-The default value of <var>box</var> is 0.
-</p>
-</dd>
-<dt> &lsquo;<samp>shadowx, shadowy</samp>&rsquo;</dt>
-<dd><p>The x and y offsets for the text shadow position with respect to the
-position of the text. They can be either positive or negative
-values. Default value for both is &quot;0&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>shadowcolor</samp>&rsquo;</dt>
-<dd><p>The color to be used for drawing a shadow behind the drawn text.  It
-can be a color name (e.g. &quot;yellow&quot;) or a string in the 0xRRGGBB[AA]
-form (e.g. &quot;0xff00ff&quot;), possibly followed by an alpha specifier.
-The default value of <var>shadowcolor</var> is &quot;black&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>ft_load_flags</samp>&rsquo;</dt>
-<dd><p>Flags to be used for loading the fonts.
-</p>
-<p>The flags map the corresponding flags supported by libfreetype, and are
-a combination of the following values:
-</p><dl compact="compact">
-<dt> <var>default</var></dt>
-<dt> <var>no_scale</var></dt>
-<dt> <var>no_hinting</var></dt>
-<dt> <var>render</var></dt>
-<dt> <var>no_bitmap</var></dt>
-<dt> <var>vertical_layout</var></dt>
-<dt> <var>force_autohint</var></dt>
-<dt> <var>crop_bitmap</var></dt>
-<dt> <var>pedantic</var></dt>
-<dt> <var>ignore_global_advance_width</var></dt>
-<dt> <var>no_recurse</var></dt>
-<dt> <var>ignore_transform</var></dt>
-<dt> <var>monochrome</var></dt>
-<dt> <var>linear_design</var></dt>
-<dt> <var>no_autohint</var></dt>
-<dt> <var>end table</var></dt>
-</dl>
-
-<p>Default value is &quot;render&quot;.
-</p>
-<p>For more information consult the documentation for the FT_LOAD_*
-libfreetype flags.
-</p>
-</dd>
-<dt> &lsquo;<samp>tabsize</samp>&rsquo;</dt>
-<dd><p>The size in number of spaces to use for rendering the tab.
-Default value is 4.
-</p></dd>
-</dl>
-
-<p>For example the command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'&quot;
-</pre></td></tr></table>
-
-<p>will draw &quot;Test Text&quot; with font FreeSerif, using the default values
-for the optional parameters.
-</p>
-<p>The command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
-          x=100: y=50: fontsize=24: fontcolor=yellow@0.2: box=1: boxcolor=red@0.2&quot;
-</pre></td></tr></table>
-
-<p>will draw &rsquo;Test Text&rsquo; with font FreeSerif of size 24 at position x=100
-and y=50 (counting from the top-left corner of the screen), text is
-yellow with a red box around it. Both the text and the box have an
-opacity of 20%.
-</p>
-<p>Note that the double quotes are not necessary if spaces are not used
-within the parameter list.
-</p>
-<p>For more information about libfreetype, check:
-<a href="http://www.freetype.org/">http://www.freetype.org/</a>.
-</p>
-<a name="fade"></a>
-<h2 class="section"><a href="ffplay.html#toc-fade">16.9 fade</a></h2>
-
-<p>Apply fade-in/out effect to input video.
-</p>
-<p>It accepts the parameters:
-<var>type</var>:<var>start_frame</var>:<var>nb_frames</var>
-</p>
-<p><var>type</var> specifies if the effect type, can be either &quot;in&quot; for
-fade-in, or &quot;out&quot; for a fade-out effect.
-</p>
-<p><var>start_frame</var> specifies the number of the start frame for starting
-to apply the fade effect.
-</p>
-<p><var>nb_frames</var> specifies the number of frames for which the fade
-effect has to last. At the end of the fade-in effect the output video
-will have the same intensity as the input video, at the end of the
-fade-out transition the output video will be completely black.
-</p>
-<p>A few usage examples follow, usable too as test scenarios.
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># fade in first 30 frames of video
-fade=in:0:30
-
-# fade out last 45 frames of a 200-frame video
-fade=out:155:45
-
-# fade in first 25 frames and fade out last 25 frames of a 1000-frame video
-fade=in:0:25, fade=out:975:25
-
-# make first 5 frames black, then fade in from frame 5-24
-fade=in:5:20
-</pre></td></tr></table>
-
-<a name="fieldorder"></a>
-<h2 class="section"><a href="ffplay.html#toc-fieldorder">16.10 fieldorder</a></h2>
-
-<p>Transform the field order of the input video.
-</p>
-<p>It accepts one parameter which specifies the required field order that
-the input interlaced video will be transformed to. The parameter can
-assume one of the following values:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>0 or bff</samp>&rsquo;</dt>
-<dd><p>output bottom field first
-</p></dd>
-<dt> &lsquo;<samp>1 or tff</samp>&rsquo;</dt>
-<dd><p>output top field first
-</p></dd>
-</dl>
-
-<p>Default value is &quot;tff&quot;.
-</p>
-<p>Transformation is achieved by shifting the picture content up or down
-by one line, and filling the remaining line with appropriate picture content.
-This method is consistent with most broadcast field order converters.
-</p>
-<p>If the input video is not flagged as being interlaced, or it is already
-flagged as being of the required output field order then this filter does
-not alter the incoming video.
-</p>
-<p>This filter is very useful when converting to or from PAL DV material,
-which is bottom field first.
-</p>
-<p>For example:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">./ffmpeg -i in.vob -vf &quot;fieldorder=bff&quot; out.dv
-</pre></td></tr></table>
-
-<a name="fifo"></a>
-<h2 class="section"><a href="ffplay.html#toc-fifo">16.11 fifo</a></h2>
-
-<p>Buffer input images and send them when they are requested.
-</p>
-<p>This filter is mainly useful when auto-inserted by the libavfilter
-framework.
-</p>
-<p>The filter does not take parameters.
-</p>
-<a name="format"></a>
-<h2 class="section"><a href="ffplay.html#toc-format">16.12 format</a></h2>
-
-<p>Convert the input video to one of the specified pixel formats.
-Libavfilter will try to pick one that is supported for the input to
-the next filter.
-</p>
-<p>The filter accepts a list of pixel format names, separated by &quot;:&quot;,
-for example &quot;yuv420p:monow:rgb24&quot;.
-</p>
-<p>Some examples follow:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># convert the input video to the format &quot;yuv420p&quot;
-format=yuv420p
-
-# convert the input video to any of the formats in the list
-format=yuv420p:yuv444p:yuv410p
-</pre></td></tr></table>
-
-<p><a name="frei0r"></a>
-</p><a name="frei0r-1"></a>
-<h2 class="section"><a href="ffplay.html#toc-frei0r-1">16.13 frei0r</a></h2>
-
-<p>Apply a frei0r effect to the input video.
-</p>
-<p>To enable compilation of this filter you need to install the frei0r
-header and configure FFmpeg with &ndash;enable-frei0r.
-</p>
-<p>The filter supports the syntax:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>filter_name</var>[{:|=}<var>param1</var>:<var>param2</var>:...:<var>paramN</var>]
-</pre></td></tr></table>
-
-<p><var>filter_name</var> is the name to the frei0r effect to load. If the
-environment variable <code>FREI0R_PATH</code> is defined, the frei0r effect
-is searched in each one of the directories specified by the colon
-separated list in <code>FREIOR_PATH</code>, otherwise in the standard frei0r
-paths, which are in this order: &lsquo;<tt>HOME/.frei0r-1/lib/</tt>&rsquo;,
-&lsquo;<tt>/usr/local/lib/frei0r-1/</tt>&rsquo;, &lsquo;<tt>/usr/lib/frei0r-1/</tt>&rsquo;.
-</p>
-<p><var>param1</var>, <var>param2</var>, ... , <var>paramN</var> specify the parameters
-for the frei0r effect.
-</p>
-<p>A frei0r effect parameter can be a boolean (whose values are specified
-with &quot;y&quot; and &quot;n&quot;), a double, a color (specified by the syntax
-<var>R</var>/<var>G</var>/<var>B</var>, <var>R</var>, <var>G</var>, and <var>B</var> being float
-numbers from 0.0 to 1.0) or by an <code>av_parse_color()</code> color
-description), a position (specified by the syntax <var>X</var>/<var>Y</var>,
-<var>X</var> and <var>Y</var> being float numbers) and a string.
-</p>
-<p>The number and kind of parameters depend on the loaded effect. If an
-effect parameter is not specified the default value is set.
-</p>
-<p>Some examples follow:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># apply the distort0r effect, set the first two double parameters
-frei0r=distort0r:0.5:0.01
-
-# apply the colordistance effect, takes a color as first parameter
-frei0r=colordistance:0.2/0.3/0.4
-frei0r=colordistance:violet
-frei0r=colordistance:0x112233
-
-# apply the perspective effect, specify the top left and top right
-# image positions
-frei0r=perspective:0.2/0.2:0.8/0.2
-</pre></td></tr></table>
-
-<p>For more information see:
-<a href="http://piksel.org/frei0r">http://piksel.org/frei0r</a>
-</p>
-<a name="gradfun"></a>
-<h2 class="section"><a href="ffplay.html#toc-gradfun">16.14 gradfun</a></h2>
-
-<p>Fix the banding artifacts that are sometimes introduced into nearly flat
-regions by truncation to 8bit colordepth.
-Interpolate the gradients that should go where the bands are, and
-dither them.
-</p>
-<p>This filter is designed for playback only.  Do not use it prior to
-lossy compression, because compression tends to lose the dither and
-bring back the bands.
-</p>
-<p>The filter takes two optional parameters, separated by &rsquo;:&rsquo;:
-<var>strength</var>:<var>radius</var>
-</p>
-<p><var>strength</var> is the maximum amount by which the filter will change
-any one pixel. Also the threshold for detecting nearly flat
-regions. Acceptable values range from .51 to 255, default value is
-1.2, out-of-range values will be clipped to the valid range.
-</p>
-<p><var>radius</var> is the neighborhood to fit the gradient to. A larger
-radius makes for smoother gradients, but also prevents the filter from
-modifying the pixels near detailed regions. Acceptable values are
-8-32, default value is 16, out-of-range values will be clipped to the
-valid range.
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example"># default parameters
-gradfun=1.2:16
-
-# omitting radius
-gradfun=1.2
-</pre></td></tr></table>
-
-<a name="hflip"></a>
-<h2 class="section"><a href="ffplay.html#toc-hflip">16.15 hflip</a></h2>
-
-<p>Flip the input video horizontally.
-</p>
-<p>For example to horizontally flip the video in input with
-&lsquo;<tt>ffmpeg</tt>&rsquo;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -vf &quot;hflip&quot; out.avi
-</pre></td></tr></table>
-
-<a name="hqdn3d"></a>
-<h2 class="section"><a href="ffplay.html#toc-hqdn3d">16.16 hqdn3d</a></h2>
-
-<p>High precision/quality 3d denoise filter. This filter aims to reduce
-image noise producing smooth images and making still images really
-still. It should enhance compressibility.
-</p>
-<p>It accepts the following optional parameters:
-<var>luma_spatial</var>:<var>chroma_spatial</var>:<var>luma_tmp</var>:<var>chroma_tmp</var>
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>luma_spatial</samp>&rsquo;</dt>
-<dd><p>a non-negative float number which specifies spatial luma strength,
-defaults to 4.0
-</p>
-</dd>
-<dt> &lsquo;<samp>chroma_spatial</samp>&rsquo;</dt>
-<dd><p>a non-negative float number which specifies spatial chroma strength,
-defaults to 3.0*<var>luma_spatial</var>/4.0
-</p>
-</dd>
-<dt> &lsquo;<samp>luma_tmp</samp>&rsquo;</dt>
-<dd><p>a float number which specifies luma temporal strength, defaults to
-6.0*<var>luma_spatial</var>/4.0
-</p>
-</dd>
-<dt> &lsquo;<samp>chroma_tmp</samp>&rsquo;</dt>
-<dd><p>a float number which specifies chroma temporal strength, defaults to
-<var>luma_tmp</var>*<var>chroma_spatial</var>/<var>luma_spatial</var>
-</p></dd>
-</dl>
-
-<a name="lut_002c-lutrgb_002c-lutyuv"></a>
-<h2 class="section"><a href="ffplay.html#toc-lut_002c-lutrgb_002c-lutyuv">16.17 lut, lutrgb, lutyuv</a></h2>
-
-<p>Compute a look-up table for binding each pixel component input value
-to an output value, and apply it to input video.
-</p>
-<p><var>lutyuv</var> applies a lookup table to a YUV input video, <var>lutrgb</var>
-to an RGB input video.
-</p>
-<p>These filters accept in input a &quot;:&quot;-separated list of options, which
-specify the expressions used for computing the lookup table for the
-corresponding pixel component values.
-</p>
-<p>The <var>lut</var> filter requires either YUV or RGB pixel formats in
-input, and accepts the options:
-</p><dl compact="compact">
-<dd><p><var>c0</var> (first  pixel component)
-<var>c1</var> (second pixel component)
-<var>c2</var> (third  pixel component)
-<var>c3</var> (fourth pixel component, corresponds to the alpha component)
-</p></dd>
-</dl>
-
-<p>The exact component associated to each option depends on the format in
-input.
-</p>
-<p>The <var>lutrgb</var> filter requires RGB pixel formats in input, and
-accepts the options:
-</p><dl compact="compact">
-<dd><p><var>r</var> (red component)
-<var>g</var> (green component)
-<var>b</var> (blue component)
-<var>a</var> (alpha component)
-</p></dd>
-</dl>
-
-<p>The <var>lutyuv</var> filter requires YUV pixel formats in input, and
-accepts the options:
-</p><dl compact="compact">
-<dd><p><var>y</var> (Y/luminance component)
-<var>u</var> (U/Cb component)
-<var>v</var> (V/Cr component)
-<var>a</var> (alpha component)
-</p></dd>
-</dl>
-
-<p>The expressions can contain the following constants and functions:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>E, PI, PHI</samp>&rsquo;</dt>
-<dd><p>the corresponding mathematical approximated values for e
-(euler number), pi (greek PI), PHI (golden ratio)
-</p>
-</dd>
-<dt> &lsquo;<samp>w, h</samp>&rsquo;</dt>
-<dd><p>the input width and heigth
-</p>
-</dd>
-<dt> &lsquo;<samp>val</samp>&rsquo;</dt>
-<dd><p>input value for the pixel component
-</p>
-</dd>
-<dt> &lsquo;<samp>clipval</samp>&rsquo;</dt>
-<dd><p>the input value clipped in the <var>minval</var>-<var>maxval</var> range
-</p>
-</dd>
-<dt> &lsquo;<samp>maxval</samp>&rsquo;</dt>
-<dd><p>maximum value for the pixel component
-</p>
-</dd>
-<dt> &lsquo;<samp>minval</samp>&rsquo;</dt>
-<dd><p>minimum value for the pixel component
-</p>
-</dd>
-<dt> &lsquo;<samp>negval</samp>&rsquo;</dt>
-<dd><p>the negated value for the pixel component value clipped in the
-<var>minval</var>-<var>maxval</var> range , it corresponds to the expression
-&quot;maxval-clipval+minval&quot;
-</p>
-</dd>
-<dt> &lsquo;<samp>clip(val)</samp>&rsquo;</dt>
-<dd><p>the computed value in <var>val</var> clipped in the
-<var>minval</var>-<var>maxval</var> range
-</p>
-</dd>
-<dt> &lsquo;<samp>gammaval(gamma)</samp>&rsquo;</dt>
-<dd><p>the computed gamma correction value of the pixel component value
-clipped in the <var>minval</var>-<var>maxval</var> range, corresponds to the
-expression
-&quot;pow((clipval-minval)/(maxval-minval)\,<var>gamma</var>)*(maxval-minval)+minval&quot;
-</p>
-</dd>
-</dl>
-
-<p>All expressions default to &quot;val&quot;.
-</p>
-<p>Some examples follow:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># negate input video
-lutrgb=&quot;r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val&quot;
-lutyuv=&quot;y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val&quot;
-
-# the above is the same as
-lutrgb=&quot;r=negval:g=negval:b=negval&quot;
-lutyuv=&quot;y=negval:u=negval:v=negval&quot;
-
-# negate luminance
-lutyuv=negval
-
-# remove chroma components, turns the video into a graytone image
-lutyuv=&quot;u=128:v=128&quot;
-
-# apply a luma burning effect
-lutyuv=&quot;y=2*val&quot;
-
-# remove green and blue components
-lutrgb=&quot;g=0:b=0&quot;
-
-# set a constant alpha channel value on input
-format=rgba,lutrgb=a=&quot;maxval-minval/2&quot;
-
-# correct luminance gamma by a 0.5 factor
-lutyuv=y=gammaval(0.5)
-</pre></td></tr></table>
-
-<a name="mp"></a>
-<h2 class="section"><a href="ffplay.html#toc-mp">16.18 mp</a></h2>
-
-<p>Apply an MPlayer filter to the input video.
-</p>
-<p>This filter provides a wrapper around most of the filters of
-MPlayer/MEncoder.
-</p>
-<p>This wrapper is considered experimental. Some of the wrapped filters
-may not work properly and we may drop support for them, as they will
-be implemented natively into FFmpeg. Thus you should avoid
-depending on them when writing portable scripts.
-</p>
-<p>The filters accepts the parameters:
-<var>filter_name</var>[:=]<var>filter_params</var>
-</p>
-<p><var>filter_name</var> is the name of a supported MPlayer filter,
-<var>filter_params</var> is a string containing the parameters accepted by
-the named filter.
-</p>
-<p>The list of the currently supported filters follows:
-</p><dl compact="compact">
-<dt> <var>2xsai</var></dt>
-<dt> <var>decimate</var></dt>
-<dt> <var>denoise3d</var></dt>
-<dt> <var>detc</var></dt>
-<dt> <var>dint</var></dt>
-<dt> <var>divtc</var></dt>
-<dt> <var>down3dright</var></dt>
-<dt> <var>dsize</var></dt>
-<dt> <var>eq2</var></dt>
-<dt> <var>eq</var></dt>
-<dt> <var>field</var></dt>
-<dt> <var>fil</var></dt>
-<dt> <var>fixpts</var></dt>
-<dt> <var>framestep</var></dt>
-<dt> <var>fspp</var></dt>
-<dt> <var>geq</var></dt>
-<dt> <var>harddup</var></dt>
-<dt> <var>hqdn3d</var></dt>
-<dt> <var>hue</var></dt>
-<dt> <var>il</var></dt>
-<dt> <var>ilpack</var></dt>
-<dt> <var>ivtc</var></dt>
-<dt> <var>kerndeint</var></dt>
-<dt> <var>mcdeint</var></dt>
-<dt> <var>mirror</var></dt>
-<dt> <var>noise</var></dt>
-<dt> <var>ow</var></dt>
-<dt> <var>palette</var></dt>
-<dt> <var>perspective</var></dt>
-<dt> <var>phase</var></dt>
-<dt> <var>pp7</var></dt>
-<dt> <var>pullup</var></dt>
-<dt> <var>qp</var></dt>
-<dt> <var>rectangle</var></dt>
-<dt> <var>remove-logo</var></dt>
-<dt> <var>rotate</var></dt>
-<dt> <var>sab</var></dt>
-<dt> <var>screenshot</var></dt>
-<dt> <var>smartblur</var></dt>
-<dt> <var>softpulldown</var></dt>
-<dt> <var>softskip</var></dt>
-<dt> <var>spp</var></dt>
-<dt> <var>swapuv</var></dt>
-<dt> <var>telecine</var></dt>
-<dt> <var>tile</var></dt>
-<dt> <var>tinterlace</var></dt>
-<dt> <var>unsharp</var></dt>
-<dt> <var>uspp</var></dt>
-<dt> <var>yuvcsp</var></dt>
-<dt> <var>yvu9</var></dt>
-</dl>
-
-<p>The parameter syntax and behavior for the listed filters are the same
-of the corresponding MPlayer filters. For detailed instructions check
-the &quot;VIDEO FILTERS&quot; section in the MPlayer manual.
-</p>
-<p>Some examples follow:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># remove a logo by interpolating the surrounding pixels
-mp=delogo=200:200:80:20:1
-
-# adjust gamma, brightness, contrast
-mp=eq2=1.0:2:0.5
-
-# tweak hue and saturation
-mp=hue=100:-10
-</pre></td></tr></table>
-
-<p>See also mplayer(1), <a href="http://www.mplayerhq.hu/">http://www.mplayerhq.hu/</a>.
-</p>
-<a name="negate"></a>
-<h2 class="section"><a href="ffplay.html#toc-negate">16.19 negate</a></h2>
-
-<p>Negate input video.
-</p>
-<p>This filter accepts an integer in input, if non-zero it negates the
-alpha component (if available). The default value in input is 0.
-</p>
-<a name="noformat"></a>
-<h2 class="section"><a href="ffplay.html#toc-noformat">16.20 noformat</a></h2>
-
-<p>Force libavfilter not to use any of the specified pixel formats for the
-input to the next filter.
-</p>
-<p>The filter accepts a list of pixel format names, separated by &quot;:&quot;,
-for example &quot;yuv420p:monow:rgb24&quot;.
-</p>
-<p>Some examples follow:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># force libavfilter to use a format different from &quot;yuv420p&quot; for the
-# input to the vflip filter
-noformat=yuv420p,vflip
-
-# convert the input video to any of the formats not contained in the list
-noformat=yuv420p:yuv444p:yuv410p
-</pre></td></tr></table>
-
-<a name="null-1"></a>
-<h2 class="section"><a href="ffplay.html#toc-null-1">16.21 null</a></h2>
-
-<p>Pass the video source unchanged to the output.
-</p>
-<a name="ocv"></a>
-<h2 class="section"><a href="ffplay.html#toc-ocv">16.22 ocv</a></h2>
-
-<p>Apply video transform using libopencv.
-</p>
-<p>To enable this filter install libopencv library and headers and
-configure FFmpeg with &ndash;enable-libopencv.
-</p>
-<p>The filter takes the parameters: <var>filter_name</var>{:=}<var>filter_params</var>.
-</p>
-<p><var>filter_name</var> is the name of the libopencv filter to apply.
-</p>
-<p><var>filter_params</var> specifies the parameters to pass to the libopencv
-filter. If not specified the default values are assumed.
-</p>
-<p>Refer to the official libopencv documentation for more precise
-informations:
-<a href="http://opencv.willowgarage.com/documentation/c/image_filtering.html">http://opencv.willowgarage.com/documentation/c/image_filtering.html</a>
-</p>
-<p>Follows the list of supported libopencv filters.
-</p>
-<p><a name="dilate"></a>
-</p><a name="dilate-1"></a>
-<h3 class="subsection"><a href="ffplay.html#toc-dilate-1">16.22.1 dilate</a></h3>
-
-<p>Dilate an image by using a specific structuring element.
-This filter corresponds to the libopencv function <code>cvDilate</code>.
-</p>
-<p>It accepts the parameters: <var>struct_el</var>:<var>nb_iterations</var>.
-</p>
-<p><var>struct_el</var> represents a structuring element, and has the syntax:
-<var>cols</var>x<var>rows</var>+<var>anchor_x</var>x<var>anchor_y</var>/<var>shape</var>
-</p>
-<p><var>cols</var> and <var>rows</var> represent the number of colums and rows of
-the structuring element, <var>anchor_x</var> and <var>anchor_y</var> the anchor
-point, and <var>shape</var> the shape for the structuring element, and
-can be one of the values &quot;rect&quot;, &quot;cross&quot;, &quot;ellipse&quot;, &quot;custom&quot;.
-</p>
-<p>If the value for <var>shape</var> is &quot;custom&quot;, it must be followed by a
-string of the form &quot;=<var>filename</var>&quot;. The file with name
-<var>filename</var> is assumed to represent a binary image, with each
-printable character corresponding to a bright pixel. When a custom
-<var>shape</var> is used, <var>cols</var> and <var>rows</var> are ignored, the number
-or columns and rows of the read file are assumed instead.
-</p>
-<p>The default value for <var>struct_el</var> is &quot;3x3+0x0/rect&quot;.
-</p>
-<p><var>nb_iterations</var> specifies the number of times the transform is
-applied to the image, and defaults to 1.
-</p>
-<p>Follow some example:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># use the default values
-ocv=dilate
-
-# dilate using a structuring element with a 5x5 cross, iterate two times
-ocv=dilate=5x5+2x2/cross:2
-
-# read the shape from the file diamond.shape, iterate two times
-# the file diamond.shape may contain a pattern of characters like this:
-#   *
-#  ***
-# *****
-#  ***
-#   *
-# the specified cols and rows are ignored (but not the anchor point coordinates)
-ocv=0x0+2x2/custom=diamond.shape:2
-</pre></td></tr></table>
-
-<a name="erode"></a>
-<h3 class="subsection"><a href="ffplay.html#toc-erode">16.22.2 erode</a></h3>
-
-<p>Erode an image by using a specific structuring element.
-This filter corresponds to the libopencv function <code>cvErode</code>.
-</p>
-<p>The filter accepts the parameters: <var>struct_el</var>:<var>nb_iterations</var>,
-with the same syntax and semantics as the <a href="#dilate">dilate</a> filter.
-</p>
-<a name="smooth"></a>
-<h3 class="subsection"><a href="ffplay.html#toc-smooth">16.22.3 smooth</a></h3>
-
-<p>Smooth the input video.
-</p>
-<p>The filter takes the following parameters:
-<var>type</var>:<var>param1</var>:<var>param2</var>:<var>param3</var>:<var>param4</var>.
-</p>
-<p><var>type</var> is the type of smooth filter to apply, and can be one of
-the following values: &quot;blur&quot;, &quot;blur_no_scale&quot;, &quot;median&quot;, &quot;gaussian&quot;,
-&quot;bilateral&quot;. The default value is &quot;gaussian&quot;.
-</p>
-<p><var>param1</var>, <var>param2</var>, <var>param3</var>, and <var>param4</var> are
-parameters whose meanings depend on smooth type. <var>param1</var> and
-<var>param2</var> accept integer positive values or 0, <var>param3</var> and
-<var>param4</var> accept float values.
-</p>
-<p>The default value for <var>param1</var> is 3, the default value for the
-other parameters is 0.
-</p>
-<p>These parameters correspond to the parameters assigned to the
-libopencv function <code>cvSmooth</code>.
-</p>
-<a name="overlay"></a>
-<h2 class="section"><a href="ffplay.html#toc-overlay">16.23 overlay</a></h2>
-
-<p>Overlay one video on top of another.
-</p>
-<p>It takes two inputs and one output, the first input is the &quot;main&quot;
-video on which the second input is overlayed.
-</p>
-<p>It accepts the parameters: <var>x</var>:<var>y</var>.
-</p>
-<p><var>x</var> is the x coordinate of the overlayed video on the main video,
-<var>y</var> is the y coordinate. The parameters are expressions containing
-the following parameters:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>main_w, main_h</samp>&rsquo;</dt>
-<dd><p>main input width and height
-</p>
-</dd>
-<dt> &lsquo;<samp>W, H</samp>&rsquo;</dt>
-<dd><p>same as <var>main_w</var> and <var>main_h</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>overlay_w, overlay_h</samp>&rsquo;</dt>
-<dd><p>overlay input width and height
-</p>
-</dd>
-<dt> &lsquo;<samp>w, h</samp>&rsquo;</dt>
-<dd><p>same as <var>overlay_w</var> and <var>overlay_h</var>
-</p></dd>
-</dl>
-
-<p>Be aware that frames are taken from each input video in timestamp
-order, hence, if their initial timestamps differ, it is a a good idea
-to pass the two inputs through a <var>setpts=PTS-STARTPTS</var> filter to
-have them begin in the same zero timestamp, as it does the example for
-the <var>movie</var> filter.
-</p>
-<p>Follow some examples:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># draw the overlay at 10 pixels from the bottom right
-# corner of the main video.
-overlay=main_w-overlay_w-10:main_h-overlay_h-10
-
-# insert a transparent PNG logo in the bottom left corner of the input
-movie=logo.png [logo];
-[in][logo] overlay=10:main_h-overlay_h-10 [out]
-
-# insert 2 different transparent PNG logos (second logo on bottom
-# right corner):
-movie=logo1.png [logo1];
-movie=logo2.png [logo2];
-[in][logo1]       overlay=10:H-h-10 [in+logo1];
-[in+logo1][logo2] overlay=W-w-10:H-h-10 [out]
-
-# add a transparent color layer on top of the main video,
-# WxH specifies the size of the main input to the overlay filter
-color=red.3:WxH [over]; [in][over] overlay [out]
-</pre></td></tr></table>
-
-<p>You can chain togheter more overlays but the efficiency of such
-approach is yet to be tested.
-</p>
-<a name="pad"></a>
-<h2 class="section"><a href="ffplay.html#toc-pad">16.24 pad</a></h2>
-
-<p>Add paddings to the input image, and places the original input at the
-given coordinates <var>x</var>, <var>y</var>.
-</p>
-<p>It accepts the following parameters:
-<var>width</var>:<var>height</var>:<var>x</var>:<var>y</var>:<var>color</var>.
-</p>
-<p>The parameters <var>width</var>, <var>height</var>, <var>x</var>, and <var>y</var> are
-expressions containing the following constants:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>E, PI, PHI</samp>&rsquo;</dt>
-<dd><p>the corresponding mathematical approximated values for e
-(euler number), pi (greek PI), phi (golden ratio)
-</p>
-</dd>
-<dt> &lsquo;<samp>in_w, in_h</samp>&rsquo;</dt>
-<dd><p>the input video width and heigth
-</p>
-</dd>
-<dt> &lsquo;<samp>iw, ih</samp>&rsquo;</dt>
-<dd><p>same as <var>in_w</var> and <var>in_h</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>out_w, out_h</samp>&rsquo;</dt>
-<dd><p>the output width and heigth, that is the size of the padded area as
-specified by the <var>width</var> and <var>height</var> expressions
-</p>
-</dd>
-<dt> &lsquo;<samp>ow, oh</samp>&rsquo;</dt>
-<dd><p>same as <var>out_w</var> and <var>out_h</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>x, y</samp>&rsquo;</dt>
-<dd><p>x and y offsets as specified by the <var>x</var> and <var>y</var>
-expressions, or NAN if not yet specified
-</p>
-</dd>
-<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
-<dd><p>same as <var>iw</var> / <var>ih</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
-<dd><p>input sample aspect ratio
-</p>
-</dd>
-<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
-<dd><p>input display aspect ratio, it is the same as (<var>iw</var> / <var>ih</var>) * <var>sar</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>hsub, vsub</samp>&rsquo;</dt>
-<dd><p>horizontal and vertical chroma subsample values. For example for the
-pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
-</p></dd>
-</dl>
-
-<p>Follows the description of the accepted parameters.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>width, height</samp>&rsquo;</dt>
-<dd>
-<p>Specify the size of the output image with the paddings added. If the
-value for <var>width</var> or <var>height</var> is 0, the corresponding input size
-is used for the output.
-</p>
-<p>The <var>width</var> expression can reference the value set by the
-<var>height</var> expression, and viceversa.
-</p>
-<p>The default value of <var>width</var> and <var>height</var> is 0.
-</p>
-</dd>
-<dt> &lsquo;<samp>x, y</samp>&rsquo;</dt>
-<dd>
-<p>Specify the offsets where to place the input image in the padded area
-with respect to the top/left border of the output image.
-</p>
-<p>The <var>x</var> expression can reference the value set by the <var>y</var>
-expression, and viceversa.
-</p>
-<p>The default value of <var>x</var> and <var>y</var> is 0.
-</p>
-</dd>
-<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
-<dd>
-<p>Specify the color of the padded area, it can be the name of a color
-(case insensitive match) or a 0xRRGGBB[AA] sequence.
-</p>
-<p>The default value of <var>color</var> is &quot;black&quot;.
-</p>
-</dd>
-</dl>
-
-<p>Some examples follow:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example"># Add paddings with color &quot;violet&quot; to the input video. Output video
-# size is 640x480, the top-left corner of the input video is placed at
-# column 0, row 40.
-pad=640:480:0:40:violet
-
-# pad the input to get an output with dimensions increased bt 3/2,
-# and put the input video at the center of the padded area
-pad=&quot;3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2&quot;
-
-# pad the input to get a squared output with size equal to the maximum
-# value between the input width and height, and put the input video at
-# the center of the padded area
-pad=&quot;max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2&quot;
-
-# pad the input to get a final w/h ratio of 16:9
-pad=&quot;ih*16/9:ih:(ow-iw)/2:(oh-ih)/2&quot;
-
-# for anamorphic video, in order to set the output display aspect ratio,
-# it is necessary to use sar in the expression, according to the relation:
-# (ih * X / ih) * sar = output_dar
-# X = output_dar / sar
-pad=&quot;ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2&quot;
-
-# double output size and put the input video in the bottom-right
-# corner of the output padded area
-pad=&quot;2*iw:2*ih:ow-iw:oh-ih&quot;
-</pre></td></tr></table>
-
-<a name="pixdesctest"></a>
-<h2 class="section"><a href="ffplay.html#toc-pixdesctest">16.25 pixdesctest</a></h2>
-
-<p>Pixel format descriptor test filter, mainly useful for internal
-testing. The output video should be equal to the input video.
-</p>
-<p>For example:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">format=monow, pixdesctest
-</pre></td></tr></table>
-
-<p>can be used to test the monowhite pixel format descriptor definition.
-</p>
-<a name="scale"></a>
-<h2 class="section"><a href="ffplay.html#toc-scale">16.26 scale</a></h2>
-
-<p>Scale the input video to <var>width</var>:<var>height</var> and/or convert the image format.
-</p>
-<p>The parameters <var>width</var> and <var>height</var> are expressions containing
-the following constants:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>E, PI, PHI</samp>&rsquo;</dt>
-<dd><p>the corresponding mathematical approximated values for e
-(euler number), pi (greek PI), phi (golden ratio)
-</p>
-</dd>
-<dt> &lsquo;<samp>in_w, in_h</samp>&rsquo;</dt>
-<dd><p>the input width and heigth
-</p>
-</dd>
-<dt> &lsquo;<samp>iw, ih</samp>&rsquo;</dt>
-<dd><p>same as <var>in_w</var> and <var>in_h</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>out_w, out_h</samp>&rsquo;</dt>
-<dd><p>the output (cropped) width and heigth
-</p>
-</dd>
-<dt> &lsquo;<samp>ow, oh</samp>&rsquo;</dt>
-<dd><p>same as <var>out_w</var> and <var>out_h</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
-<dd><p>same as <var>iw</var> / <var>ih</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
-<dd><p>input sample aspect ratio
-</p>
-</dd>
-<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
-<dd><p>input display aspect ratio, it is the same as (<var>iw</var> / <var>ih</var>) * <var>sar</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>hsub, vsub</samp>&rsquo;</dt>
-<dd><p>horizontal and vertical chroma subsample values. For example for the
-pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
-</p></dd>
-</dl>
-
-<p>If the input image format is different from the format requested by
-the next filter, the scale filter will convert the input to the
-requested format.
-</p>
-<p>If the value for <var>width</var> or <var>height</var> is 0, the respective input
-size is used for the output.
-</p>
-<p>If the value for <var>width</var> or <var>height</var> is -1, the scale filter will
-use, for the respective output size, a value that maintains the aspect
-ratio of the input image.
-</p>
-<p>The default value of <var>width</var> and <var>height</var> is 0.
-</p>
-<p>Some examples follow:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># scale the input video to a size of 200x100.
-scale=200:100
-
-# scale the input to 2x
-scale=2*iw:2*ih
-# the above is the same as
-scale=2*in_w:2*in_h
-
-# scale the input to half size
-scale=iw/2:ih/2
-
-# increase the width, and set the height to the same size
-scale=3/2*iw:ow
-
-# seek for Greek harmony
-scale=iw:1/PHI*iw
-scale=ih*PHI:ih
-
-# increase the height, and set the width to 3/2 of the height
-scale=3/2*oh:3/5*ih
-
-# increase the size, but make the size a multiple of the chroma
-scale=&quot;trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub&quot;
-
-# increase the width to a maximum of 500 pixels, keep the same input aspect ratio
-scale='min(500\, iw*3/2):-1'
-</pre></td></tr></table>
-
-<a name="select"></a>
-<h2 class="section"><a href="ffplay.html#toc-select">16.27 select</a></h2>
-<p>Select frames to pass in output.
-</p>
-<p>It accepts in input an expression, which is evaluated for each input
-frame. If the expression is evaluated to a non-zero value, the frame
-is selected and passed to the output, otherwise it is discarded.
-</p>
-<p>The expression can contain the following constants:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>PI</samp>&rsquo;</dt>
-<dd><p>Greek PI
-</p>
-</dd>
-<dt> &lsquo;<samp>PHI</samp>&rsquo;</dt>
-<dd><p>golden ratio
-</p>
-</dd>
-<dt> &lsquo;<samp>E</samp>&rsquo;</dt>
-<dd><p>Euler number
-</p>
-</dd>
-<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
-<dd><p>the sequential number of the filtered frame, starting from 0
-</p>
-</dd>
-<dt> &lsquo;<samp>selected_n</samp>&rsquo;</dt>
-<dd><p>the sequential number of the selected frame, starting from 0
-</p>
-</dd>
-<dt> &lsquo;<samp>prev_selected_n</samp>&rsquo;</dt>
-<dd><p>the sequential number of the last selected frame, NAN if undefined
-</p>
-</dd>
-<dt> &lsquo;<samp>TB</samp>&rsquo;</dt>
-<dd><p>timebase of the input timestamps
-</p>
-</dd>
-<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
-<dd><p>the PTS (Presentation TimeStamp) of the filtered video frame,
-expressed in <var>TB</var> units, NAN if undefined
-</p>
-</dd>
-<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
-<dd><p>the PTS (Presentation TimeStamp) of the filtered video frame,
-expressed in seconds, NAN if undefined
-</p>
-</dd>
-<dt> &lsquo;<samp>prev_pts</samp>&rsquo;</dt>
-<dd><p>the PTS of the previously filtered video frame, NAN if undefined
-</p>
-</dd>
-<dt> &lsquo;<samp>prev_selected_pts</samp>&rsquo;</dt>
-<dd><p>the PTS of the last previously filtered video frame, NAN if undefined
-</p>
-</dd>
-<dt> &lsquo;<samp>prev_selected_t</samp>&rsquo;</dt>
-<dd><p>the PTS of the last previously selected video frame, NAN if undefined
-</p>
-</dd>
-<dt> &lsquo;<samp>start_pts</samp>&rsquo;</dt>
-<dd><p>the PTS of the first video frame in the video, NAN if undefined
-</p>
-</dd>
-<dt> &lsquo;<samp>start_t</samp>&rsquo;</dt>
-<dd><p>the time of the first video frame in the video, NAN if undefined
-</p>
-</dd>
-<dt> &lsquo;<samp>pict_type</samp>&rsquo;</dt>
-<dd><p>the picture type of the filtered frame, can assume one of the following
-values:
-</p><dl compact="compact">
-<dt> &lsquo;<samp>PICT_TYPE_I</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>PICT_TYPE_P</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>PICT_TYPE_B</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>PICT_TYPE_S</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>PICT_TYPE_SI</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>PICT_TYPE_SP</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>PICT_TYPE_BI</samp>&rsquo;</dt>
-</dl>
-
-</dd>
-<dt> &lsquo;<samp>interlace_type</samp>&rsquo;</dt>
-<dd><p>the frame interlace type, can assume one of the following values:
-</p><dl compact="compact">
-<dt> &lsquo;<samp>INTERLACE_TYPE_P</samp>&rsquo;</dt>
-<dd><p>the frame is progressive (not interlaced)
-</p></dd>
-<dt> &lsquo;<samp>INTERLACE_TYPE_T</samp>&rsquo;</dt>
-<dd><p>the frame is top-field-first
-</p></dd>
-<dt> &lsquo;<samp>INTERLACE_TYPE_B</samp>&rsquo;</dt>
-<dd><p>the frame is bottom-field-first
-</p></dd>
-</dl>
-
-</dd>
-<dt> &lsquo;<samp>key</samp>&rsquo;</dt>
-<dd><p>1 if the filtered frame is a key-frame, 0 otherwise
-</p>
-</dd>
-<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
-<dd><p>the position in the file of the filtered frame, -1 if the information
-is not available (e.g. for synthetic video)
-</p></dd>
-</dl>
-
-<p>The default value of the select expression is &quot;1&quot;.
-</p>
-<p>Some examples follow:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example"># select all frames in input
-select
-
-# the above is the same as:
-select=1
-
-# skip all frames:
-select=0
-
-# select only I-frames
-select='eq(pict_type\,PICT_TYPE_I)'
-
-# select one frame every 100
-select='not(mod(n\,100))'
-
-# select only frames contained in the 10-20 time interval
-select='gte(t\,10)*lte(t\,20)'
-
-# select only I frames contained in the 10-20 time interval
-select='gte(t\,10)*lte(t\,20)*eq(pict_type\,PICT_TYPE_I)'
-
-# select frames with a minimum distance of 10 seconds
-select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
-</pre></td></tr></table>
-
-<p><a name="setdar"></a>
-</p><a name="setdar-1"></a>
-<h2 class="section"><a href="ffplay.html#toc-setdar-1">16.28 setdar</a></h2>
-
-<p>Set the Display Aspect Ratio for the filter output video.
-</p>
-<p>This is done by changing the specified Sample (aka Pixel) Aspect
-Ratio, according to the following equation:
-<em>DAR = HORIZONTAL_RESOLUTION / VERTICAL_RESOLUTION * SAR</em>
-</p>
-<p>Keep in mind that this filter does not modify the pixel dimensions of
-the video frame. Also the display aspect ratio set by this filter may
-be changed by later filters in the filterchain, e.g. in case of
-scaling or if another &quot;setdar&quot; or a &quot;setsar&quot; filter is applied.
-</p>
-<p>The filter accepts a parameter string which represents the wanted
-display aspect ratio.
-The parameter can be a floating point number string, or an expression
-of the form <var>num</var>:<var>den</var>, where <var>num</var> and <var>den</var> are the
-numerator and denominator of the aspect ratio.
-If the parameter is not specified, it is assumed the value &quot;0:1&quot;.
-</p>
-<p>For example to change the display aspect ratio to 16:9, specify:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">setdar=16:9
-# the above is equivalent to
-setdar=1.77777
-</pre></td></tr></table>
-
-<p>See also the <a href="#setsar">setsar</a> filter documentation.
-</p>
-<a name="setpts"></a>
-<h2 class="section"><a href="ffplay.html#toc-setpts">16.29 setpts</a></h2>
-
-<p>Change the PTS (presentation timestamp) of the input video frames.
-</p>
-<p>Accept in input an expression evaluated through the eval API, which
-can contain the following constants:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>PTS</samp>&rsquo;</dt>
-<dd><p>the presentation timestamp in input
-</p>
-</dd>
-<dt> &lsquo;<samp>PI</samp>&rsquo;</dt>
-<dd><p>Greek PI
-</p>
-</dd>
-<dt> &lsquo;<samp>PHI</samp>&rsquo;</dt>
-<dd><p>golden ratio
-</p>
-</dd>
-<dt> &lsquo;<samp>E</samp>&rsquo;</dt>
-<dd><p>Euler number
-</p>
-</dd>
-<dt> &lsquo;<samp>N</samp>&rsquo;</dt>
-<dd><p>the count of the input frame, starting from 0.
-</p>
-</dd>
-<dt> &lsquo;<samp>STARTPTS</samp>&rsquo;</dt>
-<dd><p>the PTS of the first video frame
-</p>
-</dd>
-<dt> &lsquo;<samp>INTERLACED</samp>&rsquo;</dt>
-<dd><p>tell if the current frame is interlaced
-</p>
-</dd>
-<dt> &lsquo;<samp>POS</samp>&rsquo;</dt>
-<dd><p>original position in the file of the frame, or undefined if undefined
-for the current frame
-</p>
-</dd>
-<dt> &lsquo;<samp>PREV_INPTS</samp>&rsquo;</dt>
-<dd><p>previous input PTS
-</p>
-</dd>
-<dt> &lsquo;<samp>PREV_OUTPTS</samp>&rsquo;</dt>
-<dd><p>previous output PTS
-</p>
-</dd>
-</dl>
-
-<p>Some examples follow:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example"># start counting PTS from zero
-setpts=PTS-STARTPTS
-
-# fast motion
-setpts=0.5*PTS
-
-# slow motion
-setpts=2.0*PTS
-
-# fixed rate 25 fps
-setpts=N/(25*TB)
-
-# fixed rate 25 fps with some jitter
-setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
-</pre></td></tr></table>
-
-<p><a name="setsar"></a>
-</p><a name="setsar-1"></a>
-<h2 class="section"><a href="ffplay.html#toc-setsar-1">16.30 setsar</a></h2>
-
-<p>Set the Sample (aka Pixel) Aspect Ratio for the filter output video.
-</p>
-<p>Note that as a consequence of the application of this filter, the
-output display aspect ratio will change according to the following
-equation:
-<em>DAR = HORIZONTAL_RESOLUTION / VERTICAL_RESOLUTION * SAR</em>
-</p>
-<p>Keep in mind that the sample aspect ratio set by this filter may be
-changed by later filters in the filterchain, e.g. if another &quot;setsar&quot;
-or a &quot;setdar&quot; filter is applied.
-</p>
-<p>The filter accepts a parameter string which represents the wanted
-sample aspect ratio.
-The parameter can be a floating point number string, or an expression
-of the form <var>num</var>:<var>den</var>, where <var>num</var> and <var>den</var> are the
-numerator and denominator of the aspect ratio.
-If the parameter is not specified, it is assumed the value &quot;0:1&quot;.
-</p>
-<p>For example to change the sample aspect ratio to 10:11, specify:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">setsar=10:11
-</pre></td></tr></table>
-
-<a name="settb"></a>
-<h2 class="section"><a href="ffplay.html#toc-settb">16.31 settb</a></h2>
-
-<p>Set the timebase to use for the output frames timestamps.
-It is mainly useful for testing timebase configuration.
-</p>
-<p>It accepts in input an arithmetic expression representing a rational.
-The expression can contain the constants &quot;PI&quot;, &quot;E&quot;, &quot;PHI&quot;, &quot;AVTB&quot; (the
-default timebase), and &quot;intb&quot; (the input timebase).
-</p>
-<p>The default value for the input is &quot;intb&quot;.
-</p>
-<p>Follow some examples.
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example"># set the timebase to 1/25
-settb=1/25
-
-# set the timebase to 1/10
-settb=0.1
-
-#set the timebase to 1001/1000
-settb=1+0.001
-
-#set the timebase to 2*intb
-settb=2*intb
-
-#set the default timebase value
-settb=AVTB
-</pre></td></tr></table>
-
-<a name="showinfo"></a>
-<h2 class="section"><a href="ffplay.html#toc-showinfo">16.32 showinfo</a></h2>
-
-<p>Show a line containing various information for each input video frame.
-The input video is not modified.
-</p>
-<p>The shown line contains a sequence of key/value pairs of the form
-<var>key</var>:<var>value</var>.
-</p>
-<p>A description of each shown parameter follows:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
-<dd><p>sequential number of the input frame, starting from 0
-</p>
-</dd>
-<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
-<dd><p>Presentation TimeStamp of the input frame, expressed as a number of
-time base units. The time base unit depends on the filter input pad.
-</p>
-</dd>
-<dt> &lsquo;<samp>pts_time</samp>&rsquo;</dt>
-<dd><p>Presentation TimeStamp of the input frame, expressed as a number of
-seconds
-</p>
-</dd>
-<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
-<dd><p>position of the frame in the input stream, -1 if this information in
-unavailable and/or meanigless (for example in case of synthetic video)
-</p>
-</dd>
-<dt> &lsquo;<samp>fmt</samp>&rsquo;</dt>
-<dd><p>pixel format name
-</p>
-</dd>
-<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
-<dd><p>sample aspect ratio of the input frame, expressed in the form
-<var>num</var>/<var>den</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
-<dd><p>size of the input frame, expressed in the form
-<var>width</var>x<var>height</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>i</samp>&rsquo;</dt>
-<dd><p>interlaced mode (&quot;P&quot; for &quot;progressive&quot;, &quot;T&quot; for top field first, &quot;B&quot;
-for bottom field first)
-</p>
-</dd>
-<dt> &lsquo;<samp>iskey</samp>&rsquo;</dt>
-<dd><p>1 if the frame is a key frame, 0 otherwise
-</p>
-</dd>
-<dt> &lsquo;<samp>type</samp>&rsquo;</dt>
-<dd><p>picture type of the input frame (&quot;I&quot; for an I-frame, &quot;P&quot; for a
-P-frame, &quot;B&quot; for a B-frame, &quot;?&quot; for unknown type).
-Check also the documentation of the <code>AVPictureType</code> enum and of
-the <code>av_get_picture_type_char</code> function defined in
-&lsquo;<tt>libavutil/avutil.h</tt>&rsquo;.
-</p>
-</dd>
-<dt> &lsquo;<samp>checksum</samp>&rsquo;</dt>
-<dd><p>Adler-32 checksum of all the planes of the input frame
-</p>
-</dd>
-<dt> &lsquo;<samp>plane_checksum</samp>&rsquo;</dt>
-<dd><p>Adler-32 checksum of each plane of the input frame, expressed in the form
-&quot;[<var>c0</var> <var>c1</var> <var>c2</var> <var>c3</var>]&quot;
-</p></dd>
-</dl>
-
-<a name="slicify"></a>
-<h2 class="section"><a href="ffplay.html#toc-slicify">16.33 slicify</a></h2>
-
-<p>Pass the images of input video on to next video filter as multiple
-slices.
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">./ffmpeg -i in.avi -vf &quot;slicify=32&quot; out.avi
-</pre></td></tr></table>
-
-<p>The filter accepts the slice height as parameter. If the parameter is
-not specified it will use the default value of 16.
-</p>
-<p>Adding this in the beginning of filter chains should make filtering
-faster due to better use of the memory cache.
-</p>
-<a name="split"></a>
-<h2 class="section"><a href="ffplay.html#toc-split">16.34 split</a></h2>
-
-<p>Pass on the input video to two outputs. Both outputs are identical to
-the input video.
-</p>
-<p>For example:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">[in] split [splitout1][splitout2];
-[splitout1] crop=100:100:0:0    [cropout];
-[splitout2] pad=200:200:100:100 [padout];
-</pre></td></tr></table>
-
-<p>will create two separate outputs from the same input, one cropped and
-one padded.
-</p>
-<a name="transpose"></a>
-<h2 class="section"><a href="ffplay.html#toc-transpose">16.35 transpose</a></h2>
-
-<p>Transpose rows with columns in the input video and optionally flip it.
-</p>
-<p>It accepts a parameter representing an integer, which can assume the
-values:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
-<dd><p>Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">L.R     L.l
-. . -&gt;  . .
-l.r     R.r
-</pre></td></tr></table>
-
-</dd>
-<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
-<dd><p>Rotate by 90 degrees clockwise, that is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">L.R     l.L
-. . -&gt;  . .
-l.r     r.R
-</pre></td></tr></table>
-
-</dd>
-<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
-<dd><p>Rotate by 90 degrees counterclockwise, that is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">L.R     R.r
-. . -&gt;  . .
-l.r     L.l
-</pre></td></tr></table>
-
-</dd>
-<dt> &lsquo;<samp>3</samp>&rsquo;</dt>
-<dd><p>Rotate by 90 degrees clockwise and vertically flip, that is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">L.R     r.R
-. . -&gt;  . .
-l.r     l.L
-</pre></td></tr></table>
-</dd>
-</dl>
-
-<a name="unsharp"></a>
-<h2 class="section"><a href="ffplay.html#toc-unsharp">16.36 unsharp</a></h2>
-
-<p>Sharpen or blur the input video.
-</p>
-<p>It accepts the following parameters:
-<var>luma_msize_x</var>:<var>luma_msize_y</var>:<var>luma_amount</var>:<var>chroma_msize_x</var>:<var>chroma_msize_y</var>:<var>chroma_amount</var>
-</p>
-<p>Negative values for the amount will blur the input video, while positive
-values will sharpen. All parameters are optional and default to the
-equivalent of the string &rsquo;5:5:1.0:5:5:0.0&rsquo;.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>luma_msize_x</samp>&rsquo;</dt>
-<dd><p>Set the luma matrix horizontal size. It can be an integer between 3
-and 13, default value is 5.
-</p>
-</dd>
-<dt> &lsquo;<samp>luma_msize_y</samp>&rsquo;</dt>
-<dd><p>Set the luma matrix vertical size. It can be an integer between 3
-and 13, default value is 5.
-</p>
-</dd>
-<dt> &lsquo;<samp>luma_amount</samp>&rsquo;</dt>
-<dd><p>Set the luma effect strength. It can be a float number between -2.0
-and 5.0, default value is 1.0.
-</p>
-</dd>
-<dt> &lsquo;<samp>chroma_msize_x</samp>&rsquo;</dt>
-<dd><p>Set the chroma matrix horizontal size. It can be an integer between 3
-and 13, default value is 5.
-</p>
-</dd>
-<dt> &lsquo;<samp>chroma_msize_y</samp>&rsquo;</dt>
-<dd><p>Set the chroma matrix vertical size. It can be an integer between 3
-and 13, default value is 5.
-</p>
-</dd>
-<dt> &lsquo;<samp>chroma_amount</samp>&rsquo;</dt>
-<dd><p>Set the chroma effect strength. It can be a float number between -2.0
-and 5.0, default value is 0.0.
-</p>
-</dd>
-</dl>
-
-<table><tr><td>&nbsp;</td><td><pre class="example"># Strong luma sharpen effect parameters
-unsharp=7:7:2.5
-
-# Strong blur of both luma and chroma parameters
-unsharp=7:7:-2:7:7:-2
-
-# Use the default values with <code>ffmpeg</code>
-./ffmpeg -i in.avi -vf &quot;unsharp&quot; out.mp4
-</pre></td></tr></table>
-
-<a name="vflip"></a>
-<h2 class="section"><a href="ffplay.html#toc-vflip">16.37 vflip</a></h2>
-
-<p>Flip the input video vertically.
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">./ffmpeg -i in.avi -vf &quot;vflip&quot; out.avi
-</pre></td></tr></table>
-
-<a name="yadif"></a>
-<h2 class="section"><a href="ffplay.html#toc-yadif">16.38 yadif</a></h2>
-
-<p>Deinterlace the input video (&quot;yadif&quot; means &quot;yet another deinterlacing
-filter&quot;).
-</p>
-<p>It accepts the optional parameters: <var>mode</var>:<var>parity</var>:<var>auto</var>.
-</p>
-<p><var>mode</var> specifies the interlacing mode to adopt, accepts one of the
-following values:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
-<dd><p>output 1 frame for each frame
-</p></dd>
-<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
-<dd><p>output 1 frame for each field
-</p></dd>
-<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
-<dd><p>like 0 but skips spatial interlacing check
-</p></dd>
-<dt> &lsquo;<samp>3</samp>&rsquo;</dt>
-<dd><p>like 1 but skips spatial interlacing check
-</p></dd>
-</dl>
-
-<p>Default value is 0.
-</p>
-<p><var>parity</var> specifies the picture field parity assumed for the input
-interlaced video, accepts one of the following values:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
-<dd><p>assume top field first
-</p></dd>
-<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
-<dd><p>assume bottom field first
-</p></dd>
-<dt> &lsquo;<samp>-1</samp>&rsquo;</dt>
-<dd><p>enable automatic detection
-</p></dd>
-</dl>
-
-<p>Default value is -1.
-If interlacing is unknown or decoder does not export this information,
-top field first will be assumed.
-</p>
-<p><var>auto</var> specifies if deinterlacer should trust the interlaced flag
-and only deinterlace frames marked as interlaced
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
-<dd><p>deinterlace all frames
-</p></dd>
-<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
-<dd><p>only deinterlace frames marked as interlaced
-</p></dd>
-</dl>
-
-<p>Default value is 0.
-</p>
-
-<a name="Video-Sources"></a>
-<h1 class="chapter"><a href="ffplay.html#toc-Video-Sources">17. Video Sources</a></h1>
-
-<p>Below is a description of the currently available video sources.
-</p>
-<a name="buffer"></a>
-<h2 class="section"><a href="ffplay.html#toc-buffer">17.1 buffer</a></h2>
-
-<p>Buffer video frames, and make them available to the filter chain.
-</p>
-<p>This source is mainly intended for a programmatic use, in particular
-through the interface defined in &lsquo;<tt>libavfilter/vsrc_buffer.h</tt>&rsquo;.
-</p>
-<p>It accepts the following parameters:
-<var>width</var>:<var>height</var>:<var>pix_fmt_string</var>:<var>timebase_num</var>:<var>timebase_den</var>:<var>sample_aspect_ratio_num</var>:<var>sample_aspect_ratio.den</var>:<var>scale_params</var>
-</p>
-<p>All the parameters but <var>scale_params</var> need to be explicitely
-defined.
-</p>
-<p>Follows the list of the accepted parameters.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>width, height</samp>&rsquo;</dt>
-<dd><p>Specify the width and height of the buffered video frames.
-</p>
-</dd>
-<dt> &lsquo;<samp>pix_fmt_string</samp>&rsquo;</dt>
-<dd><p>A string representing the pixel format of the buffered video frames.
-It may be a number corresponding to a pixel format, or a pixel format
-name.
-</p>
-</dd>
-<dt> &lsquo;<samp>timebase_num, timebase_den</samp>&rsquo;</dt>
-<dd><p>Specify numerator and denomitor of the timebase assumed by the
-timestamps of the buffered frames.
-</p>
-</dd>
-<dt> &lsquo;<samp>sample_aspect_ratio.num, sample_aspect_ratio.den</samp>&rsquo;</dt>
-<dd><p>Specify numerator and denominator of the sample aspect ratio assumed
-by the video frames.
-</p>
-</dd>
-<dt> &lsquo;<samp>scale_params</samp>&rsquo;</dt>
-<dd><p>Specify the optional parameters to be used for the scale filter which
-is automatically inserted when an input change is detected in the
-input size or format.
-</p></dd>
-</dl>
-
-<p>For example:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">buffer=320:240:yuv410p:1:24:1:1
-</pre></td></tr></table>
-
-<p>will instruct the source to accept video frames with size 320x240 and
-with format &quot;yuv410p&quot;, assuming 1/24 as the timestamps timebase and
-square pixels (1:1 sample aspect ratio).
-Since the pixel format with name &quot;yuv410p&quot; corresponds to the number 6
-(check the enum PixelFormat definition in &lsquo;<tt>libavutil/pixfmt.h</tt>&rsquo;),
-this example corresponds to:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">buffer=320:240:6:1:24:1:1
-</pre></td></tr></table>
-
-<a name="color"></a>
-<h2 class="section"><a href="ffplay.html#toc-color">17.2 color</a></h2>
-
-<p>Provide an uniformly colored input.
-</p>
-<p>It accepts the following parameters:
-<var>color</var>:<var>frame_size</var>:<var>frame_rate</var>
-</p>
-<p>Follows the description of the accepted parameters.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
-<dd><p>Specify the color of the source. It can be the name of a color (case
-insensitive match) or a 0xRRGGBB[AA] sequence, possibly followed by an
-alpha specifier. The default value is &quot;black&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>frame_size</samp>&rsquo;</dt>
-<dd><p>Specify the size of the sourced video, it may be a string of the form
-<var>width</var>x<var>heigth</var>, or the name of a size abbreviation. The
-default value is &quot;320x240&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>frame_rate</samp>&rsquo;</dt>
-<dd><p>Specify the frame rate of the sourced video, as the number of frames
-generated per second. It has to be a string in the format
-<var>frame_rate_num</var>/<var>frame_rate_den</var>, an integer number, a float
-number or a valid video frame rate abbreviation. The default value is
-&quot;25&quot;.
-</p>
-</dd>
-</dl>
-
-<p>For example the following graph description will generate a red source
-with an opacity of 0.2, with size &quot;qcif&quot; and a frame rate of 10
-frames per second, which will be overlayed over the source connected
-to the pad with identifier &quot;in&quot;.
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">&quot;color=red@0.2:qcif:10 [color]; [in][color] overlay [out]&quot;
-</pre></td></tr></table>
-
-<a name="movie"></a>
-<h2 class="section"><a href="ffplay.html#toc-movie">17.3 movie</a></h2>
-
-<p>Read a video stream from a movie container.
-</p>
-<p>It accepts the syntax: <var>movie_name</var>[:<var>options</var>] where
-<var>movie_name</var> is the name of the resource to read (not necessarily
-a file but also a device or a stream accessed through some protocol),
-and <var>options</var> is an optional sequence of <var>key</var>=<var>value</var>
-pairs, separated by &quot;:&quot;.
-</p>
-<p>The description of the accepted options follows.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>format_name, f</samp>&rsquo;</dt>
-<dd><p>Specifies the format assumed for the movie to read, and can be either
-the name of a container or an input device. If not specified the
-format is guessed from <var>movie_name</var> or by probing.
-</p>
-</dd>
-<dt> &lsquo;<samp>seek_point, sp</samp>&rsquo;</dt>
-<dd><p>Specifies the seek point in seconds, the frames will be output
-starting from this seek point, the parameter is evaluated with
-<code>av_strtod</code> so the numerical value may be suffixed by an IS
-postfix. Default value is &quot;0&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>stream_index, si</samp>&rsquo;</dt>
-<dd><p>Specifies the index of the video stream to read. If the value is -1,
-the best suited video stream will be automatically selected. Default
-value is &quot;-1&quot;.
-</p>
-</dd>
-</dl>
-
-<p>This filter allows to overlay a second video on top of main input of
-a filtergraph as shown in this graph:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">input -----------&gt; deltapts0 --&gt; overlay --&gt; output
-                                    ^
-                                    |
-movie --&gt; scale--&gt; deltapts1 -------+
-</pre></td></tr></table>
-
-<p>Some examples follow:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># skip 3.2 seconds from the start of the avi file in.avi, and overlay it
-# on top of the input labelled as &quot;in&quot;.
-movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [movie];
-[in] setpts=PTS-STARTPTS, [movie] overlay=16:16 [out]
-
-# read from a video4linux2 device, and overlay it on top of the input
-# labelled as &quot;in&quot;
-movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [movie];
-[in] setpts=PTS-STARTPTS, [movie] overlay=16:16 [out]
-
-</pre></td></tr></table>
-
-<a name="mptestsrc"></a>
-<h2 class="section"><a href="ffplay.html#toc-mptestsrc">17.4 mptestsrc</a></h2>
-
-<p>Generate various test patterns, as generated by the MPlayer test filter.
-</p>
-<p>The size of the generated video is fixed, and is 256x256.
-This source is useful in particular for testing encoding features.
-</p>
-<p>This source accepts an optional sequence of <var>key</var>=<var>value</var> pairs,
-separated by &quot;:&quot;. The description of the accepted options follows.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
-<dd><p>Specify the frame rate of the sourced video, as the number of frames
-generated per second. It has to be a string in the format
-<var>frame_rate_num</var>/<var>frame_rate_den</var>, an integer number, a float
-number or a valid video frame rate abbreviation. The default value is
-&quot;25&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
-<dd><p>Set the video duration of the sourced video. The accepted syntax is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">[-]HH[:MM[:SS[.m...]]]
-[-]S+[.m...]
-</pre></td></tr></table>
-<p>See also the function <code>av_parse_time()</code>.
-</p>
-<p>If not specified, or the expressed duration is negative, the video is
-supposed to be generated forever.
-</p>
-</dd>
-<dt> &lsquo;<samp>test, t</samp>&rsquo;</dt>
-<dd>
-<p>Set the number or the name of the test to perform. Supported tests are:
-</p><dl compact="compact">
-<dt> &lsquo;<samp>dc_luma</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>dc_chroma</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>freq_luma</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>freq_chroma</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>amp_luma</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>amp_chroma</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>cbp</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>mv</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>ring1</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>ring2</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>all</samp>&rsquo;</dt>
-</dl>
-
-<p>Default value is &quot;all&quot;, which will cycle through the list of all tests.
-</p></dd>
-</dl>
-
-<p>For example the following:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">testsrc=t=dc_luma
-</pre></td></tr></table>
-
-<p>will generate a &quot;dc_luma&quot; test pattern.
-</p>
-<a name="nullsrc"></a>
-<h2 class="section"><a href="ffplay.html#toc-nullsrc">17.5 nullsrc</a></h2>
-
-<p>Null video source, never return images. It is mainly useful as a
-template and to be employed in analysis / debugging tools.
-</p>
-<p>It accepts as optional parameter a string of the form
-<var>width</var>:<var>height</var>:<var>timebase</var>.
-</p>
-<p><var>width</var> and <var>height</var> specify the size of the configured
-source. The default values of <var>width</var> and <var>height</var> are
-respectively 352 and 288 (corresponding to the CIF size format).
-</p>
-<p><var>timebase</var> specifies an arithmetic expression representing a
-timebase. The expression can contain the constants &quot;PI&quot;, &quot;E&quot;, &quot;PHI&quot;,
-&quot;AVTB&quot; (the default timebase), and defaults to the value &quot;AVTB&quot;.
-</p>
-<a name="frei0r_005fsrc"></a>
-<h2 class="section"><a href="ffplay.html#toc-frei0r_005fsrc">17.6 frei0r_src</a></h2>
-
-<p>Provide a frei0r source.
-</p>
-<p>To enable compilation of this filter you need to install the frei0r
-header and configure FFmpeg with &ndash;enable-frei0r.
-</p>
-<p>The source supports the syntax:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>size</var>:<var>rate</var>:<var>src_name</var>[{=|:}<var>param1</var>:<var>param2</var>:...:<var>paramN</var>]
-</pre></td></tr></table>
-
-<p><var>size</var> is the size of the video to generate, may be a string of the
-form <var>width</var>x<var>height</var> or a frame size abbreviation.
-<var>rate</var> is the rate of the video to generate, may be a string of
-the form <var>num</var>/<var>den</var> or a frame rate abbreviation.
-<var>src_name</var> is the name to the frei0r source to load. For more
-information regarding frei0r and how to set the parameters read the
-section <a href="#frei0r">frei0r</a> in the description of the video filters.
-</p>
-<p>Some examples follow:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># generate a frei0r partik0l source with size 200x200 and framerate 10
-# which is overlayed on the overlay filter main input
-frei0r_src=200x200:10:partik0l=1234 [overlay]; [in][overlay] overlay
-</pre></td></tr></table>
-
-<a name="rgbtestsrc_002c-testsrc"></a>
-<h2 class="section"><a href="ffplay.html#toc-rgbtestsrc_002c-testsrc">17.7 rgbtestsrc, testsrc</a></h2>
-
-<p>The <code>rgbtestsrc</code> source generates an RGB test pattern useful for
-detecting RGB vs BGR issues. You should see a red, green and blue
-stripe from top to bottom.
-</p>
-<p>The <code>testsrc</code> source generates a test video pattern, showing a
-color pattern, a scrolling gradient and a timestamp. This is mainly
-intended for testing purposes.
-</p>
-<p>Both sources accept an optional sequence of <var>key</var>=<var>value</var> pairs,
-separated by &quot;:&quot;. The description of the accepted options follows.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
-<dd><p>Specify the size of the sourced video, it may be a string of the form
-<var>width</var>x<var>heigth</var>, or the name of a size abbreviation. The
-default value is &quot;320x240&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
-<dd><p>Specify the frame rate of the sourced video, as the number of frames
-generated per second. It has to be a string in the format
-<var>frame_rate_num</var>/<var>frame_rate_den</var>, an integer number, a float
-number or a valid video frame rate abbreviation. The default value is
-&quot;25&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
-<dd><p>Set the sample aspect ratio of the sourced video.
-</p>
-</dd>
-<dt> &lsquo;<samp>duration</samp>&rsquo;</dt>
-<dd><p>Set the video duration of the sourced video. The accepted syntax is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">[-]HH[:MM[:SS[.m...]]]
-[-]S+[.m...]
-</pre></td></tr></table>
-<p>See also the function <code>av_parse_time()</code>.
-</p>
-<p>If not specified, or the expressed duration is negative, the video is
-supposed to be generated forever.
-</p></dd>
-</dl>
-
-<p>For example the following:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">testsrc=duration=5.3:size=qcif:rate=10
-</pre></td></tr></table>
-
-<p>will generate a video with a duration of 5.3 seconds, with size
-176x144 and a framerate of 10 frames per second.
-</p>
-
-<a name="Video-Sinks"></a>
-<h1 class="chapter"><a href="ffplay.html#toc-Video-Sinks">18. Video Sinks</a></h1>
-
-<p>Below is a description of the currently available video sinks.
-</p>
-<a name="buffersink"></a>
-<h2 class="section"><a href="ffplay.html#toc-buffersink">18.1 buffersink</a></h2>
-
-<p>Buffer video frames, and make them available to the end of the filter
-graph.
-</p>
-<p>This sink is mainly intended for a programmatic use, in particular
-through the interface defined in &lsquo;<tt>libavfilter/vsink_buffer.h</tt>&rsquo;.
-</p>
-<p>It does not require a string parameter in input, but you need to
-specify a pointer to a list of supported pixel formats terminated by
--1 in the opaque parameter provided to <code>avfilter_init_filter</code>
-when initializing this sink.
-</p>
-<a name="nullsink"></a>
-<h2 class="section"><a href="ffplay.html#toc-nullsink">18.2 nullsink</a></h2>
-
-<p>Null video sink, do absolutely nothing with the input video. It is
-mainly useful as a template and to be employed in analysis / debugging
-tools.
-</p>
-
-
-
-<hr size="1">
-<p>
- <font size="-1">
-  This document was generated by <em>Kyle Schwarz</em> on <em>September 2, 2011</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.
- </font>
- <br>
-
-</p>
-</body>
-</html>
+<footer class="footer pagination-right">
+<span class="label label-info">This document was generated by <em>Kyle Schwarz</em> on <em>December 14, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies/ffmpeg/doc/ffprobe-all.html b/dependencies/ffmpeg/doc/ffprobe-all.html
new file mode 100644 (file)
index 0000000..28d1450
--- /dev/null
@@ -0,0 +1,22667 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on December 14, 2013 by texi2html 1.82 -->
+<!--
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>FFmpeg documentation : ffprobe </title>
+
+<meta name="description" content="ffprobe Documentation: ">
+<meta name="keywords" content="FFmpeg documentation : ffprobe ">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="default.css" />
+
+<link rel="icon" href="favicon.png" type="image/png" />
+</head>
+<body>
+<div id="container">
+<div id="body">
+
+<a name="SEC_Top"></a>
+<h1 class="settitle">ffprobe Documentation</h1>
+
+<a name="SEC_Contents"></a>
+<h1>Table of Contents</h1>
+<div class="contents">
+
+<ul class="toc">
+  <li><a name="toc-Synopsis" href="#Synopsis">1. Synopsis</a></li>
+  <li><a name="toc-Description" href="#Description">2. Description</a></li>
+  <li><a name="toc-Options-3" href="#Options-3">3. Options</a>
+  <ul class="toc">
+    <li><a name="toc-Stream-specifiers-1" href="#Stream-specifiers-1">3.1 Stream specifiers</a></li>
+    <li><a name="toc-Generic-options" href="#Generic-options">3.2 Generic options</a></li>
+    <li><a name="toc-AVOptions" href="#AVOptions">3.3 AVOptions</a></li>
+    <li><a name="toc-Main-options" href="#Main-options">3.4 Main options</a></li>
+  </ul></li>
+  <li><a name="toc-Writers" href="#Writers">4. Writers</a>
+  <ul class="toc">
+    <li><a name="toc-default" href="#default">4.1 default</a></li>
+    <li><a name="toc-compact_002c-csv" href="#compact_002c-csv">4.2 compact, csv</a></li>
+    <li><a name="toc-flat" href="#flat">4.3 flat</a></li>
+    <li><a name="toc-ini" href="#ini">4.4 ini</a></li>
+    <li><a name="toc-json" href="#json">4.5 json</a></li>
+    <li><a name="toc-xml" href="#xml">4.6 xml</a></li>
+  </ul></li>
+  <li><a name="toc-Timecode" href="#Timecode">5. Timecode</a></li>
+  <li><a name="toc-Syntax" href="#Syntax">6. Syntax</a>
+  <ul class="toc">
+    <li><a name="toc-Quoting-and-escaping" href="#Quoting-and-escaping">6.1 Quoting and escaping</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-31" href="#Examples-31">6.1.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-Date" href="#Date">6.2 Date</a></li>
+    <li><a name="toc-Time-duration" href="#Time-duration">6.3 Time duration</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-16" href="#Examples-16">6.3.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-Video-size" href="#Video-size">6.4 Video size</a></li>
+    <li><a name="toc-Video-rate" href="#Video-rate">6.5 Video rate</a></li>
+    <li><a name="toc-Ratio" href="#Ratio">6.6 Ratio</a></li>
+    <li><a name="toc-Color" href="#Color">6.7 Color</a></li>
+    <li><a name="toc-Channel-Layout" href="#Channel-Layout">6.8 Channel Layout</a></li>
+  </ul></li>
+  <li><a name="toc-Expression-Evaluation" href="#Expression-Evaluation">7. Expression Evaluation</a></li>
+  <li><a name="toc-OpenCL-Options" href="#OpenCL-Options">8. OpenCL Options</a></li>
+  <li><a name="toc-Codec-Options" href="#Codec-Options">9. Codec Options</a></li>
+  <li><a name="toc-Decoders" href="#Decoders">10. Decoders</a></li>
+  <li><a name="toc-Video-Decoders" href="#Video-Decoders">11. Video Decoders</a>
+  <ul class="toc">
+    <li><a name="toc-rawvideo" href="#rawvideo">11.1 rawvideo</a>
+    <ul class="toc">
+      <li><a name="toc-Options-29" href="#Options-29">11.1.1 Options</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Audio-Decoders" href="#Audio-Decoders">12. Audio Decoders</a>
+  <ul class="toc">
+    <li><a name="toc-ffwavesynth" href="#ffwavesynth">12.1 ffwavesynth</a></li>
+    <li><a name="toc-libcelt" href="#libcelt">12.2 libcelt</a></li>
+    <li><a name="toc-libgsm" href="#libgsm">12.3 libgsm</a></li>
+    <li><a name="toc-libilbc" href="#libilbc">12.4 libilbc</a>
+    <ul class="toc">
+      <li><a name="toc-Options-9" href="#Options-9">12.4.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libopencore_002damrnb" href="#libopencore_002damrnb">12.5 libopencore-amrnb</a></li>
+    <li><a name="toc-libopencore_002damrwb" href="#libopencore_002damrwb">12.6 libopencore-amrwb</a></li>
+    <li><a name="toc-libopus-1" href="#libopus-1">12.7 libopus</a></li>
+  </ul></li>
+  <li><a name="toc-Subtitles-Decoders" href="#Subtitles-Decoders">13. Subtitles Decoders</a>
+  <ul class="toc">
+    <li><a name="toc-dvdsub" href="#dvdsub">13.1 dvdsub</a>
+    <ul class="toc">
+      <li><a name="toc-Options-21" href="#Options-21">13.1.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libzvbi_002dteletext" href="#libzvbi_002dteletext">13.2 libzvbi-teletext</a>
+    <ul class="toc">
+      <li><a name="toc-Options-15" href="#Options-15">13.2.1 Options</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Encoders" href="#Encoders">14. Encoders</a></li>
+  <li><a name="toc-Audio-Encoders" href="#Audio-Encoders">15. Audio Encoders</a>
+  <ul class="toc">
+    <li><a name="toc-aac" href="#aac">15.1 aac</a>
+    <ul class="toc">
+      <li><a name="toc-Options-11" href="#Options-11">15.1.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-ac3-and-ac3_005ffixed" href="#ac3-and-ac3_005ffixed">15.2 ac3 and ac3_fixed</a>
+    <ul class="toc">
+      <li><a name="toc-AC_002d3-Metadata" href="#AC_002d3-Metadata">15.2.1 AC-3 Metadata</a>
+      <ul class="toc">
+        <li><a name="toc-Metadata-Control-Options" href="#Metadata-Control-Options">15.2.1.1 Metadata Control Options</a></li>
+        <li><a name="toc-Downmix-Levels" href="#Downmix-Levels">15.2.1.2 Downmix Levels</a></li>
+        <li><a name="toc-Audio-Production-Information" href="#Audio-Production-Information">15.2.1.3 Audio Production Information</a></li>
+        <li><a name="toc-Other-Metadata-Options" href="#Other-Metadata-Options">15.2.1.4 Other Metadata Options</a></li>
+      </ul></li>
+      <li><a name="toc-Extended-Bitstream-Information" href="#Extended-Bitstream-Information">15.2.2 Extended Bitstream Information</a>
+      <ul class="toc">
+        <li><a name="toc-Extended-Bitstream-Information-_002d-Part-1" href="#Extended-Bitstream-Information-_002d-Part-1">15.2.2.1 Extended Bitstream Information - Part 1</a></li>
+        <li><a name="toc-Extended-Bitstream-Information-_002d-Part-2" href="#Extended-Bitstream-Information-_002d-Part-2">15.2.2.2 Extended Bitstream Information - Part 2</a></li>
+      </ul></li>
+      <li><a name="toc-Other-AC_002d3-Encoding-Options" href="#Other-AC_002d3-Encoding-Options">15.2.3 Other AC-3 Encoding Options</a></li>
+      <li><a name="toc-Floating_002dPoint_002dOnly-AC_002d3-Encoding-Options" href="#Floating_002dPoint_002dOnly-AC_002d3-Encoding-Options">15.2.4 Floating-Point-Only AC-3 Encoding Options</a></li>
+    </ul></li>
+    <li><a name="toc-libfaac-1" href="#libfaac-1">15.3 libfaac</a>
+    <ul class="toc">
+      <li><a name="toc-Options-13" href="#Options-13">15.3.1 Options</a></li>
+      <li><a name="toc-Examples-84" href="#Examples-84">15.3.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-libfdk_005faac" href="#libfdk_005faac">15.4 libfdk_aac</a>
+    <ul class="toc">
+      <li><a name="toc-Options-2" href="#Options-2">15.4.1 Options</a></li>
+      <li><a name="toc-Examples-50" href="#Examples-50">15.4.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-libmp3lame-1" href="#libmp3lame-1">15.5 libmp3lame</a>
+    <ul class="toc">
+      <li><a name="toc-Options-24" href="#Options-24">15.5.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libopencore_002damrnb-1" href="#libopencore_002damrnb-1">15.6 libopencore-amrnb</a>
+    <ul class="toc">
+      <li><a name="toc-Options-16" href="#Options-16">15.6.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libshine-1" href="#libshine-1">15.7 libshine</a>
+    <ul class="toc">
+      <li><a name="toc-Options" href="#Options">15.7.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libtwolame" href="#libtwolame">15.8 libtwolame</a>
+    <ul class="toc">
+      <li><a name="toc-Options-12" href="#Options-12">15.8.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libvo_002daacenc-1" href="#libvo_002daacenc-1">15.9 libvo-aacenc</a>
+    <ul class="toc">
+      <li><a name="toc-Options-17" href="#Options-17">15.9.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libvo_002damrwbenc" href="#libvo_002damrwbenc">15.10 libvo-amrwbenc</a>
+    <ul class="toc">
+      <li><a name="toc-Options-32" href="#Options-32">15.10.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libopus" href="#libopus">15.11 libopus</a>
+    <ul class="toc">
+      <li><a name="toc-Option-Mapping" href="#Option-Mapping">15.11.1 Option Mapping</a></li>
+    </ul></li>
+    <li><a name="toc-libvorbis" href="#libvorbis">15.12 libvorbis</a>
+    <ul class="toc">
+      <li><a name="toc-Options-1" href="#Options-1">15.12.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libwavpack" href="#libwavpack">15.13 libwavpack</a></li>
+  </ul></li>
+  <li><a name="toc-Video-Encoders" href="#Video-Encoders">16. Video Encoders</a>
+  <ul class="toc">
+    <li><a name="toc-libtheora" href="#libtheora">16.1 libtheora</a>
+    <ul class="toc">
+      <li><a name="toc-Options-20" href="#Options-20">16.1.1 Options</a></li>
+      <li><a name="toc-Examples-47" href="#Examples-47">16.1.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-libvpx" href="#libvpx">16.2 libvpx</a>
+    <ul class="toc">
+      <li><a name="toc-Options-23" href="#Options-23">16.2.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libx264" href="#libx264">16.3 libx264</a>
+    <ul class="toc">
+      <li><a name="toc-Options-27" href="#Options-27">16.3.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libxvid" href="#libxvid">16.4 libxvid</a>
+    <ul class="toc">
+      <li><a name="toc-Options-19" href="#Options-19">16.4.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-png" href="#png">16.5 png</a>
+    <ul class="toc">
+      <li><a name="toc-Private-options" href="#Private-options">16.5.1 Private options</a></li>
+    </ul></li>
+    <li><a name="toc-ProRes" href="#ProRes">16.6 ProRes</a>
+    <ul class="toc">
+      <li><a name="toc-Private-Options-for-prores_002dks" href="#Private-Options-for-prores_002dks">16.6.1 Private Options for prores-ks</a></li>
+      <li><a name="toc-Speed-considerations" href="#Speed-considerations">16.6.2 Speed considerations</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Bitstream-Filters" href="#Bitstream-Filters">17. Bitstream Filters</a>
+  <ul class="toc">
+    <li><a name="toc-aac_005fadtstoasc" href="#aac_005fadtstoasc">17.1 aac_adtstoasc</a></li>
+    <li><a name="toc-chomp" href="#chomp">17.2 chomp</a></li>
+    <li><a name="toc-dump_005fextra" href="#dump_005fextra">17.3 dump_extra</a></li>
+    <li><a name="toc-h264_005fmp4toannexb" href="#h264_005fmp4toannexb">17.4 h264_mp4toannexb</a></li>
+    <li><a name="toc-imx_005fdump_005fheader" href="#imx_005fdump_005fheader">17.5 imx_dump_header</a></li>
+    <li><a name="toc-mjpeg2jpeg" href="#mjpeg2jpeg">17.6 mjpeg2jpeg</a></li>
+    <li><a name="toc-mjpega_005fdump_005fheader" href="#mjpega_005fdump_005fheader">17.7 mjpega_dump_header</a></li>
+    <li><a name="toc-movsub" href="#movsub">17.8 movsub</a></li>
+    <li><a name="toc-mp3_005fheader_005fdecompress" href="#mp3_005fheader_005fdecompress">17.9 mp3_header_decompress</a></li>
+    <li><a name="toc-noise" href="#noise">17.10 noise</a></li>
+    <li><a name="toc-remove_005fextra" href="#remove_005fextra">17.11 remove_extra</a></li>
+  </ul></li>
+  <li><a name="toc-Format-Options" href="#Format-Options">18. Format Options</a>
+  <ul class="toc">
+    <li><a name="toc-Format-stream-specifiers-1" href="#Format-stream-specifiers-1">18.1 Format stream specifiers</a></li>
+  </ul></li>
+  <li><a name="toc-Demuxers" href="#Demuxers">19. Demuxers</a>
+  <ul class="toc">
+    <li><a name="toc-applehttp" href="#applehttp">19.1 applehttp</a></li>
+    <li><a name="toc-asf" href="#asf">19.2 asf</a></li>
+    <li><a name="toc-concat-2" href="#concat-2">19.3 concat</a>
+    <ul class="toc">
+      <li><a name="toc-Syntax-2" href="#Syntax-2">19.3.1 Syntax</a></li>
+      <li><a name="toc-Options-14" href="#Options-14">19.3.2 Options</a></li>
+    </ul></li>
+    <li><a name="toc-flv" href="#flv">19.4 flv</a></li>
+    <li><a name="toc-libgme" href="#libgme">19.5 libgme</a></li>
+    <li><a name="toc-libquvi" href="#libquvi">19.6 libquvi</a></li>
+    <li><a name="toc-image2-2" href="#image2-2">19.7 image2</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-83" href="#Examples-83">19.7.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mpegts" href="#mpegts">19.8 mpegts</a></li>
+    <li><a name="toc-rawvideo-1" href="#rawvideo-1">19.9 rawvideo</a></li>
+    <li><a name="toc-sbg" href="#sbg">19.10 sbg</a></li>
+    <li><a name="toc-tedcaptions" href="#tedcaptions">19.11 tedcaptions</a></li>
+  </ul></li>
+  <li><a name="toc-Muxers" href="#Muxers">20. Muxers</a>
+  <ul class="toc">
+    <li><a name="toc-aiff-1" href="#aiff-1">20.1 aiff</a></li>
+    <li><a name="toc-crc-1" href="#crc-1">20.2 crc</a></li>
+    <li><a name="toc-framecrc-1" href="#framecrc-1">20.3 framecrc</a></li>
+    <li><a name="toc-framemd5-1" href="#framemd5-1">20.4 framemd5</a></li>
+    <li><a name="toc-gif-1" href="#gif-1">20.5 gif</a></li>
+    <li><a name="toc-hls-1" href="#hls-1">20.6 hls</a></li>
+    <li><a name="toc-ico-1" href="#ico-1">20.7 ico</a></li>
+    <li><a name="toc-image2-1" href="#image2-1">20.8 image2</a></li>
+    <li><a name="toc-matroska" href="#matroska">20.9 matroska</a></li>
+    <li><a name="toc-md5-2" href="#md5-2">20.10 md5</a></li>
+    <li><a name="toc-mov_002fmp4_002fismv" href="#mov_002fmp4_002fismv">20.11 mov/mp4/ismv</a></li>
+    <li><a name="toc-mp3" href="#mp3">20.12 mp3</a></li>
+    <li><a name="toc-mpegts-1" href="#mpegts-1">20.13 mpegts</a></li>
+    <li><a name="toc-null" href="#null">20.14 null</a></li>
+    <li><a name="toc-ogg" href="#ogg">20.15 ogg</a></li>
+    <li><a name="toc-segment_002c-stream_005fsegment_002c-ssegment" href="#segment_002c-stream_005fsegment_002c-ssegment">20.16 segment, stream_segment, ssegment</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-52" href="#Examples-52">20.16.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-tee" href="#tee">20.17 tee</a></li>
+  </ul></li>
+  <li><a name="toc-Metadata" href="#Metadata">21. Metadata</a></li>
+  <li><a name="toc-Protocols" href="#Protocols">22. Protocols</a>
+  <ul class="toc">
+    <li><a name="toc-bluray" href="#bluray">22.1 bluray</a></li>
+    <li><a name="toc-cache" href="#cache">22.2 cache</a></li>
+    <li><a name="toc-concat-1" href="#concat-1">22.3 concat</a></li>
+    <li><a name="toc-crypto" href="#crypto">22.4 crypto</a></li>
+    <li><a name="toc-data" href="#data">22.5 data</a></li>
+    <li><a name="toc-file" href="#file">22.6 file</a></li>
+    <li><a name="toc-ftp" href="#ftp">22.7 ftp</a></li>
+    <li><a name="toc-gopher" href="#gopher">22.8 gopher</a></li>
+    <li><a name="toc-hls-2" href="#hls-2">22.9 hls</a></li>
+    <li><a name="toc-http" href="#http">22.10 http</a>
+    <ul class="toc">
+      <li><a name="toc-HTTP-Cookies" href="#HTTP-Cookies">22.10.1 HTTP Cookies</a></li>
+    </ul></li>
+    <li><a name="toc-mmst" href="#mmst">22.11 mmst</a></li>
+    <li><a name="toc-mmsh" href="#mmsh">22.12 mmsh</a></li>
+    <li><a name="toc-md5-1" href="#md5-1">22.13 md5</a></li>
+    <li><a name="toc-pipe" href="#pipe">22.14 pipe</a></li>
+    <li><a name="toc-rtmp" href="#rtmp">22.15 rtmp</a></li>
+    <li><a name="toc-rtmpe" href="#rtmpe">22.16 rtmpe</a></li>
+    <li><a name="toc-rtmps" href="#rtmps">22.17 rtmps</a></li>
+    <li><a name="toc-rtmpt" href="#rtmpt">22.18 rtmpt</a></li>
+    <li><a name="toc-rtmpte" href="#rtmpte">22.19 rtmpte</a></li>
+    <li><a name="toc-rtmpts" href="#rtmpts">22.20 rtmpts</a></li>
+    <li><a name="toc-libssh" href="#libssh">22.21 libssh</a></li>
+    <li><a name="toc-librtmp-rtmp_002c-rtmpe_002c-rtmps_002c-rtmpt_002c-rtmpte" href="#librtmp-rtmp_002c-rtmpe_002c-rtmps_002c-rtmpt_002c-rtmpte">22.22 librtmp rtmp, rtmpe, rtmps, rtmpt, rtmpte</a></li>
+    <li><a name="toc-rtp" href="#rtp">22.23 rtp</a></li>
+    <li><a name="toc-rtsp" href="#rtsp">22.24 rtsp</a></li>
+    <li><a name="toc-sap" href="#sap">22.25 sap</a>
+    <ul class="toc">
+      <li><a name="toc-Muxer" href="#Muxer">22.25.1 Muxer</a></li>
+      <li><a name="toc-Demuxer" href="#Demuxer">22.25.2 Demuxer</a></li>
+    </ul></li>
+    <li><a name="toc-sctp" href="#sctp">22.26 sctp</a></li>
+    <li><a name="toc-srtp" href="#srtp">22.27 srtp</a></li>
+    <li><a name="toc-tcp" href="#tcp">22.28 tcp</a></li>
+    <li><a name="toc-tls" href="#tls">22.29 tls</a></li>
+    <li><a name="toc-udp" href="#udp">22.30 udp</a></li>
+    <li><a name="toc-unix" href="#unix">22.31 unix</a></li>
+  </ul></li>
+  <li><a name="toc-Device-Options" href="#Device-Options">23. Device Options</a></li>
+  <li><a name="toc-Input-Devices" href="#Input-Devices">24. Input Devices</a>
+  <ul class="toc">
+    <li><a name="toc-alsa" href="#alsa">24.1 alsa</a></li>
+    <li><a name="toc-bktr" href="#bktr">24.2 bktr</a></li>
+    <li><a name="toc-dshow" href="#dshow">24.3 dshow</a>
+    <ul class="toc">
+      <li><a name="toc-Options-6" href="#Options-6">24.3.1 Options</a></li>
+      <li><a name="toc-Examples-42" href="#Examples-42">24.3.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-dv1394" href="#dv1394">24.4 dv1394</a></li>
+    <li><a name="toc-fbdev-1" href="#fbdev-1">24.5 fbdev</a></li>
+    <li><a name="toc-iec61883" href="#iec61883">24.6 iec61883</a>
+    <ul class="toc">
+      <li><a name="toc-Options-18" href="#Options-18">24.6.1 Options</a></li>
+      <li><a name="toc-Examples-45" href="#Examples-45">24.6.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-jack" href="#jack">24.7 jack</a></li>
+    <li><a name="toc-lavfi" href="#lavfi">24.8 lavfi</a>
+    <ul class="toc">
+      <li><a name="toc-Options-28" href="#Options-28">24.8.1 Options</a></li>
+      <li><a name="toc-Examples-11" href="#Examples-11">24.8.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-libdc1394" href="#libdc1394">24.9 libdc1394</a></li>
+    <li><a name="toc-openal" href="#openal">24.10 openal</a>
+    <ul class="toc">
+      <li><a name="toc-Options-31" href="#Options-31">24.10.1 Options</a></li>
+      <li><a name="toc-Examples-65" href="#Examples-65">24.10.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-oss-1" href="#oss-1">24.11 oss</a></li>
+    <li><a name="toc-pulse-1" href="#pulse-1">24.12 pulse</a>
+    <ul class="toc">
+      <li><a name="toc-Options-4" href="#Options-4">24.12.1 Options</a></li>
+      <li><a name="toc-Examples-35" href="#Examples-35">24.12.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sndio-1" href="#sndio-1">24.13 sndio</a></li>
+    <li><a name="toc-video4linux2_002c-v4l2" href="#video4linux2_002c-v4l2">24.14 video4linux2, v4l2</a>
+    <ul class="toc">
+      <li><a name="toc-Options-10" href="#Options-10">24.14.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-vfwcap" href="#vfwcap">24.15 vfwcap</a></li>
+    <li><a name="toc-x11grab" href="#x11grab">24.16 x11grab</a>
+    <ul class="toc">
+      <li><a name="toc-Options-26" href="#Options-26">24.16.1 Options</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Output-Devices" href="#Output-Devices">25. Output Devices</a>
+  <ul class="toc">
+    <li><a name="toc-alsa-1" href="#alsa-1">25.1 alsa</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-53" href="#Examples-53">25.1.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-caca" href="#caca">25.2 caca</a>
+    <ul class="toc">
+      <li><a name="toc-Options-5" href="#Options-5">25.2.1 Options</a></li>
+      <li><a name="toc-Examples-30" href="#Examples-30">25.2.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-fbdev" href="#fbdev">25.3 fbdev</a>
+    <ul class="toc">
+      <li><a name="toc-Options-30" href="#Options-30">25.3.1 Options</a></li>
+      <li><a name="toc-Examples-78" href="#Examples-78">25.3.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-oss" href="#oss">25.4 oss</a></li>
+    <li><a name="toc-pulse" href="#pulse">25.5 pulse</a>
+    <ul class="toc">
+      <li><a name="toc-Options-22" href="#Options-22">25.5.1 Options</a></li>
+      <li><a name="toc-Examples-73" href="#Examples-73">25.5.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sdl" href="#sdl">25.6 sdl</a>
+    <ul class="toc">
+      <li><a name="toc-Options-8" href="#Options-8">25.6.1 Options</a></li>
+      <li><a name="toc-Interactive-commands" href="#Interactive-commands">25.6.2 Interactive commands</a></li>
+      <li><a name="toc-Examples-58" href="#Examples-58">25.6.3 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sndio" href="#sndio">25.7 sndio</a></li>
+    <li><a name="toc-xv" href="#xv">25.8 xv</a>
+    <ul class="toc">
+      <li><a name="toc-Options-7" href="#Options-7">25.8.1 Options</a></li>
+      <li><a name="toc-Examples-66" href="#Examples-66">25.8.2 Examples</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Resampler-Options" href="#Resampler-Options">26. Resampler Options</a></li>
+  <li><a name="toc-Scaler-Options" href="#Scaler-Options">27. Scaler Options</a></li>
+  <li><a name="toc-Filtering-Introduction" href="#Filtering-Introduction">28. Filtering Introduction</a></li>
+  <li><a name="toc-graph2dot" href="#graph2dot">29. graph2dot</a></li>
+  <li><a name="toc-Filtergraph-description" href="#Filtergraph-description">30. Filtergraph description</a>
+  <ul class="toc">
+    <li><a name="toc-Filtergraph-syntax-1" href="#Filtergraph-syntax-1">30.1 Filtergraph syntax</a></li>
+    <li><a name="toc-Notes-on-filtergraph-escaping" href="#Notes-on-filtergraph-escaping">30.2 Notes on filtergraph escaping</a></li>
+  </ul></li>
+  <li><a name="toc-Timeline-editing" href="#Timeline-editing">31. Timeline editing</a></li>
+  <li><a name="toc-Audio-Filters" href="#Audio-Filters">32. Audio Filters</a>
+  <ul class="toc">
+    <li><a name="toc-aconvert" href="#aconvert">32.1 aconvert</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-5" href="#Examples-5">32.1.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-adelay" href="#adelay">32.2 adelay</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-39" href="#Examples-39">32.2.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-aecho" href="#aecho">32.3 aecho</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-62" href="#Examples-62">32.3.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-aeval" href="#aeval">32.4 aeval</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-82" href="#Examples-82">32.4.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-afade" href="#afade">32.5 afade</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-23" href="#Examples-23">32.5.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-aformat-1" href="#aformat-1">32.6 aformat</a></li>
+    <li><a name="toc-allpass" href="#allpass">32.7 allpass</a></li>
+    <li><a name="toc-amerge" href="#amerge">32.8 amerge</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-12" href="#Examples-12">32.8.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-amix" href="#amix">32.9 amix</a></li>
+    <li><a name="toc-anull" href="#anull">32.10 anull</a></li>
+    <li><a name="toc-apad" href="#apad">32.11 apad</a></li>
+    <li><a name="toc-aphaser" href="#aphaser">32.12 aphaser</a></li>
+    <li><a name="toc-aresample-1" href="#aresample-1">32.13 aresample</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-81" href="#Examples-81">32.13.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-asetnsamples" href="#asetnsamples">32.14 asetnsamples</a></li>
+    <li><a name="toc-asetrate" href="#asetrate">32.15 asetrate</a></li>
+    <li><a name="toc-ashowinfo" href="#ashowinfo">32.16 ashowinfo</a></li>
+    <li><a name="toc-astats" href="#astats">32.17 astats</a></li>
+    <li><a name="toc-astreamsync" href="#astreamsync">32.18 astreamsync</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-9" href="#Examples-9">32.18.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-asyncts" href="#asyncts">32.19 asyncts</a></li>
+    <li><a name="toc-atempo" href="#atempo">32.20 atempo</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-19" href="#Examples-19">32.20.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-atrim" href="#atrim">32.21 atrim</a></li>
+    <li><a name="toc-bandpass" href="#bandpass">32.22 bandpass</a></li>
+    <li><a name="toc-bandreject" href="#bandreject">32.23 bandreject</a></li>
+    <li><a name="toc-bass" href="#bass">32.24 bass</a></li>
+    <li><a name="toc-biquad" href="#biquad">32.25 biquad</a></li>
+    <li><a name="toc-channelmap" href="#channelmap">32.26 channelmap</a></li>
+    <li><a name="toc-channelsplit" href="#channelsplit">32.27 channelsplit</a></li>
+    <li><a name="toc-compand" href="#compand">32.28 compand</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-18" href="#Examples-18">32.28.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-earwax" href="#earwax">32.29 earwax</a></li>
+    <li><a name="toc-equalizer" href="#equalizer">32.30 equalizer</a></li>
+    <li><a name="toc-highpass" href="#highpass">32.31 highpass</a></li>
+    <li><a name="toc-join" href="#join">32.32 join</a></li>
+    <li><a name="toc-ladspa" href="#ladspa">32.33 ladspa</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-32" href="#Examples-32">32.33.1 Examples</a></li>
+      <li><a name="toc-Commands" href="#Commands">32.33.2 Commands</a></li>
+    </ul></li>
+    <li><a name="toc-lowpass" href="#lowpass">32.34 lowpass</a></li>
+    <li><a name="toc-pan" href="#pan">32.35 pan</a>
+    <ul class="toc">
+      <li><a name="toc-Mixing-examples" href="#Mixing-examples">32.35.1 Mixing examples</a></li>
+      <li><a name="toc-Remapping-examples" href="#Remapping-examples">32.35.2 Remapping examples</a></li>
+    </ul></li>
+    <li><a name="toc-replaygain" href="#replaygain">32.36 replaygain</a></li>
+    <li><a name="toc-resample" href="#resample">32.37 resample</a></li>
+    <li><a name="toc-silencedetect" href="#silencedetect">32.38 silencedetect</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-46" href="#Examples-46">32.38.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-treble" href="#treble">32.39 treble</a></li>
+    <li><a name="toc-volume" href="#volume">32.40 volume</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-10" href="#Examples-10">32.40.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-volumedetect" href="#volumedetect">32.41 volumedetect</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-22" href="#Examples-22">32.41.1 Examples</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Audio-Sources" href="#Audio-Sources">33. Audio Sources</a>
+  <ul class="toc">
+    <li><a name="toc-abuffer" href="#abuffer">33.1 abuffer</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-40" href="#Examples-40">33.1.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-aevalsrc" href="#aevalsrc">33.2 aevalsrc</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-55" href="#Examples-55">33.2.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-anullsrc" href="#anullsrc">33.3 anullsrc</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-54" href="#Examples-54">33.3.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-flite" href="#flite">33.4 flite</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-56" href="#Examples-56">33.4.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sine" href="#sine">33.5 sine</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-26" href="#Examples-26">33.5.1 Examples</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Audio-Sinks" href="#Audio-Sinks">34. Audio Sinks</a>
+  <ul class="toc">
+    <li><a name="toc-abuffersink" href="#abuffersink">34.1 abuffersink</a></li>
+    <li><a name="toc-anullsink" href="#anullsink">34.2 anullsink</a></li>
+  </ul></li>
+  <li><a name="toc-Video-Filters" href="#Video-Filters">35. Video Filters</a>
+  <ul class="toc">
+    <li><a name="toc-alphaextract" href="#alphaextract">35.1 alphaextract</a></li>
+    <li><a name="toc-alphamerge" href="#alphamerge">35.2 alphamerge</a></li>
+    <li><a name="toc-ass" href="#ass">35.3 ass</a></li>
+    <li><a name="toc-bbox" href="#bbox">35.4 bbox</a></li>
+    <li><a name="toc-blackdetect" href="#blackdetect">35.5 blackdetect</a></li>
+    <li><a name="toc-blackframe" href="#blackframe">35.6 blackframe</a></li>
+    <li><a name="toc-blend" href="#blend">35.7 blend</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-49" href="#Examples-49">35.7.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-boxblur" href="#boxblur">35.8 boxblur</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-69" href="#Examples-69">35.8.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-colorbalance" href="#colorbalance">35.9 colorbalance</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-61" href="#Examples-61">35.9.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-colorchannelmixer" href="#colorchannelmixer">35.10 colorchannelmixer</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-89" href="#Examples-89">35.10.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-colormatrix" href="#colormatrix">35.11 colormatrix</a></li>
+    <li><a name="toc-copy" href="#copy">35.12 copy</a></li>
+    <li><a name="toc-crop" href="#crop">35.13 crop</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-8" href="#Examples-8">35.13.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-cropdetect" href="#cropdetect">35.14 cropdetect</a></li>
+    <li><a name="toc-curves-1" href="#curves-1">35.15 curves</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-85" href="#Examples-85">35.15.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-dctdnoiz" href="#dctdnoiz">35.16 dctdnoiz</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-90" href="#Examples-90">35.16.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-decimate-1" href="#decimate-1">35.17 decimate</a></li>
+    <li><a name="toc-delogo" href="#delogo">35.18 delogo</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-7" href="#Examples-7">35.18.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-deshake" href="#deshake">35.19 deshake</a></li>
+    <li><a name="toc-drawbox" href="#drawbox">35.20 drawbox</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-13" href="#Examples-13">35.20.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-drawgrid" href="#drawgrid">35.21 drawgrid</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-68" href="#Examples-68">35.21.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-drawtext-1" href="#drawtext-1">35.22 drawtext</a>
+    <ul class="toc">
+      <li><a name="toc-Syntax-1" href="#Syntax-1">35.22.1 Syntax</a></li>
+      <li><a name="toc-Text-expansion" href="#Text-expansion">35.22.2 Text expansion</a></li>
+      <li><a name="toc-Examples-48" href="#Examples-48">35.22.3 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-edgedetect" href="#edgedetect">35.23 edgedetect</a></li>
+    <li><a name="toc-extractplanes" href="#extractplanes">35.24 extractplanes</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-2" href="#Examples-2">35.24.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-elbg" href="#elbg">35.25 elbg</a></li>
+    <li><a name="toc-fade" href="#fade">35.26 fade</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-86" href="#Examples-86">35.26.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-field" href="#field">35.27 field</a></li>
+    <li><a name="toc-fieldmatch" href="#fieldmatch">35.28 fieldmatch</a>
+    <ul class="toc">
+      <li><a name="toc-p_002fc_002fn_002fu_002fb-meaning-1" href="#p_002fc_002fn_002fu_002fb-meaning-1">35.28.1 p/c/n/u/b meaning</a>
+      <ul class="toc">
+        <li><a name="toc-p_002fc_002fn" href="#p_002fc_002fn">35.28.1.1 p/c/n</a></li>
+        <li><a name="toc-u_002fb" href="#u_002fb">35.28.1.2 u/b</a></li>
+      </ul></li>
+      <li><a name="toc-Examples-37" href="#Examples-37">35.28.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-fieldorder" href="#fieldorder">35.29 fieldorder</a></li>
+    <li><a name="toc-fifo" href="#fifo">35.30 fifo</a></li>
+    <li><a name="toc-format-1" href="#format-1">35.31 format</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-75" href="#Examples-75">35.31.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-fps-1" href="#fps-1">35.32 fps</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-44" href="#Examples-44">35.32.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-framestep" href="#framestep">35.33 framestep</a></li>
+    <li><a name="toc-frei0r-1" href="#frei0r-1">35.34 frei0r</a>
+    <ul class="toc">
+      <li><a name="toc-Examples" href="#Examples">35.34.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-geq" href="#geq">35.35 geq</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-74" href="#Examples-74">35.35.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-gradfun" href="#gradfun">35.36 gradfun</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-76" href="#Examples-76">35.36.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-haldclut-1" href="#haldclut-1">35.37 haldclut</a>
+    <ul class="toc">
+      <li><a name="toc-Workflow-examples" href="#Workflow-examples">35.37.1 Workflow examples</a>
+      <ul class="toc">
+        <li><a name="toc-Hald-CLUT-video-stream" href="#Hald-CLUT-video-stream">35.37.1.1 Hald CLUT video stream</a></li>
+        <li><a name="toc-Hald-CLUT-with-preview" href="#Hald-CLUT-with-preview">35.37.1.2 Hald CLUT with preview</a></li>
+      </ul>
+</li>
+    </ul></li>
+    <li><a name="toc-hflip" href="#hflip">35.38 hflip</a></li>
+    <li><a name="toc-histeq" href="#histeq">35.39 histeq</a></li>
+    <li><a name="toc-histogram" href="#histogram">35.40 histogram</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-6" href="#Examples-6">35.40.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-hqdn3d-1" href="#hqdn3d-1">35.41 hqdn3d</a></li>
+    <li><a name="toc-hue" href="#hue">35.42 hue</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-72" href="#Examples-72">35.42.1 Examples</a></li>
+      <li><a name="toc-Commands-3" href="#Commands-3">35.42.2 Commands</a></li>
+    </ul></li>
+    <li><a name="toc-idet" href="#idet">35.43 idet</a></li>
+    <li><a name="toc-il" href="#il">35.44 il</a></li>
+    <li><a name="toc-interlace" href="#interlace">35.45 interlace</a></li>
+    <li><a name="toc-kerndeint" href="#kerndeint">35.46 kerndeint</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-88" href="#Examples-88">35.46.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-lut3d-1" href="#lut3d-1">35.47 lut3d</a></li>
+    <li><a name="toc-lut_002c-lutrgb_002c-lutyuv" href="#lut_002c-lutrgb_002c-lutyuv">35.48 lut, lutrgb, lutyuv</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-17" href="#Examples-17">35.48.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mergeplanes" href="#mergeplanes">35.49 mergeplanes</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-43" href="#Examples-43">35.49.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mcdeint" href="#mcdeint">35.50 mcdeint</a></li>
+    <li><a name="toc-mp" href="#mp">35.51 mp</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-27" href="#Examples-27">35.51.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mpdecimate" href="#mpdecimate">35.52 mpdecimate</a></li>
+    <li><a name="toc-negate" href="#negate">35.53 negate</a></li>
+    <li><a name="toc-noformat" href="#noformat">35.54 noformat</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-15" href="#Examples-15">35.54.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-noise-1" href="#noise-1">35.55 noise</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-38" href="#Examples-38">35.55.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-null-1" href="#null-1">35.56 null</a></li>
+    <li><a name="toc-ocv" href="#ocv">35.57 ocv</a>
+    <ul class="toc">
+      <li><a name="toc-dilate-1" href="#dilate-1">35.57.1 dilate</a></li>
+      <li><a name="toc-erode" href="#erode">35.57.2 erode</a></li>
+      <li><a name="toc-smooth" href="#smooth">35.57.3 smooth</a></li>
+    </ul></li>
+    <li><a name="toc-overlay-1" href="#overlay-1">35.58 overlay</a>
+    <ul class="toc">
+      <li><a name="toc-Commands-2" href="#Commands-2">35.58.1 Commands</a></li>
+      <li><a name="toc-Examples-4" href="#Examples-4">35.58.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-owdenoise" href="#owdenoise">35.59 owdenoise</a></li>
+    <li><a name="toc-pad" href="#pad">35.60 pad</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-64" href="#Examples-64">35.60.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-perspective" href="#perspective">35.61 perspective</a></li>
+    <li><a name="toc-phase" href="#phase">35.62 phase</a></li>
+    <li><a name="toc-pixdesctest" href="#pixdesctest">35.63 pixdesctest</a></li>
+    <li><a name="toc-pp" href="#pp">35.64 pp</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-29" href="#Examples-29">35.64.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-psnr" href="#psnr">35.65 psnr</a></li>
+    <li><a name="toc-pullup" href="#pullup">35.66 pullup</a></li>
+    <li><a name="toc-removelogo" href="#removelogo">35.67 removelogo</a></li>
+    <li><a name="toc-rotate" href="#rotate">35.68 rotate</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-51" href="#Examples-51">35.68.1 Examples</a></li>
+      <li><a name="toc-Commands-1" href="#Commands-1">35.68.2 Commands</a></li>
+    </ul></li>
+    <li><a name="toc-sab" href="#sab">35.69 sab</a></li>
+    <li><a name="toc-scale-1" href="#scale-1">35.70 scale</a>
+    <ul class="toc">
+      <li><a name="toc-Options-25" href="#Options-25">35.70.1 Options</a></li>
+      <li><a name="toc-Examples-34" href="#Examples-34">35.70.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-separatefields" href="#separatefields">35.71 separatefields</a></li>
+    <li><a name="toc-setdar_002c-setsar" href="#setdar_002c-setsar">35.72 setdar, setsar</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-28" href="#Examples-28">35.72.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-setfield-1" href="#setfield-1">35.73 setfield</a></li>
+    <li><a name="toc-showinfo" href="#showinfo">35.74 showinfo</a></li>
+    <li><a name="toc-smartblur-1" href="#smartblur-1">35.75 smartblur</a></li>
+    <li><a name="toc-stereo3d" href="#stereo3d">35.76 stereo3d</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-87" href="#Examples-87">35.76.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-spp" href="#spp">35.77 spp</a></li>
+    <li><a name="toc-subtitles-1" href="#subtitles-1">35.78 subtitles</a></li>
+    <li><a name="toc-super2xsai" href="#super2xsai">35.79 super2xsai</a></li>
+    <li><a name="toc-swapuv" href="#swapuv">35.80 swapuv</a></li>
+    <li><a name="toc-telecine" href="#telecine">35.81 telecine</a></li>
+    <li><a name="toc-thumbnail" href="#thumbnail">35.82 thumbnail</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-25" href="#Examples-25">35.82.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-tile" href="#tile">35.83 tile</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-70" href="#Examples-70">35.83.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-tinterlace" href="#tinterlace">35.84 tinterlace</a></li>
+    <li><a name="toc-transpose" href="#transpose">35.85 transpose</a></li>
+    <li><a name="toc-trim" href="#trim">35.86 trim</a></li>
+    <li><a name="toc-unsharp" href="#unsharp">35.87 unsharp</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-60" href="#Examples-60">35.87.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-vidstabdetect-1" href="#vidstabdetect-1">35.88 vidstabdetect</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-36" href="#Examples-36">35.88.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-vidstabtransform-1" href="#vidstabtransform-1">35.89 vidstabtransform</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-3" href="#Examples-3">35.89.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-vflip" href="#vflip">35.90 vflip</a></li>
+    <li><a name="toc-vignette" href="#vignette">35.91 vignette</a>
+    <ul class="toc">
+      <li><a name="toc-Expressions" href="#Expressions">35.91.1 Expressions</a></li>
+      <li><a name="toc-Examples-80" href="#Examples-80">35.91.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-w3fdif" href="#w3fdif">35.92 w3fdif</a></li>
+    <li><a name="toc-yadif-1" href="#yadif-1">35.93 yadif</a></li>
+  </ul></li>
+  <li><a name="toc-Video-Sources" href="#Video-Sources">36. Video Sources</a>
+  <ul class="toc">
+    <li><a name="toc-buffer" href="#buffer">36.1 buffer</a></li>
+    <li><a name="toc-cellauto" href="#cellauto">36.2 cellauto</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-33" href="#Examples-33">36.2.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mandelbrot" href="#mandelbrot">36.3 mandelbrot</a></li>
+    <li><a name="toc-mptestsrc" href="#mptestsrc">36.4 mptestsrc</a></li>
+    <li><a name="toc-frei0r_005fsrc" href="#frei0r_005fsrc">36.5 frei0r_src</a></li>
+    <li><a name="toc-life" href="#life">36.6 life</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-63" href="#Examples-63">36.6.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-color_002c-haldclutsrc_002c-nullsrc_002c-rgbtestsrc_002c-smptebars_002c-smptehdbars_002c-testsrc" href="#color_002c-haldclutsrc_002c-nullsrc_002c-rgbtestsrc_002c-smptebars_002c-smptehdbars_002c-testsrc">36.7 color, haldclutsrc, nullsrc, rgbtestsrc, smptebars, smptehdbars, testsrc</a>
+    <ul class="toc">
+      <li><a name="toc-Commands-4" href="#Commands-4">36.7.1 Commands</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Video-Sinks" href="#Video-Sinks">37. Video Sinks</a>
+  <ul class="toc">
+    <li><a name="toc-buffersink" href="#buffersink">37.1 buffersink</a></li>
+    <li><a name="toc-nullsink" href="#nullsink">37.2 nullsink</a></li>
+  </ul></li>
+  <li><a name="toc-Multimedia-Filters" href="#Multimedia-Filters">38. Multimedia Filters</a>
+  <ul class="toc">
+    <li><a name="toc-avectorscope" href="#avectorscope">38.1 avectorscope</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-24" href="#Examples-24">38.1.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-concat-3" href="#concat-3">38.2 concat</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-91" href="#Examples-91">38.2.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-ebur128" href="#ebur128">38.3 ebur128</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-14" href="#Examples-14">38.3.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-interleave_002c-ainterleave" href="#interleave_002c-ainterleave">38.4 interleave, ainterleave</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-57" href="#Examples-57">38.4.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-perms_002c-aperms" href="#perms_002c-aperms">38.5 perms, aperms</a></li>
+    <li><a name="toc-select_002c-aselect" href="#select_002c-aselect">38.6 select, aselect</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-59" href="#Examples-59">38.6.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sendcmd_002c-asendcmd" href="#sendcmd_002c-asendcmd">38.7 sendcmd, asendcmd</a>
+    <ul class="toc">
+      <li><a name="toc-Commands-syntax" href="#Commands-syntax">38.7.1 Commands syntax</a></li>
+      <li><a name="toc-Examples-71" href="#Examples-71">38.7.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-setpts_002c-asetpts" href="#setpts_002c-asetpts">38.8 setpts, asetpts</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-20" href="#Examples-20">38.8.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-settb_002c-asettb" href="#settb_002c-asettb">38.9 settb, asettb</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-79" href="#Examples-79">38.9.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-showspectrum" href="#showspectrum">38.10 showspectrum</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-67" href="#Examples-67">38.10.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-showwaves" href="#showwaves">38.11 showwaves</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-21" href="#Examples-21">38.11.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-split_002c-asplit" href="#split_002c-asplit">38.12 split, asplit</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-1" href="#Examples-1">38.12.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-zmq_002c-azmq" href="#zmq_002c-azmq">38.13 zmq, azmq</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-41" href="#Examples-41">38.13.1 Examples</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Multimedia-Sources" href="#Multimedia-Sources">39. Multimedia Sources</a>
+  <ul class="toc">
+    <li><a name="toc-amovie" href="#amovie">39.1 amovie</a></li>
+    <li><a name="toc-movie-1" href="#movie-1">39.2 movie</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-77" href="#Examples-77">39.2.1 Examples</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-See-Also" href="#See-Also">40. See Also</a></li>
+  <li><a name="toc-Authors" href="#Authors">41. Authors</a></li>
+</ul>
+</div>
+
+<a name="Synopsis"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Synopsis">1. Synopsis</a></h1>
+
+<p>ffprobe [<var>options</var>] [&lsquo;<tt>input_file</tt>&rsquo;]
+</p>
+<a name="Description"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Description">2. Description</a></h1>
+
+<p>ffprobe gathers information from multimedia streams and prints it in
+human- and machine-readable fashion.
+</p>
+<p>For example it can be used to check the format of the container used
+by a multimedia stream and the format and type of each media stream
+contained in it.
+</p>
+<p>If a filename is specified in input, ffprobe will try to open and
+probe the file content. If the file cannot be opened or recognized as
+a multimedia file, a positive exit code is returned.
+</p>
+<p>ffprobe may be employed both as a standalone application or in
+combination with a textual filter, which may perform more
+sophisticated processing, e.g. statistical processing or plotting.
+</p>
+<p>Options are used to list some of the formats supported by ffprobe or
+for specifying which information to display, and for setting how
+ffprobe will show it.
+</p>
+<p>ffprobe output is designed to be easily parsable by a textual filter,
+and consists of one or more sections of a form defined by the selected
+writer, which is specified by the &lsquo;<samp>print_format</samp>&rsquo; option.
+</p>
+<p>Sections may contain other nested sections, and are identified by a
+name (which may be shared by other sections), and an unique
+name. See the output of &lsquo;<samp>sections</samp>&rsquo;.
+</p>
+<p>Metadata tags stored in the container or in the streams are recognized
+and printed in the corresponding &quot;FORMAT&quot;, &quot;STREAM&quot; or &quot;PROGRAM_STREAM&quot;
+section.
+</p>
+
+<a name="Options-3"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Options-3">3. Options</a></h1>
+
+<p>All the numerical options, if not specified otherwise, accept a string
+representing a number as input, which may be followed by one of the SI
+unit prefixes, for example: &rsquo;K&rsquo;, &rsquo;M&rsquo;, or &rsquo;G&rsquo;.
+</p>
+<p>If &rsquo;i&rsquo; is appended to the SI unit prefix, the complete prefix will be
+interpreted as a unit prefix for binary multiplies, which are based on
+powers of 1024 instead of powers of 1000. Appending &rsquo;B&rsquo; to the SI unit
+prefix multiplies the value by 8. This allows using, for example:
+&rsquo;KB&rsquo;, &rsquo;MiB&rsquo;, &rsquo;G&rsquo; and &rsquo;B&rsquo; as number suffixes.
+</p>
+<p>Options which do not take arguments are boolean options, and set the
+corresponding value to true. They can be set to false by prefixing
+the option name with &quot;no&quot;. For example using &quot;-nofoo&quot;
+will set the boolean option with name &quot;foo&quot; to false.
+</p>
+<p><a name="Stream-specifiers"></a>
+</p><a name="Stream-specifiers-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-Stream-specifiers-1">3.1 Stream specifiers</a></h2>
+<p>Some options are applied per-stream, e.g. bitrate or codec. Stream specifiers
+are used to precisely specify which stream(s) a given option belongs to.
+</p>
+<p>A stream specifier is a string generally appended to the option name and
+separated from it by a colon. E.g. <code>-codec:a:1 ac3</code> contains the
+<code>a:1</code> stream specifier, which matches the second audio stream. Therefore, it
+would select the ac3 codec for the second audio stream.
+</p>
+<p>A stream specifier can match several streams, so that the option is applied to all
+of them. E.g. the stream specifier in <code>-b:a 128k</code> matches all audio
+streams.
+</p>
+<p>An empty stream specifier matches all streams. For example, <code>-codec copy</code>
+or <code>-codec: copy</code> would copy all the streams without reencoding.
+</p>
+<p>Possible forms of stream specifiers are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp><var>stream_index</var></samp>&rsquo;</dt>
+<dd><p>Matches the stream with this index. E.g. <code>-threads:1 4</code> would set the
+thread count for the second stream to 4.
+</p></dd>
+<dt> &lsquo;<samp><var>stream_type</var>[:<var>stream_index</var>]</samp>&rsquo;</dt>
+<dd><p><var>stream_type</var> is one of following: &rsquo;v&rsquo; for video, &rsquo;a&rsquo; for audio, &rsquo;s&rsquo; for subtitle,
+&rsquo;d&rsquo; for data, and &rsquo;t&rsquo; for attachments. If <var>stream_index</var> is given, then it matches
+stream number <var>stream_index</var> of this type. Otherwise, it matches all
+streams of this type.
+</p></dd>
+<dt> &lsquo;<samp>p:<var>program_id</var>[:<var>stream_index</var>]</samp>&rsquo;</dt>
+<dd><p>If <var>stream_index</var> is given, then it matches the stream with number <var>stream_index</var>
+in the program with the id <var>program_id</var>. Otherwise, it matches all streams in the
+program.
+</p></dd>
+<dt> &lsquo;<samp>#<var>stream_id</var></samp>&rsquo;</dt>
+<dd><p>Matches the stream by a format-specific ID.
+</p></dd>
+</dl>
+
+<a name="Generic-options"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-Generic-options">3.2 Generic options</a></h2>
+
+<p>These options are shared amongst the ff* tools.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-L</samp>&rsquo;</dt>
+<dd><p>Show license.
+</p>
+</dd>
+<dt> &lsquo;<samp>-h, -?, -help, --help [<var>arg</var>]</samp>&rsquo;</dt>
+<dd><p>Show help. An optional parameter may be specified to print help about a specific
+item. If no argument is specified, only basic (non advanced) tool
+options are shown.
+</p>
+<p>Possible values of <var>arg</var> are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>long</samp>&rsquo;</dt>
+<dd><p>Print advanced tool options in addition to the basic tool options.
+</p>
+</dd>
+<dt> &lsquo;<samp>full</samp>&rsquo;</dt>
+<dd><p>Print complete list of options, including shared and private options
+for encoders, decoders, demuxers, muxers, filters, etc.
+</p>
+</dd>
+<dt> &lsquo;<samp>decoder=<var>decoder_name</var></samp>&rsquo;</dt>
+<dd><p>Print detailed information about the decoder named <var>decoder_name</var>. Use the
+&lsquo;<samp>-decoders</samp>&rsquo; option to get a list of all decoders.
+</p>
+</dd>
+<dt> &lsquo;<samp>encoder=<var>encoder_name</var></samp>&rsquo;</dt>
+<dd><p>Print detailed information about the encoder named <var>encoder_name</var>. Use the
+&lsquo;<samp>-encoders</samp>&rsquo; option to get a list of all encoders.
+</p>
+</dd>
+<dt> &lsquo;<samp>demuxer=<var>demuxer_name</var></samp>&rsquo;</dt>
+<dd><p>Print detailed information about the demuxer named <var>demuxer_name</var>. Use the
+&lsquo;<samp>-formats</samp>&rsquo; option to get a list of all demuxers and muxers.
+</p>
+</dd>
+<dt> &lsquo;<samp>muxer=<var>muxer_name</var></samp>&rsquo;</dt>
+<dd><p>Print detailed information about the muxer named <var>muxer_name</var>. Use the
+&lsquo;<samp>-formats</samp>&rsquo; option to get a list of all muxers and demuxers.
+</p>
+</dd>
+<dt> &lsquo;<samp>filter=<var>filter_name</var></samp>&rsquo;</dt>
+<dd><p>Print detailed information about the filter name <var>filter_name</var>. Use the
+&lsquo;<samp>-filters</samp>&rsquo; option to get a list of all filters.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-version</samp>&rsquo;</dt>
+<dd><p>Show version.
+</p>
+</dd>
+<dt> &lsquo;<samp>-formats</samp>&rsquo;</dt>
+<dd><p>Show available formats.
+</p>
+</dd>
+<dt> &lsquo;<samp>-codecs</samp>&rsquo;</dt>
+<dd><p>Show all codecs known to libavcodec.
+</p>
+<p>Note that the term &rsquo;codec&rsquo; is used throughout this documentation as a shortcut
+for what is more correctly called a media bitstream format.
+</p>
+</dd>
+<dt> &lsquo;<samp>-decoders</samp>&rsquo;</dt>
+<dd><p>Show available decoders.
+</p>
+</dd>
+<dt> &lsquo;<samp>-encoders</samp>&rsquo;</dt>
+<dd><p>Show all available encoders.
+</p>
+</dd>
+<dt> &lsquo;<samp>-bsfs</samp>&rsquo;</dt>
+<dd><p>Show available bitstream filters.
+</p>
+</dd>
+<dt> &lsquo;<samp>-protocols</samp>&rsquo;</dt>
+<dd><p>Show available protocols.
+</p>
+</dd>
+<dt> &lsquo;<samp>-filters</samp>&rsquo;</dt>
+<dd><p>Show available libavfilter filters.
+</p>
+</dd>
+<dt> &lsquo;<samp>-pix_fmts</samp>&rsquo;</dt>
+<dd><p>Show available pixel formats.
+</p>
+</dd>
+<dt> &lsquo;<samp>-sample_fmts</samp>&rsquo;</dt>
+<dd><p>Show available sample formats.
+</p>
+</dd>
+<dt> &lsquo;<samp>-layouts</samp>&rsquo;</dt>
+<dd><p>Show channel names and standard channel layouts.
+</p>
+</dd>
+<dt> &lsquo;<samp>-colors</samp>&rsquo;</dt>
+<dd><p>Show recognized color names.
+</p>
+</dd>
+<dt> &lsquo;<samp>-loglevel [repeat+]<var>loglevel</var> | -v [repeat+]<var>loglevel</var></samp>&rsquo;</dt>
+<dd><p>Set the logging level used by the library.
+Adding &quot;repeat+&quot; indicates that repeated log output should not be compressed
+to the first line and the &quot;Last message repeated n times&quot; line will be
+omitted. &quot;repeat&quot; can also be used alone.
+If &quot;repeat&quot; is used alone, and with no prior loglevel set, the default
+loglevel will be used. If multiple loglevel parameters are given, using
+&rsquo;repeat&rsquo; will not change the loglevel.
+<var>loglevel</var> is a number or a string containing one of the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>quiet</samp>&rsquo;</dt>
+<dd><p>Show nothing at all; be silent.
+</p></dd>
+<dt> &lsquo;<samp>panic</samp>&rsquo;</dt>
+<dd><p>Only show fatal errors which could lead the process to crash, such as
+and assert failure. This is not currently used for anything.
+</p></dd>
+<dt> &lsquo;<samp>fatal</samp>&rsquo;</dt>
+<dd><p>Only show fatal errors. These are errors after which the process absolutely
+cannot continue after.
+</p></dd>
+<dt> &lsquo;<samp>error</samp>&rsquo;</dt>
+<dd><p>Show all errors, including ones which can be recovered from.
+</p></dd>
+<dt> &lsquo;<samp>warning</samp>&rsquo;</dt>
+<dd><p>Show all warnings and errors. Any message related to possibly
+incorrect or unexpected events will be shown.
+</p></dd>
+<dt> &lsquo;<samp>info</samp>&rsquo;</dt>
+<dd><p>Show informative messages during processing. This is in addition to
+warnings and errors. This is the default value.
+</p></dd>
+<dt> &lsquo;<samp>verbose</samp>&rsquo;</dt>
+<dd><p>Same as <code>info</code>, except more verbose.
+</p></dd>
+<dt> &lsquo;<samp>debug</samp>&rsquo;</dt>
+<dd><p>Show everything, including debugging information.
+</p></dd>
+</dl>
+
+<p>By default the program logs to stderr, if coloring is supported by the
+terminal, colors are used to mark errors and warnings. Log coloring
+can be disabled setting the environment variable
+<code>AV_LOG_FORCE_NOCOLOR</code> or <code>NO_COLOR</code>, or can be forced setting
+the environment variable <code>AV_LOG_FORCE_COLOR</code>.
+The use of the environment variable <code>NO_COLOR</code> is deprecated and
+will be dropped in a following FFmpeg version.
+</p>
+</dd>
+<dt> &lsquo;<samp>-report</samp>&rsquo;</dt>
+<dd><p>Dump full command line and console output to a file named
+<code><var>program</var>-<var>YYYYMMDD</var>-<var>HHMMSS</var>.log</code> in the current
+directory.
+This file can be useful for bug reports.
+It also implies <code>-loglevel verbose</code>.
+</p>
+<p>Setting the environment variable <code>FFREPORT</code> to any value has the
+same effect. If the value is a &rsquo;:&rsquo;-separated key=value sequence, these
+options will affect the report; options values must be escaped if they
+contain special characters or the options delimiter &rsquo;:&rsquo; (see the
+&ldquo;Quoting and escaping&rdquo; section in the ffmpeg-utils manual). The
+following option is recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>file</samp>&rsquo;</dt>
+<dd><p>set the file name to use for the report; <code>%p</code> is expanded to the name
+of the program, <code>%t</code> is expanded to a timestamp, <code>%%</code> is expanded
+to a plain <code>%</code>
+</p></dd>
+</dl>
+
+<p>Errors in parsing the environment variable are not fatal, and will not
+appear in the report.
+</p>
+</dd>
+<dt> &lsquo;<samp>-cpuflags flags (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Allows setting and clearing cpu flags. This option is intended
+for testing. Do not use it unless you know what you&rsquo;re doing.
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -cpuflags -sse+mmx ...
+ffmpeg -cpuflags mmx ...
+ffmpeg -cpuflags 0 ...
+</pre></td></tr></table>
+<p>Possible flags for this option are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>x86</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>mmx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mmxext</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse2slow</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse3</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse3slow</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ssse3</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>atom</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse4.1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse4.2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>avx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>xop</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>fma4</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>3dnow</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>3dnowext</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>cmov</samp>&rsquo;</dt>
+</dl>
+</dd>
+<dt> &lsquo;<samp>ARM</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>armv5te</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>armv6</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>armv6t2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vfp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vfpv3</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>neon</samp>&rsquo;</dt>
+</dl>
+</dd>
+<dt> &lsquo;<samp>PowerPC</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>altivec</samp>&rsquo;</dt>
+</dl>
+</dd>
+<dt> &lsquo;<samp>Specific Processors</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>pentium2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>pentium3</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>pentium4</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>k6</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>k62</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>athlon</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>athlonxp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>k8</samp>&rsquo;</dt>
+</dl>
+</dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-opencl_bench</samp>&rsquo;</dt>
+<dd><p>Benchmark all available OpenCL devices and show the results. This option
+is only available when FFmpeg has been compiled with <code>--enable-opencl</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>-opencl_options options (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Set OpenCL environment options. This option is only available when
+FFmpeg has been compiled with <code>--enable-opencl</code>.
+</p>
+<p><var>options</var> must be a list of <var>key</var>=<var>value</var> option pairs
+separated by &rsquo;:&rsquo;. See the &ldquo;OpenCL Options&rdquo; section in the
+ffmpeg-utils manual for the list of supported options.
+</p></dd>
+</dl>
+
+<a name="AVOptions"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-AVOptions">3.3 AVOptions</a></h2>
+
+<p>These options are provided directly by the libavformat, libavdevice and
+libavcodec libraries. To see the list of available AVOptions, use the
+&lsquo;<samp>-help</samp>&rsquo; option. They are separated into two categories:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>generic</samp>&rsquo;</dt>
+<dd><p>These options can be set for any container, codec or device. Generic options
+are listed under AVFormatContext options for containers/devices and under
+AVCodecContext options for codecs.
+</p></dd>
+<dt> &lsquo;<samp>private</samp>&rsquo;</dt>
+<dd><p>These options are specific to the given container, device or codec. Private
+options are listed under their corresponding containers/devices/codecs.
+</p></dd>
+</dl>
+
+<p>For example to write an ID3v2.3 header instead of a default ID3v2.4 to
+an MP3 file, use the &lsquo;<samp>id3v2_version</samp>&rsquo; private option of the MP3
+muxer:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.flac -id3v2_version 3 out.mp3
+</pre></td></tr></table>
+
+<p>All codec AVOptions are per-stream, and thus a stream specifier
+should be attached to them.
+</p>
+<p>Note: the &lsquo;<samp>-nooption</samp>&rsquo; syntax cannot be used for boolean
+AVOptions, use &lsquo;<samp>-option 0</samp>&rsquo;/&lsquo;<samp>-option 1</samp>&rsquo;.
+</p>
+<p>Note: the old undocumented way of specifying per-stream AVOptions by
+prepending v/a/s to the options name is now obsolete and will be
+removed soon.
+</p>
+<a name="Main-options"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-Main-options">3.4 Main options</a></h2>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-f <var>format</var></samp>&rsquo;</dt>
+<dd><p>Force format to use.
+</p>
+</dd>
+<dt> &lsquo;<samp>-unit</samp>&rsquo;</dt>
+<dd><p>Show the unit of the displayed values.
+</p>
+</dd>
+<dt> &lsquo;<samp>-prefix</samp>&rsquo;</dt>
+<dd><p>Use SI prefixes for the displayed values.
+Unless the &quot;-byte_binary_prefix&quot; option is used all the prefixes
+are decimal.
+</p>
+</dd>
+<dt> &lsquo;<samp>-byte_binary_prefix</samp>&rsquo;</dt>
+<dd><p>Force the use of binary prefixes for byte values.
+</p>
+</dd>
+<dt> &lsquo;<samp>-sexagesimal</samp>&rsquo;</dt>
+<dd><p>Use sexagesimal format HH:MM:SS.MICROSECONDS for time values.
+</p>
+</dd>
+<dt> &lsquo;<samp>-pretty</samp>&rsquo;</dt>
+<dd><p>Prettify the format of the displayed values, it corresponds to the
+options &quot;-unit -prefix -byte_binary_prefix -sexagesimal&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>-of, -print_format <var>writer_name</var>[=<var>writer_options</var>]</samp>&rsquo;</dt>
+<dd><p>Set the output printing format.
+</p>
+<p><var>writer_name</var> specifies the name of the writer, and
+<var>writer_options</var> specifies the options to be passed to the writer.
+</p>
+<p>For example for printing the output in JSON format, specify:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">-print_format json
+</pre></td></tr></table>
+
+<p>For more details on the available output printing formats, see the
+Writers section below.
+</p>
+</dd>
+<dt> &lsquo;<samp>-sections</samp>&rsquo;</dt>
+<dd><p>Print sections structure and section information, and exit. The output
+is not meant to be parsed by a machine.
+</p>
+</dd>
+<dt> &lsquo;<samp>-select_streams <var>stream_specifier</var></samp>&rsquo;</dt>
+<dd><p>Select only the streams specified by <var>stream_specifier</var>. This
+option affects only the options related to streams
+(e.g. <code>show_streams</code>, <code>show_packets</code>, etc.).
+</p>
+<p>For example to show only audio streams, you can use the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffprobe -show_streams -select_streams a INPUT
+</pre></td></tr></table>
+
+<p>To show only video packets belonging to the video stream with index 1:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffprobe -show_packets -select_streams v:1 INPUT
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>-show_data</samp>&rsquo;</dt>
+<dd><p>Show payload data, as a hexadecimal and ASCII dump. Coupled with
+&lsquo;<samp>-show_packets</samp>&rsquo;, it will dump the packets&rsquo; data. Coupled with
+&lsquo;<samp>-show_streams</samp>&rsquo;, it will dump the codec extradata.
+</p>
+<p>The dump is printed as the &quot;data&quot; field. It may contain newlines.
+</p>
+</dd>
+<dt> &lsquo;<samp>-show_error</samp>&rsquo;</dt>
+<dd><p>Show information about the error found when trying to probe the input.
+</p>
+<p>The error information is printed within a section with name &quot;ERROR&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>-show_format</samp>&rsquo;</dt>
+<dd><p>Show information about the container format of the input multimedia
+stream.
+</p>
+<p>All the container format information is printed within a section with
+name &quot;FORMAT&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>-show_format_entry <var>name</var></samp>&rsquo;</dt>
+<dd><p>Like &lsquo;<samp>-show_format</samp>&rsquo;, but only prints the specified entry of the
+container format information, rather than all. This option may be given more
+than once, then all specified entries will be shown.
+</p>
+<p>This option is deprecated, use <code>show_entries</code> instead.
+</p>
+</dd>
+<dt> &lsquo;<samp>-show_entries <var>section_entries</var></samp>&rsquo;</dt>
+<dd><p>Set list of entries to show.
+</p>
+<p>Entries are specified according to the following
+syntax. <var>section_entries</var> contains a list of section entries
+separated by <code>:</code>. Each section entry is composed by a section
+name (or unique name), optionally followed by a list of entries local
+to that section, separated by <code>,</code>.
+</p>
+<p>If section name is specified but is followed by no <code>=</code>, all
+entries are printed to output, together with all the contained
+sections. Otherwise only the entries specified in the local section
+entries list are printed. In particular, if <code>=</code> is specified but
+the list of local entries is empty, then no entries will be shown for
+that section.
+</p>
+<p>Note that the order of specification of the local section entries is
+not honored in the output, and the usual display order will be
+retained.
+</p>
+<p>The formal syntax is given by:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>LOCAL_SECTION_ENTRIES</var> ::= <var>SECTION_ENTRY_NAME</var>[,<var>LOCAL_SECTION_ENTRIES</var>]
+<var>SECTION_ENTRY</var>         ::= <var>SECTION_NAME</var>[=[<var>LOCAL_SECTION_ENTRIES</var>]]
+<var>SECTION_ENTRIES</var>       ::= <var>SECTION_ENTRY</var>[:<var>SECTION_ENTRIES</var>]
+</pre></td></tr></table>
+
+<p>For example, to show only the index and type of each stream, and the PTS
+time, duration time, and stream index of the packets, you can specify
+the argument:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">packet=pts_time,duration_time,stream_index : stream=index,codec_type
+</pre></td></tr></table>
+
+<p>To show all the entries in the section &quot;format&quot;, but only the codec
+type in the section &quot;stream&quot;, specify the argument:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">format : stream=codec_type
+</pre></td></tr></table>
+
+<p>To show all the tags in the stream and format sections:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">format_tags : format_tags
+</pre></td></tr></table>
+
+<p>To show only the <code>title</code> tag (if available) in the stream
+sections:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">stream_tags=title
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>-show_packets</samp>&rsquo;</dt>
+<dd><p>Show information about each packet contained in the input multimedia
+stream.
+</p>
+<p>The information for each single packet is printed within a dedicated
+section with name &quot;PACKET&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>-show_frames</samp>&rsquo;</dt>
+<dd><p>Show information about each frame and subtitle contained in the input
+multimedia stream.
+</p>
+<p>The information for each single frame is printed within a dedicated
+section with name &quot;FRAME&quot; or &quot;SUBTITLE&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>-show_streams</samp>&rsquo;</dt>
+<dd><p>Show information about each media stream contained in the input
+multimedia stream.
+</p>
+<p>Each media stream information is printed within a dedicated section
+with name &quot;STREAM&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>-show_programs</samp>&rsquo;</dt>
+<dd><p>Show information about programs and their streams contained in the input
+multimedia stream.
+</p>
+<p>Each media stream information is printed within a dedicated section
+with name &quot;PROGRAM_STREAM&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>-show_chapters</samp>&rsquo;</dt>
+<dd><p>Show information about chapters stored in the format.
+</p>
+<p>Each chapter is printed within a dedicated section with name &quot;CHAPTER&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>-count_frames</samp>&rsquo;</dt>
+<dd><p>Count the number of frames per stream and report it in the
+corresponding stream section.
+</p>
+</dd>
+<dt> &lsquo;<samp>-count_packets</samp>&rsquo;</dt>
+<dd><p>Count the number of packets per stream and report it in the
+corresponding stream section.
+</p>
+</dd>
+<dt> &lsquo;<samp>-read_intervals <var>read_intervals</var></samp>&rsquo;</dt>
+<dd>
+<p>Read only the specified intervals. <var>read_intervals</var> must be a
+sequence of interval specifications separated by &quot;,&quot;.
+<code>ffprobe</code> will seek to the interval starting point, and will
+continue reading from that.
+</p>
+<p>Each interval is specified by two optional parts, separated by &quot;%&quot;.
+</p>
+<p>The first part specifies the interval start position. It is
+interpreted as an abolute position, or as a relative offset from the
+current position if it is preceded by the &quot;+&quot; character. If this first
+part is not specified, no seeking will be performed when reading this
+interval.
+</p>
+<p>The second part specifies the interval end position. It is interpreted
+as an absolute position, or as a relative offset from the current
+position if it is preceded by the &quot;+&quot; character. If the offset
+specification starts with &quot;#&quot;, it is interpreted as the number of
+packets to read (not including the flushing packets) from the interval
+start. If no second part is specified, the program will read until the
+end of the input.
+</p>
+<p>Note that seeking is not accurate, thus the actual interval start
+point may be different from the specified position. Also, when an
+interval duration is specified, the absolute end time will be computed
+by adding the duration to the interval start point found by seeking
+the file, rather than to the specified start value.
+</p>
+<p>The formal syntax is given by:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>INTERVAL</var>  ::= [<var>START</var>|+<var>START_OFFSET</var>][%[<var>END</var>|+<var>END_OFFSET</var>]]
+<var>INTERVALS</var> ::= <var>INTERVAL</var>[,<var>INTERVALS</var>]
+</pre></td></tr></table>
+
+<p>A few examples follow.
+</p><ul>
+<li>
+Seek to time 10, read packets until 20 seconds after the found seek
+point, then seek to position <code>01:30</code> (1 minute and thirty
+seconds) and read packets until position <code>01:45</code>.
+<table><tr><td>&nbsp;</td><td><pre class="example">10%+20,01:30%01:45
+</pre></td></tr></table>
+
+</li><li>
+Read only 42 packets after seeking to position <code>01:23</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">01:23%+#42
+</pre></td></tr></table>
+
+</li><li>
+Read only the first 20 seconds from the start:
+<table><tr><td>&nbsp;</td><td><pre class="example">%+20
+</pre></td></tr></table>
+
+</li><li>
+Read from the start until position <code>02:30</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">%02:30
+</pre></td></tr></table>
+</li></ul>
+
+</dd>
+<dt> &lsquo;<samp>-show_private_data, -private</samp>&rsquo;</dt>
+<dd><p>Show private data, that is data depending on the format of the
+particular shown element.
+This option is enabled by default, but you may need to disable it
+for specific uses, for example when creating XSD-compliant XML output.
+</p>
+</dd>
+<dt> &lsquo;<samp>-show_program_version</samp>&rsquo;</dt>
+<dd><p>Show information related to program version.
+</p>
+<p>Version information is printed within a section with name
+&quot;PROGRAM_VERSION&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>-show_library_versions</samp>&rsquo;</dt>
+<dd><p>Show information related to library versions.
+</p>
+<p>Version information for each library is printed within a section with
+name &quot;LIBRARY_VERSION&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>-show_versions</samp>&rsquo;</dt>
+<dd><p>Show information related to program and library versions. This is the
+equivalent of setting both &lsquo;<samp>-show_program_version</samp>&rsquo; and
+&lsquo;<samp>-show_library_versions</samp>&rsquo; options.
+</p>
+</dd>
+<dt> &lsquo;<samp>-bitexact</samp>&rsquo;</dt>
+<dd><p>Force bitexact output, useful to produce output which is not dependent
+on the specific build.
+</p>
+</dd>
+<dt> &lsquo;<samp>-i <var>input_file</var></samp>&rsquo;</dt>
+<dd><p>Read <var>input_file</var>.
+</p>
+</dd>
+</dl>
+
+<a name="Writers"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Writers">4. Writers</a></h1>
+
+<p>A writer defines the output format adopted by <code>ffprobe</code>, and will be
+used for printing all the parts of the output.
+</p>
+<p>A writer may accept one or more arguments, which specify the options
+to adopt. The options are specified as a list of <var>key</var>=<var>value</var>
+pairs, separated by &quot;:&quot;.
+</p>
+<p>All writers support the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>string_validation, sv</samp>&rsquo;</dt>
+<dd><p>Set string validation mode.
+</p>
+<p>The following values are accepted.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>fail</samp>&rsquo;</dt>
+<dd><p>The writer will fail immediately in case an invalid string (UTF-8)
+sequence or code point is found in the input. This is especially
+useful to validate input metadata.
+</p>
+</dd>
+<dt> &lsquo;<samp>ignore</samp>&rsquo;</dt>
+<dd><p>Any validation error will be ignored. This will result in possibly
+broken output, especially with the json or xml writer.
+</p>
+</dd>
+<dt> &lsquo;<samp>replace</samp>&rsquo;</dt>
+<dd><p>The writer will substitute invalid UTF-8 sequences or code points with
+the string specified with the &lsquo;<samp>string_validation_replacement</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>replace</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>string_validation_replacement, svr</samp>&rsquo;</dt>
+<dd><p>Set replacement string to use in case &lsquo;<samp>string_validation</samp>&rsquo; is
+set to &lsquo;<samp>replace</samp>&rsquo;.
+</p>
+<p>In case the option is not specified, the writer will assume the empty
+string, that is it will remove the invalid sequences from the input
+strings.
+</p></dd>
+</dl>
+
+<p>A description of the currently available writers follows.
+</p>
+<a name="default"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-default">4.1 default</a></h2>
+<p>Default format.
+</p>
+<p>Print each section in the form:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[SECTION]
+key1=val1
+...
+keyN=valN
+[/SECTION]
+</pre></td></tr></table>
+
+<p>Metadata tags are printed as a line in the corresponding FORMAT, STREAM or
+PROGRAM_STREAM section, and are prefixed by the string &quot;TAG:&quot;.
+</p>
+<p>A description of the accepted options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>nokey, nk</samp>&rsquo;</dt>
+<dd><p>If set to 1 specify not to print the key of each field. Default value
+is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>noprint_wrappers, nw</samp>&rsquo;</dt>
+<dd><p>If set to 1 specify not to print the section header and footer.
+Default value is 0.
+</p></dd>
+</dl>
+
+<a name="compact_002c-csv"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-compact_002c-csv">4.2 compact, csv</a></h2>
+<p>Compact and CSV format.
+</p>
+<p>The <code>csv</code> writer is equivalent to <code>compact</code>, but supports
+different defaults.
+</p>
+<p>Each section is printed on a single line.
+If no option is specifid, the output has the form:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">section|key1=val1| ... |keyN=valN
+</pre></td></tr></table>
+
+<p>Metadata tags are printed in the corresponding &quot;format&quot; or &quot;stream&quot;
+section. A metadata tag key, if printed, is prefixed by the string
+&quot;tag:&quot;.
+</p>
+<p>The description of the accepted options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>item_sep, s</samp>&rsquo;</dt>
+<dd><p>Specify the character to use for separating fields in the output line.
+It must be a single printable character, it is &quot;|&quot; by default (&quot;,&quot; for
+the <code>csv</code> writer).
+</p>
+</dd>
+<dt> &lsquo;<samp>nokey, nk</samp>&rsquo;</dt>
+<dd><p>If set to 1 specify not to print the key of each field. Its default
+value is 0 (1 for the <code>csv</code> writer).
+</p>
+</dd>
+<dt> &lsquo;<samp>escape, e</samp>&rsquo;</dt>
+<dd><p>Set the escape mode to use, default to &quot;c&quot; (&quot;csv&quot; for the <code>csv</code>
+writer).
+</p>
+<p>It can assume one of the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>c</samp>&rsquo;</dt>
+<dd><p>Perform C-like escaping. Strings containing a newline (&rsquo;\n&rsquo;), carriage
+return (&rsquo;\r&rsquo;), a tab (&rsquo;\t&rsquo;), a form feed (&rsquo;\f&rsquo;), the escaping
+character (&rsquo;\&rsquo;) or the item separator character <var>SEP</var> are escaped using C-like fashioned
+escaping, so that a newline is converted to the sequence &quot;\n&quot;, a
+carriage return to &quot;\r&quot;, &rsquo;\&rsquo; to &quot;\\&quot; and the separator <var>SEP</var> is
+converted to &quot;\<var>SEP</var>&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>csv</samp>&rsquo;</dt>
+<dd><p>Perform CSV-like escaping, as described in RFC4180.  Strings
+containing a newline (&rsquo;\n&rsquo;), a carriage return (&rsquo;\r&rsquo;), a double quote
+(&rsquo;&quot;&rsquo;), or <var>SEP</var> are enclosed in double-quotes.
+</p>
+</dd>
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>Perform no escaping.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>print_section, p</samp>&rsquo;</dt>
+<dd><p>Print the section name at the begin of each line if the value is
+<code>1</code>, disable it with value set to <code>0</code>. Default value is
+<code>1</code>.
+</p>
+</dd>
+</dl>
+
+<a name="flat"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-flat">4.3 flat</a></h2>
+<p>Flat format.
+</p>
+<p>A free-form output where each line contains an explicit key=value, such as
+&quot;streams.stream.3.tags.foo=bar&quot;. The output is shell escaped, so it can be
+directly embedded in sh scripts as long as the separator character is an
+alphanumeric character or an underscore (see <var>sep_char</var> option).
+</p>
+<p>The description of the accepted options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>sep_char, s</samp>&rsquo;</dt>
+<dd><p>Separator character used to separate the chapter, the section name, IDs and
+potential tags in the printed field key.
+</p>
+<p>Default value is &rsquo;.&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>hierarchical, h</samp>&rsquo;</dt>
+<dd><p>Specify if the section name specification should be hierarchical. If
+set to 1, and if there is more than one section in the current
+chapter, the section name will be prefixed by the name of the
+chapter. A value of 0 will disable this behavior.
+</p>
+<p>Default value is 1.
+</p></dd>
+</dl>
+
+<a name="ini"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-ini">4.4 ini</a></h2>
+<p>INI format output.
+</p>
+<p>Print output in an INI based format.
+</p>
+<p>The following conventions are adopted:
+</p>
+<ul>
+<li>
+all key and values are UTF-8
+</li><li>
+&rsquo;.&rsquo; is the subgroup separator
+</li><li>
+newline, &rsquo;\t&rsquo;, &rsquo;\f&rsquo;, &rsquo;\b&rsquo; and the following characters are escaped
+</li><li>
+&rsquo;\&rsquo; is the escape character
+</li><li>
+&rsquo;#&rsquo; is the comment indicator
+</li><li>
+&rsquo;=&rsquo; is the key/value separator
+</li><li>
+&rsquo;:&rsquo; is not used but usually parsed as key/value separator
+</li></ul>
+
+<p>This writer accepts options as a list of <var>key</var>=<var>value</var> pairs,
+separated by &quot;:&quot;.
+</p>
+<p>The description of the accepted options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>hierarchical, h</samp>&rsquo;</dt>
+<dd><p>Specify if the section name specification should be hierarchical. If
+set to 1, and if there is more than one section in the current
+chapter, the section name will be prefixed by the name of the
+chapter. A value of 0 will disable this behavior.
+</p>
+<p>Default value is 1.
+</p></dd>
+</dl>
+
+<a name="json"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-json">4.5 json</a></h2>
+<p>JSON based format.
+</p>
+<p>Each section is printed using JSON notation.
+</p>
+<p>The description of the accepted options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>compact, c</samp>&rsquo;</dt>
+<dd><p>If set to 1 enable compact output, that is each section will be
+printed on a single line. Default value is 0.
+</p></dd>
+</dl>
+
+<p>For more information about JSON, see <a href="http://www.json.org/">http://www.json.org/</a>.
+</p>
+<a name="xml"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-xml">4.6 xml</a></h2>
+<p>XML based format.
+</p>
+<p>The XML output is described in the XML schema description file
+&lsquo;<tt>ffprobe.xsd</tt>&rsquo; installed in the FFmpeg datadir.
+</p>
+<p>An updated version of the schema can be retrieved at the url
+<a href="http://www.ffmpeg.org/schema/ffprobe.xsd">http://www.ffmpeg.org/schema/ffprobe.xsd</a>, which redirects to the
+latest schema committed into the FFmpeg development source code tree.
+</p>
+<p>Note that the output issued will be compliant to the
+&lsquo;<tt>ffprobe.xsd</tt>&rsquo; schema only when no special global output options
+(&lsquo;<samp>unit</samp>&rsquo;, &lsquo;<samp>prefix</samp>&rsquo;, &lsquo;<samp>byte_binary_prefix</samp>&rsquo;,
+&lsquo;<samp>sexagesimal</samp>&rsquo; etc.) are specified.
+</p>
+<p>The description of the accepted options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>fully_qualified, q</samp>&rsquo;</dt>
+<dd><p>If set to 1 specify if the output should be fully qualified. Default
+value is 0.
+This is required for generating an XML file which can be validated
+through an XSD file.
+</p>
+</dd>
+<dt> &lsquo;<samp>xsd_compliant, x</samp>&rsquo;</dt>
+<dd><p>If set to 1 perform more checks for ensuring that the output is XSD
+compliant. Default value is 0.
+This option automatically sets &lsquo;<samp>fully_qualified</samp>&rsquo; to 1.
+</p></dd>
+</dl>
+
+<p>For more information about the XML format, see
+<a href="http://www.w3.org/XML/">http://www.w3.org/XML/</a>.
+</p>
+<a name="Timecode"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Timecode">5. Timecode</a></h1>
+
+<p><code>ffprobe</code> supports Timecode extraction:
+</p>
+<ul>
+<li>
+MPEG1/2 timecode is extracted from the GOP, and is available in the video
+stream details (&lsquo;<samp>-show_streams</samp>&rsquo;, see <var>timecode</var>).
+
+</li><li>
+MOV timecode is extracted from tmcd track, so is available in the tmcd
+stream metadata (&lsquo;<samp>-show_streams</samp>&rsquo;, see <var>TAG:timecode</var>).
+
+</li><li>
+DV, GXF and AVI timecodes are available in format metadata
+(&lsquo;<samp>-show_format</samp>&rsquo;, see <var>TAG:timecode</var>).
+
+</li></ul>
+
+<a name="Syntax"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Syntax">6. Syntax</a></h1>
+
+<p>This section documents the syntax and formats employed by the FFmpeg
+libraries and tools.
+</p>
+<p><a name="quoting_005fand_005fescaping"></a>
+</p><a name="Quoting-and-escaping"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-Quoting-and-escaping">6.1 Quoting and escaping</a></h2>
+
+<p>FFmpeg adopts the following quoting and escaping mechanism, unless
+explicitly specified. The following rules are applied:
+</p>
+<ul>
+<li>
+<code>'</code> and <code>\</code> are special characters (respectively used for
+quoting and escaping). In addition to them, there might be other
+special characters depending on the specific syntax where the escaping
+and quoting are employed.
+
+</li><li>
+A special character is escaped by prefixing it with a &rsquo;\&rsquo;.
+
+</li><li>
+All characters enclosed between &rdquo; are included literally in the
+parsed string. The quote character <code>'</code> itself cannot be quoted,
+so you may need to close the quote and escape it.
+
+</li><li>
+Leading and trailing whitespaces, unless escaped or quoted, are
+removed from the parsed string.
+</li></ul>
+
+<p>Note that you may need to add a second level of escaping when using
+the command line or a script, which depends on the syntax of the
+adopted shell language.
+</p>
+<p>The function <code>av_get_token</code> defined in
+&lsquo;<tt>libavutil/avstring.h</tt>&rsquo; can be used to parse a token quoted or
+escaped according to the rules defined above.
+</p>
+<p>The tool &lsquo;<tt>tools/ffescape</tt>&rsquo; in the FFmpeg source tree can be used
+to automatically quote or escape a string in a script.
+</p>
+<a name="Examples-31"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-31">6.1.1 Examples</a></h3>
+
+<ul>
+<li>
+Escape the string <code>Crime d'Amour</code> containing the <code>'</code> special
+character:
+<table><tr><td>&nbsp;</td><td><pre class="example">Crime d\'Amour
+</pre></td></tr></table>
+
+</li><li>
+The string above contains a quote, so the <code>'</code> needs to be escaped
+when quoting it:
+<table><tr><td>&nbsp;</td><td><pre class="example">'Crime d'\''Amour'
+</pre></td></tr></table>
+
+</li><li>
+Include leading or trailing whitespaces using quoting:
+<table><tr><td>&nbsp;</td><td><pre class="example">'  this string starts and ends with whitespaces  '
+</pre></td></tr></table>
+
+</li><li>
+Escaping and quoting can be mixed together:
+<table><tr><td>&nbsp;</td><td><pre class="example">' The string '\'string\'' is a string '
+</pre></td></tr></table>
+
+</li><li>
+To include a literal <code>\</code> you can use either escaping or quoting:
+<table><tr><td>&nbsp;</td><td><pre class="example">'c:\foo' can be written as c:\\foo
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="date-syntax"></a>
+</p><a name="Date"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-Date">6.2 Date</a></h2>
+
+<p>The accepted syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[(YYYY-MM-DD|YYYYMMDD)[T|t| ]]((HH:MM:SS[.m...]]])|(HHMMSS[.m...]]]))[Z]
+now
+</pre></td></tr></table>
+
+<p>If the value is &quot;now&quot; it takes the current time.
+</p>
+<p>Time is local time unless Z is appended, in which case it is
+interpreted as UTC.
+If the year-month-day part is not specified it takes the current
+year-month-day.
+</p>
+<p><a name="time-duration-syntax"></a>
+</p><a name="Time-duration"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-Time-duration">6.3 Time duration</a></h2>
+
+<p>There are two accepted syntaxes for expressing time duration.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">[-][<var>HH</var>:]<var>MM</var>:<var>SS</var>[.<var>m</var>...]
+</pre></td></tr></table>
+
+<p><var>HH</var> expresses the number of hours, <var>MM</var> the number of minutes
+for a maximum of 2 digits, and <var>SS</var> the number of seconds for a
+maximum of 2 digits. The <var>m</var> at the end expresses decimal value for
+<var>SS</var>.
+</p>
+<p><em>or</em>
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">[-]<var>S</var>+[.<var>m</var>...]
+</pre></td></tr></table>
+
+<p><var>S</var> expresses the number of seconds, with the optional decimal part
+<var>m</var>.
+</p>
+<p>In both expressions, the optional &lsquo;<samp>-</samp>&rsquo; indicates negative duration.
+</p>
+<a name="Examples-16"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-16">6.3.1 Examples</a></h3>
+
+<p>The following examples are all valid time duration:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>55</samp>&rsquo;</dt>
+<dd><p>55 seconds
+</p>
+</dd>
+<dt> &lsquo;<samp>12:03:45</samp>&rsquo;</dt>
+<dd><p>12 hours, 03 minutes and 45 seconds
+</p>
+</dd>
+<dt> &lsquo;<samp>23.189</samp>&rsquo;</dt>
+<dd><p>23.189 seconds
+</p></dd>
+</dl>
+
+<p><a name="video-size-syntax"></a>
+</p><a name="Video-size"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-Video-size">6.4 Video size</a></h2>
+<p>Specify the size of the sourced video, it may be a string of the form
+<var>width</var>x<var>height</var>, or the name of a size abbreviation.
+</p>
+<p>The following abbreviations are recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>ntsc</samp>&rsquo;</dt>
+<dd><p>720x480
+</p></dd>
+<dt> &lsquo;<samp>pal</samp>&rsquo;</dt>
+<dd><p>720x576
+</p></dd>
+<dt> &lsquo;<samp>qntsc</samp>&rsquo;</dt>
+<dd><p>352x240
+</p></dd>
+<dt> &lsquo;<samp>qpal</samp>&rsquo;</dt>
+<dd><p>352x288
+</p></dd>
+<dt> &lsquo;<samp>sntsc</samp>&rsquo;</dt>
+<dd><p>640x480
+</p></dd>
+<dt> &lsquo;<samp>spal</samp>&rsquo;</dt>
+<dd><p>768x576
+</p></dd>
+<dt> &lsquo;<samp>film</samp>&rsquo;</dt>
+<dd><p>352x240
+</p></dd>
+<dt> &lsquo;<samp>ntsc-film</samp>&rsquo;</dt>
+<dd><p>352x240
+</p></dd>
+<dt> &lsquo;<samp>sqcif</samp>&rsquo;</dt>
+<dd><p>128x96
+</p></dd>
+<dt> &lsquo;<samp>qcif</samp>&rsquo;</dt>
+<dd><p>176x144
+</p></dd>
+<dt> &lsquo;<samp>cif</samp>&rsquo;</dt>
+<dd><p>352x288
+</p></dd>
+<dt> &lsquo;<samp>4cif</samp>&rsquo;</dt>
+<dd><p>704x576
+</p></dd>
+<dt> &lsquo;<samp>16cif</samp>&rsquo;</dt>
+<dd><p>1408x1152
+</p></dd>
+<dt> &lsquo;<samp>qqvga</samp>&rsquo;</dt>
+<dd><p>160x120
+</p></dd>
+<dt> &lsquo;<samp>qvga</samp>&rsquo;</dt>
+<dd><p>320x240
+</p></dd>
+<dt> &lsquo;<samp>vga</samp>&rsquo;</dt>
+<dd><p>640x480
+</p></dd>
+<dt> &lsquo;<samp>svga</samp>&rsquo;</dt>
+<dd><p>800x600
+</p></dd>
+<dt> &lsquo;<samp>xga</samp>&rsquo;</dt>
+<dd><p>1024x768
+</p></dd>
+<dt> &lsquo;<samp>uxga</samp>&rsquo;</dt>
+<dd><p>1600x1200
+</p></dd>
+<dt> &lsquo;<samp>qxga</samp>&rsquo;</dt>
+<dd><p>2048x1536
+</p></dd>
+<dt> &lsquo;<samp>sxga</samp>&rsquo;</dt>
+<dd><p>1280x1024
+</p></dd>
+<dt> &lsquo;<samp>qsxga</samp>&rsquo;</dt>
+<dd><p>2560x2048
+</p></dd>
+<dt> &lsquo;<samp>hsxga</samp>&rsquo;</dt>
+<dd><p>5120x4096
+</p></dd>
+<dt> &lsquo;<samp>wvga</samp>&rsquo;</dt>
+<dd><p>852x480
+</p></dd>
+<dt> &lsquo;<samp>wxga</samp>&rsquo;</dt>
+<dd><p>1366x768
+</p></dd>
+<dt> &lsquo;<samp>wsxga</samp>&rsquo;</dt>
+<dd><p>1600x1024
+</p></dd>
+<dt> &lsquo;<samp>wuxga</samp>&rsquo;</dt>
+<dd><p>1920x1200
+</p></dd>
+<dt> &lsquo;<samp>woxga</samp>&rsquo;</dt>
+<dd><p>2560x1600
+</p></dd>
+<dt> &lsquo;<samp>wqsxga</samp>&rsquo;</dt>
+<dd><p>3200x2048
+</p></dd>
+<dt> &lsquo;<samp>wquxga</samp>&rsquo;</dt>
+<dd><p>3840x2400
+</p></dd>
+<dt> &lsquo;<samp>whsxga</samp>&rsquo;</dt>
+<dd><p>6400x4096
+</p></dd>
+<dt> &lsquo;<samp>whuxga</samp>&rsquo;</dt>
+<dd><p>7680x4800
+</p></dd>
+<dt> &lsquo;<samp>cga</samp>&rsquo;</dt>
+<dd><p>320x200
+</p></dd>
+<dt> &lsquo;<samp>ega</samp>&rsquo;</dt>
+<dd><p>640x350
+</p></dd>
+<dt> &lsquo;<samp>hd480</samp>&rsquo;</dt>
+<dd><p>852x480
+</p></dd>
+<dt> &lsquo;<samp>hd720</samp>&rsquo;</dt>
+<dd><p>1280x720
+</p></dd>
+<dt> &lsquo;<samp>hd1080</samp>&rsquo;</dt>
+<dd><p>1920x1080
+</p></dd>
+<dt> &lsquo;<samp>2k</samp>&rsquo;</dt>
+<dd><p>2048x1080
+</p></dd>
+<dt> &lsquo;<samp>2kflat</samp>&rsquo;</dt>
+<dd><p>1998x1080
+</p></dd>
+<dt> &lsquo;<samp>2kscope</samp>&rsquo;</dt>
+<dd><p>2048x858
+</p></dd>
+<dt> &lsquo;<samp>4k</samp>&rsquo;</dt>
+<dd><p>4096x2160
+</p></dd>
+<dt> &lsquo;<samp>4kflat</samp>&rsquo;</dt>
+<dd><p>3996x2160
+</p></dd>
+<dt> &lsquo;<samp>4kscope</samp>&rsquo;</dt>
+<dd><p>4096x1716
+</p></dd>
+<dt> &lsquo;<samp>nhd</samp>&rsquo;</dt>
+<dd><p>640x360
+</p></dd>
+<dt> &lsquo;<samp>hqvga</samp>&rsquo;</dt>
+<dd><p>240x160
+</p></dd>
+<dt> &lsquo;<samp>wqvga</samp>&rsquo;</dt>
+<dd><p>400x240
+</p></dd>
+<dt> &lsquo;<samp>fwqvga</samp>&rsquo;</dt>
+<dd><p>432x240
+</p></dd>
+<dt> &lsquo;<samp>hvga</samp>&rsquo;</dt>
+<dd><p>480x320
+</p></dd>
+<dt> &lsquo;<samp>qhd</samp>&rsquo;</dt>
+<dd><p>960x540
+</p></dd>
+</dl>
+
+<p><a name="video-rate-syntax"></a>
+</p><a name="Video-rate"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-Video-rate">6.5 Video rate</a></h2>
+
+<p>Specify the frame rate of a video, expressed as the number of frames
+generated per second. It has to be a string in the format
+<var>frame_rate_num</var>/<var>frame_rate_den</var>, an integer number, a float
+number or a valid video frame rate abbreviation.
+</p>
+<p>The following abbreviations are recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>ntsc</samp>&rsquo;</dt>
+<dd><p>30000/1001
+</p></dd>
+<dt> &lsquo;<samp>pal</samp>&rsquo;</dt>
+<dd><p>25/1
+</p></dd>
+<dt> &lsquo;<samp>qntsc</samp>&rsquo;</dt>
+<dd><p>30000/1001
+</p></dd>
+<dt> &lsquo;<samp>qpal</samp>&rsquo;</dt>
+<dd><p>25/1
+</p></dd>
+<dt> &lsquo;<samp>sntsc</samp>&rsquo;</dt>
+<dd><p>30000/1001
+</p></dd>
+<dt> &lsquo;<samp>spal</samp>&rsquo;</dt>
+<dd><p>25/1
+</p></dd>
+<dt> &lsquo;<samp>film</samp>&rsquo;</dt>
+<dd><p>24/1
+</p></dd>
+<dt> &lsquo;<samp>ntsc-film</samp>&rsquo;</dt>
+<dd><p>24000/1001
+</p></dd>
+</dl>
+
+<p><a name="ratio-syntax"></a>
+</p><a name="Ratio"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-Ratio">6.6 Ratio</a></h2>
+
+<p>A ratio can be expressed as an expression, or in the form
+<var>numerator</var>:<var>denominator</var>.
+</p>
+<p>Note that a ratio with infinite (1/0) or negative value is
+considered valid, so you should check on the returned value if you
+want to exclude those values.
+</p>
+<p>The undefined value can be expressed using the &quot;0:0&quot; string.
+</p>
+<p><a name="color-syntax"></a>
+</p><a name="Color"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-Color">6.7 Color</a></h2>
+
+<p>It can be the name of a color as defined below (case insensitive match) or a
+<code>[0x|#]RRGGBB[AA]</code> sequence, possibly followed by @ and a string
+representing the alpha component.
+</p>
+<p>The alpha component may be a string composed by &quot;0x&quot; followed by an
+hexadecimal number or a decimal number between 0.0 and 1.0, which
+represents the opacity value (&lsquo;<samp>0x00</samp>&rsquo; or &lsquo;<samp>0.0</samp>&rsquo; means completely
+transparent, &lsquo;<samp>0xff</samp>&rsquo; or &lsquo;<samp>1.0</samp>&rsquo; completely opaque). If the alpha
+component is not specified then &lsquo;<samp>0xff</samp>&rsquo; is assumed.
+</p>
+<p>The string &lsquo;<samp>random</samp>&rsquo; will result in a random color.
+</p>
+<p>The following names of colors are recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>AliceBlue</samp>&rsquo;</dt>
+<dd><p>0xF0F8FF
+</p></dd>
+<dt> &lsquo;<samp>AntiqueWhite</samp>&rsquo;</dt>
+<dd><p>0xFAEBD7
+</p></dd>
+<dt> &lsquo;<samp>Aqua</samp>&rsquo;</dt>
+<dd><p>0x00FFFF
+</p></dd>
+<dt> &lsquo;<samp>Aquamarine</samp>&rsquo;</dt>
+<dd><p>0x7FFFD4
+</p></dd>
+<dt> &lsquo;<samp>Azure</samp>&rsquo;</dt>
+<dd><p>0xF0FFFF
+</p></dd>
+<dt> &lsquo;<samp>Beige</samp>&rsquo;</dt>
+<dd><p>0xF5F5DC
+</p></dd>
+<dt> &lsquo;<samp>Bisque</samp>&rsquo;</dt>
+<dd><p>0xFFE4C4
+</p></dd>
+<dt> &lsquo;<samp>Black</samp>&rsquo;</dt>
+<dd><p>0x000000
+</p></dd>
+<dt> &lsquo;<samp>BlanchedAlmond</samp>&rsquo;</dt>
+<dd><p>0xFFEBCD
+</p></dd>
+<dt> &lsquo;<samp>Blue</samp>&rsquo;</dt>
+<dd><p>0x0000FF
+</p></dd>
+<dt> &lsquo;<samp>BlueViolet</samp>&rsquo;</dt>
+<dd><p>0x8A2BE2
+</p></dd>
+<dt> &lsquo;<samp>Brown</samp>&rsquo;</dt>
+<dd><p>0xA52A2A
+</p></dd>
+<dt> &lsquo;<samp>BurlyWood</samp>&rsquo;</dt>
+<dd><p>0xDEB887
+</p></dd>
+<dt> &lsquo;<samp>CadetBlue</samp>&rsquo;</dt>
+<dd><p>0x5F9EA0
+</p></dd>
+<dt> &lsquo;<samp>Chartreuse</samp>&rsquo;</dt>
+<dd><p>0x7FFF00
+</p></dd>
+<dt> &lsquo;<samp>Chocolate</samp>&rsquo;</dt>
+<dd><p>0xD2691E
+</p></dd>
+<dt> &lsquo;<samp>Coral</samp>&rsquo;</dt>
+<dd><p>0xFF7F50
+</p></dd>
+<dt> &lsquo;<samp>CornflowerBlue</samp>&rsquo;</dt>
+<dd><p>0x6495ED
+</p></dd>
+<dt> &lsquo;<samp>Cornsilk</samp>&rsquo;</dt>
+<dd><p>0xFFF8DC
+</p></dd>
+<dt> &lsquo;<samp>Crimson</samp>&rsquo;</dt>
+<dd><p>0xDC143C
+</p></dd>
+<dt> &lsquo;<samp>Cyan</samp>&rsquo;</dt>
+<dd><p>0x00FFFF
+</p></dd>
+<dt> &lsquo;<samp>DarkBlue</samp>&rsquo;</dt>
+<dd><p>0x00008B
+</p></dd>
+<dt> &lsquo;<samp>DarkCyan</samp>&rsquo;</dt>
+<dd><p>0x008B8B
+</p></dd>
+<dt> &lsquo;<samp>DarkGoldenRod</samp>&rsquo;</dt>
+<dd><p>0xB8860B
+</p></dd>
+<dt> &lsquo;<samp>DarkGray</samp>&rsquo;</dt>
+<dd><p>0xA9A9A9
+</p></dd>
+<dt> &lsquo;<samp>DarkGreen</samp>&rsquo;</dt>
+<dd><p>0x006400
+</p></dd>
+<dt> &lsquo;<samp>DarkKhaki</samp>&rsquo;</dt>
+<dd><p>0xBDB76B
+</p></dd>
+<dt> &lsquo;<samp>DarkMagenta</samp>&rsquo;</dt>
+<dd><p>0x8B008B
+</p></dd>
+<dt> &lsquo;<samp>DarkOliveGreen</samp>&rsquo;</dt>
+<dd><p>0x556B2F
+</p></dd>
+<dt> &lsquo;<samp>Darkorange</samp>&rsquo;</dt>
+<dd><p>0xFF8C00
+</p></dd>
+<dt> &lsquo;<samp>DarkOrchid</samp>&rsquo;</dt>
+<dd><p>0x9932CC
+</p></dd>
+<dt> &lsquo;<samp>DarkRed</samp>&rsquo;</dt>
+<dd><p>0x8B0000
+</p></dd>
+<dt> &lsquo;<samp>DarkSalmon</samp>&rsquo;</dt>
+<dd><p>0xE9967A
+</p></dd>
+<dt> &lsquo;<samp>DarkSeaGreen</samp>&rsquo;</dt>
+<dd><p>0x8FBC8F
+</p></dd>
+<dt> &lsquo;<samp>DarkSlateBlue</samp>&rsquo;</dt>
+<dd><p>0x483D8B
+</p></dd>
+<dt> &lsquo;<samp>DarkSlateGray</samp>&rsquo;</dt>
+<dd><p>0x2F4F4F
+</p></dd>
+<dt> &lsquo;<samp>DarkTurquoise</samp>&rsquo;</dt>
+<dd><p>0x00CED1
+</p></dd>
+<dt> &lsquo;<samp>DarkViolet</samp>&rsquo;</dt>
+<dd><p>0x9400D3
+</p></dd>
+<dt> &lsquo;<samp>DeepPink</samp>&rsquo;</dt>
+<dd><p>0xFF1493
+</p></dd>
+<dt> &lsquo;<samp>DeepSkyBlue</samp>&rsquo;</dt>
+<dd><p>0x00BFFF
+</p></dd>
+<dt> &lsquo;<samp>DimGray</samp>&rsquo;</dt>
+<dd><p>0x696969
+</p></dd>
+<dt> &lsquo;<samp>DodgerBlue</samp>&rsquo;</dt>
+<dd><p>0x1E90FF
+</p></dd>
+<dt> &lsquo;<samp>FireBrick</samp>&rsquo;</dt>
+<dd><p>0xB22222
+</p></dd>
+<dt> &lsquo;<samp>FloralWhite</samp>&rsquo;</dt>
+<dd><p>0xFFFAF0
+</p></dd>
+<dt> &lsquo;<samp>ForestGreen</samp>&rsquo;</dt>
+<dd><p>0x228B22
+</p></dd>
+<dt> &lsquo;<samp>Fuchsia</samp>&rsquo;</dt>
+<dd><p>0xFF00FF
+</p></dd>
+<dt> &lsquo;<samp>Gainsboro</samp>&rsquo;</dt>
+<dd><p>0xDCDCDC
+</p></dd>
+<dt> &lsquo;<samp>GhostWhite</samp>&rsquo;</dt>
+<dd><p>0xF8F8FF
+</p></dd>
+<dt> &lsquo;<samp>Gold</samp>&rsquo;</dt>
+<dd><p>0xFFD700
+</p></dd>
+<dt> &lsquo;<samp>GoldenRod</samp>&rsquo;</dt>
+<dd><p>0xDAA520
+</p></dd>
+<dt> &lsquo;<samp>Gray</samp>&rsquo;</dt>
+<dd><p>0x808080
+</p></dd>
+<dt> &lsquo;<samp>Green</samp>&rsquo;</dt>
+<dd><p>0x008000
+</p></dd>
+<dt> &lsquo;<samp>GreenYellow</samp>&rsquo;</dt>
+<dd><p>0xADFF2F
+</p></dd>
+<dt> &lsquo;<samp>HoneyDew</samp>&rsquo;</dt>
+<dd><p>0xF0FFF0
+</p></dd>
+<dt> &lsquo;<samp>HotPink</samp>&rsquo;</dt>
+<dd><p>0xFF69B4
+</p></dd>
+<dt> &lsquo;<samp>IndianRed</samp>&rsquo;</dt>
+<dd><p>0xCD5C5C
+</p></dd>
+<dt> &lsquo;<samp>Indigo</samp>&rsquo;</dt>
+<dd><p>0x4B0082
+</p></dd>
+<dt> &lsquo;<samp>Ivory</samp>&rsquo;</dt>
+<dd><p>0xFFFFF0
+</p></dd>
+<dt> &lsquo;<samp>Khaki</samp>&rsquo;</dt>
+<dd><p>0xF0E68C
+</p></dd>
+<dt> &lsquo;<samp>Lavender</samp>&rsquo;</dt>
+<dd><p>0xE6E6FA
+</p></dd>
+<dt> &lsquo;<samp>LavenderBlush</samp>&rsquo;</dt>
+<dd><p>0xFFF0F5
+</p></dd>
+<dt> &lsquo;<samp>LawnGreen</samp>&rsquo;</dt>
+<dd><p>0x7CFC00
+</p></dd>
+<dt> &lsquo;<samp>LemonChiffon</samp>&rsquo;</dt>
+<dd><p>0xFFFACD
+</p></dd>
+<dt> &lsquo;<samp>LightBlue</samp>&rsquo;</dt>
+<dd><p>0xADD8E6
+</p></dd>
+<dt> &lsquo;<samp>LightCoral</samp>&rsquo;</dt>
+<dd><p>0xF08080
+</p></dd>
+<dt> &lsquo;<samp>LightCyan</samp>&rsquo;</dt>
+<dd><p>0xE0FFFF
+</p></dd>
+<dt> &lsquo;<samp>LightGoldenRodYellow</samp>&rsquo;</dt>
+<dd><p>0xFAFAD2
+</p></dd>
+<dt> &lsquo;<samp>LightGreen</samp>&rsquo;</dt>
+<dd><p>0x90EE90
+</p></dd>
+<dt> &lsquo;<samp>LightGrey</samp>&rsquo;</dt>
+<dd><p>0xD3D3D3
+</p></dd>
+<dt> &lsquo;<samp>LightPink</samp>&rsquo;</dt>
+<dd><p>0xFFB6C1
+</p></dd>
+<dt> &lsquo;<samp>LightSalmon</samp>&rsquo;</dt>
+<dd><p>0xFFA07A
+</p></dd>
+<dt> &lsquo;<samp>LightSeaGreen</samp>&rsquo;</dt>
+<dd><p>0x20B2AA
+</p></dd>
+<dt> &lsquo;<samp>LightSkyBlue</samp>&rsquo;</dt>
+<dd><p>0x87CEFA
+</p></dd>
+<dt> &lsquo;<samp>LightSlateGray</samp>&rsquo;</dt>
+<dd><p>0x778899
+</p></dd>
+<dt> &lsquo;<samp>LightSteelBlue</samp>&rsquo;</dt>
+<dd><p>0xB0C4DE
+</p></dd>
+<dt> &lsquo;<samp>LightYellow</samp>&rsquo;</dt>
+<dd><p>0xFFFFE0
+</p></dd>
+<dt> &lsquo;<samp>Lime</samp>&rsquo;</dt>
+<dd><p>0x00FF00
+</p></dd>
+<dt> &lsquo;<samp>LimeGreen</samp>&rsquo;</dt>
+<dd><p>0x32CD32
+</p></dd>
+<dt> &lsquo;<samp>Linen</samp>&rsquo;</dt>
+<dd><p>0xFAF0E6
+</p></dd>
+<dt> &lsquo;<samp>Magenta</samp>&rsquo;</dt>
+<dd><p>0xFF00FF
+</p></dd>
+<dt> &lsquo;<samp>Maroon</samp>&rsquo;</dt>
+<dd><p>0x800000
+</p></dd>
+<dt> &lsquo;<samp>MediumAquaMarine</samp>&rsquo;</dt>
+<dd><p>0x66CDAA
+</p></dd>
+<dt> &lsquo;<samp>MediumBlue</samp>&rsquo;</dt>
+<dd><p>0x0000CD
+</p></dd>
+<dt> &lsquo;<samp>MediumOrchid</samp>&rsquo;</dt>
+<dd><p>0xBA55D3
+</p></dd>
+<dt> &lsquo;<samp>MediumPurple</samp>&rsquo;</dt>
+<dd><p>0x9370D8
+</p></dd>
+<dt> &lsquo;<samp>MediumSeaGreen</samp>&rsquo;</dt>
+<dd><p>0x3CB371
+</p></dd>
+<dt> &lsquo;<samp>MediumSlateBlue</samp>&rsquo;</dt>
+<dd><p>0x7B68EE
+</p></dd>
+<dt> &lsquo;<samp>MediumSpringGreen</samp>&rsquo;</dt>
+<dd><p>0x00FA9A
+</p></dd>
+<dt> &lsquo;<samp>MediumTurquoise</samp>&rsquo;</dt>
+<dd><p>0x48D1CC
+</p></dd>
+<dt> &lsquo;<samp>MediumVioletRed</samp>&rsquo;</dt>
+<dd><p>0xC71585
+</p></dd>
+<dt> &lsquo;<samp>MidnightBlue</samp>&rsquo;</dt>
+<dd><p>0x191970
+</p></dd>
+<dt> &lsquo;<samp>MintCream</samp>&rsquo;</dt>
+<dd><p>0xF5FFFA
+</p></dd>
+<dt> &lsquo;<samp>MistyRose</samp>&rsquo;</dt>
+<dd><p>0xFFE4E1
+</p></dd>
+<dt> &lsquo;<samp>Moccasin</samp>&rsquo;</dt>
+<dd><p>0xFFE4B5
+</p></dd>
+<dt> &lsquo;<samp>NavajoWhite</samp>&rsquo;</dt>
+<dd><p>0xFFDEAD
+</p></dd>
+<dt> &lsquo;<samp>Navy</samp>&rsquo;</dt>
+<dd><p>0x000080
+</p></dd>
+<dt> &lsquo;<samp>OldLace</samp>&rsquo;</dt>
+<dd><p>0xFDF5E6
+</p></dd>
+<dt> &lsquo;<samp>Olive</samp>&rsquo;</dt>
+<dd><p>0x808000
+</p></dd>
+<dt> &lsquo;<samp>OliveDrab</samp>&rsquo;</dt>
+<dd><p>0x6B8E23
+</p></dd>
+<dt> &lsquo;<samp>Orange</samp>&rsquo;</dt>
+<dd><p>0xFFA500
+</p></dd>
+<dt> &lsquo;<samp>OrangeRed</samp>&rsquo;</dt>
+<dd><p>0xFF4500
+</p></dd>
+<dt> &lsquo;<samp>Orchid</samp>&rsquo;</dt>
+<dd><p>0xDA70D6
+</p></dd>
+<dt> &lsquo;<samp>PaleGoldenRod</samp>&rsquo;</dt>
+<dd><p>0xEEE8AA
+</p></dd>
+<dt> &lsquo;<samp>PaleGreen</samp>&rsquo;</dt>
+<dd><p>0x98FB98
+</p></dd>
+<dt> &lsquo;<samp>PaleTurquoise</samp>&rsquo;</dt>
+<dd><p>0xAFEEEE
+</p></dd>
+<dt> &lsquo;<samp>PaleVioletRed</samp>&rsquo;</dt>
+<dd><p>0xD87093
+</p></dd>
+<dt> &lsquo;<samp>PapayaWhip</samp>&rsquo;</dt>
+<dd><p>0xFFEFD5
+</p></dd>
+<dt> &lsquo;<samp>PeachPuff</samp>&rsquo;</dt>
+<dd><p>0xFFDAB9
+</p></dd>
+<dt> &lsquo;<samp>Peru</samp>&rsquo;</dt>
+<dd><p>0xCD853F
+</p></dd>
+<dt> &lsquo;<samp>Pink</samp>&rsquo;</dt>
+<dd><p>0xFFC0CB
+</p></dd>
+<dt> &lsquo;<samp>Plum</samp>&rsquo;</dt>
+<dd><p>0xDDA0DD
+</p></dd>
+<dt> &lsquo;<samp>PowderBlue</samp>&rsquo;</dt>
+<dd><p>0xB0E0E6
+</p></dd>
+<dt> &lsquo;<samp>Purple</samp>&rsquo;</dt>
+<dd><p>0x800080
+</p></dd>
+<dt> &lsquo;<samp>Red</samp>&rsquo;</dt>
+<dd><p>0xFF0000
+</p></dd>
+<dt> &lsquo;<samp>RosyBrown</samp>&rsquo;</dt>
+<dd><p>0xBC8F8F
+</p></dd>
+<dt> &lsquo;<samp>RoyalBlue</samp>&rsquo;</dt>
+<dd><p>0x4169E1
+</p></dd>
+<dt> &lsquo;<samp>SaddleBrown</samp>&rsquo;</dt>
+<dd><p>0x8B4513
+</p></dd>
+<dt> &lsquo;<samp>Salmon</samp>&rsquo;</dt>
+<dd><p>0xFA8072
+</p></dd>
+<dt> &lsquo;<samp>SandyBrown</samp>&rsquo;</dt>
+<dd><p>0xF4A460
+</p></dd>
+<dt> &lsquo;<samp>SeaGreen</samp>&rsquo;</dt>
+<dd><p>0x2E8B57
+</p></dd>
+<dt> &lsquo;<samp>SeaShell</samp>&rsquo;</dt>
+<dd><p>0xFFF5EE
+</p></dd>
+<dt> &lsquo;<samp>Sienna</samp>&rsquo;</dt>
+<dd><p>0xA0522D
+</p></dd>
+<dt> &lsquo;<samp>Silver</samp>&rsquo;</dt>
+<dd><p>0xC0C0C0
+</p></dd>
+<dt> &lsquo;<samp>SkyBlue</samp>&rsquo;</dt>
+<dd><p>0x87CEEB
+</p></dd>
+<dt> &lsquo;<samp>SlateBlue</samp>&rsquo;</dt>
+<dd><p>0x6A5ACD
+</p></dd>
+<dt> &lsquo;<samp>SlateGray</samp>&rsquo;</dt>
+<dd><p>0x708090
+</p></dd>
+<dt> &lsquo;<samp>Snow</samp>&rsquo;</dt>
+<dd><p>0xFFFAFA
+</p></dd>
+<dt> &lsquo;<samp>SpringGreen</samp>&rsquo;</dt>
+<dd><p>0x00FF7F
+</p></dd>
+<dt> &lsquo;<samp>SteelBlue</samp>&rsquo;</dt>
+<dd><p>0x4682B4
+</p></dd>
+<dt> &lsquo;<samp>Tan</samp>&rsquo;</dt>
+<dd><p>0xD2B48C
+</p></dd>
+<dt> &lsquo;<samp>Teal</samp>&rsquo;</dt>
+<dd><p>0x008080
+</p></dd>
+<dt> &lsquo;<samp>Thistle</samp>&rsquo;</dt>
+<dd><p>0xD8BFD8
+</p></dd>
+<dt> &lsquo;<samp>Tomato</samp>&rsquo;</dt>
+<dd><p>0xFF6347
+</p></dd>
+<dt> &lsquo;<samp>Turquoise</samp>&rsquo;</dt>
+<dd><p>0x40E0D0
+</p></dd>
+<dt> &lsquo;<samp>Violet</samp>&rsquo;</dt>
+<dd><p>0xEE82EE
+</p></dd>
+<dt> &lsquo;<samp>Wheat</samp>&rsquo;</dt>
+<dd><p>0xF5DEB3
+</p></dd>
+<dt> &lsquo;<samp>White</samp>&rsquo;</dt>
+<dd><p>0xFFFFFF
+</p></dd>
+<dt> &lsquo;<samp>WhiteSmoke</samp>&rsquo;</dt>
+<dd><p>0xF5F5F5
+</p></dd>
+<dt> &lsquo;<samp>Yellow</samp>&rsquo;</dt>
+<dd><p>0xFFFF00
+</p></dd>
+<dt> &lsquo;<samp>YellowGreen</samp>&rsquo;</dt>
+<dd><p>0x9ACD32
+</p></dd>
+</dl>
+
+<p><a name="channel-layout-syntax"></a>
+</p><a name="Channel-Layout"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-Channel-Layout">6.8 Channel Layout</a></h2>
+
+<p>A channel layout specifies the spatial disposition of the channels in
+a multi-channel audio stream. To specify a channel layout, FFmpeg
+makes use of a special syntax.
+</p>
+<p>Individual channels are identified by an id, as given by the table
+below:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>FL</samp>&rsquo;</dt>
+<dd><p>front left
+</p></dd>
+<dt> &lsquo;<samp>FR</samp>&rsquo;</dt>
+<dd><p>front right
+</p></dd>
+<dt> &lsquo;<samp>FC</samp>&rsquo;</dt>
+<dd><p>front center
+</p></dd>
+<dt> &lsquo;<samp>LFE</samp>&rsquo;</dt>
+<dd><p>low frequency
+</p></dd>
+<dt> &lsquo;<samp>BL</samp>&rsquo;</dt>
+<dd><p>back left
+</p></dd>
+<dt> &lsquo;<samp>BR</samp>&rsquo;</dt>
+<dd><p>back right
+</p></dd>
+<dt> &lsquo;<samp>FLC</samp>&rsquo;</dt>
+<dd><p>front left-of-center
+</p></dd>
+<dt> &lsquo;<samp>FRC</samp>&rsquo;</dt>
+<dd><p>front right-of-center
+</p></dd>
+<dt> &lsquo;<samp>BC</samp>&rsquo;</dt>
+<dd><p>back center
+</p></dd>
+<dt> &lsquo;<samp>SL</samp>&rsquo;</dt>
+<dd><p>side left
+</p></dd>
+<dt> &lsquo;<samp>SR</samp>&rsquo;</dt>
+<dd><p>side right
+</p></dd>
+<dt> &lsquo;<samp>TC</samp>&rsquo;</dt>
+<dd><p>top center
+</p></dd>
+<dt> &lsquo;<samp>TFL</samp>&rsquo;</dt>
+<dd><p>top front left
+</p></dd>
+<dt> &lsquo;<samp>TFC</samp>&rsquo;</dt>
+<dd><p>top front center
+</p></dd>
+<dt> &lsquo;<samp>TFR</samp>&rsquo;</dt>
+<dd><p>top front right
+</p></dd>
+<dt> &lsquo;<samp>TBL</samp>&rsquo;</dt>
+<dd><p>top back left
+</p></dd>
+<dt> &lsquo;<samp>TBC</samp>&rsquo;</dt>
+<dd><p>top back center
+</p></dd>
+<dt> &lsquo;<samp>TBR</samp>&rsquo;</dt>
+<dd><p>top back right
+</p></dd>
+<dt> &lsquo;<samp>DL</samp>&rsquo;</dt>
+<dd><p>downmix left
+</p></dd>
+<dt> &lsquo;<samp>DR</samp>&rsquo;</dt>
+<dd><p>downmix right
+</p></dd>
+<dt> &lsquo;<samp>WL</samp>&rsquo;</dt>
+<dd><p>wide left
+</p></dd>
+<dt> &lsquo;<samp>WR</samp>&rsquo;</dt>
+<dd><p>wide right
+</p></dd>
+<dt> &lsquo;<samp>SDL</samp>&rsquo;</dt>
+<dd><p>surround direct left
+</p></dd>
+<dt> &lsquo;<samp>SDR</samp>&rsquo;</dt>
+<dd><p>surround direct right
+</p></dd>
+<dt> &lsquo;<samp>LFE2</samp>&rsquo;</dt>
+<dd><p>low frequency 2
+</p></dd>
+</dl>
+
+<p>Standard channel layout compositions can be specified by using the
+following identifiers:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>mono</samp>&rsquo;</dt>
+<dd><p>FC
+</p></dd>
+<dt> &lsquo;<samp>stereo</samp>&rsquo;</dt>
+<dd><p>FL+FR
+</p></dd>
+<dt> &lsquo;<samp>2.1</samp>&rsquo;</dt>
+<dd><p>FL+FR+LFE
+</p></dd>
+<dt> &lsquo;<samp>3.0</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC
+</p></dd>
+<dt> &lsquo;<samp>3.0(back)</samp>&rsquo;</dt>
+<dd><p>FL+FR+BC
+</p></dd>
+<dt> &lsquo;<samp>4.0</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+BC
+</p></dd>
+<dt> &lsquo;<samp>quad</samp>&rsquo;</dt>
+<dd><p>FL+FR+BL+BR
+</p></dd>
+<dt> &lsquo;<samp>quad(side)</samp>&rsquo;</dt>
+<dd><p>FL+FR+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>3.1</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE
+</p></dd>
+<dt> &lsquo;<samp>5.0</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+BL+BR
+</p></dd>
+<dt> &lsquo;<samp>5.0(side)</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>4.1</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE+BC
+</p></dd>
+<dt> &lsquo;<samp>5.1</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE+BL+BR
+</p></dd>
+<dt> &lsquo;<samp>5.1(side)</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>6.0</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+BC+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>6.0(front)</samp>&rsquo;</dt>
+<dd><p>FL+FR+FLC+FRC+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>hexagonal</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+BL+BR+BC
+</p></dd>
+<dt> &lsquo;<samp>6.1</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE+BC+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>6.1</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE+BL+BR+BC
+</p></dd>
+<dt> &lsquo;<samp>6.1(front)</samp>&rsquo;</dt>
+<dd><p>FL+FR+LFE+FLC+FRC+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>7.0</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+BL+BR+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>7.0(front)</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+FLC+FRC+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>7.1</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE+BL+BR+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>7.1(wide)</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE+BL+BR+FLC+FRC
+</p></dd>
+<dt> &lsquo;<samp>7.1(wide-side)</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+LFE+FLC+FRC+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>octagonal</samp>&rsquo;</dt>
+<dd><p>FL+FR+FC+BL+BR+BC+SL+SR
+</p></dd>
+<dt> &lsquo;<samp>downmix</samp>&rsquo;</dt>
+<dd><p>DL+DR
+</p></dd>
+</dl>
+
+<p>A custom channel layout can be specified as a sequence of terms, separated by
+&rsquo;+&rsquo; or &rsquo;|&rsquo;. Each term can be:
+</p><ul>
+<li>
+the name of a standard channel layout (e.g. &lsquo;<samp>mono</samp>&rsquo;,
+&lsquo;<samp>stereo</samp>&rsquo;, &lsquo;<samp>4.0</samp>&rsquo;, &lsquo;<samp>quad</samp>&rsquo;, &lsquo;<samp>5.0</samp>&rsquo;, etc.)
+
+</li><li>
+the name of a single channel (e.g. &lsquo;<samp>FL</samp>&rsquo;, &lsquo;<samp>FR</samp>&rsquo;, &lsquo;<samp>FC</samp>&rsquo;, &lsquo;<samp>LFE</samp>&rsquo;, etc.)
+
+</li><li>
+a number of channels, in decimal, optionally followed by &rsquo;c&rsquo;, yielding
+the default channel layout for that number of channels (see the
+function <code>av_get_default_channel_layout</code>)
+
+</li><li>
+a channel layout mask, in hexadecimal starting with &quot;0x&quot; (see the
+<code>AV_CH_*</code> macros in &lsquo;<tt>libavutil/channel_layout.h</tt>&rsquo;.
+</li></ul>
+
+<p>Starting from libavutil version 53 the trailing character &quot;c&quot; to
+specify a number of channels will be required, while a channel layout
+mask could also be specified as a decimal number (if and only if not
+followed by &quot;c&quot;).
+</p>
+<p>See also the function <code>av_get_channel_layout</code> defined in
+&lsquo;<tt>libavutil/channel_layout.h</tt>&rsquo;.
+</p>
+<a name="Expression-Evaluation"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Expression-Evaluation">7. Expression Evaluation</a></h1>
+
+<p>When evaluating an arithmetic expression, FFmpeg uses an internal
+formula evaluator, implemented through the &lsquo;<tt>libavutil/eval.h</tt>&rsquo;
+interface.
+</p>
+<p>An expression may contain unary, binary operators, constants, and
+functions.
+</p>
+<p>Two expressions <var>expr1</var> and <var>expr2</var> can be combined to form
+another expression &quot;<var>expr1</var>;<var>expr2</var>&quot;.
+<var>expr1</var> and <var>expr2</var> are evaluated in turn, and the new
+expression evaluates to the value of <var>expr2</var>.
+</p>
+<p>The following binary operators are available: <code>+</code>, <code>-</code>,
+<code>*</code>, <code>/</code>, <code>^</code>.
+</p>
+<p>The following unary operators are available: <code>+</code>, <code>-</code>.
+</p>
+<p>The following functions are available:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>abs(x)</samp>&rsquo;</dt>
+<dd><p>Compute absolute value of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>acos(x)</samp>&rsquo;</dt>
+<dd><p>Compute arccosine of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>asin(x)</samp>&rsquo;</dt>
+<dd><p>Compute arcsine of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>atan(x)</samp>&rsquo;</dt>
+<dd><p>Compute arctangent of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>between(x, min, max)</samp>&rsquo;</dt>
+<dd><p>Return 1 if <var>x</var> is greater than or equal to <var>min</var> and lesser than or
+equal to <var>max</var>, 0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>bitand(x, y)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bitor(x, y)</samp>&rsquo;</dt>
+<dd><p>Compute bitwise and/or operation on <var>x</var> and <var>y</var>.
+</p>
+<p>The results of the evaluation of <var>x</var> and <var>y</var> are converted to
+integers before executing the bitwise operation.
+</p>
+<p>Note that both the conversion to integer and the conversion back to
+floating point can lose precision. Beware of unexpected results for
+large numbers (usually 2^53 and larger).
+</p>
+</dd>
+<dt> &lsquo;<samp>ceil(expr)</samp>&rsquo;</dt>
+<dd><p>Round the value of expression <var>expr</var> upwards to the nearest
+integer. For example, &quot;ceil(1.5)&quot; is &quot;2.0&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>cos(x)</samp>&rsquo;</dt>
+<dd><p>Compute cosine of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>cosh(x)</samp>&rsquo;</dt>
+<dd><p>Compute hyperbolic cosine of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>eq(x, y)</samp>&rsquo;</dt>
+<dd><p>Return 1 if <var>x</var> and <var>y</var> are equivalent, 0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>exp(x)</samp>&rsquo;</dt>
+<dd><p>Compute exponential of <var>x</var> (with base <code>e</code>, the Euler&rsquo;s number).
+</p>
+</dd>
+<dt> &lsquo;<samp>floor(expr)</samp>&rsquo;</dt>
+<dd><p>Round the value of expression <var>expr</var> downwards to the nearest
+integer. For example, &quot;floor(-1.5)&quot; is &quot;-2.0&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>gauss(x)</samp>&rsquo;</dt>
+<dd><p>Compute Gauss function of <var>x</var>, corresponding to
+<code>exp(-x*x/2) / sqrt(2*PI)</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>gcd(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the greatest common divisor of <var>x</var> and <var>y</var>. If both <var>x</var> and
+<var>y</var> are 0 or either or both are less than zero then behavior is undefined.
+</p>
+</dd>
+<dt> &lsquo;<samp>gt(x, y)</samp>&rsquo;</dt>
+<dd><p>Return 1 if <var>x</var> is greater than <var>y</var>, 0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>gte(x, y)</samp>&rsquo;</dt>
+<dd><p>Return 1 if <var>x</var> is greater than or equal to <var>y</var>, 0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>hypot(x, y)</samp>&rsquo;</dt>
+<dd><p>This function is similar to the C function with the same name; it returns
+&quot;sqrt(<var>x</var>*<var>x</var> + <var>y</var>*<var>y</var>)&quot;, the length of the hypotenuse of a
+right triangle with sides of length <var>x</var> and <var>y</var>, or the distance of the
+point (<var>x</var>, <var>y</var>) from the origin.
+</p>
+</dd>
+<dt> &lsquo;<samp>if(x, y)</samp>&rsquo;</dt>
+<dd><p>Evaluate <var>x</var>, and if the result is non-zero return the result of
+the evaluation of <var>y</var>, return 0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>if(x, y, z)</samp>&rsquo;</dt>
+<dd><p>Evaluate <var>x</var>, and if the result is non-zero return the evaluation
+result of <var>y</var>, otherwise the evaluation result of <var>z</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>ifnot(x, y)</samp>&rsquo;</dt>
+<dd><p>Evaluate <var>x</var>, and if the result is zero return the result of the
+evaluation of <var>y</var>, return 0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>ifnot(x, y, z)</samp>&rsquo;</dt>
+<dd><p>Evaluate <var>x</var>, and if the result is zero return the evaluation
+result of <var>y</var>, otherwise the evaluation result of <var>z</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>isinf(x)</samp>&rsquo;</dt>
+<dd><p>Return 1.0 if <var>x</var> is +/-INFINITY, 0.0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>isnan(x)</samp>&rsquo;</dt>
+<dd><p>Return 1.0 if <var>x</var> is NAN, 0.0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>ld(var)</samp>&rsquo;</dt>
+<dd><p>Allow to load the value of the internal variable with number
+<var>var</var>, which was previously stored with st(<var>var</var>, <var>expr</var>).
+The function returns the loaded value.
+</p>
+</dd>
+<dt> &lsquo;<samp>log(x)</samp>&rsquo;</dt>
+<dd><p>Compute natural logarithm of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>lt(x, y)</samp>&rsquo;</dt>
+<dd><p>Return 1 if <var>x</var> is lesser than <var>y</var>, 0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>lte(x, y)</samp>&rsquo;</dt>
+<dd><p>Return 1 if <var>x</var> is lesser than or equal to <var>y</var>, 0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>max(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the maximum between <var>x</var> and <var>y</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>min(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the maximum between <var>x</var> and <var>y</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>mod(x, y)</samp>&rsquo;</dt>
+<dd><p>Compute the remainder of division of <var>x</var> by <var>y</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>not(expr)</samp>&rsquo;</dt>
+<dd><p>Return 1.0 if <var>expr</var> is zero, 0.0 otherwise.
+</p>
+</dd>
+<dt> &lsquo;<samp>pow(x, y)</samp>&rsquo;</dt>
+<dd><p>Compute the power of <var>x</var> elevated <var>y</var>, it is equivalent to
+&quot;(<var>x</var>)^(<var>y</var>)&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>print(t)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>print(t, l)</samp>&rsquo;</dt>
+<dd><p>Print the value of expression <var>t</var> with loglevel <var>l</var>. If
+<var>l</var> is not specified then a default log level is used.
+Returns the value of the expression printed.
+</p>
+<p>Prints t with loglevel l
+</p>
+</dd>
+<dt> &lsquo;<samp>random(x)</samp>&rsquo;</dt>
+<dd><p>Return a pseudo random value between 0.0 and 1.0. <var>x</var> is the index of the
+internal variable which will be used to save the seed/state.
+</p>
+</dd>
+<dt> &lsquo;<samp>root(expr, max)</samp>&rsquo;</dt>
+<dd><p>Find an input value for which the function represented by <var>expr</var>
+with argument <var>ld(0)</var> is 0 in the interval 0..<var>max</var>.
+</p>
+<p>The expression in <var>expr</var> must denote a continuous function or the
+result is undefined.
+</p>
+<p><var>ld(0)</var> is used to represent the function input value, which means
+that the given expression will be evaluated multiple times with
+various input values that the expression can access through
+<code>ld(0)</code>. When the expression evaluates to 0 then the
+corresponding input value will be returned.
+</p>
+</dd>
+<dt> &lsquo;<samp>sin(x)</samp>&rsquo;</dt>
+<dd><p>Compute sine of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>sinh(x)</samp>&rsquo;</dt>
+<dd><p>Compute hyperbolic sine of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>sqrt(expr)</samp>&rsquo;</dt>
+<dd><p>Compute the square root of <var>expr</var>. This is equivalent to
+&quot;(<var>expr</var>)^.5&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>squish(x)</samp>&rsquo;</dt>
+<dd><p>Compute expression <code>1/(1 + exp(4*x))</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>st(var, expr)</samp>&rsquo;</dt>
+<dd><p>Allow to store the value of the expression <var>expr</var> in an internal
+variable. <var>var</var> specifies the number of the variable where to
+store the value, and it is a value ranging from 0 to 9. The function
+returns the value stored in the internal variable.
+Note, Variables are currently not shared between expressions.
+</p>
+</dd>
+<dt> &lsquo;<samp>tan(x)</samp>&rsquo;</dt>
+<dd><p>Compute tangent of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>tanh(x)</samp>&rsquo;</dt>
+<dd><p>Compute hyperbolic tangent of <var>x</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>taylor(expr, x)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>taylor(expr, x, id)</samp>&rsquo;</dt>
+<dd><p>Evaluate a Taylor series at <var>x</var>, given an expression representing
+the <code>ld(id)</code>-th derivative of a function at 0.
+</p>
+<p>When the series does not converge the result is undefined.
+</p>
+<p><var>ld(id)</var> is used to represent the derivative order in <var>expr</var>,
+which means that the given expression will be evaluated multiple times
+with various input values that the expression can access through
+<code>ld(id)</code>. If <var>id</var> is not specified then 0 is assumed.
+</p>
+<p>Note, when you have the derivatives at y instead of 0,
+<code>taylor(expr, x-y)</code> can be used.
+</p>
+</dd>
+<dt> &lsquo;<samp>time(0)</samp>&rsquo;</dt>
+<dd><p>Return the current (wallclock) time in seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>trunc(expr)</samp>&rsquo;</dt>
+<dd><p>Round the value of expression <var>expr</var> towards zero to the nearest
+integer. For example, &quot;trunc(-1.5)&quot; is &quot;-1.0&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>while(cond, expr)</samp>&rsquo;</dt>
+<dd><p>Evaluate expression <var>expr</var> while the expression <var>cond</var> is
+non-zero, and returns the value of the last <var>expr</var> evaluation, or
+NAN if <var>cond</var> was always false.
+</p></dd>
+</dl>
+
+<p>The following constants are available:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>PI</samp>&rsquo;</dt>
+<dd><p>area of the unit disc, approximately 3.14
+</p></dd>
+<dt> &lsquo;<samp>E</samp>&rsquo;</dt>
+<dd><p>exp(1) (Euler&rsquo;s number), approximately 2.718
+</p></dd>
+<dt> &lsquo;<samp>PHI</samp>&rsquo;</dt>
+<dd><p>golden ratio (1+sqrt(5))/2, approximately 1.618
+</p></dd>
+</dl>
+
+<p>Assuming that an expression is considered &quot;true&quot; if it has a non-zero
+value, note that:
+</p>
+<p><code>*</code> works like AND
+</p>
+<p><code>+</code> works like OR
+</p>
+<p>For example the construct:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">if (A AND B) then C
+</pre></td></tr></table>
+<p>is equivalent to:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">if(A*B, C)
+</pre></td></tr></table>
+
+<p>In your C code, you can extend the list of unary and binary functions,
+and define recognized constants, so that they are available for your
+expressions.
+</p>
+<p>The evaluator also recognizes the International System unit prefixes.
+If &rsquo;i&rsquo; is appended after the prefix, binary prefixes are used, which
+are based on powers of 1024 instead of powers of 1000.
+The &rsquo;B&rsquo; postfix multiplies the value by 8, and can be appended after a
+unit prefix or used alone. This allows using for example &rsquo;KB&rsquo;, &rsquo;MiB&rsquo;,
+&rsquo;G&rsquo; and &rsquo;B&rsquo; as number postfix.
+</p>
+<p>The list of available International System prefixes follows, with
+indication of the corresponding powers of 10 and of 2.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>10^-24 / 2^-80
+</p></dd>
+<dt> &lsquo;<samp>z</samp>&rsquo;</dt>
+<dd><p>10^-21 / 2^-70
+</p></dd>
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>10^-18 / 2^-60
+</p></dd>
+<dt> &lsquo;<samp>f</samp>&rsquo;</dt>
+<dd><p>10^-15 / 2^-50
+</p></dd>
+<dt> &lsquo;<samp>p</samp>&rsquo;</dt>
+<dd><p>10^-12 / 2^-40
+</p></dd>
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>10^-9 / 2^-30
+</p></dd>
+<dt> &lsquo;<samp>u</samp>&rsquo;</dt>
+<dd><p>10^-6 / 2^-20
+</p></dd>
+<dt> &lsquo;<samp>m</samp>&rsquo;</dt>
+<dd><p>10^-3 / 2^-10
+</p></dd>
+<dt> &lsquo;<samp>c</samp>&rsquo;</dt>
+<dd><p>10^-2
+</p></dd>
+<dt> &lsquo;<samp>d</samp>&rsquo;</dt>
+<dd><p>10^-1
+</p></dd>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>10^2
+</p></dd>
+<dt> &lsquo;<samp>k</samp>&rsquo;</dt>
+<dd><p>10^3 / 2^10
+</p></dd>
+<dt> &lsquo;<samp>K</samp>&rsquo;</dt>
+<dd><p>10^3 / 2^10
+</p></dd>
+<dt> &lsquo;<samp>M</samp>&rsquo;</dt>
+<dd><p>10^6 / 2^20
+</p></dd>
+<dt> &lsquo;<samp>G</samp>&rsquo;</dt>
+<dd><p>10^9 / 2^30
+</p></dd>
+<dt> &lsquo;<samp>T</samp>&rsquo;</dt>
+<dd><p>10^12 / 2^40
+</p></dd>
+<dt> &lsquo;<samp>P</samp>&rsquo;</dt>
+<dd><p>10^15 / 2^40
+</p></dd>
+<dt> &lsquo;<samp>E</samp>&rsquo;</dt>
+<dd><p>10^18 / 2^50
+</p></dd>
+<dt> &lsquo;<samp>Z</samp>&rsquo;</dt>
+<dd><p>10^21 / 2^60
+</p></dd>
+<dt> &lsquo;<samp>Y</samp>&rsquo;</dt>
+<dd><p>10^24 / 2^70
+</p></dd>
+</dl>
+
+
+<a name="OpenCL-Options"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-OpenCL-Options">8. OpenCL Options</a></h1>
+
+<p>When FFmpeg is configured with <code>--enable-opencl</code>, it is possible
+to set the options for the global OpenCL context.
+</p>
+<p>The list of supported options follows:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>build_options</samp>&rsquo;</dt>
+<dd><p>Set build options used to compile the registered kernels.
+</p>
+<p>See reference &quot;OpenCL Specification Version: 1.2 chapter 5.6.4&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>platform_idx</samp>&rsquo;</dt>
+<dd><p>Select the index of the platform to run OpenCL code.
+</p>
+<p>The specified index must be one of the indexes in the device list
+which can be obtained with <code>ffmpeg -opencl_bench</code> or <code>av_opencl_get_device_list()</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>device_idx</samp>&rsquo;</dt>
+<dd><p>Select the index of the device used to run OpenCL code.
+</p>
+<p>The specifed index must be one of the indexes in the device list which
+can be obtained with <code>ffmpeg -opencl_bench</code> or <code>av_opencl_get_device_list()</code>.
+</p>
+</dd>
+</dl>
+
+<p><a name="codec_002doptions"></a>
+</p><a name="Codec-Options"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Codec-Options">9. Codec Options</a></h1>
+
+<p>libavcodec provides some generic global options, which can be set on
+all the encoders and decoders. In addition each codec may support
+so-called private options, which are specific for a given codec.
+</p>
+<p>Sometimes, a global option may only affect a specific kind of codec,
+and may be unsensical or ignored by another, so you need to be aware
+of the meaning of the specified options. Also some options are
+meant only for decoding or encoding.
+</p>
+<p>Options may be set by specifying -<var>option</var> <var>value</var> in the
+FFmpeg tools, or by setting the value explicitly in the
+<code>AVCodecContext</code> options or using the &lsquo;<tt>libavutil/opt.h</tt>&rsquo; API
+for programmatic use.
+</p>
+<p>The list of supported options follow:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set bitrate in bits/s. Default value is 200K.
+</p>
+</dd>
+<dt> &lsquo;<samp>ab <var>integer</var> (<em>encoding,audio</em>)</samp>&rsquo;</dt>
+<dd><p>Set audio bitrate (in bits/s). Default value is 128K.
+</p>
+</dd>
+<dt> &lsquo;<samp>bt <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set video bitrate tolerance (in bits/s). In 1-pass mode, bitrate
+tolerance specifies how far ratecontrol is willing to deviate from the
+target average bitrate value. This is not related to min/max
+bitrate. Lowering tolerance too much has an adverse effect on quality.
+</p>
+</dd>
+<dt> &lsquo;<samp>flags <var>flags</var> (<em>decoding/encoding,audio,video,subtitles</em>)</samp>&rsquo;</dt>
+<dd><p>Set generic flags.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>mv4</samp>&rsquo;</dt>
+<dd><p>Use four motion vector by macroblock (mpeg4).
+</p></dd>
+<dt> &lsquo;<samp>qpel</samp>&rsquo;</dt>
+<dd><p>Use 1/4 pel motion compensation.
+</p></dd>
+<dt> &lsquo;<samp>loop</samp>&rsquo;</dt>
+<dd><p>Use loop filter.
+</p></dd>
+<dt> &lsquo;<samp>qscale</samp>&rsquo;</dt>
+<dd><p>Use fixed qscale.
+</p></dd>
+<dt> &lsquo;<samp>gmc</samp>&rsquo;</dt>
+<dd><p>Use gmc.
+</p></dd>
+<dt> &lsquo;<samp>mv0</samp>&rsquo;</dt>
+<dd><p>Always try a mb with mv=&lt;0,0&gt;.
+</p></dd>
+<dt> &lsquo;<samp>input_preserved</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>pass1</samp>&rsquo;</dt>
+<dd><p>Use internal 2pass ratecontrol in first pass mode.
+</p></dd>
+<dt> &lsquo;<samp>pass2</samp>&rsquo;</dt>
+<dd><p>Use internal 2pass ratecontrol in second pass mode.
+</p></dd>
+<dt> &lsquo;<samp>gray</samp>&rsquo;</dt>
+<dd><p>Only decode/encode grayscale.
+</p></dd>
+<dt> &lsquo;<samp>emu_edge</samp>&rsquo;</dt>
+<dd><p>Do not draw edges.
+</p></dd>
+<dt> &lsquo;<samp>psnr</samp>&rsquo;</dt>
+<dd><p>Set error[?] variables during encoding.
+</p></dd>
+<dt> &lsquo;<samp>truncated</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>naq</samp>&rsquo;</dt>
+<dd><p>Normalize adaptive quantization.
+</p></dd>
+<dt> &lsquo;<samp>ildct</samp>&rsquo;</dt>
+<dd><p>Use interlaced DCT.
+</p></dd>
+<dt> &lsquo;<samp>low_delay</samp>&rsquo;</dt>
+<dd><p>Force low delay.
+</p></dd>
+<dt> &lsquo;<samp>global_header</samp>&rsquo;</dt>
+<dd><p>Place global headers in extradata instead of every keyframe.
+</p></dd>
+<dt> &lsquo;<samp>bitexact</samp>&rsquo;</dt>
+<dd><p>Use only bitexact stuff (except (I)DCT).
+</p></dd>
+<dt> &lsquo;<samp>aic</samp>&rsquo;</dt>
+<dd><p>Apply H263 advanced intra coding / mpeg4 ac prediction.
+</p></dd>
+<dt> &lsquo;<samp>cbp</samp>&rsquo;</dt>
+<dd><p>Deprecated, use mpegvideo private options instead.
+</p></dd>
+<dt> &lsquo;<samp>qprd</samp>&rsquo;</dt>
+<dd><p>Deprecated, use mpegvideo private options instead.
+</p></dd>
+<dt> &lsquo;<samp>ilme</samp>&rsquo;</dt>
+<dd><p>Apply interlaced motion estimation.
+</p></dd>
+<dt> &lsquo;<samp>cgop</samp>&rsquo;</dt>
+<dd><p>Use closed gop.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>me_method <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set motion estimation method.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>zero motion estimation (fastest)
+</p></dd>
+<dt> &lsquo;<samp>full</samp>&rsquo;</dt>
+<dd><p>full motion estimation (slowest)
+</p></dd>
+<dt> &lsquo;<samp>epzs</samp>&rsquo;</dt>
+<dd><p>EPZS motion estimation (default)
+</p></dd>
+<dt> &lsquo;<samp>esa</samp>&rsquo;</dt>
+<dd><p>esa motion estimation (alias for full)
+</p></dd>
+<dt> &lsquo;<samp>tesa</samp>&rsquo;</dt>
+<dd><p>tesa motion estimation
+</p></dd>
+<dt> &lsquo;<samp>dia</samp>&rsquo;</dt>
+<dd><p>dia motion estimation (alias for epzs)
+</p></dd>
+<dt> &lsquo;<samp>log</samp>&rsquo;</dt>
+<dd><p>log motion estimation
+</p></dd>
+<dt> &lsquo;<samp>phods</samp>&rsquo;</dt>
+<dd><p>phods motion estimation
+</p></dd>
+<dt> &lsquo;<samp>x1</samp>&rsquo;</dt>
+<dd><p>X1 motion estimation
+</p></dd>
+<dt> &lsquo;<samp>hex</samp>&rsquo;</dt>
+<dd><p>hex motion estimation
+</p></dd>
+<dt> &lsquo;<samp>umh</samp>&rsquo;</dt>
+<dd><p>umh motion estimation
+</p></dd>
+<dt> &lsquo;<samp>iter</samp>&rsquo;</dt>
+<dd><p>iter motion estimation
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>extradata_size <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Set extradata size.
+</p>
+</dd>
+<dt> &lsquo;<samp>time_base <var>rational number</var></samp>&rsquo;</dt>
+<dd><p>Set codec time base.
+</p>
+<p>It is the fundamental unit of time (in seconds) in terms of which
+frame timestamps are represented. For fixed-fps content, timebase
+should be <code>1 / frame_rate</code> and timestamp increments should be
+identically 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>g <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set the group of picture size. Default value is 12.
+</p>
+</dd>
+<dt> &lsquo;<samp>ar <var>integer</var> (<em>decoding/encoding,audio</em>)</samp>&rsquo;</dt>
+<dd><p>Set audio sampling rate (in Hz).
+</p>
+</dd>
+<dt> &lsquo;<samp>ac <var>integer</var> (<em>decoding/encoding,audio</em>)</samp>&rsquo;</dt>
+<dd><p>Set number of audio channels.
+</p>
+</dd>
+<dt> &lsquo;<samp>cutoff <var>integer</var> (<em>encoding,audio</em>)</samp>&rsquo;</dt>
+<dd><p>Set cutoff bandwidth.
+</p>
+</dd>
+<dt> &lsquo;<samp>frame_size <var>integer</var> (<em>encoding,audio</em>)</samp>&rsquo;</dt>
+<dd><p>Set audio frame size.
+</p>
+<p>Each submitted frame except the last must contain exactly frame_size
+samples per channel. May be 0 when the codec has
+CODEC_CAP_VARIABLE_FRAME_SIZE set, in that case the frame size is not
+restricted. It is set by some decoders to indicate constant frame
+size.
+</p>
+</dd>
+<dt> &lsquo;<samp>frame_number <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Set the frame number.
+</p>
+</dd>
+<dt> &lsquo;<samp>delay <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qcomp <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set video quantizer scale compression (VBR). It is used as a constant
+in the ratecontrol equation. Recommended range for default rc_eq:
+0.0-1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>qblur <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set video quantizer scale blur (VBR).
+</p>
+</dd>
+<dt> &lsquo;<samp>qmin <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set min video quantizer scale (VBR). Must be included between -1 and
+69, default value is 2.
+</p>
+</dd>
+<dt> &lsquo;<samp>qmax <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set max video quantizer scale (VBR). Must be included between -1 and
+1024, default value is 31.
+</p>
+</dd>
+<dt> &lsquo;<samp>qdiff <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set max difference between the quantizer scale (VBR).
+</p>
+</dd>
+<dt> &lsquo;<samp>bf <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set max number of B frames between non-B-frames.
+</p>
+<p>Must be an integer between -1 and 16. 0 means that B-frames are
+disabled. If a value of -1 is used, it will choose an automatic value
+depending on the encoder.
+</p>
+<p>Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>b_qfactor <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set qp factor between P and B frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_strategy <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set ratecontrol method.
+</p>
+</dd>
+<dt> &lsquo;<samp>b_strategy <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set strategy to choose between I/P/B-frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>ps <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set RTP payload size in bytes.
+</p>
+</dd>
+<dt> &lsquo;<samp>mv_bits <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>header_bits <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>i_tex_bits <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>p_tex_bits <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>i_count <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>p_count <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>skip_count <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>misc_bits <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>frame_bits <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>codec_tag <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bug <var>flags</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Workaround not auto detected encoder bugs.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>autodetect</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>old_msmpeg4</samp>&rsquo;</dt>
+<dd><p>some old lavc generated msmpeg4v3 files (no autodetection)
+</p></dd>
+<dt> &lsquo;<samp>xvid_ilace</samp>&rsquo;</dt>
+<dd><p>Xvid interlacing bug (autodetected if fourcc==XVIX)
+</p></dd>
+<dt> &lsquo;<samp>ump4</samp>&rsquo;</dt>
+<dd><p>(autodetected if fourcc==UMP4)
+</p></dd>
+<dt> &lsquo;<samp>no_padding</samp>&rsquo;</dt>
+<dd><p>padding bug (autodetected)
+</p></dd>
+<dt> &lsquo;<samp>amv</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ac_vlc</samp>&rsquo;</dt>
+<dd><p>illegal vlc bug (autodetected per fourcc)
+</p></dd>
+<dt> &lsquo;<samp>qpel_chroma</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>std_qpel</samp>&rsquo;</dt>
+<dd><p>old standard qpel (autodetected per fourcc/version)
+</p></dd>
+<dt> &lsquo;<samp>qpel_chroma2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>direct_blocksize</samp>&rsquo;</dt>
+<dd><p>direct-qpel-blocksize bug (autodetected per fourcc/version)
+</p></dd>
+<dt> &lsquo;<samp>edge</samp>&rsquo;</dt>
+<dd><p>edge padding bug (autodetected per fourcc/version)
+</p></dd>
+<dt> &lsquo;<samp>hpel_chroma</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dc_clip</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ms</samp>&rsquo;</dt>
+<dd><p>Workaround various bugs in microsoft broken decoders.
+</p></dd>
+<dt> &lsquo;<samp>trunc</samp>&rsquo;</dt>
+<dd><p>trancated frames
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>lelim <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set single coefficient elimination threshold for luminance (negative
+values also consider DC coefficient).
+</p>
+</dd>
+<dt> &lsquo;<samp>celim <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set single coefficient elimination threshold for chrominance (negative
+values also consider dc coefficient)
+</p>
+</dd>
+<dt> &lsquo;<samp>strict <var>integer</var> (<em>decoding/encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd><p>Specify how strictly to follow the standards.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>very</samp>&rsquo;</dt>
+<dd><p>strictly conform to a older more strict version of the spec or reference software
+</p></dd>
+<dt> &lsquo;<samp>strict</samp>&rsquo;</dt>
+<dd><p>strictly conform to all the things in the spec no matter what consequences
+</p></dd>
+<dt> &lsquo;<samp>normal</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>unofficial</samp>&rsquo;</dt>
+<dd><p>allow unofficial extensions
+</p></dd>
+<dt> &lsquo;<samp>experimental</samp>&rsquo;</dt>
+<dd><p>allow non standardized experimental things, experimental
+(unfinished/work in progress/not well tested) decoders and encoders.
+Note: experimental decoders can pose a security risk, do not use this for
+decoding untrusted input.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>b_qoffset <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set QP offset between P and B frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>err_detect <var>flags</var> (<em>decoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set error detection flags.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>crccheck</samp>&rsquo;</dt>
+<dd><p>verify embedded CRCs
+</p></dd>
+<dt> &lsquo;<samp>bitstream</samp>&rsquo;</dt>
+<dd><p>detect bitstream specification deviations
+</p></dd>
+<dt> &lsquo;<samp>buffer</samp>&rsquo;</dt>
+<dd><p>detect improper bitstream length
+</p></dd>
+<dt> &lsquo;<samp>explode</samp>&rsquo;</dt>
+<dd><p>abort decoding on minor error detection
+</p></dd>
+<dt> &lsquo;<samp>careful</samp>&rsquo;</dt>
+<dd><p>consider things that violate the spec and have not been seen in the wild as errors
+</p></dd>
+<dt> &lsquo;<samp>compliant</samp>&rsquo;</dt>
+<dd><p>consider all spec non compliancies as errors
+</p></dd>
+<dt> &lsquo;<samp>aggressive</samp>&rsquo;</dt>
+<dd><p>consider things that a sane encoder should not do as an error
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>has_b_frames <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>block_align <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mpeg_quant <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Use MPEG quantizers instead of H.263.
+</p>
+</dd>
+<dt> &lsquo;<samp>qsquish <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>How to keep quantizer between qmin and qmax (0 = clip, 1 = use
+differentiable function).
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_qmod_amp <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set experimental quantizer modulation.
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_qmod_freq <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set experimental quantizer modulation.
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_override_count <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>rc_eq <var>string</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set rate control equation. When computing the expression, besides the
+standard functions defined in the section &rsquo;Expression Evaluation&rsquo;, the
+following functions are available: bits2qp(bits), qp2bits(qp). Also
+the following constants are available: iTex pTex tex mv fCode iCount
+mcVar var isI isP isB avgQP qComp avgIITex avgPITex avgPPTex avgBPTex
+avgTex.
+</p>
+</dd>
+<dt> &lsquo;<samp>maxrate <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set max bitrate tolerance (in bits/s). Requires bufsize to be set.
+</p>
+</dd>
+<dt> &lsquo;<samp>minrate <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set min bitrate tolerance (in bits/s). Most useful in setting up a CBR
+encode. It is of little use elsewise.
+</p>
+</dd>
+<dt> &lsquo;<samp>bufsize <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set ratecontrol buffer size (in bits).
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_buf_aggressivity <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Currently useless.
+</p>
+</dd>
+<dt> &lsquo;<samp>i_qfactor <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set QP factor between P and I frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>i_qoffset <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set QP offset between P and I frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_init_cplx <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set initial complexity for 1-pass encoding.
+</p>
+</dd>
+<dt> &lsquo;<samp>dct <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set DCT algorithm.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>autoselect a good one (default)
+</p></dd>
+<dt> &lsquo;<samp>fastint</samp>&rsquo;</dt>
+<dd><p>fast integer
+</p></dd>
+<dt> &lsquo;<samp>int</samp>&rsquo;</dt>
+<dd><p>accurate integer
+</p></dd>
+<dt> &lsquo;<samp>mmx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>altivec</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>faan</samp>&rsquo;</dt>
+<dd><p>floating point AAN DCT
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>lumi_mask <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Compress bright areas stronger than medium ones.
+</p>
+</dd>
+<dt> &lsquo;<samp>tcplx_mask <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set temporal complexity masking.
+</p>
+</dd>
+<dt> &lsquo;<samp>scplx_mask <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set spatial complexity masking.
+</p>
+</dd>
+<dt> &lsquo;<samp>p_mask <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set inter masking.
+</p>
+</dd>
+<dt> &lsquo;<samp>dark_mask <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Compress dark areas stronger than medium ones.
+</p>
+</dd>
+<dt> &lsquo;<samp>idct <var>integer</var> (<em>decoding/encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Select IDCT implementation.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>int</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>simple</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>simplemmx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>arm</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>altivec</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sh4</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>simplearm</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>simplearmv5te</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>simplearmv6</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>simpleneon</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>simplealpha</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ipp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>xvidmmx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>faani</samp>&rsquo;</dt>
+<dd><p>floating point AAN IDCT
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>slice_count <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ec <var>flags</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set error concealment strategy.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>guess_mvs</samp>&rsquo;</dt>
+<dd><p>iterative motion vector (MV) search (slow)
+</p></dd>
+<dt> &lsquo;<samp>deblock</samp>&rsquo;</dt>
+<dd><p>use strong deblock filter for damaged MBs
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>bits_per_coded_sample <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>pred <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set prediction method.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>left</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>plane</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>median</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>aspect <var>rational number</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set sample aspect ratio.
+</p>
+</dd>
+<dt> &lsquo;<samp>debug <var>flags</var> (<em>decoding/encoding,audio,video,subtitles</em>)</samp>&rsquo;</dt>
+<dd><p>Print specific debug info.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>pict</samp>&rsquo;</dt>
+<dd><p>picture info
+</p></dd>
+<dt> &lsquo;<samp>rc</samp>&rsquo;</dt>
+<dd><p>rate control
+</p></dd>
+<dt> &lsquo;<samp>bitstream</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mb_type</samp>&rsquo;</dt>
+<dd><p>macroblock (MB) type
+</p></dd>
+<dt> &lsquo;<samp>qp</samp>&rsquo;</dt>
+<dd><p>per-block quantization parameter (QP)
+</p></dd>
+<dt> &lsquo;<samp>mv</samp>&rsquo;</dt>
+<dd><p>motion vector
+</p></dd>
+<dt> &lsquo;<samp>dct_coeff</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>skip</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>startcode</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>er</samp>&rsquo;</dt>
+<dd><p>error recognition
+</p></dd>
+<dt> &lsquo;<samp>mmco</samp>&rsquo;</dt>
+<dd><p>memory management control operations (H.264)
+</p></dd>
+<dt> &lsquo;<samp>bugs</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vis_qp</samp>&rsquo;</dt>
+<dd><p>visualize quantization parameter (QP), lower QP are tinted greener
+</p></dd>
+<dt> &lsquo;<samp>vis_mb_type</samp>&rsquo;</dt>
+<dd><p>visualize block types
+</p></dd>
+<dt> &lsquo;<samp>buffers</samp>&rsquo;</dt>
+<dd><p>picture buffer allocations
+</p></dd>
+<dt> &lsquo;<samp>thread_ops</samp>&rsquo;</dt>
+<dd><p>threading operations
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>vismv <var>integer</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Visualize motion vectors (MVs).
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>pf</samp>&rsquo;</dt>
+<dd><p>forward predicted MVs of P-frames
+</p></dd>
+<dt> &lsquo;<samp>bf</samp>&rsquo;</dt>
+<dd><p>forward predicted MVs of B-frames
+</p></dd>
+<dt> &lsquo;<samp>bb</samp>&rsquo;</dt>
+<dd><p>backward predicted MVs of B-frames
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>cmp <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set full pel me compare function.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sad</samp>&rsquo;</dt>
+<dd><p>sum of absolute differences, fast (default)
+</p></dd>
+<dt> &lsquo;<samp>sse</samp>&rsquo;</dt>
+<dd><p>sum of squared errors
+</p></dd>
+<dt> &lsquo;<samp>satd</samp>&rsquo;</dt>
+<dd><p>sum of absolute Hadamard transformed differences
+</p></dd>
+<dt> &lsquo;<samp>dct</samp>&rsquo;</dt>
+<dd><p>sum of absolute DCT transformed differences
+</p></dd>
+<dt> &lsquo;<samp>psnr</samp>&rsquo;</dt>
+<dd><p>sum of squared quantization errors (avoid, low quality)
+</p></dd>
+<dt> &lsquo;<samp>bit</samp>&rsquo;</dt>
+<dd><p>number of bits needed for the block
+</p></dd>
+<dt> &lsquo;<samp>rd</samp>&rsquo;</dt>
+<dd><p>rate distortion optimal, slow
+</p></dd>
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>0
+</p></dd>
+<dt> &lsquo;<samp>vsad</samp>&rsquo;</dt>
+<dd><p>sum of absolute vertical differences
+</p></dd>
+<dt> &lsquo;<samp>vsse</samp>&rsquo;</dt>
+<dd><p>sum of squared vertical differences
+</p></dd>
+<dt> &lsquo;<samp>nsse</samp>&rsquo;</dt>
+<dd><p>noise preserving sum of squared differences
+</p></dd>
+<dt> &lsquo;<samp>w53</samp>&rsquo;</dt>
+<dd><p>5/3 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>w97</samp>&rsquo;</dt>
+<dd><p>9/7 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>dctmax</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>subcmp <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set sub pel me compare function.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sad</samp>&rsquo;</dt>
+<dd><p>sum of absolute differences, fast (default)
+</p></dd>
+<dt> &lsquo;<samp>sse</samp>&rsquo;</dt>
+<dd><p>sum of squared errors
+</p></dd>
+<dt> &lsquo;<samp>satd</samp>&rsquo;</dt>
+<dd><p>sum of absolute Hadamard transformed differences
+</p></dd>
+<dt> &lsquo;<samp>dct</samp>&rsquo;</dt>
+<dd><p>sum of absolute DCT transformed differences
+</p></dd>
+<dt> &lsquo;<samp>psnr</samp>&rsquo;</dt>
+<dd><p>sum of squared quantization errors (avoid, low quality)
+</p></dd>
+<dt> &lsquo;<samp>bit</samp>&rsquo;</dt>
+<dd><p>number of bits needed for the block
+</p></dd>
+<dt> &lsquo;<samp>rd</samp>&rsquo;</dt>
+<dd><p>rate distortion optimal, slow
+</p></dd>
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>0
+</p></dd>
+<dt> &lsquo;<samp>vsad</samp>&rsquo;</dt>
+<dd><p>sum of absolute vertical differences
+</p></dd>
+<dt> &lsquo;<samp>vsse</samp>&rsquo;</dt>
+<dd><p>sum of squared vertical differences
+</p></dd>
+<dt> &lsquo;<samp>nsse</samp>&rsquo;</dt>
+<dd><p>noise preserving sum of squared differences
+</p></dd>
+<dt> &lsquo;<samp>w53</samp>&rsquo;</dt>
+<dd><p>5/3 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>w97</samp>&rsquo;</dt>
+<dd><p>9/7 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>dctmax</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>mbcmp <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set macroblock compare function.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sad</samp>&rsquo;</dt>
+<dd><p>sum of absolute differences, fast (default)
+</p></dd>
+<dt> &lsquo;<samp>sse</samp>&rsquo;</dt>
+<dd><p>sum of squared errors
+</p></dd>
+<dt> &lsquo;<samp>satd</samp>&rsquo;</dt>
+<dd><p>sum of absolute Hadamard transformed differences
+</p></dd>
+<dt> &lsquo;<samp>dct</samp>&rsquo;</dt>
+<dd><p>sum of absolute DCT transformed differences
+</p></dd>
+<dt> &lsquo;<samp>psnr</samp>&rsquo;</dt>
+<dd><p>sum of squared quantization errors (avoid, low quality)
+</p></dd>
+<dt> &lsquo;<samp>bit</samp>&rsquo;</dt>
+<dd><p>number of bits needed for the block
+</p></dd>
+<dt> &lsquo;<samp>rd</samp>&rsquo;</dt>
+<dd><p>rate distortion optimal, slow
+</p></dd>
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>0
+</p></dd>
+<dt> &lsquo;<samp>vsad</samp>&rsquo;</dt>
+<dd><p>sum of absolute vertical differences
+</p></dd>
+<dt> &lsquo;<samp>vsse</samp>&rsquo;</dt>
+<dd><p>sum of squared vertical differences
+</p></dd>
+<dt> &lsquo;<samp>nsse</samp>&rsquo;</dt>
+<dd><p>noise preserving sum of squared differences
+</p></dd>
+<dt> &lsquo;<samp>w53</samp>&rsquo;</dt>
+<dd><p>5/3 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>w97</samp>&rsquo;</dt>
+<dd><p>9/7 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>dctmax</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>ildctcmp <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set interlaced dct compare function.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sad</samp>&rsquo;</dt>
+<dd><p>sum of absolute differences, fast (default)
+</p></dd>
+<dt> &lsquo;<samp>sse</samp>&rsquo;</dt>
+<dd><p>sum of squared errors
+</p></dd>
+<dt> &lsquo;<samp>satd</samp>&rsquo;</dt>
+<dd><p>sum of absolute Hadamard transformed differences
+</p></dd>
+<dt> &lsquo;<samp>dct</samp>&rsquo;</dt>
+<dd><p>sum of absolute DCT transformed differences
+</p></dd>
+<dt> &lsquo;<samp>psnr</samp>&rsquo;</dt>
+<dd><p>sum of squared quantization errors (avoid, low quality)
+</p></dd>
+<dt> &lsquo;<samp>bit</samp>&rsquo;</dt>
+<dd><p>number of bits needed for the block
+</p></dd>
+<dt> &lsquo;<samp>rd</samp>&rsquo;</dt>
+<dd><p>rate distortion optimal, slow
+</p></dd>
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>0
+</p></dd>
+<dt> &lsquo;<samp>vsad</samp>&rsquo;</dt>
+<dd><p>sum of absolute vertical differences
+</p></dd>
+<dt> &lsquo;<samp>vsse</samp>&rsquo;</dt>
+<dd><p>sum of squared vertical differences
+</p></dd>
+<dt> &lsquo;<samp>nsse</samp>&rsquo;</dt>
+<dd><p>noise preserving sum of squared differences
+</p></dd>
+<dt> &lsquo;<samp>w53</samp>&rsquo;</dt>
+<dd><p>5/3 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>w97</samp>&rsquo;</dt>
+<dd><p>9/7 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>dctmax</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>dia_size <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set diamond type &amp; size for motion estimation.
+</p>
+</dd>
+<dt> &lsquo;<samp>last_pred <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set amount of motion predictors from the previous frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>preme <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set pre motion estimation.
+</p>
+</dd>
+<dt> &lsquo;<samp>precmp <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set pre motion estimation compare function.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sad</samp>&rsquo;</dt>
+<dd><p>sum of absolute differences, fast (default)
+</p></dd>
+<dt> &lsquo;<samp>sse</samp>&rsquo;</dt>
+<dd><p>sum of squared errors
+</p></dd>
+<dt> &lsquo;<samp>satd</samp>&rsquo;</dt>
+<dd><p>sum of absolute Hadamard transformed differences
+</p></dd>
+<dt> &lsquo;<samp>dct</samp>&rsquo;</dt>
+<dd><p>sum of absolute DCT transformed differences
+</p></dd>
+<dt> &lsquo;<samp>psnr</samp>&rsquo;</dt>
+<dd><p>sum of squared quantization errors (avoid, low quality)
+</p></dd>
+<dt> &lsquo;<samp>bit</samp>&rsquo;</dt>
+<dd><p>number of bits needed for the block
+</p></dd>
+<dt> &lsquo;<samp>rd</samp>&rsquo;</dt>
+<dd><p>rate distortion optimal, slow
+</p></dd>
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>0
+</p></dd>
+<dt> &lsquo;<samp>vsad</samp>&rsquo;</dt>
+<dd><p>sum of absolute vertical differences
+</p></dd>
+<dt> &lsquo;<samp>vsse</samp>&rsquo;</dt>
+<dd><p>sum of squared vertical differences
+</p></dd>
+<dt> &lsquo;<samp>nsse</samp>&rsquo;</dt>
+<dd><p>noise preserving sum of squared differences
+</p></dd>
+<dt> &lsquo;<samp>w53</samp>&rsquo;</dt>
+<dd><p>5/3 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>w97</samp>&rsquo;</dt>
+<dd><p>9/7 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>dctmax</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>pre_dia_size <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set diamond type &amp; size for motion estimation pre-pass.
+</p>
+</dd>
+<dt> &lsquo;<samp>subq <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set sub pel motion estimation quality.
+</p>
+</dd>
+<dt> &lsquo;<samp>dtg_active_format <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>me_range <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set limit motion vectors range (1023 for DivX player).
+</p>
+</dd>
+<dt> &lsquo;<samp>ibias <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set intra quant bias.
+</p>
+</dd>
+<dt> &lsquo;<samp>pbias <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set inter quant bias.
+</p>
+</dd>
+<dt> &lsquo;<samp>color_table_id <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>global_quality <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>coder <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>vlc</samp>&rsquo;</dt>
+<dd><p>variable length coder / huffman coder
+</p></dd>
+<dt> &lsquo;<samp>ac</samp>&rsquo;</dt>
+<dd><p>arithmetic coder
+</p></dd>
+<dt> &lsquo;<samp>raw</samp>&rsquo;</dt>
+<dd><p>raw (no encoding)
+</p></dd>
+<dt> &lsquo;<samp>rle</samp>&rsquo;</dt>
+<dd><p>run-length coder
+</p></dd>
+<dt> &lsquo;<samp>deflate</samp>&rsquo;</dt>
+<dd><p>deflate-based coder
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>context <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set context model.
+</p>
+</dd>
+<dt> &lsquo;<samp>slice_flags <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>xvmc_acceleration <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mbd <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set macroblock decision algorithm (high quality mode).
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>simple</samp>&rsquo;</dt>
+<dd><p>use mbcmp (default)
+</p></dd>
+<dt> &lsquo;<samp>bits</samp>&rsquo;</dt>
+<dd><p>use fewest bits
+</p></dd>
+<dt> &lsquo;<samp>rd</samp>&rsquo;</dt>
+<dd><p>use best rate distortion
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>stream_codec_tag <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sc_threshold <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set scene change threshold.
+</p>
+</dd>
+<dt> &lsquo;<samp>lmin <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set min lagrange factor (VBR).
+</p>
+</dd>
+<dt> &lsquo;<samp>lmax <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set max lagrange factor (VBR).
+</p>
+</dd>
+<dt> &lsquo;<samp>nr <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set noise reduction.
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_init_occupancy <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set number of bits which should be loaded into the rc buffer before
+decoding starts.
+</p>
+</dd>
+<dt> &lsquo;<samp>flags2 <var>flags</var> (<em>decoding/encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>fast</samp>&rsquo;</dt>
+<dd><p>Allow non spec compliant speedup tricks.
+</p></dd>
+<dt> &lsquo;<samp>sgop</samp>&rsquo;</dt>
+<dd><p>Deprecated, use mpegvideo private options instead.
+</p></dd>
+<dt> &lsquo;<samp>noout</samp>&rsquo;</dt>
+<dd><p>Skip bitstream encoding.
+</p></dd>
+<dt> &lsquo;<samp>ignorecrop</samp>&rsquo;</dt>
+<dd><p>Ignore cropping information from sps.
+</p></dd>
+<dt> &lsquo;<samp>local_header</samp>&rsquo;</dt>
+<dd><p>Place global headers at every keyframe instead of in extradata.
+</p></dd>
+<dt> &lsquo;<samp>chunks</samp>&rsquo;</dt>
+<dd><p>Frame data might be split into multiple chunks.
+</p></dd>
+<dt> &lsquo;<samp>showall</samp>&rsquo;</dt>
+<dd><p>Show all frames before the first keyframe.
+</p></dd>
+<dt> &lsquo;<samp>skiprd</samp>&rsquo;</dt>
+<dd><p>Deprecated, use mpegvideo private options instead.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>error <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qns <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Deprecated, use mpegvideo private options instead.
+</p>
+</dd>
+<dt> &lsquo;<samp>threads <var>integer</var> (<em>decoding/encoding,video</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>detect a good number of threads
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>me_threshold <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set motion estimation threshold.
+</p>
+</dd>
+<dt> &lsquo;<samp>mb_threshold <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set macroblock threshold.
+</p>
+</dd>
+<dt> &lsquo;<samp>dc <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set intra_dc_precision.
+</p>
+</dd>
+<dt> &lsquo;<samp>nssew <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set nsse weight.
+</p>
+</dd>
+<dt> &lsquo;<samp>skip_top <var>integer</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set number of macroblock rows at the top which are skipped.
+</p>
+</dd>
+<dt> &lsquo;<samp>skip_bottom <var>integer</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set number of macroblock rows at the bottom which are skipped.
+</p>
+</dd>
+<dt> &lsquo;<samp>profile <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>unknown</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aac_main</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aac_low</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aac_ssr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aac_ltp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aac_he</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aac_he_v2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aac_ld</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aac_eld</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mpeg2_aac_low</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mpeg2_aac_he</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dts</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dts_es</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dts_96_24</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dts_hd_hra</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dts_hd_ma</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>level <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>unknown</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>lowres <var>integer</var> (<em>decoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd><p>Decode at 1= 1/2, 2=1/4, 3=1/8 resolutions.
+</p>
+</dd>
+<dt> &lsquo;<samp>skip_threshold <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set frame skip threshold.
+</p>
+</dd>
+<dt> &lsquo;<samp>skip_factor <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set frame skip factor.
+</p>
+</dd>
+<dt> &lsquo;<samp>skip_exp <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set frame skip exponent.
+</p>
+</dd>
+<dt> &lsquo;<samp>skipcmp <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set frame skip compare function.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sad</samp>&rsquo;</dt>
+<dd><p>sum of absolute differences, fast (default)
+</p></dd>
+<dt> &lsquo;<samp>sse</samp>&rsquo;</dt>
+<dd><p>sum of squared errors
+</p></dd>
+<dt> &lsquo;<samp>satd</samp>&rsquo;</dt>
+<dd><p>sum of absolute Hadamard transformed differences
+</p></dd>
+<dt> &lsquo;<samp>dct</samp>&rsquo;</dt>
+<dd><p>sum of absolute DCT transformed differences
+</p></dd>
+<dt> &lsquo;<samp>psnr</samp>&rsquo;</dt>
+<dd><p>sum of squared quantization errors (avoid, low quality)
+</p></dd>
+<dt> &lsquo;<samp>bit</samp>&rsquo;</dt>
+<dd><p>number of bits needed for the block
+</p></dd>
+<dt> &lsquo;<samp>rd</samp>&rsquo;</dt>
+<dd><p>rate distortion optimal, slow
+</p></dd>
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>0
+</p></dd>
+<dt> &lsquo;<samp>vsad</samp>&rsquo;</dt>
+<dd><p>sum of absolute vertical differences
+</p></dd>
+<dt> &lsquo;<samp>vsse</samp>&rsquo;</dt>
+<dd><p>sum of squared vertical differences
+</p></dd>
+<dt> &lsquo;<samp>nsse</samp>&rsquo;</dt>
+<dd><p>noise preserving sum of squared differences
+</p></dd>
+<dt> &lsquo;<samp>w53</samp>&rsquo;</dt>
+<dd><p>5/3 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>w97</samp>&rsquo;</dt>
+<dd><p>9/7 wavelet, only used in snow
+</p></dd>
+<dt> &lsquo;<samp>dctmax</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>border_mask <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Increase the quantizer for macroblocks close to borders.
+</p>
+</dd>
+<dt> &lsquo;<samp>mblmin <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set min macroblock lagrange factor (VBR).
+</p>
+</dd>
+<dt> &lsquo;<samp>mblmax <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set max macroblock lagrange factor (VBR).
+</p>
+</dd>
+<dt> &lsquo;<samp>mepc <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set motion estimation bitrate penalty compensation (1.0 = 256).
+</p>
+</dd>
+<dt> &lsquo;<samp>skip_loop_filter <var>integer</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>skip_idct        <var>integer</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>skip_frame       <var>integer</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Make decoder discard processing depending on the frame type selected
+by the option value.
+</p>
+<p>&lsquo;<samp>skip_loop_filter</samp>&rsquo; skips frame loop filtering, &lsquo;<samp>skip_idct</samp>&rsquo;
+skips frame IDCT/dequantization, &lsquo;<samp>skip_frame</samp>&rsquo; skips decoding.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>Discard no frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>default</samp>&rsquo;</dt>
+<dd><p>Discard useless frames like 0-sized frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>noref</samp>&rsquo;</dt>
+<dd><p>Discard all non-reference frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>bidir</samp>&rsquo;</dt>
+<dd><p>Discard all bidirectional frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>nokey</samp>&rsquo;</dt>
+<dd><p>Discard all frames excepts keyframes.
+</p>
+</dd>
+<dt> &lsquo;<samp>all</samp>&rsquo;</dt>
+<dd><p>Discard all frames.
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>default</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>bidir_refine <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Refine the two motion vectors used in bidirectional macroblocks.
+</p>
+</dd>
+<dt> &lsquo;<samp>brd_scale <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Downscale frames for dynamic B-frame decision.
+</p>
+</dd>
+<dt> &lsquo;<samp>keyint_min <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set minimum interval between IDR-frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>refs <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set reference frames to consider for motion compensation.
+</p>
+</dd>
+<dt> &lsquo;<samp>chromaoffset <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set chroma qp offset from luma.
+</p>
+</dd>
+<dt> &lsquo;<samp>trellis <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set rate-distortion optimal quantization.
+</p>
+</dd>
+<dt> &lsquo;<samp>sc_factor <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set value multiplied by qscale for each frame and added to
+scene_change_score.
+</p>
+</dd>
+<dt> &lsquo;<samp>mv0_threshold <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>b_sensitivity <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Adjust sensitivity of b_frame_strategy 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>compression_level <var>integer</var> (<em>encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>min_prediction_order <var>integer</var> (<em>encoding,audio</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>max_prediction_order <var>integer</var> (<em>encoding,audio</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>timecode_frame_start <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set GOP timecode frame start number, in non drop frame format.
+</p>
+</dd>
+<dt> &lsquo;<samp>request_channels <var>integer</var> (<em>decoding,audio</em>)</samp>&rsquo;</dt>
+<dd><p>Set desired number of audio channels.
+</p>
+</dd>
+<dt> &lsquo;<samp>bits_per_raw_sample <var>integer</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>channel_layout <var>integer</var> (<em>decoding/encoding,audio</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Possible values:
+</p></dd>
+<dt> &lsquo;<samp>request_channel_layout <var>integer</var> (<em>decoding,audio</em>)</samp>&rsquo;</dt>
+<dd>
+<p>Possible values:
+</p></dd>
+<dt> &lsquo;<samp>rc_max_vbv_use <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>rc_min_vbv_use <var>float</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ticks_per_frame <var>integer</var> (<em>decoding/encoding,audio,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>color_primaries <var>integer</var> (<em>decoding/encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>color_trc <var>integer</var> (<em>decoding/encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>colorspace <var>integer</var> (<em>decoding/encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>color_range <var>integer</var> (<em>decoding/encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma_sample_location <var>integer</var> (<em>decoding/encoding,video</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>log_level_offset <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Set the log level offset.
+</p>
+</dd>
+<dt> &lsquo;<samp>slices <var>integer</var> (<em>encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Number of slices, used in parallelized encoding.
+</p>
+</dd>
+<dt> &lsquo;<samp>thread_type <var>flags</var> (<em>decoding/encoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Select multithreading type.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>slice</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>frame</samp>&rsquo;</dt>
+</dl>
+</dd>
+<dt> &lsquo;<samp>audio_service_type <var>integer</var> (<em>encoding,audio</em>)</samp>&rsquo;</dt>
+<dd><p>Set audio service type.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>ma</samp>&rsquo;</dt>
+<dd><p>Main Audio Service
+</p></dd>
+<dt> &lsquo;<samp>ef</samp>&rsquo;</dt>
+<dd><p>Effects
+</p></dd>
+<dt> &lsquo;<samp>vi</samp>&rsquo;</dt>
+<dd><p>Visually Impaired
+</p></dd>
+<dt> &lsquo;<samp>hi</samp>&rsquo;</dt>
+<dd><p>Hearing Impaired
+</p></dd>
+<dt> &lsquo;<samp>di</samp>&rsquo;</dt>
+<dd><p>Dialogue
+</p></dd>
+<dt> &lsquo;<samp>co</samp>&rsquo;</dt>
+<dd><p>Commentary
+</p></dd>
+<dt> &lsquo;<samp>em</samp>&rsquo;</dt>
+<dd><p>Emergency
+</p></dd>
+<dt> &lsquo;<samp>vo</samp>&rsquo;</dt>
+<dd><p>Voice Over
+</p></dd>
+<dt> &lsquo;<samp>ka</samp>&rsquo;</dt>
+<dd><p>Karaoke
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>request_sample_fmt <var>sample_fmt</var> (<em>decoding,audio</em>)</samp>&rsquo;</dt>
+<dd><p>Set sample format audio decoders should prefer. Default value is
+<code>none</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>pkt_timebase <var>rational number</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sub_charenc <var>encoding</var> (<em>decoding,subtitles</em>)</samp>&rsquo;</dt>
+<dd><p>Set the input subtitles character encoding.
+</p>
+</dd>
+<dt> &lsquo;<samp>field_order  <var>field_order</var> (<em>video</em>)</samp>&rsquo;</dt>
+<dd><p>Set/override the field order of the video.
+Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>progressive</samp>&rsquo;</dt>
+<dd><p>Progressive video
+</p></dd>
+<dt> &lsquo;<samp>tt</samp>&rsquo;</dt>
+<dd><p>Interlaced video, top field coded and displayed first
+</p></dd>
+<dt> &lsquo;<samp>bb</samp>&rsquo;</dt>
+<dd><p>Interlaced video, bottom field coded and displayed first
+</p></dd>
+<dt> &lsquo;<samp>tb</samp>&rsquo;</dt>
+<dd><p>Interlaced video, top coded first, bottom displayed first
+</p></dd>
+<dt> &lsquo;<samp>bt</samp>&rsquo;</dt>
+<dd><p>Interlaced video, bottom coded first, top displayed first
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>skip_alpha <var>integer</var> (<em>decoding,video</em>)</samp>&rsquo;</dt>
+<dd><p>Set to 1 to disable processing alpha (transparency). This works like the
+&lsquo;<samp>gray</samp>&rsquo; flag in the &lsquo;<samp>flags</samp>&rsquo; option which skips chroma information
+instead of alpha. Default is 0.
+</p></dd>
+</dl>
+
+
+<a name="Decoders"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Decoders">10. Decoders</a></h1>
+
+<p>Decoders are configured elements in FFmpeg which allow the decoding of
+multimedia streams.
+</p>
+<p>When you configure your FFmpeg build, all the supported native decoders
+are enabled by default. Decoders requiring an external library must be enabled
+manually via the corresponding <code>--enable-lib</code> option. You can list all
+available decoders using the configure option <code>--list-decoders</code>.
+</p>
+<p>You can disable all the decoders with the configure option
+<code>--disable-decoders</code> and selectively enable / disable single decoders
+with the options <code>--enable-decoder=<var>DECODER</var></code> /
+<code>--disable-decoder=<var>DECODER</var></code>.
+</p>
+<p>The option <code>-codecs</code> of the ff* tools will display the list of
+enabled decoders.
+</p>
+
+<a name="Video-Decoders"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Video-Decoders">11. Video Decoders</a></h1>
+
+<p>A description of some of the currently available video decoders
+follows.
+</p>
+<a name="rawvideo"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-rawvideo">11.1 rawvideo</a></h2>
+
+<p>Raw video decoder.
+</p>
+<p>This decoder decodes rawvideo streams.
+</p>
+<a name="Options-29"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-29">11.1.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>top <var>top_field_first</var></samp>&rsquo;</dt>
+<dd><p>Specify the assumed field type of the input video.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>-1</samp>&rsquo;</dt>
+<dd><p>the video is assumed to be progressive (default)
+</p></dd>
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>bottom-field-first is assumed
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>top-field-first is assumed
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+
+<a name="Audio-Decoders"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Audio-Decoders">12. Audio Decoders</a></h1>
+
+<a name="ffwavesynth"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-ffwavesynth">12.1 ffwavesynth</a></h2>
+
+<p>Internal wave synthetizer.
+</p>
+<p>This decoder generates wave patterns according to predefined sequences. Its
+use is purely internal and the format of the data it accepts is not publicly
+documented.
+</p>
+<a name="libcelt"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-libcelt">12.2 libcelt</a></h2>
+
+<p>libcelt decoder wrapper.
+</p>
+<p>libcelt allows libavcodec to decode the Xiph CELT ultra-low delay audio codec.
+Requires the presence of the libcelt headers and library during configuration.
+You need to explicitly configure the build with <code>--enable-libcelt</code>.
+</p>
+<a name="libgsm"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-libgsm">12.3 libgsm</a></h2>
+
+<p>libgsm decoder wrapper.
+</p>
+<p>libgsm allows libavcodec to decode the GSM full rate audio codec. Requires
+the presence of the libgsm headers and library during configuration. You need
+to explicitly configure the build with <code>--enable-libgsm</code>.
+</p>
+<p>This decoder supports both the ordinary GSM and the Microsoft variant.
+</p>
+<a name="libilbc"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-libilbc">12.4 libilbc</a></h2>
+
+<p>libilbc decoder wrapper.
+</p>
+<p>libilbc allows libavcodec to decode the Internet Low Bitrate Codec (iLBC)
+audio codec. Requires the presence of the libilbc headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libilbc</code>.
+</p>
+<a name="Options-9"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-9">12.4.1 Options</a></h3>
+
+<p>The following option is supported by the libilbc wrapper.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>enhance</samp>&rsquo;</dt>
+<dd>
+<p>Enable the enhancement of the decoded audio when set to 1. The default
+value is 0 (disabled).
+</p>
+</dd>
+</dl>
+
+<a name="libopencore_002damrnb"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-libopencore_002damrnb">12.5 libopencore-amrnb</a></h2>
+
+<p>libopencore-amrnb decoder wrapper.
+</p>
+<p>libopencore-amrnb allows libavcodec to decode the Adaptive Multi-Rate
+Narrowband audio codec. Using it requires the presence of the
+libopencore-amrnb headers and library during configuration. You need to
+explicitly configure the build with <code>--enable-libopencore-amrnb</code>.
+</p>
+<p>An FFmpeg native decoder for AMR-NB exists, so users can decode AMR-NB
+without this library.
+</p>
+<a name="libopencore_002damrwb"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-libopencore_002damrwb">12.6 libopencore-amrwb</a></h2>
+
+<p>libopencore-amrwb decoder wrapper.
+</p>
+<p>libopencore-amrwb allows libavcodec to decode the Adaptive Multi-Rate
+Wideband audio codec. Using it requires the presence of the
+libopencore-amrwb headers and library during configuration. You need to
+explicitly configure the build with <code>--enable-libopencore-amrwb</code>.
+</p>
+<p>An FFmpeg native decoder for AMR-WB exists, so users can decode AMR-WB
+without this library.
+</p>
+<a name="libopus-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-libopus-1">12.7 libopus</a></h2>
+
+<p>libopus decoder wrapper.
+</p>
+<p>libopus allows libavcodec to decode the Opus Interactive Audio Codec.
+Requires the presence of the libopus headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libopus</code>.
+</p>
+
+<a name="Subtitles-Decoders"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Subtitles-Decoders">13. Subtitles Decoders</a></h1>
+
+<a name="dvdsub"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-dvdsub">13.1 dvdsub</a></h2>
+
+<p>This codec decodes the bitmap subtitles used in DVDs; the same subtitles can
+also be found in VobSub file pairs and in some Matroska files.
+</p>
+<a name="Options-21"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-21">13.1.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>palette</samp>&rsquo;</dt>
+<dd><p>Specify the global palette used by the bitmaps. When stored in VobSub, the
+palette is normally specified in the index file; in Matroska, the palette is
+stored in the codec extra-data in the same format as in VobSub. In DVDs, the
+palette is stored in the IFO file, and therefore not available when reading
+from dumped VOB files.
+</p>
+<p>The format for this option is a string containing 16 24-bits hexadecimal
+numbers (without 0x prefix) separated by comas, for example <code>0d00ee,
+ee450d, 101010, eaeaea, 0ce60b, ec14ed, ebff0b, 0d617a, 7b7b7b, d1d1d1,
+7b2a0e, 0d950c, 0f007b, cf0dec, cfa80c, 7c127b</code>.
+</p></dd>
+</dl>
+
+<a name="libzvbi_002dteletext"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-libzvbi_002dteletext">13.2 libzvbi-teletext</a></h2>
+
+<p>Libzvbi allows libavcodec to decode DVB teletext pages and DVB teletext
+subtitles. Requires the presence of the libzvbi headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libzvbi</code>.
+</p>
+<a name="Options-15"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-15">13.2.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>txt_page</samp>&rsquo;</dt>
+<dd><p>List of teletext page numbers to decode. You may use the special * string to
+match all pages. Pages that do not match the specified list are dropped.
+Default value is *.
+</p></dd>
+<dt> &lsquo;<samp>txt_chop_top</samp>&rsquo;</dt>
+<dd><p>Discards the top teletext line. Default value is 1.
+</p></dd>
+<dt> &lsquo;<samp>txt_format</samp>&rsquo;</dt>
+<dd><p>Specifies the format of the decoded subtitles. The teletext decoder is capable
+of decoding the teletext pages to bitmaps or to simple text, you should use
+&quot;bitmap&quot; for teletext pages, because certain graphics and colors cannot be
+expressed in simple text. You might use &quot;text&quot; for teletext based subtitles if
+your application can handle simple text based subtitles. Default value is
+bitmap.
+</p></dd>
+<dt> &lsquo;<samp>txt_left</samp>&rsquo;</dt>
+<dd><p>X offset of generated bitmaps, default is 0.
+</p></dd>
+<dt> &lsquo;<samp>txt_top</samp>&rsquo;</dt>
+<dd><p>Y offset of generated bitmaps, default is 0.
+</p></dd>
+<dt> &lsquo;<samp>txt_chop_spaces</samp>&rsquo;</dt>
+<dd><p>Chops leading and trailing spaces and removes empty lines from the generated
+text. This option is useful for teletext based subtitles where empty spaces may
+be present at the start or at the end of the lines or empty lines may be
+present between the subtitle lines because of double-sized teletext charactes.
+Default value is 1.
+</p></dd>
+<dt> &lsquo;<samp>txt_duration</samp>&rsquo;</dt>
+<dd><p>Sets the display duration of the decoded teletext pages or subtitles in
+miliseconds. Default value is 30000 which is 30 seconds.
+</p></dd>
+<dt> &lsquo;<samp>txt_transparent</samp>&rsquo;</dt>
+<dd><p>Force transparent background of the generated teletext bitmaps. Default value
+is 0 which means an opaque (black) background.
+</p></dd>
+</dl>
+
+<a name="Encoders"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Encoders">14. Encoders</a></h1>
+
+<p>Encoders are configured elements in FFmpeg which allow the encoding of
+multimedia streams.
+</p>
+<p>When you configure your FFmpeg build, all the supported native encoders
+are enabled by default. Encoders requiring an external library must be enabled
+manually via the corresponding <code>--enable-lib</code> option. You can list all
+available encoders using the configure option <code>--list-encoders</code>.
+</p>
+<p>You can disable all the encoders with the configure option
+<code>--disable-encoders</code> and selectively enable / disable single encoders
+with the options <code>--enable-encoder=<var>ENCODER</var></code> /
+<code>--disable-encoder=<var>ENCODER</var></code>.
+</p>
+<p>The option <code>-codecs</code> of the ff* tools will display the list of
+enabled encoders.
+</p>
+
+<a name="Audio-Encoders"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Audio-Encoders">15. Audio Encoders</a></h1>
+
+<p>A description of some of the currently available audio encoders
+follows.
+</p>
+<p><a name="aacenc"></a>
+</p><a name="aac"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-aac">15.1 aac</a></h2>
+
+<p>Advanced Audio Coding (AAC) encoder.
+</p>
+<p>This encoder is an experimental FFmpeg-native AAC encoder. Currently only the
+low complexity (AAC-LC) profile is supported. To use this encoder, you must set
+&lsquo;<samp>strict</samp>&rsquo; option to &lsquo;<samp>experimental</samp>&rsquo; or lower.
+</p>
+<p>As this encoder is experimental, unexpected behavior may exist from time to
+time. For a more stable AAC encoder, see <a href="#libvo_002daacenc">libvo-aacenc</a>. However, be warned
+that it has a worse quality reported by some users.
+</p>
+<p>See also <a href="#libfdk_002daac_002denc">libfdk_aac</a> and <a href="#libfaac">libfaac</a>.
+</p>
+<a name="Options-11"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-11">15.1.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>Set bit rate in bits/s. Setting this automatically activates constant bit rate
+(CBR) mode.
+</p>
+</dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Set quality for variable bit rate (VBR) mode. This option is valid only using
+the <code>ffmpeg</code> command-line tool. For library interface users, use
+&lsquo;<samp>global_quality</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>stereo_mode</samp>&rsquo;</dt>
+<dd><p>Set stereo encoding mode. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Automatically selected by the encoder.
+</p>
+</dd>
+<dt> &lsquo;<samp>ms_off</samp>&rsquo;</dt>
+<dd><p>Disable middle/side encoding. This is the default.
+</p>
+</dd>
+<dt> &lsquo;<samp>ms_force</samp>&rsquo;</dt>
+<dd><p>Force middle/side encoding.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>aac_coder</samp>&rsquo;</dt>
+<dd><p>Set AAC encoder coding method. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>faac</samp>&rsquo;</dt>
+<dd><p>FAAC-inspired method.
+</p>
+<p>This method is a simplified reimplementation of the method used in FAAC, which
+sets thresholds proportional to the band energies, and then decreases all the
+thresholds with quantizer steps to find the appropriate quantization with
+distortion below threshold band by band.
+</p>
+<p>The quality of this method is comparable to the two loop searching method
+descibed below, but somewhat a little better and slower.
+</p>
+</dd>
+<dt> &lsquo;<samp>anmr</samp>&rsquo;</dt>
+<dd><p>Average noise to mask ratio (ANMR) trellis-based solution.
+</p>
+<p>This has a theoretic best quality out of all the coding methods, but at the
+cost of the slowest speed.
+</p>
+</dd>
+<dt> &lsquo;<samp>twoloop</samp>&rsquo;</dt>
+<dd><p>Two loop searching (TLS) method.
+</p>
+<p>This method first sets quantizers depending on band thresholds and then tries
+to find an optimal combination by adding or subtracting a specific value from
+all quantizers and adjusting some individual quantizer a little.
+</p>
+<p>This method produces similar quality with the FAAC method and is the default.
+</p>
+</dd>
+<dt> &lsquo;<samp>fast</samp>&rsquo;</dt>
+<dd><p>Constant quantizer method.
+</p>
+<p>This method sets a constant quantizer for all bands. This is the fastest of all
+the methods, yet produces the worst quality.
+</p>
+</dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="ac3-and-ac3_005ffixed"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-ac3-and-ac3_005ffixed">15.2 ac3 and ac3_fixed</a></h2>
+
+<p>AC-3 audio encoders.
+</p>
+<p>These encoders implement part of ATSC A/52:2010 and ETSI TS 102 366, as well as
+the undocumented RealAudio 3 (a.k.a. dnet).
+</p>
+<p>The <var>ac3</var> encoder uses floating-point math, while the <var>ac3_fixed</var>
+encoder only uses fixed-point integer math. This does not mean that one is
+always faster, just that one or the other may be better suited to a
+particular system. The floating-point encoder will generally produce better
+quality audio for a given bitrate. The <var>ac3_fixed</var> encoder is not the
+default codec for any of the output formats, so it must be specified explicitly
+using the option <code>-acodec ac3_fixed</code> in order to use it.
+</p>
+<a name="AC_002d3-Metadata"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-AC_002d3-Metadata">15.2.1 AC-3 Metadata</a></h3>
+
+<p>The AC-3 metadata options are used to set parameters that describe the audio,
+but in most cases do not affect the audio encoding itself. Some of the options
+do directly affect or influence the decoding and playback of the resulting
+bitstream, while others are just for informational purposes. A few of the
+options will add bits to the output stream that could otherwise be used for
+audio data, and will thus affect the quality of the output. Those will be
+indicated accordingly with a note in the option list below.
+</p>
+<p>These parameters are described in detail in several publicly-available
+documents.
+</p><ul>
+<li> <a href="http://www.atsc.org/cms/standards/a_52-2010.pdf">A/52:2010 - Digital Audio Compression (AC-3) (E-AC-3) Standard</a>
+</li><li> <a href="http://www.atsc.org/cms/standards/a_54a_with_corr_1.pdf">A/54 - Guide to the Use of the ATSC Digital Television Standard</a>
+</li><li> <a href="http://www.dolby.com/uploadedFiles/zz-_Shared_Assets/English_PDFs/Professional/18_Metadata.Guide.pdf">Dolby Metadata Guide</a>
+</li><li> <a href="http://www.dolby.com/uploadedFiles/zz-_Shared_Assets/English_PDFs/Professional/46_DDEncodingGuidelines.pdf">Dolby Digital Professional Encoding Guidelines</a>
+</li></ul>
+
+<a name="Metadata-Control-Options"></a>
+<h4 class="subsubsection"><a href="ffprobe-all.html#toc-Metadata-Control-Options">15.2.1.1 Metadata Control Options</a></h4>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-per_frame_metadata <var>boolean</var></samp>&rsquo;</dt>
+<dd><p>Allow Per-Frame Metadata. Specifies if the encoder should check for changing
+metadata for each frame.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>The metadata values set at initialization will be used for every frame in the
+stream. (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>Metadata values can be changed before encoding each frame.
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Downmix-Levels"></a>
+<h4 class="subsubsection"><a href="ffprobe-all.html#toc-Downmix-Levels">15.2.1.2 Downmix Levels</a></h4>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-center_mixlev <var>level</var></samp>&rsquo;</dt>
+<dd><p>Center Mix Level. The amount of gain the decoder should apply to the center
+channel when downmixing to stereo. This field will only be written to the
+bitstream if a center channel is present. The value is specified as a scale
+factor. There are 3 valid values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0.707</samp>&rsquo;</dt>
+<dd><p>Apply -3dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.595</samp>&rsquo;</dt>
+<dd><p>Apply -4.5dB gain (default)
+</p></dd>
+<dt> &lsquo;<samp>0.500</samp>&rsquo;</dt>
+<dd><p>Apply -6dB gain
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-surround_mixlev <var>level</var></samp>&rsquo;</dt>
+<dd><p>Surround Mix Level. The amount of gain the decoder should apply to the surround
+channel(s) when downmixing to stereo. This field will only be written to the
+bitstream if one or more surround channels are present. The value is specified
+as a scale factor.  There are 3 valid values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0.707</samp>&rsquo;</dt>
+<dd><p>Apply -3dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.500</samp>&rsquo;</dt>
+<dd><p>Apply -6dB gain (default)
+</p></dd>
+<dt> &lsquo;<samp>0.000</samp>&rsquo;</dt>
+<dd><p>Silence Surround Channel(s)
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Audio-Production-Information"></a>
+<h4 class="subsubsection"><a href="ffprobe-all.html#toc-Audio-Production-Information">15.2.1.3 Audio Production Information</a></h4>
+<p>Audio Production Information is optional information describing the mixing
+environment.  Either none or both of the fields are written to the bitstream.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-mixing_level <var>number</var></samp>&rsquo;</dt>
+<dd><p>Mixing Level. Specifies peak sound pressure level (SPL) in the production
+environment when the mix was mastered. Valid values are 80 to 111, or -1 for
+unknown or not indicated. The default value is -1, but that value cannot be
+used if the Audio Production Information is written to the bitstream. Therefore,
+if the <code>room_type</code> option is not the default value, the <code>mixing_level</code>
+option must not be -1.
+</p>
+</dd>
+<dt> &lsquo;<samp>-room_type <var>type</var></samp>&rsquo;</dt>
+<dd><p>Room Type. Describes the equalization used during the final mixing session at
+the studio or on the dubbing stage. A large room is a dubbing stage with the
+industry standard X-curve equalization; a small room has flat equalization.
+This field will not be written to the bitstream if both the <code>mixing_level</code>
+option and the <code>room_type</code> option have the default values.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>notindicated</samp>&rsquo;</dt>
+<dd><p>Not Indicated (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>large</samp>&rsquo;</dt>
+<dd><p>Large Room
+</p></dd>
+<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>small</samp>&rsquo;</dt>
+<dd><p>Small Room
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Other-Metadata-Options"></a>
+<h4 class="subsubsection"><a href="ffprobe-all.html#toc-Other-Metadata-Options">15.2.1.4 Other Metadata Options</a></h4>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-copyright <var>boolean</var></samp>&rsquo;</dt>
+<dd><p>Copyright Indicator. Specifies whether a copyright exists for this audio.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
+<dd><p>No Copyright Exists (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>on</samp>&rsquo;</dt>
+<dd><p>Copyright Exists
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-dialnorm <var>value</var></samp>&rsquo;</dt>
+<dd><p>Dialogue Normalization. Indicates how far the average dialogue level of the
+program is below digital 100% full scale (0 dBFS). This parameter determines a
+level shift during audio reproduction that sets the average volume of the
+dialogue to a preset level. The goal is to match volume level between program
+sources. A value of -31dB will result in no volume level change, relative to
+the source volume, during audio reproduction. Valid values are whole numbers in
+the range -31 to -1, with -31 being the default.
+</p>
+</dd>
+<dt> &lsquo;<samp>-dsur_mode <var>mode</var></samp>&rsquo;</dt>
+<dd><p>Dolby Surround Mode. Specifies whether the stereo signal uses Dolby Surround
+(Pro Logic). This field will only be written to the bitstream if the audio
+stream is stereo. Using this option does <b>NOT</b> mean the encoder will actually
+apply Dolby Surround processing.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>notindicated</samp>&rsquo;</dt>
+<dd><p>Not Indicated (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
+<dd><p>Not Dolby Surround Encoded
+</p></dd>
+<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>on</samp>&rsquo;</dt>
+<dd><p>Dolby Surround Encoded
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-original <var>boolean</var></samp>&rsquo;</dt>
+<dd><p>Original Bit Stream Indicator. Specifies whether this audio is from the
+original source and not a copy.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
+<dd><p>Not Original Source
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>on</samp>&rsquo;</dt>
+<dd><p>Original Source (default)
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Extended-Bitstream-Information"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Extended-Bitstream-Information">15.2.2 Extended Bitstream Information</a></h3>
+<p>The extended bitstream options are part of the Alternate Bit Stream Syntax as
+specified in Annex D of the A/52:2010 standard. It is grouped into 2 parts.
+If any one parameter in a group is specified, all values in that group will be
+written to the bitstream.  Default values are used for those that are written
+but have not been specified.  If the mixing levels are written, the decoder
+will use these values instead of the ones specified in the <code>center_mixlev</code>
+and <code>surround_mixlev</code> options if it supports the Alternate Bit Stream
+Syntax.
+</p>
+<a name="Extended-Bitstream-Information-_002d-Part-1"></a>
+<h4 class="subsubsection"><a href="ffprobe-all.html#toc-Extended-Bitstream-Information-_002d-Part-1">15.2.2.1 Extended Bitstream Information - Part 1</a></h4>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-dmix_mode <var>mode</var></samp>&rsquo;</dt>
+<dd><p>Preferred Stereo Downmix Mode. Allows the user to select either Lt/Rt
+(Dolby Surround) or Lo/Ro (normal stereo) as the preferred stereo downmix mode.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>notindicated</samp>&rsquo;</dt>
+<dd><p>Not Indicated (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ltrt</samp>&rsquo;</dt>
+<dd><p>Lt/Rt Downmix Preferred
+</p></dd>
+<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>loro</samp>&rsquo;</dt>
+<dd><p>Lo/Ro Downmix Preferred
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-ltrt_cmixlev <var>level</var></samp>&rsquo;</dt>
+<dd><p>Lt/Rt Center Mix Level. The amount of gain the decoder should apply to the
+center channel when downmixing to stereo in Lt/Rt mode.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>1.414</samp>&rsquo;</dt>
+<dd><p>Apply +3dB gain
+</p></dd>
+<dt> &lsquo;<samp>1.189</samp>&rsquo;</dt>
+<dd><p>Apply +1.5dB gain
+</p></dd>
+<dt> &lsquo;<samp>1.000</samp>&rsquo;</dt>
+<dd><p>Apply 0dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.841</samp>&rsquo;</dt>
+<dd><p>Apply -1.5dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.707</samp>&rsquo;</dt>
+<dd><p>Apply -3.0dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.595</samp>&rsquo;</dt>
+<dd><p>Apply -4.5dB gain (default)
+</p></dd>
+<dt> &lsquo;<samp>0.500</samp>&rsquo;</dt>
+<dd><p>Apply -6.0dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.000</samp>&rsquo;</dt>
+<dd><p>Silence Center Channel
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-ltrt_surmixlev <var>level</var></samp>&rsquo;</dt>
+<dd><p>Lt/Rt Surround Mix Level. The amount of gain the decoder should apply to the
+surround channel(s) when downmixing to stereo in Lt/Rt mode.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0.841</samp>&rsquo;</dt>
+<dd><p>Apply -1.5dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.707</samp>&rsquo;</dt>
+<dd><p>Apply -3.0dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.595</samp>&rsquo;</dt>
+<dd><p>Apply -4.5dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.500</samp>&rsquo;</dt>
+<dd><p>Apply -6.0dB gain (default)
+</p></dd>
+<dt> &lsquo;<samp>0.000</samp>&rsquo;</dt>
+<dd><p>Silence Surround Channel(s)
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-loro_cmixlev <var>level</var></samp>&rsquo;</dt>
+<dd><p>Lo/Ro Center Mix Level. The amount of gain the decoder should apply to the
+center channel when downmixing to stereo in Lo/Ro mode.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>1.414</samp>&rsquo;</dt>
+<dd><p>Apply +3dB gain
+</p></dd>
+<dt> &lsquo;<samp>1.189</samp>&rsquo;</dt>
+<dd><p>Apply +1.5dB gain
+</p></dd>
+<dt> &lsquo;<samp>1.000</samp>&rsquo;</dt>
+<dd><p>Apply 0dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.841</samp>&rsquo;</dt>
+<dd><p>Apply -1.5dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.707</samp>&rsquo;</dt>
+<dd><p>Apply -3.0dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.595</samp>&rsquo;</dt>
+<dd><p>Apply -4.5dB gain (default)
+</p></dd>
+<dt> &lsquo;<samp>0.500</samp>&rsquo;</dt>
+<dd><p>Apply -6.0dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.000</samp>&rsquo;</dt>
+<dd><p>Silence Center Channel
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-loro_surmixlev <var>level</var></samp>&rsquo;</dt>
+<dd><p>Lo/Ro Surround Mix Level. The amount of gain the decoder should apply to the
+surround channel(s) when downmixing to stereo in Lo/Ro mode.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0.841</samp>&rsquo;</dt>
+<dd><p>Apply -1.5dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.707</samp>&rsquo;</dt>
+<dd><p>Apply -3.0dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.595</samp>&rsquo;</dt>
+<dd><p>Apply -4.5dB gain
+</p></dd>
+<dt> &lsquo;<samp>0.500</samp>&rsquo;</dt>
+<dd><p>Apply -6.0dB gain (default)
+</p></dd>
+<dt> &lsquo;<samp>0.000</samp>&rsquo;</dt>
+<dd><p>Silence Surround Channel(s)
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Extended-Bitstream-Information-_002d-Part-2"></a>
+<h4 class="subsubsection"><a href="ffprobe-all.html#toc-Extended-Bitstream-Information-_002d-Part-2">15.2.2.2 Extended Bitstream Information - Part 2</a></h4>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-dsurex_mode <var>mode</var></samp>&rsquo;</dt>
+<dd><p>Dolby Surround EX Mode. Indicates whether the stream uses Dolby Surround EX
+(7.1 matrixed to 5.1). Using this option does <b>NOT</b> mean the encoder will actually
+apply Dolby Surround EX processing.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>notindicated</samp>&rsquo;</dt>
+<dd><p>Not Indicated (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>on</samp>&rsquo;</dt>
+<dd><p>Dolby Surround EX Off
+</p></dd>
+<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
+<dd><p>Dolby Surround EX On
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-dheadphone_mode <var>mode</var></samp>&rsquo;</dt>
+<dd><p>Dolby Headphone Mode. Indicates whether the stream uses Dolby Headphone
+encoding (multi-channel matrixed to 2.0 for use with headphones). Using this
+option does <b>NOT</b> mean the encoder will actually apply Dolby Headphone
+processing.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>notindicated</samp>&rsquo;</dt>
+<dd><p>Not Indicated (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>on</samp>&rsquo;</dt>
+<dd><p>Dolby Headphone Off
+</p></dd>
+<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
+<dd><p>Dolby Headphone On
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-ad_conv_type <var>type</var></samp>&rsquo;</dt>
+<dd><p>A/D Converter Type. Indicates whether the audio has passed through HDCD A/D
+conversion.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>standard</samp>&rsquo;</dt>
+<dd><p>Standard A/D Converter (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>hdcd</samp>&rsquo;</dt>
+<dd><p>HDCD A/D Converter
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Other-AC_002d3-Encoding-Options"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Other-AC_002d3-Encoding-Options">15.2.3 Other AC-3 Encoding Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-stereo_rematrixing <var>boolean</var></samp>&rsquo;</dt>
+<dd><p>Stereo Rematrixing. Enables/Disables use of rematrixing for stereo input. This
+is an optional AC-3 feature that increases quality by selectively encoding
+the left/right channels as mid/side. This option is enabled by default, and it
+is highly recommended that it be left as enabled except for testing purposes.
+</p>
+</dd>
+</dl>
+
+<a name="Floating_002dPoint_002dOnly-AC_002d3-Encoding-Options"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Floating_002dPoint_002dOnly-AC_002d3-Encoding-Options">15.2.4 Floating-Point-Only AC-3 Encoding Options</a></h3>
+
+<p>These options are only valid for the floating-point encoder and do not exist
+for the fixed-point encoder due to the corresponding features not being
+implemented in fixed-point.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-channel_coupling <var>boolean</var></samp>&rsquo;</dt>
+<dd><p>Enables/Disables use of channel coupling, which is an optional AC-3 feature
+that increases quality by combining high frequency information from multiple
+channels into a single channel. The per-channel high frequency information is
+sent with less accuracy in both the frequency and time domains. This allows
+more bits to be used for lower frequencies while preserving enough information
+to reconstruct the high frequencies. This option is enabled by default for the
+floating-point encoder and should generally be left as enabled except for
+testing purposes or to increase encoding speed.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>-1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Selected by Encoder (default)
+</p></dd>
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
+<dd><p>Disable Channel Coupling
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>on</samp>&rsquo;</dt>
+<dd><p>Enable Channel Coupling
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-cpl_start_band <var>number</var></samp>&rsquo;</dt>
+<dd><p>Coupling Start Band. Sets the channel coupling start band, from 1 to 15. If a
+value higher than the bandwidth is used, it will be reduced to 1 less than the
+coupling end band. If <var>auto</var> is used, the start band will be determined by
+the encoder based on the bit rate, sample rate, and channel layout. This option
+has no effect if channel coupling is disabled.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>-1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Selected by Encoder (default)
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<p><a name="libfaac"></a>
+</p><a name="libfaac-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-libfaac-1">15.3 libfaac</a></h2>
+
+<p>libfaac AAC (Advanced Audio Coding) encoder wrapper.
+</p>
+<p>Requires the presence of the libfaac headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libfaac --enable-nonfree</code>.
+</p>
+<p>This encoder is considered to be of higher quality with respect to the
+<a href="#aacenc">the native experimental FFmpeg AAC encoder</a>.
+</p>
+<p>For more information see the libfaac project at
+<a href="http://www.audiocoding.com/faac.html/">http://www.audiocoding.com/faac.html/</a>.
+</p>
+<a name="Options-13"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-13">15.3.1 Options</a></h3>
+
+<p>The following shared FFmpeg codec options are recognized.
+</p>
+<p>The following options are supported by the libfaac wrapper. The
+<code>faac</code>-equivalent of the options are listed in parentheses.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b (<em>-b</em>)</samp>&rsquo;</dt>
+<dd><p>Set bit rate in bits/s for ABR (Average Bit Rate) mode. If the bit rate
+is not explicitly specified, it is automatically set to a suitable
+value depending on the selected profile. <code>faac</code> bitrate is
+expressed in kilobits/s.
+</p>
+<p>Note that libfaac does not support CBR (Constant Bit Rate) but only
+ABR (Average Bit Rate).
+</p>
+<p>If VBR mode is enabled this option is ignored.
+</p>
+</dd>
+<dt> &lsquo;<samp>ar (<em>-R</em>)</samp>&rsquo;</dt>
+<dd><p>Set audio sampling rate (in Hz).
+</p>
+</dd>
+<dt> &lsquo;<samp>ac (<em>-c</em>)</samp>&rsquo;</dt>
+<dd><p>Set the number of audio channels.
+</p>
+</dd>
+<dt> &lsquo;<samp>cutoff (<em>-C</em>)</samp>&rsquo;</dt>
+<dd><p>Set cutoff frequency. If not specified (or explicitly set to 0) it
+will use a value automatically computed by the library. Default value
+is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>profile</samp>&rsquo;</dt>
+<dd><p>Set audio profile.
+</p>
+<p>The following profiles are recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>aac_main</samp>&rsquo;</dt>
+<dd><p>Main AAC (Main)
+</p>
+</dd>
+<dt> &lsquo;<samp>aac_low</samp>&rsquo;</dt>
+<dd><p>Low Complexity AAC (LC)
+</p>
+</dd>
+<dt> &lsquo;<samp>aac_ssr</samp>&rsquo;</dt>
+<dd><p>Scalable Sample Rate (SSR)
+</p>
+</dd>
+<dt> &lsquo;<samp>aac_ltp</samp>&rsquo;</dt>
+<dd><p>Long Term Prediction (LTP)
+</p></dd>
+</dl>
+
+<p>If not specified it is set to &lsquo;<samp>aac_low</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>flags +qscale</samp>&rsquo;</dt>
+<dd><p>Set constant quality VBR (Variable Bit Rate) mode.
+</p>
+</dd>
+<dt> &lsquo;<samp>global_quality</samp>&rsquo;</dt>
+<dd><p>Set quality in VBR mode as an integer number of lambda units.
+</p>
+<p>Only relevant when VBR mode is enabled with <code>flags +qscale</code>.  The
+value is converted to QP units by dividing it by <code>FF_QP2LAMBDA</code>,
+and used to set the quality value used by libfaac. A reasonable range
+for the option value in QP units is [10-500], the higher the value the
+higher the quality.
+</p>
+</dd>
+<dt> &lsquo;<samp>q (<em>-q</em>)</samp>&rsquo;</dt>
+<dd><p>Enable VBR mode when set to a non-negative value, and set constant
+quality value as a double floating point value in QP units.
+</p>
+<p>The value sets the quality value used by libfaac. A reasonable range
+for the option value is [10-500], the higher the value the higher the
+quality.
+</p>
+<p>This option is valid only using the <code>ffmpeg</code> command-line
+tool. For library interface users, use &lsquo;<samp>global_quality</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<a name="Examples-84"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-84">15.3.2 Examples</a></h3>
+
+<ul>
+<li>
+Use <code>ffmpeg</code> to convert an audio file to ABR 128 kbps AAC in an M4A (MP4)
+container:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.wav -codec:a libfaac -b:a 128k -output.m4a
+</pre></td></tr></table>
+
+</li><li>
+Use <code>ffmpeg</code> to convert an audio file to VBR AAC, using the
+LTP AAC profile:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.wav -c:a libfaac -profile:a aac_ltp -q:a 100 output.m4a
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="libfdk_002daac_002denc"></a>
+</p><a name="libfdk_005faac"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-libfdk_005faac">15.4 libfdk_aac</a></h2>
+
+<p>libfdk-aac AAC (Advanced Audio Coding) encoder wrapper.
+</p>
+<p>The libfdk-aac library is based on the Fraunhofer FDK AAC code from
+the Android project.
+</p>
+<p>Requires the presence of the libfdk-aac headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libfdk-aac</code>. The library is also incompatible with GPL,
+so if you allow the use of GPL, you should configure with
+<code>--enable-gpl --enable-nonfree --enable-libfdk-aac</code>.
+</p>
+<p>This encoder is considered to be of higher quality with respect to
+both <a href="#aacenc">the native experimental FFmpeg AAC encoder</a> and
+<a href="#libfaac">libfaac</a>.
+</p>
+<p>VBR encoding, enabled through the &lsquo;<samp>vbr</samp>&rsquo; or &lsquo;<samp>flags
++qscale</samp>&rsquo; options, is experimental and only works with some
+combinations of parameters.
+</p>
+<p>For more information see the fdk-aac project at
+<a href="http://sourceforge.net/p/opencore-amr/fdk-aac/">http://sourceforge.net/p/opencore-amr/fdk-aac/</a>.
+</p>
+<a name="Options-2"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-2">15.4.1 Options</a></h3>
+
+<p>The following options are mapped on the shared FFmpeg codec options.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>Set bit rate in bits/s. If the bitrate is not explicitly specified, it
+is automatically set to a suitable value depending on the selected
+profile.
+</p>
+<p>In case VBR mode is enabled the option is ignored.
+</p>
+</dd>
+<dt> &lsquo;<samp>ar</samp>&rsquo;</dt>
+<dd><p>Set audio sampling rate (in Hz).
+</p>
+</dd>
+<dt> &lsquo;<samp>channels</samp>&rsquo;</dt>
+<dd><p>Set the number of audio channels.
+</p>
+</dd>
+<dt> &lsquo;<samp>flags +qscale</samp>&rsquo;</dt>
+<dd><p>Enable fixed quality, VBR (Variable Bit Rate) mode.
+Note that VBR is implicitly enabled when the &lsquo;<samp>vbr</samp>&rsquo; value is
+positive.
+</p>
+</dd>
+<dt> &lsquo;<samp>cutoff</samp>&rsquo;</dt>
+<dd><p>Set cutoff frequency. If not specified (or explicitly set to 0) it
+will use a value automatically computed by the library. Default value
+is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>profile</samp>&rsquo;</dt>
+<dd><p>Set audio profile.
+</p>
+<p>The following profiles are recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>aac_low</samp>&rsquo;</dt>
+<dd><p>Low Complexity AAC (LC)
+</p>
+</dd>
+<dt> &lsquo;<samp>aac_he</samp>&rsquo;</dt>
+<dd><p>High Efficiency AAC (HE-AAC)
+</p>
+</dd>
+<dt> &lsquo;<samp>aac_he_v2</samp>&rsquo;</dt>
+<dd><p>High Efficiency AAC version 2 (HE-AACv2)
+</p>
+</dd>
+<dt> &lsquo;<samp>aac_ld</samp>&rsquo;</dt>
+<dd><p>Low Delay AAC (LD)
+</p>
+</dd>
+<dt> &lsquo;<samp>aac_eld</samp>&rsquo;</dt>
+<dd><p>Enhanced Low Delay AAC (ELD)
+</p></dd>
+</dl>
+
+<p>If not specified it is set to &lsquo;<samp>aac_low</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<p>The following are private options of the libfdk_aac encoder.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>afterburner</samp>&rsquo;</dt>
+<dd><p>Enable afterburner feature if set to 1, disabled if set to 0. This
+improves the quality but also the required processing power.
+</p>
+<p>Default value is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>eld_sbr</samp>&rsquo;</dt>
+<dd><p>Enable SBR (Spectral Band Replication) for ELD if set to 1, disabled
+if set to 0.
+</p>
+<p>Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>signaling</samp>&rsquo;</dt>
+<dd><p>Set SBR/PS signaling style.
+</p>
+<p>It can assume one of the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>default</samp>&rsquo;</dt>
+<dd><p>choose signaling implicitly (explicit hierarchical by default,
+implicit if global header is disabled)
+</p>
+</dd>
+<dt> &lsquo;<samp>implicit</samp>&rsquo;</dt>
+<dd><p>implicit backwards compatible signaling
+</p>
+</dd>
+<dt> &lsquo;<samp>explicit_sbr</samp>&rsquo;</dt>
+<dd><p>explicit SBR, implicit PS signaling
+</p>
+</dd>
+<dt> &lsquo;<samp>explicit_hierarchical</samp>&rsquo;</dt>
+<dd><p>explicit hierarchical signaling
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>default</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>latm</samp>&rsquo;</dt>
+<dd><p>Output LATM/LOAS encapsulated data if set to 1, disabled if set to 0.
+</p>
+<p>Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>header_period</samp>&rsquo;</dt>
+<dd><p>Set StreamMuxConfig and PCE repetition period (in frames) for sending
+in-band configuration buffers within LATM/LOAS transport layer.
+</p>
+<p>Must be a 16-bits non-negative integer.
+</p>
+<p>Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>vbr</samp>&rsquo;</dt>
+<dd><p>Set VBR mode, from 1 to 5. 1 is lowest quality (though still pretty
+good) and 5 is highest quality. A value of 0 will disable VBR, and CBR
+(Constant Bit Rate) is enabled.
+</p>
+<p>Currently only the &lsquo;<samp>aac_low</samp>&rsquo; profile supports VBR encoding.
+</p>
+<p>VBR modes 1-5 correspond to roughly the following average bit rates:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>32 kbps/channel
+</p></dd>
+<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dd><p>40 kbps/channel
+</p></dd>
+<dt> &lsquo;<samp>3</samp>&rsquo;</dt>
+<dd><p>48-56 kbps/channel
+</p></dd>
+<dt> &lsquo;<samp>4</samp>&rsquo;</dt>
+<dd><p>64 kbps/channel
+</p></dd>
+<dt> &lsquo;<samp>5</samp>&rsquo;</dt>
+<dd><p>about 80-96 kbps/channel
+</p></dd>
+</dl>
+
+<p>Default value is 0.
+</p></dd>
+</dl>
+
+<a name="Examples-50"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-50">15.4.2 Examples</a></h3>
+
+<ul>
+<li>
+Use <code>ffmpeg</code> to convert an audio file to VBR AAC in an M4A (MP4)
+container:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.wav -codec:a libfdk_aac -vbr 3 output.m4a
+</pre></td></tr></table>
+
+</li><li>
+Use <code>ffmpeg</code> to convert an audio file to CBR 64k kbps AAC, using the
+High-Efficiency AAC profile:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.wav -c:a libfdk_aac -profile:a aac_he -b:a 64k output.m4a
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="libmp3lame"></a>
+</p><a name="libmp3lame-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-libmp3lame-1">15.5 libmp3lame</a></h2>
+
+<p>LAME (Lame Ain&rsquo;t an MP3 Encoder) MP3 encoder wrapper.
+</p>
+<p>Requires the presence of the libmp3lame headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libmp3lame</code>.
+</p>
+<p>See <a href="#libshine">libshine</a> for a fixed-point MP3 encoder, although with a
+lower quality.
+</p>
+<a name="Options-24"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-24">15.5.1 Options</a></h3>
+
+<p>The following options are supported by the libmp3lame wrapper. The
+<code>lame</code>-equivalent of the options are listed in parentheses.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b (<em>-b</em>)</samp>&rsquo;</dt>
+<dd><p>Set bitrate expressed in bits/s for CBR or ABR. LAME <code>bitrate</code> is
+expressed in kilobits/s.
+</p>
+</dd>
+<dt> &lsquo;<samp>q (<em>-V</em>)</samp>&rsquo;</dt>
+<dd><p>Set constant quality setting for VBR. This option is valid only
+using the <code>ffmpeg</code> command-line tool. For library interface
+users, use &lsquo;<samp>global_quality</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>compression_level (<em>-q</em>)</samp>&rsquo;</dt>
+<dd><p>Set algorithm quality. Valid arguments are integers in the 0-9 range,
+with 0 meaning highest quality but slowest, and 9 meaning fastest
+while producing the worst quality.
+</p>
+</dd>
+<dt> &lsquo;<samp>reservoir</samp>&rsquo;</dt>
+<dd><p>Enable use of bit reservoir when set to 1. Default value is 1. LAME
+has this enabled by default, but can be overriden by use
+&lsquo;<samp>--nores</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>joint_stereo (<em>-m j</em>)</samp>&rsquo;</dt>
+<dd><p>Enable the encoder to use (on a frame by frame basis) either L/R
+stereo or mid/side stereo. Default value is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>abr (<em>--abr</em>)</samp>&rsquo;</dt>
+<dd><p>Enable the encoder to use ABR when set to 1. The <code>lame</code>
+&lsquo;<samp>--abr</samp>&rsquo; sets the target bitrate, while this options only
+tells FFmpeg to use ABR still relies on &lsquo;<samp>b</samp>&rsquo; to set bitrate.
+</p>
+</dd>
+</dl>
+
+<a name="libopencore_002damrnb-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-libopencore_002damrnb-1">15.6 libopencore-amrnb</a></h2>
+
+<p>OpenCORE Adaptive Multi-Rate Narrowband encoder.
+</p>
+<p>Requires the presence of the libopencore-amrnb headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libopencore-amrnb --enable-version3</code>.
+</p>
+<p>This is a mono-only encoder. Officially it only supports 8000Hz sample rate,
+but you can override it by setting &lsquo;<samp>strict</samp>&rsquo; to &lsquo;<samp>unofficial</samp>&rsquo; or
+lower.
+</p>
+<a name="Options-16"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-16">15.6.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>Set bitrate in bits per second. Only the following bitrates are supported,
+otherwise libavcodec will round to the nearest valid bitrate.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>4750</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>5150</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>5900</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>6700</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>7400</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>7950</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>10200</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>12200</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>dtx</samp>&rsquo;</dt>
+<dd><p>Allow discontinuous transmission (generate comfort noise) when set to 1. The
+default value is 0 (disabled).
+</p>
+</dd>
+</dl>
+
+<p><a name="libshine"></a>
+</p><a name="libshine-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-libshine-1">15.7 libshine</a></h2>
+
+<p>Shine Fixed-Point MP3 encoder wrapper.
+</p>
+<p>Shine is a fixed-point MP3 encoder. It has a far better performance on
+platforms without an FPU, e.g. armel CPUs, and some phones and tablets.
+However, as it is more targeted on performance than quality, it is not on par
+with LAME and other production-grade encoders quality-wise. Also, according to
+the project&rsquo;s homepage, this encoder may not be free of bugs as the code was
+written a long time ago and the project was dead for at least 5 years.
+</p>
+<p>This encoder only supports stereo and mono input. This is also CBR-only.
+</p>
+<p>The original project (last updated in early 2007) is at
+<a href="http://sourceforge.net/projects/libshine-fxp/">http://sourceforge.net/projects/libshine-fxp/</a>. We only support the
+updated fork by the Savonet/Liquidsoap project at <a href="https://github.com/savonet/shine">https://github.com/savonet/shine</a>.
+</p>
+<p>Requires the presence of the libshine headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libshine</code>.
+</p>
+<p>See also <a href="#libmp3lame">libmp3lame</a>.
+</p>
+<a name="Options"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options">15.7.1 Options</a></h3>
+
+<p>The following options are supported by the libshine wrapper. The
+<code>shineenc</code>-equivalent of the options are listed in parentheses.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b (<em>-b</em>)</samp>&rsquo;</dt>
+<dd><p>Set bitrate expressed in bits/s for CBR. <code>shineenc</code> &lsquo;<samp>-b</samp>&rsquo; option
+is expressed in kilobits/s.
+</p>
+</dd>
+</dl>
+
+<a name="libtwolame"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-libtwolame">15.8 libtwolame</a></h2>
+
+<p>TwoLAME MP2 encoder wrapper.
+</p>
+<p>Requires the presence of the libtwolame headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libtwolame</code>.
+</p>
+<a name="Options-12"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-12">15.8.1 Options</a></h3>
+
+<p>The following options are supported by the libtwolame wrapper. The
+<code>twolame</code>-equivalent options follow the FFmpeg ones and are in
+parentheses.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b (<em>-b</em>)</samp>&rsquo;</dt>
+<dd><p>Set bitrate expressed in bits/s for CBR. <code>twolame</code> &lsquo;<samp>b</samp>&rsquo;
+option is expressed in kilobits/s. Default value is 128k.
+</p>
+</dd>
+<dt> &lsquo;<samp>q (<em>-V</em>)</samp>&rsquo;</dt>
+<dd><p>Set quality for experimental VBR support. Maximum value range is
+from -50 to 50, useful range is from -10 to 10. The higher the
+value, the better the quality. This option is valid only using the
+<code>ffmpeg</code> command-line tool. For library interface users,
+use &lsquo;<samp>global_quality</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>mode (<em>--mode</em>)</samp>&rsquo;</dt>
+<dd><p>Set the mode of the resulting audio. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Choose mode automatically based on the input. This is the default.
+</p></dd>
+<dt> &lsquo;<samp>stereo</samp>&rsquo;</dt>
+<dd><p>Stereo
+</p></dd>
+<dt> &lsquo;<samp>joint_stereo</samp>&rsquo;</dt>
+<dd><p>Joint stereo
+</p></dd>
+<dt> &lsquo;<samp>dual_channel</samp>&rsquo;</dt>
+<dd><p>Dual channel
+</p></dd>
+<dt> &lsquo;<samp>mono</samp>&rsquo;</dt>
+<dd><p>Mono
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>psymodel (<em>--psyc-mode</em>)</samp>&rsquo;</dt>
+<dd><p>Set psychoacoustic model to use in encoding. The argument must be
+an integer between -1 and 4, inclusive. The higher the value, the
+better the quality. The default value is 3.
+</p>
+</dd>
+<dt> &lsquo;<samp>energy_levels (<em>--energy</em>)</samp>&rsquo;</dt>
+<dd><p>Enable energy levels extensions when set to 1. The default value is
+0 (disabled).
+</p>
+</dd>
+<dt> &lsquo;<samp>error_protection (<em>--protect</em>)</samp>&rsquo;</dt>
+<dd><p>Enable CRC error protection when set to 1. The default value is 0
+(disabled).
+</p>
+</dd>
+<dt> &lsquo;<samp>copyright (<em>--copyright</em>)</samp>&rsquo;</dt>
+<dd><p>Set MPEG audio copyright flag when set to 1. The default value is 0
+(disabled).
+</p>
+</dd>
+<dt> &lsquo;<samp>original (<em>--original</em>)</samp>&rsquo;</dt>
+<dd><p>Set MPEG audio original flag when set to 1. The default value is 0
+(disabled).
+</p>
+</dd>
+</dl>
+
+<p><a name="libvo_002daacenc"></a>
+</p><a name="libvo_002daacenc-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-libvo_002daacenc-1">15.9 libvo-aacenc</a></h2>
+
+<p>VisualOn AAC encoder.
+</p>
+<p>Requires the presence of the libvo-aacenc headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libvo-aacenc --enable-version3</code>.
+</p>
+<p>This encoder is considered to be worse than the
+<a href="#aacenc">native experimental FFmpeg AAC encoder</a>, according to
+multiple sources.
+</p>
+<a name="Options-17"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-17">15.9.1 Options</a></h3>
+
+<p>The VisualOn AAC encoder only support encoding AAC-LC and up to 2
+channels. It is also CBR-only.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>Set bit rate in bits/s.
+</p>
+</dd>
+</dl>
+
+<a name="libvo_002damrwbenc"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-libvo_002damrwbenc">15.10 libvo-amrwbenc</a></h2>
+
+<p>VisualOn Adaptive Multi-Rate Wideband encoder.
+</p>
+<p>Requires the presence of the libvo-amrwbenc headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libvo-amrwbenc --enable-version3</code>.
+</p>
+<p>This is a mono-only encoder. Officially it only supports 16000Hz sample
+rate, but you can override it by setting &lsquo;<samp>strict</samp>&rsquo; to
+&lsquo;<samp>unofficial</samp>&rsquo; or lower.
+</p>
+<a name="Options-32"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-32">15.10.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>Set bitrate in bits/s. Only the following bitrates are supported, otherwise
+libavcodec will round to the nearest valid bitrate.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>6600</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>8850</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>12650</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>14250</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>15850</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>18250</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>19850</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>23050</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>23850</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>dtx</samp>&rsquo;</dt>
+<dd><p>Allow discontinuous transmission (generate comfort noise) when set to 1. The
+default value is 0 (disabled).
+</p>
+</dd>
+</dl>
+
+<a name="libopus"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-libopus">15.11 libopus</a></h2>
+
+<p>libopus Opus Interactive Audio Codec encoder wrapper.
+</p>
+<p>Requires the presence of the libopus headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libopus</code>.
+</p>
+<a name="Option-Mapping"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Option-Mapping">15.11.1 Option Mapping</a></h3>
+
+<p>Most libopus options are modeled after the <code>opusenc</code> utility from
+opus-tools. The following is an option mapping chart describing options
+supported by the libopus wrapper, and their <code>opusenc</code>-equivalent
+in parentheses.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b (<em>bitrate</em>)</samp>&rsquo;</dt>
+<dd><p>Set the bit rate in bits/s.  FFmpeg&rsquo;s &lsquo;<samp>b</samp>&rsquo; option is
+expressed in bits/s, while <code>opusenc</code>&rsquo;s &lsquo;<samp>bitrate</samp>&rsquo; in
+kilobits/s.
+</p>
+</dd>
+<dt> &lsquo;<samp>vbr (<em>vbr</em>, <em>hard-cbr</em>, and <em>cvbr</em>)</samp>&rsquo;</dt>
+<dd><p>Set VBR mode. The FFmpeg &lsquo;<samp>vbr</samp>&rsquo; option has the following
+valid arguments, with the their <code>opusenc</code> equivalent options
+in parentheses:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>off (<em>hard-cbr</em>)</samp>&rsquo;</dt>
+<dd><p>Use constant bit rate encoding.
+</p>
+</dd>
+<dt> &lsquo;<samp>on (<em>vbr</em>)</samp>&rsquo;</dt>
+<dd><p>Use variable bit rate encoding (the default).
+</p>
+</dd>
+<dt> &lsquo;<samp>constrained (<em>cvbr</em>)</samp>&rsquo;</dt>
+<dd><p>Use constrained variable bit rate encoding.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>compression_level (<em>comp</em>)</samp>&rsquo;</dt>
+<dd><p>Set encoding algorithm complexity. Valid options are integers in
+the 0-10 range. 0 gives the fastest encodes but lower quality, while 10
+gives the highest quality but slowest encoding. The default is 10.
+</p>
+</dd>
+<dt> &lsquo;<samp>frame_duration (<em>framesize</em>)</samp>&rsquo;</dt>
+<dd><p>Set maximum frame size, or duration of a frame in milliseconds. The
+argument must be exactly the following: 2.5, 5, 10, 20, 40, 60. Smaller
+frame sizes achieve lower latency but less quality at a given bitrate.
+Sizes greater than 20ms are only interesting at fairly low bitrates.
+The default is 20ms.
+</p>
+</dd>
+<dt> &lsquo;<samp>packet_loss (<em>expect-loss</em>)</samp>&rsquo;</dt>
+<dd><p>Set expected packet loss percentage. The default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>application (N.A.)</samp>&rsquo;</dt>
+<dd><p>Set intended application type. Valid options are listed below:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>voip</samp>&rsquo;</dt>
+<dd><p>Favor improved speech intelligibility.
+</p></dd>
+<dt> &lsquo;<samp>audio</samp>&rsquo;</dt>
+<dd><p>Favor faithfulness to the input (the default).
+</p></dd>
+<dt> &lsquo;<samp>lowdelay</samp>&rsquo;</dt>
+<dd><p>Restrict to only the lowest delay modes.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>cutoff (N.A.)</samp>&rsquo;</dt>
+<dd><p>Set cutoff bandwidth in Hz. The argument must be exactly one of the
+following: 4000, 6000, 8000, 12000, or 20000, corresponding to
+narrowband, mediumband, wideband, super wideband, and fullband
+respectively. The default is 0 (cutoff disabled).
+</p>
+</dd>
+</dl>
+
+<a name="libvorbis"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-libvorbis">15.12 libvorbis</a></h2>
+
+<p>libvorbis encoder wrapper.
+</p>
+<p>Requires the presence of the libvorbisenc headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libvorbis</code>.
+</p>
+<a name="Options-1"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-1">15.12.1 Options</a></h3>
+
+<p>The following options are supported by the libvorbis wrapper. The
+<code>oggenc</code>-equivalent of the options are listed in parentheses.
+</p>
+<p>To get a more accurate and extensive documentation of the libvorbis
+options, consult the libvorbisenc&rsquo;s and <code>oggenc</code>&rsquo;s documentations.
+See <a href="http://xiph.org/vorbis/">http://xiph.org/vorbis/</a>,
+<a href="http://wiki.xiph.org/Vorbis-tools">http://wiki.xiph.org/Vorbis-tools</a>, and oggenc(1).
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b (<em>-b</em>)</samp>&rsquo;</dt>
+<dd><p>Set bitrate expressed in bits/s for ABR. <code>oggenc</code> &lsquo;<samp>-b</samp>&rsquo; is
+expressed in kilobits/s.
+</p>
+</dd>
+<dt> &lsquo;<samp>q (<em>-q</em>)</samp>&rsquo;</dt>
+<dd><p>Set constant quality setting for VBR. The value should be a float
+number in the range of -1.0 to 10.0. The higher the value, the better
+the quality. The default value is &lsquo;<samp>3.0</samp>&rsquo;.
+</p>
+<p>This option is valid only using the <code>ffmpeg</code> command-line tool.
+For library interface users, use &lsquo;<samp>global_quality</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>cutoff (<em>--advanced-encode-option lowpass_frequency=N</em>)</samp>&rsquo;</dt>
+<dd><p>Set cutoff bandwidth in Hz, a value of 0 disables cutoff. <code>oggenc</code>&rsquo;s
+related option is expressed in kHz. The default value is &lsquo;<samp>0</samp>&rsquo; (cutoff
+disabled).
+</p>
+</dd>
+<dt> &lsquo;<samp>minrate (<em>-m</em>)</samp>&rsquo;</dt>
+<dd><p>Set minimum bitrate expressed in bits/s. <code>oggenc</code> &lsquo;<samp>-m</samp>&rsquo; is
+expressed in kilobits/s.
+</p>
+</dd>
+<dt> &lsquo;<samp>maxrate (<em>-M</em>)</samp>&rsquo;</dt>
+<dd><p>Set maximum bitrate expressed in bits/s. <code>oggenc</code> &lsquo;<samp>-M</samp>&rsquo; is
+expressed in kilobits/s. This only has effect on ABR mode.
+</p>
+</dd>
+<dt> &lsquo;<samp>iblock (<em>--advanced-encode-option impulse_noisetune=N</em>)</samp>&rsquo;</dt>
+<dd><p>Set noise floor bias for impulse blocks. The value is a float number from
+-15.0 to 0.0. A negative bias instructs the encoder to pay special attention
+to the crispness of transients in the encoded audio. The tradeoff for better
+transient response is a higher bitrate.
+</p>
+</dd>
+</dl>
+
+<a name="libwavpack"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-libwavpack">15.13 libwavpack</a></h2>
+
+<p>A wrapper providing WavPack encoding through libwavpack.
+</p>
+<p>Only lossless mode using 32-bit integer samples is supported currently.
+The &lsquo;<samp>compression_level</samp>&rsquo; option can be used to control speed vs.
+compression tradeoff, with the values mapped to libwavpack as follows:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>Fast mode - corresponding to the wavpack &lsquo;<samp>-f</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>Normal (default) settings.
+</p>
+</dd>
+<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dd><p>High quality - corresponding to the wavpack &lsquo;<samp>-h</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>3</samp>&rsquo;</dt>
+<dd><p>Very high quality - corresponding to the wavpack &lsquo;<samp>-hh</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>4-8</samp>&rsquo;</dt>
+<dd><p>Same as 3, but with extra processing enabled - corresponding to the wavpack
+&lsquo;<samp>-x</samp>&rsquo; option. I.e. 4 is the same as &lsquo;<samp>-x2</samp>&rsquo; and 8 is the same as
+&lsquo;<samp>-x6</samp>&rsquo;.
+</p>
+</dd>
+</dl>
+
+
+<a name="Video-Encoders"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Video-Encoders">16. Video Encoders</a></h1>
+
+<p>A description of some of the currently available video encoders
+follows.
+</p>
+<a name="libtheora"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-libtheora">16.1 libtheora</a></h2>
+
+<p>libtheora Theora encoder wrapper.
+</p>
+<p>Requires the presence of the libtheora headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libtheora</code>.
+</p>
+<p>For more informations about the libtheora project see
+<a href="http://www.theora.org/">http://www.theora.org/</a>.
+</p>
+<a name="Options-20"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-20">16.1.1 Options</a></h3>
+
+<p>The following global options are mapped to internal libtheora options
+which affect the quality and the bitrate of the encoded stream.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>Set the video bitrate in bit/s for CBR (Constant Bit Rate) mode.  In
+case VBR (Variable Bit Rate) mode is enabled this option is ignored.
+</p>
+</dd>
+<dt> &lsquo;<samp>flags</samp>&rsquo;</dt>
+<dd><p>Used to enable constant quality mode (VBR) encoding through the
+&lsquo;<samp>qscale</samp>&rsquo; flag, and to enable the <code>pass1</code> and <code>pass2</code>
+modes.
+</p>
+</dd>
+<dt> &lsquo;<samp>g</samp>&rsquo;</dt>
+<dd><p>Set the GOP size.
+</p>
+</dd>
+<dt> &lsquo;<samp>global_quality</samp>&rsquo;</dt>
+<dd><p>Set the global quality as an integer in lambda units.
+</p>
+<p>Only relevant when VBR mode is enabled with <code>flags +qscale</code>. The
+value is converted to QP units by dividing it by <code>FF_QP2LAMBDA</code>,
+clipped in the [0 - 10] range, and then multiplied by 6.3 to get a
+value in the native libtheora range [0-63]. A higher value corresponds
+to a higher quality.
+</p>
+</dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Enable VBR mode when set to a non-negative value, and set constant
+quality value as a double floating point value in QP units.
+</p>
+<p>The value is clipped in the [0-10] range, and then multiplied by 6.3
+to get a value in the native libtheora range [0-63].
+</p>
+<p>This option is valid only using the <code>ffmpeg</code> command-line
+tool. For library interface users, use &lsquo;<samp>global_quality</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<a name="Examples-47"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-47">16.1.2 Examples</a></h3>
+
+<ul>
+<li>
+Set maximum constant quality (VBR) encoding with <code>ffmpeg</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -codec:v libtheora -q:v 10 OUTPUT.ogg
+</pre></td></tr></table>
+
+</li><li>
+Use <code>ffmpeg</code> to convert a CBR 1000 kbps Theora video stream:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -codec:v libtheora -b:v 1000k OUTPUT.ogg
+</pre></td></tr></table>
+</li></ul>
+
+<a name="libvpx"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-libvpx">16.2 libvpx</a></h2>
+
+<p>VP8 format supported through libvpx.
+</p>
+<p>Requires the presence of the libvpx headers and library during configuration.
+You need to explicitly configure the build with <code>--enable-libvpx</code>.
+</p>
+<a name="Options-23"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-23">16.2.1 Options</a></h3>
+
+<p>Mapping from FFmpeg to libvpx options with conversion notes in parentheses.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>threads</samp>&rsquo;</dt>
+<dd><p>g_threads
+</p>
+</dd>
+<dt> &lsquo;<samp>profile</samp>&rsquo;</dt>
+<dd><p>g_profile
+</p>
+</dd>
+<dt> &lsquo;<samp>vb</samp>&rsquo;</dt>
+<dd><p>rc_target_bitrate
+</p>
+</dd>
+<dt> &lsquo;<samp>g</samp>&rsquo;</dt>
+<dd><p>kf_max_dist
+</p>
+</dd>
+<dt> &lsquo;<samp>keyint_min</samp>&rsquo;</dt>
+<dd><p>kf_min_dist
+</p>
+</dd>
+<dt> &lsquo;<samp>qmin</samp>&rsquo;</dt>
+<dd><p>rc_min_quantizer
+</p>
+</dd>
+<dt> &lsquo;<samp>qmax</samp>&rsquo;</dt>
+<dd><p>rc_max_quantizer
+</p>
+</dd>
+<dt> &lsquo;<samp>bufsize, vb</samp>&rsquo;</dt>
+<dd><p>rc_buf_sz
+<code>(bufsize * 1000 / vb)</code>
+</p>
+<p>rc_buf_optimal_sz
+<code>(bufsize * 1000 / vb * 5 / 6)</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_init_occupancy, vb</samp>&rsquo;</dt>
+<dd><p>rc_buf_initial_sz
+<code>(rc_init_occupancy * 1000 / vb)</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_buffer_aggressivity</samp>&rsquo;</dt>
+<dd><p>rc_undershoot_pct
+</p>
+</dd>
+<dt> &lsquo;<samp>skip_threshold</samp>&rsquo;</dt>
+<dd><p>rc_dropframe_thresh
+</p>
+</dd>
+<dt> &lsquo;<samp>qcomp</samp>&rsquo;</dt>
+<dd><p>rc_2pass_vbr_bias_pct
+</p>
+</dd>
+<dt> &lsquo;<samp>maxrate, vb</samp>&rsquo;</dt>
+<dd><p>rc_2pass_vbr_maxsection_pct
+<code>(maxrate * 100 / vb)</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>minrate, vb</samp>&rsquo;</dt>
+<dd><p>rc_2pass_vbr_minsection_pct
+<code>(minrate * 100 / vb)</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>minrate, maxrate, vb</samp>&rsquo;</dt>
+<dd><p><code>VPX_CBR</code>
+<code>(minrate == maxrate == vb)</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>crf</samp>&rsquo;</dt>
+<dd><p><code>VPX_CQ</code>, <code>VP8E_SET_CQ_LEVEL</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>quality</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp><var>best</var></samp>&rsquo;</dt>
+<dd><p><code>VPX_DL_BEST_QUALITY</code>
+</p></dd>
+<dt> &lsquo;<samp><var>good</var></samp>&rsquo;</dt>
+<dd><p><code>VPX_DL_GOOD_QUALITY</code>
+</p></dd>
+<dt> &lsquo;<samp><var>realtime</var></samp>&rsquo;</dt>
+<dd><p><code>VPX_DL_REALTIME</code>
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>speed</samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_CPUUSED</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>nr</samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_NOISE_SENSITIVITY</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>mb_threshold</samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_STATIC_THRESHOLD</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>slices</samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_TOKEN_PARTITIONS</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>max-intra-rate</samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_MAX_INTRA_BITRATE_PCT</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>force_key_frames</samp>&rsquo;</dt>
+<dd><p><code>VPX_EFLAG_FORCE_KF</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>Alternate reference frame related</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>vp8flags altref</samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_ENABLEAUTOALTREF</code>
+</p></dd>
+<dt> &lsquo;<samp><var>arnr_max_frames</var></samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_ARNR_MAXFRAMES</code>
+</p></dd>
+<dt> &lsquo;<samp><var>arnr_type</var></samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_ARNR_TYPE</code>
+</p></dd>
+<dt> &lsquo;<samp><var>arnr_strength</var></samp>&rsquo;</dt>
+<dd><p><code>VP8E_SET_ARNR_STRENGTH</code>
+</p></dd>
+<dt> &lsquo;<samp><var>rc_lookahead</var></samp>&rsquo;</dt>
+<dd><p>g_lag_in_frames
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>vp8flags error_resilient</samp>&rsquo;</dt>
+<dd><p>g_error_resilient
+</p>
+</dd>
+</dl>
+
+<p>For more information about libvpx see:
+<a href="http://www.webmproject.org/">http://www.webmproject.org/</a>
+</p>
+<a name="libx264"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-libx264">16.3 libx264</a></h2>
+
+<p>x264 H.264/MPEG-4 AVC encoder wrapper.
+</p>
+<p>This encoder requires the presence of the libx264 headers and library
+during configuration. You need to explicitly configure the build with
+<code>--enable-libx264</code>.
+</p>
+<p>libx264 supports an impressive number of features, including 8x8 and
+4x4 adaptive spatial transform, adaptive B-frame placement, CAVLC/CABAC
+entropy coding, interlacing (MBAFF), lossless mode, psy optimizations
+for detail retention (adaptive quantization, psy-RD, psy-trellis).
+</p>
+<p>Many libx264 encoder options are mapped to FFmpeg global codec
+options, while unique encoder options are provided through private
+options. Additionally the &lsquo;<samp>x264opts</samp>&rsquo; and &lsquo;<samp>x264-params</samp>&rsquo;
+private options allows to pass a list of key=value tuples as accepted
+by the libx264 <code>x264_param_parse</code> function.
+</p>
+<p>The x264 project website is at
+<a href="http://www.videolan.org/developers/x264.html">http://www.videolan.org/developers/x264.html</a>.
+</p>
+<a name="Options-27"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-27">16.3.1 Options</a></h3>
+
+<p>The following options are supported by the libx264 wrapper. The
+<code>x264</code>-equivalent options or values are listed in parentheses
+for easy migration.
+</p>
+<p>To reduce the duplication of documentation, only the private options
+and some others requiring special attention are documented here. For
+the documentation of the undocumented generic options, see
+<a href="#codec_002doptions">the Codec Options chapter</a>.
+</p>
+<p>To get a more accurate and extensive documentation of the libx264
+options, invoke the command <code>x264 --full-help</code> or consult
+the libx264 documentation.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b (<em>bitrate</em>)</samp>&rsquo;</dt>
+<dd><p>Set bitrate in bits/s. Note that FFmpeg&rsquo;s &lsquo;<samp>b</samp>&rsquo; option is
+expressed in bits/s, while <code>x264</code>&rsquo;s &lsquo;<samp>bitrate</samp>&rsquo; is in
+kilobits/s.
+</p>
+</dd>
+<dt> &lsquo;<samp>bf (<em>bframes</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>g (<em>keyint</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qmax (<em>qpmax</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qmin (<em>qpmin</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qdiff (<em>qpstep</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qblur (<em>qblur</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qcomp (<em>qcomp</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>refs (<em>ref</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sc_threshold (<em>scenecut</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>trellis (<em>trellis</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>nr  (<em>nr</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>me_range (<em>merange</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>me_method (<em>me</em>)</samp>&rsquo;</dt>
+<dd><p>Set motion estimation method. Possible values in the decreasing order
+of speed:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>dia (<em>dia</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>epzs (<em>dia</em>)</samp>&rsquo;</dt>
+<dd><p>Diamond search with radius 1 (fastest). &lsquo;<samp>epzs</samp>&rsquo; is an alias for
+&lsquo;<samp>dia</samp>&rsquo;.
+</p></dd>
+<dt> &lsquo;<samp>hex (<em>hex</em>)</samp>&rsquo;</dt>
+<dd><p>Hexagonal search with radius 2.
+</p></dd>
+<dt> &lsquo;<samp>umh (<em>umh</em>)</samp>&rsquo;</dt>
+<dd><p>Uneven multi-hexagon search.
+</p></dd>
+<dt> &lsquo;<samp>esa (<em>esa</em>)</samp>&rsquo;</dt>
+<dd><p>Exhaustive search.
+</p></dd>
+<dt> &lsquo;<samp>tesa (<em>tesa</em>)</samp>&rsquo;</dt>
+<dd><p>Hadamard exhaustive search (slowest).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>subq (<em>subme</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>b_strategy (<em>b-adapt</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>keyint_min (<em>min-keyint</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>coder</samp>&rsquo;</dt>
+<dd><p>Set entropy encoder. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>ac</samp>&rsquo;</dt>
+<dd><p>Enable CABAC.
+</p>
+</dd>
+<dt> &lsquo;<samp>vlc</samp>&rsquo;</dt>
+<dd><p>Enable CAVLC and disable CABAC. It generates the same effect as
+<code>x264</code>&rsquo;s &lsquo;<samp>--no-cabac</samp>&rsquo; option.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>cmp</samp>&rsquo;</dt>
+<dd><p>Set full pixel motion estimation comparation algorithm. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+<dd><p>Enable chroma in motion estimation.
+</p>
+</dd>
+<dt> &lsquo;<samp>sad</samp>&rsquo;</dt>
+<dd><p>Ignore chroma in motion estimation. It generates the same effect as
+<code>x264</code>&rsquo;s &lsquo;<samp>--no-chroma-me</samp>&rsquo; option.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>threads (<em>threads</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>thread_type</samp>&rsquo;</dt>
+<dd><p>Set multithreading technique. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>slice</samp>&rsquo;</dt>
+<dd><p>Slice-based multithreading. It generates the same effect as
+<code>x264</code>&rsquo;s &lsquo;<samp>--sliced-threads</samp>&rsquo; option.
+</p></dd>
+<dt> &lsquo;<samp>frame</samp>&rsquo;</dt>
+<dd><p>Frame-based multithreading.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>flags</samp>&rsquo;</dt>
+<dd><p>Set encoding flags. It can be used to disable closed GOP and enable
+open GOP by setting it to <code>-cgop</code>. The result is similar to
+the behavior of <code>x264</code>&rsquo;s &lsquo;<samp>--open-gop</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>rc_init_occupancy (<em>vbv-init</em>)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>preset (<em>preset</em>)</samp>&rsquo;</dt>
+<dd><p>Set the encoding preset.
+</p>
+</dd>
+<dt> &lsquo;<samp>tune (<em>tune</em>)</samp>&rsquo;</dt>
+<dd><p>Set tuning of the encoding params.
+</p>
+</dd>
+<dt> &lsquo;<samp>profile (<em>profile</em>)</samp>&rsquo;</dt>
+<dd><p>Set profile restrictions.
+</p>
+</dd>
+<dt> &lsquo;<samp>fastfirstpass</samp>&rsquo;</dt>
+<dd><p>Enable fast settings when encoding first pass, when set to 1. When set
+to 0, it has the same effect of <code>x264</code>&rsquo;s
+&lsquo;<samp>--slow-firstpass</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>crf (<em>crf</em>)</samp>&rsquo;</dt>
+<dd><p>Set the quality for constant quality mode.
+</p>
+</dd>
+<dt> &lsquo;<samp>crf_max (<em>crf-max</em>)</samp>&rsquo;</dt>
+<dd><p>In CRF mode, prevents VBV from lowering quality beyond this point.
+</p>
+</dd>
+<dt> &lsquo;<samp>qp (<em>qp</em>)</samp>&rsquo;</dt>
+<dd><p>Set constant quantization rate control method parameter.
+</p>
+</dd>
+<dt> &lsquo;<samp>aq-mode (<em>aq-mode</em>)</samp>&rsquo;</dt>
+<dd><p>Set AQ method. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>none (<em>0</em>)</samp>&rsquo;</dt>
+<dd><p>Disabled.
+</p>
+</dd>
+<dt> &lsquo;<samp>variance (<em>1</em>)</samp>&rsquo;</dt>
+<dd><p>Variance AQ (complexity mask).
+</p>
+</dd>
+<dt> &lsquo;<samp>autovariance (<em>2</em>)</samp>&rsquo;</dt>
+<dd><p>Auto-variance AQ (experimental).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>aq-strength (<em>aq-strength</em>)</samp>&rsquo;</dt>
+<dd><p>Set AQ strength, reduce blocking and blurring in flat and textured areas.
+</p>
+</dd>
+<dt> &lsquo;<samp>psy</samp>&rsquo;</dt>
+<dd><p>Use psychovisual optimizations when set to 1. When set to 0, it has the
+same effect as <code>x264</code>&rsquo;s &lsquo;<samp>--no-psy</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>psy-rd  (<em>psy-rd</em>)</samp>&rsquo;</dt>
+<dd><p>Set strength of psychovisual optimization, in
+<var>psy-rd</var>:<var>psy-trellis</var> format.
+</p>
+</dd>
+<dt> &lsquo;<samp>rc-lookahead (<em>rc-lookahead</em>)</samp>&rsquo;</dt>
+<dd><p>Set number of frames to look ahead for frametype and ratecontrol.
+</p>
+</dd>
+<dt> &lsquo;<samp>weightb</samp>&rsquo;</dt>
+<dd><p>Enable weighted prediction for B-frames when set to 1. When set to 0,
+it has the same effect as <code>x264</code>&rsquo;s &lsquo;<samp>--no-weightb</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>weightp (<em>weightp</em>)</samp>&rsquo;</dt>
+<dd><p>Set weighted prediction method for P-frames. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>none (<em>0</em>)</samp>&rsquo;</dt>
+<dd><p>Disabled
+</p></dd>
+<dt> &lsquo;<samp>simple (<em>1</em>)</samp>&rsquo;</dt>
+<dd><p>Enable only weighted refs
+</p></dd>
+<dt> &lsquo;<samp>smart (<em>2</em>)</samp>&rsquo;</dt>
+<dd><p>Enable both weighted refs and duplicates
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>ssim (<em>ssim</em>)</samp>&rsquo;</dt>
+<dd><p>Enable calculation and printing SSIM stats after the encoding.
+</p>
+</dd>
+<dt> &lsquo;<samp>intra-refresh (<em>intra-refresh</em>)</samp>&rsquo;</dt>
+<dd><p>Enable the use of Periodic Intra Refresh instead of IDR frames when set
+to 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>bluray-compat (<em>bluray-compat</em>)</samp>&rsquo;</dt>
+<dd><p>Configure the encoder to be compatible with the bluray standard.
+It is a shorthand for setting &quot;bluray-compat=1 force-cfr=1&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>b-bias (<em>b-bias</em>)</samp>&rsquo;</dt>
+<dd><p>Set the influence on how often B-frames are used.
+</p>
+</dd>
+<dt> &lsquo;<samp>b-pyramid (<em>b-pyramid</em>)</samp>&rsquo;</dt>
+<dd><p>Set method for keeping of some B-frames as references. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>none (<em>none</em>)</samp>&rsquo;</dt>
+<dd><p>Disabled.
+</p></dd>
+<dt> &lsquo;<samp>strict (<em>strict</em>)</samp>&rsquo;</dt>
+<dd><p>Strictly hierarchical pyramid.
+</p></dd>
+<dt> &lsquo;<samp>normal (<em>normal</em>)</samp>&rsquo;</dt>
+<dd><p>Non-strict (not Blu-ray compatible).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>mixed-refs</samp>&rsquo;</dt>
+<dd><p>Enable the use of one reference per partition, as opposed to one
+reference per macroblock when set to 1. When set to 0, it has the
+same effect as <code>x264</code>&rsquo;s &lsquo;<samp>--no-mixed-refs</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>8x8dct</samp>&rsquo;</dt>
+<dd><p>Enable adaptive spatial transform (high profile 8x8 transform)
+when set to 1. When set to 0, it has the same effect as
+<code>x264</code>&rsquo;s &lsquo;<samp>--no-8x8dct</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>fast-pskip</samp>&rsquo;</dt>
+<dd><p>Enable early SKIP detection on P-frames when set to 1. When set
+to 0, it has the same effect as <code>x264</code>&rsquo;s
+&lsquo;<samp>--no-fast-pskip</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>aud (<em>aud</em>)</samp>&rsquo;</dt>
+<dd><p>Enable use of access unit delimiters when set to 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>mbtree</samp>&rsquo;</dt>
+<dd><p>Enable use macroblock tree ratecontrol when set to 1. When set
+to 0, it has the same effect as <code>x264</code>&rsquo;s
+&lsquo;<samp>--no-mbtree</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>deblock (<em>deblock</em>)</samp>&rsquo;</dt>
+<dd><p>Set loop filter parameters, in <var>alpha</var>:<var>beta</var> form.
+</p>
+</dd>
+<dt> &lsquo;<samp>cplxblur (<em>cplxblur</em>)</samp>&rsquo;</dt>
+<dd><p>Set fluctuations reduction in QP (before curve compression).
+</p>
+</dd>
+<dt> &lsquo;<samp>partitions (<em>partitions</em>)</samp>&rsquo;</dt>
+<dd><p>Set partitions to consider as a comma-separated list of. Possible
+values in the list:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>p8x8</samp>&rsquo;</dt>
+<dd><p>8x8 P-frame partition.
+</p></dd>
+<dt> &lsquo;<samp>p4x4</samp>&rsquo;</dt>
+<dd><p>4x4 P-frame partition.
+</p></dd>
+<dt> &lsquo;<samp>b8x8</samp>&rsquo;</dt>
+<dd><p>4x4 B-frame partition.
+</p></dd>
+<dt> &lsquo;<samp>i8x8</samp>&rsquo;</dt>
+<dd><p>8x8 I-frame partition.
+</p></dd>
+<dt> &lsquo;<samp>i4x4</samp>&rsquo;</dt>
+<dd><p>4x4 I-frame partition.
+(Enabling &lsquo;<samp>p4x4</samp>&rsquo; requires &lsquo;<samp>p8x8</samp>&rsquo; to be enabled. Enabling
+&lsquo;<samp>i8x8</samp>&rsquo; requires adaptive spatial transform (&lsquo;<samp>8x8dct</samp>&rsquo;
+option) to be enabled.)
+</p></dd>
+<dt> &lsquo;<samp>none (<em>none</em>)</samp>&rsquo;</dt>
+<dd><p>Do not consider any partitions.
+</p></dd>
+<dt> &lsquo;<samp>all (<em>all</em>)</samp>&rsquo;</dt>
+<dd><p>Consider every partition.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>direct-pred (<em>direct</em>)</samp>&rsquo;</dt>
+<dd><p>Set direct MV prediction mode. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>none (<em>none</em>)</samp>&rsquo;</dt>
+<dd><p>Disable MV prediction.
+</p></dd>
+<dt> &lsquo;<samp>spatial (<em>spatial</em>)</samp>&rsquo;</dt>
+<dd><p>Enable spatial predicting.
+</p></dd>
+<dt> &lsquo;<samp>temporal (<em>temporal</em>)</samp>&rsquo;</dt>
+<dd><p>Enable temporal predicting.
+</p></dd>
+<dt> &lsquo;<samp>auto (<em>auto</em>)</samp>&rsquo;</dt>
+<dd><p>Automatically decided.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>slice-max-size (<em>slice-max-size</em>)</samp>&rsquo;</dt>
+<dd><p>Set the limit of the size of each slice in bytes. If not specified
+but RTP payload size (&lsquo;<samp>ps</samp>&rsquo;) is specified, that is used.
+</p>
+</dd>
+<dt> &lsquo;<samp>stats (<em>stats</em>)</samp>&rsquo;</dt>
+<dd><p>Set the file name for multi-pass stats.
+</p>
+</dd>
+<dt> &lsquo;<samp>nal-hrd (<em>nal-hrd</em>)</samp>&rsquo;</dt>
+<dd><p>Set signal HRD information (requires &lsquo;<samp>vbv-bufsize</samp>&rsquo; to be set).
+Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>none (<em>none</em>)</samp>&rsquo;</dt>
+<dd><p>Disable HRD information signaling.
+</p></dd>
+<dt> &lsquo;<samp>vbr (<em>vbr</em>)</samp>&rsquo;</dt>
+<dd><p>Variable bit rate.
+</p></dd>
+<dt> &lsquo;<samp>cbr (<em>cbr</em>)</samp>&rsquo;</dt>
+<dd><p>Constant bit rate (not allowed in MP4 container).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>x264opts (N.A.)</samp>&rsquo;</dt>
+<dd><p>Set any x264 option, see <code>x264 --fullhelp</code> for a list.
+</p>
+<p>Argument is a list of <var>key</var>=<var>value</var> couples separated by
+&quot;:&quot;. In <var>filter</var> and <var>psy-rd</var> options that use &quot;:&quot; as a separator
+themselves, use &quot;,&quot; instead. They accept it as well since long ago but this
+is kept undocumented for some reason.
+</p>
+<p>For example to specify libx264 encoding options with <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i foo.mpg -vcodec libx264 -x264opts keyint=123:min-keyint=20 -an out.mkv
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>x264-params (N.A.)</samp>&rsquo;</dt>
+<dd><p>Override the x264 configuration using a :-separated list of key=value
+parameters.
+</p>
+<p>This option is functionally the same as the &lsquo;<samp>x264opts</samp>&rsquo;, but is
+duplicated for compability with the Libav fork.
+</p>
+<p>For example to specify libx264 encoding options with <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -c:v libx264 -x264-params level=30:bframes=0:weightp=0:\
+cabac=0:ref=1:vbv-maxrate=768:vbv-bufsize=2000:analyse=all:me=umh:\
+no-fast-pskip=1:subq=6:8x8dct=0:trellis=0 OUTPUT
+</pre></td></tr></table>
+</dd>
+</dl>
+
+<p>Encoding ffpresets for common usages are provided so they can be used with the
+general presets system (e.g. passing the &lsquo;<samp>pre</samp>&rsquo; option).
+</p>
+<a name="libxvid"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-libxvid">16.4 libxvid</a></h2>
+
+<p>Xvid MPEG-4 Part 2 encoder wrapper.
+</p>
+<p>This encoder requires the presence of the libxvidcore headers and library
+during configuration. You need to explicitly configure the build with
+<code>--enable-libxvid --enable-gpl</code>.
+</p>
+<p>The native <code>mpeg4</code> encoder supports the MPEG-4 Part 2 format, so
+users can encode to this format without this library.
+</p>
+<a name="Options-19"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-19">16.4.1 Options</a></h3>
+
+<p>The following options are supported by the libxvid wrapper. Some of
+the following options are listed but are not documented, and
+correspond to shared codec options. See <a href="#codec_002doptions">the Codec Options chapter</a> for their documentation. The other shared options
+which are not listed have no effect for the libxvid encoder.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>g</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qmin</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>qmax</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mpeg_quant</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>threads</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bf</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>b_qfactor</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>b_qoffset</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>flags</samp>&rsquo;</dt>
+<dd><p>Set specific encoding flags. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>mv4</samp>&rsquo;</dt>
+<dd><p>Use four motion vector by macroblock.
+</p>
+</dd>
+<dt> &lsquo;<samp>aic</samp>&rsquo;</dt>
+<dd><p>Enable high quality AC prediction.
+</p>
+</dd>
+<dt> &lsquo;<samp>gray</samp>&rsquo;</dt>
+<dd><p>Only encode grayscale.
+</p>
+</dd>
+<dt> &lsquo;<samp>gmc</samp>&rsquo;</dt>
+<dd><p>Enable the use of global motion compensation (GMC).
+</p>
+</dd>
+<dt> &lsquo;<samp>qpel</samp>&rsquo;</dt>
+<dd><p>Enable quarter-pixel motion compensation.
+</p>
+</dd>
+<dt> &lsquo;<samp>cgop</samp>&rsquo;</dt>
+<dd><p>Enable closed GOP.
+</p>
+</dd>
+<dt> &lsquo;<samp>global_header</samp>&rsquo;</dt>
+<dd><p>Place global headers in extradata instead of every keyframe.
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>trellis</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>me_method</samp>&rsquo;</dt>
+<dd><p>Set motion estimation method. Possible values in decreasing order of
+speed and increasing order of quality:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>Use no motion estimation (default).
+</p>
+</dd>
+<dt> &lsquo;<samp>phods</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>x1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>log</samp>&rsquo;</dt>
+<dd><p>Enable advanced diamond zonal search for 16x16 blocks and half-pixel
+refinement for 16x16 blocks. &lsquo;<samp>x1</samp>&rsquo; and &lsquo;<samp>log</samp>&rsquo; are aliases for
+&lsquo;<samp>phods</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>epzs</samp>&rsquo;</dt>
+<dd><p>Enable all of the things described above, plus advanced diamond zonal
+search for 8x8 blocks, half-pixel refinement for 8x8 blocks, and motion
+estimation on chroma planes.
+</p>
+</dd>
+<dt> &lsquo;<samp>full</samp>&rsquo;</dt>
+<dd><p>Enable all of the things described above, plus extended 16x16 and 8x8
+blocks search.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>mbd</samp>&rsquo;</dt>
+<dd><p>Set macroblock decision algorithm. Possible values in the increasing
+order of quality:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>simple</samp>&rsquo;</dt>
+<dd><p>Use macroblock comparing function algorithm (default).
+</p>
+</dd>
+<dt> &lsquo;<samp>bits</samp>&rsquo;</dt>
+<dd><p>Enable rate distortion-based half pixel and quarter pixel refinement for
+16x16 blocks.
+</p>
+</dd>
+<dt> &lsquo;<samp>rd</samp>&rsquo;</dt>
+<dd><p>Enable all of the things described above, plus rate distortion-based
+half pixel and quarter pixel refinement for 8x8 blocks, and rate
+distortion-based search using square pattern.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>lumi_aq</samp>&rsquo;</dt>
+<dd><p>Enable lumi masking adaptive quantization when set to 1. Default is 0
+(disabled).
+</p>
+</dd>
+<dt> &lsquo;<samp>variance_aq</samp>&rsquo;</dt>
+<dd><p>Enable variance adaptive quantization when set to 1. Default is 0
+(disabled).
+</p>
+<p>When combined with &lsquo;<samp>lumi_aq</samp>&rsquo;, the resulting quality will not
+be better than any of the two specified individually. In other
+words, the resulting quality will be the worse one of the two
+effects.
+</p>
+</dd>
+<dt> &lsquo;<samp>ssim</samp>&rsquo;</dt>
+<dd><p>Set structural similarity (SSIM) displaying method. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
+<dd><p>Disable displaying of SSIM information.
+</p>
+</dd>
+<dt> &lsquo;<samp>avg</samp>&rsquo;</dt>
+<dd><p>Output average SSIM at the end of encoding to stdout. The format of
+showing the average SSIM is:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">Average SSIM: %f
+</pre></td></tr></table>
+
+<p>For users who are not familiar with C, %f means a float number, or
+a decimal (e.g. 0.939232).
+</p>
+</dd>
+<dt> &lsquo;<samp>frame</samp>&rsquo;</dt>
+<dd><p>Output both per-frame SSIM data during encoding and average SSIM at
+the end of encoding to stdout. The format of per-frame information
+is:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">       SSIM: avg: %1.3f min: %1.3f max: %1.3f
+</pre></td></tr></table>
+
+<p>For users who are not familiar with C, %1.3f means a float number
+rounded to 3 digits after the dot (e.g. 0.932).
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>ssim_acc</samp>&rsquo;</dt>
+<dd><p>Set SSIM accuracy. Valid options are integers within the range of
+0-4, while 0 gives the most accurate result and 4 computes the
+fastest.
+</p>
+</dd>
+</dl>
+
+<a name="png"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-png">16.5 png</a></h2>
+
+<p>PNG image encoder.
+</p>
+<a name="Private-options"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Private-options">16.5.1 Private options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>dpi <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Set physical density of pixels, in dots per inch, unset by default
+</p></dd>
+<dt> &lsquo;<samp>dpm <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Set physical density of pixels, in dots per meter, unset by default
+</p></dd>
+</dl>
+
+<a name="ProRes"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-ProRes">16.6 ProRes</a></h2>
+
+<p>Apple ProRes encoder.
+</p>
+<p>FFmpeg contains 2 ProRes encoders, the prores-aw and prores-ks encoder.
+The used encoder can be choosen with the <code>-vcodec</code> option.
+</p>
+<a name="Private-Options-for-prores_002dks"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Private-Options-for-prores_002dks">16.6.1 Private Options for prores-ks</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>profile <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Select the ProRes profile to encode
+</p><dl compact="compact">
+<dt> &lsquo;<samp>proxy</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>lt</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>standard</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>hq</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>4444</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>quant_mat <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Select quantization matrix.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>default</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>proxy</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>lt</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>standard</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>hq</samp>&rsquo;</dt>
+</dl>
+<p>If set to <var>auto</var>, the matrix matching the profile will be picked.
+If not set, the matrix providing the highest quality, <var>default</var>, will be
+picked.
+</p>
+</dd>
+<dt> &lsquo;<samp>bits_per_mb <var>integer</var></samp>&rsquo;</dt>
+<dd><p>How many bits to allot for coding one macroblock. Different profiles use
+between 200 and 2400 bits per macroblock, the maximum is 8000.
+</p>
+</dd>
+<dt> &lsquo;<samp>mbs_per_slice <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Number of macroblocks in each slice (1-8); the default value (8)
+should be good in almost all situations.
+</p>
+</dd>
+<dt> &lsquo;<samp>vendor <var>string</var></samp>&rsquo;</dt>
+<dd><p>Override the 4-byte vendor ID.
+A custom vendor ID like <var>apl0</var> would claim the stream was produced by
+the Apple encoder.
+</p>
+</dd>
+<dt> &lsquo;<samp>alpha_bits <var>integer</var></samp>&rsquo;</dt>
+<dd><p>Specify number of bits for alpha component.
+Possible values are <var>0</var>, <var>8</var> and <var>16</var>.
+Use <var>0</var> to disable alpha plane coding.
+</p>
+</dd>
+</dl>
+
+<a name="Speed-considerations"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Speed-considerations">16.6.2 Speed considerations</a></h3>
+
+<p>In the default mode of operation the encoder has to honor frame constraints
+(i.e. not produc frames with size bigger than requested) while still making
+output picture as good as possible.
+A frame containing a lot of small details is harder to compress and the encoder
+would spend more time searching for appropriate quantizers for each slice.
+</p>
+<p>Setting a higher &lsquo;<samp>bits_per_mb</samp>&rsquo; limit will improve the speed.
+</p>
+<p>For the fastest encoding speed set the &lsquo;<samp>qscale</samp>&rsquo; parameter (4 is the
+recommended value) and do not set a size constraint.
+</p>
+<a name="Bitstream-Filters"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Bitstream-Filters">17. Bitstream Filters</a></h1>
+
+<p>When you configure your FFmpeg build, all the supported bitstream
+filters are enabled by default. You can list all available ones using
+the configure option <code>--list-bsfs</code>.
+</p>
+<p>You can disable all the bitstream filters using the configure option
+<code>--disable-bsfs</code>, and selectively enable any bitstream filter using
+the option <code>--enable-bsf=BSF</code>, or you can disable a particular
+bitstream filter using the option <code>--disable-bsf=BSF</code>.
+</p>
+<p>The option <code>-bsfs</code> of the ff* tools will display the list of
+all the supported bitstream filters included in your build.
+</p>
+<p>Below is a description of the currently available bitstream filters.
+</p>
+<a name="aac_005fadtstoasc"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-aac_005fadtstoasc">17.1 aac_adtstoasc</a></h2>
+
+<p>Convert MPEG-2/4 AAC ADTS to MPEG-4 Audio Specific Configuration
+bitstream filter.
+</p>
+<p>This filter creates an MPEG-4 AudioSpecificConfig from an MPEG-2/4
+ADTS header and removes the ADTS header.
+</p>
+<p>This is required for example when copying an AAC stream from a raw
+ADTS AAC container to a FLV or a MOV/MP4 file.
+</p>
+<a name="chomp"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-chomp">17.2 chomp</a></h2>
+
+<p>Remove zero padding at the end of a packet.
+</p>
+<a name="dump_005fextra"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-dump_005fextra">17.3 dump_extra</a></h2>
+
+<p>Add extradata to the beginning of the filtered packets.
+</p>
+<p>The additional argument specifies which packets should be filtered.
+It accepts the values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>add extradata to all key packets, but only if <var>local_header</var> is
+set in the &lsquo;<samp>flags2</samp>&rsquo; codec context field
+</p>
+</dd>
+<dt> &lsquo;<samp>k</samp>&rsquo;</dt>
+<dd><p>add extradata to all key packets
+</p>
+</dd>
+<dt> &lsquo;<samp>e</samp>&rsquo;</dt>
+<dd><p>add extradata to all packets
+</p></dd>
+</dl>
+
+<p>If not specified it is assumed &lsquo;<samp>k</samp>&rsquo;.
+</p>
+<p>For example the following <code>ffmpeg</code> command forces a global
+header (thus disabling individual packet headers) in the H.264 packets
+generated by the <code>libx264</code> encoder, but corrects them by adding
+the header stored in extradata to the key packets:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -map 0 -flags:v +global_header -c:v libx264 -bsf:v dump_extra out.ts
+</pre></td></tr></table>
+
+<a name="h264_005fmp4toannexb"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-h264_005fmp4toannexb">17.4 h264_mp4toannexb</a></h2>
+
+<p>Convert an H.264 bitstream from length prefixed mode to start code
+prefixed mode (as defined in the Annex B of the ITU-T H.264
+specification).
+</p>
+<p>This is required by some streaming formats, typically the MPEG-2
+transport stream format (&quot;mpegts&quot;).
+</p>
+<p>For example to remux an MP4 file containing an H.264 stream to mpegts
+format with <code>ffmpeg</code>, you can use the command:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT.mp4 -codec copy -bsf:v h264_mp4toannexb OUTPUT.ts
+</pre></td></tr></table>
+
+<a name="imx_005fdump_005fheader"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-imx_005fdump_005fheader">17.5 imx_dump_header</a></h2>
+
+<a name="mjpeg2jpeg"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-mjpeg2jpeg">17.6 mjpeg2jpeg</a></h2>
+
+<p>Convert MJPEG/AVI1 packets to full JPEG/JFIF packets.
+</p>
+<p>MJPEG is a video codec wherein each video frame is essentially a
+JPEG image. The individual frames can be extracted without loss,
+e.g. by
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i ../some_mjpeg.avi -c:v copy frames_%d.jpg
+</pre></td></tr></table>
+
+<p>Unfortunately, these chunks are incomplete JPEG images, because
+they lack the DHT segment required for decoding. Quoting from
+<a href="http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml">http://www.digitalpreservation.gov/formats/fdd/fdd000063.shtml</a>:
+</p>
+<p>Avery Lee, writing in the rec.video.desktop newsgroup in 2001,
+commented that &quot;MJPEG, or at least the MJPEG in AVIs having the
+MJPG fourcc, is restricted JPEG with a fixed &ndash; and *omitted* &ndash;
+Huffman table. The JPEG must be YCbCr colorspace, it must be 4:2:2,
+and it must use basic Huffman encoding, not arithmetic or
+progressive. . . . You can indeed extract the MJPEG frames and
+decode them with a regular JPEG decoder, but you have to prepend
+the DHT segment to them, or else the decoder won&rsquo;t have any idea
+how to decompress the data. The exact table necessary is given in
+the OpenDML spec.&quot;
+</p>
+<p>This bitstream filter patches the header of frames extracted from an MJPEG
+stream (carrying the AVI1 header ID and lacking a DHT segment) to
+produce fully qualified JPEG images.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i mjpeg-movie.avi -c:v copy -bsf:v mjpeg2jpeg frame_%d.jpg
+exiftran -i -9 frame*.jpg
+ffmpeg -i frame_%d.jpg -c:v copy rotated.avi
+</pre></td></tr></table>
+
+<a name="mjpega_005fdump_005fheader"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-mjpega_005fdump_005fheader">17.7 mjpega_dump_header</a></h2>
+
+<a name="movsub"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-movsub">17.8 movsub</a></h2>
+
+<a name="mp3_005fheader_005fdecompress"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-mp3_005fheader_005fdecompress">17.9 mp3_header_decompress</a></h2>
+
+<a name="noise"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-noise">17.10 noise</a></h2>
+
+<a name="remove_005fextra"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-remove_005fextra">17.11 remove_extra</a></h2>
+
+<a name="Format-Options"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Format-Options">18. Format Options</a></h1>
+
+<p>The libavformat library provides some generic global options, which
+can be set on all the muxers and demuxers. In addition each muxer or
+demuxer may support so-called private options, which are specific for
+that component.
+</p>
+<p>Options may be set by specifying -<var>option</var> <var>value</var> in the
+FFmpeg tools, or by setting the value explicitly in the
+<code>AVFormatContext</code> options or using the &lsquo;<tt>libavutil/opt.h</tt>&rsquo; API
+for programmatic use.
+</p>
+<p>The list of supported options follows:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>avioflags <var>flags</var> (<em>input/output</em>)</samp>&rsquo;</dt>
+<dd><p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>direct</samp>&rsquo;</dt>
+<dd><p>Reduce buffering.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>probesize <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Set probing size in bytes, i.e. the size of the data to analyze to get
+stream information. A higher value will allow to detect more
+information in case it is dispersed into the stream, but will increase
+latency. Must be an integer not lesser than 32. It is 5000000 by default.
+</p>
+</dd>
+<dt> &lsquo;<samp>packetsize <var>integer</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set packet size.
+</p>
+</dd>
+<dt> &lsquo;<samp>fflags <var>flags</var> (<em>input/output</em>)</samp>&rsquo;</dt>
+<dd><p>Set format flags.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>ignidx</samp>&rsquo;</dt>
+<dd><p>Ignore index.
+</p></dd>
+<dt> &lsquo;<samp>genpts</samp>&rsquo;</dt>
+<dd><p>Generate PTS.
+</p></dd>
+<dt> &lsquo;<samp>nofillin</samp>&rsquo;</dt>
+<dd><p>Do not fill in missing values that can be exactly calculated.
+</p></dd>
+<dt> &lsquo;<samp>noparse</samp>&rsquo;</dt>
+<dd><p>Disable AVParsers, this needs <code>+nofillin</code> too.
+</p></dd>
+<dt> &lsquo;<samp>igndts</samp>&rsquo;</dt>
+<dd><p>Ignore DTS.
+</p></dd>
+<dt> &lsquo;<samp>discardcorrupt</samp>&rsquo;</dt>
+<dd><p>Discard corrupted frames.
+</p></dd>
+<dt> &lsquo;<samp>sortdts</samp>&rsquo;</dt>
+<dd><p>Try to interleave output packets by DTS.
+</p></dd>
+<dt> &lsquo;<samp>keepside</samp>&rsquo;</dt>
+<dd><p>Do not merge side data.
+</p></dd>
+<dt> &lsquo;<samp>latm</samp>&rsquo;</dt>
+<dd><p>Enable RTP MP4A-LATM payload.
+</p></dd>
+<dt> &lsquo;<samp>nobuffer</samp>&rsquo;</dt>
+<dd><p>Reduce the latency introduced by optional buffering
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>seek2any <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Allow seeking to non-keyframes on demuxer level when supported if set to 1.
+Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>analyzeduration <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Specify how many microseconds are analyzed to probe the input. A
+higher value will allow to detect more accurate information, but will
+increase latency. It defaults to 5,000,000 microseconds = 5 seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>cryptokey <var>hexadecimal string</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Set decryption key.
+</p>
+</dd>
+<dt> &lsquo;<samp>indexmem <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Set max memory used for timestamp index (per stream).
+</p>
+</dd>
+<dt> &lsquo;<samp>rtbufsize <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Set max memory used for buffering real-time frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>fdebug <var>flags</var> (<em>input/output</em>)</samp>&rsquo;</dt>
+<dd><p>Print specific debug info.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>ts</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>max_delay <var>integer</var> (<em>input/output</em>)</samp>&rsquo;</dt>
+<dd><p>Set maximum muxing or demuxing delay in microseconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>fpsprobesize <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Set number of frames used to probe fps.
+</p>
+</dd>
+<dt> &lsquo;<samp>audio_preload <var>integer</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set microseconds by which audio packets should be interleaved earlier.
+</p>
+</dd>
+<dt> &lsquo;<samp>chunk_duration <var>integer</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set microseconds for each chunk.
+</p>
+</dd>
+<dt> &lsquo;<samp>chunk_size <var>integer</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set size in bytes for each chunk.
+</p>
+</dd>
+<dt> &lsquo;<samp>err_detect, f_err_detect <var>flags</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Set error detection flags. <code>f_err_detect</code> is deprecated and
+should be used only via the <code>ffmpeg</code> tool.
+</p>
+<p>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>crccheck</samp>&rsquo;</dt>
+<dd><p>Verify embedded CRCs.
+</p></dd>
+<dt> &lsquo;<samp>bitstream</samp>&rsquo;</dt>
+<dd><p>Detect bitstream specification deviations.
+</p></dd>
+<dt> &lsquo;<samp>buffer</samp>&rsquo;</dt>
+<dd><p>Detect improper bitstream length.
+</p></dd>
+<dt> &lsquo;<samp>explode</samp>&rsquo;</dt>
+<dd><p>Abort decoding on minor error detection.
+</p></dd>
+<dt> &lsquo;<samp>careful</samp>&rsquo;</dt>
+<dd><p>Consider things that violate the spec and have not been seen in the
+wild as errors.
+</p></dd>
+<dt> &lsquo;<samp>compliant</samp>&rsquo;</dt>
+<dd><p>Consider all spec non compliancies as errors.
+</p></dd>
+<dt> &lsquo;<samp>aggressive</samp>&rsquo;</dt>
+<dd><p>Consider things that a sane encoder should not do as an error.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>use_wallclock_as_timestamps <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Use wallclock as timestamps.
+</p>
+</dd>
+<dt> &lsquo;<samp>avoid_negative_ts <var>integer</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Shift timestamps to make them non-negative. A value of 1 enables shifting,
+a value of 0 disables it, the default value of -1 enables shifting
+when required by the target format.
+</p>
+<p>When shifting is enabled, all output timestamps are shifted by the
+same amount. Audio, video, and subtitles desynching and relative
+timestamp differences are preserved compared to how they would have
+been without shifting.
+</p>
+<p>Also note that this affects only leading negative timestamps, and not
+non-monotonic negative timestamps.
+</p>
+</dd>
+<dt> &lsquo;<samp>skip_initial_bytes <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Set number of bytes to skip before reading header and frames if set to 1.
+Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>correct_ts_overflow <var>integer</var> (<em>input</em>)</samp>&rsquo;</dt>
+<dd><p>Correct single timestamp overflows if set to 1. Default is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>flush_packets <var>integer</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Flush the underlying I/O stream after each packet. Default 1 enables it, and
+has the effect of reducing the latency; 0 disables it and may slightly
+increase performance in some cases.
+</p></dd>
+</dl>
+
+
+<p><a name="Format-stream-specifiers"></a>
+</p><a name="Format-stream-specifiers-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-Format-stream-specifiers-1">18.1 Format stream specifiers</a></h2>
+
+<p>Format stream specifiers allow selection of one or more streams that
+match specific properties.
+</p>
+<p>Possible forms of stream specifiers are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp><var>stream_index</var></samp>&rsquo;</dt>
+<dd><p>Matches the stream with this index.
+</p>
+</dd>
+<dt> &lsquo;<samp><var>stream_type</var>[:<var>stream_index</var>]</samp>&rsquo;</dt>
+<dd><p><var>stream_type</var> is one of following: &rsquo;v&rsquo; for video, &rsquo;a&rsquo; for audio,
+&rsquo;s&rsquo; for subtitle, &rsquo;d&rsquo; for data, and &rsquo;t&rsquo; for attachments. If
+<var>stream_index</var> is given, then it matches the stream number
+<var>stream_index</var> of this type. Otherwise, it matches all streams of
+this type.
+</p>
+</dd>
+<dt> &lsquo;<samp>p:<var>program_id</var>[:<var>stream_index</var>]</samp>&rsquo;</dt>
+<dd><p>If <var>stream_index</var> is given, then it matches the stream with number
+<var>stream_index</var> in the program with the id
+<var>program_id</var>. Otherwise, it matches all streams in the program.
+</p>
+</dd>
+<dt> &lsquo;<samp>#<var>stream_id</var></samp>&rsquo;</dt>
+<dd><p>Matches the stream by a format-specific ID.
+</p></dd>
+</dl>
+
+<p>The exact semantics of stream specifiers is defined by the
+<code>avformat_match_stream_specifier()</code> function declared in the
+&lsquo;<tt>libavformat/avformat.h</tt>&rsquo; header.
+</p>
+<a name="Demuxers"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Demuxers">19. Demuxers</a></h1>
+
+<p>Demuxers are configured elements in FFmpeg that can read the
+multimedia streams from a particular type of file.
+</p>
+<p>When you configure your FFmpeg build, all the supported demuxers
+are enabled by default. You can list all available ones using the
+configure option <code>--list-demuxers</code>.
+</p>
+<p>You can disable all the demuxers using the configure option
+<code>--disable-demuxers</code>, and selectively enable a single demuxer with
+the option <code>--enable-demuxer=<var>DEMUXER</var></code>, or disable it
+with the option <code>--disable-demuxer=<var>DEMUXER</var></code>.
+</p>
+<p>The option <code>-formats</code> of the ff* tools will display the list of
+enabled demuxers.
+</p>
+<p>The description of some of the currently available demuxers follows.
+</p>
+<a name="applehttp"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-applehttp">19.1 applehttp</a></h2>
+
+<p>Apple HTTP Live Streaming demuxer.
+</p>
+<p>This demuxer presents all AVStreams from all variant streams.
+The id field is set to the bitrate variant index number. By setting
+the discard flags on AVStreams (by pressing &rsquo;a&rsquo; or &rsquo;v&rsquo; in ffplay),
+the caller can decide which variant streams to actually receive.
+The total bitrate of the variant that the stream belongs to is
+available in a metadata key named &quot;variant_bitrate&quot;.
+</p>
+<a name="asf"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-asf">19.2 asf</a></h2>
+
+<p>Advanced Systems Format demuxer.
+</p>
+<p>This demuxer is used to demux ASF files and MMS network streams.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-no_resync_search <var>bool</var></samp>&rsquo;</dt>
+<dd><p>Do not try to resynchronize by looking for a certain optional start code.
+</p></dd>
+</dl>
+
+<p><a name="concat"></a>
+</p><a name="concat-2"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-concat-2">19.3 concat</a></h2>
+
+<p>Virtual concatenation script demuxer.
+</p>
+<p>This demuxer reads a list of files and other directives from a text file and
+demuxes them one after the other, as if all their packet had been muxed
+together.
+</p>
+<p>The timestamps in the files are adjusted so that the first file starts at 0
+and each next file starts where the previous one finishes. Note that it is
+done globally and may cause gaps if all streams do not have exactly the same
+length.
+</p>
+<p>All files must have the same streams (same codecs, same time base, etc.).
+</p>
+<p>The duration of each file is used to adjust the timestamps of the next file:
+if the duration is incorrect (because it was computed using the bit-rate or
+because the file is truncated, for example), it can cause artifacts. The
+<code>duration</code> directive can be used to override the duration stored in
+each file.
+</p>
+<a name="Syntax-2"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Syntax-2">19.3.1 Syntax</a></h3>
+
+<p>The script is a text file in extended-ASCII, with one directive per line.
+Empty lines, leading spaces and lines starting with &rsquo;#&rsquo; are ignored. The
+following directive is recognized:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp><code>file <var>path</var></code></samp>&rsquo;</dt>
+<dd><p>Path to a file to read; special characters and spaces must be escaped with
+backslash or single quotes.
+</p>
+<p>All subsequent directives apply to that file.
+</p>
+</dd>
+<dt> &lsquo;<samp><code>ffconcat version 1.0</code></samp>&rsquo;</dt>
+<dd><p>Identify the script type and version. It also sets the &lsquo;<samp>safe</samp>&rsquo; option
+to 1 if it was to its default -1.
+</p>
+<p>To make FFmpeg recognize the format automatically, this directive must
+appears exactly as is (no extra space or byte-order-mark) on the very first
+line of the script.
+</p>
+</dd>
+<dt> &lsquo;<samp><code>duration <var>dur</var></code></samp>&rsquo;</dt>
+<dd><p>Duration of the file. This information can be specified from the file;
+specifying it here may be more efficient or help if the information from the
+file is not available or accurate.
+</p>
+<p>If the duration is set for all files, then it is possible to seek in the
+whole concatenated video.
+</p>
+</dd>
+</dl>
+
+<a name="Options-14"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-14">19.3.2 Options</a></h3>
+
+<p>This demuxer accepts the following option:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>safe</samp>&rsquo;</dt>
+<dd><p>If set to 1, reject unsafe file paths. A file path is considered safe if it
+does not contain a protocol specification and is relative and all components
+only contain characters from the portable character set (letters, digits,
+period, underscore and hyphen) and have no period at the beginning of a
+component.
+</p>
+<p>If set to 0, any file name is accepted.
+</p>
+<p>The default is -1, it is equivalent to 1 if the format was automatically
+probed and 0 otherwise.
+</p>
+</dd>
+</dl>
+
+<a name="flv"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-flv">19.4 flv</a></h2>
+
+<p>Adobe Flash Video Format demuxer.
+</p>
+<p>This demuxer is used to demux FLV files and RTMP network streams.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-flv_metadata <var>bool</var></samp>&rsquo;</dt>
+<dd><p>Allocate the streams according to the onMetaData array content.
+</p></dd>
+</dl>
+
+<a name="libgme"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-libgme">19.5 libgme</a></h2>
+
+<p>The Game Music Emu library is a collection of video game music file emulators.
+</p>
+<p>See <a href="http://code.google.com/p/game-music-emu/">http://code.google.com/p/game-music-emu/</a> for more information.
+</p>
+<p>Some files have multiple tracks. The demuxer will pick the first track by
+default. The &lsquo;<samp>track_index</samp>&rsquo; option can be used to select a different
+track. Track indexes start at 0. The demuxer exports the number of tracks as
+<var>tracks</var> meta data entry.
+</p>
+<p>For very large files, the &lsquo;<samp>max_size</samp>&rsquo; option may have to be adjusted.
+</p>
+<a name="libquvi"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-libquvi">19.6 libquvi</a></h2>
+
+<p>Play media from Internet services using the quvi project.
+</p>
+<p>The demuxer accepts a &lsquo;<samp>format</samp>&rsquo; option to request a specific quality. It
+is by default set to <var>best</var>.
+</p>
+<p>See <a href="http://quvi.sourceforge.net/">http://quvi.sourceforge.net/</a> for more information.
+</p>
+<p>FFmpeg needs to be built with <code>--enable-libquvi</code> for this demuxer to be
+enabled.
+</p>
+<a name="image2-2"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-image2-2">19.7 image2</a></h2>
+
+<p>Image file demuxer.
+</p>
+<p>This demuxer reads from a list of image files specified by a pattern.
+The syntax and meaning of the pattern is specified by the
+option <var>pattern_type</var>.
+</p>
+<p>The pattern may contain a suffix which is used to automatically
+determine the format of the images contained in the files.
+</p>
+<p>The size, the pixel format, and the format of each image must be the
+same for all the files in the sequence.
+</p>
+<p>This demuxer accepts the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>framerate</samp>&rsquo;</dt>
+<dd><p>Set the frame rate for the video stream. It defaults to 25.
+</p></dd>
+<dt> &lsquo;<samp>loop</samp>&rsquo;</dt>
+<dd><p>If set to 1, loop over the input. Default value is 0.
+</p></dd>
+<dt> &lsquo;<samp>pattern_type</samp>&rsquo;</dt>
+<dd><p>Select the pattern type used to interpret the provided filename.
+</p>
+<p><var>pattern_type</var> accepts one of the following values.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sequence</samp>&rsquo;</dt>
+<dd><p>Select a sequence pattern type, used to specify a sequence of files
+indexed by sequential numbers.
+</p>
+<p>A sequence pattern may contain the string &quot;%d&quot; or &quot;%0<var>N</var>d&quot;, which
+specifies the position of the characters representing a sequential
+number in each filename matched by the pattern. If the form
+&quot;%d0<var>N</var>d&quot; is used, the string representing the number in each
+filename is 0-padded and <var>N</var> is the total number of 0-padded
+digits representing the number. The literal character &rsquo;%&rsquo; can be
+specified in the pattern with the string &quot;%%&quot;.
+</p>
+<p>If the sequence pattern contains &quot;%d&quot; or &quot;%0<var>N</var>d&quot;, the first filename of
+the file list specified by the pattern must contain a number
+inclusively contained between <var>start_number</var> and
+<var>start_number</var>+<var>start_number_range</var>-1, and all the following
+numbers must be sequential.
+</p>
+<p>For example the pattern &quot;img-%03d.bmp&quot; will match a sequence of
+filenames of the form &lsquo;<tt>img-001.bmp</tt>&rsquo;, &lsquo;<tt>img-002.bmp</tt>&rsquo;, ...,
+&lsquo;<tt>img-010.bmp</tt>&rsquo;, etc.; the pattern &quot;i%%m%%g-%d.jpg&quot; will match a
+sequence of filenames of the form &lsquo;<tt>i%m%g-1.jpg</tt>&rsquo;,
+&lsquo;<tt>i%m%g-2.jpg</tt>&rsquo;, ..., &lsquo;<tt>i%m%g-10.jpg</tt>&rsquo;, etc.
+</p>
+<p>Note that the pattern must not necessarily contain &quot;%d&quot; or
+&quot;%0<var>N</var>d&quot;, for example to convert a single image file
+&lsquo;<tt>img.jpeg</tt>&rsquo; you can employ the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i img.jpeg img.png
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>glob</samp>&rsquo;</dt>
+<dd><p>Select a glob wildcard pattern type.
+</p>
+<p>The pattern is interpreted like a <code>glob()</code> pattern. This is only
+selectable if libavformat was compiled with globbing support.
+</p>
+</dd>
+<dt> &lsquo;<samp>glob_sequence <em>(deprecated, will be removed)</em></samp>&rsquo;</dt>
+<dd><p>Select a mixed glob wildcard/sequence pattern.
+</p>
+<p>If your version of libavformat was compiled with globbing support, and
+the provided pattern contains at least one glob meta character among
+<code>%*?[]{}</code> that is preceded by an unescaped &quot;%&quot;, the pattern is
+interpreted like a <code>glob()</code> pattern, otherwise it is interpreted
+like a sequence pattern.
+</p>
+<p>All glob special characters <code>%*?[]{}</code> must be prefixed
+with &quot;%&quot;. To escape a literal &quot;%&quot; you shall use &quot;%%&quot;.
+</p>
+<p>For example the pattern <code>foo-%*.jpeg</code> will match all the
+filenames prefixed by &quot;foo-&quot; and terminating with &quot;.jpeg&quot;, and
+<code>foo-%?%?%?.jpeg</code> will match all the filenames prefixed with
+&quot;foo-&quot;, followed by a sequence of three characters, and terminating
+with &quot;.jpeg&quot;.
+</p>
+<p>This pattern type is deprecated in favor of <var>glob</var> and
+<var>sequence</var>.
+</p></dd>
+</dl>
+
+<p>Default value is <var>glob_sequence</var>.
+</p></dd>
+<dt> &lsquo;<samp>pixel_format</samp>&rsquo;</dt>
+<dd><p>Set the pixel format of the images to read. If not specified the pixel
+format is guessed from the first image file in the sequence.
+</p></dd>
+<dt> &lsquo;<samp>start_number</samp>&rsquo;</dt>
+<dd><p>Set the index of the file matched by the image file pattern to start
+to read from. Default value is 0.
+</p></dd>
+<dt> &lsquo;<samp>start_number_range</samp>&rsquo;</dt>
+<dd><p>Set the index interval range to check when looking for the first image
+file in the sequence, starting from <var>start_number</var>. Default value
+is 5.
+</p></dd>
+<dt> &lsquo;<samp>ts_from_file</samp>&rsquo;</dt>
+<dd><p>If set to 1, will set frame timestamp to modification time of image file. Note
+that monotonity of timestamps is not provided: images go in the same order as
+without this option. Default value is 0.
+</p></dd>
+<dt> &lsquo;<samp>video_size</samp>&rsquo;</dt>
+<dd><p>Set the video size of the images to read. If not specified the video
+size is guessed from the first image file in the sequence.
+</p></dd>
+</dl>
+
+<a name="Examples-83"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-83">19.7.1 Examples</a></h3>
+
+<ul>
+<li>
+Use <code>ffmpeg</code> for creating a video from the images in the file
+sequence &lsquo;<tt>img-001.jpeg</tt>&rsquo;, &lsquo;<tt>img-002.jpeg</tt>&rsquo;, ..., assuming an
+input frame rate of 10 frames per second:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -framerate 10 -i 'img-%03d.jpeg' out.mkv
+</pre></td></tr></table>
+
+</li><li>
+As above, but start by reading from a file with index 100 in the sequence:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -framerate 10 -start_number 100 -i 'img-%03d.jpeg' out.mkv
+</pre></td></tr></table>
+
+</li><li>
+Read images matching the &quot;*.png&quot; glob pattern , that is all the files
+terminating with the &quot;.png&quot; suffix:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -framerate 10 -pattern_type glob -i &quot;*.png&quot; out.mkv
+</pre></td></tr></table>
+</li></ul>
+
+<a name="mpegts"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-mpegts">19.8 mpegts</a></h2>
+
+<p>MPEG-2 transport stream demuxer.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>fix_teletext_pts</samp>&rsquo;</dt>
+<dd><p>Overrides teletext packet PTS and DTS values with the timestamps calculated
+from the PCR of the first program which the teletext stream is part of and is
+not discarded. Default value is 1, set this option to 0 if you want your
+teletext packet PTS and DTS values untouched.
+</p></dd>
+</dl>
+
+<a name="rawvideo-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-rawvideo-1">19.9 rawvideo</a></h2>
+
+<p>Raw video demuxer.
+</p>
+<p>This demuxer allows to read raw video data. Since there is no header
+specifying the assumed video parameters, the user must specify them
+in order to be able to decode the data correctly.
+</p>
+<p>This demuxer accepts the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>framerate</samp>&rsquo;</dt>
+<dd><p>Set input video frame rate. Default value is 25.
+</p>
+</dd>
+<dt> &lsquo;<samp>pixel_format</samp>&rsquo;</dt>
+<dd><p>Set the input video pixel format. Default value is <code>yuv420p</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>video_size</samp>&rsquo;</dt>
+<dd><p>Set the input video size. This value must be specified explicitly.
+</p></dd>
+</dl>
+
+<p>For example to read a rawvideo file &lsquo;<tt>input.raw</tt>&rsquo; with
+<code>ffplay</code>, assuming a pixel format of <code>rgb24</code>, a video
+size of <code>320x240</code>, and a frame rate of 10 images per second, use
+the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f rawvideo -pixel_format rgb24 -video_size 320x240 -framerate 10 input.raw
+</pre></td></tr></table>
+
+<a name="sbg"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-sbg">19.10 sbg</a></h2>
+
+<p>SBaGen script demuxer.
+</p>
+<p>This demuxer reads the script language used by SBaGen
+<a href="http://uazu.net/sbagen/">http://uazu.net/sbagen/</a> to generate binaural beats sessions. A SBG
+script looks like that:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">-SE
+a: 300-2.5/3 440+4.5/0
+b: 300-2.5/0 440+4.5/3
+off: -
+NOW      == a
++0:07:00 == b
++0:14:00 == a
++0:21:00 == b
++0:30:00    off
+</pre></td></tr></table>
+
+<p>A SBG script can mix absolute and relative timestamps. If the script uses
+either only absolute timestamps (including the script start time) or only
+relative ones, then its layout is fixed, and the conversion is
+straightforward. On the other hand, if the script mixes both kind of
+timestamps, then the <var>NOW</var> reference for relative timestamps will be
+taken from the current time of day at the time the script is read, and the
+script layout will be frozen according to that reference. That means that if
+the script is directly played, the actual times will match the absolute
+timestamps up to the sound controller&rsquo;s clock accuracy, but if the user
+somehow pauses the playback or seeks, all times will be shifted accordingly.
+</p>
+<a name="tedcaptions"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-tedcaptions">19.11 tedcaptions</a></h2>
+
+<p>JSON captions used for <a href="http://www.ted.com/">TED Talks</a>.
+</p>
+<p>TED does not provide links to the captions, but they can be guessed from the
+page. The file &lsquo;<tt>tools/bookmarklets.html</tt>&rsquo; from the FFmpeg source tree
+contains a bookmarklet to expose them.
+</p>
+<p>This demuxer accepts the following option:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>start_time</samp>&rsquo;</dt>
+<dd><p>Set the start time of the TED talk, in milliseconds. The default is 15000
+(15s). It is used to sync the captions with the downloadable videos, because
+they include a 15s intro.
+</p></dd>
+</dl>
+
+<p>Example: convert the captions to a format most players understand:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i http://www.ted.com/talks/subtitles/id/1/lang/en talk1-en.srt
+</pre></td></tr></table>
+
+<a name="Muxers"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Muxers">20. Muxers</a></h1>
+
+<p>Muxers are configured elements in FFmpeg which allow writing
+multimedia streams to a particular type of file.
+</p>
+<p>When you configure your FFmpeg build, all the supported muxers
+are enabled by default. You can list all available muxers using the
+configure option <code>--list-muxers</code>.
+</p>
+<p>You can disable all the muxers with the configure option
+<code>--disable-muxers</code> and selectively enable / disable single muxers
+with the options <code>--enable-muxer=<var>MUXER</var></code> /
+<code>--disable-muxer=<var>MUXER</var></code>.
+</p>
+<p>The option <code>-formats</code> of the ff* tools will display the list of
+enabled muxers.
+</p>
+<p>A description of some of the currently available muxers follows.
+</p>
+<p><a name="aiff"></a>
+</p><a name="aiff-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-aiff-1">20.1 aiff</a></h2>
+
+<p>Audio Interchange File Format muxer.
+</p>
+<p>It accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>write_id3v2</samp>&rsquo;</dt>
+<dd><p>Enable ID3v2 tags writing when set to 1. Default is 0 (disabled).
+</p>
+</dd>
+<dt> &lsquo;<samp>id3v2_version</samp>&rsquo;</dt>
+<dd><p>Select ID3v2 version to write. Currently only version 3 and 4 (aka.
+ID3v2.3 and ID3v2.4) are supported. The default is version 4.
+</p>
+</dd>
+</dl>
+
+<p><a name="crc"></a>
+</p><a name="crc-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-crc-1">20.2 crc</a></h2>
+
+<p>CRC (Cyclic Redundancy Check) testing format.
+</p>
+<p>This muxer computes and prints the Adler-32 CRC of all the input audio
+and video frames. By default audio frames are converted to signed
+16-bit raw audio and video frames to raw video before computing the
+CRC.
+</p>
+<p>The output of the muxer consists of a single line of the form:
+CRC=0x<var>CRC</var>, where <var>CRC</var> is a hexadecimal number 0-padded to
+8 digits containing the CRC for all the decoded input frames.
+</p>
+<p>For example to compute the CRC of the input, and store it in the file
+&lsquo;<tt>out.crc</tt>&rsquo;:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f crc out.crc
+</pre></td></tr></table>
+
+<p>You can print the CRC to stdout with the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f crc -
+</pre></td></tr></table>
+
+<p>You can select the output format of each frame with <code>ffmpeg</code> by
+specifying the audio and video codec and format. For example to
+compute the CRC of the input audio converted to PCM unsigned 8-bit
+and the input video converted to MPEG-2 video, use the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -c:a pcm_u8 -c:v mpeg2video -f crc -
+</pre></td></tr></table>
+
+<p>See also the <a href="#framecrc">framecrc</a> muxer.
+</p>
+<p><a name="framecrc"></a>
+</p><a name="framecrc-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-framecrc-1">20.3 framecrc</a></h2>
+
+<p>Per-packet CRC (Cyclic Redundancy Check) testing format.
+</p>
+<p>This muxer computes and prints the Adler-32 CRC for each audio
+and video packet. By default audio frames are converted to signed
+16-bit raw audio and video frames to raw video before computing the
+CRC.
+</p>
+<p>The output of the muxer consists of a line for each audio and video
+packet of the form:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>stream_index</var>, <var>packet_dts</var>, <var>packet_pts</var>, <var>packet_duration</var>, <var>packet_size</var>, 0x<var>CRC</var>
+</pre></td></tr></table>
+
+<p><var>CRC</var> is a hexadecimal number 0-padded to 8 digits containing the
+CRC of the packet.
+</p>
+<p>For example to compute the CRC of the audio and video frames in
+&lsquo;<tt>INPUT</tt>&rsquo;, converted to raw audio and video packets, and store it
+in the file &lsquo;<tt>out.crc</tt>&rsquo;:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f framecrc out.crc
+</pre></td></tr></table>
+
+<p>To print the information to stdout, use the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f framecrc -
+</pre></td></tr></table>
+
+<p>With <code>ffmpeg</code>, you can select the output format to which the
+audio and video frames are encoded before computing the CRC for each
+packet by specifying the audio and video codec. For example, to
+compute the CRC of each decoded input audio frame converted to PCM
+unsigned 8-bit and of each decoded input video frame converted to
+MPEG-2 video, use the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -c:a pcm_u8 -c:v mpeg2video -f framecrc -
+</pre></td></tr></table>
+
+<p>See also the <a href="#crc">crc</a> muxer.
+</p>
+<p><a name="framemd5"></a>
+</p><a name="framemd5-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-framemd5-1">20.4 framemd5</a></h2>
+
+<p>Per-packet MD5 testing format.
+</p>
+<p>This muxer computes and prints the MD5 hash for each audio
+and video packet. By default audio frames are converted to signed
+16-bit raw audio and video frames to raw video before computing the
+hash.
+</p>
+<p>The output of the muxer consists of a line for each audio and video
+packet of the form:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>stream_index</var>, <var>packet_dts</var>, <var>packet_pts</var>, <var>packet_duration</var>, <var>packet_size</var>, <var>MD5</var>
+</pre></td></tr></table>
+
+<p><var>MD5</var> is a hexadecimal number representing the computed MD5 hash
+for the packet.
+</p>
+<p>For example to compute the MD5 of the audio and video frames in
+&lsquo;<tt>INPUT</tt>&rsquo;, converted to raw audio and video packets, and store it
+in the file &lsquo;<tt>out.md5</tt>&rsquo;:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f framemd5 out.md5
+</pre></td></tr></table>
+
+<p>To print the information to stdout, use the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f framemd5 -
+</pre></td></tr></table>
+
+<p>See also the <a href="#md5">md5</a> muxer.
+</p>
+<p><a name="gif"></a>
+</p><a name="gif-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-gif-1">20.5 gif</a></h2>
+
+<p>Animated GIF muxer.
+</p>
+<p>It accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>loop</samp>&rsquo;</dt>
+<dd><p>Set the number of times to loop the output. Use <code>-1</code> for no loop, <code>0</code>
+for looping indefinitely (default).
+</p>
+</dd>
+<dt> &lsquo;<samp>final_delay</samp>&rsquo;</dt>
+<dd><p>Force the delay (expressed in centiseconds) after the last frame. Each frame
+ends with a delay until the next frame. The default is <code>-1</code>, which is a
+special value to tell the muxer to re-use the previous delay. In case of a
+loop, you might want to customize this value to mark a pause for instance.
+</p></dd>
+</dl>
+
+<p>For example, to encode a gif looping 10 times, with a 5 seconds delay between
+the loops:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -loop 10 -final_delay 500 out.gif
+</pre></td></tr></table>
+
+<p>Note 1: if you wish to extract the frames in separate GIF files, you need to
+force the <a href="#image2">image2</a> muxer:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -c:v gif -f image2 &quot;out%d.gif&quot;
+</pre></td></tr></table>
+
+<p>Note 2: the GIF format has a very small time base: the delay between two frames
+can not be smaller than one centi second.
+</p>
+<p><a name="hls"></a>
+</p><a name="hls-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-hls-1">20.6 hls</a></h2>
+
+<p>Apple HTTP Live Streaming muxer that segments MPEG-TS according to
+the HTTP Live Streaming specification.
+</p>
+<p>It creates a playlist file and numbered segment files. The output
+filename specifies the playlist filename; the segment filenames
+receive the same basename as the playlist, a sequential number and
+a .ts extension.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.nut out.m3u8
+</pre></td></tr></table>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-hls_time <var>seconds</var></samp>&rsquo;</dt>
+<dd><p>Set the segment length in seconds.
+</p></dd>
+<dt> &lsquo;<samp>-hls_list_size <var>size</var></samp>&rsquo;</dt>
+<dd><p>Set the maximum number of playlist entries.
+</p></dd>
+<dt> &lsquo;<samp>-hls_wrap <var>wrap</var></samp>&rsquo;</dt>
+<dd><p>Set the number after which index wraps.
+</p></dd>
+<dt> &lsquo;<samp>-start_number <var>number</var></samp>&rsquo;</dt>
+<dd><p>Start the sequence from <var>number</var>.
+</p></dd>
+</dl>
+
+<p><a name="ico"></a>
+</p><a name="ico-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-ico-1">20.7 ico</a></h2>
+
+<p>ICO file muxer.
+</p>
+<p>Microsoft&rsquo;s icon file format (ICO) has some strict limitations that should be noted:
+</p>
+<ul>
+<li>
+Size cannot exceed 256 pixels in any dimension
+
+</li><li>
+Only BMP and PNG images can be stored
+
+</li><li>
+If a BMP image is used, it must be one of the following pixel formats:
+<table><tr><td>&nbsp;</td><td><pre class="example">BMP Bit Depth      FFmpeg Pixel Format
+1bit               pal8
+4bit               pal8
+8bit               pal8
+16bit              rgb555le
+24bit              bgr24
+32bit              bgra
+</pre></td></tr></table>
+
+</li><li>
+If a BMP image is used, it must use the BITMAPINFOHEADER DIB header
+
+</li><li>
+If a PNG image is used, it must use the rgba pixel format
+</li></ul>
+
+<p><a name="image2"></a>
+</p><a name="image2-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-image2-1">20.8 image2</a></h2>
+
+<p>Image file muxer.
+</p>
+<p>The image file muxer writes video frames to image files.
+</p>
+<p>The output filenames are specified by a pattern, which can be used to
+produce sequentially numbered series of files.
+The pattern may contain the string &quot;%d&quot; or &quot;%0<var>N</var>d&quot;, this string
+specifies the position of the characters representing a numbering in
+the filenames. If the form &quot;%0<var>N</var>d&quot; is used, the string
+representing the number in each filename is 0-padded to <var>N</var>
+digits. The literal character &rsquo;%&rsquo; can be specified in the pattern with
+the string &quot;%%&quot;.
+</p>
+<p>If the pattern contains &quot;%d&quot; or &quot;%0<var>N</var>d&quot;, the first filename of
+the file list specified will contain the number 1, all the following
+numbers will be sequential.
+</p>
+<p>The pattern may contain a suffix which is used to automatically
+determine the format of the image files to write.
+</p>
+<p>For example the pattern &quot;img-%03d.bmp&quot; will specify a sequence of
+filenames of the form &lsquo;<tt>img-001.bmp</tt>&rsquo;, &lsquo;<tt>img-002.bmp</tt>&rsquo;, ...,
+&lsquo;<tt>img-010.bmp</tt>&rsquo;, etc.
+The pattern &quot;img%%-%d.jpg&quot; will specify a sequence of filenames of the
+form &lsquo;<tt>img%-1.jpg</tt>&rsquo;, &lsquo;<tt>img%-2.jpg</tt>&rsquo;, ..., &lsquo;<tt>img%-10.jpg</tt>&rsquo;,
+etc.
+</p>
+<p>The following example shows how to use <code>ffmpeg</code> for creating a
+sequence of files &lsquo;<tt>img-001.jpeg</tt>&rsquo;, &lsquo;<tt>img-002.jpeg</tt>&rsquo;, ...,
+taking one image every second from the input video:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -vsync 1 -r 1 -f image2 'img-%03d.jpeg'
+</pre></td></tr></table>
+
+<p>Note that with <code>ffmpeg</code>, if the format is not specified with the
+<code>-f</code> option and the output filename specifies an image file
+format, the image2 muxer is automatically selected, so the previous
+command can be written as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -vsync 1 -r 1 'img-%03d.jpeg'
+</pre></td></tr></table>
+
+<p>Note also that the pattern must not necessarily contain &quot;%d&quot; or
+&quot;%0<var>N</var>d&quot;, for example to create a single image file
+&lsquo;<tt>img.jpeg</tt>&rsquo; from the input video you can employ the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -f image2 -frames:v 1 img.jpeg
+</pre></td></tr></table>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>start_number <var>number</var></samp>&rsquo;</dt>
+<dd><p>Start the sequence from <var>number</var>. Default value is 1. Must be a
+non-negative number.
+</p>
+</dd>
+<dt> &lsquo;<samp>-update <var>number</var></samp>&rsquo;</dt>
+<dd><p>If <var>number</var> is nonzero, the filename will always be interpreted as just a
+filename, not a pattern, and this file will be continuously overwritten with new
+images.
+</p>
+</dd>
+</dl>
+
+<p>The image muxer supports the .Y.U.V image file format. This format is
+special in that that each image frame consists of three files, for
+each of the YUV420P components. To read or write this image file format,
+specify the name of the &rsquo;.Y&rsquo; file. The muxer will automatically open the
+&rsquo;.U&rsquo; and &rsquo;.V&rsquo; files as required.
+</p>
+<a name="matroska"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-matroska">20.9 matroska</a></h2>
+
+<p>Matroska container muxer.
+</p>
+<p>This muxer implements the matroska and webm container specs.
+</p>
+<p>The recognized metadata settings in this muxer are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>title=<var>title name</var></samp>&rsquo;</dt>
+<dd><p>Name provided to a single track
+</p></dd>
+</dl>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>language=<var>language name</var></samp>&rsquo;</dt>
+<dd><p>Specifies the language of the track in the Matroska languages form
+</p></dd>
+</dl>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>stereo_mode=<var>mode</var></samp>&rsquo;</dt>
+<dd><p>Stereo 3D video layout of two views in a single video track
+</p><dl compact="compact">
+<dt> &lsquo;<samp>mono</samp>&rsquo;</dt>
+<dd><p>video is not stereo
+</p></dd>
+<dt> &lsquo;<samp>left_right</samp>&rsquo;</dt>
+<dd><p>Both views are arranged side by side, Left-eye view is on the left
+</p></dd>
+<dt> &lsquo;<samp>bottom_top</samp>&rsquo;</dt>
+<dd><p>Both views are arranged in top-bottom orientation, Left-eye view is at bottom
+</p></dd>
+<dt> &lsquo;<samp>top_bottom</samp>&rsquo;</dt>
+<dd><p>Both views are arranged in top-bottom orientation, Left-eye view is on top
+</p></dd>
+<dt> &lsquo;<samp>checkerboard_rl</samp>&rsquo;</dt>
+<dd><p>Each view is arranged in a checkerboard interleaved pattern, Left-eye view being first
+</p></dd>
+<dt> &lsquo;<samp>checkerboard_lr</samp>&rsquo;</dt>
+<dd><p>Each view is arranged in a checkerboard interleaved pattern, Right-eye view being first
+</p></dd>
+<dt> &lsquo;<samp>row_interleaved_rl</samp>&rsquo;</dt>
+<dd><p>Each view is constituted by a row based interleaving, Right-eye view is first row
+</p></dd>
+<dt> &lsquo;<samp>row_interleaved_lr</samp>&rsquo;</dt>
+<dd><p>Each view is constituted by a row based interleaving, Left-eye view is first row
+</p></dd>
+<dt> &lsquo;<samp>col_interleaved_rl</samp>&rsquo;</dt>
+<dd><p>Both views are arranged in a column based interleaving manner, Right-eye view is first column
+</p></dd>
+<dt> &lsquo;<samp>col_interleaved_lr</samp>&rsquo;</dt>
+<dd><p>Both views are arranged in a column based interleaving manner, Left-eye view is first column
+</p></dd>
+<dt> &lsquo;<samp>anaglyph_cyan_red</samp>&rsquo;</dt>
+<dd><p>All frames are in anaglyph format viewable through red-cyan filters
+</p></dd>
+<dt> &lsquo;<samp>right_left</samp>&rsquo;</dt>
+<dd><p>Both views are arranged side by side, Right-eye view is on the left
+</p></dd>
+<dt> &lsquo;<samp>anaglyph_green_magenta</samp>&rsquo;</dt>
+<dd><p>All frames are in anaglyph format viewable through green-magenta filters
+</p></dd>
+<dt> &lsquo;<samp>block_lr</samp>&rsquo;</dt>
+<dd><p>Both eyes laced in one Block, Left-eye view is first
+</p></dd>
+<dt> &lsquo;<samp>block_rl</samp>&rsquo;</dt>
+<dd><p>Both eyes laced in one Block, Right-eye view is first
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<p>For example a 3D WebM clip can be created using the following command line:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i sample_left_right_clip.mpg -an -c:v libvpx -metadata stereo_mode=left_right -y stereo_clip.webm
+</pre></td></tr></table>
+
+<p>This muxer supports the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>reserve_index_space</samp>&rsquo;</dt>
+<dd><p>By default, this muxer writes the index for seeking (called cues in Matroska
+terms) at the end of the file, because it cannot know in advance how much space
+to leave for the index at the beginning of the file. However for some use cases
+&ndash; e.g.  streaming where seeking is possible but slow &ndash; it is useful to put the
+index at the beginning of the file.
+</p>
+<p>If this option is set to a non-zero value, the muxer will reserve a given amount
+of space in the file header and then try to write the cues there when the muxing
+finishes. If the available space does not suffice, muxing will fail. A safe size
+for most use cases should be about 50kB per hour of video.
+</p>
+<p>Note that cues are only written if the output is seekable and this option will
+have no effect if it is not.
+</p>
+</dd>
+</dl>
+
+<p><a name="md5"></a>
+</p><a name="md5-2"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-md5-2">20.10 md5</a></h2>
+
+<p>MD5 testing format.
+</p>
+<p>This muxer computes and prints the MD5 hash of all the input audio
+and video frames. By default audio frames are converted to signed
+16-bit raw audio and video frames to raw video before computing the
+hash.
+</p>
+<p>The output of the muxer consists of a single line of the form:
+MD5=<var>MD5</var>, where <var>MD5</var> is a hexadecimal number representing
+the computed MD5 hash.
+</p>
+<p>For example to compute the MD5 hash of the input converted to raw
+audio and video, and store it in the file &lsquo;<tt>out.md5</tt>&rsquo;:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f md5 out.md5
+</pre></td></tr></table>
+
+<p>You can print the MD5 to stdout with the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f md5 -
+</pre></td></tr></table>
+
+<p>See also the <a href="#framemd5">framemd5</a> muxer.
+</p>
+<a name="mov_002fmp4_002fismv"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-mov_002fmp4_002fismv">20.11 mov/mp4/ismv</a></h2>
+
+<p>MOV/MP4/ISMV (Smooth Streaming) muxer.
+</p>
+<p>The mov/mp4/ismv muxer supports fragmentation. Normally, a MOV/MP4
+file has all the metadata about all packets stored in one location
+(written at the end of the file, it can be moved to the start for
+better playback by adding <var>faststart</var> to the <var>movflags</var>, or
+using the <code>qt-faststart</code> tool). A fragmented
+file consists of a number of fragments, where packets and metadata
+about these packets are stored together. Writing a fragmented
+file has the advantage that the file is decodable even if the
+writing is interrupted (while a normal MOV/MP4 is undecodable if
+it is not properly finished), and it requires less memory when writing
+very long files (since writing normal MOV/MP4 files stores info about
+every single packet in memory until the file is closed). The downside
+is that it is less compatible with other applications.
+</p>
+<p>Fragmentation is enabled by setting one of the AVOptions that define
+how to cut the file into fragments:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-moov_size <var>bytes</var></samp>&rsquo;</dt>
+<dd><p>Reserves space for the moov atom at the beginning of the file instead of placing the
+moov atom at the end. If the space reserved is insufficient, muxing will fail.
+</p></dd>
+<dt> &lsquo;<samp>-movflags frag_keyframe</samp>&rsquo;</dt>
+<dd><p>Start a new fragment at each video keyframe.
+</p></dd>
+<dt> &lsquo;<samp>-frag_duration <var>duration</var></samp>&rsquo;</dt>
+<dd><p>Create fragments that are <var>duration</var> microseconds long.
+</p></dd>
+<dt> &lsquo;<samp>-frag_size <var>size</var></samp>&rsquo;</dt>
+<dd><p>Create fragments that contain up to <var>size</var> bytes of payload data.
+</p></dd>
+<dt> &lsquo;<samp>-movflags frag_custom</samp>&rsquo;</dt>
+<dd><p>Allow the caller to manually choose when to cut fragments, by
+calling <code>av_write_frame(ctx, NULL)</code> to write a fragment with
+the packets written so far. (This is only useful with other
+applications integrating libavformat, not from <code>ffmpeg</code>.)
+</p></dd>
+<dt> &lsquo;<samp>-min_frag_duration <var>duration</var></samp>&rsquo;</dt>
+<dd><p>Don&rsquo;t create fragments that are shorter than <var>duration</var> microseconds long.
+</p></dd>
+</dl>
+
+<p>If more than one condition is specified, fragments are cut when
+one of the specified conditions is fulfilled. The exception to this is
+<code>-min_frag_duration</code>, which has to be fulfilled for any of the other
+conditions to apply.
+</p>
+<p>Additionally, the way the output file is written can be adjusted
+through a few other options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-movflags empty_moov</samp>&rsquo;</dt>
+<dd><p>Write an initial moov atom directly at the start of the file, without
+describing any samples in it. Generally, an mdat/moov pair is written
+at the start of the file, as a normal MOV/MP4 file, containing only
+a short portion of the file. With this option set, there is no initial
+mdat atom, and the moov atom only describes the tracks but has
+a zero duration.
+</p>
+<p>Files written with this option set do not work in QuickTime.
+This option is implicitly set when writing ismv (Smooth Streaming) files.
+</p></dd>
+<dt> &lsquo;<samp>-movflags separate_moof</samp>&rsquo;</dt>
+<dd><p>Write a separate moof (movie fragment) atom for each track. Normally,
+packets for all tracks are written in a moof atom (which is slightly
+more efficient), but with this option set, the muxer writes one moof/mdat
+pair for each track, making it easier to separate tracks.
+</p>
+<p>This option is implicitly set when writing ismv (Smooth Streaming) files.
+</p></dd>
+<dt> &lsquo;<samp>-movflags faststart</samp>&rsquo;</dt>
+<dd><p>Run a second pass moving the index (moov atom) to the beginning of the file.
+This operation can take a while, and will not work in various situations such
+as fragmented output, thus it is not enabled by default.
+</p></dd>
+<dt> &lsquo;<samp>-movflags rtphint</samp>&rsquo;</dt>
+<dd><p>Add RTP hinting tracks to the output file.
+</p></dd>
+</dl>
+
+<p>Smooth Streaming content can be pushed in real time to a publishing
+point on IIS with this muxer. Example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re <var>&lt;normal input/transcoding options&gt;</var> -movflags isml+frag_keyframe -f ismv http://server/publishingpoint.isml/Streams(Encoder1)
+</pre></td></tr></table>
+
+<a name="mp3"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-mp3">20.12 mp3</a></h2>
+
+<p>The MP3 muxer writes a raw MP3 stream with an ID3v2 header at the beginning and
+optionally an ID3v1 tag at the end. ID3v2.3 and ID3v2.4 are supported, the
+<code>id3v2_version</code> option controls which one is used. The legacy ID3v1 tag is
+not written by default, but may be enabled with the <code>write_id3v1</code> option.
+</p>
+<p>For seekable output the muxer also writes a Xing frame at the beginning, which
+contains the number of frames in the file. It is useful for computing duration
+of VBR files.
+</p>
+<p>The muxer supports writing ID3v2 attached pictures (APIC frames). The pictures
+are supplied to the muxer in form of a video stream with a single packet. There
+can be any number of those streams, each will correspond to a single APIC frame.
+The stream metadata tags <var>title</var> and <var>comment</var> map to APIC
+<var>description</var> and <var>picture type</var> respectively. See
+<a href="http://id3.org/id3v2.4.0-frames">http://id3.org/id3v2.4.0-frames</a> for allowed picture types.
+</p>
+<p>Note that the APIC frames must be written at the beginning, so the muxer will
+buffer the audio frames until it gets all the pictures. It is therefore advised
+to provide the pictures as soon as possible to avoid excessive buffering.
+</p>
+<p>Examples:
+</p>
+<p>Write an mp3 with an ID3v2.3 header and an ID3v1 footer:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -id3v2_version 3 -write_id3v1 1 out.mp3
+</pre></td></tr></table>
+
+<p>To attach a picture to an mp3 file select both the audio and the picture stream
+with <code>map</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.mp3 -i cover.png -c copy -map 0 -map 1
+-metadata:s:v title=&quot;Album cover&quot; -metadata:s:v comment=&quot;Cover (Front)&quot; out.mp3
+</pre></td></tr></table>
+
+<a name="mpegts-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-mpegts-1">20.13 mpegts</a></h2>
+
+<p>MPEG transport stream muxer.
+</p>
+<p>This muxer implements ISO 13818-1 and part of ETSI EN 300 468.
+</p>
+<p>The muxer options are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-mpegts_original_network_id <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set the original_network_id (default 0x0001). This is unique identifier
+of a network in DVB. Its main use is in the unique identification of a
+service through the path Original_Network_ID, Transport_Stream_ID.
+</p></dd>
+<dt> &lsquo;<samp>-mpegts_transport_stream_id <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set the transport_stream_id (default 0x0001). This identifies a
+transponder in DVB.
+</p></dd>
+<dt> &lsquo;<samp>-mpegts_service_id <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set the service_id (default 0x0001) also known as program in DVB.
+</p></dd>
+<dt> &lsquo;<samp>-mpegts_pmt_start_pid <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set the first PID for PMT (default 0x1000, max 0x1f00).
+</p></dd>
+<dt> &lsquo;<samp>-mpegts_start_pid <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set the first PID for data packets (default 0x0100, max 0x0f00).
+</p></dd>
+<dt> &lsquo;<samp>-mpegts_m2ts_mode <var>number</var></samp>&rsquo;</dt>
+<dd><p>Enable m2ts mode if set to 1. Default value is -1 which disables m2ts mode.
+</p></dd>
+<dt> &lsquo;<samp>-muxrate <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set muxrate.
+</p></dd>
+<dt> &lsquo;<samp>-pes_payload_size <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set minimum PES packet payload in bytes.
+</p></dd>
+<dt> &lsquo;<samp>-mpegts_flags <var>flags</var></samp>&rsquo;</dt>
+<dd><p>Set flags (see below).
+</p></dd>
+<dt> &lsquo;<samp>-mpegts_copyts <var>number</var></samp>&rsquo;</dt>
+<dd><p>Preserve original timestamps, if value is set to 1. Default value is -1, which
+results in shifting timestamps so that they start from 0.
+</p></dd>
+<dt> &lsquo;<samp>-tables_version <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set PAT, PMT and SDT version (default 0, valid values are from 0 to 31, inclusively).
+This option allows updating stream structure so that standard consumer may
+detect the change. To do so, reopen output AVFormatContext (in case of API
+usage) or restart ffmpeg instance, cyclically changing tables_version value:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i source1.ts -codec copy -f mpegts -tables_version 0 udp://1.1.1.1:1111
+ffmpeg -i source2.ts -codec copy -f mpegts -tables_version 1 udp://1.1.1.1:1111
+...
+ffmpeg -i source3.ts -codec copy -f mpegts -tables_version 31 udp://1.1.1.1:1111
+ffmpeg -i source1.ts -codec copy -f mpegts -tables_version 0 udp://1.1.1.1:1111
+ffmpeg -i source2.ts -codec copy -f mpegts -tables_version 1 udp://1.1.1.1:1111
+...
+</pre></td></tr></table>
+</dd>
+</dl>
+
+<p>Option mpegts_flags may take a set of such flags:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>resend_headers</samp>&rsquo;</dt>
+<dd><p>Reemit PAT/PMT before writing the next packet.
+</p></dd>
+<dt> &lsquo;<samp>latm</samp>&rsquo;</dt>
+<dd><p>Use LATM packetization for AAC.
+</p></dd>
+</dl>
+
+<p>The recognized metadata settings in mpegts muxer are <code>service_provider</code>
+and <code>service_name</code>. If they are not set the default for
+<code>service_provider</code> is &quot;FFmpeg&quot; and the default for
+<code>service_name</code> is &quot;Service01&quot;.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i file.mpg -c copy \
+     -mpegts_original_network_id 0x1122 \
+     -mpegts_transport_stream_id 0x3344 \
+     -mpegts_service_id 0x5566 \
+     -mpegts_pmt_start_pid 0x1500 \
+     -mpegts_start_pid 0x150 \
+     -metadata service_provider=&quot;Some provider&quot; \
+     -metadata service_name=&quot;Some Channel&quot; \
+     -y out.ts
+</pre></td></tr></table>
+
+<a name="null"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-null">20.14 null</a></h2>
+
+<p>Null muxer.
+</p>
+<p>This muxer does not generate any output file, it is mainly useful for
+testing or benchmarking purposes.
+</p>
+<p>For example to benchmark decoding with <code>ffmpeg</code> you can use the
+command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -benchmark -i INPUT -f null out.null
+</pre></td></tr></table>
+
+<p>Note that the above command does not read or write the &lsquo;<tt>out.null</tt>&rsquo;
+file, but specifying the output file is required by the <code>ffmpeg</code>
+syntax.
+</p>
+<p>Alternatively you can write the command as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -benchmark -i INPUT -f null -
+</pre></td></tr></table>
+
+<a name="ogg"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-ogg">20.15 ogg</a></h2>
+
+<p>Ogg container muxer.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>-page_duration <var>duration</var></samp>&rsquo;</dt>
+<dd><p>Preferred page duration, in microseconds. The muxer will attempt to create
+pages that are approximately <var>duration</var> microseconds long. This allows the
+user to compromise between seek granularity and container overhead. The default
+is 1 second. A value of 0 will fill all segments, making pages as large as
+possible. A value of 1 will effectively use 1 packet-per-page in most
+situations, giving a small seek granularity at the cost of additional container
+overhead.
+</p></dd>
+</dl>
+
+<a name="segment_002c-stream_005fsegment_002c-ssegment"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-segment_002c-stream_005fsegment_002c-ssegment">20.16 segment, stream_segment, ssegment</a></h2>
+
+<p>Basic stream segmenter.
+</p>
+<p>The segmenter muxer outputs streams to a number of separate files of nearly
+fixed duration. Output filename pattern can be set in a fashion similar to
+<a href="#image2">image2</a>.
+</p>
+<p><code>stream_segment</code> is a variant of the muxer used to write to
+streaming output formats, i.e. which do not require global headers,
+and is recommended for outputting e.g. to MPEG transport stream segments.
+<code>ssegment</code> is a shorter alias for <code>stream_segment</code>.
+</p>
+<p>Every segment starts with a keyframe of the selected reference stream,
+which is set through the &lsquo;<samp>reference_stream</samp>&rsquo; option.
+</p>
+<p>Note that if you want accurate splitting for a video file, you need to
+make the input key frames correspond to the exact splitting times
+expected by the segmenter, or the segment muxer will start the new
+segment with the key frame found next after the specified start
+time.
+</p>
+<p>The segment muxer works best with a single constant frame rate video.
+</p>
+<p>Optionally it can generate a list of the created segments, by setting
+the option <var>segment_list</var>. The list type is specified by the
+<var>segment_list_type</var> option. The entry filenames in the segment
+list are set by default to the basename of the corresponding segment
+files.
+</p>
+<p>The segment muxer supports the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>reference_stream <var>specifier</var></samp>&rsquo;</dt>
+<dd><p>Set the reference stream, as specified by the string <var>specifier</var>.
+If <var>specifier</var> is set to <code>auto</code>, the reference is choosen
+automatically. Otherwise it must be a stream specifier (see the &ldquo;Stream
+specifiers&rdquo; chapter in the ffmpeg manual) which specifies the
+reference stream. The default value is <code>auto</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_format <var>format</var></samp>&rsquo;</dt>
+<dd><p>Override the inner container format, by default it is guessed by the filename
+extension.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_list <var>name</var></samp>&rsquo;</dt>
+<dd><p>Generate also a listfile named <var>name</var>. If not specified no
+listfile is generated.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_list_flags <var>flags</var></samp>&rsquo;</dt>
+<dd><p>Set flags affecting the segment list generation.
+</p>
+<p>It currently supports the following flags:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>cache</samp>&rsquo;</dt>
+<dd><p>Allow caching (only affects M3U8 list files).
+</p>
+</dd>
+<dt> &lsquo;<samp>live</samp>&rsquo;</dt>
+<dd><p>Allow live-friendly file generation.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>segment_list_size <var>size</var></samp>&rsquo;</dt>
+<dd><p>Update the list file so that it contains at most the last <var>size</var>
+segments. If 0 the list file will contain all the segments. Default
+value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_list_entry_prefix <var>prefix</var></samp>&rsquo;</dt>
+<dd><p>Set <var>prefix</var> to prepend to the name of each entry filename. By
+default no prefix is applied.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_list_type <var>type</var></samp>&rsquo;</dt>
+<dd><p>Specify the format for the segment list file.
+</p>
+<p>The following values are recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>flat</samp>&rsquo;</dt>
+<dd><p>Generate a flat list for the created segments, one segment per line.
+</p>
+</dd>
+<dt> &lsquo;<samp>csv, ext</samp>&rsquo;</dt>
+<dd><p>Generate a list for the created segments, one segment per line,
+each line matching the format (comma-separated values):
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>segment_filename</var>,<var>segment_start_time</var>,<var>segment_end_time</var>
+</pre></td></tr></table>
+
+<p><var>segment_filename</var> is the name of the output file generated by the
+muxer according to the provided pattern. CSV escaping (according to
+RFC4180) is applied if required.
+</p>
+<p><var>segment_start_time</var> and <var>segment_end_time</var> specify
+the segment start and end time expressed in seconds.
+</p>
+<p>A list file with the suffix <code>&quot;.csv&quot;</code> or <code>&quot;.ext&quot;</code> will
+auto-select this format.
+</p>
+<p>&lsquo;<samp>ext</samp>&rsquo; is deprecated in favor or &lsquo;<samp>csv</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>ffconcat</samp>&rsquo;</dt>
+<dd><p>Generate an ffconcat file for the created segments. The resulting file
+can be read using the FFmpeg <a href="#concat">concat</a> demuxer.
+</p>
+<p>A list file with the suffix <code>&quot;.ffcat&quot;</code> or <code>&quot;.ffconcat&quot;</code> will
+auto-select this format.
+</p>
+</dd>
+<dt> &lsquo;<samp>m3u8</samp>&rsquo;</dt>
+<dd><p>Generate an extended M3U8 file, version 3, compliant with
+<a href="http://tools.ietf.org/id/draft-pantos-http-live-streaming">http://tools.ietf.org/id/draft-pantos-http-live-streaming</a>.
+</p>
+<p>A list file with the suffix <code>&quot;.m3u8&quot;</code> will auto-select this format.
+</p></dd>
+</dl>
+
+<p>If not specified the type is guessed from the list file name suffix.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_time <var>time</var></samp>&rsquo;</dt>
+<dd><p>Set segment duration to <var>time</var>, the value must be a duration
+specification. Default value is &quot;2&quot;. See also the
+&lsquo;<samp>segment_times</samp>&rsquo; option.
+</p>
+<p>Note that splitting may not be accurate, unless you force the
+reference stream key-frames at the given time. See the introductory
+notice and the examples below.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_time_delta <var>delta</var></samp>&rsquo;</dt>
+<dd><p>Specify the accuracy time when selecting the start time for a
+segment, expressed as a duration specification. Default value is &quot;0&quot;.
+</p>
+<p>When delta is specified a key-frame will start a new segment if its
+PTS satisfies the relation:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">PTS &gt;= start_time - time_delta
+</pre></td></tr></table>
+
+<p>This option is useful when splitting video content, which is always
+split at GOP boundaries, in case a key frame is found just before the
+specified split time.
+</p>
+<p>In particular may be used in combination with the &lsquo;<tt>ffmpeg</tt>&rsquo; option
+<var>force_key_frames</var>. The key frame times specified by
+<var>force_key_frames</var> may not be set accurately because of rounding
+issues, with the consequence that a key frame time may result set just
+before the specified time. For constant frame rate videos a value of
+1/2*<var>frame_rate</var> should address the worst case mismatch between
+the specified time and the time set by <var>force_key_frames</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_times <var>times</var></samp>&rsquo;</dt>
+<dd><p>Specify a list of split points. <var>times</var> contains a list of comma
+separated duration specifications, in increasing order. See also
+the &lsquo;<samp>segment_time</samp>&rsquo; option.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_frames <var>frames</var></samp>&rsquo;</dt>
+<dd><p>Specify a list of split video frame numbers. <var>frames</var> contains a
+list of comma separated integer numbers, in increasing order.
+</p>
+<p>This option specifies to start a new segment whenever a reference
+stream key frame is found and the sequential number (starting from 0)
+of the frame is greater or equal to the next value in the list.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_wrap <var>limit</var></samp>&rsquo;</dt>
+<dd><p>Wrap around segment index once it reaches <var>limit</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>segment_start_number <var>number</var></samp>&rsquo;</dt>
+<dd><p>Set the sequence number of the first segment. Defaults to <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>reset_timestamps <var>1|0</var></samp>&rsquo;</dt>
+<dd><p>Reset timestamps at the begin of each segment, so that each segment
+will start with near-zero timestamps. It is meant to ease the playback
+of the generated segments. May not work with some combinations of
+muxers/codecs. It is set to <code>0</code> by default.
+</p>
+</dd>
+<dt> &lsquo;<samp>initial_offset <var>offset</var></samp>&rsquo;</dt>
+<dd><p>Specify timestamp offset to apply to the output packet timestamps. The
+argument must be a time duration specification, and defaults to 0.
+</p></dd>
+</dl>
+
+<a name="Examples-52"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-52">20.16.1 Examples</a></h3>
+
+<ul>
+<li>
+To remux the content of file &lsquo;<tt>in.mkv</tt>&rsquo; to a list of segments
+&lsquo;<tt>out-000.nut</tt>&rsquo;, &lsquo;<tt>out-001.nut</tt>&rsquo;, etc., and write the list of
+generated segments to &lsquo;<tt>out.list</tt>&rsquo;:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.mkv -codec copy -map 0 -f segment -segment_list out.list out%03d.nut
+</pre></td></tr></table>
+
+</li><li>
+As the example above, but segment the input file according to the split
+points specified by the <var>segment_times</var> option:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.mkv -codec copy -map 0 -f segment -segment_list out.csv -segment_times 1,2,3,5,8,13,21 out%03d.nut
+</pre></td></tr></table>
+
+</li><li>
+As the example above, but use the <code>ffmpeg</code> &lsquo;<samp>force_key_frames</samp>&rsquo;
+option to force key frames in the input at the specified location, together
+with the segment option &lsquo;<samp>segment_time_delta</samp>&rsquo; to account for
+possible roundings operated when setting key frame times.
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.mkv -force_key_frames 1,2,3,5,8,13,21 -codec:v mpeg4 -codec:a pcm_s16le -map 0 \
+-f segment -segment_list out.csv -segment_times 1,2,3,5,8,13,21 -segment_time_delta 0.05 out%03d.nut
+</pre></td></tr></table>
+<p>In order to force key frames on the input file, transcoding is
+required.
+</p>
+</li><li>
+Segment the input file by splitting the input file according to the
+frame numbers sequence specified with the &lsquo;<samp>segment_frames</samp>&rsquo; option:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.mkv -codec copy -map 0 -f segment -segment_list out.csv -segment_frames 100,200,300,500,800 out%03d.nut
+</pre></td></tr></table>
+
+</li><li>
+To convert the &lsquo;<tt>in.mkv</tt>&rsquo; to TS segments using the <code>libx264</code>
+and <code>libfaac</code> encoders:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.mkv -map 0 -codec:v libx264 -codec:a libfaac -f ssegment -segment_list out.list out%03d.ts
+</pre></td></tr></table>
+
+</li><li>
+Segment the input file, and create an M3U8 live playlist (can be used
+as live HLS source):
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i in.mkv -codec copy -map 0 -f segment -segment_list playlist.m3u8 \
+-segment_list_flags +live -segment_time 10 out%03d.mkv
+</pre></td></tr></table>
+</li></ul>
+
+<a name="tee"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-tee">20.17 tee</a></h2>
+
+<p>The tee muxer can be used to write the same data to several files or any
+other kind of muxer. It can be used, for example, to both stream a video to
+the network and save it to disk at the same time.
+</p>
+<p>It is different from specifying several outputs to the <code>ffmpeg</code>
+command-line tool because the audio and video data will be encoded only once
+with the tee muxer; encoding can be a very expensive process. It is not
+useful when using the libavformat API directly because it is then possible
+to feed the same packets to several muxers directly.
+</p>
+<p>The slave outputs are specified in the file name given to the muxer,
+separated by &rsquo;|&rsquo;. If any of the slave name contains the &rsquo;|&rsquo; separator,
+leading or trailing spaces or any special character, it must be
+escaped (see the &ldquo;Quoting and escaping&rdquo; section in the ffmpeg-utils
+manual).
+</p>
+<p>Muxer options can be specified for each slave by prepending them as a list of
+<var>key</var>=<var>value</var> pairs separated by &rsquo;:&rsquo;, between square brackets. If
+the options values contain a special character or the &rsquo;:&rsquo; separator, they
+must be escaped; note that this is a second level escaping.
+</p>
+<p>The following special options are also recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>f</samp>&rsquo;</dt>
+<dd><p>Specify the format name. Useful if it cannot be guessed from the
+output name suffix.
+</p>
+</dd>
+<dt> &lsquo;<samp>bsfs[/<var>spec</var>]</samp>&rsquo;</dt>
+<dd><p>Specify a list of bitstream filters to apply to the specified
+output. It is possible to specify to which streams a given bitstream
+filter applies, by appending a stream specifier to the option
+separated by <code>/</code>. If the stream specifier is not specified, the
+bistream filters will be applied to all streams in the output.
+</p>
+<p>Several bitstream filters can be specified, separated by &quot;,&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>select</samp>&rsquo;</dt>
+<dd><p>Select the streams that should be mapped to the slave output,
+specified by a stream specifier. If not specified, this defaults to
+all the input streams.
+</p></dd>
+</dl>
+
+<p>Some examples follow.
+</p><ul>
+<li>
+Encode something and both archive it in a WebM file and stream it
+as MPEG-TS over UDP (the streams need to be explicitly mapped):
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i ... -c:v libx264 -c:a mp2 -f tee -map 0:v -map 0:a
+  &quot;archive-20121107.mkv|[f=mpegts]udp://10.0.1.255:1234/&quot;
+</pre></td></tr></table>
+
+</li><li>
+Use <code>ffmpeg</code> to encode the input, and send the output
+to three different destinations. The <code>dump_extra</code> bitstream
+filter is used to add extradata information to all the output video
+keyframes packets, as requested by the MPEG-TS format. The select
+option is applied to &lsquo;<tt>out.aac</tt>&rsquo; in order to make it contain only
+audio packets.
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i ... -map 0 -flags +global_header -c:v libx264 -c:a aac -strict experimental
+       -f tee &quot;[bsfs/v=dump_extra]out.ts|[movflags=+faststart]out.mp4|[select=a]out.aac&quot;
+</pre></td></tr></table>
+</li></ul>
+
+<p>Note: some codecs may need different options depending on the output format;
+the auto-detection of this can not work with the tee muxer. The main example
+is the &lsquo;<samp>global_header</samp>&rsquo; flag.
+</p>
+<a name="Metadata"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Metadata">21. Metadata</a></h1>
+
+<p>FFmpeg is able to dump metadata from media files into a simple UTF-8-encoded
+INI-like text file and then load it back using the metadata muxer/demuxer.
+</p>
+<p>The file format is as follows:
+</p><ol>
+<li>
+A file consists of a header and a number of metadata tags divided into sections,
+each on its own line.
+
+</li><li>
+The header is a &rsquo;;FFMETADATA&rsquo; string, followed by a version number (now 1).
+
+</li><li>
+Metadata tags are of the form &rsquo;key=value&rsquo;
+
+</li><li>
+Immediately after header follows global metadata
+
+</li><li>
+After global metadata there may be sections with per-stream/per-chapter
+metadata.
+
+</li><li>
+A section starts with the section name in uppercase (i.e. STREAM or CHAPTER) in
+brackets (&rsquo;[&rsquo;, &rsquo;]&rsquo;) and ends with next section or end of file.
+
+</li><li>
+At the beginning of a chapter section there may be an optional timebase to be
+used for start/end values. It must be in form &rsquo;TIMEBASE=num/den&rsquo;, where num and
+den are integers. If the timebase is missing then start/end times are assumed to
+be in milliseconds.
+Next a chapter section must contain chapter start and end times in form
+&rsquo;START=num&rsquo;, &rsquo;END=num&rsquo;, where num is a positive integer.
+
+</li><li>
+Empty lines and lines starting with &rsquo;;&rsquo; or &rsquo;#&rsquo; are ignored.
+
+</li><li>
+Metadata keys or values containing special characters (&rsquo;=&rsquo;, &rsquo;;&rsquo;, &rsquo;#&rsquo;, &rsquo;\&rsquo; and a
+newline) must be escaped with a backslash &rsquo;\&rsquo;.
+
+</li><li>
+Note that whitespace in metadata (e.g. foo = bar) is considered to be a part of
+the tag (in the example above key is &rsquo;foo &rsquo;, value is &rsquo; bar&rsquo;).
+</li></ol>
+
+<p>A ffmetadata file might look like this:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">;FFMETADATA1
+title=bike\\shed
+;this is a comment
+artist=FFmpeg troll team
+
+[CHAPTER]
+TIMEBASE=1/1000
+START=0
+#chapter ends at 0:01:00
+END=60000
+title=chapter \#1
+[STREAM]
+title=multi\
+line
+</pre></td></tr></table>
+
+<p>By using the ffmetadata muxer and demuxer it is possible to extract
+metadata from an input file to an ffmetadata file, and then transcode
+the file into an output file with the edited ffmetadata file.
+</p>
+<p>Extracting an ffmetadata file with &lsquo;<tt>ffmpeg</tt>&rsquo; goes as follows:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f ffmetadata FFMETADATAFILE
+</pre></td></tr></table>
+
+<p>Reinserting edited metadata information from the FFMETADATAFILE file can
+be done as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -i FFMETADATAFILE -map_metadata 1 -codec copy OUTPUT
+</pre></td></tr></table>
+
+<a name="Protocols"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Protocols">22. Protocols</a></h1>
+
+<p>Protocols are configured elements in FFmpeg that enable access to
+resources that require specific protocols.
+</p>
+<p>When you configure your FFmpeg build, all the supported protocols are
+enabled by default. You can list all available ones using the
+configure option &quot;&ndash;list-protocols&quot;.
+</p>
+<p>You can disable all the protocols using the configure option
+&quot;&ndash;disable-protocols&quot;, and selectively enable a protocol using the
+option &quot;&ndash;enable-protocol=<var>PROTOCOL</var>&quot;, or you can disable a
+particular protocol using the option
+&quot;&ndash;disable-protocol=<var>PROTOCOL</var>&quot;.
+</p>
+<p>The option &quot;-protocols&quot; of the ff* tools will display the list of
+supported protocols.
+</p>
+<p>A description of the currently available protocols follows.
+</p>
+<a name="bluray"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-bluray">22.1 bluray</a></h2>
+
+<p>Read BluRay playlist.
+</p>
+<p>The accepted options are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>angle</samp>&rsquo;</dt>
+<dd><p>BluRay angle
+</p>
+</dd>
+<dt> &lsquo;<samp>chapter</samp>&rsquo;</dt>
+<dd><p>Start chapter (1...N)
+</p>
+</dd>
+<dt> &lsquo;<samp>playlist</samp>&rsquo;</dt>
+<dd><p>Playlist to read (BDMV/PLAYLIST/?????.mpls)
+</p>
+</dd>
+</dl>
+
+<p>Examples:
+</p>
+<p>Read longest playlist from BluRay mounted to /mnt/bluray:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">bluray:/mnt/bluray
+</pre></td></tr></table>
+
+<p>Read angle 2 of playlist 4 from BluRay mounted to /mnt/bluray, start from chapter 2:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">-playlist 4 -angle 2 -chapter 2 bluray:/mnt/bluray
+</pre></td></tr></table>
+
+<a name="cache"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-cache">22.2 cache</a></h2>
+
+<p>Caching wrapper for input stream.
+</p>
+<p>Cache the input stream to temporary file. It brings seeking capability to live streams.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">cache:<var>URL</var>
+</pre></td></tr></table>
+
+<a name="concat-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-concat-1">22.3 concat</a></h2>
+
+<p>Physical concatenation protocol.
+</p>
+<p>Allow to read and seek from many resource in sequence as if they were
+a unique resource.
+</p>
+<p>A URL accepted by this protocol has the syntax:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">concat:<var>URL1</var>|<var>URL2</var>|...|<var>URLN</var>
+</pre></td></tr></table>
+
+<p>where <var>URL1</var>, <var>URL2</var>, ..., <var>URLN</var> are the urls of the
+resource to be concatenated, each one possibly specifying a distinct
+protocol.
+</p>
+<p>For example to read a sequence of files &lsquo;<tt>split1.mpeg</tt>&rsquo;,
+&lsquo;<tt>split2.mpeg</tt>&rsquo;, &lsquo;<tt>split3.mpeg</tt>&rsquo; with <code>ffplay</code> use the
+command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay concat:split1.mpeg\|split2.mpeg\|split3.mpeg
+</pre></td></tr></table>
+
+<p>Note that you may need to escape the character &quot;|&quot; which is special for
+many shells.
+</p>
+<a name="crypto"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-crypto">22.4 crypto</a></h2>
+
+<p>AES-encrypted stream reading protocol.
+</p>
+<p>The accepted options are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>key</samp>&rsquo;</dt>
+<dd><p>Set the AES decryption key binary block from given hexadecimal representation.
+</p>
+</dd>
+<dt> &lsquo;<samp>iv</samp>&rsquo;</dt>
+<dd><p>Set the AES decryption initialization vector binary block from given hexadecimal representation.
+</p></dd>
+</dl>
+
+<p>Accepted URL formats:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">crypto:<var>URL</var>
+crypto+<var>URL</var>
+</pre></td></tr></table>
+
+<a name="data"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-data">22.5 data</a></h2>
+
+<p>Data in-line in the URI. See <a href="http://en.wikipedia.org/wiki/Data_URI_scheme">http://en.wikipedia.org/wiki/Data_URI_scheme</a>.
+</p>
+<p>For example, to convert a GIF file given inline with <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i &quot;data:image/gif;base64,R0lGODdhCAAIAMIEAAAAAAAA//8AAP//AP///////////////ywAAAAACAAIAAADF0gEDLojDgdGiJdJqUX02iB4E8Q9jUMkADs=&quot; smiley.png
+</pre></td></tr></table>
+
+<a name="file"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-file">22.6 file</a></h2>
+
+<p>File access protocol.
+</p>
+<p>Allow to read from or read to a file.
+</p>
+<p>For example to read from a file &lsquo;<tt>input.mpeg</tt>&rsquo; with <code>ffmpeg</code>
+use the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i file:input.mpeg output.mpeg
+</pre></td></tr></table>
+
+<p>The ff* tools default to the file protocol, that is a resource
+specified with the name &quot;FILE.mpeg&quot; is interpreted as the URL
+&quot;file:FILE.mpeg&quot;.
+</p>
+<p>This protocol accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>truncate</samp>&rsquo;</dt>
+<dd><p>Truncate existing files on write, if set to 1. A value of 0 prevents
+truncating. Default value is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>blocksize</samp>&rsquo;</dt>
+<dd><p>Set I/O operation maximum block size, in bytes. Default value is
+<code>INT_MAX</code>, which results in not limiting the requested block size.
+Setting this value reasonably low improves user termination request reaction
+time, which is valuable for files on slow medium.
+</p></dd>
+</dl>
+
+<a name="ftp"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-ftp">22.7 ftp</a></h2>
+
+<p>FTP (File Transfer Protocol).
+</p>
+<p>Allow to read from or write to remote resources using FTP protocol.
+</p>
+<p>Following syntax is required.
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ftp://[user[:password]@]server[:port]/path/to/remote/resource.mpeg
+</pre></td></tr></table>
+
+<p>This protocol accepts the following options.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>timeout</samp>&rsquo;</dt>
+<dd><p>Set timeout of socket I/O operations used by the underlying low level
+operation. By default it is set to -1, which means that the timeout is
+not specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>ftp-anonymous-password</samp>&rsquo;</dt>
+<dd><p>Password used when login as anonymous user. Typically an e-mail address
+should be used.
+</p>
+</dd>
+<dt> &lsquo;<samp>ftp-write-seekable</samp>&rsquo;</dt>
+<dd><p>Control seekability of connection during encoding. If set to 1 the
+resource is supposed to be seekable, if set to 0 it is assumed not
+to be seekable. Default value is 0.
+</p></dd>
+</dl>
+
+<p>NOTE: Protocol can be used as output, but it is recommended to not do
+it, unless special care is taken (tests, customized server configuration
+etc.). Different FTP servers behave in different way during seek
+operation. ff* tools may produce incomplete content due to server limitations.
+</p>
+<a name="gopher"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-gopher">22.8 gopher</a></h2>
+
+<p>Gopher protocol.
+</p>
+<a name="hls-2"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-hls-2">22.9 hls</a></h2>
+
+<p>Read Apple HTTP Live Streaming compliant segmented stream as
+a uniform one. The M3U8 playlists describing the segments can be
+remote HTTP resources or local files, accessed using the standard
+file protocol.
+The nested protocol is declared by specifying
+&quot;+<var>proto</var>&quot; after the hls URI scheme name, where <var>proto</var>
+is either &quot;file&quot; or &quot;http&quot;.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">hls+http://host/path/to/remote/resource.m3u8
+hls+file://path/to/local/resource.m3u8
+</pre></td></tr></table>
+
+<p>Using this protocol is discouraged - the hls demuxer should work
+just as well (if not, please report the issues) and is more complete.
+To use the hls demuxer instead, simply use the direct URLs to the
+m3u8 files.
+</p>
+<a name="http"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-http">22.10 http</a></h2>
+
+<p>HTTP (Hyper Text Transfer Protocol).
+</p>
+<p>This protocol accepts the following options.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>seekable</samp>&rsquo;</dt>
+<dd><p>Control seekability of connection. If set to 1 the resource is
+supposed to be seekable, if set to 0 it is assumed not to be seekable,
+if set to -1 it will try to autodetect if it is seekable. Default
+value is -1.
+</p>
+</dd>
+<dt> &lsquo;<samp>chunked_post</samp>&rsquo;</dt>
+<dd><p>If set to 1 use chunked transfer-encoding for posts, default is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>headers</samp>&rsquo;</dt>
+<dd><p>Set custom HTTP headers, can override built in default headers. The
+value must be a string encoding the headers.
+</p>
+</dd>
+<dt> &lsquo;<samp>content_type</samp>&rsquo;</dt>
+<dd><p>Force a content type.
+</p>
+</dd>
+<dt> &lsquo;<samp>user-agent</samp>&rsquo;</dt>
+<dd><p>Override User-Agent header. If not specified the protocol will use a
+string describing the libavformat build.
+</p>
+</dd>
+<dt> &lsquo;<samp>multiple_requests</samp>&rsquo;</dt>
+<dd><p>Use persistent connections if set to 1. By default it is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>post_data</samp>&rsquo;</dt>
+<dd><p>Set custom HTTP post data.
+</p>
+</dd>
+<dt> &lsquo;<samp>timeout</samp>&rsquo;</dt>
+<dd><p>Set timeout of socket I/O operations used by the underlying low level
+operation. By default it is set to -1, which means that the timeout is
+not specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>mime_type</samp>&rsquo;</dt>
+<dd><p>Set MIME type.
+</p>
+</dd>
+<dt> &lsquo;<samp>icy</samp>&rsquo;</dt>
+<dd><p>If set to 1 request ICY (SHOUTcast) metadata from the server. If the server
+supports this, the metadata has to be retrieved by the application by reading
+the &lsquo;<samp>icy_metadata_headers</samp>&rsquo; and &lsquo;<samp>icy_metadata_packet</samp>&rsquo; options.
+The default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>icy_metadata_headers</samp>&rsquo;</dt>
+<dd><p>If the server supports ICY metadata, this contains the ICY specific HTTP reply
+headers, separated with newline characters.
+</p>
+</dd>
+<dt> &lsquo;<samp>icy_metadata_packet</samp>&rsquo;</dt>
+<dd><p>If the server supports ICY metadata, and &lsquo;<samp>icy</samp>&rsquo; was set to 1, this
+contains the last non-empty metadata packet sent by the server.
+</p>
+</dd>
+<dt> &lsquo;<samp>cookies</samp>&rsquo;</dt>
+<dd><p>Set the cookies to be sent in future requests. The format of each cookie is the
+same as the value of a Set-Cookie HTTP response field. Multiple cookies can be
+delimited by a newline character.
+</p></dd>
+</dl>
+
+<a name="HTTP-Cookies"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-HTTP-Cookies">22.10.1 HTTP Cookies</a></h3>
+
+<p>Some HTTP requests will be denied unless cookie values are passed in with the
+request. The &lsquo;<samp>cookies</samp>&rsquo; option allows these cookies to be specified. At
+the very least, each cookie must specify a value along with a path and domain.
+HTTP requests that match both the domain and path will automatically include the
+cookie value in the HTTP Cookie header field. Multiple cookies can be delimited
+by a newline.
+</p>
+<p>The required syntax to play a stream specifying a cookie is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay -cookies &quot;nlqptid=nltid=tsn; path=/; domain=somedomain.com;&quot; http://somedomain.com/somestream.m3u8
+</pre></td></tr></table>
+
+<a name="mmst"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-mmst">22.11 mmst</a></h2>
+
+<p>MMS (Microsoft Media Server) protocol over TCP.
+</p>
+<a name="mmsh"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-mmsh">22.12 mmsh</a></h2>
+
+<p>MMS (Microsoft Media Server) protocol over HTTP.
+</p>
+<p>The required syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">mmsh://<var>server</var>[:<var>port</var>][/<var>app</var>][/<var>playpath</var>]
+</pre></td></tr></table>
+
+<a name="md5-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-md5-1">22.13 md5</a></h2>
+
+<p>MD5 output protocol.
+</p>
+<p>Computes the MD5 hash of the data to be written, and on close writes
+this to the designated output or stdout if none is specified. It can
+be used to test muxers without writing an actual file.
+</p>
+<p>Some examples follow.
+</p><table><tr><td>&nbsp;</td><td><pre class="example"># Write the MD5 hash of the encoded AVI file to the file output.avi.md5.
+ffmpeg -i input.flv -f avi -y md5:output.avi.md5
+
+# Write the MD5 hash of the encoded AVI file to stdout.
+ffmpeg -i input.flv -f avi -y md5:
+</pre></td></tr></table>
+
+<p>Note that some formats (typically MOV) require the output protocol to
+be seekable, so they will fail with the MD5 output protocol.
+</p>
+<a name="pipe"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-pipe">22.14 pipe</a></h2>
+
+<p>UNIX pipe access protocol.
+</p>
+<p>Allow to read and write from UNIX pipes.
+</p>
+<p>The accepted syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pipe:[<var>number</var>]
+</pre></td></tr></table>
+
+<p><var>number</var> is the number corresponding to the file descriptor of the
+pipe (e.g. 0 for stdin, 1 for stdout, 2 for stderr).  If <var>number</var>
+is not specified, by default the stdout file descriptor will be used
+for writing, stdin for reading.
+</p>
+<p>For example to read from stdin with <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">cat test.wav | ffmpeg -i pipe:0
+# ...this is the same as...
+cat test.wav | ffmpeg -i pipe:
+</pre></td></tr></table>
+
+<p>For writing to stdout with <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i test.wav -f avi pipe:1 | cat &gt; test.avi
+# ...this is the same as...
+ffmpeg -i test.wav -f avi pipe: | cat &gt; test.avi
+</pre></td></tr></table>
+
+<p>This protocol accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>blocksize</samp>&rsquo;</dt>
+<dd><p>Set I/O operation maximum block size, in bytes. Default value is
+<code>INT_MAX</code>, which results in not limiting the requested block size.
+Setting this value reasonably low improves user termination request reaction
+time, which is valuable if data transmission is slow.
+</p></dd>
+</dl>
+
+<p>Note that some formats (typically MOV), require the output protocol to
+be seekable, so they will fail with the pipe output protocol.
+</p>
+<a name="rtmp"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-rtmp">22.15 rtmp</a></h2>
+
+<p>Real-Time Messaging Protocol.
+</p>
+<p>The Real-Time Messaging Protocol (RTMP) is used for streaming multimedia
+content across a TCP/IP network.
+</p>
+<p>The required syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">rtmp://[<var>username</var>:<var>password</var>@]<var>server</var>[:<var>port</var>][/<var>app</var>][/<var>instance</var>][/<var>playpath</var>]
+</pre></td></tr></table>
+
+<p>The accepted parameters are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>username</samp>&rsquo;</dt>
+<dd><p>An optional username (mostly for publishing).
+</p>
+</dd>
+<dt> &lsquo;<samp>password</samp>&rsquo;</dt>
+<dd><p>An optional password (mostly for publishing).
+</p>
+</dd>
+<dt> &lsquo;<samp>server</samp>&rsquo;</dt>
+<dd><p>The address of the RTMP server.
+</p>
+</dd>
+<dt> &lsquo;<samp>port</samp>&rsquo;</dt>
+<dd><p>The number of the TCP port to use (by default is 1935).
+</p>
+</dd>
+<dt> &lsquo;<samp>app</samp>&rsquo;</dt>
+<dd><p>It is the name of the application to access. It usually corresponds to
+the path where the application is installed on the RTMP server
+(e.g. &lsquo;<tt>/ondemand/</tt>&rsquo;, &lsquo;<tt>/flash/live/</tt>&rsquo;, etc.). You can override
+the value parsed from the URI through the <code>rtmp_app</code> option, too.
+</p>
+</dd>
+<dt> &lsquo;<samp>playpath</samp>&rsquo;</dt>
+<dd><p>It is the path or name of the resource to play with reference to the
+application specified in <var>app</var>, may be prefixed by &quot;mp4:&quot;. You
+can override the value parsed from the URI through the <code>rtmp_playpath</code>
+option, too.
+</p>
+</dd>
+<dt> &lsquo;<samp>listen</samp>&rsquo;</dt>
+<dd><p>Act as a server, listening for an incoming connection.
+</p>
+</dd>
+<dt> &lsquo;<samp>timeout</samp>&rsquo;</dt>
+<dd><p>Maximum time to wait for the incoming connection. Implies listen.
+</p></dd>
+</dl>
+
+<p>Additionally, the following parameters can be set via command line options
+(or in code via <code>AVOption</code>s):
+</p><dl compact="compact">
+<dt> &lsquo;<samp>rtmp_app</samp>&rsquo;</dt>
+<dd><p>Name of application to connect on the RTMP server. This option
+overrides the parameter specified in the URI.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_buffer</samp>&rsquo;</dt>
+<dd><p>Set the client buffer time in milliseconds. The default is 3000.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_conn</samp>&rsquo;</dt>
+<dd><p>Extra arbitrary AMF connection parameters, parsed from a string,
+e.g. like <code>B:1 S:authMe O:1 NN:code:1.23 NS:flag:ok O:0</code>.
+Each value is prefixed by a single character denoting the type,
+B for Boolean, N for number, S for string, O for object, or Z for null,
+followed by a colon. For Booleans the data must be either 0 or 1 for
+FALSE or TRUE, respectively.  Likewise for Objects the data must be 0 or
+1 to end or begin an object, respectively. Data items in subobjects may
+be named, by prefixing the type with &rsquo;N&rsquo; and specifying the name before
+the value (i.e. <code>NB:myFlag:1</code>). This option may be used multiple
+times to construct arbitrary AMF sequences.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_flashver</samp>&rsquo;</dt>
+<dd><p>Version of the Flash plugin used to run the SWF player. The default
+is LNX 9,0,124,2. (When publishing, the default is FMLE/3.0 (compatible;
+&lt;libavformat version&gt;).)
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_flush_interval</samp>&rsquo;</dt>
+<dd><p>Number of packets flushed in the same request (RTMPT only). The default
+is 10.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_live</samp>&rsquo;</dt>
+<dd><p>Specify that the media is a live stream. No resuming or seeking in
+live streams is possible. The default value is <code>any</code>, which means the
+subscriber first tries to play the live stream specified in the
+playpath. If a live stream of that name is not found, it plays the
+recorded stream. The other possible values are <code>live</code> and
+<code>recorded</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_pageurl</samp>&rsquo;</dt>
+<dd><p>URL of the web page in which the media was embedded. By default no
+value will be sent.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_playpath</samp>&rsquo;</dt>
+<dd><p>Stream identifier to play or to publish. This option overrides the
+parameter specified in the URI.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_subscribe</samp>&rsquo;</dt>
+<dd><p>Name of live stream to subscribe to. By default no value will be sent.
+It is only sent if the option is specified or if rtmp_live
+is set to live.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_swfhash</samp>&rsquo;</dt>
+<dd><p>SHA256 hash of the decompressed SWF file (32 bytes).
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_swfsize</samp>&rsquo;</dt>
+<dd><p>Size of the decompressed SWF file, required for SWFVerification.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_swfurl</samp>&rsquo;</dt>
+<dd><p>URL of the SWF player for the media. By default no value will be sent.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_swfverify</samp>&rsquo;</dt>
+<dd><p>URL to player swf file, compute hash/size automatically.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtmp_tcurl</samp>&rsquo;</dt>
+<dd><p>URL of the target stream. Defaults to proto://host[:port]/app.
+</p>
+</dd>
+</dl>
+
+<p>For example to read with <code>ffplay</code> a multimedia resource named
+&quot;sample&quot; from the application &quot;vod&quot; from an RTMP server &quot;myserver&quot;:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay rtmp://myserver/vod/sample
+</pre></td></tr></table>
+
+<p>To publish to a password protected server, passing the playpath and
+app names separately:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i &lt;input&gt; -f flv -rtmp_playpath some/long/path -rtmp_app long/app/name rtmp://username:password@myserver/
+</pre></td></tr></table>
+
+<a name="rtmpe"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-rtmpe">22.16 rtmpe</a></h2>
+
+<p>Encrypted Real-Time Messaging Protocol.
+</p>
+<p>The Encrypted Real-Time Messaging Protocol (RTMPE) is used for
+streaming multimedia content within standard cryptographic primitives,
+consisting of Diffie-Hellman key exchange and HMACSHA256, generating
+a pair of RC4 keys.
+</p>
+<a name="rtmps"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-rtmps">22.17 rtmps</a></h2>
+
+<p>Real-Time Messaging Protocol over a secure SSL connection.
+</p>
+<p>The Real-Time Messaging Protocol (RTMPS) is used for streaming
+multimedia content across an encrypted connection.
+</p>
+<a name="rtmpt"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-rtmpt">22.18 rtmpt</a></h2>
+
+<p>Real-Time Messaging Protocol tunneled through HTTP.
+</p>
+<p>The Real-Time Messaging Protocol tunneled through HTTP (RTMPT) is used
+for streaming multimedia content within HTTP requests to traverse
+firewalls.
+</p>
+<a name="rtmpte"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-rtmpte">22.19 rtmpte</a></h2>
+
+<p>Encrypted Real-Time Messaging Protocol tunneled through HTTP.
+</p>
+<p>The Encrypted Real-Time Messaging Protocol tunneled through HTTP (RTMPTE)
+is used for streaming multimedia content within HTTP requests to traverse
+firewalls.
+</p>
+<a name="rtmpts"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-rtmpts">22.20 rtmpts</a></h2>
+
+<p>Real-Time Messaging Protocol tunneled through HTTPS.
+</p>
+<p>The Real-Time Messaging Protocol tunneled through HTTPS (RTMPTS) is used
+for streaming multimedia content within HTTPS requests to traverse
+firewalls.
+</p>
+<a name="libssh"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-libssh">22.21 libssh</a></h2>
+
+<p>Secure File Transfer Protocol via libssh
+</p>
+<p>Allow to read from or write to remote resources using SFTP protocol.
+</p>
+<p>Following syntax is required.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">sftp://[user[:password]@]server[:port]/path/to/remote/resource.mpeg
+</pre></td></tr></table>
+
+<p>This protocol accepts the following options.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>timeout</samp>&rsquo;</dt>
+<dd><p>Set timeout of socket I/O operations used by the underlying low level
+operation. By default it is set to -1, which means that the timeout
+is not specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>truncate</samp>&rsquo;</dt>
+<dd><p>Truncate existing files on write, if set to 1. A value of 0 prevents
+truncating. Default value is 1.
+</p>
+</dd>
+</dl>
+
+<p>Example: Play a file stored on remote server.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay sftp://user:password@server_address:22/home/user/resource.mpeg
+</pre></td></tr></table>
+
+<a name="librtmp-rtmp_002c-rtmpe_002c-rtmps_002c-rtmpt_002c-rtmpte"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-librtmp-rtmp_002c-rtmpe_002c-rtmps_002c-rtmpt_002c-rtmpte">22.22 librtmp rtmp, rtmpe, rtmps, rtmpt, rtmpte</a></h2>
+
+<p>Real-Time Messaging Protocol and its variants supported through
+librtmp.
+</p>
+<p>Requires the presence of the librtmp headers and library during
+configuration. You need to explicitly configure the build with
+&quot;&ndash;enable-librtmp&quot;. If enabled this will replace the native RTMP
+protocol.
+</p>
+<p>This protocol provides most client functions and a few server
+functions needed to support RTMP, RTMP tunneled in HTTP (RTMPT),
+encrypted RTMP (RTMPE), RTMP over SSL/TLS (RTMPS) and tunneled
+variants of these encrypted types (RTMPTE, RTMPTS).
+</p>
+<p>The required syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>rtmp_proto</var>://<var>server</var>[:<var>port</var>][/<var>app</var>][/<var>playpath</var>] <var>options</var>
+</pre></td></tr></table>
+
+<p>where <var>rtmp_proto</var> is one of the strings &quot;rtmp&quot;, &quot;rtmpt&quot;, &quot;rtmpe&quot;,
+&quot;rtmps&quot;, &quot;rtmpte&quot;, &quot;rtmpts&quot; corresponding to each RTMP variant, and
+<var>server</var>, <var>port</var>, <var>app</var> and <var>playpath</var> have the same
+meaning as specified for the RTMP native protocol.
+<var>options</var> contains a list of space-separated options of the form
+<var>key</var>=<var>val</var>.
+</p>
+<p>See the librtmp manual page (man 3 librtmp) for more information.
+</p>
+<p>For example, to stream a file in real-time to an RTMP server using
+<code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i myfile -f flv rtmp://myserver/live/mystream
+</pre></td></tr></table>
+
+<p>To play the same stream using <code>ffplay</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay &quot;rtmp://myserver/live/mystream live=1&quot;
+</pre></td></tr></table>
+
+<a name="rtp"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-rtp">22.23 rtp</a></h2>
+
+<p>Real-time Transport Protocol.
+</p>
+<p>The required syntax for an RTP URL is:
+rtp://<var>hostname</var>[:<var>port</var>][?<var>option</var>=<var>val</var>...]
+</p>
+<p><var>port</var> specifies the RTP port to use.
+</p>
+<p>The following URL options are supported:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>ttl=<var>n</var></samp>&rsquo;</dt>
+<dd><p>Set the TTL (Time-To-Live) value (for multicast only).
+</p>
+</dd>
+<dt> &lsquo;<samp>rtcpport=<var>n</var></samp>&rsquo;</dt>
+<dd><p>Set the remote RTCP port to <var>n</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>localrtpport=<var>n</var></samp>&rsquo;</dt>
+<dd><p>Set the local RTP port to <var>n</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>localrtcpport=<var>n</var>'</samp>&rsquo;</dt>
+<dd><p>Set the local RTCP port to <var>n</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>pkt_size=<var>n</var></samp>&rsquo;</dt>
+<dd><p>Set max packet size (in bytes) to <var>n</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>connect=0|1</samp>&rsquo;</dt>
+<dd><p>Do a <code>connect()</code> on the UDP socket (if set to 1) or not (if set
+to 0).
+</p>
+</dd>
+<dt> &lsquo;<samp>sources=<var>ip</var>[,<var>ip</var>]</samp>&rsquo;</dt>
+<dd><p>List allowed source IP addresses.
+</p>
+</dd>
+<dt> &lsquo;<samp>block=<var>ip</var>[,<var>ip</var>]</samp>&rsquo;</dt>
+<dd><p>List disallowed (blocked) source IP addresses.
+</p>
+</dd>
+<dt> &lsquo;<samp>write_to_source=0|1</samp>&rsquo;</dt>
+<dd><p>Send packets to the source address of the latest received packet (if
+set to 1) or to a default remote address (if set to 0).
+</p>
+</dd>
+<dt> &lsquo;<samp>localport=<var>n</var></samp>&rsquo;</dt>
+<dd><p>Set the local RTP port to <var>n</var>.
+</p>
+<p>This is a deprecated option. Instead, &lsquo;<samp>localrtpport</samp>&rsquo; should be
+used.
+</p>
+</dd>
+</dl>
+
+<p>Important notes:
+</p>
+<ol>
+<li>
+If &lsquo;<samp>rtcpport</samp>&rsquo; is not set the RTCP port will be set to the RTP
+port value plus 1.
+
+</li><li>
+If &lsquo;<samp>localrtpport</samp>&rsquo; (the local RTP port) is not set any available
+port will be used for the local RTP and RTCP ports.
+
+</li><li>
+If &lsquo;<samp>localrtcpport</samp>&rsquo; (the local RTCP port) is not set it will be
+set to the the local RTP port value plus 1.
+</li></ol>
+
+<a name="rtsp"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-rtsp">22.24 rtsp</a></h2>
+
+<p>RTSP is not technically a protocol handler in libavformat, it is a demuxer
+and muxer. The demuxer supports both normal RTSP (with data transferred
+over RTP; this is used by e.g. Apple and Microsoft) and Real-RTSP (with
+data transferred over RDT).
+</p>
+<p>The muxer can be used to send a stream using RTSP ANNOUNCE to a server
+supporting it (currently Darwin Streaming Server and Mischa Spiegelmock&rsquo;s
+<a href="http://github.com/revmischa/rtsp-server">RTSP server</a>).
+</p>
+<p>The required syntax for a RTSP url is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">rtsp://<var>hostname</var>[:<var>port</var>]/<var>path</var>
+</pre></td></tr></table>
+
+<p>The following options (set on the <code>ffmpeg</code>/<code>ffplay</code> command
+line, or set in code via <code>AVOption</code>s or in <code>avformat_open_input</code>),
+are supported:
+</p>
+<p>Flags for <code>rtsp_transport</code>:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>udp</samp>&rsquo;</dt>
+<dd><p>Use UDP as lower transport protocol.
+</p>
+</dd>
+<dt> &lsquo;<samp>tcp</samp>&rsquo;</dt>
+<dd><p>Use TCP (interleaving within the RTSP control channel) as lower
+transport protocol.
+</p>
+</dd>
+<dt> &lsquo;<samp>udp_multicast</samp>&rsquo;</dt>
+<dd><p>Use UDP multicast as lower transport protocol.
+</p>
+</dd>
+<dt> &lsquo;<samp>http</samp>&rsquo;</dt>
+<dd><p>Use HTTP tunneling as lower transport protocol, which is useful for
+passing proxies.
+</p></dd>
+</dl>
+
+<p>Multiple lower transport protocols may be specified, in that case they are
+tried one at a time (if the setup of one fails, the next one is tried).
+For the muxer, only the <code>tcp</code> and <code>udp</code> options are supported.
+</p>
+<p>Flags for <code>rtsp_flags</code>:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filter_src</samp>&rsquo;</dt>
+<dd><p>Accept packets only from negotiated peer address and port.
+</p></dd>
+<dt> &lsquo;<samp>listen</samp>&rsquo;</dt>
+<dd><p>Act as a server, listening for an incoming connection.
+</p></dd>
+</dl>
+
+<p>When receiving data over UDP, the demuxer tries to reorder received packets
+(since they may arrive out of order, or packets may get lost totally). This
+can be disabled by setting the maximum demuxing delay to zero (via
+the <code>max_delay</code> field of AVFormatContext).
+</p>
+<p>When watching multi-bitrate Real-RTSP streams with <code>ffplay</code>, the
+streams to display can be chosen with <code>-vst</code> <var>n</var> and
+<code>-ast</code> <var>n</var> for video and audio respectively, and can be switched
+on the fly by pressing <code>v</code> and <code>a</code>.
+</p>
+<p>Example command lines:
+</p>
+<p>To watch a stream over UDP, with a max reordering delay of 0.5 seconds:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -max_delay 500000 -rtsp_transport udp rtsp://server/video.mp4
+</pre></td></tr></table>
+
+<p>To watch a stream tunneled over HTTP:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -rtsp_transport http rtsp://server/video.mp4
+</pre></td></tr></table>
+
+<p>To send a stream in realtime to a RTSP server, for others to watch:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i <var>input</var> -f rtsp -muxdelay 0.1 rtsp://server/live.sdp
+</pre></td></tr></table>
+
+<p>To receive a stream in realtime:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -rtsp_flags listen -i rtsp://ownaddress/live.sdp <var>output</var>
+</pre></td></tr></table>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>stimeout</samp>&rsquo;</dt>
+<dd><p>Socket IO timeout in micro seconds.
+</p></dd>
+</dl>
+
+<a name="sap"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-sap">22.25 sap</a></h2>
+
+<p>Session Announcement Protocol (RFC 2974). This is not technically a
+protocol handler in libavformat, it is a muxer and demuxer.
+It is used for signalling of RTP streams, by announcing the SDP for the
+streams regularly on a separate port.
+</p>
+<a name="Muxer"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Muxer">22.25.1 Muxer</a></h3>
+
+<p>The syntax for a SAP url given to the muxer is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">sap://<var>destination</var>[:<var>port</var>][?<var>options</var>]
+</pre></td></tr></table>
+
+<p>The RTP packets are sent to <var>destination</var> on port <var>port</var>,
+or to port 5004 if no port is specified.
+<var>options</var> is a <code>&amp;</code>-separated list. The following options
+are supported:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>announce_addr=<var>address</var></samp>&rsquo;</dt>
+<dd><p>Specify the destination IP address for sending the announcements to.
+If omitted, the announcements are sent to the commonly used SAP
+announcement multicast address 224.2.127.254 (sap.mcast.net), or
+ff0e::2:7ffe if <var>destination</var> is an IPv6 address.
+</p>
+</dd>
+<dt> &lsquo;<samp>announce_port=<var>port</var></samp>&rsquo;</dt>
+<dd><p>Specify the port to send the announcements on, defaults to
+9875 if not specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>ttl=<var>ttl</var></samp>&rsquo;</dt>
+<dd><p>Specify the time to live value for the announcements and RTP packets,
+defaults to 255.
+</p>
+</dd>
+<dt> &lsquo;<samp>same_port=<var>0|1</var></samp>&rsquo;</dt>
+<dd><p>If set to 1, send all RTP streams on the same port pair. If zero (the
+default), all streams are sent on unique ports, with each stream on a
+port 2 numbers higher than the previous.
+VLC/Live555 requires this to be set to 1, to be able to receive the stream.
+The RTP stack in libavformat for receiving requires all streams to be sent
+on unique ports.
+</p></dd>
+</dl>
+
+<p>Example command lines follow.
+</p>
+<p>To broadcast a stream on the local subnet, for watching in VLC:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i <var>input</var> -f sap sap://224.0.0.255?same_port=1
+</pre></td></tr></table>
+
+<p>Similarly, for watching in <code>ffplay</code>:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i <var>input</var> -f sap sap://224.0.0.255
+</pre></td></tr></table>
+
+<p>And for watching in <code>ffplay</code>, over IPv6:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i <var>input</var> -f sap sap://[ff0e::1:2:3:4]
+</pre></td></tr></table>
+
+<a name="Demuxer"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Demuxer">22.25.2 Demuxer</a></h3>
+
+<p>The syntax for a SAP url given to the demuxer is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">sap://[<var>address</var>][:<var>port</var>]
+</pre></td></tr></table>
+
+<p><var>address</var> is the multicast address to listen for announcements on,
+if omitted, the default 224.2.127.254 (sap.mcast.net) is used. <var>port</var>
+is the port that is listened on, 9875 if omitted.
+</p>
+<p>The demuxers listens for announcements on the given address and port.
+Once an announcement is received, it tries to receive that particular stream.
+</p>
+<p>Example command lines follow.
+</p>
+<p>To play back the first stream announced on the normal SAP multicast address:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay sap://
+</pre></td></tr></table>
+
+<p>To play back the first stream announced on one the default IPv6 SAP multicast address:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay sap://[ff0e::2:7ffe]
+</pre></td></tr></table>
+
+<a name="sctp"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-sctp">22.26 sctp</a></h2>
+
+<p>Stream Control Transmission Protocol.
+</p>
+<p>The accepted URL syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">sctp://<var>host</var>:<var>port</var>[?<var>options</var>]
+</pre></td></tr></table>
+
+<p>The protocol accepts the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>listen</samp>&rsquo;</dt>
+<dd><p>If set to any value, listen for an incoming connection. Outgoing connection is done by default.
+</p>
+</dd>
+<dt> &lsquo;<samp>max_streams</samp>&rsquo;</dt>
+<dd><p>Set the maximum number of streams. By default no limit is set.
+</p></dd>
+</dl>
+
+<a name="srtp"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-srtp">22.27 srtp</a></h2>
+
+<p>Secure Real-time Transport Protocol.
+</p>
+<p>The accepted options are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>srtp_in_suite</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>srtp_out_suite</samp>&rsquo;</dt>
+<dd><p>Select input and output encoding suites.
+</p>
+<p>Supported values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>AES_CM_128_HMAC_SHA1_80</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>SRTP_AES128_CM_HMAC_SHA1_80</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>AES_CM_128_HMAC_SHA1_32</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>SRTP_AES128_CM_HMAC_SHA1_32</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>srtp_in_params</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>srtp_out_params</samp>&rsquo;</dt>
+<dd><p>Set input and output encoding parameters, which are expressed by a
+base64-encoded representation of a binary block. The first 16 bytes of
+this binary block are used as master key, the following 14 bytes are
+used as master salt.
+</p></dd>
+</dl>
+
+<a name="tcp"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-tcp">22.28 tcp</a></h2>
+
+<p>Trasmission Control Protocol.
+</p>
+<p>The required syntax for a TCP url is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">tcp://<var>hostname</var>:<var>port</var>[?<var>options</var>]
+</pre></td></tr></table>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>listen</samp>&rsquo;</dt>
+<dd><p>Listen for an incoming connection
+</p>
+</dd>
+<dt> &lsquo;<samp>timeout=<var>microseconds</var></samp>&rsquo;</dt>
+<dd><p>In read mode: if no data arrived in more than this time interval, raise error.
+In write mode: if socket cannot be written in more than this time interval, raise error.
+This also sets timeout on TCP connection establishing.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i <var>input</var> -f <var>format</var> tcp://<var>hostname</var>:<var>port</var>?listen
+ffplay tcp://<var>hostname</var>:<var>port</var>
+</pre></td></tr></table>
+
+</dd>
+</dl>
+
+<a name="tls"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-tls">22.29 tls</a></h2>
+
+<p>Transport Layer Security (TLS) / Secure Sockets Layer (SSL)
+</p>
+<p>The required syntax for a TLS/SSL url is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">tls://<var>hostname</var>:<var>port</var>[?<var>options</var>]
+</pre></td></tr></table>
+
+<p>The following parameters can be set via command line options
+(or in code via <code>AVOption</code>s):
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>ca_file, cafile=<var>filename</var></samp>&rsquo;</dt>
+<dd><p>A file containing certificate authority (CA) root certificates to treat
+as trusted. If the linked TLS library contains a default this might not
+need to be specified for verification to work, but not all libraries and
+setups have defaults built in.
+The file must be in OpenSSL PEM format.
+</p>
+</dd>
+<dt> &lsquo;<samp>tls_verify=<var>1|0</var></samp>&rsquo;</dt>
+<dd><p>If enabled, try to verify the peer that we are communicating with.
+Note, if using OpenSSL, this currently only makes sure that the
+peer certificate is signed by one of the root certificates in the CA
+database, but it does not validate that the certificate actually
+matches the host name we are trying to connect to. (With GnuTLS,
+the host name is validated as well.)
+</p>
+<p>This is disabled by default since it requires a CA database to be
+provided by the caller in many cases.
+</p>
+</dd>
+<dt> &lsquo;<samp>cert_file, cert=<var>filename</var></samp>&rsquo;</dt>
+<dd><p>A file containing a certificate to use in the handshake with the peer.
+(When operating as server, in listen mode, this is more often required
+by the peer, while client certificates only are mandated in certain
+setups.)
+</p>
+</dd>
+<dt> &lsquo;<samp>key_file, key=<var>filename</var></samp>&rsquo;</dt>
+<dd><p>A file containing the private key for the certificate.
+</p>
+</dd>
+<dt> &lsquo;<samp>listen=<var>1|0</var></samp>&rsquo;</dt>
+<dd><p>If enabled, listen for connections on the provided port, and assume
+the server role in the handshake instead of the client role.
+</p>
+</dd>
+</dl>
+
+<p>Example command lines:
+</p>
+<p>To create a TLS/SSL server that serves an input stream.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i <var>input</var> -f <var>format</var> tls://<var>hostname</var>:<var>port</var>?listen&amp;cert=<var>server.crt</var>&amp;key=<var>server.key</var>
+</pre></td></tr></table>
+
+<p>To play back a stream from the TLS/SSL server using <code>ffplay</code>:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay tls://<var>hostname</var>:<var>port</var>
+</pre></td></tr></table>
+
+<a name="udp"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-udp">22.30 udp</a></h2>
+
+<p>User Datagram Protocol.
+</p>
+<p>The required syntax for a UDP url is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">udp://<var>hostname</var>:<var>port</var>[?<var>options</var>]
+</pre></td></tr></table>
+
+<p><var>options</var> contains a list of &amp;-separated options of the form <var>key</var>=<var>val</var>.
+</p>
+<p>In case threading is enabled on the system, a circular buffer is used
+to store the incoming data, which allows to reduce loss of data due to
+UDP socket buffer overruns. The <var>fifo_size</var> and
+<var>overrun_nonfatal</var> options are related to this buffer.
+</p>
+<p>The list of supported options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>buffer_size=<var>size</var></samp>&rsquo;</dt>
+<dd><p>Set the UDP socket buffer size in bytes. This is used both for the
+receiving and the sending buffer size.
+</p>
+</dd>
+<dt> &lsquo;<samp>localport=<var>port</var></samp>&rsquo;</dt>
+<dd><p>Override the local UDP port to bind with.
+</p>
+</dd>
+<dt> &lsquo;<samp>localaddr=<var>addr</var></samp>&rsquo;</dt>
+<dd><p>Choose the local IP address. This is useful e.g. if sending multicast
+and the host has multiple interfaces, where the user can choose
+which interface to send on by specifying the IP address of that interface.
+</p>
+</dd>
+<dt> &lsquo;<samp>pkt_size=<var>size</var></samp>&rsquo;</dt>
+<dd><p>Set the size in bytes of UDP packets.
+</p>
+</dd>
+<dt> &lsquo;<samp>reuse=<var>1|0</var></samp>&rsquo;</dt>
+<dd><p>Explicitly allow or disallow reusing UDP sockets.
+</p>
+</dd>
+<dt> &lsquo;<samp>ttl=<var>ttl</var></samp>&rsquo;</dt>
+<dd><p>Set the time to live value (for multicast only).
+</p>
+</dd>
+<dt> &lsquo;<samp>connect=<var>1|0</var></samp>&rsquo;</dt>
+<dd><p>Initialize the UDP socket with <code>connect()</code>. In this case, the
+destination address can&rsquo;t be changed with ff_udp_set_remote_url later.
+If the destination address isn&rsquo;t known at the start, this option can
+be specified in ff_udp_set_remote_url, too.
+This allows finding out the source address for the packets with getsockname,
+and makes writes return with AVERROR(ECONNREFUSED) if &quot;destination
+unreachable&quot; is received.
+For receiving, this gives the benefit of only receiving packets from
+the specified peer address/port.
+</p>
+</dd>
+<dt> &lsquo;<samp>sources=<var>address</var>[,<var>address</var>]</samp>&rsquo;</dt>
+<dd><p>Only receive packets sent to the multicast group from one of the
+specified sender IP addresses.
+</p>
+</dd>
+<dt> &lsquo;<samp>block=<var>address</var>[,<var>address</var>]</samp>&rsquo;</dt>
+<dd><p>Ignore packets sent to the multicast group from the specified
+sender IP addresses.
+</p>
+</dd>
+<dt> &lsquo;<samp>fifo_size=<var>units</var></samp>&rsquo;</dt>
+<dd><p>Set the UDP receiving circular buffer size, expressed as a number of
+packets with size of 188 bytes. If not specified defaults to 7*4096.
+</p>
+</dd>
+<dt> &lsquo;<samp>overrun_nonfatal=<var>1|0</var></samp>&rsquo;</dt>
+<dd><p>Survive in case of UDP receiving circular buffer overrun. Default
+value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>timeout=<var>microseconds</var></samp>&rsquo;</dt>
+<dd><p>In read mode: if no data arrived in more than this time interval, raise error.
+</p></dd>
+</dl>
+
+<p>Some usage examples of the UDP protocol with <code>ffmpeg</code> follow.
+</p>
+<p>To stream over UDP to a remote endpoint:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i <var>input</var> -f <var>format</var> udp://<var>hostname</var>:<var>port</var>
+</pre></td></tr></table>
+
+<p>To stream in mpegts format over UDP using 188 sized UDP packets, using a large input buffer:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i <var>input</var> -f mpegts udp://<var>hostname</var>:<var>port</var>?pkt_size=188&amp;buffer_size=65535
+</pre></td></tr></table>
+
+<p>To receive over UDP from a remote endpoint:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i udp://[<var>multicast-address</var>]:<var>port</var>
+</pre></td></tr></table>
+
+<a name="unix"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-unix">22.31 unix</a></h2>
+
+<p>Unix local socket
+</p>
+<p>The required syntax for a Unix socket URL is:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">unix://<var>filepath</var>
+</pre></td></tr></table>
+
+<p>The following parameters can be set via command line options
+(or in code via <code>AVOption</code>s):
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>timeout</samp>&rsquo;</dt>
+<dd><p>Timeout in ms.
+</p></dd>
+<dt> &lsquo;<samp>listen</samp>&rsquo;</dt>
+<dd><p>Create the Unix socket in listening mode.
+</p></dd>
+</dl>
+
+<a name="Device-Options"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Device-Options">23. Device Options</a></h1>
+
+<p>The libavdevice library provides the same interface as
+libavformat. Namely, an input device is considered like a demuxer, and
+an output device like a muxer, and the interface and generic device
+options are the same provided by libavformat (see the ffmpeg-formats
+manual).
+</p>
+<p>In addition each input or output device may support so-called private
+options, which are specific for that component.
+</p>
+<p>Options may be set by specifying -<var>option</var> <var>value</var> in the
+FFmpeg tools, or by setting the value explicitly in the device
+<code>AVFormatContext</code> options or using the &lsquo;<tt>libavutil/opt.h</tt>&rsquo; API
+for programmatic use.
+</p>
+
+<a name="Input-Devices"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Input-Devices">24. Input Devices</a></h1>
+
+<p>Input devices are configured elements in FFmpeg which allow to access
+the data coming from a multimedia device attached to your system.
+</p>
+<p>When you configure your FFmpeg build, all the supported input devices
+are enabled by default. You can list all available ones using the
+configure option &quot;&ndash;list-indevs&quot;.
+</p>
+<p>You can disable all the input devices using the configure option
+&quot;&ndash;disable-indevs&quot;, and selectively enable an input device using the
+option &quot;&ndash;enable-indev=<var>INDEV</var>&quot;, or you can disable a particular
+input device using the option &quot;&ndash;disable-indev=<var>INDEV</var>&quot;.
+</p>
+<p>The option &quot;-formats&quot; of the ff* tools will display the list of
+supported input devices (amongst the demuxers).
+</p>
+<p>A description of the currently available input devices follows.
+</p>
+<a name="alsa"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-alsa">24.1 alsa</a></h2>
+
+<p>ALSA (Advanced Linux Sound Architecture) input device.
+</p>
+<p>To enable this input device during configuration you need libasound
+installed on your system.
+</p>
+<p>This device allows capturing from an ALSA device. The name of the
+device to capture has to be an ALSA card identifier.
+</p>
+<p>An ALSA identifier has the syntax:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">hw:<var>CARD</var>[,<var>DEV</var>[,<var>SUBDEV</var>]]
+</pre></td></tr></table>
+
+<p>where the <var>DEV</var> and <var>SUBDEV</var> components are optional.
+</p>
+<p>The three arguments (in order: <var>CARD</var>,<var>DEV</var>,<var>SUBDEV</var>)
+specify card number or identifier, device number and subdevice number
+(-1 means any).
+</p>
+<p>To see the list of cards currently recognized by your system check the
+files &lsquo;<tt>/proc/asound/cards</tt>&rsquo; and &lsquo;<tt>/proc/asound/devices</tt>&rsquo;.
+</p>
+<p>For example to capture with <code>ffmpeg</code> from an ALSA device with
+card id 0, you may run the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f alsa -i hw:0 alsaout.wav
+</pre></td></tr></table>
+
+<p>For more information see:
+<a href="http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html">http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html</a>
+</p>
+<a name="bktr"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-bktr">24.2 bktr</a></h2>
+
+<p>BSD video input device.
+</p>
+<a name="dshow"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-dshow">24.3 dshow</a></h2>
+
+<p>Windows DirectShow input device.
+</p>
+<p>DirectShow support is enabled when FFmpeg is built with the mingw-w64 project.
+Currently only audio and video devices are supported.
+</p>
+<p>Multiple devices may be opened as separate inputs, but they may also be
+opened on the same input, which should improve synchronism between them.
+</p>
+<p>The input name should be in the format:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example"><var>TYPE</var>=<var>NAME</var>[:<var>TYPE</var>=<var>NAME</var>]
+</pre></td></tr></table>
+
+<p>where <var>TYPE</var> can be either <var>audio</var> or <var>video</var>,
+and <var>NAME</var> is the device&rsquo;s name.
+</p>
+<a name="Options-6"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-6">24.3.1 Options</a></h3>
+
+<p>If no options are specified, the device&rsquo;s defaults are used.
+If the device does not support the requested options, it will
+fail to open.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>video_size</samp>&rsquo;</dt>
+<dd><p>Set the video size in the captured video.
+</p>
+</dd>
+<dt> &lsquo;<samp>framerate</samp>&rsquo;</dt>
+<dd><p>Set the frame rate in the captured video.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate</samp>&rsquo;</dt>
+<dd><p>Set the sample rate (in Hz) of the captured audio.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_size</samp>&rsquo;</dt>
+<dd><p>Set the sample size (in bits) of the captured audio.
+</p>
+</dd>
+<dt> &lsquo;<samp>channels</samp>&rsquo;</dt>
+<dd><p>Set the number of channels in the captured audio.
+</p>
+</dd>
+<dt> &lsquo;<samp>list_devices</samp>&rsquo;</dt>
+<dd><p>If set to &lsquo;<samp>true</samp>&rsquo;, print a list of devices and exit.
+</p>
+</dd>
+<dt> &lsquo;<samp>list_options</samp>&rsquo;</dt>
+<dd><p>If set to &lsquo;<samp>true</samp>&rsquo;, print a list of selected device&rsquo;s options
+and exit.
+</p>
+</dd>
+<dt> &lsquo;<samp>video_device_number</samp>&rsquo;</dt>
+<dd><p>Set video device number for devices with same name (starts at 0,
+defaults to 0).
+</p>
+</dd>
+<dt> &lsquo;<samp>audio_device_number</samp>&rsquo;</dt>
+<dd><p>Set audio device number for devices with same name (starts at 0,
+defaults to 0).
+</p>
+</dd>
+<dt> &lsquo;<samp>pixel_format</samp>&rsquo;</dt>
+<dd><p>Select pixel format to be used by DirectShow. This may only be set when
+the video codec is not set or set to rawvideo.
+</p>
+</dd>
+<dt> &lsquo;<samp>audio_buffer_size</samp>&rsquo;</dt>
+<dd><p>Set audio device buffer size in milliseconds (which can directly
+impact latency, depending on the device).
+Defaults to using the audio device&rsquo;s
+default buffer size (typically some multiple of 500ms).
+Setting this value too low can degrade performance.
+See also
+<a href="http://msdn.microsoft.com/en-us/library/windows/desktop/dd377582(v=vs.85).aspx">http://msdn.microsoft.com/en-us/library/windows/desktop/dd377582(v=vs.85).aspx</a>
+</p>
+</dd>
+</dl>
+
+<a name="Examples-42"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-42">24.3.2 Examples</a></h3>
+
+<ul>
+<li>
+Print the list of DirectShow supported devices and exit:
+<table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -list_devices true -f dshow -i dummy
+</pre></td></tr></table>
+
+</li><li>
+Open video device <var>Camera</var>:
+<table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f dshow -i video=&quot;Camera&quot;
+</pre></td></tr></table>
+
+</li><li>
+Open second video device with name <var>Camera</var>:
+<table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f dshow -video_device_number 1 -i video=&quot;Camera&quot;
+</pre></td></tr></table>
+
+</li><li>
+Open video device <var>Camera</var> and audio device <var>Microphone</var>:
+<table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f dshow -i video=&quot;Camera&quot;:audio=&quot;Microphone&quot;
+</pre></td></tr></table>
+
+</li><li>
+Print the list of supported options in selected device and exit:
+<table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -list_options true -f dshow -i video=&quot;Camera&quot;
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="dv1394"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-dv1394">24.4 dv1394</a></h2>
+
+<p>Linux DV 1394 input device.
+</p>
+<a name="fbdev-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-fbdev-1">24.5 fbdev</a></h2>
+
+<p>Linux framebuffer input device.
+</p>
+<p>The Linux framebuffer is a graphic hardware-independent abstraction
+layer to show graphics on a computer monitor, typically on the
+console. It is accessed through a file device node, usually
+&lsquo;<tt>/dev/fb0</tt>&rsquo;.
+</p>
+<p>For more detailed information read the file
+Documentation/fb/framebuffer.txt included in the Linux source tree.
+</p>
+<p>To record from the framebuffer device &lsquo;<tt>/dev/fb0</tt>&rsquo; with
+<code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f fbdev -r 10 -i /dev/fb0 out.avi
+</pre></td></tr></table>
+
+<p>You can take a single screenshot image with the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f fbdev -frames:v 1 -r 1 -i /dev/fb0 screenshot.jpeg
+</pre></td></tr></table>
+
+<p>See also <a href="http://linux-fbdev.sourceforge.net/">http://linux-fbdev.sourceforge.net/</a>, and fbset(1).
+</p>
+<a name="iec61883"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-iec61883">24.6 iec61883</a></h2>
+
+<p>FireWire DV/HDV input device using libiec61883.
+</p>
+<p>To enable this input device, you need libiec61883, libraw1394 and
+libavc1394 installed on your system. Use the configure option
+<code>--enable-libiec61883</code> to compile with the device enabled.
+</p>
+<p>The iec61883 capture device supports capturing from a video device
+connected via IEEE1394 (FireWire), using libiec61883 and the new Linux
+FireWire stack (juju). This is the default DV/HDV input method in Linux
+Kernel 2.6.37 and later, since the old FireWire stack was removed.
+</p>
+<p>Specify the FireWire port to be used as input file, or &quot;auto&quot;
+to choose the first port connected.
+</p>
+<a name="Options-18"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-18">24.6.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>dvtype</samp>&rsquo;</dt>
+<dd><p>Override autodetection of DV/HDV. This should only be used if auto
+detection does not work, or if usage of a different device type
+should be prohibited. Treating a DV device as HDV (or vice versa) will
+not work and result in undefined behavior.
+The values &lsquo;<samp>auto</samp>&rsquo;, &lsquo;<samp>dv</samp>&rsquo; and &lsquo;<samp>hdv</samp>&rsquo; are supported.
+</p>
+</dd>
+<dt> &lsquo;<samp>dvbuffer</samp>&rsquo;</dt>
+<dd><p>Set maxiumum size of buffer for incoming data, in frames. For DV, this
+is an exact value. For HDV, it is not frame exact, since HDV does
+not have a fixed frame size.
+</p>
+</dd>
+<dt> &lsquo;<samp>dvguid</samp>&rsquo;</dt>
+<dd><p>Select the capture device by specifying it&rsquo;s GUID. Capturing will only
+be performed from the specified device and fails if no device with the
+given GUID is found. This is useful to select the input if multiple
+devices are connected at the same time.
+Look at /sys/bus/firewire/devices to find out the GUIDs.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-45"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-45">24.6.2 Examples</a></h3>
+
+<ul>
+<li>
+Grab and show the input of a FireWire DV/HDV device.
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f iec61883 -i auto
+</pre></td></tr></table>
+
+</li><li>
+Grab and record the input of a FireWire DV/HDV device,
+using a packet buffer of 100000 packets if the source is HDV.
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f iec61883 -i auto -hdvbuffer 100000 out.mpg
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="jack"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-jack">24.7 jack</a></h2>
+
+<p>JACK input device.
+</p>
+<p>To enable this input device during configuration you need libjack
+installed on your system.
+</p>
+<p>A JACK input device creates one or more JACK writable clients, one for
+each audio channel, with name <var>client_name</var>:input_<var>N</var>, where
+<var>client_name</var> is the name provided by the application, and <var>N</var>
+is a number which identifies the channel.
+Each writable client will send the acquired data to the FFmpeg input
+device.
+</p>
+<p>Once you have created one or more JACK readable clients, you need to
+connect them to one or more JACK writable clients.
+</p>
+<p>To connect or disconnect JACK clients you can use the <code>jack_connect</code>
+and <code>jack_disconnect</code> programs, or do it through a graphical interface,
+for example with <code>qjackctl</code>.
+</p>
+<p>To list the JACK clients and their properties you can invoke the command
+<code>jack_lsp</code>.
+</p>
+<p>Follows an example which shows how to capture a JACK readable client
+with <code>ffmpeg</code>.
+</p><table><tr><td>&nbsp;</td><td><pre class="example"># Create a JACK writable client with name &quot;ffmpeg&quot;.
+$ ffmpeg -f jack -i ffmpeg -y out.wav
+
+# Start the sample jack_metro readable client.
+$ jack_metro -b 120 -d 0.2 -f 4000
+
+# List the current JACK clients.
+$ jack_lsp -c
+system:capture_1
+system:capture_2
+system:playback_1
+system:playback_2
+ffmpeg:input_1
+metro:120_bpm
+
+# Connect metro to the ffmpeg writable client.
+$ jack_connect metro:120_bpm ffmpeg:input_1
+</pre></td></tr></table>
+
+<p>For more information read:
+<a href="http://jackaudio.org/">http://jackaudio.org/</a>
+</p>
+<a name="lavfi"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-lavfi">24.8 lavfi</a></h2>
+
+<p>Libavfilter input virtual device.
+</p>
+<p>This input device reads data from the open output pads of a libavfilter
+filtergraph.
+</p>
+<p>For each filtergraph open output, the input device will create a
+corresponding stream which is mapped to the generated output. Currently
+only video data is supported. The filtergraph is specified through the
+option &lsquo;<samp>graph</samp>&rsquo;.
+</p>
+<a name="Options-28"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-28">24.8.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>graph</samp>&rsquo;</dt>
+<dd><p>Specify the filtergraph to use as input. Each video open output must be
+labelled by a unique string of the form &quot;out<var>N</var>&quot;, where <var>N</var> is a
+number starting from 0 corresponding to the mapped input stream
+generated by the device.
+The first unlabelled output is automatically assigned to the &quot;out0&quot;
+label, but all the others need to be specified explicitly.
+</p>
+<p>If not specified defaults to the filename specified for the input
+device.
+</p>
+</dd>
+<dt> &lsquo;<samp>graph_file</samp>&rsquo;</dt>
+<dd><p>Set the filename of the filtergraph to be read and sent to the other
+filters. Syntax of the filtergraph is the same as the one specified by
+the option <var>graph</var>.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-11"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-11">24.8.2 Examples</a></h3>
+
+<ul>
+<li>
+Create a color video stream and play it back with <code>ffplay</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi -graph &quot;color=c=pink [out0]&quot; dummy
+</pre></td></tr></table>
+
+</li><li>
+As the previous example, but use filename for specifying the graph
+description, and omit the &quot;out0&quot; label:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi color=c=pink
+</pre></td></tr></table>
+
+</li><li>
+Create three different video test filtered sources and play them:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi -graph &quot;testsrc [out0]; testsrc,hflip [out1]; testsrc,negate [out2]&quot; test3
+</pre></td></tr></table>
+
+</li><li>
+Read an audio stream from a file using the amovie source and play it
+back with <code>ffplay</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi &quot;amovie=test.wav&quot;
+</pre></td></tr></table>
+
+</li><li>
+Read an audio stream and a video stream and play it back with
+<code>ffplay</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi &quot;movie=test.avi[out0];amovie=test.wav[out1]&quot;
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="libdc1394"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-libdc1394">24.9 libdc1394</a></h2>
+
+<p>IIDC1394 input device, based on libdc1394 and libraw1394.
+</p>
+<a name="openal"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-openal">24.10 openal</a></h2>
+
+<p>The OpenAL input device provides audio capture on all systems with a
+working OpenAL 1.1 implementation.
+</p>
+<p>To enable this input device during configuration, you need OpenAL
+headers and libraries installed on your system, and need to configure
+FFmpeg with <code>--enable-openal</code>.
+</p>
+<p>OpenAL headers and libraries should be provided as part of your OpenAL
+implementation, or as an additional download (an SDK). Depending on your
+installation you may need to specify additional flags via the
+<code>--extra-cflags</code> and <code>--extra-ldflags</code> for allowing the build
+system to locate the OpenAL headers and libraries.
+</p>
+<p>An incomplete list of OpenAL implementations follows:
+</p>
+<dl compact="compact">
+<dt> <strong>Creative</strong></dt>
+<dd><p>The official Windows implementation, providing hardware acceleration
+with supported devices and software fallback.
+See <a href="http://openal.org/">http://openal.org/</a>.
+</p></dd>
+<dt> <strong>OpenAL Soft</strong></dt>
+<dd><p>Portable, open source (LGPL) software implementation. Includes
+backends for the most common sound APIs on the Windows, Linux,
+Solaris, and BSD operating systems.
+See <a href="http://kcat.strangesoft.net/openal.html">http://kcat.strangesoft.net/openal.html</a>.
+</p></dd>
+<dt> <strong>Apple</strong></dt>
+<dd><p>OpenAL is part of Core Audio, the official Mac OS X Audio interface.
+See <a href="http://developer.apple.com/technologies/mac/audio-and-video.html">http://developer.apple.com/technologies/mac/audio-and-video.html</a>
+</p></dd>
+</dl>
+
+<p>This device allows to capture from an audio input device handled
+through OpenAL.
+</p>
+<p>You need to specify the name of the device to capture in the provided
+filename. If the empty string is provided, the device will
+automatically select the default device. You can get the list of the
+supported devices by using the option <var>list_devices</var>.
+</p>
+<a name="Options-31"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-31">24.10.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>channels</samp>&rsquo;</dt>
+<dd><p>Set the number of channels in the captured audio. Only the values
+&lsquo;<samp>1</samp>&rsquo; (monaural) and &lsquo;<samp>2</samp>&rsquo; (stereo) are currently supported.
+Defaults to &lsquo;<samp>2</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_size</samp>&rsquo;</dt>
+<dd><p>Set the sample size (in bits) of the captured audio. Only the values
+&lsquo;<samp>8</samp>&rsquo; and &lsquo;<samp>16</samp>&rsquo; are currently supported. Defaults to
+&lsquo;<samp>16</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate</samp>&rsquo;</dt>
+<dd><p>Set the sample rate (in Hz) of the captured audio.
+Defaults to &lsquo;<samp>44.1k</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>list_devices</samp>&rsquo;</dt>
+<dd><p>If set to &lsquo;<samp>true</samp>&rsquo;, print a list of devices and exit.
+Defaults to &lsquo;<samp>false</samp>&rsquo;.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-65"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-65">24.10.2 Examples</a></h3>
+
+<p>Print the list of OpenAL supported devices and exit:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -list_devices true -f openal -i dummy out.ogg
+</pre></td></tr></table>
+
+<p>Capture from the OpenAL device &lsquo;<tt>DR-BT101 via PulseAudio</tt>&rsquo;:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out.ogg
+</pre></td></tr></table>
+
+<p>Capture from the default device (note the empty string &rdquo; as filename):
+</p><table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f openal -i '' out.ogg
+</pre></td></tr></table>
+
+<p>Capture from two devices simultaneously, writing to two different files,
+within the same <code>ffmpeg</code> command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out1.ogg -f openal -i 'ALSA Default' out2.ogg
+</pre></td></tr></table>
+<p>Note: not all OpenAL implementations support multiple simultaneous capture -
+try the latest OpenAL Soft if the above does not work.
+</p>
+<a name="oss-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-oss-1">24.11 oss</a></h2>
+
+<p>Open Sound System input device.
+</p>
+<p>The filename to provide to the input device is the device node
+representing the OSS input device, and is usually set to
+&lsquo;<tt>/dev/dsp</tt>&rsquo;.
+</p>
+<p>For example to grab from &lsquo;<tt>/dev/dsp</tt>&rsquo; using <code>ffmpeg</code> use the
+command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f oss -i /dev/dsp /tmp/oss.wav
+</pre></td></tr></table>
+
+<p>For more information about OSS see:
+<a href="http://manuals.opensound.com/usersguide/dsp.html">http://manuals.opensound.com/usersguide/dsp.html</a>
+</p>
+<a name="pulse-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-pulse-1">24.12 pulse</a></h2>
+
+<p>PulseAudio input device.
+</p>
+<p>To enable this output device you need to configure FFmpeg with <code>--enable-libpulse</code>.
+</p>
+<p>The filename to provide to the input device is a source device or the
+string &quot;default&quot;
+</p>
+<p>To list the PulseAudio source devices and their properties you can invoke
+the command <code>pactl list sources</code>.
+</p>
+<p>More information about PulseAudio can be found on <a href="http://www.pulseaudio.org">http://www.pulseaudio.org</a>.
+</p>
+<a name="Options-4"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-4">24.12.1 Options</a></h3>
+<dl compact="compact">
+<dt> &lsquo;<samp>server</samp>&rsquo;</dt>
+<dd><p>Connect to a specific PulseAudio server, specified by an IP address.
+Default server is used when not provided.
+</p>
+</dd>
+<dt> &lsquo;<samp>name</samp>&rsquo;</dt>
+<dd><p>Specify the application name PulseAudio will use when showing active clients,
+by default it is the <code>LIBAVFORMAT_IDENT</code> string.
+</p>
+</dd>
+<dt> &lsquo;<samp>stream_name</samp>&rsquo;</dt>
+<dd><p>Specify the stream name PulseAudio will use when showing active streams,
+by default it is &quot;record&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate</samp>&rsquo;</dt>
+<dd><p>Specify the samplerate in Hz, by default 48kHz is used.
+</p>
+</dd>
+<dt> &lsquo;<samp>channels</samp>&rsquo;</dt>
+<dd><p>Specify the channels in use, by default 2 (stereo) is set.
+</p>
+</dd>
+<dt> &lsquo;<samp>frame_size</samp>&rsquo;</dt>
+<dd><p>Specify the number of bytes per frame, by default it is set to 1024.
+</p>
+</dd>
+<dt> &lsquo;<samp>fragment_size</samp>&rsquo;</dt>
+<dd><p>Specify the minimal buffering fragment in PulseAudio, it will affect the
+audio latency. By default it is unset.
+</p></dd>
+</dl>
+
+<a name="Examples-35"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-35">24.12.2 Examples</a></h3>
+<p>Record a stream from default device:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f pulse -i default /tmp/pulse.wav
+</pre></td></tr></table>
+
+<a name="sndio-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-sndio-1">24.13 sndio</a></h2>
+
+<p>sndio input device.
+</p>
+<p>To enable this input device during configuration you need libsndio
+installed on your system.
+</p>
+<p>The filename to provide to the input device is the device node
+representing the sndio input device, and is usually set to
+&lsquo;<tt>/dev/audio0</tt>&rsquo;.
+</p>
+<p>For example to grab from &lsquo;<tt>/dev/audio0</tt>&rsquo; using <code>ffmpeg</code> use the
+command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f sndio -i /dev/audio0 /tmp/oss.wav
+</pre></td></tr></table>
+
+<a name="video4linux2_002c-v4l2"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-video4linux2_002c-v4l2">24.14 video4linux2, v4l2</a></h2>
+
+<p>Video4Linux2 input video device.
+</p>
+<p>&quot;v4l2&quot; can be used as alias for &quot;video4linux2&quot;.
+</p>
+<p>If FFmpeg is built with v4l-utils support (by using the
+<code>--enable-libv4l2</code> configure option), it is possible to use it with the
+<code>-use_libv4l2</code> input device option.
+</p>
+<p>The name of the device to grab is a file device node, usually Linux
+systems tend to automatically create such nodes when the device
+(e.g. an USB webcam) is plugged into the system, and has a name of the
+kind &lsquo;<tt>/dev/video<var>N</var></tt>&rsquo;, where <var>N</var> is a number associated to
+the device.
+</p>
+<p>Video4Linux2 devices usually support a limited set of
+<var>width</var>x<var>height</var> sizes and frame rates. You can check which are
+supported using <code>-list_formats all</code> for Video4Linux2 devices.
+Some devices, like TV cards, support one or more standards. It is possible
+to list all the supported standards using <code>-list_standards all</code>.
+</p>
+<p>The time base for the timestamps is 1 microsecond. Depending on the kernel
+version and configuration, the timestamps may be derived from the real time
+clock (origin at the Unix Epoch) or the monotonic clock (origin usually at
+boot time, unaffected by NTP or manual changes to the clock). The
+&lsquo;<samp>-timestamps abs</samp>&rsquo; or &lsquo;<samp>-ts abs</samp>&rsquo; option can be used to force
+conversion into the real time clock.
+</p>
+<p>Some usage examples of the video4linux2 device with <code>ffmpeg</code>
+and <code>ffplay</code>:
+</p><ul>
+<li>
+Grab and show the input of a video4linux2 device:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f video4linux2 -framerate 30 -video_size hd720 /dev/video0
+</pre></td></tr></table>
+
+</li><li>
+Grab and record the input of a video4linux2 device, leave the
+frame rate and size as previously set:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f video4linux2 -input_format mjpeg -i /dev/video0 out.mpeg
+</pre></td></tr></table>
+</li></ul>
+
+<p>For more information about Video4Linux, check <a href="http://linuxtv.org/">http://linuxtv.org/</a>.
+</p>
+<a name="Options-10"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-10">24.14.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>standard</samp>&rsquo;</dt>
+<dd><p>Set the standard. Must be the name of a supported standard. To get a
+list of the supported standards, use the &lsquo;<samp>list_standards</samp>&rsquo;
+option.
+</p>
+</dd>
+<dt> &lsquo;<samp>channel</samp>&rsquo;</dt>
+<dd><p>Set the input channel number. Default to -1, which means using the
+previously selected channel.
+</p>
+</dd>
+<dt> &lsquo;<samp>video_size</samp>&rsquo;</dt>
+<dd><p>Set the video frame size. The argument must be a string in the form
+<var>WIDTH</var>x<var>HEIGHT</var> or a valid size abbreviation.
+</p>
+</dd>
+<dt> &lsquo;<samp>pixel_format</samp>&rsquo;</dt>
+<dd><p>Select the pixel format (only valid for raw video input).
+</p>
+</dd>
+<dt> &lsquo;<samp>input_format</samp>&rsquo;</dt>
+<dd><p>Set the preferred pixel format (for raw video) or a codec name.
+This option allows to select the input format, when several are
+available.
+</p>
+</dd>
+<dt> &lsquo;<samp>framerate</samp>&rsquo;</dt>
+<dd><p>Set the preferred video frame rate.
+</p>
+</dd>
+<dt> &lsquo;<samp>list_formats</samp>&rsquo;</dt>
+<dd><p>List available formats (supported pixel formats, codecs, and frame
+sizes) and exit.
+</p>
+<p>Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>all</samp>&rsquo;</dt>
+<dd><p>Show all available (compressed and non-compressed) formats.
+</p>
+</dd>
+<dt> &lsquo;<samp>raw</samp>&rsquo;</dt>
+<dd><p>Show only raw video (non-compressed) formats.
+</p>
+</dd>
+<dt> &lsquo;<samp>compressed</samp>&rsquo;</dt>
+<dd><p>Show only compressed formats.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>list_standards</samp>&rsquo;</dt>
+<dd><p>List supported standards and exit.
+</p>
+<p>Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>all</samp>&rsquo;</dt>
+<dd><p>Show all supported standards.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>timestamps, ts</samp>&rsquo;</dt>
+<dd><p>Set type of timestamps for grabbed frames.
+</p>
+<p>Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>default</samp>&rsquo;</dt>
+<dd><p>Use timestamps from the kernel.
+</p>
+</dd>
+<dt> &lsquo;<samp>abs</samp>&rsquo;</dt>
+<dd><p>Use absolute timestamps (wall clock).
+</p>
+</dd>
+<dt> &lsquo;<samp>mono2abs</samp>&rsquo;</dt>
+<dd><p>Force conversion from monotonic to absolute timestamps.
+</p></dd>
+</dl>
+
+<p>Default value is <code>default</code>.
+</p></dd>
+</dl>
+
+<a name="vfwcap"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-vfwcap">24.15 vfwcap</a></h2>
+
+<p>VfW (Video for Windows) capture input device.
+</p>
+<p>The filename passed as input is the capture driver number, ranging from
+0 to 9. You may use &quot;list&quot; as filename to print a list of drivers. Any
+other filename will be interpreted as device number 0.
+</p>
+<a name="x11grab"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-x11grab">24.16 x11grab</a></h2>
+
+<p>X11 video input device.
+</p>
+<p>This device allows to capture a region of an X11 display.
+</p>
+<p>The filename passed as input has the syntax:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[<var>hostname</var>]:<var>display_number</var>.<var>screen_number</var>[+<var>x_offset</var>,<var>y_offset</var>]
+</pre></td></tr></table>
+
+<p><var>hostname</var>:<var>display_number</var>.<var>screen_number</var> specifies the
+X11 display name of the screen to grab from. <var>hostname</var> can be
+omitted, and defaults to &quot;localhost&quot;. The environment variable
+<code>DISPLAY</code> contains the default display name.
+</p>
+<p><var>x_offset</var> and <var>y_offset</var> specify the offsets of the grabbed
+area with respect to the top-left border of the X11 screen. They
+default to 0.
+</p>
+<p>Check the X11 documentation (e.g. man X) for more detailed information.
+</p>
+<p>Use the <code>dpyinfo</code> program for getting basic information about the
+properties of your X11 display (e.g. grep for &quot;name&quot; or &quot;dimensions&quot;).
+</p>
+<p>For example to grab from &lsquo;<tt>:0.0</tt>&rsquo; using <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0 out.mpg
+</pre></td></tr></table>
+
+<p>Grab at position <code>10,20</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -framerate 25 -video_size cif -i :0.0+10,20 out.mpg
+</pre></td></tr></table>
+
+<a name="Options-26"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-26">24.16.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>draw_mouse</samp>&rsquo;</dt>
+<dd><p>Specify whether to draw the mouse pointer. A value of <code>0</code> specify
+not to draw the pointer. Default value is <code>1</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>follow_mouse</samp>&rsquo;</dt>
+<dd><p>Make the grabbed area follow the mouse. The argument can be
+<code>centered</code> or a number of pixels <var>PIXELS</var>.
+</p>
+<p>When it is specified with &quot;centered&quot;, the grabbing region follows the mouse
+pointer and keeps the pointer at the center of region; otherwise, the region
+follows only when the mouse pointer reaches within <var>PIXELS</var> (greater than
+zero) to the edge of region.
+</p>
+<p>For example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -follow_mouse centered -framerate 25 -video_size cif -i :0.0 out.mpg
+</pre></td></tr></table>
+
+<p>To follow only when the mouse pointer reaches within 100 pixels to edge:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -follow_mouse 100 -framerate 25 -video_size cif -i :0.0 out.mpg
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>framerate</samp>&rsquo;</dt>
+<dd><p>Set the grabbing frame rate. Default value is <code>ntsc</code>,
+corresponding to a frame rate of <code>30000/1001</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>show_region</samp>&rsquo;</dt>
+<dd><p>Show grabbed region on screen.
+</p>
+<p>If <var>show_region</var> is specified with <code>1</code>, then the grabbing
+region will be indicated on screen. With this option, it is easy to
+know what is being grabbed if only a portion of the screen is grabbed.
+</p>
+<p>For example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -show_region 1 -framerate 25 -video_size cif -i :0.0+10,20 out.mpg
+</pre></td></tr></table>
+
+<p>With <var>follow_mouse</var>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -follow_mouse centered -show_region 1 -framerate 25 -video_size cif -i :0.0 out.mpg
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>video_size</samp>&rsquo;</dt>
+<dd><p>Set the video frame size. Default value is <code>vga</code>.
+</p></dd>
+</dl>
+
+<a name="Output-Devices"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Output-Devices">25. Output Devices</a></h1>
+
+<p>Output devices are configured elements in FFmpeg that can write
+multimedia data to an output device attached to your system.
+</p>
+<p>When you configure your FFmpeg build, all the supported output devices
+are enabled by default. You can list all available ones using the
+configure option &quot;&ndash;list-outdevs&quot;.
+</p>
+<p>You can disable all the output devices using the configure option
+&quot;&ndash;disable-outdevs&quot;, and selectively enable an output device using the
+option &quot;&ndash;enable-outdev=<var>OUTDEV</var>&quot;, or you can disable a particular
+input device using the option &quot;&ndash;disable-outdev=<var>OUTDEV</var>&quot;.
+</p>
+<p>The option &quot;-formats&quot; of the ff* tools will display the list of
+enabled output devices (amongst the muxers).
+</p>
+<p>A description of the currently available output devices follows.
+</p>
+<a name="alsa-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-alsa-1">25.1 alsa</a></h2>
+
+<p>ALSA (Advanced Linux Sound Architecture) output device.
+</p>
+<a name="Examples-53"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-53">25.1.1 Examples</a></h3>
+
+<ul>
+<li>
+Play a file on default ALSA device:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f alsa default
+</pre></td></tr></table>
+
+</li><li>
+Play a file on soundcard 1, audio device 7:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f alsa hw:1,7
+</pre></td></tr></table>
+</li></ul>
+
+<a name="caca"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-caca">25.2 caca</a></h2>
+
+<p>CACA output device.
+</p>
+<p>This output device allows to show a video stream in CACA window.
+Only one CACA window is allowed per application, so you can
+have only one instance of this output device in an application.
+</p>
+<p>To enable this output device you need to configure FFmpeg with
+<code>--enable-libcaca</code>.
+libcaca is a graphics library that outputs text instead of pixels.
+</p>
+<p>For more information about libcaca, check:
+<a href="http://caca.zoy.org/wiki/libcaca">http://caca.zoy.org/wiki/libcaca</a>
+</p>
+<a name="Options-5"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-5">25.2.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>window_title</samp>&rsquo;</dt>
+<dd><p>Set the CACA window title, if not specified default to the filename
+specified for the output device.
+</p>
+</dd>
+<dt> &lsquo;<samp>window_size</samp>&rsquo;</dt>
+<dd><p>Set the CACA window size, can be a string of the form
+<var>width</var>x<var>height</var> or a video size abbreviation.
+If not specified it defaults to the size of the input video.
+</p>
+</dd>
+<dt> &lsquo;<samp>driver</samp>&rsquo;</dt>
+<dd><p>Set display driver.
+</p>
+</dd>
+<dt> &lsquo;<samp>algorithm</samp>&rsquo;</dt>
+<dd><p>Set dithering algorithm. Dithering is necessary
+because the picture being rendered has usually far more colours than
+the available palette.
+The accepted values are listed with <code>-list_dither algorithms</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>antialias</samp>&rsquo;</dt>
+<dd><p>Set antialias method. Antialiasing smoothens the rendered
+image and avoids the commonly seen staircase effect.
+The accepted values are listed with <code>-list_dither antialiases</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>charset</samp>&rsquo;</dt>
+<dd><p>Set which characters are going to be used when rendering text.
+The accepted values are listed with <code>-list_dither charsets</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
+<dd><p>Set color to be used when rendering text.
+The accepted values are listed with <code>-list_dither colors</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>list_drivers</samp>&rsquo;</dt>
+<dd><p>If set to &lsquo;<samp>true</samp>&rsquo;, print a list of available drivers and exit.
+</p>
+</dd>
+<dt> &lsquo;<samp>list_dither</samp>&rsquo;</dt>
+<dd><p>List available dither options related to the argument.
+The argument must be one of <code>algorithms</code>, <code>antialiases</code>,
+<code>charsets</code>, <code>colors</code>.
+</p></dd>
+</dl>
+
+<a name="Examples-30"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-30">25.2.2 Examples</a></h3>
+
+<ul>
+<li>
+The following command shows the <code>ffmpeg</code> output is an
+CACA window, forcing its size to 80x25:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -vcodec rawvideo -pix_fmt rgb24 -window_size 80x25 -f caca -
+</pre></td></tr></table>
+
+</li><li>
+Show the list of available drivers and exit:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_drivers true -
+</pre></td></tr></table>
+
+</li><li>
+Show the list of available dither colors and exit:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -pix_fmt rgb24 -f caca -list_dither colors -
+</pre></td></tr></table>
+</li></ul>
+
+<a name="fbdev"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-fbdev">25.3 fbdev</a></h2>
+
+<p>Linux framebuffer output device.
+</p>
+<p>The Linux framebuffer is a graphic hardware-independent abstraction
+layer to show graphics on a computer monitor, typically on the
+console. It is accessed through a file device node, usually
+&lsquo;<tt>/dev/fb0</tt>&rsquo;.
+</p>
+<p>For more detailed information read the file
+&lsquo;<tt>Documentation/fb/framebuffer.txt</tt>&rsquo; included in the Linux source tree.
+</p>
+<a name="Options-30"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-30">25.3.1 Options</a></h3>
+<dl compact="compact">
+<dt> &lsquo;<samp>xoffset</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>yoffset</samp>&rsquo;</dt>
+<dd><p>Set x/y coordinate of top left corner. Default is 0.
+</p></dd>
+</dl>
+
+<a name="Examples-78"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-78">25.3.2 Examples</a></h3>
+<p>Play a file on framebuffer device &lsquo;<tt>/dev/fb0</tt>&rsquo;.
+Required pixel format depends on current framebuffer settings.
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i INPUT -vcodec rawvideo -pix_fmt bgra -f fbdev /dev/fb0
+</pre></td></tr></table>
+
+<p>See also <a href="http://linux-fbdev.sourceforge.net/">http://linux-fbdev.sourceforge.net/</a>, and fbset(1).
+</p>
+<a name="oss"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-oss">25.4 oss</a></h2>
+
+<p>OSS (Open Sound System) output device.
+</p>
+<a name="pulse"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-pulse">25.5 pulse</a></h2>
+
+<p>PulseAudio output device.
+</p>
+<p>To enable this output device you need to configure FFmpeg with <code>--enable-libpulse</code>.
+</p>
+<p>More information about PulseAudio can be found on <a href="http://www.pulseaudio.org">http://www.pulseaudio.org</a>
+</p>
+<a name="Options-22"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-22">25.5.1 Options</a></h3>
+<dl compact="compact">
+<dt> &lsquo;<samp>server</samp>&rsquo;</dt>
+<dd><p>Connect to a specific PulseAudio server, specified by an IP address.
+Default server is used when not provided.
+</p>
+</dd>
+<dt> &lsquo;<samp>name</samp>&rsquo;</dt>
+<dd><p>Specify the application name PulseAudio will use when showing active clients,
+by default it is the <code>LIBAVFORMAT_IDENT</code> string.
+</p>
+</dd>
+<dt> &lsquo;<samp>stream_name</samp>&rsquo;</dt>
+<dd><p>Specify the stream name PulseAudio will use when showing active streams,
+by default it is set to the specified output name.
+</p>
+</dd>
+<dt> &lsquo;<samp>device</samp>&rsquo;</dt>
+<dd><p>Specify the device to use. Default device is used when not provided.
+List of output devices can be obtained with command <code>pactl list sinks</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>buffer_size</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>buffer_duration</samp>&rsquo;</dt>
+<dd><p>Control the size and duration of the PulseAudio buffer. A small buffer
+gives more control, but requires more frequent updates.
+</p>
+<p>&lsquo;<samp>buffer_size</samp>&rsquo; specifies size in bytes while
+&lsquo;<samp>buffer_duration</samp>&rsquo; specifies duration in milliseconds.
+</p>
+<p>When both options are provided then the highest value is used
+(duration is recalculated to bytes using stream parameters). If they
+are set to 0 (which is default), the device will use the default
+PulseAudio duration value. By default PulseAudio set buffer duration
+to around 2 seconds.
+</p></dd>
+</dl>
+
+<a name="Examples-73"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-73">25.5.2 Examples</a></h3>
+<p>Play a file on default device on default server:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg  -i INPUT -f pulse &quot;stream name&quot;
+</pre></td></tr></table>
+
+<a name="sdl"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-sdl">25.6 sdl</a></h2>
+
+<p>SDL (Simple DirectMedia Layer) output device.
+</p>
+<p>This output device allows to show a video stream in an SDL
+window. Only one SDL window is allowed per application, so you can
+have only one instance of this output device in an application.
+</p>
+<p>To enable this output device you need libsdl installed on your system
+when configuring your build.
+</p>
+<p>For more information about SDL, check:
+<a href="http://www.libsdl.org/">http://www.libsdl.org/</a>
+</p>
+<a name="Options-8"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-8">25.6.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>window_title</samp>&rsquo;</dt>
+<dd><p>Set the SDL window title, if not specified default to the filename
+specified for the output device.
+</p>
+</dd>
+<dt> &lsquo;<samp>icon_title</samp>&rsquo;</dt>
+<dd><p>Set the name of the iconified SDL window, if not specified it is set
+to the same value of <var>window_title</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>window_size</samp>&rsquo;</dt>
+<dd><p>Set the SDL window size, can be a string of the form
+<var>width</var>x<var>height</var> or a video size abbreviation.
+If not specified it defaults to the size of the input video,
+downscaled according to the aspect ratio.
+</p>
+</dd>
+<dt> &lsquo;<samp>window_fullscreen</samp>&rsquo;</dt>
+<dd><p>Set fullscreen mode when non-zero value is provided.
+Default value is zero.
+</p></dd>
+</dl>
+
+<a name="Interactive-commands"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Interactive-commands">25.6.2 Interactive commands</a></h3>
+
+<p>The window created by the device can be controlled through the
+following interactive commands.
+</p>
+<dl compact="compact">
+<dt> &lt;q, ESC&gt;</dt>
+<dd><p>Quit the device immediately.
+</p></dd>
+</dl>
+
+<a name="Examples-58"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-58">25.6.3 Examples</a></h3>
+
+<p>The following command shows the <code>ffmpeg</code> output is an
+SDL window, forcing its size to the qcif format:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -vcodec rawvideo -pix_fmt yuv420p -window_size qcif -f sdl &quot;SDL output&quot;
+</pre></td></tr></table>
+
+<a name="sndio"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-sndio">25.7 sndio</a></h2>
+
+<p>sndio audio output device.
+</p>
+<a name="xv"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-xv">25.8 xv</a></h2>
+
+<p>XV (XVideo) output device.
+</p>
+<p>This output device allows to show a video stream in a X Window System
+window.
+</p>
+<a name="Options-7"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-7">25.8.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>display_name</samp>&rsquo;</dt>
+<dd><p>Specify the hardware display name, which determines the display and
+communications domain to be used.
+</p>
+<p>The display name or DISPLAY environment variable can be a string in
+the format <var>hostname</var>[:<var>number</var>[.<var>screen_number</var>]].
+</p>
+<p><var>hostname</var> specifies the name of the host machine on which the
+display is physically attached. <var>number</var> specifies the number of
+the display server on that host machine. <var>screen_number</var> specifies
+the screen to be used on that server.
+</p>
+<p>If unspecified, it defaults to the value of the DISPLAY environment
+variable.
+</p>
+<p>For example, <code>dual-headed:0.1</code> would specify screen 1 of display
+0 on the machine named &ldquo;dual-headed&rdquo;.
+</p>
+<p>Check the X11 specification for more detailed information about the
+display name format.
+</p>
+</dd>
+<dt> &lsquo;<samp>window_size</samp>&rsquo;</dt>
+<dd><p>Set the created window size, can be a string of the form
+<var>width</var>x<var>height</var> or a video size abbreviation. If not
+specified it defaults to the size of the input video.
+</p>
+</dd>
+<dt> &lsquo;<samp>window_x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>window_y</samp>&rsquo;</dt>
+<dd><p>Set the X and Y window offsets for the created window. They are both
+set to 0 by default. The values may be ignored by the window manager.
+</p>
+</dd>
+<dt> &lsquo;<samp>window_title</samp>&rsquo;</dt>
+<dd><p>Set the window title, if not specified default to the filename
+specified for the output device.
+</p></dd>
+</dl>
+
+<p>For more information about XVideo see <a href="http://www.x.org/">http://www.x.org/</a>.
+</p>
+<a name="Examples-66"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-66">25.8.2 Examples</a></h3>
+
+<ul>
+<li>
+Decode, display and encode video input with <code>ffmpeg</code> at the
+same time:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT OUTPUT -f xv display
+</pre></td></tr></table>
+
+</li><li>
+Decode and display the input video to multiple X11 windows:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -f xv normal -vf negate -f xv negated
+</pre></td></tr></table>
+</li></ul>
+
+<a name="Resampler-Options"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Resampler-Options">26. Resampler Options</a></h1>
+
+<p>The audio resampler supports the following named options.
+</p>
+<p>Options may be set by specifying -<var>option</var> <var>value</var> in the
+FFmpeg tools, <var>option</var>=<var>value</var> for the aresample filter,
+by setting the value explicitly in the
+<code>SwrContext</code> options or using the &lsquo;<tt>libavutil/opt.h</tt>&rsquo; API for
+programmatic use.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>ich, in_channel_count</samp>&rsquo;</dt>
+<dd><p>Set the number of input channels. Default value is 0. Setting this
+value is not mandatory if the corresponding channel layout
+&lsquo;<samp>in_channel_layout</samp>&rsquo; is set.
+</p>
+</dd>
+<dt> &lsquo;<samp>och, out_channel_count</samp>&rsquo;</dt>
+<dd><p>Set the number of output channels. Default value is 0. Setting this
+value is not mandatory if the corresponding channel layout
+&lsquo;<samp>out_channel_layout</samp>&rsquo; is set.
+</p>
+</dd>
+<dt> &lsquo;<samp>uch, used_channel_count</samp>&rsquo;</dt>
+<dd><p>Set the number of used input channels. Default value is 0. This option is
+only used for special remapping.
+</p>
+</dd>
+<dt> &lsquo;<samp>isr, in_sample_rate</samp>&rsquo;</dt>
+<dd><p>Set the input sample rate. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>osr, out_sample_rate</samp>&rsquo;</dt>
+<dd><p>Set the output sample rate. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>isf, in_sample_fmt</samp>&rsquo;</dt>
+<dd><p>Specify the input sample format. It is set by default to <code>none</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>osf, out_sample_fmt</samp>&rsquo;</dt>
+<dd><p>Specify the output sample format. It is set by default to <code>none</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>tsf, internal_sample_fmt</samp>&rsquo;</dt>
+<dd><p>Set the internal sample format. Default value is <code>none</code>.
+This will automatically be chosen when it is not explicitly set.
+</p>
+</dd>
+<dt> &lsquo;<samp>icl, in_channel_layout</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ocl, out_channel_layout</samp>&rsquo;</dt>
+<dd><p>Set the input/output channel layout.
+</p>
+<p>See <a href="ffmpeg-utils.html#channel-layout-syntax">(ffmpeg-utils)channel layout syntax</a>
+for the required syntax.
+</p>
+</dd>
+<dt> &lsquo;<samp>clev, center_mix_level</samp>&rsquo;</dt>
+<dd><p>Set the center mix level. It is a value expressed in deciBel, and must be
+in the interval [-32,32].
+</p>
+</dd>
+<dt> &lsquo;<samp>slev, surround_mix_level</samp>&rsquo;</dt>
+<dd><p>Set the surround mix level. It is a value expressed in deciBel, and must
+be in the interval [-32,32].
+</p>
+</dd>
+<dt> &lsquo;<samp>lfe_mix_level</samp>&rsquo;</dt>
+<dd><p>Set LFE mix into non LFE level. It is used when there is a LFE input but no
+LFE output. It is a value expressed in deciBel, and must
+be in the interval [-32,32].
+</p>
+</dd>
+<dt> &lsquo;<samp>rmvol, rematrix_volume</samp>&rsquo;</dt>
+<dd><p>Set rematrix volume. Default value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>rematrix_maxval</samp>&rsquo;</dt>
+<dd><p>Set maximum output value for rematrixing.
+This can be used to prevent clipping vs. preventing volumn reduction
+A value of 1.0 prevents cliping.
+</p>
+</dd>
+<dt> &lsquo;<samp>flags, swr_flags</samp>&rsquo;</dt>
+<dd><p>Set flags used by the converter. Default value is 0.
+</p>
+<p>It supports the following individual flags:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>res</samp>&rsquo;</dt>
+<dd><p>force resampling, this flag forces resampling to be used even when the
+input and output sample rates match.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>dither_scale</samp>&rsquo;</dt>
+<dd><p>Set the dither scale. Default value is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>dither_method</samp>&rsquo;</dt>
+<dd><p>Set dither method. Default value is 0.
+</p>
+<p>Supported values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>rectangular</samp>&rsquo;</dt>
+<dd><p>select rectangular dither
+</p></dd>
+<dt> &lsquo;<samp>triangular</samp>&rsquo;</dt>
+<dd><p>select triangular dither
+</p></dd>
+<dt> &lsquo;<samp>triangular_hp</samp>&rsquo;</dt>
+<dd><p>select triangular dither with high pass
+</p></dd>
+<dt> &lsquo;<samp>lipshitz</samp>&rsquo;</dt>
+<dd><p>select lipshitz noise shaping dither
+</p></dd>
+<dt> &lsquo;<samp>shibata</samp>&rsquo;</dt>
+<dd><p>select shibata noise shaping dither
+</p></dd>
+<dt> &lsquo;<samp>low_shibata</samp>&rsquo;</dt>
+<dd><p>select low shibata noise shaping dither
+</p></dd>
+<dt> &lsquo;<samp>high_shibata</samp>&rsquo;</dt>
+<dd><p>select high shibata noise shaping dither
+</p></dd>
+<dt> &lsquo;<samp>f_weighted</samp>&rsquo;</dt>
+<dd><p>select f-weighted noise shaping dither
+</p></dd>
+<dt> &lsquo;<samp>modified_e_weighted</samp>&rsquo;</dt>
+<dd><p>select modified-e-weighted noise shaping dither
+</p></dd>
+<dt> &lsquo;<samp>improved_e_weighted</samp>&rsquo;</dt>
+<dd><p>select improved-e-weighted noise shaping dither
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>resampler</samp>&rsquo;</dt>
+<dd><p>Set resampling engine. Default value is swr.
+</p>
+<p>Supported values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>swr</samp>&rsquo;</dt>
+<dd><p>select the native SW Resampler; filter options precision and cheby are not
+applicable in this case.
+</p></dd>
+<dt> &lsquo;<samp>soxr</samp>&rsquo;</dt>
+<dd><p>select the SoX Resampler (where available); compensation, and filter options
+filter_size, phase_shift, filter_type &amp; kaiser_beta, are not applicable in this
+case.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>filter_size</samp>&rsquo;</dt>
+<dd><p>For swr only, set resampling filter size, default value is 32.
+</p>
+</dd>
+<dt> &lsquo;<samp>phase_shift</samp>&rsquo;</dt>
+<dd><p>For swr only, set resampling phase shift, default value is 10, and must be in
+the interval [0,30].
+</p>
+</dd>
+<dt> &lsquo;<samp>linear_interp</samp>&rsquo;</dt>
+<dd><p>Use Linear Interpolation if set to 1, default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>cutoff</samp>&rsquo;</dt>
+<dd><p>Set cutoff frequency (swr: 6dB point; soxr: 0dB point) ratio; must be a float
+value between 0 and 1.  Default value is 0.97 with swr, and 0.91 with soxr
+(which, with a sample-rate of 44100, preserves the entire audio band to 20kHz).
+</p>
+</dd>
+<dt> &lsquo;<samp>precision</samp>&rsquo;</dt>
+<dd><p>For soxr only, the precision in bits to which the resampled signal will be
+calculated.  The default value of 20 (which, with suitable dithering, is
+appropriate for a destination bit-depth of 16) gives SoX&rsquo;s &rsquo;High Quality&rsquo;; a
+value of 28 gives SoX&rsquo;s &rsquo;Very High Quality&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>cheby</samp>&rsquo;</dt>
+<dd><p>For soxr only, selects passband rolloff none (Chebyshev) &amp; higher-precision
+approximation for &rsquo;irrational&rsquo; ratios. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>async</samp>&rsquo;</dt>
+<dd><p>For swr only, simple 1 parameter audio sync to timestamps using stretching,
+squeezing, filling and trimming. Setting this to 1 will enable filling and
+trimming, larger values represent the maximum amount in samples that the data
+may be stretched or squeezed for each second.
+Default value is 0, thus no compensation is applied to make the samples match
+the audio timestamps.
+</p>
+</dd>
+<dt> &lsquo;<samp>first_pts</samp>&rsquo;</dt>
+<dd><p>For swr only, assume the first pts should be this value. The time unit is 1 / sample rate.
+This allows for padding/trimming at the start of stream. By default, no
+assumption is made about the first frame&rsquo;s expected pts, so no padding or
+trimming is done. For example, this could be set to 0 to pad the beginning with
+silence if an audio stream starts after the video stream or to trim any samples
+with a negative pts due to encoder delay.
+</p>
+</dd>
+<dt> &lsquo;<samp>min_comp</samp>&rsquo;</dt>
+<dd><p>For swr only, set the minimum difference between timestamps and audio data (in
+seconds) to trigger stretching/squeezing/filling or trimming of the
+data to make it match the timestamps. The default is that
+stretching/squeezing/filling and trimming is disabled
+(&lsquo;<samp>min_comp</samp>&rsquo; = <code>FLT_MAX</code>).
+</p>
+</dd>
+<dt> &lsquo;<samp>min_hard_comp</samp>&rsquo;</dt>
+<dd><p>For swr only, set the minimum difference between timestamps and audio data (in
+seconds) to trigger adding/dropping samples to make it match the
+timestamps.  This option effectively is a threshold to select between
+hard (trim/fill) and soft (squeeze/stretch) compensation. Note that
+all compensation is by default disabled through &lsquo;<samp>min_comp</samp>&rsquo;.
+The default is 0.1.
+</p>
+</dd>
+<dt> &lsquo;<samp>comp_duration</samp>&rsquo;</dt>
+<dd><p>For swr only, set duration (in seconds) over which data is stretched/squeezed
+to make it match the timestamps. Must be a non-negative double float value,
+default value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>max_soft_comp</samp>&rsquo;</dt>
+<dd><p>For swr only, set maximum factor by which data is stretched/squeezed to make it
+match the timestamps. Must be a non-negative double float value, default value
+is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>matrix_encoding</samp>&rsquo;</dt>
+<dd><p>Select matrixed stereo encoding.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>select none
+</p></dd>
+<dt> &lsquo;<samp>dolby</samp>&rsquo;</dt>
+<dd><p>select Dolby
+</p></dd>
+<dt> &lsquo;<samp>dplii</samp>&rsquo;</dt>
+<dd><p>select Dolby Pro Logic II
+</p></dd>
+</dl>
+
+<p>Default value is <code>none</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>filter_type</samp>&rsquo;</dt>
+<dd><p>For swr only, select resampling filter type. This only affects resampling
+operations.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>cubic</samp>&rsquo;</dt>
+<dd><p>select cubic
+</p></dd>
+<dt> &lsquo;<samp>blackman_nuttall</samp>&rsquo;</dt>
+<dd><p>select Blackman Nuttall Windowed Sinc
+</p></dd>
+<dt> &lsquo;<samp>kaiser</samp>&rsquo;</dt>
+<dd><p>select Kaiser Windowed Sinc
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>kaiser_beta</samp>&rsquo;</dt>
+<dd><p>For swr only, set Kaiser Window Beta value. Must be an integer in the
+interval [2,16], default value is 9.
+</p>
+</dd>
+<dt> &lsquo;<samp>output_sample_bits</samp>&rsquo;</dt>
+<dd><p>For swr only, set number of used output sample bits for dithering. Must be an integer in the
+interval [0,64], default value is 0, which means it&rsquo;s not used.
+</p>
+</dd>
+</dl>
+
+<p><a name="scaler_005foptions"></a>
+</p><a name="Scaler-Options"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Scaler-Options">27. Scaler Options</a></h1>
+
+<p>The video scaler supports the following named options.
+</p>
+<p>Options may be set by specifying -<var>option</var> <var>value</var> in the
+FFmpeg tools. For programmatic use, they can be set explicitly in the
+<code>SwsContext</code> options or through the &lsquo;<tt>libavutil/opt.h</tt>&rsquo; API.
+</p>
+<dl compact="compact">
+<dd>
+<p><a name="sws_005fflags"></a>
+</p></dd>
+<dt> &lsquo;<samp>sws_flags</samp>&rsquo;</dt>
+<dd><p>Set the scaler flags. This is also used to set the scaling
+algorithm. Only a single algorithm should be selected.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>fast_bilinear</samp>&rsquo;</dt>
+<dd><p>Select fast bilinear scaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>bilinear</samp>&rsquo;</dt>
+<dd><p>Select bilinear scaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>bicubic</samp>&rsquo;</dt>
+<dd><p>Select bicubic scaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>experimental</samp>&rsquo;</dt>
+<dd><p>Select experimental scaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>neighbor</samp>&rsquo;</dt>
+<dd><p>Select nearest neighbor rescaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>area</samp>&rsquo;</dt>
+<dd><p>Select averaging area rescaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>bicubiclin</samp>&rsquo;</dt>
+<dd><p>Select bicubic scaling algorithm for the luma component, bilinear for
+chroma components.
+</p>
+</dd>
+<dt> &lsquo;<samp>gauss</samp>&rsquo;</dt>
+<dd><p>Select Gaussian rescaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>sinc</samp>&rsquo;</dt>
+<dd><p>Select sinc rescaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>lanczos</samp>&rsquo;</dt>
+<dd><p>Select lanczos rescaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>spline</samp>&rsquo;</dt>
+<dd><p>Select natural bicubic spline rescaling algorithm.
+</p>
+</dd>
+<dt> &lsquo;<samp>print_info</samp>&rsquo;</dt>
+<dd><p>Enable printing/debug logging.
+</p>
+</dd>
+<dt> &lsquo;<samp>accurate_rnd</samp>&rsquo;</dt>
+<dd><p>Enable accurate rounding.
+</p>
+</dd>
+<dt> &lsquo;<samp>full_chroma_int</samp>&rsquo;</dt>
+<dd><p>Enable full chroma interpolation.
+</p>
+</dd>
+<dt> &lsquo;<samp>full_chroma_inp</samp>&rsquo;</dt>
+<dd><p>Select full chroma input.
+</p>
+</dd>
+<dt> &lsquo;<samp>bitexact</samp>&rsquo;</dt>
+<dd><p>Enable bitexact output.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>srcw</samp>&rsquo;</dt>
+<dd><p>Set source width.
+</p>
+</dd>
+<dt> &lsquo;<samp>srch</samp>&rsquo;</dt>
+<dd><p>Set source height.
+</p>
+</dd>
+<dt> &lsquo;<samp>dstw</samp>&rsquo;</dt>
+<dd><p>Set destination width.
+</p>
+</dd>
+<dt> &lsquo;<samp>dsth</samp>&rsquo;</dt>
+<dd><p>Set destination height.
+</p>
+</dd>
+<dt> &lsquo;<samp>src_format</samp>&rsquo;</dt>
+<dd><p>Set source pixel format (must be expressed as an integer).
+</p>
+</dd>
+<dt> &lsquo;<samp>dst_format</samp>&rsquo;</dt>
+<dd><p>Set destination pixel format (must be expressed as an integer).
+</p>
+</dd>
+<dt> &lsquo;<samp>src_range</samp>&rsquo;</dt>
+<dd><p>Select source range.
+</p>
+</dd>
+<dt> &lsquo;<samp>dst_range</samp>&rsquo;</dt>
+<dd><p>Select destination range.
+</p>
+</dd>
+<dt> &lsquo;<samp>param0, param1</samp>&rsquo;</dt>
+<dd><p>Set scaling algorithm parameters. The specified values are specific of
+some scaling algorithms and ignored by others. The specified values
+are floating point number values.
+</p>
+</dd>
+<dt> &lsquo;<samp>sws_dither</samp>&rsquo;</dt>
+<dd><p>Set the dithering algorithm. Accepts one of the following
+values. Default value is &lsquo;<samp>auto</samp>&rsquo;.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>automatic choice
+</p>
+</dd>
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>no dithering
+</p>
+</dd>
+<dt> &lsquo;<samp>bayer</samp>&rsquo;</dt>
+<dd><p>bayer dither
+</p>
+</dd>
+<dt> &lsquo;<samp>ed</samp>&rsquo;</dt>
+<dd><p>error diffusion dither
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Filtering-Introduction"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Filtering-Introduction">28. Filtering Introduction</a></h1>
+
+<p>Filtering in FFmpeg is enabled through the libavfilter library.
+</p>
+<p>In libavfilter, a filter can have multiple inputs and multiple
+outputs.
+To illustrate the sorts of things that are possible, we consider the
+following filtergraph.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">                [main]
+input --&gt; split ---------------------&gt; overlay --&gt; output
+            |                             ^
+            |[tmp]                  [flip]|
+            +-----&gt; crop --&gt; vflip -------+
+</pre></td></tr></table>
+
+<p>This filtergraph splits the input 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:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -vf &quot;split [main][tmp]; [tmp] crop=iw:ih/2:0:0, vflip [flip]; [main][flip] overlay=0:H/2&quot; OUTPUT
+</pre></td></tr></table>
+
+<p>The result will be that in output the top half of the video is mirrored
+onto the bottom half.
+</p>
+<p>Filters in the same linear chain are separated by commas, and distinct
+linear chains of filters are separated by semicolons. In our example,
+<var>crop,vflip</var> are in one linear chain, <var>split</var> and
+<var>overlay</var> are separately in another. The points where the linear
+chains join are labelled by names enclosed in square brackets. In the
+example, the split filter generates two outputs that are associated to
+the labels <var>[main]</var> and <var>[tmp]</var>.
+</p>
+<p>The stream sent to the second output of <var>split</var>, labelled as
+<var>[tmp]</var>, is processed through the <var>crop</var> filter, which crops
+away the lower half part of the video, and then vertically flipped. The
+<var>overlay</var> filter takes in input the first unchanged output of the
+split filter (which was labelled as <var>[main]</var>), and overlay on its
+lower half the output generated by the <var>crop,vflip</var> filterchain.
+</p>
+<p>Some filters take in input a list of parameters: they are specified
+after the filter name and an equal sign, and are separated from each other
+by a colon.
+</p>
+<p>There exist so-called <var>source filters</var> that do not have an
+audio/video input, and <var>sink filters</var> that will not have audio/video
+output.
+</p>
+
+<a name="graph2dot"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-graph2dot">29. graph2dot</a></h1>
+
+<p>The &lsquo;<tt>graph2dot</tt>&rsquo; program included in the FFmpeg &lsquo;<tt>tools</tt>&rsquo;
+directory can be used to parse a filtergraph description and issue a
+corresponding textual representation in the dot language.
+</p>
+<p>Invoke the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">graph2dot -h
+</pre></td></tr></table>
+
+<p>to see how to use &lsquo;<tt>graph2dot</tt>&rsquo;.
+</p>
+<p>You can then pass the dot description to the &lsquo;<tt>dot</tt>&rsquo; program (from
+the graphviz suite of programs) and obtain a graphical representation
+of the filtergraph.
+</p>
+<p>For example the sequence of commands:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">echo <var>GRAPH_DESCRIPTION</var> | \
+tools/graph2dot -o graph.tmp &amp;&amp; \
+dot -Tpng graph.tmp -o graph.png &amp;&amp; \
+display graph.png
+</pre></td></tr></table>
+
+<p>can be used to create and display an image representing the graph
+described by the <var>GRAPH_DESCRIPTION</var> string. Note that this string must be
+a complete self-contained graph, with its inputs and outputs explicitly defined.
+For example if your command line is of the form:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i infile -vf scale=640:360 outfile
+</pre></td></tr></table>
+<p>your <var>GRAPH_DESCRIPTION</var> string will need to be of the form:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">nullsrc,scale=640:360,nullsink
+</pre></td></tr></table>
+<p>you may also need to set the <var>nullsrc</var> parameters and add a <var>format</var>
+filter in order to simulate a specific input file.
+</p>
+
+<a name="Filtergraph-description"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Filtergraph-description">30. Filtergraph description</a></h1>
+
+<p>A filtergraph is a directed graph of connected filters. It can contain
+cycles, and there can be multiple links between a pair of
+filters. Each link has one input pad on one side connecting it to one
+filter from which it takes its input, and one output pad on the other
+side connecting it to the one filter accepting its output.
+</p>
+<p>Each filter in a filtergraph is an instance of a filter class
+registered in the application, which defines the features and the
+number of input and output pads of the filter.
+</p>
+<p>A filter with no input pads is called a &quot;source&quot;, a filter with no
+output pads is called a &quot;sink&quot;.
+</p>
+<p><a name="Filtergraph-syntax"></a>
+</p><a name="Filtergraph-syntax-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-Filtergraph-syntax-1">30.1 Filtergraph syntax</a></h2>
+
+<p>A filtergraph can be represented using a textual representation, which is
+recognized by the &lsquo;<samp>-filter</samp>&rsquo;/&lsquo;<samp>-vf</samp>&rsquo; and &lsquo;<samp>-filter_complex</samp>&rsquo;
+options in <code>ffmpeg</code> and &lsquo;<samp>-vf</samp>&rsquo; in <code>ffplay</code>, and by the
+<code>avfilter_graph_parse()</code>/<code>avfilter_graph_parse2()</code> function defined in
+&lsquo;<tt>libavfilter/avfilter.h</tt>&rsquo;.
+</p>
+<p>A filterchain consists of a sequence of connected filters, each one
+connected to the previous one in the sequence. A filterchain is
+represented by a list of &quot;,&quot;-separated filter descriptions.
+</p>
+<p>A filtergraph consists of a sequence of filterchains. A sequence of
+filterchains is represented by a list of &quot;;&quot;-separated filterchain
+descriptions.
+</p>
+<p>A filter is represented by a string of the form:
+[<var>in_link_1</var>]...[<var>in_link_N</var>]<var>filter_name</var>=<var>arguments</var>[<var>out_link_1</var>]...[<var>out_link_M</var>]
+</p>
+<p><var>filter_name</var> is the name of the filter class of which the
+described filter is an instance of, and has to be the name of one of
+the filter classes registered in the program.
+The name of the filter class is optionally followed by a string
+&quot;=<var>arguments</var>&quot;.
+</p>
+<p><var>arguments</var> is a string which contains the parameters used to
+initialize the filter instance. It may have one of the following forms:
+</p><ul>
+<li>
+A &rsquo;:&rsquo;-separated list of <var>key=value</var> pairs.
+
+</li><li>
+A &rsquo;:&rsquo;-separated list of <var>value</var>. In this case, the keys are assumed to be
+the option names in the order they are declared. E.g. the <code>fade</code> filter
+declares three options in this order &ndash; &lsquo;<samp>type</samp>&rsquo;, &lsquo;<samp>start_frame</samp>&rsquo; and
+&lsquo;<samp>nb_frames</samp>&rsquo;. Then the parameter list <var>in:0:30</var> means that the value
+<var>in</var> is assigned to the option &lsquo;<samp>type</samp>&rsquo;, <var>0</var> to
+&lsquo;<samp>start_frame</samp>&rsquo; and <var>30</var> to &lsquo;<samp>nb_frames</samp>&rsquo;.
+
+</li><li>
+A &rsquo;:&rsquo;-separated list of mixed direct <var>value</var> and long <var>key=value</var>
+pairs. The direct <var>value</var> must precede the <var>key=value</var> pairs, and
+follow the same constraints order of the previous point. The following
+<var>key=value</var> pairs can be set in any preferred order.
+
+</li></ul>
+
+<p>If the option value itself is a list of items (e.g. the <code>format</code> filter
+takes a list of pixel formats), the items in the list are usually separated by
+&rsquo;|&rsquo;.
+</p>
+<p>The list of arguments can be quoted using the character &quot;&rsquo;&quot; as initial
+and ending mark, and the character &rsquo;\&rsquo; for escaping the characters
+within the quoted text; otherwise the argument string is considered
+terminated when the next special character (belonging to the set
+&quot;[]=;,&quot;) is encountered.
+</p>
+<p>The name and arguments of the filter are optionally preceded and
+followed by a list of link labels.
+A link label allows to name a link and associate it to a filter output
+or input pad. The preceding labels <var>in_link_1</var>
+... <var>in_link_N</var>, are associated to the filter input pads,
+the following labels <var>out_link_1</var> ... <var>out_link_M</var>, are
+associated to the output pads.
+</p>
+<p>When two link labels with the same name are found in the
+filtergraph, a link between the corresponding input and output pad is
+created.
+</p>
+<p>If an output pad is not labelled, it is linked by default to the first
+unlabelled input pad of the next filter in the filterchain.
+For example in the filterchain:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">nullsrc, split[L1], [L2]overlay, nullsink
+</pre></td></tr></table>
+<p>the split filter instance has two output pads, and the overlay filter
+instance two input pads. The first output pad of split is labelled
+&quot;L1&quot;, the first input pad of overlay is labelled &quot;L2&quot;, and the second
+output pad of split is linked to the second input pad of overlay,
+which are both unlabelled.
+</p>
+<p>In a complete filterchain all the unlabelled filter input and output
+pads must be connected. A filtergraph is considered valid if all the
+filter input and output pads of all the filterchains are connected.
+</p>
+<p>Libavfilter will automatically insert <a href="#scale">scale</a> filters where format
+conversion is required. It is possible to specify swscale flags
+for those automatically inserted scalers by prepending
+<code>sws_flags=<var>flags</var>;</code>
+to the filtergraph description.
+</p>
+<p>Follows a BNF description for the filtergraph syntax:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>NAME</var>             ::= sequence of alphanumeric characters and '_'
+<var>LINKLABEL</var>        ::= &quot;[&quot; <var>NAME</var> &quot;]&quot;
+<var>LINKLABELS</var>       ::= <var>LINKLABEL</var> [<var>LINKLABELS</var>]
+<var>FILTER_ARGUMENTS</var> ::= sequence of chars (eventually quoted)
+<var>FILTER</var>           ::= [<var>LINKLABELS</var>] <var>NAME</var> [&quot;=&quot; <var>FILTER_ARGUMENTS</var>] [<var>LINKLABELS</var>]
+<var>FILTERCHAIN</var>      ::= <var>FILTER</var> [,<var>FILTERCHAIN</var>]
+<var>FILTERGRAPH</var>      ::= [sws_flags=<var>flags</var>;] <var>FILTERCHAIN</var> [;<var>FILTERGRAPH</var>]
+</pre></td></tr></table>
+
+<a name="Notes-on-filtergraph-escaping"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-Notes-on-filtergraph-escaping">30.2 Notes on filtergraph escaping</a></h2>
+
+<p>Some filter arguments require the use of special characters, typically
+<code>:</code> to separate key=value pairs in a named options list. In this
+case the user should perform a first level escaping when specifying
+the filter arguments. For example, consider the following literal
+string to be embedded in the <a href="#drawtext">drawtext</a> filter arguments:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">this is a 'string': may contain one, or more, special characters
+</pre></td></tr></table>
+
+<p>Since <code>:</code> is special for the filter arguments syntax, it needs to
+be escaped, so you get:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">text=this is a \'string\'\: may contain one, or more, special characters
+</pre></td></tr></table>
+
+<p>A second level of escaping is required when embedding the filter
+arguments in a filtergraph description, in order to escape all the
+filtergraph special characters. Thus the example above becomes:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">drawtext=text=this is a \\\'string\\\'\\: may contain one\, or more\, special characters
+</pre></td></tr></table>
+
+<p>Finally an additional level of escaping may be needed when writing the
+filtergraph description in a shell command, which depends on the
+escaping rules of the adopted shell. For example, assuming that
+<code>\</code> is special and needs to be escaped with another <code>\</code>, the
+previous string will finally result in:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">-vf &quot;drawtext=text=this is a \\\\\\'string\\\\\\'\\\\: may contain one\\, or more\\, special characters&quot;
+</pre></td></tr></table>
+
+<p>Sometimes, it might be more convenient to employ quoting in place of
+escaping. For example the string:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">Caesar: tu quoque, Brute, fili mi
+</pre></td></tr></table>
+
+<p>Can be quoted in the filter arguments as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">text='Caesar: tu quoque, Brute, fili mi'
+</pre></td></tr></table>
+
+<p>And finally inserted in a filtergraph like:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">drawtext=text=\'Caesar: tu quoque\, Brute\, fili mi\'
+</pre></td></tr></table>
+
+<p>See the &ldquo;Quoting and escaping&rdquo; section in the ffmpeg-utils manual
+for more information about the escaping and quoting rules adopted by
+FFmpeg.
+</p>
+<a name="Timeline-editing"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Timeline-editing">31. Timeline editing</a></h1>
+
+<p>Some filters support a generic &lsquo;<samp>enable</samp>&rsquo; option. For the filters
+supporting timeline editing, this option can be set to an expression which is
+evaluated before sending a frame to the filter. If the evaluation is non-zero,
+the filter will be enabled, otherwise the frame will be sent unchanged to the
+next filter in the filtergraph.
+</p>
+<p>The expression accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>timestamp expressed in seconds, NAN if the input timestamp is unknown
+</p>
+</dd>
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>sequential number of the input frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
+<dd><p>the position in the file of the input frame, NAN if unknown
+</p></dd>
+</dl>
+
+<p>Additionally, these filters support an &lsquo;<samp>enable</samp>&rsquo; command that can be used
+to re-define the expression.
+</p>
+<p>Like any other filtering option, the &lsquo;<samp>enable</samp>&rsquo; option follows the same
+rules.
+</p>
+<p>For example, to enable a blur filter (<a href="#smartblur">smartblur</a>) from 10 seconds to 3
+minutes, and a <a href="#curves">curves</a> filter starting at 3 seconds:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">smartblur = enable='between(t,10,3*60)',
+curves    = enable='gte(t,3)' : preset=cross_process
+</pre></td></tr></table>
+
+
+<a name="Audio-Filters"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Audio-Filters">32. Audio Filters</a></h1>
+
+<p>When you configure your FFmpeg build, you can disable any of the
+existing filters using <code>--disable-filters</code>.
+The configure output will show the audio filters included in your
+build.
+</p>
+<p>Below is a description of the currently available audio filters.
+</p>
+<a name="aconvert"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-aconvert">32.1 aconvert</a></h2>
+
+<p>Convert the input audio format to the specified formats.
+</p>
+<p><em>This filter is deprecated. Use <a href="#aformat">aformat</a> instead.</em>
+</p>
+<p>The filter accepts a string of the form:
+&quot;<var>sample_format</var>:<var>channel_layout</var>&quot;.
+</p>
+<p><var>sample_format</var> specifies the sample format, and can be a string or the
+corresponding numeric value defined in &lsquo;<tt>libavutil/samplefmt.h</tt>&rsquo;. Use &rsquo;p&rsquo;
+suffix for a planar sample format.
+</p>
+<p><var>channel_layout</var> specifies the channel layout, and can be a string
+or the corresponding number value defined in &lsquo;<tt>libavutil/channel_layout.h</tt>&rsquo;.
+</p>
+<p>The special parameter &quot;auto&quot;, signifies that the filter will
+automatically select the output format depending on the output filter.
+</p>
+<a name="Examples-5"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-5">32.1.1 Examples</a></h3>
+
+<ul>
+<li>
+Convert input to float, planar, stereo:
+<table><tr><td>&nbsp;</td><td><pre class="example">aconvert=fltp:stereo
+</pre></td></tr></table>
+
+</li><li>
+Convert input to unsigned 8-bit, automatically select out channel layout:
+<table><tr><td>&nbsp;</td><td><pre class="example">aconvert=u8:auto
+</pre></td></tr></table>
+</li></ul>
+
+<a name="adelay"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-adelay">32.2 adelay</a></h2>
+
+<p>Delay one or more audio channels.
+</p>
+<p>Samples in delayed channel are filled with silence.
+</p>
+<p>The filter accepts the following option:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>delays</samp>&rsquo;</dt>
+<dd><p>Set list of delays in milliseconds for each channel separated by &rsquo;|&rsquo;.
+At least one delay greater than 0 should be provided.
+Unused delays will be silently ignored. If number of given delays is
+smaller than number of channels all remaining channels will not be delayed.
+</p></dd>
+</dl>
+
+<a name="Examples-39"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-39">32.2.1 Examples</a></h3>
+
+<ul>
+<li>
+Delay first channel by 1.5 seconds, the third channel by 0.5 seconds and leave
+the second channel (and any other channels that may be present) unchanged.
+<table><tr><td>&nbsp;</td><td><pre class="example">adelay=1500|0|500
+</pre></td></tr></table>
+</li></ul>
+
+<a name="aecho"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-aecho">32.3 aecho</a></h2>
+
+<p>Apply echoing to the input audio.
+</p>
+<p>Echoes are reflected sound and can occur naturally amongst mountains
+(and sometimes large buildings) when talking or shouting; digital echo
+effects emulate this behaviour and are often used to help fill out the
+sound of a single instrument or vocal. The time difference between the
+original signal and the reflection is the <code>delay</code>, and the
+loudness of the reflected signal is the <code>decay</code>.
+Multiple echoes can have different delays and decays.
+</p>
+<p>A description of the accepted parameters follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>in_gain</samp>&rsquo;</dt>
+<dd><p>Set input gain of reflected signal. Default is <code>0.6</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>out_gain</samp>&rsquo;</dt>
+<dd><p>Set output gain of reflected signal. Default is <code>0.3</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>delays</samp>&rsquo;</dt>
+<dd><p>Set list of time intervals in milliseconds between original signal and reflections
+separated by &rsquo;|&rsquo;. Allowed range for each <code>delay</code> is <code>(0 - 90000.0]</code>.
+Default is <code>1000</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>decays</samp>&rsquo;</dt>
+<dd><p>Set list of loudnesses of reflected signals separated by &rsquo;|&rsquo;.
+Allowed range for each <code>decay</code> is <code>(0 - 1.0]</code>.
+Default is <code>0.5</code>.
+</p></dd>
+</dl>
+
+<a name="Examples-62"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-62">32.3.1 Examples</a></h3>
+
+<ul>
+<li>
+Make it sound as if there are twice as many instruments as are actually playing:
+<table><tr><td>&nbsp;</td><td><pre class="example">aecho=0.8:0.88:60:0.4
+</pre></td></tr></table>
+
+</li><li>
+If delay is very short, then it sound like a (metallic) robot playing music:
+<table><tr><td>&nbsp;</td><td><pre class="example">aecho=0.8:0.88:6:0.4
+</pre></td></tr></table>
+
+</li><li>
+A longer delay will sound like an open air concert in the mountains:
+<table><tr><td>&nbsp;</td><td><pre class="example">aecho=0.8:0.9:1000:0.3
+</pre></td></tr></table>
+
+</li><li>
+Same as above but with one more mountain:
+<table><tr><td>&nbsp;</td><td><pre class="example">aecho=0.8:0.9:1000|1800:0.3|0.25
+</pre></td></tr></table>
+</li></ul>
+
+<a name="aeval"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-aeval">32.4 aeval</a></h2>
+
+<p>Modify an audio signal according to the specified expressions.
+</p>
+<p>This filter accepts one or more expressions (one for each channel),
+which are evaluated and used to modify a corresponding audio signal.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>exprs</samp>&rsquo;</dt>
+<dd><p>Set the &rsquo;|&rsquo;-separated expressions list for each separate channel. If
+the number of input channels is greater than the number of
+expressions, the last specified expression is used for the remaining
+output channels.
+</p>
+</dd>
+<dt> &lsquo;<samp>channel_layout, c</samp>&rsquo;</dt>
+<dd><p>Set output channel layout. If not specified, the channel layout is
+specified by the number of expressions. If set to &lsquo;<samp>same</samp>&rsquo;, it will
+use by default the same input channel layout.
+</p></dd>
+</dl>
+
+<p>Each expression in <var>exprs</var> can contain the following constants and functions:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>ch</samp>&rsquo;</dt>
+<dd><p>channel number of the current expression
+</p>
+</dd>
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>number of the evaluated sample, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>sample rate
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>time of the evaluated sample expressed in seconds
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_in_channels</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>nb_out_channels</samp>&rsquo;</dt>
+<dd><p>input and output number of channels
+</p>
+</dd>
+<dt> &lsquo;<samp>val(CH)</samp>&rsquo;</dt>
+<dd><p>the value of input channel with number <var>CH</var>
+</p></dd>
+</dl>
+
+<p>Note: this filter is slow. For faster processing you should use a
+dedicated filter.
+</p>
+<a name="Examples-82"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-82">32.4.1 Examples</a></h3>
+
+<ul>
+<li>
+Half volume:
+<table><tr><td>&nbsp;</td><td><pre class="example">aeval=val(ch)/2:c=same
+</pre></td></tr></table>
+
+</li><li>
+Invert phase of the second channel:
+<table><tr><td>&nbsp;</td><td><pre class="example">eval=val(0)|-val(1)
+</pre></td></tr></table>
+</li></ul>
+
+<a name="afade"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-afade">32.5 afade</a></h2>
+
+<p>Apply fade-in/out effect to input audio.
+</p>
+<p>A description of the accepted parameters follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>type, t</samp>&rsquo;</dt>
+<dd><p>Specify the effect type, can be either <code>in</code> for fade-in, or
+<code>out</code> for a fade-out effect. Default is <code>in</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_sample, ss</samp>&rsquo;</dt>
+<dd><p>Specify the number of the start sample for starting to apply the fade
+effect. Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_samples, ns</samp>&rsquo;</dt>
+<dd><p>Specify the number of samples for which the fade effect has to last. At
+the end of the fade-in effect the output audio will have the same
+volume as the input audio, at the end of the fade-out transition
+the output audio will be silence. Default is 44100.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_time, st</samp>&rsquo;</dt>
+<dd><p>Specify time for starting to apply the fade effect. Default is 0.
+The accepted syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[-]HH[:MM[:SS[.m...]]]
+[-]S+[.m...]
+</pre></td></tr></table>
+<p>See also the function <code>av_parse_time()</code>.
+If set this option is used instead of <var>start_sample</var> one.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
+<dd><p>Specify the duration for which the fade effect has to last. Default is 0.
+The accepted syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[-]HH[:MM[:SS[.m...]]]
+[-]S+[.m...]
+</pre></td></tr></table>
+<p>See also the function <code>av_parse_time()</code>.
+At the end of the fade-in effect the output audio will have the same
+volume as the input audio, at the end of the fade-out transition
+the output audio will be silence.
+If set this option is used instead of <var>nb_samples</var> one.
+</p>
+</dd>
+<dt> &lsquo;<samp>curve</samp>&rsquo;</dt>
+<dd><p>Set curve for fade transition.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>tri</samp>&rsquo;</dt>
+<dd><p>select triangular, linear slope (default)
+</p></dd>
+<dt> &lsquo;<samp>qsin</samp>&rsquo;</dt>
+<dd><p>select quarter of sine wave
+</p></dd>
+<dt> &lsquo;<samp>hsin</samp>&rsquo;</dt>
+<dd><p>select half of sine wave
+</p></dd>
+<dt> &lsquo;<samp>esin</samp>&rsquo;</dt>
+<dd><p>select exponential sine wave
+</p></dd>
+<dt> &lsquo;<samp>log</samp>&rsquo;</dt>
+<dd><p>select logarithmic
+</p></dd>
+<dt> &lsquo;<samp>par</samp>&rsquo;</dt>
+<dd><p>select inverted parabola
+</p></dd>
+<dt> &lsquo;<samp>qua</samp>&rsquo;</dt>
+<dd><p>select quadratic
+</p></dd>
+<dt> &lsquo;<samp>cub</samp>&rsquo;</dt>
+<dd><p>select cubic
+</p></dd>
+<dt> &lsquo;<samp>squ</samp>&rsquo;</dt>
+<dd><p>select square root
+</p></dd>
+<dt> &lsquo;<samp>cbr</samp>&rsquo;</dt>
+<dd><p>select cubic root
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<a name="Examples-23"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-23">32.5.1 Examples</a></h3>
+
+<ul>
+<li>
+Fade in first 15 seconds of audio:
+<table><tr><td>&nbsp;</td><td><pre class="example">afade=t=in:ss=0:d=15
+</pre></td></tr></table>
+
+</li><li>
+Fade out last 25 seconds of a 900 seconds audio:
+<table><tr><td>&nbsp;</td><td><pre class="example">afade=t=out:st=875:d=25
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="aformat"></a>
+</p><a name="aformat-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-aformat-1">32.6 aformat</a></h2>
+
+<p>Set output format constraints for the input audio. The framework will
+negotiate the most appropriate format to minimize conversions.
+</p>
+<p>The filter accepts the following named parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sample_fmts</samp>&rsquo;</dt>
+<dd><p>A &rsquo;|&rsquo;-separated list of requested sample formats.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rates</samp>&rsquo;</dt>
+<dd><p>A &rsquo;|&rsquo;-separated list of requested sample rates.
+</p>
+</dd>
+<dt> &lsquo;<samp>channel_layouts</samp>&rsquo;</dt>
+<dd><p>A &rsquo;|&rsquo;-separated list of requested channel layouts.
+</p>
+<p>See <a href="ffmpeg-utils.html#channel-layout-syntax">(ffmpeg-utils)channel layout syntax</a>
+for the required syntax.
+</p></dd>
+</dl>
+
+<p>If a parameter is omitted, all values are allowed.
+</p>
+<p>For example to force the output to either unsigned 8-bit or signed 16-bit stereo:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">aformat=sample_fmts=u8|s16:channel_layouts=stereo
+</pre></td></tr></table>
+
+<a name="allpass"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-allpass">32.7 allpass</a></h2>
+
+<p>Apply a two-pole all-pass filter with central frequency (in Hz)
+<var>frequency</var>, and filter-width <var>width</var>.
+An all-pass filter changes the audio&rsquo;s frequency to phase relationship
+without changing its frequency to amplitude relationship.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set frequency in Hz.
+</p>
+</dd>
+<dt> &lsquo;<samp>width_type</samp>&rsquo;</dt>
+<dd><p>Set method to specify band-width of filter.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Hz
+</p></dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Q-Factor
+</p></dd>
+<dt> &lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>octave
+</p></dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>slope
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dd><p>Specify the band-width of a filter in width_type units.
+</p></dd>
+</dl>
+
+<a name="amerge"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-amerge">32.8 amerge</a></h2>
+
+<p>Merge two or more audio streams into a single multi-channel stream.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>inputs</samp>&rsquo;</dt>
+<dd><p>Set the number of inputs. Default is 2.
+</p>
+</dd>
+</dl>
+
+<p>If the channel layouts of the inputs are disjoint, and therefore compatible,
+the channel layout of the output will be set accordingly and the channels
+will be reordered as necessary. If the channel layouts of the inputs are not
+disjoint, the output will have all the channels of the first input then all
+the channels of the second input, in that order, and the channel layout of
+the output will be the default value corresponding to the total number of
+channels.
+</p>
+<p>For example, if the first input is in 2.1 (FL+FR+LF) and the second input
+is FC+BL+BR, then the output will be in 5.1, with the channels in the
+following order: a1, a2, b1, a3, b2, b3 (a1 is the first channel of the
+first input, b1 is the first channel of the second input).
+</p>
+<p>On the other hand, if both input are in stereo, the output channels will be
+in the default order: a1, a2, b1, b2, and the channel layout will be
+arbitrarily set to 4.0, which may or may not be the expected value.
+</p>
+<p>All inputs must have the same sample rate, and format.
+</p>
+<p>If inputs do not have the same duration, the output will stop with the
+shortest.
+</p>
+<a name="Examples-12"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-12">32.8.1 Examples</a></h3>
+
+<ul>
+<li>
+Merge two mono files into a stereo stream:
+<table><tr><td>&nbsp;</td><td><pre class="example">amovie=left.wav [l] ; amovie=right.mp3 [r] ; [l] [r] amerge
+</pre></td></tr></table>
+
+</li><li>
+Multiple merges assuming 1 video stream and 6 audio streams in &lsquo;<tt>input.mkv</tt>&rsquo;:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.mkv -filter_complex &quot;[0:1][0:2][0:3][0:4][0:5][0:6] amerge=inputs=6&quot; -c:a pcm_s16le output.mkv
+</pre></td></tr></table>
+</li></ul>
+
+<a name="amix"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-amix">32.9 amix</a></h2>
+
+<p>Mixes multiple audio inputs into a single output.
+</p>
+<p>For example
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex amix=inputs=3:duration=first:dropout_transition=3 OUTPUT
+</pre></td></tr></table>
+<p>will mix 3 input audio streams to a single output with the same duration as the
+first input and a dropout transition time of 3 seconds.
+</p>
+<p>The filter accepts the following named parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>inputs</samp>&rsquo;</dt>
+<dd><p>Number of inputs. If unspecified, it defaults to 2.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration</samp>&rsquo;</dt>
+<dd><p>How to determine the end-of-stream.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>longest</samp>&rsquo;</dt>
+<dd><p>Duration of longest input. (default)
+</p>
+</dd>
+<dt> &lsquo;<samp>shortest</samp>&rsquo;</dt>
+<dd><p>Duration of shortest input.
+</p>
+</dd>
+<dt> &lsquo;<samp>first</samp>&rsquo;</dt>
+<dd><p>Duration of first input.
+</p>
+</dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>dropout_transition</samp>&rsquo;</dt>
+<dd><p>Transition time, in seconds, for volume renormalization when an input
+stream ends. The default value is 2 seconds.
+</p>
+</dd>
+</dl>
+
+<a name="anull"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-anull">32.10 anull</a></h2>
+
+<p>Pass the audio source unchanged to the output.
+</p>
+<a name="apad"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-apad">32.11 apad</a></h2>
+
+<p>Pad the end of a audio stream with silence, this can be used together with
+-shortest to extend audio streams to the same length as the video stream.
+</p>
+<a name="aphaser"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-aphaser">32.12 aphaser</a></h2>
+<p>Add a phasing effect to the input audio.
+</p>
+<p>A phaser filter creates series of peaks and troughs in the frequency spectrum.
+The position of the peaks and troughs are modulated so that they vary over time, creating a sweeping effect.
+</p>
+<p>A description of the accepted parameters follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>in_gain</samp>&rsquo;</dt>
+<dd><p>Set input gain. Default is 0.4.
+</p>
+</dd>
+<dt> &lsquo;<samp>out_gain</samp>&rsquo;</dt>
+<dd><p>Set output gain. Default is 0.74
+</p>
+</dd>
+<dt> &lsquo;<samp>delay</samp>&rsquo;</dt>
+<dd><p>Set delay in milliseconds. Default is 3.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>decay</samp>&rsquo;</dt>
+<dd><p>Set decay. Default is 0.4.
+</p>
+</dd>
+<dt> &lsquo;<samp>speed</samp>&rsquo;</dt>
+<dd><p>Set modulation speed in Hz. Default is 0.5.
+</p>
+</dd>
+<dt> &lsquo;<samp>type</samp>&rsquo;</dt>
+<dd><p>Set modulation type. Default is triangular.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>triangular, t</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sinusoidal, s</samp>&rsquo;</dt>
+</dl>
+</dd>
+</dl>
+
+<p><a name="aresample"></a>
+</p><a name="aresample-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-aresample-1">32.13 aresample</a></h2>
+
+<p>Resample the input audio to the specified parameters, using the
+libswresample library. If none are specified then the filter will
+automatically convert between its input and output.
+</p>
+<p>This filter is also able to stretch/squeeze the audio data to make it match
+the timestamps or to inject silence / cut out audio to make it match the
+timestamps, do a combination of both or do neither.
+</p>
+<p>The filter accepts the syntax
+[<var>sample_rate</var>:]<var>resampler_options</var>, where <var>sample_rate</var>
+expresses a sample rate and <var>resampler_options</var> is a list of
+<var>key</var>=<var>value</var> pairs, separated by &quot;:&quot;. See the
+ffmpeg-resampler manual for the complete list of supported options.
+</p>
+<a name="Examples-81"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-81">32.13.1 Examples</a></h3>
+
+<ul>
+<li>
+Resample the input audio to 44100Hz:
+<table><tr><td>&nbsp;</td><td><pre class="example">aresample=44100
+</pre></td></tr></table>
+
+</li><li>
+Stretch/squeeze samples to the given timestamps, with a maximum of 1000
+samples per second compensation:
+<table><tr><td>&nbsp;</td><td><pre class="example">aresample=async=1000
+</pre></td></tr></table>
+</li></ul>
+
+<a name="asetnsamples"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-asetnsamples">32.14 asetnsamples</a></h2>
+
+<p>Set the number of samples per each output audio frame.
+</p>
+<p>The last output packet may contain a different number of samples, as
+the filter will flush all the remaining samples when the input audio
+signal its end.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>nb_out_samples, n</samp>&rsquo;</dt>
+<dd><p>Set the number of frames per each output audio frame. The number is
+intended as the number of samples <em>per each channel</em>.
+Default value is 1024.
+</p>
+</dd>
+<dt> &lsquo;<samp>pad, p</samp>&rsquo;</dt>
+<dd><p>If set to 1, the filter will pad the last audio frame with zeroes, so
+that the last frame will contain the same number of samples as the
+previous ones. Default value is 1.
+</p></dd>
+</dl>
+
+<p>For example, to set the number of per-frame samples to 1234 and
+disable padding for the last frame, use:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">asetnsamples=n=1234:p=0
+</pre></td></tr></table>
+
+<a name="asetrate"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-asetrate">32.15 asetrate</a></h2>
+
+<p>Set the sample rate without altering the PCM data.
+This will result in a change of speed and pitch.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>sample_rate, r</samp>&rsquo;</dt>
+<dd><p>Set the output sample rate. Default is 44100 Hz.
+</p></dd>
+</dl>
+
+<a name="ashowinfo"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-ashowinfo">32.16 ashowinfo</a></h2>
+
+<p>Show a line containing various information for each input audio frame.
+The input audio is not modified.
+</p>
+<p>The shown line contains a sequence of key/value pairs of the form
+<var>key</var>:<var>value</var>.
+</p>
+<p>A description of each shown parameter follows:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>sequential number of the input frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
+<dd><p>Presentation timestamp of the input frame, in time base units; the time base
+depends on the filter input pad, and is usually 1/<var>sample_rate</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>pts_time</samp>&rsquo;</dt>
+<dd><p>presentation timestamp of the input frame in seconds
+</p>
+</dd>
+<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
+<dd><p>position of the frame in the input stream, -1 if this information in
+unavailable and/or meaningless (for example in case of synthetic audio)
+</p>
+</dd>
+<dt> &lsquo;<samp>fmt</samp>&rsquo;</dt>
+<dd><p>sample format
+</p>
+</dd>
+<dt> &lsquo;<samp>chlayout</samp>&rsquo;</dt>
+<dd><p>channel layout
+</p>
+</dd>
+<dt> &lsquo;<samp>rate</samp>&rsquo;</dt>
+<dd><p>sample rate for the audio frame
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_samples</samp>&rsquo;</dt>
+<dd><p>number of samples (per channel) in the frame
+</p>
+</dd>
+<dt> &lsquo;<samp>checksum</samp>&rsquo;</dt>
+<dd><p>Adler-32 checksum (printed in hexadecimal) of the audio data. For planar audio
+the data is treated as if all the planes were concatenated.
+</p>
+</dd>
+<dt> &lsquo;<samp>plane_checksums</samp>&rsquo;</dt>
+<dd><p>A list of Adler-32 checksums for each data plane.
+</p></dd>
+</dl>
+
+<a name="astats"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-astats">32.17 astats</a></h2>
+
+<p>Display time domain statistical information about the audio channels.
+Statistics are calculated and displayed for each audio channel and,
+where applicable, an overall figure is also given.
+</p>
+<p>The filter accepts the following option:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>length</samp>&rsquo;</dt>
+<dd><p>Short window length in seconds, used for peak and trough RMS measurement.
+Default is <code>0.05</code> (50 miliseconds). Allowed range is <code>[0.1 - 10]</code>.
+</p></dd>
+</dl>
+
+<p>A description of each shown parameter follows:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>DC offset</samp>&rsquo;</dt>
+<dd><p>Mean amplitude displacement from zero.
+</p>
+</dd>
+<dt> &lsquo;<samp>Min level</samp>&rsquo;</dt>
+<dd><p>Minimal sample level.
+</p>
+</dd>
+<dt> &lsquo;<samp>Max level</samp>&rsquo;</dt>
+<dd><p>Maximal sample level.
+</p>
+</dd>
+<dt> &lsquo;<samp>Peak level dB</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>RMS level dB</samp>&rsquo;</dt>
+<dd><p>Standard peak and RMS level measured in dBFS.
+</p>
+</dd>
+<dt> &lsquo;<samp>RMS peak dB</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>RMS trough dB</samp>&rsquo;</dt>
+<dd><p>Peak and trough values for RMS level measured over a short window.
+</p>
+</dd>
+<dt> &lsquo;<samp>Crest factor</samp>&rsquo;</dt>
+<dd><p>Standard ratio of peak to RMS level (note: not in dB).
+</p>
+</dd>
+<dt> &lsquo;<samp>Flat factor</samp>&rsquo;</dt>
+<dd><p>Flatness (i.e. consecutive samples with the same value) of the signal at its peak levels
+(i.e. either <var>Min level</var> or <var>Max level</var>).
+</p>
+</dd>
+<dt> &lsquo;<samp>Peak count</samp>&rsquo;</dt>
+<dd><p>Number of occasions (not the number of samples) that the signal attained either
+<var>Min level</var> or <var>Max level</var>.
+</p></dd>
+</dl>
+
+<a name="astreamsync"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-astreamsync">32.18 astreamsync</a></h2>
+
+<p>Forward two audio streams and control the order the buffers are forwarded.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>expr, e</samp>&rsquo;</dt>
+<dd><p>Set the expression deciding which stream should be
+forwarded next: if the result is negative, the first stream is forwarded; if
+the result is positive or zero, the second stream is forwarded. It can use
+the following variables:
+</p>
+<dl compact="compact">
+<dt> <var>b1 b2</var></dt>
+<dd><p>number of buffers forwarded so far on each stream
+</p></dd>
+<dt> <var>s1 s2</var></dt>
+<dd><p>number of samples forwarded so far on each stream
+</p></dd>
+<dt> <var>t1 t2</var></dt>
+<dd><p>current timestamp of each stream
+</p></dd>
+</dl>
+
+<p>The default value is <code>t1-t2</code>, which means to always forward the stream
+that has a smaller timestamp.
+</p></dd>
+</dl>
+
+<a name="Examples-9"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-9">32.18.1 Examples</a></h3>
+
+<p>Stress-test <code>amerge</code> by randomly sending buffers on the wrong
+input, while avoiding too much of a desynchronization:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">amovie=file.ogg [a] ; amovie=file.mp3 [b] ;
+[a] [b] astreamsync=(2*random(1))-1+tanh(5*(t1-t2)) [a2] [b2] ;
+[a2] [b2] amerge
+</pre></td></tr></table>
+
+<a name="asyncts"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-asyncts">32.19 asyncts</a></h2>
+
+<p>Synchronize audio data with timestamps by squeezing/stretching it and/or
+dropping samples/adding silence when needed.
+</p>
+<p>This filter is not built by default, please use <a href="#aresample">aresample</a> to do squeezing/stretching.
+</p>
+<p>The filter accepts the following named parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>compensate</samp>&rsquo;</dt>
+<dd><p>Enable stretching/squeezing the data to make it match the timestamps. Disabled
+by default. When disabled, time gaps are covered with silence.
+</p>
+</dd>
+<dt> &lsquo;<samp>min_delta</samp>&rsquo;</dt>
+<dd><p>Minimum difference between timestamps and audio data (in seconds) to trigger
+adding/dropping samples. Default value is 0.1. If you get non-perfect sync with
+this filter, try setting this parameter to 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>max_comp</samp>&rsquo;</dt>
+<dd><p>Maximum compensation in samples per second. Relevant only with compensate=1.
+Default value 500.
+</p>
+</dd>
+<dt> &lsquo;<samp>first_pts</samp>&rsquo;</dt>
+<dd><p>Assume the first pts should be this value. The time base is 1 / sample rate.
+This allows for padding/trimming at the start of stream. By default, no
+assumption is made about the first frame&rsquo;s expected pts, so no padding or
+trimming is done. For example, this could be set to 0 to pad the beginning with
+silence if an audio stream starts after the video stream or to trim any samples
+with a negative pts due to encoder delay.
+</p>
+</dd>
+</dl>
+
+<a name="atempo"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-atempo">32.20 atempo</a></h2>
+
+<p>Adjust audio tempo.
+</p>
+<p>The filter accepts exactly one parameter, the audio tempo. If not
+specified then the filter will assume nominal 1.0 tempo. Tempo must
+be in the [0.5, 2.0] range.
+</p>
+<a name="Examples-19"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-19">32.20.1 Examples</a></h3>
+
+<ul>
+<li>
+Slow down audio to 80% tempo:
+<table><tr><td>&nbsp;</td><td><pre class="example">atempo=0.8
+</pre></td></tr></table>
+
+</li><li>
+To speed up audio to 125% tempo:
+<table><tr><td>&nbsp;</td><td><pre class="example">atempo=1.25
+</pre></td></tr></table>
+</li></ul>
+
+<a name="atrim"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-atrim">32.21 atrim</a></h2>
+
+<p>Trim the input so that the output contains one continuous subpart of the input.
+</p>
+<p>This filter accepts the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>start</samp>&rsquo;</dt>
+<dd><p>Specify time of the start of the kept section, i.e. the audio sample
+with the timestamp <var>start</var> will be the first sample in the output.
+</p>
+</dd>
+<dt> &lsquo;<samp>end</samp>&rsquo;</dt>
+<dd><p>Specify time of the first audio sample that will be dropped, i.e. the
+audio sample immediately preceding the one with the timestamp <var>end</var> will be
+the last sample in the output.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_pts</samp>&rsquo;</dt>
+<dd><p>Same as <var>start</var>, except this option sets the start timestamp in samples
+instead of seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>end_pts</samp>&rsquo;</dt>
+<dd><p>Same as <var>end</var>, except this option sets the end timestamp in samples instead
+of seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration</samp>&rsquo;</dt>
+<dd><p>Specify maximum duration of the output.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_sample</samp>&rsquo;</dt>
+<dd><p>Number of the first sample that should be passed to output.
+</p>
+</dd>
+<dt> &lsquo;<samp>end_sample</samp>&rsquo;</dt>
+<dd><p>Number of the first sample that should be dropped.
+</p></dd>
+</dl>
+
+<p>&lsquo;<samp>start</samp>&rsquo;, &lsquo;<samp>end</samp>&rsquo;, &lsquo;<samp>duration</samp>&rsquo; are expressed as time
+duration specifications, check the &quot;Time duration&quot; section in the
+ffmpeg-utils manual.
+</p>
+<p>Note that the first two sets of the start/end options and the &lsquo;<samp>duration</samp>&rsquo;
+option look at the frame timestamp, while the _sample options simply count the
+samples that pass through the filter. So start/end_pts and start/end_sample will
+give different results when the timestamps are wrong, inexact or do not start at
+zero. Also note that this filter does not modify the timestamps. If you wish
+that the output timestamps start at zero, insert the asetpts filter after the
+atrim filter.
+</p>
+<p>If multiple start or end options are set, this filter tries to be greedy and
+keep all samples that match at least one of the specified constraints. To keep
+only the part that matches all the constraints at once, chain multiple atrim
+filters.
+</p>
+<p>The defaults are such that all the input is kept. So it is possible to set e.g.
+just the end values to keep everything before the specified time.
+</p>
+<p>Examples:
+</p><ul>
+<li>
+drop everything except the second minute of input
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -af atrim=60:120
+</pre></td></tr></table>
+
+</li><li>
+keep only the first 1000 samples
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -af atrim=end_sample=1000
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="bandpass"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-bandpass">32.22 bandpass</a></h2>
+
+<p>Apply a two-pole Butterworth band-pass filter with central
+frequency <var>frequency</var>, and (3dB-point) band-width width.
+The <var>csg</var> option selects a constant skirt gain (peak gain = Q)
+instead of the default: constant 0dB peak gain.
+The filter roll off at 6dB per octave (20dB per decade).
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set the filter&rsquo;s central frequency. Default is <code>3000</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>csg</samp>&rsquo;</dt>
+<dd><p>Constant skirt gain if set to 1. Defaults to 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>width_type</samp>&rsquo;</dt>
+<dd><p>Set method to specify band-width of filter.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Hz
+</p></dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Q-Factor
+</p></dd>
+<dt> &lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>octave
+</p></dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>slope
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dd><p>Specify the band-width of a filter in width_type units.
+</p></dd>
+</dl>
+
+<a name="bandreject"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-bandreject">32.23 bandreject</a></h2>
+
+<p>Apply a two-pole Butterworth band-reject filter with central
+frequency <var>frequency</var>, and (3dB-point) band-width <var>width</var>.
+The filter roll off at 6dB per octave (20dB per decade).
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set the filter&rsquo;s central frequency. Default is <code>3000</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>width_type</samp>&rsquo;</dt>
+<dd><p>Set method to specify band-width of filter.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Hz
+</p></dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Q-Factor
+</p></dd>
+<dt> &lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>octave
+</p></dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>slope
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dd><p>Specify the band-width of a filter in width_type units.
+</p></dd>
+</dl>
+
+<a name="bass"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-bass">32.24 bass</a></h2>
+
+<p>Boost or cut the bass (lower) frequencies of the audio using a two-pole
+shelving filter with a response similar to that of a standard
+hi-fi&rsquo;s tone-controls. This is also known as shelving equalisation (EQ).
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>gain, g</samp>&rsquo;</dt>
+<dd><p>Give the gain at 0 Hz. Its useful range is about -20
+(for a large cut) to +20 (for a large boost).
+Beware of clipping when using a positive gain.
+</p>
+</dd>
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set the filter&rsquo;s central frequency and so can be used
+to extend or reduce the frequency range to be boosted or cut.
+The default value is <code>100</code> Hz.
+</p>
+</dd>
+<dt> &lsquo;<samp>width_type</samp>&rsquo;</dt>
+<dd><p>Set method to specify band-width of filter.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Hz
+</p></dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Q-Factor
+</p></dd>
+<dt> &lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>octave
+</p></dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>slope
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dd><p>Determine how steep is the filter&rsquo;s shelf transition.
+</p></dd>
+</dl>
+
+<a name="biquad"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-biquad">32.25 biquad</a></h2>
+
+<p>Apply a biquad IIR filter with the given coefficients.
+Where <var>b0</var>, <var>b1</var>, <var>b2</var> and <var>a0</var>, <var>a1</var>, <var>a2</var>
+are the numerator and denominator coefficients respectively.
+</p>
+<a name="channelmap"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-channelmap">32.26 channelmap</a></h2>
+
+<p>Remap input channels to new locations.
+</p>
+<p>This filter accepts the following named parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>channel_layout</samp>&rsquo;</dt>
+<dd><p>Channel layout of the output stream.
+</p>
+</dd>
+<dt> &lsquo;<samp>map</samp>&rsquo;</dt>
+<dd><p>Map channels from input to output. The argument is a &rsquo;|&rsquo;-separated list of
+mappings, each in the <code><var>in_channel</var>-<var>out_channel</var></code> or
+<var>in_channel</var> form. <var>in_channel</var> can be either the name of the input
+channel (e.g. FL for front left) or its index in the input channel layout.
+<var>out_channel</var> is the name of the output channel or its index in the output
+channel layout. If <var>out_channel</var> is not given then it is implicitly an
+index, starting with zero and increasing by one for each mapping.
+</p></dd>
+</dl>
+
+<p>If no mapping is present, the filter will implicitly map input channels to
+output channels preserving index.
+</p>
+<p>For example, assuming a 5.1+downmix input MOV file
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.mov -filter 'channelmap=map=DL-FL|DR-FR' out.wav
+</pre></td></tr></table>
+<p>will create an output WAV file tagged as stereo from the downmix channels of
+the input.
+</p>
+<p>To fix a 5.1 WAV improperly encoded in AAC&rsquo;s native channel order
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.wav -filter 'channelmap=1|2|0|5|3|4:channel_layout=5.1' out.wav
+</pre></td></tr></table>
+
+<a name="channelsplit"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-channelsplit">32.27 channelsplit</a></h2>
+
+<p>Split each channel in input audio stream into a separate output stream.
+</p>
+<p>This filter accepts the following named parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>channel_layout</samp>&rsquo;</dt>
+<dd><p>Channel layout of the input stream. Default is &quot;stereo&quot;.
+</p></dd>
+</dl>
+
+<p>For example, assuming a stereo input MP3 file
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.mp3 -filter_complex channelsplit out.mkv
+</pre></td></tr></table>
+<p>will create an output Matroska file with two audio streams, one containing only
+the left channel and the other the right channel.
+</p>
+<p>To split a 5.1 WAV file into per-channel files
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.wav -filter_complex
+'channelsplit=channel_layout=5.1[FL][FR][FC][LFE][SL][SR]'
+-map '[FL]' front_left.wav -map '[FR]' front_right.wav -map '[FC]'
+front_center.wav -map '[LFE]' lfe.wav -map '[SL]' side_left.wav -map '[SR]'
+side_right.wav
+</pre></td></tr></table>
+
+<a name="compand"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-compand">32.28 compand</a></h2>
+
+<p>Compress or expand audio dynamic range.
+</p>
+<p>A description of the accepted options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>attacks</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>decays</samp>&rsquo;</dt>
+<dd><p>Set list of times in seconds for each channel over which the instantaneous
+level of the input signal is averaged to determine its volume.
+&lsquo;<samp>attacks</samp>&rsquo; refers to increase of volume and &lsquo;<samp>decays</samp>&rsquo; refers
+to decrease of volume.
+For most situations, the attack time (response to the audio getting louder)
+should be shorter than the decay time because the human ear is more sensitive
+to sudden loud audio than sudden soft audio.
+Typical value for attack is <code>0.3</code> seconds and for decay <code>0.8</code>
+seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>points</samp>&rsquo;</dt>
+<dd><p>Set list of points for transfer function, specified in dB relative to maximum
+possible signal amplitude.
+Each key points list need to be defined using the following syntax:
+<code>x0/y0 x1/y1 x2/y2 ...</code>.
+</p>
+<p>The input values must be in strictly increasing order but the transfer
+function does not have to be monotonically rising.
+The point <code>0/0</code> is assumed but may be overridden (by <code>0/out-dBn</code>).
+Typical values for the transfer function are <code>-70/-70 -60/-20</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>soft-knee</samp>&rsquo;</dt>
+<dd><p>Set amount for which the points at where adjacent line segments on the
+transfer function meet will be rounded. Defaults is <code>0.01</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>gain</samp>&rsquo;</dt>
+<dd><p>Set additional gain in dB to be applied at all points on the transfer function
+and allows easy adjustment of the overall gain.
+Default is <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>volume</samp>&rsquo;</dt>
+<dd><p>Set initial volume in dB to be assumed for each channel when filtering starts.
+This permits the user to supply a nominal level initially, so that,
+for example, a very large gain is not applied to initial signal levels before
+the companding has begun to operate. A typical value for audio which is
+initially quiet is -90 dB. Default is <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>delay</samp>&rsquo;</dt>
+<dd><p>Set delay in seconds. Default is <code>0</code>. The input audio
+is analysed immediately, but audio is delayed before being fed to the
+volume adjuster. Specifying a delay approximately equal to the attack/decay
+times allows the filter to effectively operate in predictive rather than
+reactive mode.
+</p></dd>
+</dl>
+
+<a name="Examples-18"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-18">32.28.1 Examples</a></h3>
+<ul>
+<li>
+Make music with both quiet and loud passages suitable for listening
+in a noisy environment:
+<table><tr><td>&nbsp;</td><td><pre class="example">compand=.3 .3:1 1:-90/-60 -60/-40 -40/-30 -20/-20:6:0:-90:0.2
+</pre></td></tr></table>
+
+</li><li>
+Noise-gate for when the noise is at a lower level than the signal:
+<table><tr><td>&nbsp;</td><td><pre class="example">compand=.1 .1:.2 .2:-900/-900 -50.1/-900 -50/-50:.01:0:-90:.1
+</pre></td></tr></table>
+
+</li><li>
+Here is another noise-gate, this time for when the noise is at a higher level
+than the signal (making it, in some ways, similar to squelch):
+<table><tr><td>&nbsp;</td><td><pre class="example">compand=.1 .1:.1 .1:-45.1/-45.1 -45/-900 0/-900:.01:45:-90:.1
+</pre></td></tr></table>
+</li></ul>
+
+<a name="earwax"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-earwax">32.29 earwax</a></h2>
+
+<p>Make audio easier to listen to on headphones.
+</p>
+<p>This filter adds &lsquo;cues&rsquo; to 44.1kHz stereo (i.e. audio CD format) audio
+so that when listened to on headphones the stereo image is moved from
+inside your head (standard for headphones) to outside and in front of
+the listener (standard for speakers).
+</p>
+<p>Ported from SoX.
+</p>
+<a name="equalizer"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-equalizer">32.30 equalizer</a></h2>
+
+<p>Apply a two-pole peaking equalisation (EQ) filter. With this
+filter, the signal-level at and around a selected frequency can
+be increased or decreased, whilst (unlike bandpass and bandreject
+filters) that at all other frequencies is unchanged.
+</p>
+<p>In order to produce complex equalisation curves, this filter can
+be given several times, each with a different central frequency.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set the filter&rsquo;s central frequency in Hz.
+</p>
+</dd>
+<dt> &lsquo;<samp>width_type</samp>&rsquo;</dt>
+<dd><p>Set method to specify band-width of filter.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Hz
+</p></dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Q-Factor
+</p></dd>
+<dt> &lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>octave
+</p></dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>slope
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dd><p>Specify the band-width of a filter in width_type units.
+</p>
+</dd>
+<dt> &lsquo;<samp>gain, g</samp>&rsquo;</dt>
+<dd><p>Set the required gain or attenuation in dB.
+Beware of clipping when using a positive gain.
+</p></dd>
+</dl>
+
+<a name="highpass"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-highpass">32.31 highpass</a></h2>
+
+<p>Apply a high-pass filter with 3dB point frequency.
+The filter can be either single-pole, or double-pole (the default).
+The filter roll off at 6dB per pole per octave (20dB per pole per decade).
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set frequency in Hz. Default is 3000.
+</p>
+</dd>
+<dt> &lsquo;<samp>poles, p</samp>&rsquo;</dt>
+<dd><p>Set number of poles. Default is 2.
+</p>
+</dd>
+<dt> &lsquo;<samp>width_type</samp>&rsquo;</dt>
+<dd><p>Set method to specify band-width of filter.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Hz
+</p></dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Q-Factor
+</p></dd>
+<dt> &lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>octave
+</p></dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>slope
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dd><p>Specify the band-width of a filter in width_type units.
+Applies only to double-pole filter.
+The default is 0.707q and gives a Butterworth response.
+</p></dd>
+</dl>
+
+<a name="join"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-join">32.32 join</a></h2>
+
+<p>Join multiple input streams into one multi-channel stream.
+</p>
+<p>The filter accepts the following named parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>inputs</samp>&rsquo;</dt>
+<dd><p>Number of input streams. Defaults to 2.
+</p>
+</dd>
+<dt> &lsquo;<samp>channel_layout</samp>&rsquo;</dt>
+<dd><p>Desired output channel layout. Defaults to stereo.
+</p>
+</dd>
+<dt> &lsquo;<samp>map</samp>&rsquo;</dt>
+<dd><p>Map channels from inputs to output. The argument is a &rsquo;|&rsquo;-separated list of
+mappings, each in the <code><var>input_idx</var>.<var>in_channel</var>-<var>out_channel</var></code>
+form. <var>input_idx</var> is the 0-based index of the input stream. <var>in_channel</var>
+can be either the name of the input channel (e.g. FL for front left) or its
+index in the specified input stream. <var>out_channel</var> is the name of the output
+channel.
+</p></dd>
+</dl>
+
+<p>The filter will attempt to guess the mappings when those are not specified
+explicitly. It does so by first trying to find an unused matching input channel
+and if that fails it picks the first unused input channel.
+</p>
+<p>E.g. to join 3 inputs (with properly set channel layouts)
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT1 -i INPUT2 -i INPUT3 -filter_complex join=inputs=3 OUTPUT
+</pre></td></tr></table>
+
+<p>To build a 5.1 output from 6 single-channel streams:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i fl -i fr -i fc -i sl -i sr -i lfe -filter_complex
+'join=inputs=6:channel_layout=5.1:map=0.0-FL|1.0-FR|2.0-FC|3.0-SL|4.0-SR|5.0-LFE'
+out
+</pre></td></tr></table>
+
+<a name="ladspa"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-ladspa">32.33 ladspa</a></h2>
+
+<p>Load a LADSPA (Linux Audio Developer&rsquo;s Simple Plugin API) plugin.
+</p>
+<p>To enable compilation of this filter you need to configure FFmpeg with
+<code>--enable-ladspa</code>.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>file, f</samp>&rsquo;</dt>
+<dd><p>Specifies the name of LADSPA plugin library to load. If the environment
+variable <code>LADSPA_PATH</code> is defined, the LADSPA plugin is searched in
+each one of the directories specified by the colon separated list in
+<code>LADSPA_PATH</code>, otherwise in the standard LADSPA paths, which are in
+this order: &lsquo;<tt>HOME/.ladspa/lib/</tt>&rsquo;, &lsquo;<tt>/usr/local/lib/ladspa/</tt>&rsquo;,
+&lsquo;<tt>/usr/lib/ladspa/</tt>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>plugin, p</samp>&rsquo;</dt>
+<dd><p>Specifies the plugin within the library. Some libraries contain only
+one plugin, but others contain many of them. If this is not set filter
+will list all available plugins within the specified library.
+</p>
+</dd>
+<dt> &lsquo;<samp>controls, c</samp>&rsquo;</dt>
+<dd><p>Set the &rsquo;|&rsquo; separated list of controls which are zero or more floating point
+values that determine the behavior of the loaded plugin (for example delay,
+threshold or gain).
+Controls need to be defined using the following syntax:
+c0=<var>value0</var>|c1=<var>value1</var>|c2=<var>value2</var>|..., where
+<var>valuei</var> is the value set on the <var>i</var>-th control.
+If &lsquo;<samp>controls</samp>&rsquo; is set to <code>help</code>, all available controls and
+their valid ranges are printed.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate, s</samp>&rsquo;</dt>
+<dd><p>Specify the sample rate, default to 44100. Only used if plugin have
+zero inputs.
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_samples, n</samp>&rsquo;</dt>
+<dd><p>Set the number of samples per channel per each output frame, default
+is 1024. Only used if plugin have zero inputs.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
+<dd><p>Set the minimum duration of the sourced audio. See the function
+<code>av_parse_time()</code> for the accepted format, also check the &quot;Time duration&quot;
+section in the ffmpeg-utils manual.
+Note that the resulting duration may be greater than the specified duration,
+as the generated audio is always cut at the end of a complete frame.
+If not specified, or the expressed duration is negative, the audio is
+supposed to be generated forever.
+Only used if plugin have zero inputs.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-32"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-32">32.33.1 Examples</a></h3>
+
+<ul>
+<li>
+List all available plugins within amp (LADSPA example plugin) library:
+<table><tr><td>&nbsp;</td><td><pre class="example">ladspa=file=amp
+</pre></td></tr></table>
+
+</li><li>
+List all available controls and their valid ranges for <code>vcf_notch</code>
+plugin from <code>VCF</code> library:
+<table><tr><td>&nbsp;</td><td><pre class="example">ladspa=f=vcf:p=vcf_notch:c=help
+</pre></td></tr></table>
+
+</li><li>
+Simulate low quality audio equipment using <code>Computer Music Toolkit</code> (CMT)
+plugin library:
+<table><tr><td>&nbsp;</td><td><pre class="example">ladspa=file=cmt:plugin=lofi:controls=c0=22|c1=12|c2=12
+</pre></td></tr></table>
+
+</li><li>
+Add reverberation to the audio using TAP-plugins
+(Tom&rsquo;s Audio Processing plugins):
+<table><tr><td>&nbsp;</td><td><pre class="example">ladspa=file=tap_reverb:tap_reverb
+</pre></td></tr></table>
+
+</li><li>
+Generate white noise, with 0.2 amplitude:
+<table><tr><td>&nbsp;</td><td><pre class="example">ladspa=file=cmt:noise_source_white:c=c0=.2
+</pre></td></tr></table>
+
+</li><li>
+Generate 20 bpm clicks using plugin <code>C* Click - Metronome</code> from the
+<code>C* Audio Plugin Suite</code> (CAPS) library:
+<table><tr><td>&nbsp;</td><td><pre class="example">ladspa=file=caps:Click:c=c1=20'
+</pre></td></tr></table>
+
+</li><li>
+Apply <code>C* Eq10X2 - Stereo 10-band equaliser</code> effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">ladspa=caps:Eq10X2:c=c0=-48|c9=-24|c3=12|c4=2
+</pre></td></tr></table>
+</li></ul>
+
+<a name="Commands"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Commands">32.33.2 Commands</a></h3>
+
+<p>This filter supports the following commands:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>cN</samp>&rsquo;</dt>
+<dd><p>Modify the <var>N</var>-th control value.
+</p>
+<p>If the specified value is not valid, it is ignored and prior one is kept.
+</p></dd>
+</dl>
+
+<a name="lowpass"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-lowpass">32.34 lowpass</a></h2>
+
+<p>Apply a low-pass filter with 3dB point frequency.
+The filter can be either single-pole or double-pole (the default).
+The filter roll off at 6dB per pole per octave (20dB per pole per decade).
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set frequency in Hz. Default is 500.
+</p>
+</dd>
+<dt> &lsquo;<samp>poles, p</samp>&rsquo;</dt>
+<dd><p>Set number of poles. Default is 2.
+</p>
+</dd>
+<dt> &lsquo;<samp>width_type</samp>&rsquo;</dt>
+<dd><p>Set method to specify band-width of filter.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Hz
+</p></dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Q-Factor
+</p></dd>
+<dt> &lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>octave
+</p></dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>slope
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dd><p>Specify the band-width of a filter in width_type units.
+Applies only to double-pole filter.
+The default is 0.707q and gives a Butterworth response.
+</p></dd>
+</dl>
+
+<a name="pan"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-pan">32.35 pan</a></h2>
+
+<p>Mix channels with specific gain levels. The filter accepts the output
+channel layout followed by a set of channels definitions.
+</p>
+<p>This filter is also designed to remap efficiently the channels of an audio
+stream.
+</p>
+<p>The filter accepts parameters of the form:
+&quot;<var>l</var>:<var>outdef</var>:<var>outdef</var>:...&quot;
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>l</samp>&rsquo;</dt>
+<dd><p>output channel layout or number of channels
+</p>
+</dd>
+<dt> &lsquo;<samp>outdef</samp>&rsquo;</dt>
+<dd><p>output channel specification, of the form:
+&quot;<var>out_name</var>=[<var>gain</var>*]<var>in_name</var>[+[<var>gain</var>*]<var>in_name</var>...]&quot;
+</p>
+</dd>
+<dt> &lsquo;<samp>out_name</samp>&rsquo;</dt>
+<dd><p>output channel to define, either a channel name (FL, FR, etc.) or a channel
+number (c0, c1, etc.)
+</p>
+</dd>
+<dt> &lsquo;<samp>gain</samp>&rsquo;</dt>
+<dd><p>multiplicative coefficient for the channel, 1 leaving the volume unchanged
+</p>
+</dd>
+<dt> &lsquo;<samp>in_name</samp>&rsquo;</dt>
+<dd><p>input channel to use, see out_name for details; it is not possible to mix
+named and numbered input channels
+</p></dd>
+</dl>
+
+<p>If the &lsquo;=&rsquo; in a channel specification is replaced by &lsquo;&lt;&rsquo;, then the gains for
+that specification will be renormalized so that the total is 1, thus
+avoiding clipping noise.
+</p>
+<a name="Mixing-examples"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Mixing-examples">32.35.1 Mixing examples</a></h3>
+
+<p>For example, if you want to down-mix from stereo to mono, but with a bigger
+factor for the left channel:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pan=1:c0=0.9*c0+0.1*c1
+</pre></td></tr></table>
+
+<p>A customized down-mix to stereo that works automatically for 3-, 4-, 5- and
+7-channels surround:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pan=stereo: FL &lt; FL + 0.5*FC + 0.6*BL + 0.6*SL : FR &lt; FR + 0.5*FC + 0.6*BR + 0.6*SR
+</pre></td></tr></table>
+
+<p>Note that <code>ffmpeg</code> integrates a default down-mix (and up-mix) system
+that should be preferred (see &quot;-ac&quot; option) unless you have very specific
+needs.
+</p>
+<a name="Remapping-examples"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Remapping-examples">32.35.2 Remapping examples</a></h3>
+
+<p>The channel remapping will be effective if, and only if:
+</p>
+<ul>
+<li> gain coefficients are zeroes or ones,
+</li><li> only one input per channel output,
+</li></ul>
+
+<p>If all these conditions are satisfied, the filter will notify the user (&quot;Pure
+channel mapping detected&quot;), and use an optimized and lossless method to do the
+remapping.
+</p>
+<p>For example, if you have a 5.1 source and want a stereo audio stream by
+dropping the extra channels:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pan=&quot;stereo: c0=FL : c1=FR&quot;
+</pre></td></tr></table>
+
+<p>Given the same source, you can also switch front left and front right channels
+and keep the input channel layout:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pan=&quot;5.1: c0=c1 : c1=c0 : c2=c2 : c3=c3 : c4=c4 : c5=c5&quot;
+</pre></td></tr></table>
+
+<p>If the input is a stereo audio stream, you can mute the front left channel (and
+still keep the stereo channel layout) with:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pan=&quot;stereo:c1=c1&quot;
+</pre></td></tr></table>
+
+<p>Still with a stereo audio stream input, you can copy the right channel in both
+front left and right:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pan=&quot;stereo: c0=FR : c1=FR&quot;
+</pre></td></tr></table>
+
+<a name="replaygain"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-replaygain">32.36 replaygain</a></h2>
+
+<p>ReplayGain scanner filter. This filter takes an audio stream as an input and
+outputs it unchanged.
+At end of filtering it displays <code>track_gain</code> and <code>track_peak</code>.
+</p>
+<a name="resample"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-resample">32.37 resample</a></h2>
+
+<p>Convert the audio sample format, sample rate and channel layout. This filter is
+not meant to be used directly.
+</p>
+<a name="silencedetect"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-silencedetect">32.38 silencedetect</a></h2>
+
+<p>Detect silence in an audio stream.
+</p>
+<p>This filter logs a message when it detects that the input audio volume is less
+or equal to a noise tolerance value for a duration greater or equal to the
+minimum detected noise duration.
+</p>
+<p>The printed times and duration are expressed in seconds.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
+<dd><p>Set silence duration until notification (default is 2 seconds).
+</p>
+</dd>
+<dt> &lsquo;<samp>noise, n</samp>&rsquo;</dt>
+<dd><p>Set noise tolerance. Can be specified in dB (in case &quot;dB&quot; is appended to the
+specified value) or amplitude ratio. Default is -60dB, or 0.001.
+</p></dd>
+</dl>
+
+<a name="Examples-46"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-46">32.38.1 Examples</a></h3>
+
+<ul>
+<li>
+Detect 5 seconds of silence with -50dB noise tolerance:
+<table><tr><td>&nbsp;</td><td><pre class="example">silencedetect=n=-50dB:d=5
+</pre></td></tr></table>
+
+</li><li>
+Complete example with <code>ffmpeg</code> to detect silence with 0.0001 noise
+tolerance in &lsquo;<tt>silence.mp3</tt>&rsquo;:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i silence.mp3 -af silencedetect=noise=0.0001 -f null -
+</pre></td></tr></table>
+</li></ul>
+
+<a name="treble"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-treble">32.39 treble</a></h2>
+
+<p>Boost or cut treble (upper) frequencies of the audio using a two-pole
+shelving filter with a response similar to that of a standard
+hi-fi&rsquo;s tone-controls. This is also known as shelving equalisation (EQ).
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>gain, g</samp>&rsquo;</dt>
+<dd><p>Give the gain at whichever is the lower of ~22 kHz and the
+Nyquist frequency. Its useful range is about -20 (for a large cut)
+to +20 (for a large boost). Beware of clipping when using a positive gain.
+</p>
+</dd>
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set the filter&rsquo;s central frequency and so can be used
+to extend or reduce the frequency range to be boosted or cut.
+The default value is <code>3000</code> Hz.
+</p>
+</dd>
+<dt> &lsquo;<samp>width_type</samp>&rsquo;</dt>
+<dd><p>Set method to specify band-width of filter.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Hz
+</p></dd>
+<dt> &lsquo;<samp>q</samp>&rsquo;</dt>
+<dd><p>Q-Factor
+</p></dd>
+<dt> &lsquo;<samp>o</samp>&rsquo;</dt>
+<dd><p>octave
+</p></dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>slope
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dd><p>Determine how steep is the filter&rsquo;s shelf transition.
+</p></dd>
+</dl>
+
+<a name="volume"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-volume">32.40 volume</a></h2>
+
+<p>Adjust the input audio volume.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>volume</samp>&rsquo;</dt>
+<dd><p>Expresses how the audio volume will be increased or decreased.
+</p>
+<p>Output values are clipped to the maximum value.
+</p>
+<p>The output audio volume is given by the relation:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>output_volume</var> = <var>volume</var> * <var>input_volume</var>
+</pre></td></tr></table>
+
+<p>Default value for <var>volume</var> is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>precision</samp>&rsquo;</dt>
+<dd><p>Set the mathematical precision.
+</p>
+<p>This determines which input sample formats will be allowed, which affects the
+precision of the volume scaling.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>fixed</samp>&rsquo;</dt>
+<dd><p>8-bit fixed-point; limits input sample format to U8, S16, and S32.
+</p></dd>
+<dt> &lsquo;<samp>float</samp>&rsquo;</dt>
+<dd><p>32-bit floating-point; limits input sample format to FLT. (default)
+</p></dd>
+<dt> &lsquo;<samp>double</samp>&rsquo;</dt>
+<dd><p>64-bit floating-point; limits input sample format to DBL.
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<a name="Examples-10"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-10">32.40.1 Examples</a></h3>
+
+<ul>
+<li>
+Halve the input audio volume:
+<table><tr><td>&nbsp;</td><td><pre class="example">volume=volume=0.5
+volume=volume=1/2
+volume=volume=-6.0206dB
+</pre></td></tr></table>
+
+<p>In all the above example the named key for &lsquo;<samp>volume</samp>&rsquo; can be
+omitted, for example like in:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">volume=0.5
+</pre></td></tr></table>
+
+</li><li>
+Increase input audio power by 6 decibels using fixed-point precision:
+<table><tr><td>&nbsp;</td><td><pre class="example">volume=volume=6dB:precision=fixed
+</pre></td></tr></table>
+</li></ul>
+
+<a name="volumedetect"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-volumedetect">32.41 volumedetect</a></h2>
+
+<p>Detect the volume of the input video.
+</p>
+<p>The filter has no parameters. The input is not modified. Statistics about
+the volume will be printed in the log when the input stream end is reached.
+</p>
+<p>In particular it will show the mean volume (root mean square), maximum
+volume (on a per-sample basis), and the beginning of a histogram of the
+registered volume values (from the maximum value to a cumulated 1/1000 of
+the samples).
+</p>
+<p>All volumes are in decibels relative to the maximum PCM value.
+</p>
+<a name="Examples-22"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-22">32.41.1 Examples</a></h3>
+
+<p>Here is an excerpt of the output:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[Parsed_volumedetect_0 &nbsp;0xa23120] mean_volume: -27 dB
+[Parsed_volumedetect_0 &nbsp;0xa23120] max_volume: -4 dB
+[Parsed_volumedetect_0 &nbsp;0xa23120] histogram_4db: 6
+[Parsed_volumedetect_0 &nbsp;0xa23120] histogram_5db: 62
+[Parsed_volumedetect_0 &nbsp;0xa23120] histogram_6db: 286
+[Parsed_volumedetect_0 &nbsp;0xa23120] histogram_7db: 1042
+[Parsed_volumedetect_0 &nbsp;0xa23120] histogram_8db: 2551
+[Parsed_volumedetect_0 &nbsp;0xa23120] histogram_9db: 4609
+[Parsed_volumedetect_0 &nbsp;0xa23120] histogram_10db: 8409
+</pre></td></tr></table>
+
+<p>It means that:
+</p><ul>
+<li>
+The mean square energy is approximately -27 dB, or 10^-2.7.
+</li><li>
+The largest sample is at -4 dB, or more precisely between -4 dB and -5 dB.
+</li><li>
+There are 6 samples at -4 dB, 62 at -5 dB, 286 at -6 dB, etc.
+</li></ul>
+
+<p>In other words, raising the volume by +4 dB does not cause any clipping,
+raising it by +5 dB causes clipping for 6 samples, etc.
+</p>
+
+<a name="Audio-Sources"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Audio-Sources">33. Audio Sources</a></h1>
+
+<p>Below is a description of the currently available audio sources.
+</p>
+<a name="abuffer"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-abuffer">33.1 abuffer</a></h2>
+
+<p>Buffer audio frames, and make them available to the filter chain.
+</p>
+<p>This source is mainly intended for a programmatic use, in particular
+through the interface defined in &lsquo;<tt>libavfilter/asrc_abuffer.h</tt>&rsquo;.
+</p>
+<p>It accepts the following named parameters:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>time_base</samp>&rsquo;</dt>
+<dd><p>Timebase which will be used for timestamps of submitted frames. It must be
+either a floating-point number or in <var>numerator</var>/<var>denominator</var> form.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate</samp>&rsquo;</dt>
+<dd><p>The sample rate of the incoming audio buffers.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_fmt</samp>&rsquo;</dt>
+<dd><p>The sample format of the incoming audio buffers.
+Either a sample format name or its corresponging integer representation from
+the enum AVSampleFormat in &lsquo;<tt>libavutil/samplefmt.h</tt>&rsquo;
+</p>
+</dd>
+<dt> &lsquo;<samp>channel_layout</samp>&rsquo;</dt>
+<dd><p>The channel layout of the incoming audio buffers.
+Either a channel layout name from channel_layout_map in
+&lsquo;<tt>libavutil/channel_layout.c</tt>&rsquo; or its corresponding integer representation
+from the AV_CH_LAYOUT_* macros in &lsquo;<tt>libavutil/channel_layout.h</tt>&rsquo;
+</p>
+</dd>
+<dt> &lsquo;<samp>channels</samp>&rsquo;</dt>
+<dd><p>The number of channels of the incoming audio buffers.
+If both <var>channels</var> and <var>channel_layout</var> are specified, then they
+must be consistent.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-40"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-40">33.1.1 Examples</a></h3>
+
+<table><tr><td>&nbsp;</td><td><pre class="example">abuffer=sample_rate=44100:sample_fmt=s16p:channel_layout=stereo
+</pre></td></tr></table>
+
+<p>will instruct the source to accept planar 16bit signed stereo at 44100Hz.
+Since the sample format with name &quot;s16p&quot; corresponds to the number
+6 and the &quot;stereo&quot; channel layout corresponds to the value 0x3, this is
+equivalent to:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">abuffer=sample_rate=44100:sample_fmt=6:channel_layout=0x3
+</pre></td></tr></table>
+
+<a name="aevalsrc"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-aevalsrc">33.2 aevalsrc</a></h2>
+
+<p>Generate an audio signal specified by an expression.
+</p>
+<p>This source accepts in input one or more expressions (one for each
+channel), which are evaluated and used to generate a corresponding
+audio signal.
+</p>
+<p>This source accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>exprs</samp>&rsquo;</dt>
+<dd><p>Set the &rsquo;|&rsquo;-separated expressions list for each separate channel. In case the
+&lsquo;<samp>channel_layout</samp>&rsquo; option is not specified, the selected channel layout
+depends on the number of provided expressions. Otherwise the last
+specified expression is applied to the remaining output channels.
+</p>
+</dd>
+<dt> &lsquo;<samp>channel_layout, c</samp>&rsquo;</dt>
+<dd><p>Set the channel layout. The number of channels in the specified layout
+must be equal to the number of specified expressions.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
+<dd><p>Set the minimum duration of the sourced audio. See the function
+<code>av_parse_time()</code> for the accepted format.
+Note that the resulting duration may be greater than the specified
+duration, as the generated audio is always cut at the end of a
+complete frame.
+</p>
+<p>If not specified, or the expressed duration is negative, the audio is
+supposed to be generated forever.
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_samples, n</samp>&rsquo;</dt>
+<dd><p>Set the number of samples per channel per each output frame,
+default to 1024.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate, s</samp>&rsquo;</dt>
+<dd><p>Specify the sample rate, default to 44100.
+</p></dd>
+</dl>
+
+<p>Each expression in <var>exprs</var> can contain the following constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>number of the evaluated sample, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>time of the evaluated sample expressed in seconds, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>sample rate
+</p>
+</dd>
+</dl>
+
+<a name="Examples-55"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-55">33.2.1 Examples</a></h3>
+
+<ul>
+<li>
+Generate silence:
+<table><tr><td>&nbsp;</td><td><pre class="example">aevalsrc=0
+</pre></td></tr></table>
+
+</li><li>
+Generate a sin signal with frequency of 440 Hz, set sample rate to
+8000 Hz:
+<table><tr><td>&nbsp;</td><td><pre class="example">aevalsrc=&quot;sin(440*2*PI*t):s=8000&quot;
+</pre></td></tr></table>
+
+</li><li>
+Generate a two channels signal, specify the channel layout (Front
+Center + Back Center) explicitly:
+<table><tr><td>&nbsp;</td><td><pre class="example">aevalsrc=&quot;sin(420*2*PI*t)|cos(430*2*PI*t):c=FC|BC&quot;
+</pre></td></tr></table>
+
+</li><li>
+Generate white noise:
+<table><tr><td>&nbsp;</td><td><pre class="example">aevalsrc=&quot;-2+random(0)&quot;
+</pre></td></tr></table>
+
+</li><li>
+Generate an amplitude modulated signal:
+<table><tr><td>&nbsp;</td><td><pre class="example">aevalsrc=&quot;sin(10*2*PI*t)*sin(880*2*PI*t)&quot;
+</pre></td></tr></table>
+
+</li><li>
+Generate 2.5 Hz binaural beats on a 360 Hz carrier:
+<table><tr><td>&nbsp;</td><td><pre class="example">aevalsrc=&quot;0.1*sin(2*PI*(360-2.5/2)*t) | 0.1*sin(2*PI*(360+2.5/2)*t)&quot;
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="anullsrc"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-anullsrc">33.3 anullsrc</a></h2>
+
+<p>Null audio source, return unprocessed audio frames. It is mainly useful
+as a template and to be employed in analysis / debugging tools, or as
+the source for filters which ignore the input data (for example the sox
+synth filter).
+</p>
+<p>This source accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>channel_layout, cl</samp>&rsquo;</dt>
+<dd>
+<p>Specify the channel layout, and can be either an integer or a string
+representing a channel layout. The default value of <var>channel_layout</var>
+is &quot;stereo&quot;.
+</p>
+<p>Check the channel_layout_map definition in
+&lsquo;<tt>libavutil/channel_layout.c</tt>&rsquo; for the mapping between strings and
+channel layout values.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate, r</samp>&rsquo;</dt>
+<dd><p>Specify the sample rate, and defaults to 44100.
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_samples, n</samp>&rsquo;</dt>
+<dd><p>Set the number of samples per requested frames.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-54"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-54">33.3.1 Examples</a></h3>
+
+<ul>
+<li>
+Set the sample rate to 48000 Hz and the channel layout to AV_CH_LAYOUT_MONO.
+<table><tr><td>&nbsp;</td><td><pre class="example">anullsrc=r=48000:cl=4
+</pre></td></tr></table>
+
+</li><li>
+Do the same operation with a more obvious syntax:
+<table><tr><td>&nbsp;</td><td><pre class="example">anullsrc=r=48000:cl=mono
+</pre></td></tr></table>
+</li></ul>
+
+<p>All the parameters need to be explicitly defined.
+</p>
+<a name="flite"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-flite">33.4 flite</a></h2>
+
+<p>Synthesize a voice utterance using the libflite library.
+</p>
+<p>To enable compilation of this filter you need to configure FFmpeg with
+<code>--enable-libflite</code>.
+</p>
+<p>Note that the flite library is not thread-safe.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>list_voices</samp>&rsquo;</dt>
+<dd><p>If set to 1, list the names of the available voices and exit
+immediately. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_samples, n</samp>&rsquo;</dt>
+<dd><p>Set the maximum number of samples per frame. Default value is 512.
+</p>
+</dd>
+<dt> &lsquo;<samp>textfile</samp>&rsquo;</dt>
+<dd><p>Set the filename containing the text to speak.
+</p>
+</dd>
+<dt> &lsquo;<samp>text</samp>&rsquo;</dt>
+<dd><p>Set the text to speak.
+</p>
+</dd>
+<dt> &lsquo;<samp>voice, v</samp>&rsquo;</dt>
+<dd><p>Set the voice to use for the speech synthesis. Default value is
+<code>kal</code>. See also the <var>list_voices</var> option.
+</p></dd>
+</dl>
+
+<a name="Examples-56"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-56">33.4.1 Examples</a></h3>
+
+<ul>
+<li>
+Read from file &lsquo;<tt>speech.txt</tt>&rsquo;, and synthetize the text using the
+standard flite voice:
+<table><tr><td>&nbsp;</td><td><pre class="example">flite=textfile=speech.txt
+</pre></td></tr></table>
+
+</li><li>
+Read the specified text selecting the <code>slt</code> voice:
+<table><tr><td>&nbsp;</td><td><pre class="example">flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
+</pre></td></tr></table>
+
+</li><li>
+Input text to ffmpeg:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f lavfi -i flite=text='So fare thee well, poor devil of a Sub-Sub, whose commentator I am':voice=slt
+</pre></td></tr></table>
+
+</li><li>
+Make &lsquo;<tt>ffplay</tt>&rsquo; speak the specified text, using <code>flite</code> and
+the <code>lavfi</code> device:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi flite=text='No more be grieved for which that thou hast done.'
+</pre></td></tr></table>
+</li></ul>
+
+<p>For more information about libflite, check:
+<a href="http://www.speech.cs.cmu.edu/flite/">http://www.speech.cs.cmu.edu/flite/</a>
+</p>
+<a name="sine"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-sine">33.5 sine</a></h2>
+
+<p>Generate an audio signal made of a sine wave with amplitude 1/8.
+</p>
+<p>The audio signal is bit-exact.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>frequency, f</samp>&rsquo;</dt>
+<dd><p>Set the carrier frequency. Default is 440 Hz.
+</p>
+</dd>
+<dt> &lsquo;<samp>beep_factor, b</samp>&rsquo;</dt>
+<dd><p>Enable a periodic beep every second with frequency <var>beep_factor</var> times
+the carrier frequency. Default is 0, meaning the beep is disabled.
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate, r</samp>&rsquo;</dt>
+<dd><p>Specify the sample rate, default is 44100.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
+<dd><p>Specify the duration of the generated audio stream.
+</p>
+</dd>
+<dt> &lsquo;<samp>samples_per_frame</samp>&rsquo;</dt>
+<dd><p>Set the number of samples per output frame, default is 1024.
+</p></dd>
+</dl>
+
+<a name="Examples-26"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-26">33.5.1 Examples</a></h3>
+
+<ul>
+<li>
+Generate a simple 440 Hz sine wave:
+<table><tr><td>&nbsp;</td><td><pre class="example">sine
+</pre></td></tr></table>
+
+</li><li>
+Generate a 220 Hz sine wave with a 880 Hz beep each second, for 5 seconds:
+<table><tr><td>&nbsp;</td><td><pre class="example">sine=220:4:d=5
+sine=f=220:b=4:d=5
+sine=frequency=220:beep_factor=4:duration=5
+</pre></td></tr></table>
+
+</li></ul>
+
+
+<a name="Audio-Sinks"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Audio-Sinks">34. Audio Sinks</a></h1>
+
+<p>Below is a description of the currently available audio sinks.
+</p>
+<a name="abuffersink"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-abuffersink">34.1 abuffersink</a></h2>
+
+<p>Buffer audio frames, and make them available to the end of filter chain.
+</p>
+<p>This sink is mainly intended for programmatic use, in particular
+through the interface defined in &lsquo;<tt>libavfilter/buffersink.h</tt>&rsquo;
+or the options system.
+</p>
+<p>It accepts a pointer to an AVABufferSinkContext structure, which
+defines the incoming buffers&rsquo; formats, to be passed as the opaque
+parameter to <code>avfilter_init_filter</code> for initialization.
+</p>
+<a name="anullsink"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-anullsink">34.2 anullsink</a></h2>
+
+<p>Null audio sink, do absolutely nothing with the input audio. It is
+mainly useful as a template and to be employed in analysis / debugging
+tools.
+</p>
+
+<a name="Video-Filters"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Video-Filters">35. Video Filters</a></h1>
+
+<p>When you configure your FFmpeg build, you can disable any of the
+existing filters using <code>--disable-filters</code>.
+The configure output will show the video filters included in your
+build.
+</p>
+<p>Below is a description of the currently available video filters.
+</p>
+<a name="alphaextract"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-alphaextract">35.1 alphaextract</a></h2>
+
+<p>Extract the alpha component from the input as a grayscale video. This
+is especially useful with the <var>alphamerge</var> filter.
+</p>
+<a name="alphamerge"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-alphamerge">35.2 alphamerge</a></h2>
+
+<p>Add or replace the alpha component of the primary input with the
+grayscale value of a second input. This is intended for use with
+<var>alphaextract</var> to allow the transmission or storage of frame
+sequences that have alpha in a format that doesn&rsquo;t support an alpha
+channel.
+</p>
+<p>For example, to reconstruct full frames from a normal YUV-encoded video
+and a separate video created with <var>alphaextract</var>, you might use:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">movie=in_alpha.mkv [alpha]; [in][alpha] alphamerge [out]
+</pre></td></tr></table>
+
+<p>Since this filter is designed for reconstruction, it operates on frame
+sequences without considering timestamps, and terminates when either
+input reaches end of stream. This will cause problems if your encoding
+pipeline drops frames. If you&rsquo;re trying to apply an image as an
+overlay to a video stream, consider the <var>overlay</var> filter instead.
+</p>
+<a name="ass"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-ass">35.3 ass</a></h2>
+
+<p>Same as the <a href="#subtitles">subtitles</a> filter, except that it doesn&rsquo;t require libavcodec
+and libavformat to work. On the other hand, it is limited to ASS (Advanced
+Substation Alpha) subtitles files.
+</p>
+<a name="bbox"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-bbox">35.4 bbox</a></h2>
+
+<p>Compute the bounding box for the non-black pixels in the input frame
+luminance plane.
+</p>
+<p>This filter computes the bounding box containing all the pixels with a
+luminance value greater than the minimum allowed value.
+The parameters describing the bounding box are printed on the filter
+log.
+</p>
+<p>The filter accepts the following option:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>min_val</samp>&rsquo;</dt>
+<dd><p>Set the minimal luminance value. Default is <code>16</code>.
+</p></dd>
+</dl>
+
+<a name="blackdetect"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-blackdetect">35.5 blackdetect</a></h2>
+
+<p>Detect video intervals that are (almost) completely black. Can be
+useful to detect chapter transitions, commercials, or invalid
+recordings. Output lines contains the time for the start, end and
+duration of the detected black interval expressed in seconds.
+</p>
+<p>In order to display the output lines, you need to set the loglevel at
+least to the AV_LOG_INFO value.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>black_min_duration, d</samp>&rsquo;</dt>
+<dd><p>Set the minimum detected black duration expressed in seconds. It must
+be a non-negative floating point number.
+</p>
+<p>Default value is 2.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>picture_black_ratio_th, pic_th</samp>&rsquo;</dt>
+<dd><p>Set the threshold for considering a picture &quot;black&quot;.
+Express the minimum value for the ratio:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>nb_black_pixels</var> / <var>nb_pixels</var>
+</pre></td></tr></table>
+
+<p>for which a picture is considered black.
+Default value is 0.98.
+</p>
+</dd>
+<dt> &lsquo;<samp>pixel_black_th, pix_th</samp>&rsquo;</dt>
+<dd><p>Set the threshold for considering a pixel &quot;black&quot;.
+</p>
+<p>The threshold expresses the maximum pixel luminance value for which a
+pixel is considered &quot;black&quot;. The provided value is scaled according to
+the following equation:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>absolute_threshold</var> = <var>luminance_minimum_value</var> + <var>pixel_black_th</var> * <var>luminance_range_size</var>
+</pre></td></tr></table>
+
+<p><var>luminance_range_size</var> and <var>luminance_minimum_value</var> depend on
+the input video format, the range is [0-255] for YUV full-range
+formats and [16-235] for YUV non full-range formats.
+</p>
+<p>Default value is 0.10.
+</p></dd>
+</dl>
+
+<p>The following example sets the maximum pixel threshold to the minimum
+value, and detects only black intervals of 2 or more seconds:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">blackdetect=d=2:pix_th=0.00
+</pre></td></tr></table>
+
+<a name="blackframe"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-blackframe">35.6 blackframe</a></h2>
+
+<p>Detect frames that are (almost) completely black. Can be useful to
+detect chapter transitions or commercials. Output lines consist of
+the frame number of the detected frame, the percentage of blackness,
+the position in the file if known or -1 and the timestamp in seconds.
+</p>
+<p>In order to display the output lines, you need to set the loglevel at
+least to the AV_LOG_INFO value.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>amount</samp>&rsquo;</dt>
+<dd><p>Set the percentage of the pixels that have to be below the threshold, defaults
+to <code>98</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>threshold, thresh</samp>&rsquo;</dt>
+<dd><p>Set the threshold below which a pixel value is considered black, defaults to
+<code>32</code>.
+</p>
+</dd>
+</dl>
+
+<a name="blend"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-blend">35.7 blend</a></h2>
+
+<p>Blend two video frames into each other.
+</p>
+<p>It takes two input streams and outputs one stream, the first input is the
+&quot;top&quot; layer and second input is &quot;bottom&quot; layer.
+Output terminates when shortest input terminates.
+</p>
+<p>A description of the accepted options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>c0_mode</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c1_mode</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c2_mode</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c3_mode</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>all_mode</samp>&rsquo;</dt>
+<dd><p>Set blend mode for specific pixel component or all pixel components in case
+of <var>all_mode</var>. Default value is <code>normal</code>.
+</p>
+<p>Available values for component modes are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>addition</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>and</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>average</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>burn</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>darken</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>difference</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>divide</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dodge</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>exclusion</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>hardlight</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>lighten</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>multiply</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>negation</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>normal</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>or</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>overlay</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>phoenix</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>pinlight</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>reflect</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>screen</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>softlight</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>subtract</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vividlight</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>xor</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>c0_opacity</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c1_opacity</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c2_opacity</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c3_opacity</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>all_opacity</samp>&rsquo;</dt>
+<dd><p>Set blend opacity for specific pixel component or all pixel components in case
+of <var>all_opacity</var>. Only used in combination with pixel component blend modes.
+</p>
+</dd>
+<dt> &lsquo;<samp>c0_expr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c1_expr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c2_expr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c3_expr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>all_expr</samp>&rsquo;</dt>
+<dd><p>Set blend expression for specific pixel component or all pixel components in case
+of <var>all_expr</var>. Note that related mode options will be ignored if those are set.
+</p>
+<p>The expressions can use the following variables:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>N</samp>&rsquo;</dt>
+<dd><p>The sequential number of the filtered frame, starting from <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>X</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>Y</samp>&rsquo;</dt>
+<dd><p>the coordinates of the current sample
+</p>
+</dd>
+<dt> &lsquo;<samp>W</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>H</samp>&rsquo;</dt>
+<dd><p>the width and height of currently filtered plane
+</p>
+</dd>
+<dt> &lsquo;<samp>SW</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>SH</samp>&rsquo;</dt>
+<dd><p>Width and height scale depending on the currently filtered plane. It is the
+ratio between the corresponding luma plane number of pixels and the current
+plane ones. E.g. for YUV4:2:0 the values are <code>1,1</code> for the luma plane, and
+<code>0.5,0.5</code> for chroma planes.
+</p>
+</dd>
+<dt> &lsquo;<samp>T</samp>&rsquo;</dt>
+<dd><p>Time of the current frame, expressed in seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>TOP, A</samp>&rsquo;</dt>
+<dd><p>Value of pixel component at current location for first video frame (top layer).
+</p>
+</dd>
+<dt> &lsquo;<samp>BOTTOM, B</samp>&rsquo;</dt>
+<dd><p>Value of pixel component at current location for second video frame (bottom layer).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>shortest</samp>&rsquo;</dt>
+<dd><p>Force termination when the shortest input terminates. Default is <code>0</code>.
+</p></dd>
+<dt> &lsquo;<samp>repeatlast</samp>&rsquo;</dt>
+<dd><p>Continue applying the last bottom frame after the end of the stream. A value of
+<code>0</code> disable the filter after the last frame of the bottom layer is reached.
+Default is <code>1</code>.
+</p></dd>
+</dl>
+
+<a name="Examples-49"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-49">35.7.1 Examples</a></h3>
+
+<ul>
+<li>
+Apply transition from bottom layer to top layer in first 10 seconds:
+<table><tr><td>&nbsp;</td><td><pre class="example">blend=all_expr='A*(if(gte(T,10),1,T/10))+B*(1-(if(gte(T,10),1,T/10)))'
+</pre></td></tr></table>
+
+</li><li>
+Apply 1x1 checkerboard effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">blend=all_expr='if(eq(mod(X,2),mod(Y,2)),A,B)'
+</pre></td></tr></table>
+
+</li><li>
+Apply uncover left effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">blend=all_expr='if(gte(N*SW+X,W),A,B)'
+</pre></td></tr></table>
+
+</li><li>
+Apply uncover down effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">blend=all_expr='if(gte(Y-N*SH,0),A,B)'
+</pre></td></tr></table>
+
+</li><li>
+Apply uncover up-left effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">blend=all_expr='if(gte(T*SH*40+Y,H)*gte((T*40*SW+X)*W/H,W),A,B)'
+</pre></td></tr></table>
+</li></ul>
+
+<a name="boxblur"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-boxblur">35.8 boxblur</a></h2>
+
+<p>Apply boxblur algorithm to the input video.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>luma_radius, lr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>luma_power, lp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma_radius, cr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma_power, cp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>alpha_radius, ar</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>alpha_power, ap</samp>&rsquo;</dt>
+</dl>
+
+<p>A description of the accepted options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>luma_radius, lr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma_radius, cr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>alpha_radius, ar</samp>&rsquo;</dt>
+<dd><p>Set an expression for the box radius in pixels used for blurring the
+corresponding input plane.
+</p>
+<p>The radius value must be a non-negative number, and must not be
+greater than the value of the expression <code>min(w,h)/2</code> for the
+luma and alpha planes, and of <code>min(cw,ch)/2</code> for the chroma
+planes.
+</p>
+<p>Default value for &lsquo;<samp>luma_radius</samp>&rsquo; is &quot;2&quot;. If not specified,
+&lsquo;<samp>chroma_radius</samp>&rsquo; and &lsquo;<samp>alpha_radius</samp>&rsquo; default to the
+corresponding value set for &lsquo;<samp>luma_radius</samp>&rsquo;.
+</p>
+<p>The expressions can contain the following constants:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>the input width and height in pixels
+</p>
+</dd>
+<dt> &lsquo;<samp>cw</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ch</samp>&rsquo;</dt>
+<dd><p>the input chroma image width and height in pixels
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>luma_power, lp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma_power, cp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>alpha_power, ap</samp>&rsquo;</dt>
+<dd><p>Specify how many times the boxblur filter is applied to the
+corresponding plane.
+</p>
+<p>Default value for &lsquo;<samp>luma_power</samp>&rsquo; is 2. If not specified,
+&lsquo;<samp>chroma_power</samp>&rsquo; and &lsquo;<samp>alpha_power</samp>&rsquo; default to the
+corresponding value set for &lsquo;<samp>luma_power</samp>&rsquo;.
+</p>
+<p>A value of 0 will disable the effect.
+</p></dd>
+</dl>
+
+<a name="Examples-69"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-69">35.8.1 Examples</a></h3>
+
+<ul>
+<li>
+Apply a boxblur filter with luma, chroma, and alpha radius
+set to 2:
+<table><tr><td>&nbsp;</td><td><pre class="example">boxblur=luma_radius=2:luma_power=1
+boxblur=2:1
+</pre></td></tr></table>
+
+</li><li>
+Set luma radius to 2, alpha and chroma radius to 0:
+<table><tr><td>&nbsp;</td><td><pre class="example">boxblur=2:1:cr=0:ar=0
+</pre></td></tr></table>
+
+</li><li>
+Set luma and chroma radius to a fraction of the video dimension:
+<table><tr><td>&nbsp;</td><td><pre class="example">boxblur=luma_radius=min(h\,w)/10:luma_power=1:chroma_radius=min(cw\,ch)/10:chroma_power=1
+</pre></td></tr></table>
+</li></ul>
+
+<a name="colorbalance"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-colorbalance">35.9 colorbalance</a></h2>
+<p>Modify intensity of primary colors (red, green and blue) of input frames.
+</p>
+<p>The filter allows an input frame to be adjusted in the shadows, midtones or highlights
+regions for the red-cyan, green-magenta or blue-yellow balance.
+</p>
+<p>A positive adjustment value shifts the balance towards the primary color, a negative
+value towards the complementary color.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>rs</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>gs</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bs</samp>&rsquo;</dt>
+<dd><p>Adjust red, green and blue shadows (darkest pixels).
+</p>
+</dd>
+<dt> &lsquo;<samp>rm</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>gm</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bm</samp>&rsquo;</dt>
+<dd><p>Adjust red, green and blue midtones (medium pixels).
+</p>
+</dd>
+<dt> &lsquo;<samp>rh</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>gh</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bh</samp>&rsquo;</dt>
+<dd><p>Adjust red, green and blue highlights (brightest pixels).
+</p>
+<p>Allowed ranges for options are <code>[-1.0, 1.0]</code>. Defaults are <code>0</code>.
+</p></dd>
+</dl>
+
+<a name="Examples-61"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-61">35.9.1 Examples</a></h3>
+
+<ul>
+<li>
+Add red color cast to shadows:
+<table><tr><td>&nbsp;</td><td><pre class="example">colorbalance=rs=.3
+</pre></td></tr></table>
+</li></ul>
+
+<a name="colorchannelmixer"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-colorchannelmixer">35.10 colorchannelmixer</a></h2>
+
+<p>Adjust video input frames by re-mixing color channels.
+</p>
+<p>This filter modifies a color channel by adding the values associated to
+the other channels of the same pixels. For example if the value to
+modify is red, the output value will be:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>red</var>=<var>red</var>*<var>rr</var> + <var>blue</var>*<var>rb</var> + <var>green</var>*<var>rg</var> + <var>alpha</var>*<var>ra</var>
+</pre></td></tr></table>
+
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>rr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>rg</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>rb</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ra</samp>&rsquo;</dt>
+<dd><p>Adjust contribution of input red, green, blue and alpha channels for output red channel.
+Default is <code>1</code> for <var>rr</var>, and <code>0</code> for <var>rg</var>, <var>rb</var> and <var>ra</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>gr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>gg</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>gb</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ga</samp>&rsquo;</dt>
+<dd><p>Adjust contribution of input red, green, blue and alpha channels for output green channel.
+Default is <code>1</code> for <var>gg</var>, and <code>0</code> for <var>gr</var>, <var>gb</var> and <var>ga</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>br</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bg</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bb</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ba</samp>&rsquo;</dt>
+<dd><p>Adjust contribution of input red, green, blue and alpha channels for output blue channel.
+Default is <code>1</code> for <var>bb</var>, and <code>0</code> for <var>br</var>, <var>bg</var> and <var>ba</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>ar</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ag</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ab</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>aa</samp>&rsquo;</dt>
+<dd><p>Adjust contribution of input red, green, blue and alpha channels for output alpha channel.
+Default is <code>1</code> for <var>aa</var>, and <code>0</code> for <var>ar</var>, <var>ag</var> and <var>ab</var>.
+</p>
+<p>Allowed ranges for options are <code>[-2.0, 2.0]</code>.
+</p></dd>
+</dl>
+
+<a name="Examples-89"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-89">35.10.1 Examples</a></h3>
+
+<ul>
+<li>
+Convert source to grayscale:
+<table><tr><td>&nbsp;</td><td><pre class="example">colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3
+</pre></td></tr></table>
+</li><li>
+Simulate sepia tones:
+<table><tr><td>&nbsp;</td><td><pre class="example">colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131
+</pre></td></tr></table>
+</li></ul>
+
+<a name="colormatrix"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-colormatrix">35.11 colormatrix</a></h2>
+
+<p>Convert color matrix.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>src</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dst</samp>&rsquo;</dt>
+<dd><p>Specify the source and destination color matrix. Both values must be
+specified.
+</p>
+<p>The accepted values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>bt709</samp>&rsquo;</dt>
+<dd><p>BT.709
+</p>
+</dd>
+<dt> &lsquo;<samp>bt601</samp>&rsquo;</dt>
+<dd><p>BT.601
+</p>
+</dd>
+<dt> &lsquo;<samp>smpte240m</samp>&rsquo;</dt>
+<dd><p>SMPTE-240M
+</p>
+</dd>
+<dt> &lsquo;<samp>fcc</samp>&rsquo;</dt>
+<dd><p>FCC
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<p>For example to convert from BT.601 to SMPTE-240M, use the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">colormatrix=bt601:smpte240m
+</pre></td></tr></table>
+
+<a name="copy"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-copy">35.12 copy</a></h2>
+
+<p>Copy the input source unchanged to the output. Mainly useful for
+testing purposes.
+</p>
+<a name="crop"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-crop">35.13 crop</a></h2>
+
+<p>Crop the input video to given dimensions.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>w, out_w</samp>&rsquo;</dt>
+<dd><p>Width of the output video. It defaults to <code>iw</code>.
+This expression is evaluated only once during the filter
+configuration.
+</p>
+</dd>
+<dt> &lsquo;<samp>h, out_h</samp>&rsquo;</dt>
+<dd><p>Height of the output video. It defaults to <code>ih</code>.
+This expression is evaluated only once during the filter
+configuration.
+</p>
+</dd>
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dd><p>Horizontal position, in the input video, of the left edge of the output video.
+It defaults to <code>(in_w-out_w)/2</code>.
+This expression is evaluated per-frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>Vertical position, in the input video, of the top edge of the output video.
+It defaults to <code>(in_h-out_h)/2</code>.
+This expression is evaluated per-frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>keep_aspect</samp>&rsquo;</dt>
+<dd><p>If set to 1 will force the output display aspect ratio
+to be the same of the input, by changing the output sample aspect
+ratio. It defaults to 0.
+</p></dd>
+</dl>
+
+<p>The <var>out_w</var>, <var>out_h</var>, <var>x</var>, <var>y</var> parameters are
+expressions containing the following constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>the computed values for <var>x</var> and <var>y</var>. They are evaluated for
+each new frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>in_w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>in_h</samp>&rsquo;</dt>
+<dd><p>the input width and height
+</p>
+</dd>
+<dt> &lsquo;<samp>iw</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ih</samp>&rsquo;</dt>
+<dd><p>same as <var>in_w</var> and <var>in_h</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>out_w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>out_h</samp>&rsquo;</dt>
+<dd><p>the output (cropped) width and height
+</p>
+</dd>
+<dt> &lsquo;<samp>ow</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>oh</samp>&rsquo;</dt>
+<dd><p>same as <var>out_w</var> and <var>out_h</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>same as <var>iw</var> / <var>ih</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
+<dd><p>input sample aspect ratio
+</p>
+</dd>
+<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
+<dd><p>input display aspect ratio, it is the same as (<var>iw</var> / <var>ih</var>) * <var>sar</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>the number of input frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
+<dd><p>the position in the file of the input frame, NAN if unknown
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>timestamp expressed in seconds, NAN if the input timestamp is unknown
+</p>
+</dd>
+</dl>
+
+<p>The expression for <var>out_w</var> may depend on the value of <var>out_h</var>,
+and the expression for <var>out_h</var> may depend on <var>out_w</var>, but they
+cannot depend on <var>x</var> and <var>y</var>, as <var>x</var> and <var>y</var> are
+evaluated after <var>out_w</var> and <var>out_h</var>.
+</p>
+<p>The <var>x</var> and <var>y</var> parameters specify the expressions for the
+position of the top-left corner of the output (non-cropped) area. They
+are evaluated for each frame. If the evaluated value is not valid, it
+is approximated to the nearest valid value.
+</p>
+<p>The expression for <var>x</var> may depend on <var>y</var>, and the expression
+for <var>y</var> may depend on <var>x</var>.
+</p>
+<a name="Examples-8"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-8">35.13.1 Examples</a></h3>
+
+<ul>
+<li>
+Crop area with size 100x100 at position (12,34).
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=100:100:12:34
+</pre></td></tr></table>
+
+<p>Using named options, the example above becomes:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">crop=w=100:h=100:x=12:y=34
+</pre></td></tr></table>
+
+</li><li>
+Crop the central input area with size 100x100:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=100:100
+</pre></td></tr></table>
+
+</li><li>
+Crop the central input area with size 2/3 of the input video:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=2/3*in_w:2/3*in_h
+</pre></td></tr></table>
+
+</li><li>
+Crop the input video central square:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=out_w=in_h
+crop=in_h
+</pre></td></tr></table>
+
+</li><li>
+Delimit the rectangle with the top-left corner placed at position
+100:100 and the right-bottom corner corresponding to the right-bottom
+corner of the input image:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=in_w-100:in_h-100:100:100
+</pre></td></tr></table>
+
+</li><li>
+Crop 10 pixels from the left and right borders, and 20 pixels from
+the top and bottom borders
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=in_w-2*10:in_h-2*20
+</pre></td></tr></table>
+
+</li><li>
+Keep only the bottom right quarter of the input image:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=in_w/2:in_h/2:in_w/2:in_h/2
+</pre></td></tr></table>
+
+</li><li>
+Crop height for getting Greek harmony:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=in_w:1/PHI*in_w
+</pre></td></tr></table>
+
+</li><li>
+Appply trembling effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(n/10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(n/7)
+</pre></td></tr></table>
+
+</li><li>
+Apply erratic camera effect depending on timestamp:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(t*10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(t*13)&quot;
+</pre></td></tr></table>
+
+</li><li>
+Set x depending on the value of y:
+<table><tr><td>&nbsp;</td><td><pre class="example">crop=in_w/2:in_h/2:y:10+10*sin(n/10)
+</pre></td></tr></table>
+</li></ul>
+
+<a name="cropdetect"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-cropdetect">35.14 cropdetect</a></h2>
+
+<p>Auto-detect crop size.
+</p>
+<p>Calculate necessary cropping parameters and prints the recommended
+parameters through the logging system. The detected dimensions
+correspond to the non-black area of the input video.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>limit</samp>&rsquo;</dt>
+<dd><p>Set higher black value threshold, which can be optionally specified
+from nothing (0) to everything (255). An intensity value greater
+to the set value is considered non-black. Default value is 24.
+</p>
+</dd>
+<dt> &lsquo;<samp>round</samp>&rsquo;</dt>
+<dd><p>Set the value for which the width/height should be divisible by. The
+offset is automatically adjusted to center the video. Use 2 to get
+only even dimensions (needed for 4:2:2 video). 16 is best when
+encoding to most video codecs. Default value is 16.
+</p>
+</dd>
+<dt> &lsquo;<samp>reset_count, reset</samp>&rsquo;</dt>
+<dd><p>Set the counter that determines after how many frames cropdetect will
+reset the previously detected largest video area and start over to
+detect the current optimal crop area. Default value is 0.
+</p>
+<p>This can be useful when channel logos distort the video area. 0
+indicates never reset and return the largest area encountered during
+playback.
+</p></dd>
+</dl>
+
+<p><a name="curves"></a>
+</p><a name="curves-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-curves-1">35.15 curves</a></h2>
+
+<p>Apply color adjustments using curves.
+</p>
+<p>This filter is similar to the Adobe Photoshop and GIMP curves tools. Each
+component (red, green and blue) has its values defined by <var>N</var> key points
+tied from each other using a smooth curve. The x-axis represents the pixel
+values from the input frame, and the y-axis the new pixel values to be set for
+the output frame.
+</p>
+<p>By default, a component curve is defined by the two points <var>(0;0)</var> and
+<var>(1;1)</var>. This creates a straight line where each original pixel value is
+&quot;adjusted&quot; to its own value, which means no change to the image.
+</p>
+<p>The filter allows you to redefine these two points and add some more. A new
+curve (using a natural cubic spline interpolation) will be define to pass
+smoothly through all these new coordinates. The new defined points needs to be
+strictly increasing over the x-axis, and their <var>x</var> and <var>y</var> values must
+be in the <var>[0;1]</var> interval.  If the computed curves happened to go outside
+the vector spaces, the values will be clipped accordingly.
+</p>
+<p>If there is no key point defined in <code>x=0</code>, the filter will automatically
+insert a <var>(0;0)</var> point. In the same way, if there is no key point defined
+in <code>x=1</code>, the filter will automatically insert a <var>(1;1)</var> point.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>preset</samp>&rsquo;</dt>
+<dd><p>Select one of the available color presets. This option can be used in addition
+to the &lsquo;<samp>r</samp>&rsquo;, &lsquo;<samp>g</samp>&rsquo;, &lsquo;<samp>b</samp>&rsquo; parameters; in this case, the later
+options takes priority on the preset values.
+Available presets are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>color_negative</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>cross_process</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>darker</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>increase_contrast</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>lighter</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>linear_contrast</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>medium_contrast</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>negative</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>strong_contrast</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vintage</samp>&rsquo;</dt>
+</dl>
+<p>Default is <code>none</code>.
+</p></dd>
+<dt> &lsquo;<samp>master, m</samp>&rsquo;</dt>
+<dd><p>Set the master key points. These points will define a second pass mapping. It
+is sometimes called a &quot;luminance&quot; or &quot;value&quot; mapping. It can be used with
+&lsquo;<samp>r</samp>&rsquo;, &lsquo;<samp>g</samp>&rsquo;, &lsquo;<samp>b</samp>&rsquo; or &lsquo;<samp>all</samp>&rsquo; since it acts like a
+post-processing LUT.
+</p></dd>
+<dt> &lsquo;<samp>red, r</samp>&rsquo;</dt>
+<dd><p>Set the key points for the red component.
+</p></dd>
+<dt> &lsquo;<samp>green, g</samp>&rsquo;</dt>
+<dd><p>Set the key points for the green component.
+</p></dd>
+<dt> &lsquo;<samp>blue, b</samp>&rsquo;</dt>
+<dd><p>Set the key points for the blue component.
+</p></dd>
+<dt> &lsquo;<samp>all</samp>&rsquo;</dt>
+<dd><p>Set the key points for all components (not including master).
+Can be used in addition to the other key points component
+options. In this case, the unset component(s) will fallback on this
+&lsquo;<samp>all</samp>&rsquo; setting.
+</p></dd>
+<dt> &lsquo;<samp>psfile</samp>&rsquo;</dt>
+<dd><p>Specify a Photoshop curves file (<code>.asv</code>) to import the settings from.
+</p></dd>
+</dl>
+
+<p>To avoid some filtergraph syntax conflicts, each key points list need to be
+defined using the following syntax: <code>x0/y0 x1/y1 x2/y2 ...</code>.
+</p>
+<a name="Examples-85"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-85">35.15.1 Examples</a></h3>
+
+<ul>
+<li>
+Increase slightly the middle level of blue:
+<table><tr><td>&nbsp;</td><td><pre class="example">curves=blue='0.5/0.58'
+</pre></td></tr></table>
+
+</li><li>
+Vintage effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">curves=r='0/0.11 .42/.51 1/0.95':g='0.50/0.48':b='0/0.22 .49/.44 1/0.8'
+</pre></td></tr></table>
+<p>Here we obtain the following coordinates for each components:
+</p><dl compact="compact">
+<dt> <var>red</var></dt>
+<dd><p><code>(0;0.11) (0.42;0.51) (1;0.95)</code>
+</p></dd>
+<dt> <var>green</var></dt>
+<dd><p><code>(0;0) (0.50;0.48) (1;1)</code>
+</p></dd>
+<dt> <var>blue</var></dt>
+<dd><p><code>(0;0.22) (0.49;0.44) (1;0.80)</code>
+</p></dd>
+</dl>
+
+</li><li>
+The previous example can also be achieved with the associated built-in preset:
+<table><tr><td>&nbsp;</td><td><pre class="example">curves=preset=vintage
+</pre></td></tr></table>
+
+</li><li>
+Or simply:
+<table><tr><td>&nbsp;</td><td><pre class="example">curves=vintage
+</pre></td></tr></table>
+
+</li><li>
+Use a Photoshop preset and redefine the points of the green component:
+<table><tr><td>&nbsp;</td><td><pre class="example">curves=psfile='MyCurvesPresets/purple.asv':green='0.45/0.53'
+</pre></td></tr></table>
+</li></ul>
+
+<a name="dctdnoiz"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-dctdnoiz">35.16 dctdnoiz</a></h2>
+
+<p>Denoise frames using 2D DCT (frequency domain filtering).
+</p>
+<p>This filter is not designed for real time and can be extremely slow.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>sigma, s</samp>&rsquo;</dt>
+<dd><p>Set the noise sigma constant.
+</p>
+<p>This <var>sigma</var> defines a hard threshold of <code>3 * sigma</code>; every DCT
+coefficient (absolute value) below this threshold with be dropped.
+</p>
+<p>If you need a more advanced filtering, see &lsquo;<samp>expr</samp>&rsquo;.
+</p>
+<p>Default is <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>overlap</samp>&rsquo;</dt>
+<dd><p>Set number overlapping pixels for each block. Each block is of size
+<code>16x16</code>. Since the filter can be slow, you may want to reduce this value,
+at the cost of a less effective filter and the risk of various artefacts.
+</p>
+<p>If the overlapping value doesn&rsquo;t allow to process the whole input width or
+height, a warning will be displayed and according borders won&rsquo;t be denoised.
+</p>
+<p>Default value is <code>15</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>expr, e</samp>&rsquo;</dt>
+<dd><p>Set the coefficient factor expression.
+</p>
+<p>For each coefficient of a DCT block, this expression will be evaluated as a
+multiplier value for the coefficient.
+</p>
+<p>If this is option is set, the &lsquo;<samp>sigma</samp>&rsquo; option will be ignored.
+</p>
+<p>The absolute value of the coefficient can be accessed through the <var>c</var>
+variable.
+</p></dd>
+</dl>
+
+<a name="Examples-90"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-90">35.16.1 Examples</a></h3>
+
+<p>Apply a denoise with a &lsquo;<samp>sigma</samp>&rsquo; of <code>4.5</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">dctdnoiz=4.5
+</pre></td></tr></table>
+
+<p>The same operation can be achieved using the expression system:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">dctdnoiz=e='gte(c, 4.5*3)'
+</pre></td></tr></table>
+
+<p><a name="decimate"></a>
+</p><a name="decimate-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-decimate-1">35.17 decimate</a></h2>
+
+<p>Drop duplicated frames at regular intervals.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>cycle</samp>&rsquo;</dt>
+<dd><p>Set the number of frames from which one will be dropped. Setting this to
+<var>N</var> means one frame in every batch of <var>N</var> frames will be dropped.
+Default is <code>5</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>dupthresh</samp>&rsquo;</dt>
+<dd><p>Set the threshold for duplicate detection. If the difference metric for a frame
+is less than or equal to this value, then it is declared as duplicate. Default
+is <code>1.1</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>scthresh</samp>&rsquo;</dt>
+<dd><p>Set scene change threshold. Default is <code>15</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>blockx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>blocky</samp>&rsquo;</dt>
+<dd><p>Set the size of the x and y-axis blocks used during metric calculations.
+Larger blocks give better noise suppression, but also give worse detection of
+small movements. Must be a power of two. Default is <code>32</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>ppsrc</samp>&rsquo;</dt>
+<dd><p>Mark main input as a pre-processed input and activate clean source input
+stream. This allows the input to be pre-processed with various filters to help
+the metrics calculation while keeping the frame selection lossless. When set to
+<code>1</code>, the first stream is for the pre-processed input, and the second
+stream is the clean source from where the kept frames are chosen. Default is
+<code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+<dd><p>Set whether or not chroma is considered in the metric calculations. Default is
+<code>1</code>.
+</p></dd>
+</dl>
+
+<a name="delogo"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-delogo">35.18 delogo</a></h2>
+
+<p>Suppress a TV station logo by a simple interpolation of the surrounding
+pixels. Just set a rectangle covering the logo and watch it disappear
+(and sometimes something even uglier appear - your mileage may vary).
+</p>
+<p>This filter accepts the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>Specify the top left corner coordinates of the logo. They must be
+specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Specify the width and height of the logo to clear. They must be
+specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>band, t</samp>&rsquo;</dt>
+<dd><p>Specify the thickness of the fuzzy edge of the rectangle (added to
+<var>w</var> and <var>h</var>). The default value is 4.
+</p>
+</dd>
+<dt> &lsquo;<samp>show</samp>&rsquo;</dt>
+<dd><p>When set to 1, a green rectangle is drawn on the screen to simplify
+finding the right <var>x</var>, <var>y</var>, <var>w</var>, and <var>h</var> parameters.
+The default value is 0.
+</p>
+<p>The rectangle is drawn on the outermost pixels which will be (partly)
+replaced with interpolated values. The values of the next pixels
+immediately outside this rectangle in each direction will be used to
+compute the interpolated pixel values inside the rectangle.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-7"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-7">35.18.1 Examples</a></h3>
+
+<ul>
+<li>
+Set a rectangle covering the area with top left corner coordinates 0,0
+and size 100x77, setting a band of size 10:
+<table><tr><td>&nbsp;</td><td><pre class="example">delogo=x=0:y=0:w=100:h=77:band=10
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="deshake"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-deshake">35.19 deshake</a></h2>
+
+<p>Attempt to fix small changes in horizontal and/or vertical shift. This
+filter helps remove camera shake from hand-holding a camera, bumping a
+tripod, moving on a vehicle, etc.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Specify a rectangular area where to limit the search for motion
+vectors.
+If desired the search for motion vectors can be limited to a
+rectangular area of the frame defined by its top left corner, width
+and height. These parameters have the same meaning as the drawbox
+filter which can be used to visualise the position of the bounding
+box.
+</p>
+<p>This is useful when simultaneous movement of subjects within the frame
+might be confused for camera motion by the motion vector search.
+</p>
+<p>If any or all of <var>x</var>, <var>y</var>, <var>w</var> and <var>h</var> are set to -1
+then the full frame is used. This allows later options to be set
+without specifying the bounding box for the motion vector search.
+</p>
+<p>Default - search the whole frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>rx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ry</samp>&rsquo;</dt>
+<dd><p>Specify the maximum extent of movement in x and y directions in the
+range 0-64 pixels. Default 16.
+</p>
+</dd>
+<dt> &lsquo;<samp>edge</samp>&rsquo;</dt>
+<dd><p>Specify how to generate pixels to fill blanks at the edge of the
+frame. Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>blank, 0</samp>&rsquo;</dt>
+<dd><p>Fill zeroes at blank locations
+</p></dd>
+<dt> &lsquo;<samp>original, 1</samp>&rsquo;</dt>
+<dd><p>Original image at blank locations
+</p></dd>
+<dt> &lsquo;<samp>clamp, 2</samp>&rsquo;</dt>
+<dd><p>Extruded edge value at blank locations
+</p></dd>
+<dt> &lsquo;<samp>mirror, 3</samp>&rsquo;</dt>
+<dd><p>Mirrored edge at blank locations
+</p></dd>
+</dl>
+<p>Default value is &lsquo;<samp>mirror</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>blocksize</samp>&rsquo;</dt>
+<dd><p>Specify the blocksize to use for motion search. Range 4-128 pixels,
+default 8.
+</p>
+</dd>
+<dt> &lsquo;<samp>contrast</samp>&rsquo;</dt>
+<dd><p>Specify the contrast threshold for blocks. Only blocks with more than
+the specified contrast (difference between darkest and lightest
+pixels) will be considered. Range 1-255, default 125.
+</p>
+</dd>
+<dt> &lsquo;<samp>search</samp>&rsquo;</dt>
+<dd><p>Specify the search strategy. Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>exhaustive, 0</samp>&rsquo;</dt>
+<dd><p>Set exhaustive search
+</p></dd>
+<dt> &lsquo;<samp>less, 1</samp>&rsquo;</dt>
+<dd><p>Set less exhaustive search.
+</p></dd>
+</dl>
+<p>Default value is &lsquo;<samp>exhaustive</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>filename</samp>&rsquo;</dt>
+<dd><p>If set then a detailed log of the motion search is written to the
+specified file.
+</p>
+</dd>
+<dt> &lsquo;<samp>opencl</samp>&rsquo;</dt>
+<dd><p>If set to 1, specify using OpenCL capabilities, only available if
+FFmpeg was configured with <code>--enable-opencl</code>. Default value is 0.
+</p>
+</dd>
+</dl>
+
+<a name="drawbox"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-drawbox">35.20 drawbox</a></h2>
+
+<p>Draw a colored box on the input image.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>The expressions which specify the top left corner coordinates of the box. Default to 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>height, h</samp>&rsquo;</dt>
+<dd><p>The expressions which specify the width and height of the box, if 0 they are interpreted as
+the input width and height. Default to 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>color, c</samp>&rsquo;</dt>
+<dd><p>Specify the color of the box to write. For the general syntax of this option,
+check the &quot;Color&quot; section in the ffmpeg-utils manual. If the special
+value <code>invert</code> is used, the box edge color is the same as the
+video with inverted luma.
+</p>
+</dd>
+<dt> &lsquo;<samp>thickness, t</samp>&rsquo;</dt>
+<dd><p>The expression which sets the thickness of the box edge. Default value is <code>3</code>.
+</p>
+<p>See below for the list of accepted constants.
+</p></dd>
+</dl>
+
+<p>The parameters for <var>x</var>, <var>y</var>, <var>w</var> and <var>h</var> and <var>t</var> are expressions containing the
+following constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
+<dd><p>The input display aspect ratio, it is the same as (<var>w</var> / <var>h</var>) * <var>sar</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>in_h, ih</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>in_w, iw</samp>&rsquo;</dt>
+<dd><p>The input width and height.
+</p>
+</dd>
+<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
+<dd><p>The input sample aspect ratio.
+</p>
+</dd>
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>The x and y offset coordinates where the box is drawn.
+</p>
+</dd>
+<dt> &lsquo;<samp>w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>The width and height of the drawn box.
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>The thickness of the drawn box.
+</p>
+<p>These constants allow the <var>x</var>, <var>y</var>, <var>w</var>, <var>h</var> and <var>t</var> expressions to refer to
+each other, so you may for example specify <code>y=x/dar</code> or <code>h=w/dar</code>.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-13"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-13">35.20.1 Examples</a></h3>
+
+<ul>
+<li>
+Draw a black box around the edge of the input image:
+<table><tr><td>&nbsp;</td><td><pre class="example">drawbox
+</pre></td></tr></table>
+
+</li><li>
+Draw a box with color red and an opacity of 50%:
+<table><tr><td>&nbsp;</td><td><pre class="example">drawbox=10:20:200:60:red@0.5
+</pre></td></tr></table>
+
+<p>The previous example can be specified as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">drawbox=x=10:y=20:w=200:h=60:color=red@0.5
+</pre></td></tr></table>
+
+</li><li>
+Fill the box with pink color:
+<table><tr><td>&nbsp;</td><td><pre class="example">drawbox=x=10:y=10:w=100:h=100:color=pink@0.5:t=max
+</pre></td></tr></table>
+
+</li><li>
+Draw a 2-pixel red 2.40:1 mask:
+<table><tr><td>&nbsp;</td><td><pre class="example">drawbox=x=-t:y=0.5*(ih-iw/2.4)-t:w=iw+t*2:h=iw/2.4+t*2:t=2:c=red
+</pre></td></tr></table>
+</li></ul>
+
+<a name="drawgrid"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-drawgrid">35.21 drawgrid</a></h2>
+
+<p>Draw a grid on the input image.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>The expressions which specify the coordinates of some point of grid intersection (meant to configure offset). Both default to 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>height, h</samp>&rsquo;</dt>
+<dd><p>The expressions which specify the width and height of the grid cell, if 0 they are interpreted as the
+input width and height, respectively, minus <code>thickness</code>, so image gets
+framed. Default to 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>color, c</samp>&rsquo;</dt>
+<dd><p>Specify the color of the grid. For the general syntax of this option,
+check the &quot;Color&quot; section in the ffmpeg-utils manual. If the special
+value <code>invert</code> is used, the grid color is the same as the
+video with inverted luma.
+</p>
+</dd>
+<dt> &lsquo;<samp>thickness, t</samp>&rsquo;</dt>
+<dd><p>The expression which sets the thickness of the grid line. Default value is <code>1</code>.
+</p>
+<p>See below for the list of accepted constants.
+</p></dd>
+</dl>
+
+<p>The parameters for <var>x</var>, <var>y</var>, <var>w</var> and <var>h</var> and <var>t</var> are expressions containing the
+following constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
+<dd><p>The input display aspect ratio, it is the same as (<var>w</var> / <var>h</var>) * <var>sar</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>in_h, ih</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>in_w, iw</samp>&rsquo;</dt>
+<dd><p>The input grid cell width and height.
+</p>
+</dd>
+<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
+<dd><p>The input sample aspect ratio.
+</p>
+</dd>
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>The x and y coordinates of some point of grid intersection (meant to configure offset).
+</p>
+</dd>
+<dt> &lsquo;<samp>w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>The width and height of the drawn cell.
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>The thickness of the drawn cell.
+</p>
+<p>These constants allow the <var>x</var>, <var>y</var>, <var>w</var>, <var>h</var> and <var>t</var> expressions to refer to
+each other, so you may for example specify <code>y=x/dar</code> or <code>h=w/dar</code>.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-68"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-68">35.21.1 Examples</a></h3>
+
+<ul>
+<li>
+Draw a grid with cell 100x100 pixels, thickness 2 pixels, with color red and an opacity of 50%:
+<table><tr><td>&nbsp;</td><td><pre class="example">drawgrid=width=100:height=100:thickness=2:color=red@0.5
+</pre></td></tr></table>
+
+</li><li>
+Draw a white 3x3 grid with an opacity of 50%:
+<table><tr><td>&nbsp;</td><td><pre class="example">drawgrid=w=iw/3:h=ih/3:t=2:c=white@0.5
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="drawtext"></a>
+</p><a name="drawtext-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-drawtext-1">35.22 drawtext</a></h2>
+
+<p>Draw text string or text from specified file on top of video using the
+libfreetype library.
+</p>
+<p>To enable compilation of this filter you need to configure FFmpeg with
+<code>--enable-libfreetype</code>.
+</p>
+<a name="Syntax-1"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Syntax-1">35.22.1 Syntax</a></h3>
+
+<p>The description of the accepted parameters follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>box</samp>&rsquo;</dt>
+<dd><p>Used to draw a box around text using background color.
+Value should be either 1 (enable) or 0 (disable).
+The default value of <var>box</var> is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>boxcolor</samp>&rsquo;</dt>
+<dd><p>The color to be used for drawing box around text. For the syntax of this
+option, check the &quot;Color&quot; section in the ffmpeg-utils manual.
+</p>
+<p>The default value of <var>boxcolor</var> is &quot;white&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>expansion</samp>&rsquo;</dt>
+<dd><p>Select how the <var>text</var> is expanded. Can be either <code>none</code>,
+<code>strftime</code> (deprecated) or
+<code>normal</code> (default). See the <a href="#drawtext_005fexpansion">Text expansion</a> section
+below for details.
+</p>
+</dd>
+<dt> &lsquo;<samp>fix_bounds</samp>&rsquo;</dt>
+<dd><p>If true, check and fix text coords to avoid clipping.
+</p>
+</dd>
+<dt> &lsquo;<samp>fontcolor</samp>&rsquo;</dt>
+<dd><p>The color to be used for drawing fonts. For the syntax of this option, check
+the &quot;Color&quot; section in the ffmpeg-utils manual.
+</p>
+<p>The default value of <var>fontcolor</var> is &quot;black&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>fontfile</samp>&rsquo;</dt>
+<dd><p>The font file to be used for drawing text. Path must be included.
+This parameter is mandatory.
+</p>
+</dd>
+<dt> &lsquo;<samp>fontsize</samp>&rsquo;</dt>
+<dd><p>The font size to be used for drawing text.
+The default value of <var>fontsize</var> is 16.
+</p>
+</dd>
+<dt> &lsquo;<samp>ft_load_flags</samp>&rsquo;</dt>
+<dd><p>Flags to be used for loading the fonts.
+</p>
+<p>The flags map the corresponding flags supported by libfreetype, and are
+a combination of the following values:
+</p><dl compact="compact">
+<dt> <var>default</var></dt>
+<dt> <var>no_scale</var></dt>
+<dt> <var>no_hinting</var></dt>
+<dt> <var>render</var></dt>
+<dt> <var>no_bitmap</var></dt>
+<dt> <var>vertical_layout</var></dt>
+<dt> <var>force_autohint</var></dt>
+<dt> <var>crop_bitmap</var></dt>
+<dt> <var>pedantic</var></dt>
+<dt> <var>ignore_global_advance_width</var></dt>
+<dt> <var>no_recurse</var></dt>
+<dt> <var>ignore_transform</var></dt>
+<dt> <var>monochrome</var></dt>
+<dt> <var>linear_design</var></dt>
+<dt> <var>no_autohint</var></dt>
+</dl>
+
+<p>Default value is &quot;render&quot;.
+</p>
+<p>For more information consult the documentation for the FT_LOAD_*
+libfreetype flags.
+</p>
+</dd>
+<dt> &lsquo;<samp>shadowcolor</samp>&rsquo;</dt>
+<dd><p>The color to be used for drawing a shadow behind the drawn text. For the
+syntax of this option, check the &quot;Color&quot; section in the ffmpeg-utils manual.
+</p>
+<p>The default value of <var>shadowcolor</var> is &quot;black&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>shadowx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>shadowy</samp>&rsquo;</dt>
+<dd><p>The x and y offsets for the text shadow position with respect to the
+position of the text. They can be either positive or negative
+values. Default value for both is &quot;0&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_number</samp>&rsquo;</dt>
+<dd><p>The starting frame number for the n/frame_num variable. The default value
+is &quot;0&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>tabsize</samp>&rsquo;</dt>
+<dd><p>The size in number of spaces to use for rendering the tab.
+Default value is 4.
+</p>
+</dd>
+<dt> &lsquo;<samp>timecode</samp>&rsquo;</dt>
+<dd><p>Set the initial timecode representation in &quot;hh:mm:ss[:;.]ff&quot;
+format. It can be used with or without text parameter. <var>timecode_rate</var>
+option must be specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>timecode_rate, rate, r</samp>&rsquo;</dt>
+<dd><p>Set the timecode frame rate (timecode only).
+</p>
+</dd>
+<dt> &lsquo;<samp>text</samp>&rsquo;</dt>
+<dd><p>The text string to be drawn. The text must be a sequence of UTF-8
+encoded characters.
+This parameter is mandatory if no file is specified with the parameter
+<var>textfile</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>textfile</samp>&rsquo;</dt>
+<dd><p>A text file containing text to be drawn. The text must be a sequence
+of UTF-8 encoded characters.
+</p>
+<p>This parameter is mandatory if no text string is specified with the
+parameter <var>text</var>.
+</p>
+<p>If both <var>text</var> and <var>textfile</var> are specified, an error is thrown.
+</p>
+</dd>
+<dt> &lsquo;<samp>reload</samp>&rsquo;</dt>
+<dd><p>If set to 1, the <var>textfile</var> will be reloaded before each frame.
+Be sure to update it atomically, or it may be read partially, or even fail.
+</p>
+</dd>
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>The expressions which specify the offsets where text will be drawn
+within the video frame. They are relative to the top/left border of the
+output image.
+</p>
+<p>The default value of <var>x</var> and <var>y</var> is &quot;0&quot;.
+</p>
+<p>See below for the list of accepted constants and functions.
+</p></dd>
+</dl>
+
+<p>The parameters for <var>x</var> and <var>y</var> are expressions containing the
+following constants and functions:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
+<dd><p>input display aspect ratio, it is the same as (<var>w</var> / <var>h</var>) * <var>sar</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>line_h, lh</samp>&rsquo;</dt>
+<dd><p>the height of each text line
+</p>
+</dd>
+<dt> &lsquo;<samp>main_h, h, H</samp>&rsquo;</dt>
+<dd><p>the input height
+</p>
+</dd>
+<dt> &lsquo;<samp>main_w, w, W</samp>&rsquo;</dt>
+<dd><p>the input width
+</p>
+</dd>
+<dt> &lsquo;<samp>max_glyph_a, ascent</samp>&rsquo;</dt>
+<dd><p>the maximum distance from the baseline to the highest/upper grid
+coordinate used to place a glyph outline point, for all the rendered
+glyphs.
+It is a positive value, due to the grid&rsquo;s orientation with the Y axis
+upwards.
+</p>
+</dd>
+<dt> &lsquo;<samp>max_glyph_d, descent</samp>&rsquo;</dt>
+<dd><p>the maximum distance from the baseline to the lowest grid coordinate
+used to place a glyph outline point, for all the rendered glyphs.
+This is a negative value, due to the grid&rsquo;s orientation, with the Y axis
+upwards.
+</p>
+</dd>
+<dt> &lsquo;<samp>max_glyph_h</samp>&rsquo;</dt>
+<dd><p>maximum glyph height, that is the maximum height for all the glyphs
+contained in the rendered text, it is equivalent to <var>ascent</var> -
+<var>descent</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>max_glyph_w</samp>&rsquo;</dt>
+<dd><p>maximum glyph width, that is the maximum width for all the glyphs
+contained in the rendered text
+</p>
+</dd>
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>the number of input frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>rand(min, max)</samp>&rsquo;</dt>
+<dd><p>return a random number included between <var>min</var> and <var>max</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
+<dd><p>input sample aspect ratio
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>timestamp expressed in seconds, NAN if the input timestamp is unknown
+</p>
+</dd>
+<dt> &lsquo;<samp>text_h, th</samp>&rsquo;</dt>
+<dd><p>the height of the rendered text
+</p>
+</dd>
+<dt> &lsquo;<samp>text_w, tw</samp>&rsquo;</dt>
+<dd><p>the width of the rendered text
+</p>
+</dd>
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>the x and y offset coordinates where the text is drawn.
+</p>
+<p>These parameters allow the <var>x</var> and <var>y</var> expressions to refer
+each other, so you can for example specify <code>y=x/dar</code>.
+</p></dd>
+</dl>
+
+<p>If libavfilter was built with <code>--enable-fontconfig</code>, then
+&lsquo;<samp>fontfile</samp>&rsquo; can be a fontconfig pattern or omitted.
+</p>
+<p><a name="drawtext_005fexpansion"></a>
+</p><a name="Text-expansion"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Text-expansion">35.22.2 Text expansion</a></h3>
+
+<p>If &lsquo;<samp>expansion</samp>&rsquo; is set to <code>strftime</code>,
+the filter recognizes strftime() sequences in the provided text and
+expands them accordingly. Check the documentation of strftime(). This
+feature is deprecated.
+</p>
+<p>If &lsquo;<samp>expansion</samp>&rsquo; is set to <code>none</code>, the text is printed verbatim.
+</p>
+<p>If &lsquo;<samp>expansion</samp>&rsquo; is set to <code>normal</code> (which is the default),
+the following expansion mechanism is used.
+</p>
+<p>The backslash character &rsquo;\&rsquo;, followed by any character, always expands to
+the second character.
+</p>
+<p>Sequence of the form <code>%{...}</code> are expanded. The text between the
+braces is a function name, possibly followed by arguments separated by &rsquo;:&rsquo;.
+If the arguments contain special characters or delimiters (&rsquo;:&rsquo; or &rsquo;}&rsquo;),
+they should be escaped.
+</p>
+<p>Note that they probably must also be escaped as the value for the
+&lsquo;<samp>text</samp>&rsquo; option in the filter argument string and as the filter
+argument in the filtergraph description, and possibly also for the shell,
+that makes up to four levels of escaping; using a text file avoids these
+problems.
+</p>
+<p>The following functions are available:
+</p>
+<dl compact="compact">
+<dt> <code>expr, e</code></dt>
+<dd><p>The expression evaluation result.
+</p>
+<p>It must take one argument specifying the expression to be evaluated,
+which accepts the same constants and functions as the <var>x</var> and
+<var>y</var> values. Note that not all constants should be used, for
+example the text size is not known when evaluating the expression, so
+the constants <var>text_w</var> and <var>text_h</var> will have an undefined
+value.
+</p>
+</dd>
+<dt> <code>gmtime</code></dt>
+<dd><p>The time at which the filter is running, expressed in UTC.
+It can accept an argument: a strftime() format string.
+</p>
+</dd>
+<dt> <code>localtime</code></dt>
+<dd><p>The time at which the filter is running, expressed in the local time zone.
+It can accept an argument: a strftime() format string.
+</p>
+</dd>
+<dt> <code>metadata</code></dt>
+<dd><p>Frame metadata. It must take one argument specifying metadata key.
+</p>
+</dd>
+<dt> <code>n, frame_num</code></dt>
+<dd><p>The frame number, starting from 0.
+</p>
+</dd>
+<dt> <code>pict_type</code></dt>
+<dd><p>A 1 character description of the current picture type.
+</p>
+</dd>
+<dt> <code>pts</code></dt>
+<dd><p>The timestamp of the current frame, in seconds, with microsecond accuracy.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-48"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-48">35.22.3 Examples</a></h3>
+
+<ul>
+<li>
+Draw &quot;Test Text&quot; with font FreeSerif, using the default values for the
+optional parameters.
+
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'&quot;
+</pre></td></tr></table>
+
+</li><li>
+Draw &rsquo;Test Text&rsquo; with font FreeSerif of size 24 at position x=100
+and y=50 (counting from the top-left corner of the screen), text is
+yellow with a red box around it. Both the text and the box have an
+opacity of 20%.
+
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
+          x=100: y=50: fontsize=24: fontcolor=yellow@0.2: box=1: boxcolor=red@0.2&quot;
+</pre></td></tr></table>
+
+<p>Note that the double quotes are not necessary if spaces are not used
+within the parameter list.
+</p>
+</li><li>
+Show the text at the center of the video frame:
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontsize=30:fontfile=FreeSerif.ttf:text='hello world':x=(w-text_w)/2:y=(h-text_h-line_h)/2&quot;
+</pre></td></tr></table>
+
+</li><li>
+Show a text line sliding from right to left in the last row of the video
+frame. The file &lsquo;<tt>LONG_LINE</tt>&rsquo; is assumed to contain a single line
+with no newlines.
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontsize=15:fontfile=FreeSerif.ttf:text=LONG_LINE:y=h-line_h:x=-50*t&quot;
+</pre></td></tr></table>
+
+</li><li>
+Show the content of file &lsquo;<tt>CREDITS</tt>&rsquo; off the bottom of the frame and scroll up.
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontsize=20:fontfile=FreeSerif.ttf:textfile=CREDITS:y=h-20*t&quot;
+</pre></td></tr></table>
+
+</li><li>
+Draw a single green letter &quot;g&quot;, at the center of the input video.
+The glyph baseline is placed at half screen height.
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontsize=60:fontfile=FreeSerif.ttf:fontcolor=green:text=g:x=(w-max_glyph_w)/2:y=h/2-ascent&quot;
+</pre></td></tr></table>
+
+</li><li>
+Show text for 1 second every 3 seconds:
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontfile=FreeSerif.ttf:fontcolor=white:x=100:y=x/dar:enable=lt(mod(t\,3)\,1):text='blink'&quot;
+</pre></td></tr></table>
+
+</li><li>
+Use fontconfig to set the font. Note that the colons need to be escaped.
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext='fontfile=Linux Libertine O-40\:style=Semibold:text=FFmpeg'
+</pre></td></tr></table>
+
+</li><li>
+Print the date of a real-time encoding (see strftime(3)):
+<table><tr><td>&nbsp;</td><td><pre class="example">drawtext='fontfile=FreeSans.ttf:text=%{localtime:%a %b %d %Y}'
+</pre></td></tr></table>
+
+</li></ul>
+
+<p>For more information about libfreetype, check:
+<a href="http://www.freetype.org/">http://www.freetype.org/</a>.
+</p>
+<p>For more information about fontconfig, check:
+<a href="http://freedesktop.org/software/fontconfig/fontconfig-user.html">http://freedesktop.org/software/fontconfig/fontconfig-user.html</a>.
+</p>
+<a name="edgedetect"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-edgedetect">35.23 edgedetect</a></h2>
+
+<p>Detect and draw edges. The filter uses the Canny Edge Detection algorithm.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>low</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>high</samp>&rsquo;</dt>
+<dd><p>Set low and high threshold values used by the Canny thresholding
+algorithm.
+</p>
+<p>The high threshold selects the &quot;strong&quot; edge pixels, which are then
+connected through 8-connectivity with the &quot;weak&quot; edge pixels selected
+by the low threshold.
+</p>
+<p><var>low</var> and <var>high</var> threshold values must be choosen in the range
+[0,1], and <var>low</var> should be lesser or equal to <var>high</var>.
+</p>
+<p>Default value for <var>low</var> is <code>20/255</code>, and default value for <var>high</var>
+is <code>50/255</code>.
+</p></dd>
+</dl>
+
+<p>Example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">edgedetect=low=0.1:high=0.4
+</pre></td></tr></table>
+
+<a name="extractplanes"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-extractplanes">35.24 extractplanes</a></h2>
+
+<p>Extract color channel components from input video stream into
+separate grayscale video streams.
+</p>
+<p>The filter accepts the following option:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>planes</samp>&rsquo;</dt>
+<dd><p>Set plane(s) to extract.
+</p>
+<p>Available values for planes are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>u</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>v</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>r</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>g</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+</dl>
+
+<p>Choosing planes not available in the input will result in an error.
+That means you cannot select <code>r</code>, <code>g</code>, <code>b</code> planes
+with <code>y</code>, <code>u</code>, <code>v</code> planes at same time.
+</p></dd>
+</dl>
+
+<a name="Examples-2"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-2">35.24.1 Examples</a></h3>
+
+<ul>
+<li>
+Extract luma, u and v color channel component from input video frame
+into 3 grayscale outputs:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i video.avi -filter_complex 'extractplanes=y+u+v[y][u][v]' -map '[y]' y.avi -map '[u]' u.avi -map '[v]' v.avi
+</pre></td></tr></table>
+</li></ul>
+
+<a name="elbg"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-elbg">35.25 elbg</a></h2>
+
+<p>Apply a posterize effect using the ELBG (Enhanced LBG) algorithm.
+</p>
+<p>For each input image, the filter will compute the optimal mapping from
+the input to the output given the codebook length, that is the number
+of distinct output colors.
+</p>
+<p>This filter accepts the following options.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>codebook_length, l</samp>&rsquo;</dt>
+<dd><p>Set codebook length. The value must be a positive integer, and
+represents the number of distinct output colors. Default value is 256.
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_steps, n</samp>&rsquo;</dt>
+<dd><p>Set the maximum number of iterations to apply for computing the optimal
+mapping. The higher the value the better the result and the higher the
+computation time. Default value is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>seed, s</samp>&rsquo;</dt>
+<dd><p>Set a random seed, must be an integer included between 0 and
+UINT32_MAX. If not specified, or if explicitly set to -1, the filter
+will try to use a good random seed on a best effort basis.
+</p></dd>
+</dl>
+
+<a name="fade"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-fade">35.26 fade</a></h2>
+
+<p>Apply fade-in/out effect to input video.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>type, t</samp>&rsquo;</dt>
+<dd><p>The effect type &ndash; can be either &quot;in&quot; for fade-in, or &quot;out&quot; for a fade-out
+effect.
+Default is <code>in</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_frame, s</samp>&rsquo;</dt>
+<dd><p>Specify the number of the start frame for starting to apply the fade
+effect. Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_frames, n</samp>&rsquo;</dt>
+<dd><p>The number of frames for which the fade effect has to last. At the end of the
+fade-in effect the output video will have the same intensity as the input video,
+at the end of the fade-out transition the output video will be filled with the
+selected &lsquo;<samp>color</samp>&rsquo;.
+Default is 25.
+</p>
+</dd>
+<dt> &lsquo;<samp>alpha</samp>&rsquo;</dt>
+<dd><p>If set to 1, fade only alpha channel, if one exists on the input.
+Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_time, st</samp>&rsquo;</dt>
+<dd><p>Specify the timestamp (in seconds) of the frame to start to apply the fade
+effect. If both start_frame and start_time are specified, the fade will start at
+whichever comes last.  Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
+<dd><p>The number of seconds for which the fade effect has to last. At the end of the
+fade-in effect the output video will have the same intensity as the input video,
+at the end of the fade-out transition the output video will be filled with the
+selected &lsquo;<samp>color</samp>&rsquo;.
+If both duration and nb_frames are specified, duration is used. Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>color, c</samp>&rsquo;</dt>
+<dd><p>Specify the color of the fade. Default is &quot;black&quot;.
+</p></dd>
+</dl>
+
+<a name="Examples-86"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-86">35.26.1 Examples</a></h3>
+
+<ul>
+<li>
+Fade in first 30 frames of video:
+<table><tr><td>&nbsp;</td><td><pre class="example">fade=in:0:30
+</pre></td></tr></table>
+
+<p>The command above is equivalent to:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">fade=t=in:s=0:n=30
+</pre></td></tr></table>
+
+</li><li>
+Fade out last 45 frames of a 200-frame video:
+<table><tr><td>&nbsp;</td><td><pre class="example">fade=out:155:45
+fade=type=out:start_frame=155:nb_frames=45
+</pre></td></tr></table>
+
+</li><li>
+Fade in first 25 frames and fade out last 25 frames of a 1000-frame video:
+<table><tr><td>&nbsp;</td><td><pre class="example">fade=in:0:25, fade=out:975:25
+</pre></td></tr></table>
+
+</li><li>
+Make first 5 frames yellow, then fade in from frame 5-24:
+<table><tr><td>&nbsp;</td><td><pre class="example">fade=in:5:20:color=yellow
+</pre></td></tr></table>
+
+</li><li>
+Fade in alpha over first 25 frames of video:
+<table><tr><td>&nbsp;</td><td><pre class="example">fade=in:0:25:alpha=1
+</pre></td></tr></table>
+
+</li><li>
+Make first 5.5 seconds black, then fade in for 0.5 seconds:
+<table><tr><td>&nbsp;</td><td><pre class="example">fade=t=in:st=5.5:d=0.5
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="field"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-field">35.27 field</a></h2>
+
+<p>Extract a single field from an interlaced image using stride
+arithmetic to avoid wasting CPU time. The output frames are marked as
+non-interlaced.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>type</samp>&rsquo;</dt>
+<dd><p>Specify whether to extract the top (if the value is <code>0</code> or
+<code>top</code>) or the bottom field (if the value is <code>1</code> or
+<code>bottom</code>).
+</p></dd>
+</dl>
+
+<a name="fieldmatch"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-fieldmatch">35.28 fieldmatch</a></h2>
+
+<p>Field matching filter for inverse telecine. It is meant to reconstruct the
+progressive frames from a telecined stream. The filter does not drop duplicated
+frames, so to achieve a complete inverse telecine <code>fieldmatch</code> needs to be
+followed by a decimation filter such as <a href="#decimate">decimate</a> in the filtergraph.
+</p>
+<p>The separation of the field matching and the decimation is notably motivated by
+the possibility of inserting a de-interlacing filter fallback between the two.
+If the source has mixed telecined and real interlaced content,
+<code>fieldmatch</code> will not be able to match fields for the interlaced parts.
+But these remaining combed frames will be marked as interlaced, and thus can be
+de-interlaced by a later filter such as <a href="#yadif">yadif</a> before decimation.
+</p>
+<p>In addition to the various configuration options, <code>fieldmatch</code> can take an
+optional second stream, activated through the &lsquo;<samp>ppsrc</samp>&rsquo; option. If
+enabled, the frames reconstruction will be based on the fields and frames from
+this second stream. This allows the first input to be pre-processed in order to
+help the various algorithms of the filter, while keeping the output lossless
+(assuming the fields are matched properly). Typically, a field-aware denoiser,
+or brightness/contrast adjustments can help.
+</p>
+<p>Note that this filter uses the same algorithms as TIVTC/TFM (AviSynth project)
+and VIVTC/VFM (VapourSynth project). The later is a light clone of TFM from
+which <code>fieldmatch</code> is based on. While the semantic and usage are very
+close, some behaviour and options names can differ.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>order</samp>&rsquo;</dt>
+<dd><p>Specify the assumed field order of the input stream. Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Auto detect parity (use FFmpeg&rsquo;s internal parity value).
+</p></dd>
+<dt> &lsquo;<samp>bff</samp>&rsquo;</dt>
+<dd><p>Assume bottom field first.
+</p></dd>
+<dt> &lsquo;<samp>tff</samp>&rsquo;</dt>
+<dd><p>Assume top field first.
+</p></dd>
+</dl>
+
+<p>Note that it is sometimes recommended not to trust the parity announced by the
+stream.
+</p>
+<p>Default value is <var>auto</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Set the matching mode or strategy to use. &lsquo;<samp>pc</samp>&rsquo; mode is the safest in the
+sense that it won&rsquo;t risk creating jerkiness due to duplicate frames when
+possible, but if there are bad edits or blended fields it will end up
+outputting combed frames when a good match might actually exist. On the other
+hand, &lsquo;<samp>pcn_ub</samp>&rsquo; mode is the most risky in terms of creating jerkiness,
+but will almost always find a good frame if there is one. The other values are
+all somewhere in between &lsquo;<samp>pc</samp>&rsquo; and &lsquo;<samp>pcn_ub</samp>&rsquo; in terms of risking
+jerkiness and creating duplicate frames versus finding good matches in sections
+with bad edits, orphaned fields, blended fields, etc.
+</p>
+<p>More details about p/c/n/u/b are available in <a href="#p_002fc_002fn_002fu_002fb-meaning">p/c/n/u/b meaning</a> section.
+</p>
+<p>Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>pc</samp>&rsquo;</dt>
+<dd><p>2-way matching (p/c)
+</p></dd>
+<dt> &lsquo;<samp>pc_n</samp>&rsquo;</dt>
+<dd><p>2-way matching, and trying 3rd match if still combed (p/c + n)
+</p></dd>
+<dt> &lsquo;<samp>pc_u</samp>&rsquo;</dt>
+<dd><p>2-way matching, and trying 3rd match (same order) if still combed (p/c + u)
+</p></dd>
+<dt> &lsquo;<samp>pc_n_ub</samp>&rsquo;</dt>
+<dd><p>2-way matching, trying 3rd match if still combed, and trying 4th/5th matches if
+still combed (p/c + n + u/b)
+</p></dd>
+<dt> &lsquo;<samp>pcn</samp>&rsquo;</dt>
+<dd><p>3-way matching (p/c/n)
+</p></dd>
+<dt> &lsquo;<samp>pcn_ub</samp>&rsquo;</dt>
+<dd><p>3-way matching, and trying 4th/5th matches if all 3 of the original matches are
+detected as combed (p/c/n + u/b)
+</p></dd>
+</dl>
+
+<p>The parenthesis at the end indicate the matches that would be used for that
+mode assuming &lsquo;<samp>order</samp>&rsquo;=<var>tff</var> (and &lsquo;<samp>field</samp>&rsquo; on <var>auto</var> or
+<var>top</var>).
+</p>
+<p>In terms of speed &lsquo;<samp>pc</samp>&rsquo; mode is by far the fastest and &lsquo;<samp>pcn_ub</samp>&rsquo; is
+the slowest.
+</p>
+<p>Default value is <var>pc_n</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>ppsrc</samp>&rsquo;</dt>
+<dd><p>Mark the main input stream as a pre-processed input, and enable the secondary
+input stream as the clean source to pick the fields from. See the filter
+introduction for more details. It is similar to the &lsquo;<samp>clip2</samp>&rsquo; feature from
+VFM/TFM.
+</p>
+<p>Default value is <code>0</code> (disabled).
+</p>
+</dd>
+<dt> &lsquo;<samp>field</samp>&rsquo;</dt>
+<dd><p>Set the field to match from. It is recommended to set this to the same value as
+&lsquo;<samp>order</samp>&rsquo; unless you experience matching failures with that setting. In
+certain circumstances changing the field that is used to match from can have a
+large impact on matching performance. Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Automatic (same value as &lsquo;<samp>order</samp>&rsquo;).
+</p></dd>
+<dt> &lsquo;<samp>bottom</samp>&rsquo;</dt>
+<dd><p>Match from the bottom field.
+</p></dd>
+<dt> &lsquo;<samp>top</samp>&rsquo;</dt>
+<dd><p>Match from the top field.
+</p></dd>
+</dl>
+
+<p>Default value is <var>auto</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>mchroma</samp>&rsquo;</dt>
+<dd><p>Set whether or not chroma is included during the match comparisons. In most
+cases it is recommended to leave this enabled. You should set this to <code>0</code>
+only if your clip has bad chroma problems such as heavy rainbowing or other
+artifacts. Setting this to <code>0</code> could also be used to speed things up at
+the cost of some accuracy.
+</p>
+<p>Default value is <code>1</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>y0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y1</samp>&rsquo;</dt>
+<dd><p>These define an exclusion band which excludes the lines between &lsquo;<samp>y0</samp>&rsquo; and
+&lsquo;<samp>y1</samp>&rsquo; from being included in the field matching decision. An exclusion
+band can be used to ignore subtitles, a logo, or other things that may
+interfere with the matching. &lsquo;<samp>y0</samp>&rsquo; sets the starting scan line and
+&lsquo;<samp>y1</samp>&rsquo; sets the ending line; all lines in between &lsquo;<samp>y0</samp>&rsquo; and
+&lsquo;<samp>y1</samp>&rsquo; (including &lsquo;<samp>y0</samp>&rsquo; and &lsquo;<samp>y1</samp>&rsquo;) will be ignored. Setting
+&lsquo;<samp>y0</samp>&rsquo; and &lsquo;<samp>y1</samp>&rsquo; to the same value will disable the feature.
+&lsquo;<samp>y0</samp>&rsquo; and &lsquo;<samp>y1</samp>&rsquo; defaults to <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>scthresh</samp>&rsquo;</dt>
+<dd><p>Set the scene change detection threshold as a percentage of maximum change on
+the luma plane. Good values are in the <code>[8.0, 14.0]</code> range. Scene change
+detection is only relevant in case &lsquo;<samp>combmatch</samp>&rsquo;=<var>sc</var>.  The range for
+&lsquo;<samp>scthresh</samp>&rsquo; is <code>[0.0, 100.0]</code>.
+</p>
+<p>Default value is <code>12.0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>combmatch</samp>&rsquo;</dt>
+<dd><p>When &lsquo;<samp>combatch</samp>&rsquo; is not <var>none</var>, <code>fieldmatch</code> will take into
+account the combed scores of matches when deciding what match to use as the
+final match. Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>No final matching based on combed scores.
+</p></dd>
+<dt> &lsquo;<samp>sc</samp>&rsquo;</dt>
+<dd><p>Combed scores are only used when a scene change is detected.
+</p></dd>
+<dt> &lsquo;<samp>full</samp>&rsquo;</dt>
+<dd><p>Use combed scores all the time.
+</p></dd>
+</dl>
+
+<p>Default is <var>sc</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>combdbg</samp>&rsquo;</dt>
+<dd><p>Force <code>fieldmatch</code> to calculate the combed metrics for certain matches and
+print them. This setting is known as &lsquo;<samp>micout</samp>&rsquo; in TFM/VFM vocabulary.
+Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>No forced calculation.
+</p></dd>
+<dt> &lsquo;<samp>pcn</samp>&rsquo;</dt>
+<dd><p>Force p/c/n calculations.
+</p></dd>
+<dt> &lsquo;<samp>pcnub</samp>&rsquo;</dt>
+<dd><p>Force p/c/n/u/b calculations.
+</p></dd>
+</dl>
+
+<p>Default value is <var>none</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>cthresh</samp>&rsquo;</dt>
+<dd><p>This is the area combing threshold used for combed frame detection. This
+essentially controls how &quot;strong&quot; or &quot;visible&quot; combing must be to be detected.
+Larger values mean combing must be more visible and smaller values mean combing
+can be less visible or strong and still be detected. Valid settings are from
+<code>-1</code> (every pixel will be detected as combed) to <code>255</code> (no pixel will
+be detected as combed). This is basically a pixel difference value. A good
+range is <code>[8, 12]</code>.
+</p>
+<p>Default value is <code>9</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma</samp>&rsquo;</dt>
+<dd><p>Sets whether or not chroma is considered in the combed frame decision.  Only
+disable this if your source has chroma problems (rainbowing, etc.) that are
+causing problems for the combed frame detection with chroma enabled. Actually,
+using &lsquo;<samp>chroma</samp>&rsquo;=<var>0</var> is usually more reliable, except for the case
+where there is chroma only combing in the source.
+</p>
+<p>Default value is <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>blockx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>blocky</samp>&rsquo;</dt>
+<dd><p>Respectively set the x-axis and y-axis size of the window used during combed
+frame detection. This has to do with the size of the area in which
+&lsquo;<samp>combpel</samp>&rsquo; pixels are required to be detected as combed for a frame to be
+declared combed. See the &lsquo;<samp>combpel</samp>&rsquo; parameter description for more info.
+Possible values are any number that is a power of 2 starting at 4 and going up
+to 512.
+</p>
+<p>Default value is <code>16</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>combpel</samp>&rsquo;</dt>
+<dd><p>The number of combed pixels inside any of the &lsquo;<samp>blocky</samp>&rsquo; by
+&lsquo;<samp>blockx</samp>&rsquo; size blocks on the frame for the frame to be detected as
+combed. While &lsquo;<samp>cthresh</samp>&rsquo; controls how &quot;visible&quot; the combing must be, this
+setting controls &quot;how much&quot; combing there must be in any localized area (a
+window defined by the &lsquo;<samp>blockx</samp>&rsquo; and &lsquo;<samp>blocky</samp>&rsquo; settings) on the
+frame. Minimum value is <code>0</code> and maximum is <code>blocky x blockx</code> (at
+which point no frames will ever be detected as combed). This setting is known
+as &lsquo;<samp>MI</samp>&rsquo; in TFM/VFM vocabulary.
+</p>
+<p>Default value is <code>80</code>.
+</p></dd>
+</dl>
+
+<p><a name="p_002fc_002fn_002fu_002fb-meaning"></a>
+</p><a name="p_002fc_002fn_002fu_002fb-meaning-1"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-p_002fc_002fn_002fu_002fb-meaning-1">35.28.1 p/c/n/u/b meaning</a></h3>
+
+<a name="p_002fc_002fn"></a>
+<h4 class="subsubsection"><a href="ffprobe-all.html#toc-p_002fc_002fn">35.28.1.1 p/c/n</a></h4>
+
+<p>We assume the following telecined stream:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">Top fields:     1 2 2 3 4
+Bottom fields:  1 2 3 4 4
+</pre></td></tr></table>
+
+<p>The numbers correspond to the progressive frame the fields relate to. Here, the
+first two frames are progressive, the 3rd and 4th are combed, and so on.
+</p>
+<p>When <code>fieldmatch</code> is configured to run a matching from bottom
+(&lsquo;<samp>field</samp>&rsquo;=<var>bottom</var>) this is how this input stream get transformed:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">Input stream:
+                T     1 2 2 3 4
+                B     1 2 3 4 4   &lt;-- matching reference
+
+Matches:              c c n n c
+
+Output stream:
+                T     1 2 3 4 4
+                B     1 2 3 4 4
+</pre></td></tr></table>
+
+<p>As a result of the field matching, we can see that some frames get duplicated.
+To perform a complete inverse telecine, you need to rely on a decimation filter
+after this operation. See for instance the <a href="#decimate">decimate</a> filter.
+</p>
+<p>The same operation now matching from top fields (&lsquo;<samp>field</samp>&rsquo;=<var>top</var>)
+looks like this:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">Input stream:
+                T     1 2 2 3 4   &lt;-- matching reference
+                B     1 2 3 4 4
+
+Matches:              c c p p c
+
+Output stream:
+                T     1 2 2 3 4
+                B     1 2 2 3 4
+</pre></td></tr></table>
+
+<p>In these examples, we can see what <var>p</var>, <var>c</var> and <var>n</var> mean;
+basically, they refer to the frame and field of the opposite parity:
+</p>
+<ul>
+<li> <var>p</var> matches the field of the opposite parity in the previous frame
+</li><li> <var>c</var> matches the field of the opposite parity in the current frame
+</li><li> <var>n</var> matches the field of the opposite parity in the next frame
+</li></ul>
+
+<a name="u_002fb"></a>
+<h4 class="subsubsection"><a href="ffprobe-all.html#toc-u_002fb">35.28.1.2 u/b</a></h4>
+
+<p>The <var>u</var> and <var>b</var> matching are a bit special in the sense that they match
+from the opposite parity flag. In the following examples, we assume that we are
+currently matching the 2nd frame (Top:2, bottom:2). According to the match, a
+&rsquo;x&rsquo; is placed above and below each matched fields.
+</p>
+<p>With bottom matching (&lsquo;<samp>field</samp>&rsquo;=<var>bottom</var>):
+</p><table><tr><td>&nbsp;</td><td><pre class="example">Match:           c         p           n          b          u
+
+                 x       x               x        x          x
+  Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
+  Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
+                 x         x           x        x              x
+
+Output frames:
+                 2          1          2          2          2
+                 2          2          2          1          3
+</pre></td></tr></table>
+
+<p>With top matching (&lsquo;<samp>field</samp>&rsquo;=<var>top</var>):
+</p><table><tr><td>&nbsp;</td><td><pre class="example">Match:           c         p           n          b          u
+
+                 x         x           x        x              x
+  Top          1 2 2     1 2 2       1 2 2      1 2 2      1 2 2
+  Bottom       1 2 3     1 2 3       1 2 3      1 2 3      1 2 3
+                 x       x               x        x          x
+
+Output frames:
+                 2          2          2          1          2
+                 2          1          3          2          2
+</pre></td></tr></table>
+
+<a name="Examples-37"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-37">35.28.2 Examples</a></h3>
+
+<p>Simple IVTC of a top field first telecined stream:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">fieldmatch=order=tff:combmatch=none, decimate
+</pre></td></tr></table>
+
+<p>Advanced IVTC, with fallback on <a href="#yadif">yadif</a> for still combed frames:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">fieldmatch=order=tff:combmatch=full, yadif=deint=interlaced, decimate
+</pre></td></tr></table>
+
+<a name="fieldorder"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-fieldorder">35.29 fieldorder</a></h2>
+
+<p>Transform the field order of the input video.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>order</samp>&rsquo;</dt>
+<dd><p>Output field order. Valid values are <var>tff</var> for top field first or <var>bff</var>
+for bottom field first.
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>tff</samp>&rsquo;.
+</p>
+<p>Transformation is achieved by shifting the picture content up or down
+by one line, and filling the remaining line with appropriate picture content.
+This method is consistent with most broadcast field order converters.
+</p>
+<p>If the input video is not flagged as being interlaced, or it is already
+flagged as being of the required output field order then this filter does
+not alter the incoming video.
+</p>
+<p>This filter is very useful when converting to or from PAL DV material,
+which is bottom field first.
+</p>
+<p>For example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.vob -vf &quot;fieldorder=bff&quot; out.dv
+</pre></td></tr></table>
+
+<a name="fifo"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-fifo">35.30 fifo</a></h2>
+
+<p>Buffer input images and send them when they are requested.
+</p>
+<p>This filter is mainly useful when auto-inserted by the libavfilter
+framework.
+</p>
+<p>The filter does not take parameters.
+</p>
+<p><a name="format"></a>
+</p><a name="format-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-format-1">35.31 format</a></h2>
+
+<p>Convert the input video to one of the specified pixel formats.
+Libavfilter will try to pick one that is supported for the input to
+the next filter.
+</p>
+<p>This filter accepts the following parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>pix_fmts</samp>&rsquo;</dt>
+<dd><p>A &rsquo;|&rsquo;-separated list of pixel format names, for example
+&quot;pix_fmts=yuv420p|monow|rgb24&quot;.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-75"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-75">35.31.1 Examples</a></h3>
+
+<ul>
+<li>
+Convert the input video to the format <var>yuv420p</var>
+<table><tr><td>&nbsp;</td><td><pre class="example">format=pix_fmts=yuv420p
+</pre></td></tr></table>
+
+<p>Convert the input video to any of the formats in the list
+</p><table><tr><td>&nbsp;</td><td><pre class="example">format=pix_fmts=yuv420p|yuv444p|yuv410p
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="fps"></a>
+</p><a name="fps-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-fps-1">35.32 fps</a></h2>
+
+<p>Convert the video to specified constant frame rate by duplicating or dropping
+frames as necessary.
+</p>
+<p>This filter accepts the following named parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>fps</samp>&rsquo;</dt>
+<dd><p>Desired output frame rate. The default is <code>25</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>round</samp>&rsquo;</dt>
+<dd><p>Rounding method.
+</p>
+<p>Possible values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>zero</samp>&rsquo;</dt>
+<dd><p>zero round towards 0
+</p></dd>
+<dt> &lsquo;<samp>inf</samp>&rsquo;</dt>
+<dd><p>round away from 0
+</p></dd>
+<dt> &lsquo;<samp>down</samp>&rsquo;</dt>
+<dd><p>round towards -infinity
+</p></dd>
+<dt> &lsquo;<samp>up</samp>&rsquo;</dt>
+<dd><p>round towards +infinity
+</p></dd>
+<dt> &lsquo;<samp>near</samp>&rsquo;</dt>
+<dd><p>round to nearest
+</p></dd>
+</dl>
+<p>The default is <code>near</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_time</samp>&rsquo;</dt>
+<dd><p>Assume the first PTS should be the given value, in seconds. This allows for
+padding/trimming at the start of stream. By default, no assumption is made
+about the first frame&rsquo;s expected PTS, so no padding or trimming is done.
+For example, this could be set to 0 to pad the beginning with duplicates of
+the first frame if a video stream starts after the audio stream or to trim any
+frames with a negative PTS.
+</p>
+</dd>
+</dl>
+
+<p>Alternatively, the options can be specified as a flat string:
+<var>fps</var>[:<var>round</var>].
+</p>
+<p>See also the <a href="#setpts">setpts</a> filter.
+</p>
+<a name="Examples-44"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-44">35.32.1 Examples</a></h3>
+
+<ul>
+<li>
+A typical usage in order to set the fps to 25:
+<table><tr><td>&nbsp;</td><td><pre class="example">fps=fps=25
+</pre></td></tr></table>
+
+</li><li>
+Sets the fps to 24, using abbreviation and rounding method to round to nearest:
+<table><tr><td>&nbsp;</td><td><pre class="example">fps=fps=film:round=near
+</pre></td></tr></table>
+</li></ul>
+
+<a name="framestep"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-framestep">35.33 framestep</a></h2>
+
+<p>Select one frame every N-th frame.
+</p>
+<p>This filter accepts the following option:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>step</samp>&rsquo;</dt>
+<dd><p>Select frame after every <code>step</code> frames.
+Allowed values are positive integers higher than 0. Default value is <code>1</code>.
+</p></dd>
+</dl>
+
+<p><a name="frei0r"></a>
+</p><a name="frei0r-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-frei0r-1">35.34 frei0r</a></h2>
+
+<p>Apply a frei0r effect to the input video.
+</p>
+<p>To enable compilation of this filter you need to install the frei0r
+header and configure FFmpeg with <code>--enable-frei0r</code>.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filter_name</samp>&rsquo;</dt>
+<dd><p>The name to the frei0r effect to load. If the environment variable
+<code>FREI0R_PATH</code> is defined, the frei0r effect is searched in each one of the
+directories specified by the colon separated list in <code>FREIOR_PATH</code>,
+otherwise in the standard frei0r paths, which are in this order:
+&lsquo;<tt>HOME/.frei0r-1/lib/</tt>&rsquo;, &lsquo;<tt>/usr/local/lib/frei0r-1/</tt>&rsquo;,
+&lsquo;<tt>/usr/lib/frei0r-1/</tt>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>filter_params</samp>&rsquo;</dt>
+<dd><p>A &rsquo;|&rsquo;-separated list of parameters to pass to the frei0r effect.
+</p>
+</dd>
+</dl>
+
+<p>A frei0r effect parameter can be a boolean (whose values are specified
+with &quot;y&quot; and &quot;n&quot;), a double, a color (specified by the syntax
+<var>R</var>/<var>G</var>/<var>B</var>, (<var>R</var>, <var>G</var>, and <var>B</var> being float
+numbers from 0.0 to 1.0) or by a color description specified in the &quot;Color&quot;
+section in the ffmpeg-utils manual), a position (specified by the syntax <var>X</var>/<var>Y</var>,
+<var>X</var> and <var>Y</var> being float numbers) and a string.
+</p>
+<p>The number and kind of parameters depend on the loaded effect. If an
+effect parameter is not specified the default value is set.
+</p>
+<a name="Examples"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples">35.34.1 Examples</a></h3>
+
+<ul>
+<li>
+Apply the distort0r effect, set the first two double parameters:
+<table><tr><td>&nbsp;</td><td><pre class="example">frei0r=filter_name=distort0r:filter_params=0.5|0.01
+</pre></td></tr></table>
+
+</li><li>
+Apply the colordistance effect, take a color as first parameter:
+<table><tr><td>&nbsp;</td><td><pre class="example">frei0r=colordistance:0.2/0.3/0.4
+frei0r=colordistance:violet
+frei0r=colordistance:0x112233
+</pre></td></tr></table>
+
+</li><li>
+Apply the perspective effect, specify the top left and top right image
+positions:
+<table><tr><td>&nbsp;</td><td><pre class="example">frei0r=perspective:0.2/0.2|0.8/0.2
+</pre></td></tr></table>
+</li></ul>
+
+<p>For more information see:
+<a href="http://frei0r.dyne.org">http://frei0r.dyne.org</a>
+</p>
+<a name="geq"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-geq">35.35 geq</a></h2>
+
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>lum_expr, lum</samp>&rsquo;</dt>
+<dd><p>Set the luminance expression.
+</p></dd>
+<dt> &lsquo;<samp>cb_expr, cb</samp>&rsquo;</dt>
+<dd><p>Set the chrominance blue expression.
+</p></dd>
+<dt> &lsquo;<samp>cr_expr, cr</samp>&rsquo;</dt>
+<dd><p>Set the chrominance red expression.
+</p></dd>
+<dt> &lsquo;<samp>alpha_expr, a</samp>&rsquo;</dt>
+<dd><p>Set the alpha expression.
+</p></dd>
+<dt> &lsquo;<samp>red_expr, r</samp>&rsquo;</dt>
+<dd><p>Set the red expression.
+</p></dd>
+<dt> &lsquo;<samp>green_expr, g</samp>&rsquo;</dt>
+<dd><p>Set the green expression.
+</p></dd>
+<dt> &lsquo;<samp>blue_expr, b</samp>&rsquo;</dt>
+<dd><p>Set the blue expression.
+</p></dd>
+</dl>
+
+<p>The colorspace is selected according to the specified options. If one
+of the &lsquo;<samp>lum_expr</samp>&rsquo;, &lsquo;<samp>cb_expr</samp>&rsquo;, or &lsquo;<samp>cr_expr</samp>&rsquo;
+options is specified, the filter will automatically select a YCbCr
+colorspace. If one of the &lsquo;<samp>red_expr</samp>&rsquo;, &lsquo;<samp>green_expr</samp>&rsquo;, or
+&lsquo;<samp>blue_expr</samp>&rsquo; options is specified, it will select an RGB
+colorspace.
+</p>
+<p>If one of the chrominance expression is not defined, it falls back on the other
+one. If no alpha expression is specified it will evaluate to opaque value.
+If none of chrominance expressions are specified, they will evaluate
+to the luminance expression.
+</p>
+<p>The expressions can use the following variables and functions:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>N</samp>&rsquo;</dt>
+<dd><p>The sequential number of the filtered frame, starting from <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>X</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>Y</samp>&rsquo;</dt>
+<dd><p>The coordinates of the current sample.
+</p>
+</dd>
+<dt> &lsquo;<samp>W</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>H</samp>&rsquo;</dt>
+<dd><p>The width and height of the image.
+</p>
+</dd>
+<dt> &lsquo;<samp>SW</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>SH</samp>&rsquo;</dt>
+<dd><p>Width and height scale depending on the currently filtered plane. It is the
+ratio between the corresponding luma plane number of pixels and the current
+plane ones. E.g. for YUV4:2:0 the values are <code>1,1</code> for the luma plane, and
+<code>0.5,0.5</code> for chroma planes.
+</p>
+</dd>
+<dt> &lsquo;<samp>T</samp>&rsquo;</dt>
+<dd><p>Time of the current frame, expressed in seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>p(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the value of the pixel at location (<var>x</var>,<var>y</var>) of the current
+plane.
+</p>
+</dd>
+<dt> &lsquo;<samp>lum(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the value of the pixel at location (<var>x</var>,<var>y</var>) of the luminance
+plane.
+</p>
+</dd>
+<dt> &lsquo;<samp>cb(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the value of the pixel at location (<var>x</var>,<var>y</var>) of the
+blue-difference chroma plane. Return 0 if there is no such plane.
+</p>
+</dd>
+<dt> &lsquo;<samp>cr(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the value of the pixel at location (<var>x</var>,<var>y</var>) of the
+red-difference chroma plane. Return 0 if there is no such plane.
+</p>
+</dd>
+<dt> &lsquo;<samp>r(x, y)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>g(x, y)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>b(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the value of the pixel at location (<var>x</var>,<var>y</var>) of the
+red/green/blue component. Return 0 if there is no such component.
+</p>
+</dd>
+<dt> &lsquo;<samp>alpha(x, y)</samp>&rsquo;</dt>
+<dd><p>Return the value of the pixel at location (<var>x</var>,<var>y</var>) of the alpha
+plane. Return 0 if there is no such plane.
+</p></dd>
+</dl>
+
+<p>For functions, if <var>x</var> and <var>y</var> are outside the area, the value will be
+automatically clipped to the closer edge.
+</p>
+<a name="Examples-74"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-74">35.35.1 Examples</a></h3>
+
+<ul>
+<li>
+Flip the image horizontally:
+<table><tr><td>&nbsp;</td><td><pre class="example">geq=p(W-X\,Y)
+</pre></td></tr></table>
+
+</li><li>
+Generate a bidimensional sine wave, with angle <code>PI/3</code> and a
+wavelength of 100 pixels:
+<table><tr><td>&nbsp;</td><td><pre class="example">geq=128 + 100*sin(2*(PI/100)*(cos(PI/3)*(X-50*T) + sin(PI/3)*Y)):128:128
+</pre></td></tr></table>
+
+</li><li>
+Generate a fancy enigmatic moving light:
+<table><tr><td>&nbsp;</td><td><pre class="example">nullsrc=s=256x256,geq=random(1)/hypot(X-cos(N*0.07)*W/2-W/2\,Y-sin(N*0.09)*H/2-H/2)^2*1000000*sin(N*0.02):128:128
+</pre></td></tr></table>
+
+</li><li>
+Generate a quick emboss effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">format=gray,geq=lum_expr='(p(X,Y)+(256-p(X-4,Y-4)))/2'
+</pre></td></tr></table>
+
+</li><li>
+Modify RGB components depending on pixel position:
+<table><tr><td>&nbsp;</td><td><pre class="example">geq=r='X/W*r(X,Y)':g='(1-X/W)*g(X,Y)':b='(H-Y)/H*b(X,Y)'
+</pre></td></tr></table>
+</li></ul>
+
+<a name="gradfun"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-gradfun">35.36 gradfun</a></h2>
+
+<p>Fix the banding artifacts that are sometimes introduced into nearly flat
+regions by truncation to 8bit color depth.
+Interpolate the gradients that should go where the bands are, and
+dither them.
+</p>
+<p>This filter is designed for playback only.  Do not use it prior to
+lossy compression, because compression tends to lose the dither and
+bring back the bands.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>strength</samp>&rsquo;</dt>
+<dd><p>The maximum amount by which the filter will change any one pixel. Also the
+threshold for detecting nearly flat regions. Acceptable values range from .51 to
+64, default value is 1.2, out-of-range values will be clipped to the valid
+range.
+</p>
+</dd>
+<dt> &lsquo;<samp>radius</samp>&rsquo;</dt>
+<dd><p>The neighborhood to fit the gradient to. A larger radius makes for smoother
+gradients, but also prevents the filter from modifying the pixels near detailed
+regions. Acceptable values are 8-32, default value is 16, out-of-range values
+will be clipped to the valid range.
+</p>
+</dd>
+</dl>
+
+<p>Alternatively, the options can be specified as a flat string:
+<var>strength</var>[:<var>radius</var>]
+</p>
+<a name="Examples-76"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-76">35.36.1 Examples</a></h3>
+
+<ul>
+<li>
+Apply the filter with a <code>3.5</code> strength and radius of <code>8</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">gradfun=3.5:8
+</pre></td></tr></table>
+
+</li><li>
+Specify radius, omitting the strength (which will fall-back to the default
+value):
+<table><tr><td>&nbsp;</td><td><pre class="example">gradfun=radius=8
+</pre></td></tr></table>
+
+</li></ul>
+
+<p><a name="haldclut"></a>
+</p><a name="haldclut-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-haldclut-1">35.37 haldclut</a></h2>
+
+<p>Apply a Hald CLUT to a video stream.
+</p>
+<p>First input is the video stream to process, and second one is the Hald CLUT.
+The Hald CLUT input can be a simple picture or a complete video stream.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>shortest</samp>&rsquo;</dt>
+<dd><p>Force termination when the shortest input terminates. Default is <code>0</code>.
+</p></dd>
+<dt> &lsquo;<samp>repeatlast</samp>&rsquo;</dt>
+<dd><p>Continue applying the last CLUT after the end of the stream. A value of
+<code>0</code> disable the filter after the last frame of the CLUT is reached.
+Default is <code>1</code>.
+</p></dd>
+</dl>
+
+<p><code>haldclut</code> also has the same interpolation options as <a href="#lut3d">lut3d</a> (both
+filters share the same internals).
+</p>
+<p>More information about the Hald CLUT can be found on Eskil Steenberg&rsquo;s website
+(Hald CLUT author) at <a href="http://www.quelsolaar.com/technology/clut.html">http://www.quelsolaar.com/technology/clut.html</a>.
+</p>
+<a name="Workflow-examples"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Workflow-examples">35.37.1 Workflow examples</a></h3>
+
+<a name="Hald-CLUT-video-stream"></a>
+<h4 class="subsubsection"><a href="ffprobe-all.html#toc-Hald-CLUT-video-stream">35.37.1.1 Hald CLUT video stream</a></h4>
+
+<p>Generate an identity Hald CLUT stream altered with various effects:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f lavfi -i <a href="#haldclutsrc">haldclutsrc</a>=8 -vf &quot;hue=H=2*PI*t:s=sin(2*PI*t)+1, curves=cross_process&quot; -t 10 -c:v ffv1 clut.nut
+</pre></td></tr></table>
+
+<p>Note: make sure you use a lossless codec.
+</p>
+<p>Then use it with <code>haldclut</code> to apply it on some random stream:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f lavfi -i mandelbrot -i clut.nut -filter_complex '[0][1] haldclut' -t 20 mandelclut.mkv
+</pre></td></tr></table>
+
+<p>The Hald CLUT will be applied to the 10 first seconds (duration of
+&lsquo;<tt>clut.nut</tt>&rsquo;), then the latest picture of that CLUT stream will be applied
+to the remaining frames of the <code>mandelbrot</code> stream.
+</p>
+<a name="Hald-CLUT-with-preview"></a>
+<h4 class="subsubsection"><a href="ffprobe-all.html#toc-Hald-CLUT-with-preview">35.37.1.2 Hald CLUT with preview</a></h4>
+
+<p>A Hald CLUT is supposed to be a squared image of <code>Level*Level*Level</code> by
+<code>Level*Level*Level</code> pixels. For a given Hald CLUT, FFmpeg will select the
+biggest possible square starting at the top left of the picture. The remaining
+padding pixels (bottom or right) will be ignored. This area can be used to add
+a preview of the Hald CLUT.
+</p>
+<p>Typically, the following generated Hald CLUT will be supported by the
+<code>haldclut</code> filter:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f lavfi -i <a href="#haldclutsrc">haldclutsrc</a>=8 -vf &quot;
+   pad=iw+320 [padded_clut];
+   smptebars=s=320x256, split [a][b];
+   [padded_clut][a] overlay=W-320:h, curves=color_negative [main];
+   [main][b] overlay=W-320&quot; -frames:v 1 clut.png
+</pre></td></tr></table>
+
+<p>It contains the original and a preview of the effect of the CLUT: SMPTE color
+bars are displayed on the right-top, and below the same color bars processed by
+the color changes.
+</p>
+<p>Then, the effect of this Hald CLUT can be visualized with:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay input.mkv -vf &quot;movie=clut.png, [in] haldclut&quot;
+</pre></td></tr></table>
+
+<a name="hflip"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-hflip">35.38 hflip</a></h2>
+
+<p>Flip the input video horizontally.
+</p>
+<p>For example to horizontally flip the input video with <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -vf &quot;hflip&quot; out.avi
+</pre></td></tr></table>
+
+<a name="histeq"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-histeq">35.39 histeq</a></h2>
+<p>This filter applies a global color histogram equalization on a
+per-frame basis.
+</p>
+<p>It can be used to correct video that has a compressed range of pixel
+intensities.  The filter redistributes the pixel intensities to
+equalize their distribution across the intensity range. It may be
+viewed as an &quot;automatically adjusting contrast filter&quot;. This filter is
+useful only for correcting degraded or poorly captured source
+video.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>strength</samp>&rsquo;</dt>
+<dd><p>Determine the amount of equalization to be applied.  As the strength
+is reduced, the distribution of pixel intensities more-and-more
+approaches that of the input frame. The value must be a float number
+in the range [0,1] and defaults to 0.200.
+</p>
+</dd>
+<dt> &lsquo;<samp>intensity</samp>&rsquo;</dt>
+<dd><p>Set the maximum intensity that can generated and scale the output
+values appropriately.  The strength should be set as desired and then
+the intensity can be limited if needed to avoid washing-out. The value
+must be a float number in the range [0,1] and defaults to 0.210.
+</p>
+</dd>
+<dt> &lsquo;<samp>antibanding</samp>&rsquo;</dt>
+<dd><p>Set the antibanding level. If enabled the filter will randomly vary
+the luminance of output pixels by a small amount to avoid banding of
+the histogram. Possible values are <code>none</code>, <code>weak</code> or
+<code>strong</code>. It defaults to <code>none</code>.
+</p></dd>
+</dl>
+
+<a name="histogram"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-histogram">35.40 histogram</a></h2>
+
+<p>Compute and draw a color distribution histogram for the input video.
+</p>
+<p>The computed histogram is a representation of distribution of color components
+in an image.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Set histogram mode.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>levels</samp>&rsquo;</dt>
+<dd><p>standard histogram that display color components distribution in an image.
+Displays color graph for each color component. Shows distribution
+of the Y, U, V, A or R, G, B components, depending on input format,
+in current frame. Bellow each graph is color component scale meter.
+</p>
+</dd>
+<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
+<dd><p>chroma values in vectorscope, if brighter more such chroma values are
+distributed in an image.
+Displays chroma values (U/V color placement) in two dimensional graph
+(which is called a vectorscope). It can be used to read of the hue and
+saturation of the current frame. At a same time it is a histogram.
+The whiter a pixel in the vectorscope, the more pixels of the input frame
+correspond to that pixel (that is the more pixels have this chroma value).
+The V component is displayed on the horizontal (X) axis, with the leftmost
+side being V = 0 and the rightmost side being V = 255.
+The U component is displayed on the vertical (Y) axis, with the top
+representing U = 0 and the bottom representing U = 255.
+</p>
+<p>The position of a white pixel in the graph corresponds to the chroma value
+of a pixel of the input clip. So the graph can be used to read of the
+hue (color flavor) and the saturation (the dominance of the hue in the color).
+As the hue of a color changes, it moves around the square. At the center of
+the square, the saturation is zero, which means that the corresponding pixel
+has no color. If you increase the amount of a specific color, while leaving
+the other colors unchanged, the saturation increases, and you move towards
+the edge of the square.
+</p>
+</dd>
+<dt> &lsquo;<samp>color2</samp>&rsquo;</dt>
+<dd><p>chroma values in vectorscope, similar as <code>color</code> but actual chroma values
+are displayed.
+</p>
+</dd>
+<dt> &lsquo;<samp>waveform</samp>&rsquo;</dt>
+<dd><p>per row/column color component graph. In row mode graph in the left side represents
+color component value 0 and right side represents value = 255. In column mode top
+side represents color component value = 0 and bottom side represents value = 255.
+</p></dd>
+</dl>
+<p>Default value is <code>levels</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>level_height</samp>&rsquo;</dt>
+<dd><p>Set height of level in <code>levels</code>. Default value is <code>200</code>.
+Allowed range is [50, 2048].
+</p>
+</dd>
+<dt> &lsquo;<samp>scale_height</samp>&rsquo;</dt>
+<dd><p>Set height of color scale in <code>levels</code>. Default value is <code>12</code>.
+Allowed range is [0, 40].
+</p>
+</dd>
+<dt> &lsquo;<samp>step</samp>&rsquo;</dt>
+<dd><p>Set step for <code>waveform</code> mode. Smaller values are useful to find out how much
+of same luminance values across input rows/columns are distributed.
+Default value is <code>10</code>. Allowed range is [1, 255].
+</p>
+</dd>
+<dt> &lsquo;<samp>waveform_mode</samp>&rsquo;</dt>
+<dd><p>Set mode for <code>waveform</code>. Can be either <code>row</code>, or <code>column</code>.
+Default is <code>row</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>waveform_mirror</samp>&rsquo;</dt>
+<dd><p>Set mirroring mode for <code>waveform</code>. <code>0</code> means unmirrored, <code>1</code>
+means mirrored. In mirrored mode, higher values will be represented on the left
+side for <code>row</code> mode and at the top for <code>column</code> mode. Default is
+<code>0</code> (unmirrored).
+</p>
+</dd>
+<dt> &lsquo;<samp>display_mode</samp>&rsquo;</dt>
+<dd><p>Set display mode for <code>waveform</code> and <code>levels</code>.
+It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>parade</samp>&rsquo;</dt>
+<dd><p>Display separate graph for the color components side by side in
+<code>row</code> waveform mode or one below other in <code>column</code> waveform mode
+for <code>waveform</code> histogram mode. For <code>levels</code> histogram mode
+per color component graphs are placed one bellow other.
+</p>
+<p>This display mode in <code>waveform</code> histogram mode makes it easy to spot
+color casts in the highlights and shadows of an image, by comparing the
+contours of the top and the bottom of each waveform.
+Since whites, grays, and blacks are characterized by
+exactly equal amounts of red, green, and blue, neutral areas of the
+picture should display three waveforms of roughly equal width/height.
+If not, the correction is easy to make by making adjustments to level the
+three waveforms.
+</p>
+</dd>
+<dt> &lsquo;<samp>overlay</samp>&rsquo;</dt>
+<dd><p>Presents information that&rsquo;s identical to that in the <code>parade</code>, except
+that the graphs representing color components are superimposed directly
+over one another.
+</p>
+<p>This display mode in <code>waveform</code> histogram mode can make it easier to spot
+the relative differences or similarities in overlapping areas of the color
+components that are supposed to be identical, such as neutral whites, grays,
+or blacks.
+</p></dd>
+</dl>
+<p>Default is <code>parade</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>levels_mode</samp>&rsquo;</dt>
+<dd><p>Set mode for <code>levels</code>. Can be either <code>linear</code>, or <code>logarithmic</code>.
+Default is <code>linear</code>.
+</p></dd>
+</dl>
+
+<a name="Examples-6"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-6">35.40.1 Examples</a></h3>
+
+<ul>
+<li>
+Calculate and draw histogram:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -i input -vf histogram
+</pre></td></tr></table>
+
+</li></ul>
+
+<p><a name="hqdn3d"></a>
+</p><a name="hqdn3d-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-hqdn3d-1">35.41 hqdn3d</a></h2>
+
+<p>High precision/quality 3d denoise filter. This filter aims to reduce
+image noise producing smooth images and making still images really
+still. It should enhance compressibility.
+</p>
+<p>It accepts the following optional parameters:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>luma_spatial</samp>&rsquo;</dt>
+<dd><p>a non-negative float number which specifies spatial luma strength,
+defaults to 4.0
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_spatial</samp>&rsquo;</dt>
+<dd><p>a non-negative float number which specifies spatial chroma strength,
+defaults to 3.0*<var>luma_spatial</var>/4.0
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_tmp</samp>&rsquo;</dt>
+<dd><p>a float number which specifies luma temporal strength, defaults to
+6.0*<var>luma_spatial</var>/4.0
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_tmp</samp>&rsquo;</dt>
+<dd><p>a float number which specifies chroma temporal strength, defaults to
+<var>luma_tmp</var>*<var>chroma_spatial</var>/<var>luma_spatial</var>
+</p></dd>
+</dl>
+
+<a name="hue"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-hue">35.42 hue</a></h2>
+
+<p>Modify the hue and/or the saturation of the input.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>Specify the hue angle as a number of degrees. It accepts an expression,
+and defaults to &quot;0&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>Specify the saturation in the [-10,10] range. It accepts an expression and
+defaults to &quot;1&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>H</samp>&rsquo;</dt>
+<dd><p>Specify the hue angle as a number of radians. It accepts an
+expression, and defaults to &quot;0&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>Specify the brightness in the [-10,10] range. It accepts an expression and
+defaults to &quot;0&quot;.
+</p></dd>
+</dl>
+
+<p>&lsquo;<samp>h</samp>&rsquo; and &lsquo;<samp>H</samp>&rsquo; are mutually exclusive, and can&rsquo;t be
+specified at the same time.
+</p>
+<p>The &lsquo;<samp>b</samp>&rsquo;, &lsquo;<samp>h</samp>&rsquo;, &lsquo;<samp>H</samp>&rsquo; and &lsquo;<samp>s</samp>&rsquo; option values are
+expressions containing the following constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>frame count of the input frame starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
+<dd><p>presentation timestamp of the input frame expressed in time base units
+</p>
+</dd>
+<dt> &lsquo;<samp>r</samp>&rsquo;</dt>
+<dd><p>frame rate of the input video, NAN if the input frame rate is unknown
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>timestamp expressed in seconds, NAN if the input timestamp is unknown
+</p>
+</dd>
+<dt> &lsquo;<samp>tb</samp>&rsquo;</dt>
+<dd><p>time base of the input video
+</p></dd>
+</dl>
+
+<a name="Examples-72"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-72">35.42.1 Examples</a></h3>
+
+<ul>
+<li>
+Set the hue to 90 degrees and the saturation to 1.0:
+<table><tr><td>&nbsp;</td><td><pre class="example">hue=h=90:s=1
+</pre></td></tr></table>
+
+</li><li>
+Same command but expressing the hue in radians:
+<table><tr><td>&nbsp;</td><td><pre class="example">hue=H=PI/2:s=1
+</pre></td></tr></table>
+
+</li><li>
+Rotate hue and make the saturation swing between 0
+and 2 over a period of 1 second:
+<table><tr><td>&nbsp;</td><td><pre class="example">hue=&quot;H=2*PI*t: s=sin(2*PI*t)+1&quot;
+</pre></td></tr></table>
+
+</li><li>
+Apply a 3 seconds saturation fade-in effect starting at 0:
+<table><tr><td>&nbsp;</td><td><pre class="example">hue=&quot;s=min(t/3\,1)&quot;
+</pre></td></tr></table>
+
+<p>The general fade-in expression can be written as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">hue=&quot;s=min(0\, max((t-START)/DURATION\, 1))&quot;
+</pre></td></tr></table>
+
+</li><li>
+Apply a 3 seconds saturation fade-out effect starting at 5 seconds:
+<table><tr><td>&nbsp;</td><td><pre class="example">hue=&quot;s=max(0\, min(1\, (8-t)/3))&quot;
+</pre></td></tr></table>
+
+<p>The general fade-out expression can be written as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">hue=&quot;s=max(0\, min(1\, (START+DURATION-t)/DURATION))&quot;
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="Commands-3"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Commands-3">35.42.2 Commands</a></h3>
+
+<p>This filter supports the following commands:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>H</samp>&rsquo;</dt>
+<dd><p>Modify the hue and/or the saturation and/or brightness of the input video.
+The command accepts the same syntax of the corresponding option.
+</p>
+<p>If the specified expression is not valid, it is kept at its current
+value.
+</p></dd>
+</dl>
+
+<a name="idet"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-idet">35.43 idet</a></h2>
+
+<p>Detect video interlacing type.
+</p>
+<p>This filter tries to detect if the input is interlaced or progressive,
+top or bottom field first.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>intl_thres</samp>&rsquo;</dt>
+<dd><p>Set interlacing threshold.
+</p></dd>
+<dt> &lsquo;<samp>prog_thres</samp>&rsquo;</dt>
+<dd><p>Set progressive threshold.
+</p></dd>
+</dl>
+
+<a name="il"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-il">35.44 il</a></h2>
+
+<p>Deinterleave or interleave fields.
+</p>
+<p>This filter allows to process interlaced images fields without
+deinterlacing them. Deinterleaving splits the input frame into 2
+fields (so called half pictures). Odd lines are moved to the top
+half of the output image, even lines to the bottom half.
+You can process (filter) them independently and then re-interleave them.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>luma_mode, l</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma_mode, c</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>alpha_mode, a</samp>&rsquo;</dt>
+<dd><p>Available values for <var>luma_mode</var>, <var>chroma_mode</var> and
+<var>alpha_mode</var> are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>Do nothing.
+</p>
+</dd>
+<dt> &lsquo;<samp>deinterleave, d</samp>&rsquo;</dt>
+<dd><p>Deinterleave fields, placing one above the other.
+</p>
+</dd>
+<dt> &lsquo;<samp>interleave, i</samp>&rsquo;</dt>
+<dd><p>Interleave fields. Reverse the effect of deinterleaving.
+</p></dd>
+</dl>
+<p>Default value is <code>none</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_swap, ls</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>chroma_swap, cs</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>alpha_swap, as</samp>&rsquo;</dt>
+<dd><p>Swap luma/chroma/alpha fields. Exchange even &amp; odd lines. Default value is <code>0</code>.
+</p></dd>
+</dl>
+
+<a name="interlace"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-interlace">35.45 interlace</a></h2>
+
+<p>Simple interlacing filter from progressive contents. This interleaves upper (or
+lower) lines from odd frames with lower (or upper) lines from even frames,
+halving the frame rate and preserving image height.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">   Original        Original             New Frame
+   Frame 'j'      Frame 'j+1'             (tff)
+  ==========      ===========       ==================
+    Line 0  --------------------&gt;    Frame 'j' Line 0
+    Line 1          Line 1  ----&gt;   Frame 'j+1' Line 1
+    Line 2 ---------------------&gt;    Frame 'j' Line 2
+    Line 3          Line 3  ----&gt;   Frame 'j+1' Line 3
+     ...             ...                   ...
+New Frame + 1 will be generated by Frame 'j+2' and Frame 'j+3' and so on
+</pre></td></tr></table>
+
+<p>It accepts the following optional parameters:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>scan</samp>&rsquo;</dt>
+<dd><p>determines whether the interlaced frame is taken from the even (tff - default)
+or odd (bff) lines of the progressive frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>lowpass</samp>&rsquo;</dt>
+<dd><p>Enable (default) or disable the vertical lowpass filter to avoid twitter
+interlacing and reduce moire patterns.
+</p></dd>
+</dl>
+
+<a name="kerndeint"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-kerndeint">35.46 kerndeint</a></h2>
+
+<p>Deinterlace input video by applying Donald Graft&rsquo;s adaptive kernel
+deinterling. Work on interlaced parts of a video to produce
+progressive frames.
+</p>
+<p>The description of the accepted parameters follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>thresh</samp>&rsquo;</dt>
+<dd><p>Set the threshold which affects the filter&rsquo;s tolerance when
+determining if a pixel line must be processed. It must be an integer
+in the range [0,255] and defaults to 10. A value of 0 will result in
+applying the process on every pixels.
+</p>
+</dd>
+<dt> &lsquo;<samp>map</samp>&rsquo;</dt>
+<dd><p>Paint pixels exceeding the threshold value to white if set to 1.
+Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>order</samp>&rsquo;</dt>
+<dd><p>Set the fields order. Swap fields if set to 1, leave fields alone if
+0. Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>sharp</samp>&rsquo;</dt>
+<dd><p>Enable additional sharpening if set to 1. Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>twoway</samp>&rsquo;</dt>
+<dd><p>Enable twoway sharpening if set to 1. Default is 0.
+</p></dd>
+</dl>
+
+<a name="Examples-88"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-88">35.46.1 Examples</a></h3>
+
+<ul>
+<li>
+Apply default values:
+<table><tr><td>&nbsp;</td><td><pre class="example">kerndeint=thresh=10:map=0:order=0:sharp=0:twoway=0
+</pre></td></tr></table>
+
+</li><li>
+Enable additional sharpening:
+<table><tr><td>&nbsp;</td><td><pre class="example">kerndeint=sharp=1
+</pre></td></tr></table>
+
+</li><li>
+Paint processed pixels in white:
+<table><tr><td>&nbsp;</td><td><pre class="example">kerndeint=map=1
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="lut3d"></a>
+</p><a name="lut3d-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-lut3d-1">35.47 lut3d</a></h2>
+
+<p>Apply a 3D LUT to an input video.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>file</samp>&rsquo;</dt>
+<dd><p>Set the 3D LUT file name.
+</p>
+<p>Currently supported formats:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>3dl</samp>&rsquo;</dt>
+<dd><p>AfterEffects
+</p></dd>
+<dt> &lsquo;<samp>cube</samp>&rsquo;</dt>
+<dd><p>Iridas
+</p></dd>
+<dt> &lsquo;<samp>dat</samp>&rsquo;</dt>
+<dd><p>DaVinci
+</p></dd>
+<dt> &lsquo;<samp>m3d</samp>&rsquo;</dt>
+<dd><p>Pandora
+</p></dd>
+</dl>
+</dd>
+<dt> &lsquo;<samp>interp</samp>&rsquo;</dt>
+<dd><p>Select interpolation mode.
+</p>
+<p>Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>nearest</samp>&rsquo;</dt>
+<dd><p>Use values from the nearest defined point.
+</p></dd>
+<dt> &lsquo;<samp>trilinear</samp>&rsquo;</dt>
+<dd><p>Interpolate values using the 8 points defining a cube.
+</p></dd>
+<dt> &lsquo;<samp>tetrahedral</samp>&rsquo;</dt>
+<dd><p>Interpolate values using a tetrahedron.
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<a name="lut_002c-lutrgb_002c-lutyuv"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-lut_002c-lutrgb_002c-lutyuv">35.48 lut, lutrgb, lutyuv</a></h2>
+
+<p>Compute a look-up table for binding each pixel component input value
+to an output value, and apply it to input video.
+</p>
+<p><var>lutyuv</var> applies a lookup table to a YUV input video, <var>lutrgb</var>
+to an RGB input video.
+</p>
+<p>These filters accept the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>c0</samp>&rsquo;</dt>
+<dd><p>set first pixel component expression
+</p></dd>
+<dt> &lsquo;<samp>c1</samp>&rsquo;</dt>
+<dd><p>set second pixel component expression
+</p></dd>
+<dt> &lsquo;<samp>c2</samp>&rsquo;</dt>
+<dd><p>set third pixel component expression
+</p></dd>
+<dt> &lsquo;<samp>c3</samp>&rsquo;</dt>
+<dd><p>set fourth pixel component expression, corresponds to the alpha component
+</p>
+</dd>
+<dt> &lsquo;<samp>r</samp>&rsquo;</dt>
+<dd><p>set red component expression
+</p></dd>
+<dt> &lsquo;<samp>g</samp>&rsquo;</dt>
+<dd><p>set green component expression
+</p></dd>
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>set blue component expression
+</p></dd>
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>alpha component expression
+</p>
+</dd>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>set Y/luminance component expression
+</p></dd>
+<dt> &lsquo;<samp>u</samp>&rsquo;</dt>
+<dd><p>set U/Cb component expression
+</p></dd>
+<dt> &lsquo;<samp>v</samp>&rsquo;</dt>
+<dd><p>set V/Cr component expression
+</p></dd>
+</dl>
+
+<p>Each of them specifies the expression to use for computing the lookup table for
+the corresponding pixel component values.
+</p>
+<p>The exact component associated to each of the <var>c*</var> options depends on the
+format in input.
+</p>
+<p>The <var>lut</var> filter requires either YUV or RGB pixel formats in input,
+<var>lutrgb</var> requires RGB pixel formats in input, and <var>lutyuv</var> requires YUV.
+</p>
+<p>The expressions can contain the following constants and functions:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>the input width and height
+</p>
+</dd>
+<dt> &lsquo;<samp>val</samp>&rsquo;</dt>
+<dd><p>input value for the pixel component
+</p>
+</dd>
+<dt> &lsquo;<samp>clipval</samp>&rsquo;</dt>
+<dd><p>the input value clipped in the <var>minval</var>-<var>maxval</var> range
+</p>
+</dd>
+<dt> &lsquo;<samp>maxval</samp>&rsquo;</dt>
+<dd><p>maximum value for the pixel component
+</p>
+</dd>
+<dt> &lsquo;<samp>minval</samp>&rsquo;</dt>
+<dd><p>minimum value for the pixel component
+</p>
+</dd>
+<dt> &lsquo;<samp>negval</samp>&rsquo;</dt>
+<dd><p>the negated value for the pixel component value clipped in the
+<var>minval</var>-<var>maxval</var> range , it corresponds to the expression
+&quot;maxval-clipval+minval&quot;
+</p>
+</dd>
+<dt> &lsquo;<samp>clip(val)</samp>&rsquo;</dt>
+<dd><p>the computed value in <var>val</var> clipped in the
+<var>minval</var>-<var>maxval</var> range
+</p>
+</dd>
+<dt> &lsquo;<samp>gammaval(gamma)</samp>&rsquo;</dt>
+<dd><p>the computed gamma correction value of the pixel component value
+clipped in the <var>minval</var>-<var>maxval</var> range, corresponds to the
+expression
+&quot;pow((clipval-minval)/(maxval-minval)\,<var>gamma</var>)*(maxval-minval)+minval&quot;
+</p>
+</dd>
+</dl>
+
+<p>All expressions default to &quot;val&quot;.
+</p>
+<a name="Examples-17"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-17">35.48.1 Examples</a></h3>
+
+<ul>
+<li>
+Negate input video:
+<table><tr><td>&nbsp;</td><td><pre class="example">lutrgb=&quot;r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val&quot;
+lutyuv=&quot;y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val&quot;
+</pre></td></tr></table>
+
+<p>The above is the same as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">lutrgb=&quot;r=negval:g=negval:b=negval&quot;
+lutyuv=&quot;y=negval:u=negval:v=negval&quot;
+</pre></td></tr></table>
+
+</li><li>
+Negate luminance:
+<table><tr><td>&nbsp;</td><td><pre class="example">lutyuv=y=negval
+</pre></td></tr></table>
+
+</li><li>
+Remove chroma components, turns the video into a graytone image:
+<table><tr><td>&nbsp;</td><td><pre class="example">lutyuv=&quot;u=128:v=128&quot;
+</pre></td></tr></table>
+
+</li><li>
+Apply a luma burning effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">lutyuv=&quot;y=2*val&quot;
+</pre></td></tr></table>
+
+</li><li>
+Remove green and blue components:
+<table><tr><td>&nbsp;</td><td><pre class="example">lutrgb=&quot;g=0:b=0&quot;
+</pre></td></tr></table>
+
+</li><li>
+Set a constant alpha channel value on input:
+<table><tr><td>&nbsp;</td><td><pre class="example">format=rgba,lutrgb=a=&quot;maxval-minval/2&quot;
+</pre></td></tr></table>
+
+</li><li>
+Correct luminance gamma by a 0.5 factor:
+<table><tr><td>&nbsp;</td><td><pre class="example">lutyuv=y=gammaval(0.5)
+</pre></td></tr></table>
+
+</li><li>
+Discard least significant bits of luma:
+<table><tr><td>&nbsp;</td><td><pre class="example">lutyuv=y='bitand(val, 128+64+32)'
+</pre></td></tr></table>
+</li></ul>
+
+<a name="mergeplanes"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-mergeplanes">35.49 mergeplanes</a></h2>
+
+<p>Merge color channel components from several video streams.
+</p>
+<p>The filter accepts up to 4 input streams, and merge selected input
+planes to the output video.
+</p>
+<p>This filter accepts the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>mapping</samp>&rsquo;</dt>
+<dd><p>Set input to output plane mapping. Default is <code>0</code>.
+</p>
+<p>The mappings is specified as a bitmap. It should be specified as a
+hexadecimal number in the form 0xAa[Bb[Cc[Dd]]]. &rsquo;Aa&rsquo; describes the
+mapping for the first plane of the output stream. &rsquo;A&rsquo; sets the number of
+the input stream to use (from 0 to 3), and &rsquo;a&rsquo; the plane number of the
+corresponding input to use (from 0 to 3). The rest of the mappings is
+similar, &rsquo;Bb&rsquo; describes the mapping for the output stream second
+plane, &rsquo;Cc&rsquo; describes the mapping for the output stream third plane and
+&rsquo;Dd&rsquo; describes the mapping for the output stream fourth plane.
+</p>
+</dd>
+<dt> &lsquo;<samp>format</samp>&rsquo;</dt>
+<dd><p>Set output pixel format. Default is <code>yuva444p</code>.
+</p></dd>
+</dl>
+
+<a name="Examples-43"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-43">35.49.1 Examples</a></h3>
+
+<ul>
+<li>
+Merge three gray video streams of same width and height into single video stream:
+<table><tr><td>&nbsp;</td><td><pre class="example">[a0][a1][a2]mergeplanes=0x001020:yuv444p
+</pre></td></tr></table>
+
+</li><li>
+Merge 1st yuv444p stream and 2nd gray video stream into yuva444p video stream:
+<table><tr><td>&nbsp;</td><td><pre class="example">[a0][a1]mergeplanes=0x00010210:yuva444p
+</pre></td></tr></table>
+
+</li><li>
+Swap Y and A plane in yuva444p stream:
+<table><tr><td>&nbsp;</td><td><pre class="example">format=yuva444p,mergeplanes=0x03010200:yuva444p
+</pre></td></tr></table>
+
+</li><li>
+Swap U and V plane in yuv420p stream:
+<table><tr><td>&nbsp;</td><td><pre class="example">format=yuv420p,mergeplanes=0x000201:yuv420p
+</pre></td></tr></table>
+
+</li><li>
+Cast a rgb24 clip to yuv444p:
+<table><tr><td>&nbsp;</td><td><pre class="example">format=rgb24,mergeplanes=0x000102:yuv444p
+</pre></td></tr></table>
+</li></ul>
+
+<a name="mcdeint"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-mcdeint">35.50 mcdeint</a></h2>
+
+<p>Apply motion-compensation deinterlacing.
+</p>
+<p>It needs one field per frame as input and must thus be used together
+with yadif=1/3 or equivalent.
+</p>
+<p>This filter accepts the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Set the deinterlacing mode.
+</p>
+<p>It accepts one of the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>fast</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>medium</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>slow</samp>&rsquo;</dt>
+<dd><p>use iterative motion estimation
+</p></dd>
+<dt> &lsquo;<samp>extra_slow</samp>&rsquo;</dt>
+<dd><p>like &lsquo;<samp>slow</samp>&rsquo;, but use multiple reference frames.
+</p></dd>
+</dl>
+<p>Default value is &lsquo;<samp>fast</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>parity</samp>&rsquo;</dt>
+<dd><p>Set the picture field parity assumed for the input video. It must be
+one of the following values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>0, tff</samp>&rsquo;</dt>
+<dd><p>assume top field first
+</p></dd>
+<dt> &lsquo;<samp>1, bff</samp>&rsquo;</dt>
+<dd><p>assume bottom field first
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>bff</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>qp</samp>&rsquo;</dt>
+<dd><p>Set per-block quantization parameter (QP) used by the internal
+encoder.
+</p>
+<p>Higher values should result in a smoother motion vector field but less
+optimal individual vectors. Default value is 1.
+</p></dd>
+</dl>
+
+<a name="mp"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-mp">35.51 mp</a></h2>
+
+<p>Apply an MPlayer filter to the input video.
+</p>
+<p>This filter provides a wrapper around some of the filters of
+MPlayer/MEncoder.
+</p>
+<p>This wrapper is considered experimental. Some of the wrapped filters
+may not work properly and we may drop support for them, as they will
+be implemented natively into FFmpeg. Thus you should avoid
+depending on them when writing portable scripts.
+</p>
+<p>The filter accepts the parameters:
+<var>filter_name</var>[:=]<var>filter_params</var>
+</p>
+<p><var>filter_name</var> is the name of a supported MPlayer filter,
+<var>filter_params</var> is a string containing the parameters accepted by
+the named filter.
+</p>
+<p>The list of the currently supported filters follows:
+</p><dl compact="compact">
+<dt> <var>eq2</var></dt>
+<dt> <var>eq</var></dt>
+<dt> <var>fspp</var></dt>
+<dt> <var>ilpack</var></dt>
+<dt> <var>pp7</var></dt>
+<dt> <var>softpulldown</var></dt>
+<dt> <var>uspp</var></dt>
+</dl>
+
+<p>The parameter syntax and behavior for the listed filters are the same
+of the corresponding MPlayer filters. For detailed instructions check
+the &quot;VIDEO FILTERS&quot; section in the MPlayer manual.
+</p>
+<a name="Examples-27"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-27">35.51.1 Examples</a></h3>
+
+<ul>
+<li>
+Adjust gamma, brightness, contrast:
+<table><tr><td>&nbsp;</td><td><pre class="example">mp=eq2=1.0:2:0.5
+</pre></td></tr></table>
+</li></ul>
+
+<p>See also mplayer(1), <a href="http://www.mplayerhq.hu/">http://www.mplayerhq.hu/</a>.
+</p>
+<a name="mpdecimate"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-mpdecimate">35.52 mpdecimate</a></h2>
+
+<p>Drop frames that do not differ greatly from the previous frame in
+order to reduce frame rate.
+</p>
+<p>The main use of this filter is for very-low-bitrate encoding
+(e.g. streaming over dialup modem), but it could in theory be used for
+fixing movies that were inverse-telecined incorrectly.
+</p>
+<p>A description of the accepted options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>max</samp>&rsquo;</dt>
+<dd><p>Set the maximum number of consecutive frames which can be dropped (if
+positive), or the minimum interval between dropped frames (if
+negative). If the value is 0, the frame is dropped unregarding the
+number of previous sequentially dropped frames.
+</p>
+<p>Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>hi</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>lo</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>frac</samp>&rsquo;</dt>
+<dd><p>Set the dropping threshold values.
+</p>
+<p>Values for &lsquo;<samp>hi</samp>&rsquo; and &lsquo;<samp>lo</samp>&rsquo; are for 8x8 pixel blocks and
+represent actual pixel value differences, so a threshold of 64
+corresponds to 1 unit of difference for each pixel, or the same spread
+out differently over the block.
+</p>
+<p>A frame is a candidate for dropping if no 8x8 blocks differ by more
+than a threshold of &lsquo;<samp>hi</samp>&rsquo;, and if no more than &lsquo;<samp>frac</samp>&rsquo; blocks (1
+meaning the whole image) differ by more than a threshold of &lsquo;<samp>lo</samp>&rsquo;.
+</p>
+<p>Default value for &lsquo;<samp>hi</samp>&rsquo; is 64*12, default value for &lsquo;<samp>lo</samp>&rsquo; is
+64*5, and default value for &lsquo;<samp>frac</samp>&rsquo; is 0.33.
+</p></dd>
+</dl>
+
+
+<a name="negate"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-negate">35.53 negate</a></h2>
+
+<p>Negate input video.
+</p>
+<p>This filter accepts an integer in input, if non-zero it negates the
+alpha component (if available). The default value in input is 0.
+</p>
+<a name="noformat"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-noformat">35.54 noformat</a></h2>
+
+<p>Force libavfilter not to use any of the specified pixel formats for the
+input to the next filter.
+</p>
+<p>This filter accepts the following parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>pix_fmts</samp>&rsquo;</dt>
+<dd><p>A &rsquo;|&rsquo;-separated list of pixel format names, for example
+&quot;pix_fmts=yuv420p|monow|rgb24&quot;.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-15"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-15">35.54.1 Examples</a></h3>
+
+<ul>
+<li>
+Force libavfilter to use a format different from <var>yuv420p</var> for the
+input to the vflip filter:
+<table><tr><td>&nbsp;</td><td><pre class="example">noformat=pix_fmts=yuv420p,vflip
+</pre></td></tr></table>
+
+</li><li>
+Convert the input video to any of the formats not contained in the list:
+<table><tr><td>&nbsp;</td><td><pre class="example">noformat=yuv420p|yuv444p|yuv410p
+</pre></td></tr></table>
+</li></ul>
+
+<a name="noise-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-noise-1">35.55 noise</a></h2>
+
+<p>Add noise on video input frame.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>all_seed</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c0_seed</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c1_seed</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c2_seed</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c3_seed</samp>&rsquo;</dt>
+<dd><p>Set noise seed for specific pixel component or all pixel components in case
+of <var>all_seed</var>. Default value is <code>123457</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>all_strength, alls</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c0_strength, c0s</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c1_strength, c1s</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c2_strength, c2s</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c3_strength, c3s</samp>&rsquo;</dt>
+<dd><p>Set noise strength for specific pixel component or all pixel components in case
+<var>all_strength</var>. Default value is <code>0</code>. Allowed range is [0, 100].
+</p>
+</dd>
+<dt> &lsquo;<samp>all_flags, allf</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c0_flags, c0f</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c1_flags, c1f</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c2_flags, c2f</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>c3_flags, c3f</samp>&rsquo;</dt>
+<dd><p>Set pixel component flags or set flags for all components if <var>all_flags</var>.
+Available values for component flags are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>averaged temporal noise (smoother)
+</p></dd>
+<dt> &lsquo;<samp>p</samp>&rsquo;</dt>
+<dd><p>mix random noise with a (semi)regular pattern
+</p></dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>temporal noise (noise pattern changes between frames)
+</p></dd>
+<dt> &lsquo;<samp>u</samp>&rsquo;</dt>
+<dd><p>uniform noise (gaussian otherwise)
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<a name="Examples-38"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-38">35.55.1 Examples</a></h3>
+
+<p>Add temporal and uniform noise to input video:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">noise=alls=20:allf=t+u
+</pre></td></tr></table>
+
+<a name="null-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-null-1">35.56 null</a></h2>
+
+<p>Pass the video source unchanged to the output.
+</p>
+<a name="ocv"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-ocv">35.57 ocv</a></h2>
+
+<p>Apply video transform using libopencv.
+</p>
+<p>To enable this filter install libopencv library and headers and
+configure FFmpeg with <code>--enable-libopencv</code>.
+</p>
+<p>This filter accepts the following parameters:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filter_name</samp>&rsquo;</dt>
+<dd><p>The name of the libopencv filter to apply.
+</p>
+</dd>
+<dt> &lsquo;<samp>filter_params</samp>&rsquo;</dt>
+<dd><p>The parameters to pass to the libopencv filter. If not specified the default
+values are assumed.
+</p>
+</dd>
+</dl>
+
+<p>Refer to the official libopencv documentation for more precise
+information:
+<a href="http://opencv.willowgarage.com/documentation/c/image_filtering.html">http://opencv.willowgarage.com/documentation/c/image_filtering.html</a>
+</p>
+<p>Follows the list of supported libopencv filters.
+</p>
+<p><a name="dilate"></a>
+</p><a name="dilate-1"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-dilate-1">35.57.1 dilate</a></h3>
+
+<p>Dilate an image by using a specific structuring element.
+This filter corresponds to the libopencv function <code>cvDilate</code>.
+</p>
+<p>It accepts the parameters: <var>struct_el</var>|<var>nb_iterations</var>.
+</p>
+<p><var>struct_el</var> represents a structuring element, and has the syntax:
+<var>cols</var>x<var>rows</var>+<var>anchor_x</var>x<var>anchor_y</var>/<var>shape</var>
+</p>
+<p><var>cols</var> and <var>rows</var> represent the number of columns and rows of
+the structuring element, <var>anchor_x</var> and <var>anchor_y</var> the anchor
+point, and <var>shape</var> the shape for the structuring element, and
+can be one of the values &quot;rect&quot;, &quot;cross&quot;, &quot;ellipse&quot;, &quot;custom&quot;.
+</p>
+<p>If the value for <var>shape</var> is &quot;custom&quot;, it must be followed by a
+string of the form &quot;=<var>filename</var>&quot;. The file with name
+<var>filename</var> is assumed to represent a binary image, with each
+printable character corresponding to a bright pixel. When a custom
+<var>shape</var> is used, <var>cols</var> and <var>rows</var> are ignored, the number
+or columns and rows of the read file are assumed instead.
+</p>
+<p>The default value for <var>struct_el</var> is &quot;3x3+0x0/rect&quot;.
+</p>
+<p><var>nb_iterations</var> specifies the number of times the transform is
+applied to the image, and defaults to 1.
+</p>
+<p>Follow some example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"># use the default values
+ocv=dilate
+
+# dilate using a structuring element with a 5x5 cross, iterate two times
+ocv=filter_name=dilate:filter_params=5x5+2x2/cross|2
+
+# read the shape from the file diamond.shape, iterate two times
+# the file diamond.shape may contain a pattern of characters like this:
+#   *
+#  ***
+# *****
+#  ***
+#   *
+# the specified cols and rows are ignored (but not the anchor point coordinates)
+ocv=dilate:0x0+2x2/custom=diamond.shape|2
+</pre></td></tr></table>
+
+<a name="erode"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-erode">35.57.2 erode</a></h3>
+
+<p>Erode an image by using a specific structuring element.
+This filter corresponds to the libopencv function <code>cvErode</code>.
+</p>
+<p>The filter accepts the parameters: <var>struct_el</var>:<var>nb_iterations</var>,
+with the same syntax and semantics as the <a href="#dilate">dilate</a> filter.
+</p>
+<a name="smooth"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-smooth">35.57.3 smooth</a></h3>
+
+<p>Smooth the input video.
+</p>
+<p>The filter takes the following parameters:
+<var>type</var>|<var>param1</var>|<var>param2</var>|<var>param3</var>|<var>param4</var>.
+</p>
+<p><var>type</var> is the type of smooth filter to apply, and can be one of
+the following values: &quot;blur&quot;, &quot;blur_no_scale&quot;, &quot;median&quot;, &quot;gaussian&quot;,
+&quot;bilateral&quot;. The default value is &quot;gaussian&quot;.
+</p>
+<p><var>param1</var>, <var>param2</var>, <var>param3</var>, and <var>param4</var> are
+parameters whose meanings depend on smooth type. <var>param1</var> and
+<var>param2</var> accept integer positive values or 0, <var>param3</var> and
+<var>param4</var> accept float values.
+</p>
+<p>The default value for <var>param1</var> is 3, the default value for the
+other parameters is 0.
+</p>
+<p>These parameters correspond to the parameters assigned to the
+libopencv function <code>cvSmooth</code>.
+</p>
+<p><a name="overlay"></a>
+</p><a name="overlay-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-overlay-1">35.58 overlay</a></h2>
+
+<p>Overlay one video on top of another.
+</p>
+<p>It takes two inputs and one output, the first input is the &quot;main&quot;
+video on which the second input is overlayed.
+</p>
+<p>This filter accepts the following parameters:
+</p>
+<p>A description of the accepted options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>Set the expression for the x and y coordinates of the overlayed video
+on the main video. Default value is &quot;0&quot; for both expressions. In case
+the expression is invalid, it is set to a huge value (meaning that the
+overlay will not be displayed within the output visible area).
+</p>
+</dd>
+<dt> &lsquo;<samp>eval</samp>&rsquo;</dt>
+<dd><p>Set when the expressions for &lsquo;<samp>x</samp>&rsquo;, and &lsquo;<samp>y</samp>&rsquo; are evaluated.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>init</samp>&rsquo;</dt>
+<dd><p>only evaluate expressions once during the filter initialization or
+when a command is processed
+</p>
+</dd>
+<dt> &lsquo;<samp>frame</samp>&rsquo;</dt>
+<dd><p>evaluate expressions for each incoming frame
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>frame</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>shortest</samp>&rsquo;</dt>
+<dd><p>If set to 1, force the output to terminate when the shortest input
+terminates. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>format</samp>&rsquo;</dt>
+<dd><p>Set the format for the output video.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>yuv420</samp>&rsquo;</dt>
+<dd><p>force YUV420 output
+</p>
+</dd>
+<dt> &lsquo;<samp>yuv444</samp>&rsquo;</dt>
+<dd><p>force YUV444 output
+</p>
+</dd>
+<dt> &lsquo;<samp>rgb</samp>&rsquo;</dt>
+<dd><p>force RGB output
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>yuv420</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>rgb <em>(deprecated)</em></samp>&rsquo;</dt>
+<dd><p>If set to 1, force the filter to accept inputs in the RGB
+color space. Default value is 0. This option is deprecated, use
+&lsquo;<samp>format</samp>&rsquo; instead.
+</p>
+</dd>
+<dt> &lsquo;<samp>repeatlast</samp>&rsquo;</dt>
+<dd><p>If set to 1, force the filter to draw the last overlay frame over the
+main input until the end of the stream. A value of 0 disables this
+behavior. Default value is 1.
+</p></dd>
+</dl>
+
+<p>The &lsquo;<samp>x</samp>&rsquo;, and &lsquo;<samp>y</samp>&rsquo; expressions can contain the following
+parameters.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>main_w, W</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>main_h, H</samp>&rsquo;</dt>
+<dd><p>main input width and height
+</p>
+</dd>
+<dt> &lsquo;<samp>overlay_w, w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>overlay_h, h</samp>&rsquo;</dt>
+<dd><p>overlay input width and height
+</p>
+</dd>
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>the computed values for <var>x</var> and <var>y</var>. They are evaluated for
+each new frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values of the output
+format. For example for the pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and
+<var>vsub</var> is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>the number of input frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
+<dd><p>the position in the file of the input frame, NAN if unknown
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>timestamp expressed in seconds, NAN if the input timestamp is unknown
+</p></dd>
+</dl>
+
+<p>Note that the <var>n</var>, <var>pos</var>, <var>t</var> variables are available only
+when evaluation is done <em>per frame</em>, and will evaluate to NAN
+when &lsquo;<samp>eval</samp>&rsquo; is set to &lsquo;<samp>init</samp>&rsquo;.
+</p>
+<p>Be aware that frames are taken from each input video in timestamp
+order, hence, if their initial timestamps differ, it is a good idea
+to pass the two inputs through a <var>setpts=PTS-STARTPTS</var> filter to
+have them begin in the same zero timestamp, as it does the example for
+the <var>movie</var> filter.
+</p>
+<p>You can chain together more overlays but you should test the
+efficiency of such approach.
+</p>
+<a name="Commands-2"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Commands-2">35.58.1 Commands</a></h3>
+
+<p>This filter supports the following commands:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>Modify the x and y of the overlay input.
+The command accepts the same syntax of the corresponding option.
+</p>
+<p>If the specified expression is not valid, it is kept at its current
+value.
+</p></dd>
+</dl>
+
+<a name="Examples-4"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-4">35.58.2 Examples</a></h3>
+
+<ul>
+<li>
+Draw the overlay at 10 pixels from the bottom right corner of the main
+video:
+<table><tr><td>&nbsp;</td><td><pre class="example">overlay=main_w-overlay_w-10:main_h-overlay_h-10
+</pre></td></tr></table>
+
+<p>Using named options the example above becomes:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">overlay=x=main_w-overlay_w-10:y=main_h-overlay_h-10
+</pre></td></tr></table>
+
+</li><li>
+Insert a transparent PNG logo in the bottom left corner of the input,
+using the <code>ffmpeg</code> tool with the <code>-filter_complex</code> option:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input -i logo -filter_complex 'overlay=10:main_h-overlay_h-10' output
+</pre></td></tr></table>
+
+</li><li>
+Insert 2 different transparent PNG logos (second logo on bottom
+right corner) using the <code>ffmpeg</code> tool:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input -i logo1 -i logo2 -filter_complex 'overlay=x=10:y=H-h-10,overlay=x=W-w-10:y=H-h-10' output
+</pre></td></tr></table>
+
+</li><li>
+Add a transparent color layer on top of the main video, <code>WxH</code>
+must specify the size of the main input to the overlay filter:
+<table><tr><td>&nbsp;</td><td><pre class="example">color=color=red@.3:size=WxH [over]; [in][over] overlay [out]
+</pre></td></tr></table>
+
+</li><li>
+Play an original video and a filtered version (here with the deshake
+filter) side by side using the <code>ffplay</code> tool:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay input.avi -vf 'split[a][b]; [a]pad=iw*2:ih[src]; [b]deshake[filt]; [src][filt]overlay=w'
+</pre></td></tr></table>
+
+<p>The above command is the same as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay input.avi -vf 'split[b], pad=iw*2[src], [b]deshake, [src]overlay=w'
+</pre></td></tr></table>
+
+</li><li>
+Make a sliding overlay appearing from the left to the right top part of the
+screen starting since time 2:
+<table><tr><td>&nbsp;</td><td><pre class="example">overlay=x='if(gte(t,2), -w+(t-2)*20, NAN)':y=0
+</pre></td></tr></table>
+
+</li><li>
+Compose output by putting two input videos side to side:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i left.avi -i right.avi -filter_complex &quot;
+nullsrc=size=200x100 [background];
+[0:v] setpts=PTS-STARTPTS, scale=100x100 [left];
+[1:v] setpts=PTS-STARTPTS, scale=100x100 [right];
+[background][left]       overlay=shortest=1       [background+left];
+[background+left][right] overlay=shortest=1:x=100 [left+right]
+&quot;
+</pre></td></tr></table>
+
+</li><li>
+Chain several overlays in cascade:
+<table><tr><td>&nbsp;</td><td><pre class="example">nullsrc=s=200x200 [bg];
+testsrc=s=100x100, split=4 [in0][in1][in2][in3];
+[in0] lutrgb=r=0, [bg]   overlay=0:0     [mid0];
+[in1] lutrgb=g=0, [mid0] overlay=100:0   [mid1];
+[in2] lutrgb=b=0, [mid1] overlay=0:100   [mid2];
+[in3] null,       [mid2] overlay=100:100 [out0]
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="owdenoise"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-owdenoise">35.59 owdenoise</a></h2>
+
+<p>Apply Overcomplete Wavelet denoiser.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>depth</samp>&rsquo;</dt>
+<dd><p>Set depth.
+</p>
+<p>Larger depth values will denoise lower frequency components more, but
+slow down filtering.
+</p>
+<p>Must be an int in the range 8-16, default is <code>8</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_strength, ls</samp>&rsquo;</dt>
+<dd><p>Set luma strength.
+</p>
+<p>Must be a double value in the range 0-1000, default is <code>1.0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_strength, cs</samp>&rsquo;</dt>
+<dd><p>Set chroma strength.
+</p>
+<p>Must be a double value in the range 0-1000, default is <code>1.0</code>.
+</p></dd>
+</dl>
+
+<a name="pad"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-pad">35.60 pad</a></h2>
+
+<p>Add paddings to the input image, and place the original input at the
+given coordinates <var>x</var>, <var>y</var>.
+</p>
+<p>This filter accepts the following parameters:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>height, h</samp>&rsquo;</dt>
+<dd><p>Specify an expression for the size of the output image with the
+paddings added. If the value for <var>width</var> or <var>height</var> is 0, the
+corresponding input size is used for the output.
+</p>
+<p>The <var>width</var> expression can reference the value set by the
+<var>height</var> expression, and vice versa.
+</p>
+<p>The default value of <var>width</var> and <var>height</var> is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>Specify an expression for the offsets where to place the input image
+in the padded area with respect to the top/left border of the output
+image.
+</p>
+<p>The <var>x</var> expression can reference the value set by the <var>y</var>
+expression, and vice versa.
+</p>
+<p>The default value of <var>x</var> and <var>y</var> is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
+<dd><p>Specify the color of the padded area. For the syntax of this option,
+check the &quot;Color&quot; section in the ffmpeg-utils manual.
+</p>
+<p>The default value of <var>color</var> is &quot;black&quot;.
+</p></dd>
+</dl>
+
+<p>The value for the <var>width</var>, <var>height</var>, <var>x</var>, and <var>y</var>
+options are expressions containing the following constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>in_w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>in_h</samp>&rsquo;</dt>
+<dd><p>the input video width and height
+</p>
+</dd>
+<dt> &lsquo;<samp>iw</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ih</samp>&rsquo;</dt>
+<dd><p>same as <var>in_w</var> and <var>in_h</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>out_w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>out_h</samp>&rsquo;</dt>
+<dd><p>the output width and height, that is the size of the padded area as
+specified by the <var>width</var> and <var>height</var> expressions
+</p>
+</dd>
+<dt> &lsquo;<samp>ow</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>oh</samp>&rsquo;</dt>
+<dd><p>same as <var>out_w</var> and <var>out_h</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>x</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y</samp>&rsquo;</dt>
+<dd><p>x and y offsets as specified by the <var>x</var> and <var>y</var>
+expressions, or NAN if not yet specified
+</p>
+</dd>
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>same as <var>iw</var> / <var>ih</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
+<dd><p>input sample aspect ratio
+</p>
+</dd>
+<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
+<dd><p>input display aspect ratio, it is the same as (<var>iw</var> / <var>ih</var>) * <var>sar</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p></dd>
+</dl>
+
+<a name="Examples-64"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-64">35.60.1 Examples</a></h3>
+
+<ul>
+<li>
+Add paddings with color &quot;violet&quot; to the input video. Output video
+size is 640x480, the top-left corner of the input video is placed at
+column 0, row 40:
+<table><tr><td>&nbsp;</td><td><pre class="example">pad=640:480:0:40:violet
+</pre></td></tr></table>
+
+<p>The example above is equivalent to the following command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pad=width=640:height=480:x=0:y=40:color=violet
+</pre></td></tr></table>
+
+</li><li>
+Pad the input to get an output with dimensions increased by 3/2,
+and put the input video at the center of the padded area:
+<table><tr><td>&nbsp;</td><td><pre class="example">pad=&quot;3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2&quot;
+</pre></td></tr></table>
+
+</li><li>
+Pad the input to get a squared output with size equal to the maximum
+value between the input width and height, and put the input video at
+the center of the padded area:
+<table><tr><td>&nbsp;</td><td><pre class="example">pad=&quot;max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2&quot;
+</pre></td></tr></table>
+
+</li><li>
+Pad the input to get a final w/h ratio of 16:9:
+<table><tr><td>&nbsp;</td><td><pre class="example">pad=&quot;ih*16/9:ih:(ow-iw)/2:(oh-ih)/2&quot;
+</pre></td></tr></table>
+
+</li><li>
+In case of anamorphic video, in order to set the output display aspect
+correctly, it is necessary to use <var>sar</var> in the expression,
+according to the relation:
+<table><tr><td>&nbsp;</td><td><pre class="example">(ih * X / ih) * sar = output_dar
+X = output_dar / sar
+</pre></td></tr></table>
+
+<p>Thus the previous example needs to be modified to:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">pad=&quot;ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2&quot;
+</pre></td></tr></table>
+
+</li><li>
+Double output size and put the input video in the bottom-right
+corner of the output padded area:
+<table><tr><td>&nbsp;</td><td><pre class="example">pad=&quot;2*iw:2*ih:ow-iw:oh-ih&quot;
+</pre></td></tr></table>
+</li></ul>
+
+<a name="perspective"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-perspective">35.61 perspective</a></h2>
+
+<p>Correct perspective of video not recorded perpendicular to the screen.
+</p>
+<p>A description of the accepted parameters follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>x0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>x1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>x2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>x3</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y3</samp>&rsquo;</dt>
+<dd><p>Set coordinates expression for top left, top right, bottom left and bottom right corners.
+Default values are <code>0:0:W:0:0:H:W:H</code> with which perspective will remain unchanged.
+</p>
+<p>The expressions can use the following variables:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>W</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>H</samp>&rsquo;</dt>
+<dd><p>the width and height of video frame.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>interpolation</samp>&rsquo;</dt>
+<dd><p>Set interpolation for perspective correction.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>linear</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>cubic</samp>&rsquo;</dt>
+</dl>
+
+<p>Default value is &lsquo;<samp>linear</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<a name="phase"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-phase">35.62 phase</a></h2>
+
+<p>Delay interlaced video by one field time so that the field order changes.
+</p>
+<p>The intended use is to fix PAL movies that have been captured with the
+opposite field order to the film-to-video transfer.
+</p>
+<p>A description of the accepted parameters follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Set phase mode.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>Capture field order top-first, transfer bottom-first.
+Filter will delay the bottom field.
+</p>
+</dd>
+<dt> &lsquo;<samp>b</samp>&rsquo;</dt>
+<dd><p>Capture field order bottom-first, transfer top-first.
+Filter will delay the top field.
+</p>
+</dd>
+<dt> &lsquo;<samp>p</samp>&rsquo;</dt>
+<dd><p>Capture and transfer with the same field order. This mode only exists
+for the documentation of the other options to refer to, but if you
+actually select it, the filter will faithfully do nothing.
+</p>
+</dd>
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>Capture field order determined automatically by field flags, transfer
+opposite.
+Filter selects among &lsquo;<samp>t</samp>&rsquo; and &lsquo;<samp>b</samp>&rsquo; modes on a frame by frame
+basis using field flags. If no field information is available,
+then this works just like &lsquo;<samp>u</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>u</samp>&rsquo;</dt>
+<dd><p>Capture unknown or varying, transfer opposite.
+Filter selects among &lsquo;<samp>t</samp>&rsquo; and &lsquo;<samp>b</samp>&rsquo; on a frame by frame basis by
+analyzing the images and selecting the alternative that produces best
+match between the fields.
+</p>
+</dd>
+<dt> &lsquo;<samp>T</samp>&rsquo;</dt>
+<dd><p>Capture top-first, transfer unknown or varying.
+Filter selects among &lsquo;<samp>t</samp>&rsquo; and &lsquo;<samp>p</samp>&rsquo; using image analysis.
+</p>
+</dd>
+<dt> &lsquo;<samp>B</samp>&rsquo;</dt>
+<dd><p>Capture bottom-first, transfer unknown or varying.
+Filter selects among &lsquo;<samp>b</samp>&rsquo; and &lsquo;<samp>p</samp>&rsquo; using image analysis.
+</p>
+</dd>
+<dt> &lsquo;<samp>A</samp>&rsquo;</dt>
+<dd><p>Capture determined by field flags, transfer unknown or varying.
+Filter selects among &lsquo;<samp>t</samp>&rsquo;, &lsquo;<samp>b</samp>&rsquo; and &lsquo;<samp>p</samp>&rsquo; using field flags and
+image analysis. If no field information is available, then this works just
+like &lsquo;<samp>U</samp>&rsquo;. This is the default mode.
+</p>
+</dd>
+<dt> &lsquo;<samp>U</samp>&rsquo;</dt>
+<dd><p>Both capture and transfer unknown or varying.
+Filter selects among &lsquo;<samp>t</samp>&rsquo;, &lsquo;<samp>b</samp>&rsquo; and &lsquo;<samp>p</samp>&rsquo; using image analysis only.
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<a name="pixdesctest"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-pixdesctest">35.63 pixdesctest</a></h2>
+
+<p>Pixel format descriptor test filter, mainly useful for internal
+testing. The output video should be equal to the input video.
+</p>
+<p>For example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">format=monow, pixdesctest
+</pre></td></tr></table>
+
+<p>can be used to test the monowhite pixel format descriptor definition.
+</p>
+<a name="pp"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-pp">35.64 pp</a></h2>
+
+<p>Enable the specified chain of postprocessing subfilters using libpostproc. This
+library should be automatically selected with a GPL build (<code>--enable-gpl</code>).
+Subfilters must be separated by &rsquo;/&rsquo; and can be disabled by prepending a &rsquo;-&rsquo;.
+Each subfilter and some options have a short and a long name that can be used
+interchangeably, i.e. dr/dering are the same.
+</p>
+<p>The filters accept the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>subfilters</samp>&rsquo;</dt>
+<dd><p>Set postprocessing subfilters string.
+</p></dd>
+</dl>
+
+<p>All subfilters share common options to determine their scope:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>a/autoq</samp>&rsquo;</dt>
+<dd><p>Honor the quality commands for this subfilter.
+</p>
+</dd>
+<dt> &lsquo;<samp>c/chrom</samp>&rsquo;</dt>
+<dd><p>Do chrominance filtering, too (default).
+</p>
+</dd>
+<dt> &lsquo;<samp>y/nochrom</samp>&rsquo;</dt>
+<dd><p>Do luminance filtering only (no chrominance).
+</p>
+</dd>
+<dt> &lsquo;<samp>n/noluma</samp>&rsquo;</dt>
+<dd><p>Do chrominance filtering only (no luminance).
+</p></dd>
+</dl>
+
+<p>These options can be appended after the subfilter name, separated by a &rsquo;|&rsquo;.
+</p>
+<p>Available subfilters are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>hb/hdeblock[|difference[|flatness]]</samp>&rsquo;</dt>
+<dd><p>Horizontal deblocking filter
+</p><dl compact="compact">
+<dt> &lsquo;<samp>difference</samp>&rsquo;</dt>
+<dd><p>Difference factor where higher values mean more deblocking (default: <code>32</code>).
+</p></dd>
+<dt> &lsquo;<samp>flatness</samp>&rsquo;</dt>
+<dd><p>Flatness threshold where lower values mean more deblocking (default: <code>39</code>).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>vb/vdeblock[|difference[|flatness]]</samp>&rsquo;</dt>
+<dd><p>Vertical deblocking filter
+</p><dl compact="compact">
+<dt> &lsquo;<samp>difference</samp>&rsquo;</dt>
+<dd><p>Difference factor where higher values mean more deblocking (default: <code>32</code>).
+</p></dd>
+<dt> &lsquo;<samp>flatness</samp>&rsquo;</dt>
+<dd><p>Flatness threshold where lower values mean more deblocking (default: <code>39</code>).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>ha/hadeblock[|difference[|flatness]]</samp>&rsquo;</dt>
+<dd><p>Accurate horizontal deblocking filter
+</p><dl compact="compact">
+<dt> &lsquo;<samp>difference</samp>&rsquo;</dt>
+<dd><p>Difference factor where higher values mean more deblocking (default: <code>32</code>).
+</p></dd>
+<dt> &lsquo;<samp>flatness</samp>&rsquo;</dt>
+<dd><p>Flatness threshold where lower values mean more deblocking (default: <code>39</code>).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>va/vadeblock[|difference[|flatness]]</samp>&rsquo;</dt>
+<dd><p>Accurate vertical deblocking filter
+</p><dl compact="compact">
+<dt> &lsquo;<samp>difference</samp>&rsquo;</dt>
+<dd><p>Difference factor where higher values mean more deblocking (default: <code>32</code>).
+</p></dd>
+<dt> &lsquo;<samp>flatness</samp>&rsquo;</dt>
+<dd><p>Flatness threshold where lower values mean more deblocking (default: <code>39</code>).
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<p>The horizontal and vertical deblocking filters share the difference and
+flatness values so you cannot set different horizontal and vertical
+thresholds.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>h1/x1hdeblock</samp>&rsquo;</dt>
+<dd><p>Experimental horizontal deblocking filter
+</p>
+</dd>
+<dt> &lsquo;<samp>v1/x1vdeblock</samp>&rsquo;</dt>
+<dd><p>Experimental vertical deblocking filter
+</p>
+</dd>
+<dt> &lsquo;<samp>dr/dering</samp>&rsquo;</dt>
+<dd><p>Deringing filter
+</p>
+</dd>
+<dt> &lsquo;<samp>tn/tmpnoise[|threshold1[|threshold2[|threshold3]]], temporal noise reducer</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>threshold1</samp>&rsquo;</dt>
+<dd><p>larger -&gt; stronger filtering
+</p></dd>
+<dt> &lsquo;<samp>threshold2</samp>&rsquo;</dt>
+<dd><p>larger -&gt; stronger filtering
+</p></dd>
+<dt> &lsquo;<samp>threshold3</samp>&rsquo;</dt>
+<dd><p>larger -&gt; stronger filtering
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>al/autolevels[:f/fullyrange], automatic brightness / contrast correction</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>f/fullyrange</samp>&rsquo;</dt>
+<dd><p>Stretch luminance to <code>0-255</code>.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>lb/linblenddeint</samp>&rsquo;</dt>
+<dd><p>Linear blend deinterlacing filter that deinterlaces the given block by
+filtering all lines with a <code>(1 2 1)</code> filter.
+</p>
+</dd>
+<dt> &lsquo;<samp>li/linipoldeint</samp>&rsquo;</dt>
+<dd><p>Linear interpolating deinterlacing filter that deinterlaces the given block by
+linearly interpolating every second line.
+</p>
+</dd>
+<dt> &lsquo;<samp>ci/cubicipoldeint</samp>&rsquo;</dt>
+<dd><p>Cubic interpolating deinterlacing filter deinterlaces the given block by
+cubically interpolating every second line.
+</p>
+</dd>
+<dt> &lsquo;<samp>md/mediandeint</samp>&rsquo;</dt>
+<dd><p>Median deinterlacing filter that deinterlaces the given block by applying a
+median filter to every second line.
+</p>
+</dd>
+<dt> &lsquo;<samp>fd/ffmpegdeint</samp>&rsquo;</dt>
+<dd><p>FFmpeg deinterlacing filter that deinterlaces the given block by filtering every
+second line with a <code>(-1 4 2 4 -1)</code> filter.
+</p>
+</dd>
+<dt> &lsquo;<samp>l5/lowpass5</samp>&rsquo;</dt>
+<dd><p>Vertically applied FIR lowpass deinterlacing filter that deinterlaces the given
+block by filtering all lines with a <code>(-1 2 6 2 -1)</code> filter.
+</p>
+</dd>
+<dt> &lsquo;<samp>fq/forceQuant[|quantizer]</samp>&rsquo;</dt>
+<dd><p>Overrides the quantizer table from the input with the constant quantizer you
+specify.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>quantizer</samp>&rsquo;</dt>
+<dd><p>Quantizer to use
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>de/default</samp>&rsquo;</dt>
+<dd><p>Default pp filter combination (<code>hb|a,vb|a,dr|a</code>)
+</p>
+</dd>
+<dt> &lsquo;<samp>fa/fast</samp>&rsquo;</dt>
+<dd><p>Fast pp filter combination (<code>h1|a,v1|a,dr|a</code>)
+</p>
+</dd>
+<dt> &lsquo;<samp>ac</samp>&rsquo;</dt>
+<dd><p>High quality pp filter combination (<code>ha|a|128|7,va|a,dr|a</code>)
+</p></dd>
+</dl>
+
+<a name="Examples-29"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-29">35.64.1 Examples</a></h3>
+
+<ul>
+<li>
+Apply horizontal and vertical deblocking, deringing and automatic
+brightness/contrast:
+<table><tr><td>&nbsp;</td><td><pre class="example">pp=hb/vb/dr/al
+</pre></td></tr></table>
+
+</li><li>
+Apply default filters without brightness/contrast correction:
+<table><tr><td>&nbsp;</td><td><pre class="example">pp=de/-al
+</pre></td></tr></table>
+
+</li><li>
+Apply default filters and temporal denoiser:
+<table><tr><td>&nbsp;</td><td><pre class="example">pp=default/tmpnoise|1|2|3
+</pre></td></tr></table>
+
+</li><li>
+Apply deblocking on luminance only, and switch vertical deblocking on or off
+automatically depending on available CPU time:
+<table><tr><td>&nbsp;</td><td><pre class="example">pp=hb|y/vb|a
+</pre></td></tr></table>
+</li></ul>
+
+<a name="psnr"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-psnr">35.65 psnr</a></h2>
+
+<p>Obtain the average, maximum and minimum PSNR (Peak Signal to Noise
+Ratio) between two input videos.
+</p>
+<p>This filter takes in input two input videos, the first input is
+considered the &quot;main&quot; source and is passed unchanged to the
+output. The second input is used as a &quot;reference&quot; video for computing
+the PSNR.
+</p>
+<p>Both video inputs must have the same resolution and pixel format for
+this filter to work correctly. Also it assumes that both inputs
+have the same number of frames, which are compared one by one.
+</p>
+<p>The obtained average PSNR is printed through the logging system.
+</p>
+<p>The filter stores the accumulated MSE (mean squared error) of each
+frame, and at the end of the processing it is averaged across all frames
+equally, and the following formula is applied to obtain the PSNR:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">PSNR = 10*log10(MAX^2/MSE)
+</pre></td></tr></table>
+
+<p>Where MAX is the average of the maximum values of each component of the
+image.
+</p>
+<p>The description of the accepted parameters follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>stats_file, f</samp>&rsquo;</dt>
+<dd><p>If specified the filter will use the named file to save the PSNR of
+each individual frame.
+</p></dd>
+</dl>
+
+<p>The file printed if <var>stats_file</var> is selected, contains a sequence of
+key/value pairs of the form <var>key</var>:<var>value</var> for each compared
+couple of frames.
+</p>
+<p>A description of each shown parameter follows:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>sequential number of the input frame, starting from 1
+</p>
+</dd>
+<dt> &lsquo;<samp>mse_avg</samp>&rsquo;</dt>
+<dd><p>Mean Square Error pixel-by-pixel average difference of the compared
+frames, averaged over all the image components.
+</p>
+</dd>
+<dt> &lsquo;<samp>mse_y, mse_u, mse_v, mse_r, mse_g, mse_g, mse_a</samp>&rsquo;</dt>
+<dd><p>Mean Square Error pixel-by-pixel average difference of the compared
+frames for the component specified by the suffix.
+</p>
+</dd>
+<dt> &lsquo;<samp>psnr_y, psnr_u, psnr_v, psnr_r, psnr_g, psnr_b, psnr_a</samp>&rsquo;</dt>
+<dd><p>Peak Signal to Noise ratio of the compared frames for the component
+specified by the suffix.
+</p></dd>
+</dl>
+
+<p>For example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">movie=ref_movie.mpg, setpts=PTS-STARTPTS [main];
+[main][ref] psnr=&quot;stats_file=stats.log&quot; [out]
+</pre></td></tr></table>
+
+<p>On this example the input file being processed is compared with the
+reference file &lsquo;<tt>ref_movie.mpg</tt>&rsquo;. The PSNR of each individual frame
+is stored in &lsquo;<tt>stats.log</tt>&rsquo;.
+</p>
+<a name="pullup"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-pullup">35.66 pullup</a></h2>
+
+<p>Pulldown reversal (inverse telecine) filter, capable of handling mixed
+hard-telecine, 24000/1001 fps progressive, and 30000/1001 fps progressive
+content.
+</p>
+<p>The pullup filter is designed to take advantage of future context in making
+its decisions. This filter is stateless in the sense that it does not lock
+onto a pattern to follow, but it instead looks forward to the following
+fields in order to identify matches and rebuild progressive frames.
+</p>
+<p>To produce content with an even framerate, insert the fps filter after
+pullup, use <code>fps=24000/1001</code> if the input frame rate is 29.97fps,
+<code>fps=24</code> for 30fps and the (rare) telecined 25fps input.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>jl</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>jr</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>jt</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>jb</samp>&rsquo;</dt>
+<dd><p>These options set the amount of &quot;junk&quot; to ignore at the left, right, top, and
+bottom of the image, respectively. Left and right are in units of 8 pixels,
+while top and bottom are in units of 2 lines.
+The default is 8 pixels on each side.
+</p>
+</dd>
+<dt> &lsquo;<samp>sb</samp>&rsquo;</dt>
+<dd><p>Set the strict breaks. Setting this option to 1 will reduce the chances of
+filter generating an occasional mismatched frame, but it may also cause an
+excessive number of frames to be dropped during high motion sequences.
+Conversely, setting it to -1 will make filter match fields more easily.
+This may help processing of video where there is slight blurring between
+the fields, but may also cause there to be interlaced frames in the output.
+Default value is <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>mp</samp>&rsquo;</dt>
+<dd><p>Set the metric plane to use. It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>l</samp>&rsquo;</dt>
+<dd><p>Use luma plane.
+</p>
+</dd>
+<dt> &lsquo;<samp>u</samp>&rsquo;</dt>
+<dd><p>Use chroma blue plane.
+</p>
+</dd>
+<dt> &lsquo;<samp>v</samp>&rsquo;</dt>
+<dd><p>Use chroma red plane.
+</p></dd>
+</dl>
+
+<p>This option may be set to use chroma plane instead of the default luma plane
+for doing filter&rsquo;s computations. This may improve accuracy on very clean
+source material, but more likely will decrease accuracy, especially if there
+is chroma noise (rainbow effect) or any grayscale video.
+The main purpose of setting &lsquo;<samp>mp</samp>&rsquo; to a chroma plane is to reduce CPU
+load and make pullup usable in realtime on slow machines.
+</p></dd>
+</dl>
+
+<p>For best results (without duplicated frames in the output file) it is
+necessary to change the output frame rate. For example, to inverse
+telecine NTSC input:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input -vf pullup -r 24000/1001 ...
+</pre></td></tr></table>
+
+<a name="removelogo"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-removelogo">35.67 removelogo</a></h2>
+
+<p>Suppress a TV station logo, using an image file to determine which
+pixels comprise the logo. It works by filling in the pixels that
+comprise the logo with neighboring pixels.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filename, f</samp>&rsquo;</dt>
+<dd><p>Set the filter bitmap file, which can be any image format supported by
+libavformat. The width and height of the image file must match those of the
+video stream being processed.
+</p></dd>
+</dl>
+
+<p>Pixels in the provided bitmap image with a value of zero are not
+considered part of the logo, non-zero pixels are considered part of
+the logo. If you use white (255) for the logo and black (0) for the
+rest, you will be safe. For making the filter bitmap, it is
+recommended to take a screen capture of a black frame with the logo
+visible, and then using a threshold filter followed by the erode
+filter once or twice.
+</p>
+<p>If needed, little splotches can be fixed manually. Remember that if
+logo pixels are not covered, the filter quality will be much
+reduced. Marking too many pixels as part of the logo does not hurt as
+much, but it will increase the amount of blurring needed to cover over
+the image and will destroy more information than necessary, and extra
+pixels will slow things down on a large logo.
+</p>
+<a name="rotate"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-rotate">35.68 rotate</a></h2>
+
+<p>Rotate video by an arbitrary angle expressed in radians.
+</p>
+<p>The filter accepts the following options:
+</p>
+<p>A description of the optional parameters follows.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>angle, a</samp>&rsquo;</dt>
+<dd><p>Set an expression for the angle by which to rotate the input video
+clockwise, expressed as a number of radians. A negative value will
+result in a counter-clockwise rotation. By default it is set to &quot;0&quot;.
+</p>
+<p>This expression is evaluated for each frame.
+</p>
+</dd>
+<dt> &lsquo;<samp>out_w, ow</samp>&rsquo;</dt>
+<dd><p>Set the output width expression, default value is &quot;iw&quot;.
+This expression is evaluated just once during configuration.
+</p>
+</dd>
+<dt> &lsquo;<samp>out_h, oh</samp>&rsquo;</dt>
+<dd><p>Set the output height expression, default value is &quot;ih&quot;.
+This expression is evaluated just once during configuration.
+</p>
+</dd>
+<dt> &lsquo;<samp>bilinear</samp>&rsquo;</dt>
+<dd><p>Enable bilinear interpolation if set to 1, a value of 0 disables
+it. Default value is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>fillcolor, c</samp>&rsquo;</dt>
+<dd><p>Set the color used to fill the output area not covered by the rotated
+image. For the generalsyntax of this option, check the &quot;Color&quot; section in the
+ffmpeg-utils manual. If the special value &quot;none&quot; is selected then no
+background is printed (useful for example if the background is never shown).
+</p>
+<p>Default value is &quot;black&quot;.
+</p></dd>
+</dl>
+
+<p>The expressions for the angle and the output size can contain the
+following constants and functions:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>sequential number of the input frame, starting from 0. It is always NAN
+before the first frame is filtered.
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>time in seconds of the input frame, it is set to 0 when the filter is
+configured. It is always NAN before the first frame is filtered.
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>in_w, iw</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>in_h, ih</samp>&rsquo;</dt>
+<dd><p>the input video width and heigth
+</p>
+</dd>
+<dt> &lsquo;<samp>out_w, ow</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>out_h, oh</samp>&rsquo;</dt>
+<dd><p>the output width and heigth, that is the size of the padded area as
+specified by the <var>width</var> and <var>height</var> expressions
+</p>
+</dd>
+<dt> &lsquo;<samp>rotw(a)</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>roth(a)</samp>&rsquo;</dt>
+<dd><p>the minimal width/height required for completely containing the input
+video rotated by <var>a</var> radians.
+</p>
+<p>These are only available when computing the &lsquo;<samp>out_w</samp>&rsquo; and
+&lsquo;<samp>out_h</samp>&rsquo; expressions.
+</p></dd>
+</dl>
+
+<a name="Examples-51"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-51">35.68.1 Examples</a></h3>
+
+<ul>
+<li>
+Rotate the input by PI/6 radians clockwise:
+<table><tr><td>&nbsp;</td><td><pre class="example">rotate=PI/6
+</pre></td></tr></table>
+
+</li><li>
+Rotate the input by PI/6 radians counter-clockwise:
+<table><tr><td>&nbsp;</td><td><pre class="example">rotate=-PI/6
+</pre></td></tr></table>
+
+</li><li>
+Apply a constant rotation with period T, starting from an angle of PI/3:
+<table><tr><td>&nbsp;</td><td><pre class="example">rotate=PI/3+2*PI*t/T
+</pre></td></tr></table>
+
+</li><li>
+Make the input video rotation oscillating with a period of T
+seconds and an amplitude of A radians:
+<table><tr><td>&nbsp;</td><td><pre class="example">rotate=A*sin(2*PI/T*t)
+</pre></td></tr></table>
+
+</li><li>
+Rotate the video, output size is choosen so that the whole rotating
+input video is always completely contained in the output:
+<table><tr><td>&nbsp;</td><td><pre class="example">rotate='2*PI*t:ow=hypot(iw,ih):oh=ow'
+</pre></td></tr></table>
+
+</li><li>
+Rotate the video, reduce the output size so that no background is ever
+shown:
+<table><tr><td>&nbsp;</td><td><pre class="example">rotate=2*PI*t:ow='min(iw,ih)/sqrt(2)':oh=ow:c=none
+</pre></td></tr></table>
+</li></ul>
+
+<a name="Commands-1"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Commands-1">35.68.2 Commands</a></h3>
+
+<p>The filter supports the following commands:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>a, angle</samp>&rsquo;</dt>
+<dd><p>Set the angle expression.
+The command accepts the same syntax of the corresponding option.
+</p>
+<p>If the specified expression is not valid, it is kept at its current
+value.
+</p></dd>
+</dl>
+
+<a name="sab"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-sab">35.69 sab</a></h2>
+
+<p>Apply Shape Adaptive Blur.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>luma_radius, lr</samp>&rsquo;</dt>
+<dd><p>Set luma blur filter strength, must be a value in range 0.1-4.0, default
+value is 1.0. A greater value will result in a more blurred image, and
+in slower processing.
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_pre_filter_radius, lpfr</samp>&rsquo;</dt>
+<dd><p>Set luma pre-filter radius, must be a value in the 0.1-2.0 range, default
+value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_strength, ls</samp>&rsquo;</dt>
+<dd><p>Set luma maximum difference between pixels to still be considered, must
+be a value in the 0.1-100.0 range, default value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_radius, cr</samp>&rsquo;</dt>
+<dd><p>Set chroma blur filter strength, must be a value in range 0.1-4.0. A
+greater value will result in a more blurred image, and in slower
+processing.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_pre_filter_radius, cpfr</samp>&rsquo;</dt>
+<dd><p>Set chroma pre-filter radius, must be a value in the 0.1-2.0 range.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_strength, cs</samp>&rsquo;</dt>
+<dd><p>Set chroma maximum difference between pixels to still be considered,
+must be a value in the 0.1-100.0 range.
+</p></dd>
+</dl>
+
+<p>Each chroma option value, if not explicitly specified, is set to the
+corresponding luma option value.
+</p>
+<p><a name="scale"></a>
+</p><a name="scale-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-scale-1">35.70 scale</a></h2>
+
+<p>Scale (resize) the input video, using the libswscale library.
+</p>
+<p>The scale filter forces the output display aspect ratio to be the same
+of the input, by changing the output sample aspect ratio.
+</p>
+<p>If the input image format is different from the format requested by
+the next filter, the scale filter will convert the input to the
+requested format.
+</p>
+<a name="Options-25"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-25">35.70.1 Options</a></h3>
+<p>The filter accepts the following options, or any of the options
+supported by the libswscale scaler.
+</p>
+<p>See <a href="ffmpeg-scaler.html#scaler_005foptions">(ffmpeg-scaler)scaler_options</a> for
+the complete list of scaler options.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>width, w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>height, h</samp>&rsquo;</dt>
+<dd><p>Set the output video dimension expression. Default value is the input
+dimension.
+</p>
+<p>If the value is 0, the input width is used for the output.
+</p>
+<p>If one of the values is -1, the scale filter will use a value that
+maintains the aspect ratio of the input image, calculated from the
+other specified dimension. If both of them are -1, the input size is
+used
+</p>
+<p>See below for the list of accepted constants for use in the dimension
+expression.
+</p>
+</dd>
+<dt> &lsquo;<samp>interl</samp>&rsquo;</dt>
+<dd><p>Set the interlacing mode. It accepts the following values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>Force interlaced aware scaling.
+</p>
+</dd>
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>Do not apply interlaced scaling.
+</p>
+</dd>
+<dt> &lsquo;<samp>-1</samp>&rsquo;</dt>
+<dd><p>Select interlaced aware scaling depending on whether the source frames
+are flagged as interlaced or not.
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>0</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>flags</samp>&rsquo;</dt>
+<dd><p>Set libswscale scaling flags. See
+<a href="ffmpeg-scaler.html#sws_005fflags">(ffmpeg-scaler)sws_flags</a> for the
+complete list of values. If not explictly specified the filter applies
+the default flags.
+</p>
+</dd>
+<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
+<dd><p>Set the video size. For the syntax of this option, check the &quot;Video size&quot;
+section in the ffmpeg-utils manual.
+</p>
+</dd>
+<dt> &lsquo;<samp>in_color_matrix</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>out_color_matrix</samp>&rsquo;</dt>
+<dd><p>Set in/output YCbCr color space type.
+</p>
+<p>This allows the autodetected value to be overridden as well as allows forcing
+a specific value used for the output and encoder.
+</p>
+<p>If not specified, the color space type depends on the pixel format.
+</p>
+<p>Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Choose automatically.
+</p>
+</dd>
+<dt> &lsquo;<samp>bt709</samp>&rsquo;</dt>
+<dd><p>Format conforming to International Telecommunication Union (ITU)
+Recommendation BT.709.
+</p>
+</dd>
+<dt> &lsquo;<samp>fcc</samp>&rsquo;</dt>
+<dd><p>Set color space conforming to the United States Federal Communications
+Commission (FCC) Code of Federal Regulations (CFR) Title 47 (2003) 73.682 (a).
+</p>
+</dd>
+<dt> &lsquo;<samp>bt601</samp>&rsquo;</dt>
+<dd><p>Set color space conforming to:
+</p>
+<ul>
+<li>
+ITU Radiocommunication Sector (ITU-R) Recommendation BT.601
+
+</li><li>
+ITU-R Rec. BT.470-6 (1998) Systems B, B1, and G
+
+</li><li>
+Society of Motion Picture and Television Engineers (SMPTE) ST 170:2004
+
+</li></ul>
+
+</dd>
+<dt> &lsquo;<samp>smpte240m</samp>&rsquo;</dt>
+<dd><p>Set color space conforming to SMPTE ST 240:1999.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>in_range</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>out_range</samp>&rsquo;</dt>
+<dd><p>Set in/output YCbCr sample range.
+</p>
+<p>This allows the autodetected value to be overridden as well as allows forcing
+a specific value used for the output and encoder. If not specified, the
+range depends on the pixel format. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Choose automatically.
+</p>
+</dd>
+<dt> &lsquo;<samp>jpeg/full/pc</samp>&rsquo;</dt>
+<dd><p>Set full range (0-255 in case of 8-bit luma).
+</p>
+</dd>
+<dt> &lsquo;<samp>mpeg/tv</samp>&rsquo;</dt>
+<dd><p>Set &quot;MPEG&quot; range (16-235 in case of 8-bit luma).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>force_original_aspect_ratio</samp>&rsquo;</dt>
+<dd><p>Enable decreasing or increasing output video width or height if necessary to
+keep the original aspect ratio. Possible values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>disable</samp>&rsquo;</dt>
+<dd><p>Scale the video as specified and disable this feature.
+</p>
+</dd>
+<dt> &lsquo;<samp>decrease</samp>&rsquo;</dt>
+<dd><p>The output video dimensions will automatically be decreased if needed.
+</p>
+</dd>
+<dt> &lsquo;<samp>increase</samp>&rsquo;</dt>
+<dd><p>The output video dimensions will automatically be increased if needed.
+</p>
+</dd>
+</dl>
+
+<p>One useful instance of this option is that when you know a specific device&rsquo;s
+maximum allowed resolution, you can use this to limit the output video to
+that, while retaining the aspect ratio. For example, device A allows
+1280x720 playback, and your video is 1920x800. Using this option (set it to
+decrease) and specifying 1280x720 to the command line makes the output
+1280x533.
+</p>
+<p>Please note that this is a different thing than specifying -1 for &lsquo;<samp>w</samp>&rsquo;
+or &lsquo;<samp>h</samp>&rsquo;, you still need to specify the output resolution for this option
+to work.
+</p>
+</dd>
+</dl>
+
+<p>The values of the &lsquo;<samp>w</samp>&rsquo; and &lsquo;<samp>h</samp>&rsquo; options are expressions
+containing the following constants:
+</p>
+<dl compact="compact">
+<dt> <var>in_w</var></dt>
+<dt> <var>in_h</var></dt>
+<dd><p>the input width and height
+</p>
+</dd>
+<dt> <var>iw</var></dt>
+<dt> <var>ih</var></dt>
+<dd><p>same as <var>in_w</var> and <var>in_h</var>
+</p>
+</dd>
+<dt> <var>out_w</var></dt>
+<dt> <var>out_h</var></dt>
+<dd><p>the output (scaled) width and height
+</p>
+</dd>
+<dt> <var>ow</var></dt>
+<dt> <var>oh</var></dt>
+<dd><p>same as <var>out_w</var> and <var>out_h</var>
+</p>
+</dd>
+<dt> <var>a</var></dt>
+<dd><p>same as <var>iw</var> / <var>ih</var>
+</p>
+</dd>
+<dt> <var>sar</var></dt>
+<dd><p>input sample aspect ratio
+</p>
+</dd>
+<dt> <var>dar</var></dt>
+<dd><p>input display aspect ratio. Calculated from <code>(iw / ih) * sar</code>.
+</p>
+</dd>
+<dt> <var>hsub</var></dt>
+<dt> <var>vsub</var></dt>
+<dd><p>horizontal and vertical input chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p>
+</dd>
+<dt> <var>ohsub</var></dt>
+<dt> <var>ovsub</var></dt>
+<dd><p>horizontal and vertical output chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p></dd>
+</dl>
+
+<a name="Examples-34"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-34">35.70.2 Examples</a></h3>
+
+<ul>
+<li>
+Scale the input video to a size of 200x100:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=w=200:h=100
+</pre></td></tr></table>
+
+<p>This is equivalent to:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">scale=200:100
+</pre></td></tr></table>
+
+<p>or:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">scale=200x100
+</pre></td></tr></table>
+
+</li><li>
+Specify a size abbreviation for the output size:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=qcif
+</pre></td></tr></table>
+
+<p>which can also be written as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">scale=size=qcif
+</pre></td></tr></table>
+
+</li><li>
+Scale the input to 2x:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=w=2*iw:h=2*ih
+</pre></td></tr></table>
+
+</li><li>
+The above is the same as:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=2*in_w:2*in_h
+</pre></td></tr></table>
+
+</li><li>
+Scale the input to 2x with forced interlaced scaling:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=2*iw:2*ih:interl=1
+</pre></td></tr></table>
+
+</li><li>
+Scale the input to half size:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=w=iw/2:h=ih/2
+</pre></td></tr></table>
+
+</li><li>
+Increase the width, and set the height to the same size:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=3/2*iw:ow
+</pre></td></tr></table>
+
+</li><li>
+Seek for Greek harmony:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=iw:1/PHI*iw
+scale=ih*PHI:ih
+</pre></td></tr></table>
+
+</li><li>
+Increase the height, and set the width to 3/2 of the height:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=w=3/2*oh:h=3/5*ih
+</pre></td></tr></table>
+
+</li><li>
+Increase the size, but make the size a multiple of the chroma
+subsample values:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=&quot;trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub&quot;
+</pre></td></tr></table>
+
+</li><li>
+Increase the width to a maximum of 500 pixels, keep the same input
+aspect ratio:
+<table><tr><td>&nbsp;</td><td><pre class="example">scale=w='min(500\, iw*3/2):h=-1'
+</pre></td></tr></table>
+</li></ul>
+
+<a name="separatefields"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-separatefields">35.71 separatefields</a></h2>
+
+<p>The <code>separatefields</code> takes a frame-based video input and splits
+each frame into its components fields, producing a new half height clip
+with twice the frame rate and twice the frame count.
+</p>
+<p>This filter use field-dominance information in frame to decide which
+of each pair of fields to place first in the output.
+If it gets it wrong use <a href="#setfield">setfield</a> filter before <code>separatefields</code> filter.
+</p>
+<a name="setdar_002c-setsar"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-setdar_002c-setsar">35.72 setdar, setsar</a></h2>
+
+<p>The <code>setdar</code> filter sets the Display Aspect Ratio for the filter
+output video.
+</p>
+<p>This is done by changing the specified Sample (aka Pixel) Aspect
+Ratio, according to the following equation:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>DAR</var> = <var>HORIZONTAL_RESOLUTION</var> / <var>VERTICAL_RESOLUTION</var> * <var>SAR</var>
+</pre></td></tr></table>
+
+<p>Keep in mind that the <code>setdar</code> filter does not modify the pixel
+dimensions of the video frame. Also the display aspect ratio set by
+this filter may be changed by later filters in the filterchain,
+e.g. in case of scaling or if another &quot;setdar&quot; or a &quot;setsar&quot; filter is
+applied.
+</p>
+<p>The <code>setsar</code> filter sets the Sample (aka Pixel) Aspect Ratio for
+the filter output video.
+</p>
+<p>Note that as a consequence of the application of this filter, the
+output display aspect ratio will change according to the equation
+above.
+</p>
+<p>Keep in mind that the sample aspect ratio set by the <code>setsar</code>
+filter may be changed by later filters in the filterchain, e.g. if
+another &quot;setsar&quot; or a &quot;setdar&quot; filter is applied.
+</p>
+<p>The filters accept the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>r, ratio, dar (<code>setdar</code> only), sar (<code>setsar</code> only)</samp>&rsquo;</dt>
+<dd><p>Set the aspect ratio used by the filter.
+</p>
+<p>The parameter can be a floating point number string, an expression, or
+a string of the form <var>num</var>:<var>den</var>, where <var>num</var> and
+<var>den</var> are the numerator and denominator of the aspect ratio. If
+the parameter is not specified, it is assumed the value &quot;0&quot;.
+In case the form &quot;<var>num</var>:<var>den</var>&quot; is used, the <code>:</code> character
+should be escaped.
+</p>
+</dd>
+<dt> &lsquo;<samp>max</samp>&rsquo;</dt>
+<dd><p>Set the maximum integer value to use for expressing numerator and
+denominator when reducing the expressed aspect ratio to a rational.
+Default value is <code>100</code>.
+</p>
+</dd>
+</dl>
+
+<p>The parameter <var>sar</var> is an expression containing
+the following constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>E, PI, PHI</samp>&rsquo;</dt>
+<dd><p>the corresponding mathematical approximated values for e
+(euler number), pi (greek PI), phi (golden ratio)
+</p>
+</dd>
+<dt> &lsquo;<samp>w, h</samp>&rsquo;</dt>
+<dd><p>the input width and height
+</p>
+</dd>
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>same as <var>w</var> / <var>h</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
+<dd><p>input sample aspect ratio
+</p>
+</dd>
+<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
+<dd><p>input display aspect ratio, it is the same as (<var>w</var> / <var>h</var>) * <var>sar</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>hsub, vsub</samp>&rsquo;</dt>
+<dd><p>horizontal and vertical chroma subsample values. For example for the
+pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
+</p></dd>
+</dl>
+
+<a name="Examples-28"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-28">35.72.1 Examples</a></h3>
+
+<ul>
+<li>
+To change the display aspect ratio to 16:9, specify one of the following:
+<table><tr><td>&nbsp;</td><td><pre class="example">setdar=dar=1.77777
+setdar=dar=16/9
+setdar=dar=1.77777
+</pre></td></tr></table>
+
+</li><li>
+To change the sample aspect ratio to 10:11, specify:
+<table><tr><td>&nbsp;</td><td><pre class="example">setsar=sar=10/11
+</pre></td></tr></table>
+
+</li><li>
+To set a display aspect ratio of 16:9, and specify a maximum integer value of
+1000 in the aspect ratio reduction, use the command:
+<table><tr><td>&nbsp;</td><td><pre class="example">setdar=ratio=16/9:max=1000
+</pre></td></tr></table>
+
+</li></ul>
+
+<p><a name="setfield"></a>
+</p><a name="setfield-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-setfield-1">35.73 setfield</a></h2>
+
+<p>Force field for the output video frame.
+</p>
+<p>The <code>setfield</code> filter marks the interlace type field for the
+output frames. It does not change the input frame, but only sets the
+corresponding property, which affects how the frame is treated by
+following filters (e.g. <code>fieldorder</code> or <code>yadif</code>).
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Keep the same field property.
+</p>
+</dd>
+<dt> &lsquo;<samp>bff</samp>&rsquo;</dt>
+<dd><p>Mark the frame as bottom-field-first.
+</p>
+</dd>
+<dt> &lsquo;<samp>tff</samp>&rsquo;</dt>
+<dd><p>Mark the frame as top-field-first.
+</p>
+</dd>
+<dt> &lsquo;<samp>prog</samp>&rsquo;</dt>
+<dd><p>Mark the frame as progressive.
+</p></dd>
+</dl>
+</dd>
+</dl>
+
+<a name="showinfo"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-showinfo">35.74 showinfo</a></h2>
+
+<p>Show a line containing various information for each input video frame.
+The input video is not modified.
+</p>
+<p>The shown line contains a sequence of key/value pairs of the form
+<var>key</var>:<var>value</var>.
+</p>
+<p>A description of each shown parameter follows:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>sequential number of the input frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
+<dd><p>Presentation TimeStamp of the input frame, expressed as a number of
+time base units. The time base unit depends on the filter input pad.
+</p>
+</dd>
+<dt> &lsquo;<samp>pts_time</samp>&rsquo;</dt>
+<dd><p>Presentation TimeStamp of the input frame, expressed as a number of
+seconds
+</p>
+</dd>
+<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
+<dd><p>position of the frame in the input stream, -1 if this information in
+unavailable and/or meaningless (for example in case of synthetic video)
+</p>
+</dd>
+<dt> &lsquo;<samp>fmt</samp>&rsquo;</dt>
+<dd><p>pixel format name
+</p>
+</dd>
+<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
+<dd><p>sample aspect ratio of the input frame, expressed in the form
+<var>num</var>/<var>den</var>
+</p>
+</dd>
+<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
+<dd><p>size of the input frame. For the syntax of this option, check the &quot;Video size&quot;
+section in the ffmpeg-utils manual.
+</p>
+</dd>
+<dt> &lsquo;<samp>i</samp>&rsquo;</dt>
+<dd><p>interlaced mode (&quot;P&quot; for &quot;progressive&quot;, &quot;T&quot; for top field first, &quot;B&quot;
+for bottom field first)
+</p>
+</dd>
+<dt> &lsquo;<samp>iskey</samp>&rsquo;</dt>
+<dd><p>1 if the frame is a key frame, 0 otherwise
+</p>
+</dd>
+<dt> &lsquo;<samp>type</samp>&rsquo;</dt>
+<dd><p>picture type of the input frame (&quot;I&quot; for an I-frame, &quot;P&quot; for a
+P-frame, &quot;B&quot; for a B-frame, &quot;?&quot; for unknown type).
+Check also the documentation of the <code>AVPictureType</code> enum and of
+the <code>av_get_picture_type_char</code> function defined in
+&lsquo;<tt>libavutil/avutil.h</tt>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>checksum</samp>&rsquo;</dt>
+<dd><p>Adler-32 checksum (printed in hexadecimal) of all the planes of the input frame
+</p>
+</dd>
+<dt> &lsquo;<samp>plane_checksum</samp>&rsquo;</dt>
+<dd><p>Adler-32 checksum (printed in hexadecimal) of each plane of the input frame,
+expressed in the form &quot;[<var>c0</var> <var>c1</var> <var>c2</var> <var>c3</var>]&quot;
+</p></dd>
+</dl>
+
+<p><a name="smartblur"></a>
+</p><a name="smartblur-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-smartblur-1">35.75 smartblur</a></h2>
+
+<p>Blur the input video without impacting the outlines.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>luma_radius, lr</samp>&rsquo;</dt>
+<dd><p>Set the luma radius. The option value must be a float number in
+the range [0.1,5.0] that specifies the variance of the gaussian filter
+used to blur the image (slower if larger). Default value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_strength, ls</samp>&rsquo;</dt>
+<dd><p>Set the luma strength. The option value must be a float number
+in the range [-1.0,1.0] that configures the blurring. A value included
+in [0.0,1.0] will blur the image whereas a value included in
+[-1.0,0.0] will sharpen the image. Default value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_threshold, lt</samp>&rsquo;</dt>
+<dd><p>Set the luma threshold used as a coefficient to determine
+whether a pixel should be blurred or not. The option value must be an
+integer in the range [-30,30]. A value of 0 will filter all the image,
+a value included in [0,30] will filter flat areas and a value included
+in [-30,0] will filter edges. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_radius, cr</samp>&rsquo;</dt>
+<dd><p>Set the chroma radius. The option value must be a float number in
+the range [0.1,5.0] that specifies the variance of the gaussian filter
+used to blur the image (slower if larger). Default value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_strength, cs</samp>&rsquo;</dt>
+<dd><p>Set the chroma strength. The option value must be a float number
+in the range [-1.0,1.0] that configures the blurring. A value included
+in [0.0,1.0] will blur the image whereas a value included in
+[-1.0,0.0] will sharpen the image. Default value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_threshold, ct</samp>&rsquo;</dt>
+<dd><p>Set the chroma threshold used as a coefficient to determine
+whether a pixel should be blurred or not. The option value must be an
+integer in the range [-30,30]. A value of 0 will filter all the image,
+a value included in [0,30] will filter flat areas and a value included
+in [-30,0] will filter edges. Default value is 0.
+</p></dd>
+</dl>
+
+<p>If a chroma option is not explicitly set, the corresponding luma value
+is set.
+</p>
+<a name="stereo3d"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-stereo3d">35.76 stereo3d</a></h2>
+
+<p>Convert between different stereoscopic image formats.
+</p>
+<p>The filters accept the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>in</samp>&rsquo;</dt>
+<dd><p>Set stereoscopic image format of input.
+</p>
+<p>Available values for input image formats are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>sbsl</samp>&rsquo;</dt>
+<dd><p>side by side parallel (left eye left, right eye right)
+</p>
+</dd>
+<dt> &lsquo;<samp>sbsr</samp>&rsquo;</dt>
+<dd><p>side by side crosseye (right eye left, left eye right)
+</p>
+</dd>
+<dt> &lsquo;<samp>sbs2l</samp>&rsquo;</dt>
+<dd><p>side by side parallel with half width resolution
+(left eye left, right eye right)
+</p>
+</dd>
+<dt> &lsquo;<samp>sbs2r</samp>&rsquo;</dt>
+<dd><p>side by side crosseye with half width resolution
+(right eye left, left eye right)
+</p>
+</dd>
+<dt> &lsquo;<samp>abl</samp>&rsquo;</dt>
+<dd><p>above-below (left eye above, right eye below)
+</p>
+</dd>
+<dt> &lsquo;<samp>abr</samp>&rsquo;</dt>
+<dd><p>above-below (right eye above, left eye below)
+</p>
+</dd>
+<dt> &lsquo;<samp>ab2l</samp>&rsquo;</dt>
+<dd><p>above-below with half height resolution
+(left eye above, right eye below)
+</p>
+</dd>
+<dt> &lsquo;<samp>ab2r</samp>&rsquo;</dt>
+<dd><p>above-below with half height resolution
+(right eye above, left eye below)
+</p>
+</dd>
+<dt> &lsquo;<samp>al</samp>&rsquo;</dt>
+<dd><p>alternating frames (left eye first, right eye second)
+</p>
+</dd>
+<dt> &lsquo;<samp>ar</samp>&rsquo;</dt>
+<dd><p>alternating frames (right eye first, left eye second)
+</p>
+<p>Default value is &lsquo;<samp>sbsl</samp>&rsquo;.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>out</samp>&rsquo;</dt>
+<dd><p>Set stereoscopic image format of output.
+</p>
+<p>Available values for output image formats are all the input formats as well as:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>arbg</samp>&rsquo;</dt>
+<dd><p>anaglyph red/blue gray
+(red filter on left eye, blue filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>argg</samp>&rsquo;</dt>
+<dd><p>anaglyph red/green gray
+(red filter on left eye, green filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>arcg</samp>&rsquo;</dt>
+<dd><p>anaglyph red/cyan gray
+(red filter on left eye, cyan filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>arch</samp>&rsquo;</dt>
+<dd><p>anaglyph red/cyan half colored
+(red filter on left eye, cyan filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>arcc</samp>&rsquo;</dt>
+<dd><p>anaglyph red/cyan color
+(red filter on left eye, cyan filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>arcd</samp>&rsquo;</dt>
+<dd><p>anaglyph red/cyan color optimized with the least squares projection of dubois
+(red filter on left eye, cyan filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>agmg</samp>&rsquo;</dt>
+<dd><p>anaglyph green/magenta gray
+(green filter on left eye, magenta filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>agmh</samp>&rsquo;</dt>
+<dd><p>anaglyph green/magenta half colored
+(green filter on left eye, magenta filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>agmc</samp>&rsquo;</dt>
+<dd><p>anaglyph green/magenta colored
+(green filter on left eye, magenta filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>agmd</samp>&rsquo;</dt>
+<dd><p>anaglyph green/magenta color optimized with the least squares projection of dubois
+(green filter on left eye, magenta filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>aybg</samp>&rsquo;</dt>
+<dd><p>anaglyph yellow/blue gray
+(yellow filter on left eye, blue filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>aybh</samp>&rsquo;</dt>
+<dd><p>anaglyph yellow/blue half colored
+(yellow filter on left eye, blue filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>aybc</samp>&rsquo;</dt>
+<dd><p>anaglyph yellow/blue colored
+(yellow filter on left eye, blue filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>aybd</samp>&rsquo;</dt>
+<dd><p>anaglyph yellow/blue color optimized with the least squares projection of dubois
+(yellow filter on left eye, blue filter on right eye)
+</p>
+</dd>
+<dt> &lsquo;<samp>irl</samp>&rsquo;</dt>
+<dd><p>interleaved rows (left eye has top row, right eye starts on next row)
+</p>
+</dd>
+<dt> &lsquo;<samp>irr</samp>&rsquo;</dt>
+<dd><p>interleaved rows (right eye has top row, left eye starts on next row)
+</p>
+</dd>
+<dt> &lsquo;<samp>ml</samp>&rsquo;</dt>
+<dd><p>mono output (left eye only)
+</p>
+</dd>
+<dt> &lsquo;<samp>mr</samp>&rsquo;</dt>
+<dd><p>mono output (right eye only)
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>arcd</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<a name="Examples-87"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-87">35.76.1 Examples</a></h3>
+
+<ul>
+<li>
+Convert input video from side by side parallel to anaglyph yellow/blue dubois:
+<table><tr><td>&nbsp;</td><td><pre class="example">stereo3d=sbsl:aybd
+</pre></td></tr></table>
+
+</li><li>
+Convert input video from above bellow (left eye above, right eye below) to side by side crosseye.
+<table><tr><td>&nbsp;</td><td><pre class="example">stereo3d=abl:sbsr
+</pre></td></tr></table>
+</li></ul>
+
+<a name="spp"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-spp">35.77 spp</a></h2>
+
+<p>Apply a simple postprocessing filter that compresses and decompresses the image
+at several (or - in the case of &lsquo;<samp>quality</samp>&rsquo; level <code>6</code> - all) shifts
+and average the results.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>quality</samp>&rsquo;</dt>
+<dd><p>Set quality. This option defines the number of levels for averaging. It accepts
+an integer in the range 0-6. If set to <code>0</code>, the filter will have no
+effect. A value of <code>6</code> means the higher quality. For each increment of
+that value the speed drops by a factor of approximately 2.  Default value is
+<code>3</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>qp</samp>&rsquo;</dt>
+<dd><p>Force a constant quantization parameter. If not set, the filter will use the QP
+from the video stream (if available).
+</p>
+</dd>
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Set thresholding mode. Available modes are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>hard</samp>&rsquo;</dt>
+<dd><p>Set hard thresholding (default).
+</p></dd>
+<dt> &lsquo;<samp>soft</samp>&rsquo;</dt>
+<dd><p>Set soft thresholding (better de-ringing effect, but likely blurrier).
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>use_bframe_qp</samp>&rsquo;</dt>
+<dd><p>Enable the use of the QP from the B-Frames if set to <code>1</code>. Using this
+option may cause flicker since the B-Frames have often larger QP. Default is
+<code>0</code> (not enabled).
+</p></dd>
+</dl>
+
+<p><a name="subtitles"></a>
+</p><a name="subtitles-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-subtitles-1">35.78 subtitles</a></h2>
+
+<p>Draw subtitles on top of input video using the libass library.
+</p>
+<p>To enable compilation of this filter you need to configure FFmpeg with
+<code>--enable-libass</code>. This filter also requires a build with libavcodec and
+libavformat to convert the passed subtitles file to ASS (Advanced Substation
+Alpha) subtitles format.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filename, f</samp>&rsquo;</dt>
+<dd><p>Set the filename of the subtitle file to read. It must be specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>original_size</samp>&rsquo;</dt>
+<dd><p>Specify the size of the original video, the video for which the ASS file
+was composed. For the syntax of this option, check the &quot;Video size&quot; section in
+the ffmpeg-utils manual. Due to a misdesign in ASS aspect ratio arithmetic,
+this is necessary to correctly scale the fonts if the aspect ratio has been
+changed.
+</p>
+</dd>
+<dt> &lsquo;<samp>charenc</samp>&rsquo;</dt>
+<dd><p>Set subtitles input character encoding. <code>subtitles</code> filter only. Only
+useful if not UTF-8.
+</p></dd>
+</dl>
+
+<p>If the first key is not specified, it is assumed that the first value
+specifies the &lsquo;<samp>filename</samp>&rsquo;.
+</p>
+<p>For example, to render the file &lsquo;<tt>sub.srt</tt>&rsquo; on top of the input
+video, use the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">subtitles=sub.srt
+</pre></td></tr></table>
+
+<p>which is equivalent to:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">subtitles=filename=sub.srt
+</pre></td></tr></table>
+
+<a name="super2xsai"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-super2xsai">35.79 super2xsai</a></h2>
+
+<p>Scale the input by 2x and smooth using the Super2xSaI (Scale and
+Interpolate) pixel art scaling algorithm.
+</p>
+<p>Useful for enlarging pixel art images without reducing sharpness.
+</p>
+<a name="swapuv"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-swapuv">35.80 swapuv</a></h2>
+<p>Swap U &amp; V plane.
+</p>
+<a name="telecine"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-telecine">35.81 telecine</a></h2>
+
+<p>Apply telecine process to the video.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>first_field</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>top, t</samp>&rsquo;</dt>
+<dd><p>top field first
+</p></dd>
+<dt> &lsquo;<samp>bottom, b</samp>&rsquo;</dt>
+<dd><p>bottom field first
+The default value is <code>top</code>.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>pattern</samp>&rsquo;</dt>
+<dd><p>A string of numbers representing the pulldown pattern you wish to apply.
+The default value is <code>23</code>.
+</p></dd>
+</dl>
+
+<table><tr><td>&nbsp;</td><td><pre class="example">Some typical patterns:
+
+NTSC output (30i):
+27.5p: 32222
+24p: 23 (classic)
+24p: 2332 (preferred)
+20p: 33
+18p: 334
+16p: 3444
+
+PAL output (25i):
+27.5p: 12222
+24p: 222222222223 (&quot;Euro pulldown&quot;)
+16.67p: 33
+16p: 33333334
+</pre></td></tr></table>
+
+<a name="thumbnail"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-thumbnail">35.82 thumbnail</a></h2>
+<p>Select the most representative frame in a given sequence of consecutive frames.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>Set the frames batch size to analyze; in a set of <var>n</var> frames, the filter
+will pick one of them, and then handle the next batch of <var>n</var> frames until
+the end. Default is <code>100</code>.
+</p></dd>
+</dl>
+
+<p>Since the filter keeps track of the whole frames sequence, a bigger <var>n</var>
+value will result in a higher memory usage, so a high value is not recommended.
+</p>
+<a name="Examples-25"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-25">35.82.1 Examples</a></h3>
+
+<ul>
+<li>
+Extract one picture each 50 frames:
+<table><tr><td>&nbsp;</td><td><pre class="example">thumbnail=50
+</pre></td></tr></table>
+
+</li><li>
+Complete example of a thumbnail creation with <code>ffmpeg</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -vf thumbnail,scale=300:200 -frames:v 1 out.png
+</pre></td></tr></table>
+</li></ul>
+
+<a name="tile"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-tile">35.83 tile</a></h2>
+
+<p>Tile several successive frames together.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>layout</samp>&rsquo;</dt>
+<dd><p>Set the grid size (i.e. the number of lines and columns). For the syntax of
+this option, check the &quot;Video size&quot; section in the ffmpeg-utils manual.
+</p>
+</dd>
+<dt> &lsquo;<samp>nb_frames</samp>&rsquo;</dt>
+<dd><p>Set the maximum number of frames to render in the given area. It must be less
+than or equal to <var>w</var>x<var>h</var>. The default value is <code>0</code>, meaning all
+the area will be used.
+</p>
+</dd>
+<dt> &lsquo;<samp>margin</samp>&rsquo;</dt>
+<dd><p>Set the outer border margin in pixels.
+</p>
+</dd>
+<dt> &lsquo;<samp>padding</samp>&rsquo;</dt>
+<dd><p>Set the inner border thickness (i.e. the number of pixels between frames). For
+more advanced padding options (such as having different values for the edges),
+refer to the pad video filter.
+</p>
+</dd>
+<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
+<dd><p>Specify the color of the unused areaFor the syntax of this option, check the
+&quot;Color&quot; section in the ffmpeg-utils manual. The default value of <var>color</var>
+is &quot;black&quot;.
+</p></dd>
+</dl>
+
+<a name="Examples-70"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-70">35.83.1 Examples</a></h3>
+
+<ul>
+<li>
+Produce 8x8 PNG tiles of all keyframes (&lsquo;<samp>-skip_frame nokey</samp>&rsquo;) in a movie:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -skip_frame nokey -i file.avi -vf 'scale=128:72,tile=8x8' -an -vsync 0 keyframes%03d.png
+</pre></td></tr></table>
+<p>The &lsquo;<samp>-vsync 0</samp>&rsquo; is necessary to prevent <code>ffmpeg</code> from
+duplicating each output frame to accomodate the originally detected frame
+rate.
+</p>
+</li><li>
+Display <code>5</code> pictures in an area of <code>3x2</code> frames,
+with <code>7</code> pixels between them, and <code>2</code> pixels of initial margin, using
+mixed flat and named options:
+<table><tr><td>&nbsp;</td><td><pre class="example">tile=3x2:nb_frames=5:padding=7:margin=2
+</pre></td></tr></table>
+</li></ul>
+
+<a name="tinterlace"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-tinterlace">35.84 tinterlace</a></h2>
+
+<p>Perform various types of temporal field interlacing.
+</p>
+<p>Frames are counted starting from 1, so the first input frame is
+considered odd.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Specify the mode of the interlacing. This option can also be specified
+as a value alone. See below for a list of values for this option.
+</p>
+<p>Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>merge, 0</samp>&rsquo;</dt>
+<dd><p>Move odd frames into the upper field, even into the lower field,
+generating a double height frame at half frame rate.
+</p>
+</dd>
+<dt> &lsquo;<samp>drop_odd, 1</samp>&rsquo;</dt>
+<dd><p>Only output even frames, odd frames are dropped, generating a frame with
+unchanged height at half frame rate.
+</p>
+</dd>
+<dt> &lsquo;<samp>drop_even, 2</samp>&rsquo;</dt>
+<dd><p>Only output odd frames, even frames are dropped, generating a frame with
+unchanged height at half frame rate.
+</p>
+</dd>
+<dt> &lsquo;<samp>pad, 3</samp>&rsquo;</dt>
+<dd><p>Expand each frame to full height, but pad alternate lines with black,
+generating a frame with double height at the same input frame rate.
+</p>
+</dd>
+<dt> &lsquo;<samp>interleave_top, 4</samp>&rsquo;</dt>
+<dd><p>Interleave the upper field from odd frames with the lower field from
+even frames, generating a frame with unchanged height at half frame rate.
+</p>
+</dd>
+<dt> &lsquo;<samp>interleave_bottom, 5</samp>&rsquo;</dt>
+<dd><p>Interleave the lower field from odd frames with the upper field from
+even frames, generating a frame with unchanged height at half frame rate.
+</p>
+</dd>
+<dt> &lsquo;<samp>interlacex2, 6</samp>&rsquo;</dt>
+<dd><p>Double frame rate with unchanged height. Frames are inserted each
+containing the second temporal field from the previous input frame and
+the first temporal field from the next input frame. This mode relies on
+the top_field_first flag. Useful for interlaced video displays with no
+field synchronisation.
+</p></dd>
+</dl>
+
+<p>Numeric values are deprecated but are accepted for backward
+compatibility reasons.
+</p>
+<p>Default mode is <code>merge</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>flags</samp>&rsquo;</dt>
+<dd><p>Specify flags influencing the filter process.
+</p>
+<p>Available value for <var>flags</var> is:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>low_pass_filter, vlfp</samp>&rsquo;</dt>
+<dd><p>Enable vertical low-pass filtering in the filter.
+Vertical low-pass filtering is required when creating an interlaced
+destination from a progressive source which contains high-frequency
+vertical detail. Filtering will reduce interlace &rsquo;twitter&rsquo; and Moire
+patterning.
+</p>
+<p>Vertical low-pass filtering can only be enabled for &lsquo;<samp>mode</samp>&rsquo;
+<var>interleave_top</var> and <var>interleave_bottom</var>.
+</p>
+</dd>
+</dl>
+</dd>
+</dl>
+
+<a name="transpose"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-transpose">35.85 transpose</a></h2>
+
+<p>Transpose rows with columns in the input video and optionally flip it.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>dir</samp>&rsquo;</dt>
+<dd><p>Specify the transposition direction.
+</p>
+<p>Can assume the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0, 4, cclock_flip</samp>&rsquo;</dt>
+<dd><p>Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">L.R     L.l
+. . -&gt;  . .
+l.r     R.r
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>1, 5, clock</samp>&rsquo;</dt>
+<dd><p>Rotate by 90 degrees clockwise, that is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">L.R     l.L
+. . -&gt;  . .
+l.r     r.R
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>2, 6, cclock</samp>&rsquo;</dt>
+<dd><p>Rotate by 90 degrees counterclockwise, that is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">L.R     R.r
+. . -&gt;  . .
+l.r     L.l
+</pre></td></tr></table>
+
+</dd>
+<dt> &lsquo;<samp>3, 7, clock_flip</samp>&rsquo;</dt>
+<dd><p>Rotate by 90 degrees clockwise and vertically flip, that is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">L.R     r.R
+. . -&gt;  . .
+l.r     l.L
+</pre></td></tr></table>
+</dd>
+</dl>
+
+<p>For values between 4-7, the transposition is only done if the input
+video geometry is portrait and not landscape. These values are
+deprecated, the <code>passthrough</code> option should be used instead.
+</p>
+<p>Numerical values are deprecated, and should be dropped in favor of
+symbolic constants.
+</p>
+</dd>
+<dt> &lsquo;<samp>passthrough</samp>&rsquo;</dt>
+<dd><p>Do not apply the transposition if the input geometry matches the one
+specified by the specified value. It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>Always apply transposition.
+</p></dd>
+<dt> &lsquo;<samp>portrait</samp>&rsquo;</dt>
+<dd><p>Preserve portrait geometry (when <var>height</var> &gt;= <var>width</var>).
+</p></dd>
+<dt> &lsquo;<samp>landscape</samp>&rsquo;</dt>
+<dd><p>Preserve landscape geometry (when <var>width</var> &gt;= <var>height</var>).
+</p></dd>
+</dl>
+
+<p>Default value is <code>none</code>.
+</p></dd>
+</dl>
+
+<p>For example to rotate by 90 degrees clockwise and preserve portrait
+layout:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">transpose=dir=1:passthrough=portrait
+</pre></td></tr></table>
+
+<p>The command above can also be specified as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">transpose=1:portrait
+</pre></td></tr></table>
+
+<a name="trim"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-trim">35.86 trim</a></h2>
+<p>Trim the input so that the output contains one continuous subpart of the input.
+</p>
+<p>This filter accepts the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>start</samp>&rsquo;</dt>
+<dd><p>Specify time of the start of the kept section, i.e. the frame with the
+timestamp <var>start</var> will be the first frame in the output.
+</p>
+</dd>
+<dt> &lsquo;<samp>end</samp>&rsquo;</dt>
+<dd><p>Specify time of the first frame that will be dropped, i.e. the frame
+immediately preceding the one with the timestamp <var>end</var> will be the last
+frame in the output.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_pts</samp>&rsquo;</dt>
+<dd><p>Same as <var>start</var>, except this option sets the start timestamp in timebase
+units instead of seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>end_pts</samp>&rsquo;</dt>
+<dd><p>Same as <var>end</var>, except this option sets the end timestamp in timebase units
+instead of seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration</samp>&rsquo;</dt>
+<dd><p>Specify maximum duration of the output.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_frame</samp>&rsquo;</dt>
+<dd><p>Number of the first frame that should be passed to output.
+</p>
+</dd>
+<dt> &lsquo;<samp>end_frame</samp>&rsquo;</dt>
+<dd><p>Number of the first frame that should be dropped.
+</p></dd>
+</dl>
+
+<p>&lsquo;<samp>start</samp>&rsquo;, &lsquo;<samp>end</samp>&rsquo;, &lsquo;<samp>duration</samp>&rsquo; are expressed as time
+duration specifications, check the &quot;Time duration&quot; section in the
+ffmpeg-utils manual.
+</p>
+<p>Note that the first two sets of the start/end options and the &lsquo;<samp>duration</samp>&rsquo;
+option look at the frame timestamp, while the _frame variants simply count the
+frames that pass through the filter. Also note that this filter does not modify
+the timestamps. If you wish that the output timestamps start at zero, insert a
+setpts filter after the trim filter.
+</p>
+<p>If multiple start or end options are set, this filter tries to be greedy and
+keep all the frames that match at least one of the specified constraints. To keep
+only the part that matches all the constraints at once, chain multiple trim
+filters.
+</p>
+<p>The defaults are such that all the input is kept. So it is possible to set e.g.
+just the end values to keep everything before the specified time.
+</p>
+<p>Examples:
+</p><ul>
+<li>
+drop everything except the second minute of input
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -vf trim=60:120
+</pre></td></tr></table>
+
+</li><li>
+keep only the first second
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -vf trim=duration=1
+</pre></td></tr></table>
+
+</li></ul>
+
+
+<a name="unsharp"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-unsharp">35.87 unsharp</a></h2>
+
+<p>Sharpen or blur the input video.
+</p>
+<p>It accepts the following parameters:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>luma_msize_x, lx</samp>&rsquo;</dt>
+<dd><p>Set the luma matrix horizontal size. It must be an odd integer between
+3 and 63, default value is 5.
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_msize_y, ly</samp>&rsquo;</dt>
+<dd><p>Set the luma matrix vertical size. It must be an odd integer between 3
+and 63, default value is 5.
+</p>
+</dd>
+<dt> &lsquo;<samp>luma_amount, la</samp>&rsquo;</dt>
+<dd><p>Set the luma effect strength. It can be a float number, reasonable
+values lay between -1.5 and 1.5.
+</p>
+<p>Negative values will blur the input video, while positive values will
+sharpen it, a value of zero will disable the effect.
+</p>
+<p>Default value is 1.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_msize_x, cx</samp>&rsquo;</dt>
+<dd><p>Set the chroma matrix horizontal size. It must be an odd integer
+between 3 and 63, default value is 5.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_msize_y, cy</samp>&rsquo;</dt>
+<dd><p>Set the chroma matrix vertical size. It must be an odd integer
+between 3 and 63, default value is 5.
+</p>
+</dd>
+<dt> &lsquo;<samp>chroma_amount, ca</samp>&rsquo;</dt>
+<dd><p>Set the chroma effect strength. It can be a float number, reasonable
+values lay between -1.5 and 1.5.
+</p>
+<p>Negative values will blur the input video, while positive values will
+sharpen it, a value of zero will disable the effect.
+</p>
+<p>Default value is 0.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>opencl</samp>&rsquo;</dt>
+<dd><p>If set to 1, specify using OpenCL capabilities, only available if
+FFmpeg was configured with <code>--enable-opencl</code>. Default value is 0.
+</p>
+</dd>
+</dl>
+
+<p>All parameters are optional and default to the equivalent of the
+string &rsquo;5:5:1.0:5:5:0.0&rsquo;.
+</p>
+<a name="Examples-60"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-60">35.87.1 Examples</a></h3>
+
+<ul>
+<li>
+Apply strong luma sharpen effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">unsharp=luma_msize_x=7:luma_msize_y=7:luma_amount=2.5
+</pre></td></tr></table>
+
+</li><li>
+Apply strong blur of both luma and chroma parameters:
+<table><tr><td>&nbsp;</td><td><pre class="example">unsharp=7:7:-2:7:7:-2
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="vidstabdetect"></a>
+</p><a name="vidstabdetect-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-vidstabdetect-1">35.88 vidstabdetect</a></h2>
+
+<p>Analyze video stabilization/deshaking. Perform pass 1 of 2, see
+<a href="#vidstabtransform">vidstabtransform</a> for pass 2.
+</p>
+<p>This filter generates a file with relative translation and rotation
+transform information about subsequent frames, which is then used by
+the <a href="#vidstabtransform">vidstabtransform</a> filter.
+</p>
+<p>To enable compilation of this filter you need to configure FFmpeg with
+<code>--enable-libvidstab</code>.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>result</samp>&rsquo;</dt>
+<dd><p>Set the path to the file used to write the transforms information.
+Default value is &lsquo;<tt>transforms.trf</tt>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>shakiness</samp>&rsquo;</dt>
+<dd><p>Set how shaky the video is and how quick the camera is. It accepts an
+integer in the range 1-10, a value of 1 means little shakiness, a
+value of 10 means strong shakiness. Default value is 5.
+</p>
+</dd>
+<dt> &lsquo;<samp>accuracy</samp>&rsquo;</dt>
+<dd><p>Set the accuracy of the detection process. It must be a value in the
+range 1-15. A value of 1 means low accuracy, a value of 15 means high
+accuracy. Default value is 9.
+</p>
+</dd>
+<dt> &lsquo;<samp>stepsize</samp>&rsquo;</dt>
+<dd><p>Set stepsize of the search process. The region around minimum is
+scanned with 1 pixel resolution. Default value is 6.
+</p>
+</dd>
+<dt> &lsquo;<samp>mincontrast</samp>&rsquo;</dt>
+<dd><p>Set minimum contrast. Below this value a local measurement field is
+discarded. Must be a floating point value in the range 0-1. Default
+value is 0.3.
+</p>
+</dd>
+<dt> &lsquo;<samp>tripod</samp>&rsquo;</dt>
+<dd><p>Set reference frame number for tripod mode.
+</p>
+<p>If enabled, the motion of the frames is compared to a reference frame
+in the filtered stream, identified by the specified number. The idea
+is to compensate all movements in a more-or-less static scene and keep
+the camera view absolutely still.
+</p>
+<p>If set to 0, it is disabled. The frames are counted starting from 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>show</samp>&rsquo;</dt>
+<dd><p>Show fields and transforms in the resulting frames. It accepts an
+integer in the range 0-2. Default value is 0, which disables any
+visualization.
+</p></dd>
+</dl>
+
+<a name="Examples-36"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-36">35.88.1 Examples</a></h3>
+
+<ul>
+<li>
+Use default values:
+<table><tr><td>&nbsp;</td><td><pre class="example">vidstabdetect
+</pre></td></tr></table>
+
+</li><li>
+Analyze strongly shaky movie and put the results in file
+&lsquo;<tt>mytransforms.trf</tt>&rsquo;:
+<table><tr><td>&nbsp;</td><td><pre class="example">vidstabdetect=shakiness=10:accuracy=15:result=&quot;mytransforms.trf&quot;
+</pre></td></tr></table>
+
+</li><li>
+Visualize the result of internal transformations in the resulting
+video:
+<table><tr><td>&nbsp;</td><td><pre class="example">vidstabdetect=show=1
+</pre></td></tr></table>
+
+</li><li>
+Analyze a video with medium shakiness using <code>ffmpeg</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input -vf vidstabdetect=shakiness=5:show=1 dummy.avi
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="vidstabtransform"></a>
+</p><a name="vidstabtransform-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-vidstabtransform-1">35.89 vidstabtransform</a></h2>
+
+<p>Video stabilization/deshaking: pass 2 of 2,
+see <a href="#vidstabdetect">vidstabdetect</a> for pass 1.
+</p>
+<p>Read a file with transform information for each frame and
+apply/compensate them. Together with the <a href="#vidstabdetect">vidstabdetect</a>
+filter this can be used to deshake videos. See also
+<a href="http://public.hronopik.de/vid.stab">http://public.hronopik.de/vid.stab</a>. It is important to also use
+the unsharp filter, see below.
+</p>
+<p>To enable compilation of this filter you need to configure FFmpeg with
+<code>--enable-libvidstab</code>.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>input</samp>&rsquo;</dt>
+<dd><p>path to the file used to read the transforms (default: &lsquo;<tt>transforms.trf</tt>&rsquo;)
+</p>
+</dd>
+<dt> &lsquo;<samp>smoothing</samp>&rsquo;</dt>
+<dd><p>number of frames (value*2 + 1) used for lowpass filtering the camera movements
+(default: 10). For example a number of 10 means that 21 frames are used
+(10 in the past and 10 in the future) to smoothen the motion in the
+video. A larger values leads to a smoother video, but limits the
+acceleration of the camera (pan/tilt movements).
+</p>
+</dd>
+<dt> &lsquo;<samp>maxshift</samp>&rsquo;</dt>
+<dd><p>maximal number of pixels to translate frames (default: -1 no limit)
+</p>
+</dd>
+<dt> &lsquo;<samp>maxangle</samp>&rsquo;</dt>
+<dd><p>maximal angle in radians (degree*PI/180) to rotate frames (default: -1
+no limit)
+</p>
+</dd>
+<dt> &lsquo;<samp>crop</samp>&rsquo;</dt>
+<dd><p>How to deal with borders that may be visible due to movement
+compensation. Available values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>keep</samp>&rsquo;</dt>
+<dd><p>keep image information from previous frame (default)
+</p></dd>
+<dt> &lsquo;<samp>black</samp>&rsquo;</dt>
+<dd><p>fill the border black
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>invert</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>keep transforms normal (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>invert transforms
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>relative</samp>&rsquo;</dt>
+<dd><p>consider transforms as
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>absolute
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>relative to previous frame (default)
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>zoom</samp>&rsquo;</dt>
+<dd><p>percentage to zoom (default: 0)
+</p><dl compact="compact">
+<dt> &lsquo;<samp>&gt;0</samp>&rsquo;</dt>
+<dd><p>zoom in
+</p></dd>
+<dt> &lsquo;<samp>&lt;0</samp>&rsquo;</dt>
+<dd><p>zoom out
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>optzoom</samp>&rsquo;</dt>
+<dd><p>set optimal zooming to avoid borders
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>disabled
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>optimal static zoom value is determined (only very strong movements will lead to visible borders) (default)
+</p></dd>
+<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
+<dd><p>optimal adaptive zoom value is determined (no borders will be visible)
+</p></dd>
+</dl>
+<p>Note that the value given at zoom is added to the one calculated
+here.
+</p>
+</dd>
+<dt> &lsquo;<samp>interpol</samp>&rsquo;</dt>
+<dd><p>type of interpolation
+</p>
+<p>Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>no</samp>&rsquo;</dt>
+<dd><p>no interpolation
+</p></dd>
+<dt> &lsquo;<samp>linear</samp>&rsquo;</dt>
+<dd><p>linear only horizontal
+</p></dd>
+<dt> &lsquo;<samp>bilinear</samp>&rsquo;</dt>
+<dd><p>linear in both directions (default)
+</p></dd>
+<dt> &lsquo;<samp>bicubic</samp>&rsquo;</dt>
+<dd><p>cubic in both directions (slow)
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>tripod</samp>&rsquo;</dt>
+<dd><p>virtual tripod mode means that the video is stabilized such that the
+camera stays stationary. Use also <code>tripod</code> option of
+<a href="#vidstabdetect">vidstabdetect</a>.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
+<dd><p>off (default)
+</p></dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>virtual tripod mode: equivalent to <code>relative=0:smoothing=0</code>
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Examples-3"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-3">35.89.1 Examples</a></h3>
+
+<ul>
+<li>
+typical call with default default values:
+ (note the unsharp filter which is always recommended)
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i inp.mpeg -vf vidstabtransform,unsharp=5:5:0.8:3:3:0.4 inp_stabilized.mpeg
+</pre></td></tr></table>
+
+</li><li>
+zoom in a bit more and load transform data from a given file
+<table><tr><td>&nbsp;</td><td><pre class="example">vidstabtransform=zoom=5:input=&quot;mytransforms.trf&quot;
+</pre></td></tr></table>
+
+</li><li>
+smoothen the video even more
+<table><tr><td>&nbsp;</td><td><pre class="example">vidstabtransform=smoothing=30
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="vflip"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-vflip">35.90 vflip</a></h2>
+
+<p>Flip the input video vertically.
+</p>
+<p>For example, to vertically flip a video with <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -vf &quot;vflip&quot; out.avi
+</pre></td></tr></table>
+
+<a name="vignette"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-vignette">35.91 vignette</a></h2>
+
+<p>Make or reverse a natural vignetting effect.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>angle, a</samp>&rsquo;</dt>
+<dd><p>Set lens angle expression as a number of radians.
+</p>
+<p>The value is clipped in the <code>[0,PI/2]</code> range.
+</p>
+<p>Default value: <code>&quot;PI/5&quot;</code>
+</p>
+</dd>
+<dt> &lsquo;<samp>x0</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>y0</samp>&rsquo;</dt>
+<dd><p>Set center coordinates expressions. Respectively <code>&quot;w/2&quot;</code> and <code>&quot;h/2&quot;</code>
+by default.
+</p>
+</dd>
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Set forward/backward mode.
+</p>
+<p>Available modes are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>forward</samp>&rsquo;</dt>
+<dd><p>The larger the distance from the central point, the darker the image becomes.
+</p>
+</dd>
+<dt> &lsquo;<samp>backward</samp>&rsquo;</dt>
+<dd><p>The larger the distance from the central point, the brighter the image becomes.
+This can be used to reverse a vignette effect, though there is no automatic
+detection to extract the lens &lsquo;<samp>angle</samp>&rsquo; and other settings (yet). It can
+also be used to create a burning effect.
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>forward</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>eval</samp>&rsquo;</dt>
+<dd><p>Set evaluation mode for the expressions (&lsquo;<samp>angle</samp>&rsquo;, &lsquo;<samp>x0</samp>&rsquo;, &lsquo;<samp>y0</samp>&rsquo;).
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>init</samp>&rsquo;</dt>
+<dd><p>Evaluate expressions only once during the filter initialization.
+</p>
+</dd>
+<dt> &lsquo;<samp>frame</samp>&rsquo;</dt>
+<dd><p>Evaluate expressions for each incoming frame. This is way slower than the
+&lsquo;<samp>init</samp>&rsquo; mode since it requires all the scalers to be re-computed, but it
+allows advanced dynamic expressions.
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>init</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>dither</samp>&rsquo;</dt>
+<dd><p>Set dithering to reduce the circular banding effects. Default is <code>1</code>
+(enabled).
+</p>
+</dd>
+<dt> &lsquo;<samp>aspect</samp>&rsquo;</dt>
+<dd><p>Set vignette aspect. This setting allows to adjust the shape of the vignette.
+Setting this value to the SAR of the input will make a rectangular vignetting
+following the dimensions of the video.
+</p>
+<p>Default is <code>1/1</code>.
+</p></dd>
+</dl>
+
+<a name="Expressions"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Expressions">35.91.1 Expressions</a></h3>
+
+<p>The &lsquo;<samp>alpha</samp>&rsquo;, &lsquo;<samp>x0</samp>&rsquo; and &lsquo;<samp>y0</samp>&rsquo; expressions can contain the
+following parameters.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>w</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>h</samp>&rsquo;</dt>
+<dd><p>input width and height
+</p>
+</dd>
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>the number of input frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
+<dd><p>the PTS (Presentation TimeStamp) time of the filtered video frame, expressed in
+<var>TB</var> units, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>r</samp>&rsquo;</dt>
+<dd><p>frame rate of the input video, NAN if the input frame rate is unknown
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>the PTS (Presentation TimeStamp) of the filtered video frame,
+expressed in seconds, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>tb</samp>&rsquo;</dt>
+<dd><p>time base of the input video
+</p></dd>
+</dl>
+
+
+<a name="Examples-80"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-80">35.91.2 Examples</a></h3>
+
+<ul>
+<li>
+Apply simple strong vignetting effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">vignette=PI/4
+</pre></td></tr></table>
+
+</li><li>
+Make a flickering vignetting:
+<table><tr><td>&nbsp;</td><td><pre class="example">vignette='PI/4+random(1)*PI/50':eval=frame
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="w3fdif"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-w3fdif">35.92 w3fdif</a></h2>
+
+<p>Deinterlace the input video (&quot;w3fdif&quot; stands for &quot;Weston 3 Field
+Deinterlacing Filter&quot;).
+</p>
+<p>Based on the process described by Martin Weston for BBC R&amp;D, and
+implemented based on the de-interlace algorithm written by Jim
+Easterbrook for BBC R&amp;D, the Weston 3 field deinterlacing filter
+uses filter coefficients calculated by BBC R&amp;D.
+</p>
+<p>There are two sets of filter coefficients, so called &quot;simple&quot;:
+and &quot;complex&quot;. Which set of filter coefficients is used can
+be set by passing an optional parameter:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filter</samp>&rsquo;</dt>
+<dd><p>Set the interlacing filter coefficients. Accepts one of the following values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>simple</samp>&rsquo;</dt>
+<dd><p>Simple filter coefficient set.
+</p></dd>
+<dt> &lsquo;<samp>complex</samp>&rsquo;</dt>
+<dd><p>More-complex filter coefficient set.
+</p></dd>
+</dl>
+<p>Default value is &lsquo;<samp>complex</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>deint</samp>&rsquo;</dt>
+<dd><p>Specify which frames to deinterlace. Accept one of the following values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>all</samp>&rsquo;</dt>
+<dd><p>Deinterlace all frames,
+</p></dd>
+<dt> &lsquo;<samp>interlaced</samp>&rsquo;</dt>
+<dd><p>Only deinterlace frames marked as interlaced.
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>all</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<p><a name="yadif"></a>
+</p><a name="yadif-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-yadif-1">35.93 yadif</a></h2>
+
+<p>Deinterlace the input video (&quot;yadif&quot; means &quot;yet another deinterlacing
+filter&quot;).
+</p>
+<p>This filter accepts the following options:
+</p>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>The interlacing mode to adopt, accepts one of the following values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>0, send_frame</samp>&rsquo;</dt>
+<dd><p>output 1 frame for each frame
+</p></dd>
+<dt> &lsquo;<samp>1, send_field</samp>&rsquo;</dt>
+<dd><p>output 1 frame for each field
+</p></dd>
+<dt> &lsquo;<samp>2, send_frame_nospatial</samp>&rsquo;</dt>
+<dd><p>like <code>send_frame</code> but skip spatial interlacing check
+</p></dd>
+<dt> &lsquo;<samp>3, send_field_nospatial</samp>&rsquo;</dt>
+<dd><p>like <code>send_field</code> but skip spatial interlacing check
+</p></dd>
+</dl>
+
+<p>Default value is <code>send_frame</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>parity</samp>&rsquo;</dt>
+<dd><p>The picture field parity assumed for the input interlaced video, accepts one of
+the following values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>0, tff</samp>&rsquo;</dt>
+<dd><p>assume top field first
+</p></dd>
+<dt> &lsquo;<samp>1, bff</samp>&rsquo;</dt>
+<dd><p>assume bottom field first
+</p></dd>
+<dt> &lsquo;<samp>-1, auto</samp>&rsquo;</dt>
+<dd><p>enable automatic detection
+</p></dd>
+</dl>
+
+<p>Default value is <code>auto</code>.
+If interlacing is unknown or decoder does not export this information,
+top field first will be assumed.
+</p>
+</dd>
+<dt> &lsquo;<samp>deint</samp>&rsquo;</dt>
+<dd><p>Specify which frames to deinterlace. Accept one of the following
+values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>0, all</samp>&rsquo;</dt>
+<dd><p>deinterlace all frames
+</p></dd>
+<dt> &lsquo;<samp>1, interlaced</samp>&rsquo;</dt>
+<dd><p>only deinterlace frames marked as interlaced
+</p></dd>
+</dl>
+
+<p>Default value is <code>all</code>.
+</p></dd>
+</dl>
+
+
+<a name="Video-Sources"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Video-Sources">36. Video Sources</a></h1>
+
+<p>Below is a description of the currently available video sources.
+</p>
+<a name="buffer"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-buffer">36.1 buffer</a></h2>
+
+<p>Buffer video frames, and make them available to the filter chain.
+</p>
+<p>This source is mainly intended for a programmatic use, in particular
+through the interface defined in &lsquo;<tt>libavfilter/vsrc_buffer.h</tt>&rsquo;.
+</p>
+<p>This source accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>video_size</samp>&rsquo;</dt>
+<dd><p>Specify the size (width and height) of the buffered video frames. For the
+syntax of this option, check the &quot;Video size&quot; section in the ffmpeg-utils
+manual.
+</p>
+</dd>
+<dt> &lsquo;<samp>width</samp>&rsquo;</dt>
+<dd><p>Input video width.
+</p>
+</dd>
+<dt> &lsquo;<samp>height</samp>&rsquo;</dt>
+<dd><p>Input video height.
+</p>
+</dd>
+<dt> &lsquo;<samp>pix_fmt</samp>&rsquo;</dt>
+<dd><p>A string representing the pixel format of the buffered video frames.
+It may be a number corresponding to a pixel format, or a pixel format
+name.
+</p>
+</dd>
+<dt> &lsquo;<samp>time_base</samp>&rsquo;</dt>
+<dd><p>Specify the timebase assumed by the timestamps of the buffered frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>frame_rate</samp>&rsquo;</dt>
+<dd><p>Specify the frame rate expected for the video stream.
+</p>
+</dd>
+<dt> &lsquo;<samp>pixel_aspect, sar</samp>&rsquo;</dt>
+<dd><p>Specify the sample aspect ratio assumed by the video frames.
+</p>
+</dd>
+<dt> &lsquo;<samp>sws_param</samp>&rsquo;</dt>
+<dd><p>Specify the optional parameters to be used for the scale filter which
+is automatically inserted when an input change is detected in the
+input size or format.
+</p></dd>
+</dl>
+
+<p>For example:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">buffer=width=320:height=240:pix_fmt=yuv410p:time_base=1/24:sar=1
+</pre></td></tr></table>
+
+<p>will instruct the source to accept video frames with size 320x240 and
+with format &quot;yuv410p&quot;, assuming 1/24 as the timestamps timebase and
+square pixels (1:1 sample aspect ratio).
+Since the pixel format with name &quot;yuv410p&quot; corresponds to the number 6
+(check the enum AVPixelFormat definition in &lsquo;<tt>libavutil/pixfmt.h</tt>&rsquo;),
+this example corresponds to:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">buffer=size=320x240:pixfmt=6:time_base=1/24:pixel_aspect=1/1
+</pre></td></tr></table>
+
+<p>Alternatively, the options can be specified as a flat string, but this
+syntax is deprecated:
+</p>
+<p><var>width</var>:<var>height</var>:<var>pix_fmt</var>:<var>time_base.num</var>:<var>time_base.den</var>:<var>pixel_aspect.num</var>:<var>pixel_aspect.den</var>[:<var>sws_param</var>]
+</p>
+<a name="cellauto"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-cellauto">36.2 cellauto</a></h2>
+
+<p>Create a pattern generated by an elementary cellular automaton.
+</p>
+<p>The initial state of the cellular automaton can be defined through the
+&lsquo;<samp>filename</samp>&rsquo;, and &lsquo;<samp>pattern</samp>&rsquo; options. If such options are
+not specified an initial state is created randomly.
+</p>
+<p>At each new frame a new row in the video is filled with the result of
+the cellular automaton next generation. The behavior when the whole
+frame is filled is defined by the &lsquo;<samp>scroll</samp>&rsquo; option.
+</p>
+<p>This source accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filename, f</samp>&rsquo;</dt>
+<dd><p>Read the initial cellular automaton state, i.e. the starting row, from
+the specified file.
+In the file, each non-whitespace character is considered an alive
+cell, a newline will terminate the row, and further characters in the
+file will be ignored.
+</p>
+</dd>
+<dt> &lsquo;<samp>pattern, p</samp>&rsquo;</dt>
+<dd><p>Read the initial cellular automaton state, i.e. the starting row, from
+the specified string.
+</p>
+<p>Each non-whitespace character in the string is considered an alive
+cell, a newline will terminate the row, and further characters in the
+string will be ignored.
+</p>
+</dd>
+<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
+<dd><p>Set the video rate, that is the number of frames generated per second.
+Default is 25.
+</p>
+</dd>
+<dt> &lsquo;<samp>random_fill_ratio, ratio</samp>&rsquo;</dt>
+<dd><p>Set the random fill ratio for the initial cellular automaton row. It
+is a floating point number value ranging from 0 to 1, defaults to
+1/PHI.
+</p>
+<p>This option is ignored when a file or a pattern is specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>random_seed, seed</samp>&rsquo;</dt>
+<dd><p>Set the seed for filling randomly the initial row, must be an integer
+included between 0 and UINT32_MAX. If not specified, or if explicitly
+set to -1, the filter will try to use a good random seed on a best
+effort basis.
+</p>
+</dd>
+<dt> &lsquo;<samp>rule</samp>&rsquo;</dt>
+<dd><p>Set the cellular automaton rule, it is a number ranging from 0 to 255.
+Default value is 110.
+</p>
+</dd>
+<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
+<dd><p>Set the size of the output video. For the syntax of this option, check
+the &quot;Video size&quot; section in the ffmpeg-utils manual.
+</p>
+<p>If &lsquo;<samp>filename</samp>&rsquo; or &lsquo;<samp>pattern</samp>&rsquo; is specified, the size is set
+by default to the width of the specified initial state row, and the
+height is set to <var>width</var> * PHI.
+</p>
+<p>If &lsquo;<samp>size</samp>&rsquo; is set, it must contain the width of the specified
+pattern string, and the specified pattern will be centered in the
+larger row.
+</p>
+<p>If a filename or a pattern string is not specified, the size value
+defaults to &quot;320x518&quot; (used for a randomly generated initial state).
+</p>
+</dd>
+<dt> &lsquo;<samp>scroll</samp>&rsquo;</dt>
+<dd><p>If set to 1, scroll the output upward when all the rows in the output
+have been already filled. If set to 0, the new generated row will be
+written over the top row just after the bottom row is filled.
+Defaults to 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_full, full</samp>&rsquo;</dt>
+<dd><p>If set to 1, completely fill the output with generated rows before
+outputting the first frame.
+This is the default behavior, for disabling set the value to 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>stitch</samp>&rsquo;</dt>
+<dd><p>If set to 1, stitch the left and right row edges together.
+This is the default behavior, for disabling set the value to 0.
+</p></dd>
+</dl>
+
+<a name="Examples-33"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-33">36.2.1 Examples</a></h3>
+
+<ul>
+<li>
+Read the initial state from &lsquo;<tt>pattern</tt>&rsquo;, and specify an output of
+size 200x400.
+<table><tr><td>&nbsp;</td><td><pre class="example">cellauto=f=pattern:s=200x400
+</pre></td></tr></table>
+
+</li><li>
+Generate a random initial row with a width of 200 cells, with a fill
+ratio of 2/3:
+<table><tr><td>&nbsp;</td><td><pre class="example">cellauto=ratio=2/3:s=200x200
+</pre></td></tr></table>
+
+</li><li>
+Create a pattern generated by rule 18 starting by a single alive cell
+centered on an initial row with width 100:
+<table><tr><td>&nbsp;</td><td><pre class="example">cellauto=p=@:s=100x400:full=0:rule=18
+</pre></td></tr></table>
+
+</li><li>
+Specify a more elaborated initial pattern:
+<table><tr><td>&nbsp;</td><td><pre class="example">cellauto=p='@@ @ @@':s=100x400:full=0:rule=18
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="mandelbrot"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-mandelbrot">36.3 mandelbrot</a></h2>
+
+<p>Generate a Mandelbrot set fractal, and progressively zoom towards the
+point specified with <var>start_x</var> and <var>start_y</var>.
+</p>
+<p>This source accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>end_pts</samp>&rsquo;</dt>
+<dd><p>Set the terminal pts value. Default value is 400.
+</p>
+</dd>
+<dt> &lsquo;<samp>end_scale</samp>&rsquo;</dt>
+<dd><p>Set the terminal scale value.
+Must be a floating point value. Default value is 0.3.
+</p>
+</dd>
+<dt> &lsquo;<samp>inner</samp>&rsquo;</dt>
+<dd><p>Set the inner coloring mode, that is the algorithm used to draw the
+Mandelbrot fractal internal region.
+</p>
+<p>It shall assume one of the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>black</samp>&rsquo;</dt>
+<dd><p>Set black mode.
+</p></dd>
+<dt> &lsquo;<samp>convergence</samp>&rsquo;</dt>
+<dd><p>Show time until convergence.
+</p></dd>
+<dt> &lsquo;<samp>mincol</samp>&rsquo;</dt>
+<dd><p>Set color based on point closest to the origin of the iterations.
+</p></dd>
+<dt> &lsquo;<samp>period</samp>&rsquo;</dt>
+<dd><p>Set period mode.
+</p></dd>
+</dl>
+
+<p>Default value is <var>mincol</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>bailout</samp>&rsquo;</dt>
+<dd><p>Set the bailout value. Default value is 10.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>maxiter</samp>&rsquo;</dt>
+<dd><p>Set the maximum of iterations performed by the rendering
+algorithm. Default value is 7189.
+</p>
+</dd>
+<dt> &lsquo;<samp>outer</samp>&rsquo;</dt>
+<dd><p>Set outer coloring mode.
+It shall assume one of following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>iteration_count</samp>&rsquo;</dt>
+<dd><p>Set iteration cound mode.
+</p></dd>
+<dt> &lsquo;<samp>normalized_iteration_count</samp>&rsquo;</dt>
+<dd><p>set normalized iteration count mode.
+</p></dd>
+</dl>
+<p>Default value is <var>normalized_iteration_count</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
+<dd><p>Set frame rate, expressed as number of frames per second. Default
+value is &quot;25&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
+<dd><p>Set frame size. For the syntax of this option, check the &quot;Video
+size&quot; section in the ffmpeg-utils manual. Default value is &quot;640x480&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_scale</samp>&rsquo;</dt>
+<dd><p>Set the initial scale value. Default value is 3.0.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_x</samp>&rsquo;</dt>
+<dd><p>Set the initial x position. Must be a floating point value between
+-100 and 100. Default value is -0.743643887037158704752191506114774.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_y</samp>&rsquo;</dt>
+<dd><p>Set the initial y position. Must be a floating point value between
+-100 and 100. Default value is -0.131825904205311970493132056385139.
+</p></dd>
+</dl>
+
+<a name="mptestsrc"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-mptestsrc">36.4 mptestsrc</a></h2>
+
+<p>Generate various test patterns, as generated by the MPlayer test filter.
+</p>
+<p>The size of the generated video is fixed, and is 256x256.
+This source is useful in particular for testing encoding features.
+</p>
+<p>This source accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
+<dd><p>Specify the frame rate of the sourced video, as the number of frames
+generated per second. It has to be a string in the format
+<var>frame_rate_num</var>/<var>frame_rate_den</var>, an integer number, a float
+number or a valid video frame rate abbreviation. The default value is
+&quot;25&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
+<dd><p>Set the video duration of the sourced video. The accepted syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[-]HH:MM:SS[.m...]
+[-]S+[.m...]
+</pre></td></tr></table>
+<p>See also the function <code>av_parse_time()</code>.
+</p>
+<p>If not specified, or the expressed duration is negative, the video is
+supposed to be generated forever.
+</p>
+</dd>
+<dt> &lsquo;<samp>test, t</samp>&rsquo;</dt>
+<dd>
+<p>Set the number or the name of the test to perform. Supported tests are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>dc_luma</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>dc_chroma</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>freq_luma</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>freq_chroma</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>amp_luma</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>amp_chroma</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>cbp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mv</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ring1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ring2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>all</samp>&rsquo;</dt>
+</dl>
+
+<p>Default value is &quot;all&quot;, which will cycle through the list of all tests.
+</p></dd>
+</dl>
+
+<p>For example the following:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">testsrc=t=dc_luma
+</pre></td></tr></table>
+
+<p>will generate a &quot;dc_luma&quot; test pattern.
+</p>
+<a name="frei0r_005fsrc"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-frei0r_005fsrc">36.5 frei0r_src</a></h2>
+
+<p>Provide a frei0r source.
+</p>
+<p>To enable compilation of this filter you need to install the frei0r
+header and configure FFmpeg with <code>--enable-frei0r</code>.
+</p>
+<p>This source accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>size</samp>&rsquo;</dt>
+<dd><p>The size of the video to generate. For the syntax of this option, check the
+&quot;Video size&quot; section in the ffmpeg-utils manual.
+</p>
+</dd>
+<dt> &lsquo;<samp>framerate</samp>&rsquo;</dt>
+<dd><p>Framerate of the generated video, may be a string of the form
+<var>num</var>/<var>den</var> or a frame rate abbreviation.
+</p>
+</dd>
+<dt> &lsquo;<samp>filter_name</samp>&rsquo;</dt>
+<dd><p>The name to the frei0r source to load. For more information regarding frei0r and
+how to set the parameters read the section <a href="#frei0r">frei0r</a> in the description of
+the video filters.
+</p>
+</dd>
+<dt> &lsquo;<samp>filter_params</samp>&rsquo;</dt>
+<dd><p>A &rsquo;|&rsquo;-separated list of parameters to pass to the frei0r source.
+</p>
+</dd>
+</dl>
+
+<p>For example, to generate a frei0r partik0l source with size 200x200
+and frame rate 10 which is overlayed on the overlay filter main input:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">frei0r_src=size=200x200:framerate=10:filter_name=partik0l:filter_params=1234 [overlay]; [in][overlay] overlay
+</pre></td></tr></table>
+
+<a name="life"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-life">36.6 life</a></h2>
+
+<p>Generate a life pattern.
+</p>
+<p>This source is based on a generalization of John Conway&rsquo;s life game.
+</p>
+<p>The sourced input represents a life grid, each pixel represents a cell
+which can be in one of two possible states, alive or dead. Every cell
+interacts with its eight neighbours, which are the cells that are
+horizontally, vertically, or diagonally adjacent.
+</p>
+<p>At each interaction the grid evolves according to the adopted rule,
+which specifies the number of neighbor alive cells which will make a
+cell stay alive or born. The &lsquo;<samp>rule</samp>&rsquo; option allows to specify
+the rule to adopt.
+</p>
+<p>This source accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filename, f</samp>&rsquo;</dt>
+<dd><p>Set the file from which to read the initial grid state. In the file,
+each non-whitespace character is considered an alive cell, and newline
+is used to delimit the end of each row.
+</p>
+<p>If this option is not specified, the initial grid is generated
+randomly.
+</p>
+</dd>
+<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
+<dd><p>Set the video rate, that is the number of frames generated per second.
+Default is 25.
+</p>
+</dd>
+<dt> &lsquo;<samp>random_fill_ratio, ratio</samp>&rsquo;</dt>
+<dd><p>Set the random fill ratio for the initial random grid. It is a
+floating point number value ranging from 0 to 1, defaults to 1/PHI.
+It is ignored when a file is specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>random_seed, seed</samp>&rsquo;</dt>
+<dd><p>Set the seed for filling the initial random grid, must be an integer
+included between 0 and UINT32_MAX. If not specified, or if explicitly
+set to -1, the filter will try to use a good random seed on a best
+effort basis.
+</p>
+</dd>
+<dt> &lsquo;<samp>rule</samp>&rsquo;</dt>
+<dd><p>Set the life rule.
+</p>
+<p>A rule can be specified with a code of the kind &quot;S<var>NS</var>/B<var>NB</var>&quot;,
+where <var>NS</var> and <var>NB</var> are sequences of numbers in the range 0-8,
+<var>NS</var> specifies the number of alive neighbor cells which make a
+live cell stay alive, and <var>NB</var> the number of alive neighbor cells
+which make a dead cell to become alive (i.e. to &quot;born&quot;).
+&quot;s&quot; and &quot;b&quot; can be used in place of &quot;S&quot; and &quot;B&quot;, respectively.
+</p>
+<p>Alternatively a rule can be specified by an 18-bits integer. The 9
+high order bits are used to encode the next cell state if it is alive
+for each number of neighbor alive cells, the low order bits specify
+the rule for &quot;borning&quot; new cells. Higher order bits encode for an
+higher number of neighbor cells.
+For example the number 6153 = <code>(12&lt;&lt;9)+9</code> specifies a stay alive
+rule of 12 and a born rule of 9, which corresponds to &quot;S23/B03&quot;.
+</p>
+<p>Default value is &quot;S23/B3&quot;, which is the original Conway&rsquo;s game of life
+rule, and will keep a cell alive if it has 2 or 3 neighbor alive
+cells, and will born a new cell if there are three alive cells around
+a dead cell.
+</p>
+</dd>
+<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
+<dd><p>Set the size of the output video. For the syntax of this option, check the
+&quot;Video size&quot; section in the ffmpeg-utils manual.
+</p>
+<p>If &lsquo;<samp>filename</samp>&rsquo; is specified, the size is set by default to the
+same size of the input file. If &lsquo;<samp>size</samp>&rsquo; is set, it must contain
+the size specified in the input file, and the initial grid defined in
+that file is centered in the larger resulting area.
+</p>
+<p>If a filename is not specified, the size value defaults to &quot;320x240&quot;
+(used for a randomly generated initial grid).
+</p>
+</dd>
+<dt> &lsquo;<samp>stitch</samp>&rsquo;</dt>
+<dd><p>If set to 1, stitch the left and right grid edges together, and the
+top and bottom edges also. Defaults to 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>mold</samp>&rsquo;</dt>
+<dd><p>Set cell mold speed. If set, a dead cell will go from &lsquo;<samp>death_color</samp>&rsquo; to
+&lsquo;<samp>mold_color</samp>&rsquo; with a step of &lsquo;<samp>mold</samp>&rsquo;. &lsquo;<samp>mold</samp>&rsquo; can have a
+value from 0 to 255.
+</p>
+</dd>
+<dt> &lsquo;<samp>life_color</samp>&rsquo;</dt>
+<dd><p>Set the color of living (or new born) cells.
+</p>
+</dd>
+<dt> &lsquo;<samp>death_color</samp>&rsquo;</dt>
+<dd><p>Set the color of dead cells. If &lsquo;<samp>mold</samp>&rsquo; is set, this is the first color
+used to represent a dead cell.
+</p>
+</dd>
+<dt> &lsquo;<samp>mold_color</samp>&rsquo;</dt>
+<dd><p>Set mold color, for definitely dead and moldy cells.
+</p>
+<p>For the syntax of these 3 color options, check the &quot;Color&quot; section in the
+ffmpeg-utils manual.
+</p></dd>
+</dl>
+
+<a name="Examples-63"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-63">36.6.1 Examples</a></h3>
+
+<ul>
+<li>
+Read a grid from &lsquo;<tt>pattern</tt>&rsquo;, and center it on a grid of size
+300x300 pixels:
+<table><tr><td>&nbsp;</td><td><pre class="example">life=f=pattern:s=300x300
+</pre></td></tr></table>
+
+</li><li>
+Generate a random grid of size 200x200, with a fill ratio of 2/3:
+<table><tr><td>&nbsp;</td><td><pre class="example">life=ratio=2/3:s=200x200
+</pre></td></tr></table>
+
+</li><li>
+Specify a custom rule for evolving a randomly generated grid:
+<table><tr><td>&nbsp;</td><td><pre class="example">life=rule=S14/B34
+</pre></td></tr></table>
+
+</li><li>
+Full example with slow death effect (mold) using <code>ffplay</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi life=s=300x200:mold=10:r=60:ratio=0.1:death_color=#C83232:life_color=#00ff00,scale=1200:800:flags=16
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="color"></a>
+<a name="haldclutsrc"></a>
+<a name="nullsrc"></a>
+<a name="rgbtestsrc"></a>
+<a name="smptebars"></a>
+<a name="smptehdbars"></a>
+<a name="testsrc"></a>
+</p><a name="color_002c-haldclutsrc_002c-nullsrc_002c-rgbtestsrc_002c-smptebars_002c-smptehdbars_002c-testsrc"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-color_002c-haldclutsrc_002c-nullsrc_002c-rgbtestsrc_002c-smptebars_002c-smptehdbars_002c-testsrc">36.7 color, haldclutsrc, nullsrc, rgbtestsrc, smptebars, smptehdbars, testsrc</a></h2>
+
+<p>The <code>color</code> source provides an uniformly colored input.
+</p>
+<p>The <code>haldclutsrc</code> source provides an identity Hald CLUT. See also
+<a href="#haldclut">haldclut</a> filter.
+</p>
+<p>The <code>nullsrc</code> source returns unprocessed video frames. It is
+mainly useful to be employed in analysis / debugging tools, or as the
+source for filters which ignore the input data.
+</p>
+<p>The <code>rgbtestsrc</code> source generates an RGB test pattern useful for
+detecting RGB vs BGR issues. You should see a red, green and blue
+stripe from top to bottom.
+</p>
+<p>The <code>smptebars</code> source generates a color bars pattern, based on
+the SMPTE Engineering Guideline EG 1-1990.
+</p>
+<p>The <code>smptehdbars</code> source generates a color bars pattern, based on
+the SMPTE RP 219-2002.
+</p>
+<p>The <code>testsrc</code> source generates a test video pattern, showing a
+color pattern, a scrolling gradient and a timestamp. This is mainly
+intended for testing purposes.
+</p>
+<p>The sources accept the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>color, c</samp>&rsquo;</dt>
+<dd><p>Specify the color of the source, only available in the <code>color</code>
+source. For the syntax of this option, check the &quot;Color&quot; section in the
+ffmpeg-utils manual.
+</p>
+</dd>
+<dt> &lsquo;<samp>level</samp>&rsquo;</dt>
+<dd><p>Specify the level of the Hald CLUT, only available in the <code>haldclutsrc</code>
+source. A level of <code>N</code> generates a picture of <code>N*N*N</code> by <code>N*N*N</code>
+pixels to be used as identity matrix for 3D lookup tables. Each component is
+coded on a <code>1/(N*N)</code> scale.
+</p>
+</dd>
+<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
+<dd><p>Specify the size of the sourced video. For the syntax of this option, check the
+&quot;Video size&quot; section in the ffmpeg-utils manual. The default value is
+&quot;320x240&quot;.
+</p>
+<p>This option is not available with the <code>haldclutsrc</code> filter.
+</p>
+</dd>
+<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
+<dd><p>Specify the frame rate of the sourced video, as the number of frames
+generated per second. It has to be a string in the format
+<var>frame_rate_num</var>/<var>frame_rate_den</var>, an integer number, a float
+number or a valid video frame rate abbreviation. The default value is
+&quot;25&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
+<dd><p>Set the sample aspect ratio of the sourced video.
+</p>
+</dd>
+<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
+<dd><p>Set the video duration of the sourced video. The accepted syntax is:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[-]HH[:MM[:SS[.m...]]]
+[-]S+[.m...]
+</pre></td></tr></table>
+<p>See also the function <code>av_parse_time()</code>.
+</p>
+<p>If not specified, or the expressed duration is negative, the video is
+supposed to be generated forever.
+</p>
+</dd>
+<dt> &lsquo;<samp>decimals, n</samp>&rsquo;</dt>
+<dd><p>Set the number of decimals to show in the timestamp, only available in the
+<code>testsrc</code> source.
+</p>
+<p>The displayed timestamp value will correspond to the original
+timestamp value multiplied by the power of 10 of the specified
+value. Default value is 0.
+</p></dd>
+</dl>
+
+<p>For example the following:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">testsrc=duration=5.3:size=qcif:rate=10
+</pre></td></tr></table>
+
+<p>will generate a video with a duration of 5.3 seconds, with size
+176x144 and a frame rate of 10 frames per second.
+</p>
+<p>The following graph description will generate a red source
+with an opacity of 0.2, with size &quot;qcif&quot; and a frame rate of 10
+frames per second.
+</p><table><tr><td>&nbsp;</td><td><pre class="example">color=c=red@0.2:s=qcif:r=10
+</pre></td></tr></table>
+
+<p>If the input content is to be ignored, <code>nullsrc</code> can be used. The
+following command generates noise in the luminance plane by employing
+the <code>geq</code> filter:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">nullsrc=s=256x256, geq=random(1)*255:128:128
+</pre></td></tr></table>
+
+<a name="Commands-4"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Commands-4">36.7.1 Commands</a></h3>
+
+<p>The <code>color</code> source supports the following commands:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>c, color</samp>&rsquo;</dt>
+<dd><p>Set the color of the created image. Accepts the same syntax of the
+corresponding &lsquo;<samp>color</samp>&rsquo; option.
+</p></dd>
+</dl>
+
+
+<a name="Video-Sinks"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Video-Sinks">37. Video Sinks</a></h1>
+
+<p>Below is a description of the currently available video sinks.
+</p>
+<a name="buffersink"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-buffersink">37.1 buffersink</a></h2>
+
+<p>Buffer video frames, and make them available to the end of the filter
+graph.
+</p>
+<p>This sink is mainly intended for a programmatic use, in particular
+through the interface defined in &lsquo;<tt>libavfilter/buffersink.h</tt>&rsquo;
+or the options system.
+</p>
+<p>It accepts a pointer to an AVBufferSinkContext structure, which
+defines the incoming buffers&rsquo; formats, to be passed as the opaque
+parameter to <code>avfilter_init_filter</code> for initialization.
+</p>
+<a name="nullsink"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-nullsink">37.2 nullsink</a></h2>
+
+<p>Null video sink, do absolutely nothing with the input video. It is
+mainly useful as a template and to be employed in analysis / debugging
+tools.
+</p>
+
+<a name="Multimedia-Filters"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Multimedia-Filters">38. Multimedia Filters</a></h1>
+
+<p>Below is a description of the currently available multimedia filters.
+</p>
+<a name="avectorscope"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-avectorscope">38.1 avectorscope</a></h2>
+
+<p>Convert input audio to a video output, representing the audio vector
+scope.
+</p>
+<p>The filter is used to measure the difference between channels of stereo
+audio stream. A monoaural signal, consisting of identical left and right
+signal, results in straight vertical line. Any stereo separation is visible
+as a deviation from this line, creating a Lissajous figure.
+If the straight (or deviation from it) but horizontal line appears this
+indicates that the left and right channels are out of phase.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>mode, m</samp>&rsquo;</dt>
+<dd><p>Set the vectorscope mode.
+</p>
+<p>Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>lissajous</samp>&rsquo;</dt>
+<dd><p>Lissajous rotated by 45 degrees.
+</p>
+</dd>
+<dt> &lsquo;<samp>lissajous_xy</samp>&rsquo;</dt>
+<dd><p>Same as above but not rotated.
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>lissajous</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
+<dd><p>Set the video size for the output. For the syntax of this option, check the &quot;Video size&quot;
+section in the ffmpeg-utils manual. Default value is <code>400x400</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
+<dd><p>Set the output frame rate. Default value is <code>25</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>rc</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>gc</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bc</samp>&rsquo;</dt>
+<dd><p>Specify the red, green and blue contrast. Default values are <code>40</code>, <code>160</code> and <code>80</code>.
+Allowed range is <code>[0, 255]</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>rf</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>gf</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>bf</samp>&rsquo;</dt>
+<dd><p>Specify the red, green and blue fade. Default values are <code>15</code>, <code>10</code> and <code>5</code>.
+Allowed range is <code>[0, 255]</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>zoom</samp>&rsquo;</dt>
+<dd><p>Set the zoom factor. Default value is <code>1</code>. Allowed range is <code>[1, 10]</code>.
+</p></dd>
+</dl>
+
+<a name="Examples-24"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-24">38.1.1 Examples</a></h3>
+
+<ul>
+<li>
+Complete example using <code>ffplay</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
+             [a] avectorscope=zoom=1.3:rc=2:gc=200:bc=10:rf=1:gf=8:bf=7 [out0]'
+</pre></td></tr></table>
+</li></ul>
+
+<a name="concat-3"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-concat-3">38.2 concat</a></h2>
+
+<p>Concatenate audio and video streams, joining them together one after the
+other.
+</p>
+<p>The filter works on segments of synchronized video and audio streams. All
+segments must have the same number of streams of each type, and that will
+also be the number of streams at output.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>Set the number of segments. Default is 2.
+</p>
+</dd>
+<dt> &lsquo;<samp>v</samp>&rsquo;</dt>
+<dd><p>Set the number of output video streams, that is also the number of video
+streams in each segment. Default is 1.
+</p>
+</dd>
+<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
+<dd><p>Set the number of output audio streams, that is also the number of video
+streams in each segment. Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>unsafe</samp>&rsquo;</dt>
+<dd><p>Activate unsafe mode: do not fail if segments have a different format.
+</p>
+</dd>
+</dl>
+
+<p>The filter has <var>v</var>+<var>a</var> outputs: first <var>v</var> video outputs, then
+<var>a</var> audio outputs.
+</p>
+<p>There are <var>n</var>x(<var>v</var>+<var>a</var>) inputs: first the inputs for the first
+segment, in the same order as the outputs, then the inputs for the second
+segment, etc.
+</p>
+<p>Related streams do not always have exactly the same duration, for various
+reasons including codec frame size or sloppy authoring. For that reason,
+related synchronized streams (e.g. a video and its audio track) should be
+concatenated at once. The concat filter will use the duration of the longest
+stream in each segment (except the last one), and if necessary pad shorter
+audio streams with silence.
+</p>
+<p>For this filter to work correctly, all segments must start at timestamp 0.
+</p>
+<p>All corresponding streams must have the same parameters in all segments; the
+filtering system will automatically select a common pixel format for video
+streams, and a common sample format, sample rate and channel layout for
+audio streams, but other settings, such as resolution, must be converted
+explicitly by the user.
+</p>
+<p>Different frame rates are acceptable but will result in variable frame rate
+at output; be sure to configure the output file to handle it.
+</p>
+<a name="Examples-91"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-91">38.2.1 Examples</a></h3>
+
+<ul>
+<li>
+Concatenate an opening, an episode and an ending, all in bilingual version
+(video in stream 0, audio in streams 1 and 2):
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i opening.mkv -i episode.mkv -i ending.mkv -filter_complex \
+  '[0:0] [0:1] [0:2] [1:0] [1:1] [1:2] [2:0] [2:1] [2:2]
+   concat=n=3:v=1:a=2 [v] [a1] [a2]' \
+  -map '[v]' -map '[a1]' -map '[a2]' output.mkv
+</pre></td></tr></table>
+
+</li><li>
+Concatenate two parts, handling audio and video separately, using the
+(a)movie sources, and adjusting the resolution:
+<table><tr><td>&nbsp;</td><td><pre class="example">movie=part1.mp4, scale=512:288 [v1] ; amovie=part1.mp4 [a1] ;
+movie=part2.mp4, scale=512:288 [v2] ; amovie=part2.mp4 [a2] ;
+[v1] [v2] concat [outv] ; [a1] [a2] concat=v=0:a=1 [outa]
+</pre></td></tr></table>
+<p>Note that a desync will happen at the stitch if the audio and video streams
+do not have exactly the same duration in the first file.
+</p>
+</li></ul>
+
+<a name="ebur128"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-ebur128">38.3 ebur128</a></h2>
+
+<p>EBU R128 scanner filter. This filter takes an audio stream as input and outputs
+it unchanged. By default, it logs a message at a frequency of 10Hz with the
+Momentary loudness (identified by <code>M</code>), Short-term loudness (<code>S</code>),
+Integrated loudness (<code>I</code>) and Loudness Range (<code>LRA</code>).
+</p>
+<p>The filter also has a video output (see the <var>video</var> option) with a real
+time graph to observe the loudness evolution. The graphic contains the logged
+message mentioned above, so it is not printed anymore when this option is set,
+unless the verbose logging is set. The main graphing area contains the
+short-term loudness (3 seconds of analysis), and the gauge on the right is for
+the momentary loudness (400 milliseconds).
+</p>
+<p>More information about the Loudness Recommendation EBU R128 on
+<a href="http://tech.ebu.ch/loudness">http://tech.ebu.ch/loudness</a>.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>video</samp>&rsquo;</dt>
+<dd><p>Activate the video output. The audio stream is passed unchanged whether this
+option is set or no. The video stream will be the first output stream if
+activated. Default is <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>size</samp>&rsquo;</dt>
+<dd><p>Set the video size. This option is for video only. For the syntax of this
+option, check the &quot;Video size&quot; section in the ffmpeg-utils manual. Default
+and minimum resolution is <code>640x480</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>meter</samp>&rsquo;</dt>
+<dd><p>Set the EBU scale meter. Default is <code>9</code>. Common values are <code>9</code> and
+<code>18</code>, respectively for EBU scale meter +9 and EBU scale meter +18. Any
+other integer value between this range is allowed.
+</p>
+</dd>
+<dt> &lsquo;<samp>metadata</samp>&rsquo;</dt>
+<dd><p>Set metadata injection. If set to <code>1</code>, the audio input will be segmented
+into 100ms output frames, each of them containing various loudness information
+in metadata.  All the metadata keys are prefixed with <code>lavfi.r128.</code>.
+</p>
+<p>Default is <code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>framelog</samp>&rsquo;</dt>
+<dd><p>Force the frame logging level.
+</p>
+<p>Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>info</samp>&rsquo;</dt>
+<dd><p>information logging level
+</p></dd>
+<dt> &lsquo;<samp>verbose</samp>&rsquo;</dt>
+<dd><p>verbose logging level
+</p></dd>
+</dl>
+
+<p>By default, the logging level is set to <var>info</var>. If the &lsquo;<samp>video</samp>&rsquo; or
+the &lsquo;<samp>metadata</samp>&rsquo; options are set, it switches to <var>verbose</var>.
+</p></dd>
+</dl>
+
+<a name="Examples-14"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-14">38.3.1 Examples</a></h3>
+
+<ul>
+<li>
+Real-time graph using <code>ffplay</code>, with a EBU scale meter +18:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi -i &quot;amovie=input.mp3,ebur128=video=1:meter=18 [out0][out1]&quot;
+</pre></td></tr></table>
+
+</li><li>
+Run an analysis with <code>ffmpeg</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -nostats -i input.mp3 -filter_complex ebur128 -f null -
+</pre></td></tr></table>
+</li></ul>
+
+<a name="interleave_002c-ainterleave"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-interleave_002c-ainterleave">38.4 interleave, ainterleave</a></h2>
+
+<p>Temporally interleave frames from several inputs.
+</p>
+<p><code>interleave</code> works with video inputs, <code>ainterleave</code> with audio.
+</p>
+<p>These filters read frames from several inputs and send the oldest
+queued frame to the output.
+</p>
+<p>Input streams must have a well defined, monotonically increasing frame
+timestamp values.
+</p>
+<p>In order to submit one frame to output, these filters need to enqueue
+at least one frame for each input, so they cannot work in case one
+input is not yet terminated and will not receive incoming frames.
+</p>
+<p>For example consider the case when one input is a <code>select</code> filter
+which always drop input frames. The <code>interleave</code> filter will keep
+reading from that input, but it will never be able to send new frames
+to output until the input will send an end-of-stream signal.
+</p>
+<p>Also, depending on inputs synchronization, the filters will drop
+frames in case one input receives more frames than the other ones, and
+the queue is already filled.
+</p>
+<p>These filters accept the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>nb_inputs, n</samp>&rsquo;</dt>
+<dd><p>Set the number of different inputs, it is 2 by default.
+</p></dd>
+</dl>
+
+<a name="Examples-57"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-57">38.4.1 Examples</a></h3>
+
+<ul>
+<li>
+Interleave frames belonging to different streams using <code>ffmpeg</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i bambi.avi -i pr0n.mkv -filter_complex &quot;[0:v][1:v] interleave&quot; out.avi
+</pre></td></tr></table>
+
+</li><li>
+Add flickering blur effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">select='if(gt(random(0), 0.2), 1, 2)':n=2 [tmp], boxblur=2:2, [tmp] interleave
+</pre></td></tr></table>
+</li></ul>
+
+<a name="perms_002c-aperms"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-perms_002c-aperms">38.5 perms, aperms</a></h2>
+
+<p>Set read/write permissions for the output frames.
+</p>
+<p>These filters are mainly aimed at developers to test direct path in the
+following filter in the filtergraph.
+</p>
+<p>The filters accept the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Select the permissions mode.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>Do nothing. This is the default.
+</p></dd>
+<dt> &lsquo;<samp>ro</samp>&rsquo;</dt>
+<dd><p>Set all the output frames read-only.
+</p></dd>
+<dt> &lsquo;<samp>rw</samp>&rsquo;</dt>
+<dd><p>Set all the output frames directly writable.
+</p></dd>
+<dt> &lsquo;<samp>toggle</samp>&rsquo;</dt>
+<dd><p>Make the frame read-only if writable, and writable if read-only.
+</p></dd>
+<dt> &lsquo;<samp>random</samp>&rsquo;</dt>
+<dd><p>Set each output frame read-only or writable randomly.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>seed</samp>&rsquo;</dt>
+<dd><p>Set the seed for the <var>random</var> mode, must be an integer included between
+<code>0</code> and <code>UINT32_MAX</code>. If not specified, or if explicitly set to
+<code>-1</code>, the filter will try to use a good random seed on a best effort
+basis.
+</p></dd>
+</dl>
+
+<p>Note: in case of auto-inserted filter between the permission filter and the
+following one, the permission might not be received as expected in that
+following filter. Inserting a <a href="#format">format</a> or <a href="#aformat">aformat</a> filter before the
+perms/aperms filter can avoid this problem.
+</p>
+<a name="select_002c-aselect"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-select_002c-aselect">38.6 select, aselect</a></h2>
+
+<p>Select frames to pass in output.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>expr, e</samp>&rsquo;</dt>
+<dd><p>Set expression, which is evaluated for each input frame.
+</p>
+<p>If the expression is evaluated to zero, the frame is discarded.
+</p>
+<p>If the evaluation result is negative or NaN, the frame is sent to the
+first output; otherwise it is sent to the output with index
+<code>ceil(val)-1</code>, assuming that the input index starts from 0.
+</p>
+<p>For example a value of <code>1.2</code> corresponds to the output with index
+<code>ceil(1.2)-1 = 2-1 = 1</code>, that is the second output.
+</p>
+</dd>
+<dt> &lsquo;<samp>outputs, n</samp>&rsquo;</dt>
+<dd><p>Set the number of outputs. The output to which to send the selected
+frame is based on the result of the evaluation. Default value is 1.
+</p></dd>
+</dl>
+
+<p>The expression can contain the following constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>the sequential number of the filtered frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>selected_n</samp>&rsquo;</dt>
+<dd><p>the sequential number of the selected frame, starting from 0
+</p>
+</dd>
+<dt> &lsquo;<samp>prev_selected_n</samp>&rsquo;</dt>
+<dd><p>the sequential number of the last selected frame, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>TB</samp>&rsquo;</dt>
+<dd><p>timebase of the input timestamps
+</p>
+</dd>
+<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
+<dd><p>the PTS (Presentation TimeStamp) of the filtered video frame,
+expressed in <var>TB</var> units, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>the PTS (Presentation TimeStamp) of the filtered video frame,
+expressed in seconds, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>prev_pts</samp>&rsquo;</dt>
+<dd><p>the PTS of the previously filtered video frame, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>prev_selected_pts</samp>&rsquo;</dt>
+<dd><p>the PTS of the last previously filtered video frame, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>prev_selected_t</samp>&rsquo;</dt>
+<dd><p>the PTS of the last previously selected video frame, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>start_pts</samp>&rsquo;</dt>
+<dd><p>the PTS of the first video frame in the video, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>start_t</samp>&rsquo;</dt>
+<dd><p>the time of the first video frame in the video, NAN if undefined
+</p>
+</dd>
+<dt> &lsquo;<samp>pict_type <em>(video only)</em></samp>&rsquo;</dt>
+<dd><p>the type of the filtered frame, can assume one of the following
+values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>I</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>P</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>B</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>S</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>SI</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>SP</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>BI</samp>&rsquo;</dt>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>interlace_type <em>(video only)</em></samp>&rsquo;</dt>
+<dd><p>the frame interlace type, can assume one of the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>PROGRESSIVE</samp>&rsquo;</dt>
+<dd><p>the frame is progressive (not interlaced)
+</p></dd>
+<dt> &lsquo;<samp>TOPFIRST</samp>&rsquo;</dt>
+<dd><p>the frame is top-field-first
+</p></dd>
+<dt> &lsquo;<samp>BOTTOMFIRST</samp>&rsquo;</dt>
+<dd><p>the frame is bottom-field-first
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>consumed_sample_n <em>(audio only)</em></samp>&rsquo;</dt>
+<dd><p>the number of selected samples before the current frame
+</p>
+</dd>
+<dt> &lsquo;<samp>samples_n <em>(audio only)</em></samp>&rsquo;</dt>
+<dd><p>the number of samples in the current frame
+</p>
+</dd>
+<dt> &lsquo;<samp>sample_rate <em>(audio only)</em></samp>&rsquo;</dt>
+<dd><p>the input sample rate
+</p>
+</dd>
+<dt> &lsquo;<samp>key</samp>&rsquo;</dt>
+<dd><p>1 if the filtered frame is a key-frame, 0 otherwise
+</p>
+</dd>
+<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
+<dd><p>the position in the file of the filtered frame, -1 if the information
+is not available (e.g. for synthetic video)
+</p>
+</dd>
+<dt> &lsquo;<samp>scene <em>(video only)</em></samp>&rsquo;</dt>
+<dd><p>value between 0 and 1 to indicate a new scene; a low value reflects a low
+probability for the current frame to introduce a new scene, while a higher
+value means the current frame is more likely to be one (see the example below)
+</p>
+</dd>
+</dl>
+
+<p>The default value of the select expression is &quot;1&quot;.
+</p>
+<a name="Examples-59"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-59">38.6.1 Examples</a></h3>
+
+<ul>
+<li>
+Select all frames in input:
+<table><tr><td>&nbsp;</td><td><pre class="example">select
+</pre></td></tr></table>
+
+<p>The example above is the same as:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">select=1
+</pre></td></tr></table>
+
+</li><li>
+Skip all frames:
+<table><tr><td>&nbsp;</td><td><pre class="example">select=0
+</pre></td></tr></table>
+
+</li><li>
+Select only I-frames:
+<table><tr><td>&nbsp;</td><td><pre class="example">select='eq(pict_type\,I)'
+</pre></td></tr></table>
+
+</li><li>
+Select one frame every 100:
+<table><tr><td>&nbsp;</td><td><pre class="example">select='not(mod(n\,100))'
+</pre></td></tr></table>
+
+</li><li>
+Select only frames contained in the 10-20 time interval:
+<table><tr><td>&nbsp;</td><td><pre class="example">select=between(t\,10\,20)
+</pre></td></tr></table>
+
+</li><li>
+Select only I frames contained in the 10-20 time interval:
+<table><tr><td>&nbsp;</td><td><pre class="example">select=between(t\,10\,20)*eq(pict_type\,I)
+</pre></td></tr></table>
+
+</li><li>
+Select frames with a minimum distance of 10 seconds:
+<table><tr><td>&nbsp;</td><td><pre class="example">select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
+</pre></td></tr></table>
+
+</li><li>
+Use aselect to select only audio frames with samples number &gt; 100:
+<table><tr><td>&nbsp;</td><td><pre class="example">aselect='gt(samples_n\,100)'
+</pre></td></tr></table>
+
+</li><li>
+Create a mosaic of the first scenes:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i video.avi -vf select='gt(scene\,0.4)',scale=160:120,tile -frames:v 1 preview.png
+</pre></td></tr></table>
+
+<p>Comparing <var>scene</var> against a value between 0.3 and 0.5 is generally a sane
+choice.
+</p>
+</li><li>
+Send even and odd frames to separate outputs, and compose them:
+<table><tr><td>&nbsp;</td><td><pre class="example">select=n=2:e='mod(n, 2)+1' [odd][even]; [odd] pad=h=2*ih [tmp]; [tmp][even] overlay=y=h
+</pre></td></tr></table>
+</li></ul>
+
+<a name="sendcmd_002c-asendcmd"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-sendcmd_002c-asendcmd">38.7 sendcmd, asendcmd</a></h2>
+
+<p>Send commands to filters in the filtergraph.
+</p>
+<p>These filters read commands to be sent to other filters in the
+filtergraph.
+</p>
+<p><code>sendcmd</code> must be inserted between two video filters,
+<code>asendcmd</code> must be inserted between two audio filters, but apart
+from that they act the same way.
+</p>
+<p>The specification of commands can be provided in the filter arguments
+with the <var>commands</var> option, or in a file specified by the
+<var>filename</var> option.
+</p>
+<p>These filters accept the following options:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>commands, c</samp>&rsquo;</dt>
+<dd><p>Set the commands to be read and sent to the other filters.
+</p></dd>
+<dt> &lsquo;<samp>filename, f</samp>&rsquo;</dt>
+<dd><p>Set the filename of the commands to be read and sent to the other
+filters.
+</p></dd>
+</dl>
+
+<a name="Commands-syntax"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Commands-syntax">38.7.1 Commands syntax</a></h3>
+
+<p>A commands description consists of a sequence of interval
+specifications, comprising a list of commands to be executed when a
+particular event related to that interval occurs. The occurring event
+is typically the current frame time entering or leaving a given time
+interval.
+</p>
+<p>An interval is specified by the following syntax:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>START</var>[-<var>END</var>] <var>COMMANDS</var>;
+</pre></td></tr></table>
+
+<p>The time interval is specified by the <var>START</var> and <var>END</var> times.
+<var>END</var> is optional and defaults to the maximum time.
+</p>
+<p>The current frame time is considered within the specified interval if
+it is included in the interval [<var>START</var>, <var>END</var>), that is when
+the time is greater or equal to <var>START</var> and is lesser than
+<var>END</var>.
+</p>
+<p><var>COMMANDS</var> consists of a sequence of one or more command
+specifications, separated by &quot;,&quot;, relating to that interval.  The
+syntax of a command specification is given by:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[<var>FLAGS</var>] <var>TARGET</var> <var>COMMAND</var> <var>ARG</var>
+</pre></td></tr></table>
+
+<p><var>FLAGS</var> is optional and specifies the type of events relating to
+the time interval which enable sending the specified command, and must
+be a non-null sequence of identifier flags separated by &quot;+&quot; or &quot;|&quot; and
+enclosed between &quot;[&quot; and &quot;]&quot;.
+</p>
+<p>The following flags are recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>enter</samp>&rsquo;</dt>
+<dd><p>The command is sent when the current frame timestamp enters the
+specified interval. In other words, the command is sent when the
+previous frame timestamp was not in the given interval, and the
+current is.
+</p>
+</dd>
+<dt> &lsquo;<samp>leave</samp>&rsquo;</dt>
+<dd><p>The command is sent when the current frame timestamp leaves the
+specified interval. In other words, the command is sent when the
+previous frame timestamp was in the given interval, and the
+current is not.
+</p></dd>
+</dl>
+
+<p>If <var>FLAGS</var> is not specified, a default value of <code>[enter]</code> is
+assumed.
+</p>
+<p><var>TARGET</var> specifies the target of the command, usually the name of
+the filter class or a specific filter instance name.
+</p>
+<p><var>COMMAND</var> specifies the name of the command for the target filter.
+</p>
+<p><var>ARG</var> is optional and specifies the optional list of argument for
+the given <var>COMMAND</var>.
+</p>
+<p>Between one interval specification and another, whitespaces, or
+sequences of characters starting with <code>#</code> until the end of line,
+are ignored and can be used to annotate comments.
+</p>
+<p>A simplified BNF description of the commands specification syntax
+follows:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>COMMAND_FLAG</var>  ::= &quot;enter&quot; | &quot;leave&quot;
+<var>COMMAND_FLAGS</var> ::= <var>COMMAND_FLAG</var> [(+|&quot;|&quot;)<var>COMMAND_FLAG</var>]
+<var>COMMAND</var>       ::= [&quot;[&quot; <var>COMMAND_FLAGS</var> &quot;]&quot;] <var>TARGET</var> <var>COMMAND</var> [<var>ARG</var>]
+<var>COMMANDS</var>      ::= <var>COMMAND</var> [,<var>COMMANDS</var>]
+<var>INTERVAL</var>      ::= <var>START</var>[-<var>END</var>] <var>COMMANDS</var>
+<var>INTERVALS</var>     ::= <var>INTERVAL</var>[;<var>INTERVALS</var>]
+</pre></td></tr></table>
+
+<a name="Examples-71"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-71">38.7.2 Examples</a></h3>
+
+<ul>
+<li>
+Specify audio tempo change at second 4:
+<table><tr><td>&nbsp;</td><td><pre class="example">asendcmd=c='4.0 atempo tempo 1.5',atempo
+</pre></td></tr></table>
+
+</li><li>
+Specify a list of drawtext and hue commands in a file.
+<table><tr><td>&nbsp;</td><td><pre class="example"># show text in the interval 5-10
+5.0-10.0 [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=hello world',
+         [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=';
+
+# desaturate the image in the interval 15-20
+15.0-20.0 [enter] hue s 0,
+          [enter] drawtext reinit 'fontfile=FreeSerif.ttf:text=nocolor',
+          [leave] hue s 1,
+          [leave] drawtext reinit 'fontfile=FreeSerif.ttf:text=color';
+
+# apply an exponential saturation fade-out effect, starting from time 25
+25 [enter] hue s exp(25-t)
+</pre></td></tr></table>
+
+<p>A filtergraph allowing to read and process the above command list
+stored in a file &lsquo;<tt>test.cmd</tt>&rsquo;, can be specified with:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">sendcmd=f=test.cmd,drawtext=fontfile=FreeSerif.ttf:text='',hue
+</pre></td></tr></table>
+</li></ul>
+
+<p><a name="setpts"></a>
+</p><a name="setpts_002c-asetpts"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-setpts_002c-asetpts">38.8 setpts, asetpts</a></h2>
+
+<p>Change the PTS (presentation timestamp) of the input frames.
+</p>
+<p><code>setpts</code> works on video frames, <code>asetpts</code> on audio frames.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>expr</samp>&rsquo;</dt>
+<dd><p>The expression which is evaluated for each frame to construct its timestamp.
+</p>
+</dd>
+</dl>
+
+<p>The expression is evaluated through the eval API and can contain the following
+constants:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>FRAME_RATE</samp>&rsquo;</dt>
+<dd><p>frame rate, only defined for constant frame-rate video
+</p>
+</dd>
+<dt> &lsquo;<samp>PTS</samp>&rsquo;</dt>
+<dd><p>the presentation timestamp in input
+</p>
+</dd>
+<dt> &lsquo;<samp>N</samp>&rsquo;</dt>
+<dd><p>the count of the input frame for video or the number of consumed samples,
+not including the current frame for audio, starting from 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>NB_CONSUMED_SAMPLES</samp>&rsquo;</dt>
+<dd><p>the number of consumed samples, not including the current frame (only
+audio)
+</p>
+</dd>
+<dt> &lsquo;<samp>NB_SAMPLES, S</samp>&rsquo;</dt>
+<dd><p>the number of samples in the current frame (only audio)
+</p>
+</dd>
+<dt> &lsquo;<samp>SAMPLE_RATE, SR</samp>&rsquo;</dt>
+<dd><p>audio sample rate
+</p>
+</dd>
+<dt> &lsquo;<samp>STARTPTS</samp>&rsquo;</dt>
+<dd><p>the PTS of the first frame
+</p>
+</dd>
+<dt> &lsquo;<samp>STARTT</samp>&rsquo;</dt>
+<dd><p>the time in seconds of the first frame
+</p>
+</dd>
+<dt> &lsquo;<samp>INTERLACED</samp>&rsquo;</dt>
+<dd><p>tell if the current frame is interlaced
+</p>
+</dd>
+<dt> &lsquo;<samp>T</samp>&rsquo;</dt>
+<dd><p>the time in seconds of the current frame
+</p>
+</dd>
+<dt> &lsquo;<samp>POS</samp>&rsquo;</dt>
+<dd><p>original position in the file of the frame, or undefined if undefined
+for the current frame
+</p>
+</dd>
+<dt> &lsquo;<samp>PREV_INPTS</samp>&rsquo;</dt>
+<dd><p>previous input PTS
+</p>
+</dd>
+<dt> &lsquo;<samp>PREV_INT</samp>&rsquo;</dt>
+<dd><p>previous input time in seconds
+</p>
+</dd>
+<dt> &lsquo;<samp>PREV_OUTPTS</samp>&rsquo;</dt>
+<dd><p>previous output PTS
+</p>
+</dd>
+<dt> &lsquo;<samp>PREV_OUTT</samp>&rsquo;</dt>
+<dd><p>previous output time in seconds
+</p>
+</dd>
+<dt> &lsquo;<samp>RTCTIME</samp>&rsquo;</dt>
+<dd><p>wallclock (RTC) time in microseconds. This is deprecated, use time(0)
+instead.
+</p>
+</dd>
+<dt> &lsquo;<samp>RTCSTART</samp>&rsquo;</dt>
+<dd><p>wallclock (RTC) time at the start of the movie in microseconds
+</p>
+</dd>
+<dt> &lsquo;<samp>TB</samp>&rsquo;</dt>
+<dd><p>timebase of the input timestamps
+</p>
+</dd>
+</dl>
+
+<a name="Examples-20"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-20">38.8.1 Examples</a></h3>
+
+<ul>
+<li>
+Start counting PTS from zero
+<table><tr><td>&nbsp;</td><td><pre class="example">setpts=PTS-STARTPTS
+</pre></td></tr></table>
+
+</li><li>
+Apply fast motion effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">setpts=0.5*PTS
+</pre></td></tr></table>
+
+</li><li>
+Apply slow motion effect:
+<table><tr><td>&nbsp;</td><td><pre class="example">setpts=2.0*PTS
+</pre></td></tr></table>
+
+</li><li>
+Set fixed rate of 25 frames per second:
+<table><tr><td>&nbsp;</td><td><pre class="example">setpts=N/(25*TB)
+</pre></td></tr></table>
+
+</li><li>
+Set fixed rate 25 fps with some jitter:
+<table><tr><td>&nbsp;</td><td><pre class="example">setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
+</pre></td></tr></table>
+
+</li><li>
+Apply an offset of 10 seconds to the input PTS:
+<table><tr><td>&nbsp;</td><td><pre class="example">setpts=PTS+10/TB
+</pre></td></tr></table>
+
+</li><li>
+Generate timestamps from a &quot;live source&quot; and rebase onto the current timebase:
+<table><tr><td>&nbsp;</td><td><pre class="example">setpts='(RTCTIME - RTCSTART) / (TB * 1000000)'
+</pre></td></tr></table>
+
+</li><li>
+Generate timestamps by counting samples:
+<table><tr><td>&nbsp;</td><td><pre class="example">asetpts=N/SR/TB
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="settb_002c-asettb"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-settb_002c-asettb">38.9 settb, asettb</a></h2>
+
+<p>Set the timebase to use for the output frames timestamps.
+It is mainly useful for testing timebase configuration.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>expr, tb</samp>&rsquo;</dt>
+<dd><p>The expression which is evaluated into the output timebase.
+</p>
+</dd>
+</dl>
+
+<p>The value for &lsquo;<samp>tb</samp>&rsquo; is an arithmetic expression representing a
+rational. The expression can contain the constants &quot;AVTB&quot; (the default
+timebase), &quot;intb&quot; (the input timebase) and &quot;sr&quot; (the sample rate,
+audio only). Default value is &quot;intb&quot;.
+</p>
+<a name="Examples-79"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-79">38.9.1 Examples</a></h3>
+
+<ul>
+<li>
+Set the timebase to 1/25:
+<table><tr><td>&nbsp;</td><td><pre class="example">settb=expr=1/25
+</pre></td></tr></table>
+
+</li><li>
+Set the timebase to 1/10:
+<table><tr><td>&nbsp;</td><td><pre class="example">settb=expr=0.1
+</pre></td></tr></table>
+
+</li><li>
+Set the timebase to 1001/1000:
+<table><tr><td>&nbsp;</td><td><pre class="example">settb=1+0.001
+</pre></td></tr></table>
+
+</li><li>
+Set the timebase to 2*intb:
+<table><tr><td>&nbsp;</td><td><pre class="example">settb=2*intb
+</pre></td></tr></table>
+
+</li><li>
+Set the default timebase value:
+<table><tr><td>&nbsp;</td><td><pre class="example">settb=AVTB
+</pre></td></tr></table>
+</li></ul>
+
+<a name="showspectrum"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-showspectrum">38.10 showspectrum</a></h2>
+
+<p>Convert input audio to a video output, representing the audio frequency
+spectrum.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
+<dd><p>Specify the video size for the output. For the syntax of this option, check
+the &quot;Video size&quot; section in the ffmpeg-utils manual. Default value is
+<code>640x512</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>slide</samp>&rsquo;</dt>
+<dd><p>Specify if the spectrum should slide along the window. Default value is
+<code>0</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Specify display mode.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>combined</samp>&rsquo;</dt>
+<dd><p>all channels are displayed in the same row
+</p></dd>
+<dt> &lsquo;<samp>separate</samp>&rsquo;</dt>
+<dd><p>all channels are displayed in separate rows
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>combined</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
+<dd><p>Specify display color mode.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>channel</samp>&rsquo;</dt>
+<dd><p>each channel is displayed in a separate color
+</p></dd>
+<dt> &lsquo;<samp>intensity</samp>&rsquo;</dt>
+<dd><p>each channel is is displayed using the same color scheme
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>channel</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>scale</samp>&rsquo;</dt>
+<dd><p>Specify scale used for calculating intensity color values.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>lin</samp>&rsquo;</dt>
+<dd><p>linear
+</p></dd>
+<dt> &lsquo;<samp>sqrt</samp>&rsquo;</dt>
+<dd><p>square root, default
+</p></dd>
+<dt> &lsquo;<samp>cbrt</samp>&rsquo;</dt>
+<dd><p>cubic root
+</p></dd>
+<dt> &lsquo;<samp>log</samp>&rsquo;</dt>
+<dd><p>logarithmic
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>sqrt</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>saturation</samp>&rsquo;</dt>
+<dd><p>Set saturation modifier for displayed colors. Negative values provide
+alternative color scheme. <code>0</code> is no saturation at all.
+Saturation must be in [-10.0, 10.0] range.
+Default value is <code>1</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>win_func</samp>&rsquo;</dt>
+<dd><p>Set window function.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>No samples pre-processing (do not expect this to be faster)
+</p></dd>
+<dt> &lsquo;<samp>hann</samp>&rsquo;</dt>
+<dd><p>Hann window
+</p></dd>
+<dt> &lsquo;<samp>hamming</samp>&rsquo;</dt>
+<dd><p>Hamming window
+</p></dd>
+<dt> &lsquo;<samp>blackman</samp>&rsquo;</dt>
+<dd><p>Blackman window
+</p></dd>
+</dl>
+
+<p>Default value is <code>hann</code>.
+</p></dd>
+</dl>
+
+<p>The usage is very similar to the showwaves filter; see the examples in that
+section.
+</p>
+<a name="Examples-67"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-67">38.10.1 Examples</a></h3>
+
+<ul>
+<li>
+Large window with logarithmic color scaling:
+<table><tr><td>&nbsp;</td><td><pre class="example">showspectrum=s=1280x480:scale=log
+</pre></td></tr></table>
+
+</li><li>
+Complete example for a colored and sliding spectrum per channel using <code>ffplay</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi 'amovie=input.mp3, asplit [a][out1];
+             [a] showspectrum=mode=separate:color=intensity:slide=1:scale=cbrt [out0]'
+</pre></td></tr></table>
+</li></ul>
+
+<a name="showwaves"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-showwaves">38.11 showwaves</a></h2>
+
+<p>Convert input audio to a video output, representing the samples waves.
+</p>
+<p>The filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
+<dd><p>Specify the video size for the output. For the syntax of this option, check
+the &quot;Video size&quot; section in the ffmpeg-utils manual. Default value
+is &quot;600x240&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>mode</samp>&rsquo;</dt>
+<dd><p>Set display mode.
+</p>
+<p>Available values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>point</samp>&rsquo;</dt>
+<dd><p>Draw a point for each sample.
+</p>
+</dd>
+<dt> &lsquo;<samp>line</samp>&rsquo;</dt>
+<dd><p>Draw a vertical line for each sample.
+</p></dd>
+</dl>
+
+<p>Default value is <code>point</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>Set the number of samples which are printed on the same column. A
+larger value will decrease the frame rate. Must be a positive
+integer. This option can be set only if the value for <var>rate</var>
+is not explicitly specified.
+</p>
+</dd>
+<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
+<dd><p>Set the (approximate) output frame rate. This is done by setting the
+option <var>n</var>. Default value is &quot;25&quot;.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-21"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-21">38.11.1 Examples</a></h3>
+
+<ul>
+<li>
+Output the input file audio and the corresponding video representation
+at the same time:
+<table><tr><td>&nbsp;</td><td><pre class="example">amovie=a.mp3,asplit[out0],showwaves[out1]
+</pre></td></tr></table>
+
+</li><li>
+Create a synthetic signal and show it with showwaves, forcing a
+frame rate of 30 frames per second:
+<table><tr><td>&nbsp;</td><td><pre class="example">aevalsrc=sin(1*2*PI*t)*sin(880*2*PI*t):cos(2*PI*200*t),asplit[out0],showwaves=r=30[out1]
+</pre></td></tr></table>
+</li></ul>
+
+<a name="split_002c-asplit"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-split_002c-asplit">38.12 split, asplit</a></h2>
+
+<p>Split input into several identical outputs.
+</p>
+<p><code>asplit</code> works with audio input, <code>split</code> with video.
+</p>
+<p>The filter accepts a single parameter which specifies the number of outputs. If
+unspecified, it defaults to 2.
+</p>
+<a name="Examples-1"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-1">38.12.1 Examples</a></h3>
+
+<ul>
+<li>
+Create two separate outputs from the same input:
+<table><tr><td>&nbsp;</td><td><pre class="example">[in] split [out0][out1]
+</pre></td></tr></table>
+
+</li><li>
+To create 3 or more outputs, you need to specify the number of
+outputs, like in:
+<table><tr><td>&nbsp;</td><td><pre class="example">[in] asplit=3 [out0][out1][out2]
+</pre></td></tr></table>
+
+</li><li>
+Create two separate outputs from the same input, one cropped and
+one padded:
+<table><tr><td>&nbsp;</td><td><pre class="example">[in] split [splitout1][splitout2];
+[splitout1] crop=100:100:0:0    [cropout];
+[splitout2] pad=200:200:100:100 [padout];
+</pre></td></tr></table>
+
+</li><li>
+Create 5 copies of the input audio with <code>ffmpeg</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i INPUT -filter_complex asplit=5 OUTPUT
+</pre></td></tr></table>
+</li></ul>
+
+<a name="zmq_002c-azmq"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-zmq_002c-azmq">38.13 zmq, azmq</a></h2>
+
+<p>Receive commands sent through a libzmq client, and forward them to
+filters in the filtergraph.
+</p>
+<p><code>zmq</code> and <code>azmq</code> work as a pass-through filters. <code>zmq</code>
+must be inserted between two video filters, <code>azmq</code> between two
+audio filters.
+</p>
+<p>To enable these filters you need to install the libzmq library and
+headers and configure FFmpeg with <code>--enable-libzmq</code>.
+</p>
+<p>For more information about libzmq see:
+<a href="http://www.zeromq.org/">http://www.zeromq.org/</a>
+</p>
+<p>The <code>zmq</code> and <code>azmq</code> filters work as a libzmq server, which
+receives messages sent through a network interface defined by the
+&lsquo;<samp>bind_address</samp>&rsquo; option.
+</p>
+<p>The received message must be in the form:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>TARGET</var> <var>COMMAND</var> [<var>ARG</var>]
+</pre></td></tr></table>
+
+<p><var>TARGET</var> specifies the target of the command, usually the name of
+the filter class or a specific filter instance name.
+</p>
+<p><var>COMMAND</var> specifies the name of the command for the target filter.
+</p>
+<p><var>ARG</var> is optional and specifies the optional argument list for the
+given <var>COMMAND</var>.
+</p>
+<p>Upon reception, the message is processed and the corresponding command
+is injected into the filtergraph. Depending on the result, the filter
+will send a reply to the client, adopting the format:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>ERROR_CODE</var> <var>ERROR_REASON</var>
+<var>MESSAGE</var>
+</pre></td></tr></table>
+
+<p><var>MESSAGE</var> is optional.
+</p>
+<a name="Examples-41"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-41">38.13.1 Examples</a></h3>
+
+<p>Look at &lsquo;<tt>tools/zmqsend</tt>&rsquo; for an example of a zmq client which can
+be used to send commands processed by these filters.
+</p>
+<p>Consider the following filtergraph generated by <code>ffplay</code>
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay -dumpgraph 1 -f lavfi &quot;
+color=s=100x100:c=red  [l];
+color=s=100x100:c=blue [r];
+nullsrc=s=200x100, zmq [bg];
+[bg][l]   overlay      [bg+l];
+[bg+l][r] overlay=x=100 &quot;
+</pre></td></tr></table>
+
+<p>To change the color of the left side of the video, the following
+command can be used:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">echo Parsed_color_0 c yellow | tools/zmqsend
+</pre></td></tr></table>
+
+<p>To change the right side:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">echo Parsed_color_1 c pink | tools/zmqsend
+</pre></td></tr></table>
+
+
+<a name="Multimedia-Sources"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Multimedia-Sources">39. Multimedia Sources</a></h1>
+
+<p>Below is a description of the currently available multimedia sources.
+</p>
+<a name="amovie"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-amovie">39.1 amovie</a></h2>
+
+<p>This is the same as <a href="#movie">movie</a> source, except it selects an audio
+stream by default.
+</p>
+<p><a name="movie"></a>
+</p><a name="movie-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-movie-1">39.2 movie</a></h2>
+
+<p>Read audio and/or video stream(s) from a movie container.
+</p>
+<p>This filter accepts the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>filename</samp>&rsquo;</dt>
+<dd><p>The name of the resource to read (not necessarily a file but also a device or a
+stream accessed through some protocol).
+</p>
+</dd>
+<dt> &lsquo;<samp>format_name, f</samp>&rsquo;</dt>
+<dd><p>Specifies the format assumed for the movie to read, and can be either
+the name of a container or an input device. If not specified the
+format is guessed from <var>movie_name</var> or by probing.
+</p>
+</dd>
+<dt> &lsquo;<samp>seek_point, sp</samp>&rsquo;</dt>
+<dd><p>Specifies the seek point in seconds, the frames will be output
+starting from this seek point, the parameter is evaluated with
+<code>av_strtod</code> so the numerical value may be suffixed by an IS
+postfix. Default value is &quot;0&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>streams, s</samp>&rsquo;</dt>
+<dd><p>Specifies the streams to read. Several streams can be specified,
+separated by &quot;+&quot;. The source will then have as many outputs, in the
+same order. The syntax is explained in the &ldquo;Stream specifiers&rdquo;
+section in the ffmpeg manual. Two special names, &quot;dv&quot; and &quot;da&quot; specify
+respectively the default (best suited) video and audio stream. Default
+is &quot;dv&quot;, or &quot;da&quot; if the filter is called as &quot;amovie&quot;.
+</p>
+</dd>
+<dt> &lsquo;<samp>stream_index, si</samp>&rsquo;</dt>
+<dd><p>Specifies the index of the video stream to read. If the value is -1,
+the best suited video stream will be automatically selected. Default
+value is &quot;-1&quot;. Deprecated. If the filter is called &quot;amovie&quot;, it will select
+audio instead of video.
+</p>
+</dd>
+<dt> &lsquo;<samp>loop</samp>&rsquo;</dt>
+<dd><p>Specifies how many times to read the stream in sequence.
+If the value is less than 1, the stream will be read again and again.
+Default value is &quot;1&quot;.
+</p>
+<p>Note that when the movie is looped the source timestamps are not
+changed, so it will generate non monotonically increasing timestamps.
+</p></dd>
+</dl>
+
+<p>This filter allows to overlay a second video on top of main input of
+a filtergraph as shown in this graph:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">input -----------&gt; deltapts0 --&gt; overlay --&gt; output
+                                    ^
+                                    |
+movie --&gt; scale--&gt; deltapts1 -------+
+</pre></td></tr></table>
+
+<a name="Examples-77"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-77">39.2.1 Examples</a></h3>
+
+<ul>
+<li>
+Skip 3.2 seconds from the start of the avi file in.avi, and overlay it
+on top of the input labelled as &quot;in&quot;:
+<table><tr><td>&nbsp;</td><td><pre class="example">movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [over];
+[in] setpts=PTS-STARTPTS [main];
+[main][over] overlay=16:16 [out]
+</pre></td></tr></table>
+
+</li><li>
+Read from a video4linux2 device, and overlay it on top of the input
+labelled as &quot;in&quot;:
+<table><tr><td>&nbsp;</td><td><pre class="example">movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [over];
+[in] setpts=PTS-STARTPTS [main];
+[main][over] overlay=16:16 [out]
+</pre></td></tr></table>
+
+</li><li>
+Read the first video stream and the audio stream with id 0x81 from
+dvd.vob; the video is connected to the pad named &quot;video&quot; and the audio is
+connected to the pad named &quot;audio&quot;:
+<table><tr><td>&nbsp;</td><td><pre class="example">movie=dvd.vob:s=v:0+#0x81 [video] [audio]
+</pre></td></tr></table>
+</li></ul>
+
+
+<a name="See-Also"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-See-Also">40. See Also</a></h1>
+
+<p><a href="ffprobe.html">ffprobe</a>,
+<a href="ffmpeg.html">ffmpeg</a>, <a href="ffplay.html">ffplay</a>, <a href="ffserver.html">ffserver</a>,
+<a href="ffmpeg-utils.html">ffmpeg-utils</a>,
+<a href="ffmpeg-scaler.html">ffmpeg-scaler</a>,
+<a href="ffmpeg-resampler.html">ffmpeg-resampler</a>,
+<a href="ffmpeg-codecs.html">ffmpeg-codecs</a>,
+<a href="ffmpeg-bitstream-filters.html">ffmpeg-bitstream-filters</a>,
+<a href="ffmpeg-formats.html">ffmpeg-formats</a>,
+<a href="ffmpeg-devices.html">ffmpeg-devices</a>,
+<a href="ffmpeg-protocols.html">ffmpeg-protocols</a>,
+<a href="ffmpeg-filters.html">ffmpeg-filters</a>
+</p>
+
+<a name="Authors"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Authors">41. Authors</a></h1>
+
+<p>The FFmpeg developers.
+</p>
+<p>For details about the authorship, see the Git history of the project
+(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
+<code>git log</code> in the FFmpeg source directory, or browsing the
+online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
+</p>
+<p>Maintainers for the specific components are listed in the file
+&lsquo;<tt>MAINTAINERS</tt>&rsquo; in the source code tree.
+</p>
+
+<footer class="footer pagination-right">
+<span class="label label-info">This document was generated by <em>Kyle Schwarz</em> on <em>December 14, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
index 967bc911eeb8ed9eec0c9b2184f787ac6ef69b9f..68a93b930b6a61d275f39920ac41e16c96af326f 100644 (file)
@@ -1,6 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<!DOCTYPE html>
 <html>
-<!-- Created on September 2, 2011 by texi2html 1.82
+<!-- Created on December 14, 2013 by texi2html 1.82 -->
+<!--
 texi2html was written by: 
             Lionel Cons <Lionel.Cons@cern.ch> (original author)
             Karl Berry  <karl@freefriends.org>
@@ -8,38 +9,22 @@ texi2html was written by:
             and many others.
 Maintained by: Many creative people.
 Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
 -->
 <head>
-<title>ffprobe Documentation</title>
+<title>FFmpeg documentation : ffprobe </title>
 
-<meta name="description" content="ffprobe Documentation">
-<meta name="keywords" content="ffprobe Documentation">
-<meta name="resource-type" content="document">
-<meta name="distribution" content="global">
+<meta name="description" content="ffprobe Documentation: ">
+<meta name="keywords" content="FFmpeg documentation : ffprobe ">
 <meta name="Generator" content="texi2html 1.82">
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<style type="text/css">
-<!--
-a.summary-letter {text-decoration: none}
-blockquote.smallquotation {font-size: smaller}
-pre.display {font-family: serif}
-pre.format {font-family: serif}
-pre.menu-comment {font-family: serif}
-pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: serif; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: serif; font-size: smaller}
-pre.smalllisp {font-size: smaller}
-span.roman {font-family:serif; font-weight:normal;}
-span.sansserif {font-family:sans-serif; font-weight:normal;}
-ul.toc {list-style: none}
--->
-</style>
-
+<link rel="stylesheet" type="text/css" href="default.css" />
 
+<link rel="icon" href="favicon.png" type="image/png" />
 </head>
-
-<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<body>
+<div id="container">
+<div id="body">
 
 <a name="SEC_Top"></a>
 <h1 class="settitle">ffprobe Documentation</h1>
@@ -51,91 +36,33 @@ ul.toc {list-style: none}
 <ul class="toc">
   <li><a name="toc-Synopsis" href="#Synopsis">1. Synopsis</a></li>
   <li><a name="toc-Description" href="#Description">2. Description</a></li>
-  <li><a name="toc-Options-3" href="#Options-3">3. Options</a>
-  <ul class="toc">
-    <li><a name="toc-Generic-options" href="#Generic-options">3.1 Generic options</a></li>
-    <li><a name="toc-AVOptions" href="#AVOptions">3.2 AVOptions</a></li>
-    <li><a name="toc-Main-options" href="#Main-options">3.3 Main options</a></li>
-  </ul></li>
-  <li><a name="toc-Decoders" href="#Decoders">4. Decoders</a></li>
-  <li><a name="toc-Video-Decoders" href="#Video-Decoders">5. Video Decoders</a>
-  <ul class="toc">
-    <li><a name="toc-rawvideo" href="#rawvideo">5.1 rawvideo</a>
-    <ul class="toc">
-      <li><a name="toc-Options-2" href="#Options-2">5.1.1 Options</a></li>
-    </ul>
-</li>
-  </ul></li>
-  <li><a name="toc-Demuxers" href="#Demuxers">6. Demuxers</a>
+  <li><a name="toc-Options" href="#Options">3. Options</a>
   <ul class="toc">
-    <li><a name="toc-image2" href="#image2">6.1 image2</a></li>
-    <li><a name="toc-applehttp" href="#applehttp">6.2 applehttp</a></li>
+    <li><a name="toc-Stream-specifiers-1" href="#Stream-specifiers-1">3.1 Stream specifiers</a></li>
+    <li><a name="toc-Generic-options" href="#Generic-options">3.2 Generic options</a></li>
+    <li><a name="toc-AVOptions" href="#AVOptions">3.3 AVOptions</a></li>
+    <li><a name="toc-Main-options" href="#Main-options">3.4 Main options</a></li>
   </ul></li>
-  <li><a name="toc-Protocols" href="#Protocols">7. Protocols</a>
+  <li><a name="toc-Writers" href="#Writers">4. Writers</a>
   <ul class="toc">
-    <li><a name="toc-applehttp-1" href="#applehttp-1">7.1 applehttp</a></li>
-    <li><a name="toc-concat" href="#concat">7.2 concat</a></li>
-    <li><a name="toc-file" href="#file">7.3 file</a></li>
-    <li><a name="toc-gopher" href="#gopher">7.4 gopher</a></li>
-    <li><a name="toc-http" href="#http">7.5 http</a></li>
-    <li><a name="toc-mmst" href="#mmst">7.6 mmst</a></li>
-    <li><a name="toc-mmsh" href="#mmsh">7.7 mmsh</a></li>
-    <li><a name="toc-md5" href="#md5">7.8 md5</a></li>
-    <li><a name="toc-pipe" href="#pipe">7.9 pipe</a></li>
-    <li><a name="toc-rtmp" href="#rtmp">7.10 rtmp</a></li>
-    <li><a name="toc-rtmp_002c-rtmpe_002c-rtmps_002c-rtmpt_002c-rtmpte" href="#rtmp_002c-rtmpe_002c-rtmps_002c-rtmpt_002c-rtmpte">7.11 rtmp, rtmpe, rtmps, rtmpt, rtmpte</a></li>
-    <li><a name="toc-rtp" href="#rtp">7.12 rtp</a></li>
-    <li><a name="toc-rtsp" href="#rtsp">7.13 rtsp</a></li>
-    <li><a name="toc-sap" href="#sap">7.14 sap</a>
-    <ul class="toc">
-      <li><a name="toc-Muxer" href="#Muxer">7.14.1 Muxer</a></li>
-      <li><a name="toc-Demuxer" href="#Demuxer">7.14.2 Demuxer</a></li>
-    </ul></li>
-    <li><a name="toc-tcp" href="#tcp">7.15 tcp</a></li>
-    <li><a name="toc-udp" href="#udp">7.16 udp</a></li>
+    <li><a name="toc-default" href="#default">4.1 default</a></li>
+    <li><a name="toc-compact_002c-csv" href="#compact_002c-csv">4.2 compact, csv</a></li>
+    <li><a name="toc-flat" href="#flat">4.3 flat</a></li>
+    <li><a name="toc-ini" href="#ini">4.4 ini</a></li>
+    <li><a name="toc-json" href="#json">4.5 json</a></li>
+    <li><a name="toc-xml" href="#xml">4.6 xml</a></li>
   </ul></li>
-  <li><a name="toc-Input-Devices" href="#Input-Devices">8. Input Devices</a>
-  <ul class="toc">
-    <li><a name="toc-alsa" href="#alsa">8.1 alsa</a></li>
-    <li><a name="toc-bktr" href="#bktr">8.2 bktr</a></li>
-    <li><a name="toc-dv1394" href="#dv1394">8.3 dv1394</a></li>
-    <li><a name="toc-fbdev" href="#fbdev">8.4 fbdev</a></li>
-    <li><a name="toc-jack" href="#jack">8.5 jack</a></li>
-    <li><a name="toc-lavfi" href="#lavfi">8.6 lavfi</a>
-    <ul class="toc">
-      <li><a name="toc-Options-1" href="#Options-1">8.6.1 Options</a></li>
-      <li><a name="toc-Examples" href="#Examples">8.6.2 Examples</a></li>
-    </ul></li>
-    <li><a name="toc-libdc1394" href="#libdc1394">8.7 libdc1394</a></li>
-    <li><a name="toc-openal" href="#openal">8.8 openal</a>
-    <ul class="toc">
-      <li><a name="toc-Options" href="#Options">8.8.1 Options</a></li>
-      <li><a name="toc-Examples-1" href="#Examples-1">8.8.2 Examples</a></li>
-    </ul></li>
-    <li><a name="toc-oss" href="#oss">8.9 oss</a></li>
-    <li><a name="toc-sndio" href="#sndio">8.10 sndio</a></li>
-    <li><a name="toc-video4linux-and-video4linux2" href="#video4linux-and-video4linux2">8.11 video4linux and video4linux2</a></li>
-    <li><a name="toc-vfwcap" href="#vfwcap">8.12 vfwcap</a></li>
-    <li><a name="toc-x11grab" href="#x11grab">8.13 x11grab</a>
-    <ul class="toc">
-      <li><a name="toc-follow_005fmouse-AVOption" href="#follow_005fmouse-AVOption">8.13.1 <var>follow_mouse</var> AVOption</a></li>
-      <li><a name="toc-show_005fregion-AVOption" href="#show_005fregion-AVOption">8.13.2 <var>show_region</var> AVOption</a></li>
-    </ul>
-</li>
-  </ul>
-</li>
+  <li><a name="toc-Timecode" href="#Timecode">5. Timecode</a></li>
+  <li><a name="toc-See-Also" href="#See-Also">6. See Also</a></li>
+  <li><a name="toc-Authors" href="#Authors">7. Authors</a></li>
 </ul>
 </div>
 
-<hr size="1">
 <a name="Synopsis"></a>
 <h1 class="chapter"><a href="ffprobe.html#toc-Synopsis">1. Synopsis</a></h1>
 
-<p>The generic syntax is:
+<p>ffprobe [<var>options</var>] [&lsquo;<tt>input_file</tt>&rsquo;]
 </p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffprobe [options] [&lsquo;<tt>input_file</tt>&rsquo;]
-</pre></td></tr></table>
-
 <a name="Description"></a>
 <h1 class="chapter"><a href="ffprobe.html#toc-Description">2. Description</a></h1>
 
@@ -159,37 +86,78 @@ for specifying which information to display, and for setting how
 ffprobe will show it.
 </p>
 <p>ffprobe output is designed to be easily parsable by a textual filter,
-and consists of one or more sections of the form:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">[SECTION]
-key1=val1
-...
-keyN=valN
-[/SECTION]
-</pre></td></tr></table>
-
+and consists of one or more sections of a form defined by the selected
+writer, which is specified by the &lsquo;<samp>print_format</samp>&rsquo; option.
+</p>
+<p>Sections may contain other nested sections, and are identified by a
+name (which may be shared by other sections), and an unique
+name. See the output of &lsquo;<samp>sections</samp>&rsquo;.
+</p>
 <p>Metadata tags stored in the container or in the streams are recognized
-and printed in the corresponding &quot;FORMAT&quot; or &quot;STREAM&quot; section, and
-are prefixed by the string &quot;TAG:&quot;.
+and printed in the corresponding &quot;FORMAT&quot;, &quot;STREAM&quot; or &quot;PROGRAM_STREAM&quot;
+section.
 </p>
 
-<a name="Options-3"></a>
-<h1 class="chapter"><a href="ffprobe.html#toc-Options-3">3. Options</a></h1>
+<a name="Options"></a>
+<h1 class="chapter"><a href="ffprobe.html#toc-Options">3. Options</a></h1>
 
-<p>All the numerical options, if not specified otherwise, accept in input
-a string representing a number, which may contain one of the
-International System number postfixes, for example &rsquo;K&rsquo;, &rsquo;M&rsquo;, &rsquo;G&rsquo;.
-If &rsquo;i&rsquo; is appended after the postfix, powers of 2 are used instead of
-powers of 10. The &rsquo;B&rsquo; postfix multiplies the value for 8, and can be
-appended after another postfix or used alone. This allows using for
-example &rsquo;KB&rsquo;, &rsquo;MiB&rsquo;, &rsquo;G&rsquo; and &rsquo;B&rsquo; as postfix.
+<p>All the numerical options, if not specified otherwise, accept a string
+representing a number as input, which may be followed by one of the SI
+unit prefixes, for example: &rsquo;K&rsquo;, &rsquo;M&rsquo;, or &rsquo;G&rsquo;.
+</p>
+<p>If &rsquo;i&rsquo; is appended to the SI unit prefix, the complete prefix will be
+interpreted as a unit prefix for binary multiplies, which are based on
+powers of 1024 instead of powers of 1000. Appending &rsquo;B&rsquo; to the SI unit
+prefix multiplies the value by 8. This allows using, for example:
+&rsquo;KB&rsquo;, &rsquo;MiB&rsquo;, &rsquo;G&rsquo; and &rsquo;B&rsquo; as number suffixes.
 </p>
 <p>Options which do not take arguments are boolean options, and set the
 corresponding value to true. They can be set to false by prefixing
-with &quot;no&quot; the option name, for example using &quot;-nofoo&quot; in the
-commandline will set to false the boolean option with name &quot;foo&quot;.
+the option name with &quot;no&quot;. For example using &quot;-nofoo&quot;
+will set the boolean option with name &quot;foo&quot; to false.
+</p>
+<p><a name="Stream-specifiers"></a>
+</p><a name="Stream-specifiers-1"></a>
+<h2 class="section"><a href="ffprobe.html#toc-Stream-specifiers-1">3.1 Stream specifiers</a></h2>
+<p>Some options are applied per-stream, e.g. bitrate or codec. Stream specifiers
+are used to precisely specify which stream(s) a given option belongs to.
+</p>
+<p>A stream specifier is a string generally appended to the option name and
+separated from it by a colon. E.g. <code>-codec:a:1 ac3</code> contains the
+<code>a:1</code> stream specifier, which matches the second audio stream. Therefore, it
+would select the ac3 codec for the second audio stream.
+</p>
+<p>A stream specifier can match several streams, so that the option is applied to all
+of them. E.g. the stream specifier in <code>-b:a 128k</code> matches all audio
+streams.
 </p>
+<p>An empty stream specifier matches all streams. For example, <code>-codec copy</code>
+or <code>-codec: copy</code> would copy all the streams without reencoding.
+</p>
+<p>Possible forms of stream specifiers are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp><var>stream_index</var></samp>&rsquo;</dt>
+<dd><p>Matches the stream with this index. E.g. <code>-threads:1 4</code> would set the
+thread count for the second stream to 4.
+</p></dd>
+<dt> &lsquo;<samp><var>stream_type</var>[:<var>stream_index</var>]</samp>&rsquo;</dt>
+<dd><p><var>stream_type</var> is one of following: &rsquo;v&rsquo; for video, &rsquo;a&rsquo; for audio, &rsquo;s&rsquo; for subtitle,
+&rsquo;d&rsquo; for data, and &rsquo;t&rsquo; for attachments. If <var>stream_index</var> is given, then it matches
+stream number <var>stream_index</var> of this type. Otherwise, it matches all
+streams of this type.
+</p></dd>
+<dt> &lsquo;<samp>p:<var>program_id</var>[:<var>stream_index</var>]</samp>&rsquo;</dt>
+<dd><p>If <var>stream_index</var> is given, then it matches the stream with number <var>stream_index</var>
+in the program with the id <var>program_id</var>. Otherwise, it matches all streams in the
+program.
+</p></dd>
+<dt> &lsquo;<samp>#<var>stream_id</var></samp>&rsquo;</dt>
+<dd><p>Matches the stream by a format-specific ID.
+</p></dd>
+</dl>
+
 <a name="Generic-options"></a>
-<h2 class="section"><a href="ffprobe.html#toc-Generic-options">3.1 Generic options</a></h2>
+<h2 class="section"><a href="ffprobe.html#toc-Generic-options">3.2 Generic options</a></h2>
 
 <p>These options are shared amongst the ff* tools.
 </p>
@@ -198,9 +166,48 @@ commandline will set to false the boolean option with name &quot;foo&quot;.
 <dd><p>Show license.
 </p>
 </dd>
-<dt> &lsquo;<samp>-h, -?, -help, --help</samp>&rsquo;</dt>
-<dd><p>Show help.
+<dt> &lsquo;<samp>-h, -?, -help, --help [<var>arg</var>]</samp>&rsquo;</dt>
+<dd><p>Show help. An optional parameter may be specified to print help about a specific
+item. If no argument is specified, only basic (non advanced) tool
+options are shown.
+</p>
+<p>Possible values of <var>arg</var> are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>long</samp>&rsquo;</dt>
+<dd><p>Print advanced tool options in addition to the basic tool options.
+</p>
+</dd>
+<dt> &lsquo;<samp>full</samp>&rsquo;</dt>
+<dd><p>Print complete list of options, including shared and private options
+for encoders, decoders, demuxers, muxers, filters, etc.
+</p>
+</dd>
+<dt> &lsquo;<samp>decoder=<var>decoder_name</var></samp>&rsquo;</dt>
+<dd><p>Print detailed information about the decoder named <var>decoder_name</var>. Use the
+&lsquo;<samp>-decoders</samp>&rsquo; option to get a list of all decoders.
 </p>
+</dd>
+<dt> &lsquo;<samp>encoder=<var>encoder_name</var></samp>&rsquo;</dt>
+<dd><p>Print detailed information about the encoder named <var>encoder_name</var>. Use the
+&lsquo;<samp>-encoders</samp>&rsquo; option to get a list of all encoders.
+</p>
+</dd>
+<dt> &lsquo;<samp>demuxer=<var>demuxer_name</var></samp>&rsquo;</dt>
+<dd><p>Print detailed information about the demuxer named <var>demuxer_name</var>. Use the
+&lsquo;<samp>-formats</samp>&rsquo; option to get a list of all demuxers and muxers.
+</p>
+</dd>
+<dt> &lsquo;<samp>muxer=<var>muxer_name</var></samp>&rsquo;</dt>
+<dd><p>Print detailed information about the muxer named <var>muxer_name</var>. Use the
+&lsquo;<samp>-formats</samp>&rsquo; option to get a list of all muxers and demuxers.
+</p>
+</dd>
+<dt> &lsquo;<samp>filter=<var>filter_name</var></samp>&rsquo;</dt>
+<dd><p>Print detailed information about the filter name <var>filter_name</var>. Use the
+&lsquo;<samp>-filters</samp>&rsquo; option to get a list of all filters.
+</p></dd>
+</dl>
+
 </dd>
 <dt> &lsquo;<samp>-version</samp>&rsquo;</dt>
 <dd><p>Show version.
@@ -209,42 +216,21 @@ commandline will set to false the boolean option with name &quot;foo&quot;.
 <dt> &lsquo;<samp>-formats</samp>&rsquo;</dt>
 <dd><p>Show available formats.
 </p>
-<p>The fields preceding the format names have the following meanings:
-</p><dl compact="compact">
-<dt> &lsquo;<samp>D</samp>&rsquo;</dt>
-<dd><p>Decoding available
-</p></dd>
-<dt> &lsquo;<samp>E</samp>&rsquo;</dt>
-<dd><p>Encoding available
-</p></dd>
-</dl>
-
 </dd>
 <dt> &lsquo;<samp>-codecs</samp>&rsquo;</dt>
-<dd><p>Show available codecs.
+<dd><p>Show all codecs known to libavcodec.
+</p>
+<p>Note that the term &rsquo;codec&rsquo; is used throughout this documentation as a shortcut
+for what is more correctly called a media bitstream format.
+</p>
+</dd>
+<dt> &lsquo;<samp>-decoders</samp>&rsquo;</dt>
+<dd><p>Show available decoders.
+</p>
+</dd>
+<dt> &lsquo;<samp>-encoders</samp>&rsquo;</dt>
+<dd><p>Show all available encoders.
 </p>
-<p>The fields preceding the codec names have the following meanings:
-</p><dl compact="compact">
-<dt> &lsquo;<samp>D</samp>&rsquo;</dt>
-<dd><p>Decoding available
-</p></dd>
-<dt> &lsquo;<samp>E</samp>&rsquo;</dt>
-<dd><p>Encoding available
-</p></dd>
-<dt> &lsquo;<samp>V/A/S</samp>&rsquo;</dt>
-<dd><p>Video/audio/subtitle codec
-</p></dd>
-<dt> &lsquo;<samp>S</samp>&rsquo;</dt>
-<dd><p>Codec supports slices
-</p></dd>
-<dt> &lsquo;<samp>D</samp>&rsquo;</dt>
-<dd><p>Codec supports direct rendering
-</p></dd>
-<dt> &lsquo;<samp>T</samp>&rsquo;</dt>
-<dd><p>Codec can handle input truncated at random locations instead of only at frame boundaries
-</p></dd>
-</dl>
-
 </dd>
 <dt> &lsquo;<samp>-bsfs</samp>&rsquo;</dt>
 <dd><p>Show available bitstream filters.
@@ -262,41 +248,177 @@ commandline will set to false the boolean option with name &quot;foo&quot;.
 <dd><p>Show available pixel formats.
 </p>
 </dd>
-<dt> &lsquo;<samp>-loglevel <var>loglevel</var></samp>&rsquo;</dt>
+<dt> &lsquo;<samp>-sample_fmts</samp>&rsquo;</dt>
+<dd><p>Show available sample formats.
+</p>
+</dd>
+<dt> &lsquo;<samp>-layouts</samp>&rsquo;</dt>
+<dd><p>Show channel names and standard channel layouts.
+</p>
+</dd>
+<dt> &lsquo;<samp>-colors</samp>&rsquo;</dt>
+<dd><p>Show recognized color names.
+</p>
+</dd>
+<dt> &lsquo;<samp>-loglevel [repeat+]<var>loglevel</var> | -v [repeat+]<var>loglevel</var></samp>&rsquo;</dt>
 <dd><p>Set the logging level used by the library.
+Adding &quot;repeat+&quot; indicates that repeated log output should not be compressed
+to the first line and the &quot;Last message repeated n times&quot; line will be
+omitted. &quot;repeat&quot; can also be used alone.
+If &quot;repeat&quot; is used alone, and with no prior loglevel set, the default
+loglevel will be used. If multiple loglevel parameters are given, using
+&rsquo;repeat&rsquo; will not change the loglevel.
 <var>loglevel</var> is a number or a string containing one of the following values:
 </p><dl compact="compact">
 <dt> &lsquo;<samp>quiet</samp>&rsquo;</dt>
+<dd><p>Show nothing at all; be silent.
+</p></dd>
 <dt> &lsquo;<samp>panic</samp>&rsquo;</dt>
+<dd><p>Only show fatal errors which could lead the process to crash, such as
+and assert failure. This is not currently used for anything.
+</p></dd>
 <dt> &lsquo;<samp>fatal</samp>&rsquo;</dt>
+<dd><p>Only show fatal errors. These are errors after which the process absolutely
+cannot continue after.
+</p></dd>
 <dt> &lsquo;<samp>error</samp>&rsquo;</dt>
+<dd><p>Show all errors, including ones which can be recovered from.
+</p></dd>
 <dt> &lsquo;<samp>warning</samp>&rsquo;</dt>
+<dd><p>Show all warnings and errors. Any message related to possibly
+incorrect or unexpected events will be shown.
+</p></dd>
 <dt> &lsquo;<samp>info</samp>&rsquo;</dt>
+<dd><p>Show informative messages during processing. This is in addition to
+warnings and errors. This is the default value.
+</p></dd>
 <dt> &lsquo;<samp>verbose</samp>&rsquo;</dt>
+<dd><p>Same as <code>info</code>, except more verbose.
+</p></dd>
 <dt> &lsquo;<samp>debug</samp>&rsquo;</dt>
+<dd><p>Show everything, including debugging information.
+</p></dd>
 </dl>
 
 <p>By default the program logs to stderr, if coloring is supported by the
 terminal, colors are used to mark errors and warnings. Log coloring
 can be disabled setting the environment variable
-<code>FFMPEG_FORCE_NOCOLOR</code> or <code>NO_COLOR</code>, or can be forced setting
-the environment variable <code>FFMPEG_FORCE_COLOR</code>.
+<code>AV_LOG_FORCE_NOCOLOR</code> or <code>NO_COLOR</code>, or can be forced setting
+the environment variable <code>AV_LOG_FORCE_COLOR</code>.
 The use of the environment variable <code>NO_COLOR</code> is deprecated and
 will be dropped in a following FFmpeg version.
 </p>
 </dd>
+<dt> &lsquo;<samp>-report</samp>&rsquo;</dt>
+<dd><p>Dump full command line and console output to a file named
+<code><var>program</var>-<var>YYYYMMDD</var>-<var>HHMMSS</var>.log</code> in the current
+directory.
+This file can be useful for bug reports.
+It also implies <code>-loglevel verbose</code>.
+</p>
+<p>Setting the environment variable <code>FFREPORT</code> to any value has the
+same effect. If the value is a &rsquo;:&rsquo;-separated key=value sequence, these
+options will affect the report; options values must be escaped if they
+contain special characters or the options delimiter &rsquo;:&rsquo; (see the
+&ldquo;Quoting and escaping&rdquo; section in the ffmpeg-utils manual). The
+following option is recognized:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>file</samp>&rsquo;</dt>
+<dd><p>set the file name to use for the report; <code>%p</code> is expanded to the name
+of the program, <code>%t</code> is expanded to a timestamp, <code>%%</code> is expanded
+to a plain <code>%</code>
+</p></dd>
+</dl>
+
+<p>Errors in parsing the environment variable are not fatal, and will not
+appear in the report.
+</p>
+</dd>
+<dt> &lsquo;<samp>-cpuflags flags (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Allows setting and clearing cpu flags. This option is intended
+for testing. Do not use it unless you know what you&rsquo;re doing.
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -cpuflags -sse+mmx ...
+ffmpeg -cpuflags mmx ...
+ffmpeg -cpuflags 0 ...
+</pre></td></tr></table>
+<p>Possible flags for this option are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>x86</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>mmx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>mmxext</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse2slow</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse3</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse3slow</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>ssse3</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>atom</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse4.1</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>sse4.2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>avx</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>xop</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>fma4</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>3dnow</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>3dnowext</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>cmov</samp>&rsquo;</dt>
+</dl>
+</dd>
+<dt> &lsquo;<samp>ARM</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>armv5te</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>armv6</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>armv6t2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vfp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>vfpv3</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>neon</samp>&rsquo;</dt>
+</dl>
+</dd>
+<dt> &lsquo;<samp>PowerPC</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>altivec</samp>&rsquo;</dt>
+</dl>
+</dd>
+<dt> &lsquo;<samp>Specific Processors</samp>&rsquo;</dt>
+<dd><dl compact="compact">
+<dt> &lsquo;<samp>pentium2</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>pentium3</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>pentium4</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>k6</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>k62</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>athlon</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>athlonxp</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>k8</samp>&rsquo;</dt>
+</dl>
+</dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>-opencl_bench</samp>&rsquo;</dt>
+<dd><p>Benchmark all available OpenCL devices and show the results. This option
+is only available when FFmpeg has been compiled with <code>--enable-opencl</code>.
+</p>
+</dd>
+<dt> &lsquo;<samp>-opencl_options options (<em>global</em>)</samp>&rsquo;</dt>
+<dd><p>Set OpenCL environment options. This option is only available when
+FFmpeg has been compiled with <code>--enable-opencl</code>.
+</p>
+<p><var>options</var> must be a list of <var>key</var>=<var>value</var> option pairs
+separated by &rsquo;:&rsquo;. See the &ldquo;OpenCL Options&rdquo; section in the
+ffmpeg-utils manual for the list of supported options.
+</p></dd>
 </dl>
 
 <a name="AVOptions"></a>
-<h2 class="section"><a href="ffprobe.html#toc-AVOptions">3.2 AVOptions</a></h2>
+<h2 class="section"><a href="ffprobe.html#toc-AVOptions">3.3 AVOptions</a></h2>
 
 <p>These options are provided directly by the libavformat, libavdevice and
 libavcodec libraries. To see the list of available AVOptions, use the
 &lsquo;<samp>-help</samp>&rsquo; option. They are separated into two categories:
 </p><dl compact="compact">
 <dt> &lsquo;<samp>generic</samp>&rsquo;</dt>
-<dd><p>These options can be set for any container, codec or device. Generic options are
-listed under AVFormatContext options for containers/devices and under
+<dd><p>These options can be set for any container, codec or device. Generic options
+are listed under AVFormatContext options for containers/devices and under
 AVCodecContext options for codecs.
 </p></dd>
 <dt> &lsquo;<samp>private</samp>&rsquo;</dt>
@@ -311,27 +433,18 @@ muxer:
 </p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.flac -id3v2_version 3 out.mp3
 </pre></td></tr></table>
 
-<p>You can precisely specify which stream(s) should the codec AVOption apply to by
-appending a stream specifier of the form
-&lsquo;<samp>[:<var>stream_type</var>][:<var>stream_index</var>]</samp>&rsquo; to the option name.
-<var>stream_type</var> is &rsquo;v&rsquo; for video, &rsquo;a&rsquo; for audio and &rsquo;s&rsquo; for subtitle streams.
-<var>stream_index</var> is a global stream index when <var>stream_type</var> isn&rsquo;t
-given, otherwise it counts streams of the given type only. As always, the index
-is zero-based. For example
-</p><table><tr><td>&nbsp;</td><td><pre class="example">-foo -- applies to all applicable streams
--foo:v -- applies to all video streams
--foo:a:2 -- applies to the third audio stream
--foo:0 -- applies to the first stream
-</pre></td></tr></table>
-
-<p>Note -nooption syntax cannot be used for boolean AVOptions, use -option
-0/-option 1.
+<p>All codec AVOptions are per-stream, and thus a stream specifier
+should be attached to them.
+</p>
+<p>Note: the &lsquo;<samp>-nooption</samp>&rsquo; syntax cannot be used for boolean
+AVOptions, use &lsquo;<samp>-option 0</samp>&rsquo;/&lsquo;<samp>-option 1</samp>&rsquo;.
 </p>
-<p>Note2 old undocumented way of specifying per-stream AVOptions by prepending
-v/a/s to the options name is now obsolete and will be removed soon.
+<p>Note: the old undocumented way of specifying per-stream AVOptions by
+prepending v/a/s to the options name is now obsolete and will be
+removed soon.
 </p>
 <a name="Main-options"></a>
-<h2 class="section"><a href="ffprobe.html#toc-Main-options">3.3 Main options</a></h2>
+<h2 class="section"><a href="ffprobe.html#toc-Main-options">3.4 Main options</a></h2>
 
 <dl compact="compact">
 <dt> &lsquo;<samp>-f <var>format</var></samp>&rsquo;</dt>
@@ -361,1096 +474,579 @@ are decimal.
 options &quot;-unit -prefix -byte_binary_prefix -sexagesimal&quot;.
 </p>
 </dd>
-<dt> &lsquo;<samp>-show_format</samp>&rsquo;</dt>
-<dd><p>Show information about the container format of the input multimedia
-stream.
-</p>
-<p>All the container format information is printed within a section with
-name &quot;FORMAT&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>-show_packets</samp>&rsquo;</dt>
-<dd><p>Show information about each packet contained in the input multimedia
-stream.
-</p>
-<p>The information for each single packet is printed within a dedicated
-section with name &quot;PACKET&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>-show_streams</samp>&rsquo;</dt>
-<dd><p>Show information about each media stream contained in the input
-multimedia stream.
-</p>
-<p>Each media stream information is printed within a dedicated section
-with name &quot;STREAM&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>-i <var>input_file</var></samp>&rsquo;</dt>
-<dd><p>Read <var>input_file</var>.
-</p>
-</dd>
-</dl>
-
-<a name="Decoders"></a>
-<h1 class="chapter"><a href="ffprobe.html#toc-Decoders">4. Decoders</a></h1>
-
-<p>Decoders are configured elements in FFmpeg which allow the decoding of
-multimedia streams.
-</p>
-<p>When you configure your FFmpeg build, all the supported native decoders
-are enabled by default. Decoders requiring an external library must be enabled
-manually via the corresponding <code>--enable-lib</code> option. You can list all
-available decoders using the configure option <code>--list-decoders</code>.
+<dt> &lsquo;<samp>-of, -print_format <var>writer_name</var>[=<var>writer_options</var>]</samp>&rsquo;</dt>
+<dd><p>Set the output printing format.
 </p>
-<p>You can disable all the decoders with the configure option
-<code>--disable-decoders</code> and selectively enable / disable single decoders
-with the options <code>--enable-decoder=<var>DECODER</var></code> /
-<code>--disable-decoder=<var>DECODER</var></code>.
+<p><var>writer_name</var> specifies the name of the writer, and
+<var>writer_options</var> specifies the options to be passed to the writer.
 </p>
-<p>The option <code>-codecs</code> of the ff* tools will display the list of
-enabled decoders.
-</p>
-
-<a name="Video-Decoders"></a>
-<h1 class="chapter"><a href="ffprobe.html#toc-Video-Decoders">5. Video Decoders</a></h1>
-
-<p>A description of some of the currently available video decoders
-follows.
-</p>
-<a name="rawvideo"></a>
-<h2 class="section"><a href="ffprobe.html#toc-rawvideo">5.1 rawvideo</a></h2>
+<p>For example for printing the output in JSON format, specify:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">-print_format json
+</pre></td></tr></table>
 
-<p>Rawvideo decoder.
-</p>
-<p>This decoder decodes rawvideo streams.
+<p>For more details on the available output printing formats, see the
+Writers section below.
 </p>
-<a name="Options-2"></a>
-<h3 class="subsection"><a href="ffprobe.html#toc-Options-2">5.1.1 Options</a></h3>
-
-<dl compact="compact">
-<dt> &lsquo;<samp>top <var>top_field_first</var></samp>&rsquo;</dt>
-<dd><p>Specify the assumed field type of the input video.
-</p><dl compact="compact">
-<dt> &lsquo;<samp>-1</samp>&rsquo;</dt>
-<dd><p>the video is assumed to be progressive (default)
-</p></dd>
-<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
-<dd><p>bottom-field-first is assumed
-</p></dd>
-<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
-<dd><p>top-field-first is assumed
-</p></dd>
-</dl>
-
 </dd>
-</dl>
-
-<a name="Demuxers"></a>
-<h1 class="chapter"><a href="ffprobe.html#toc-Demuxers">6. Demuxers</a></h1>
-
-<p>Demuxers are configured elements in FFmpeg which allow to read the
-multimedia streams from a particular type of file.
-</p>
-<p>When you configure your FFmpeg build, all the supported demuxers
-are enabled by default. You can list all available ones using the
-configure option &quot;&ndash;list-demuxers&quot;.
-</p>
-<p>You can disable all the demuxers using the configure option
-&quot;&ndash;disable-demuxers&quot;, and selectively enable a single demuxer with
-the option &quot;&ndash;enable-demuxer=<var>DEMUXER</var>&quot;, or disable it
-with the option &quot;&ndash;disable-demuxer=<var>DEMUXER</var>&quot;.
-</p>
-<p>The option &quot;-formats&quot; of the ff* tools will display the list of
-enabled demuxers.
+<dt> &lsquo;<samp>-sections</samp>&rsquo;</dt>
+<dd><p>Print sections structure and section information, and exit. The output
+is not meant to be parsed by a machine.
 </p>
-<p>The description of some of the currently available demuxers follows.
+</dd>
+<dt> &lsquo;<samp>-select_streams <var>stream_specifier</var></samp>&rsquo;</dt>
+<dd><p>Select only the streams specified by <var>stream_specifier</var>. This
+option affects only the options related to streams
+(e.g. <code>show_streams</code>, <code>show_packets</code>, etc.).
 </p>
-<a name="image2"></a>
-<h2 class="section"><a href="ffprobe.html#toc-image2">6.1 image2</a></h2>
-
-<p>Image file demuxer.
-</p>
-<p>This demuxer reads from a list of image files specified by a pattern.
-</p>
-<p>The pattern may contain the string &quot;%d&quot; or &quot;%0<var>N</var>d&quot;, which
-specifies the position of the characters representing a sequential
-number in each filename matched by the pattern. If the form
-&quot;%d0<var>N</var>d&quot; is used, the string representing the number in each
-filename is 0-padded and <var>N</var> is the total number of 0-padded
-digits representing the number. The literal character &rsquo;%&rsquo; can be
-specified in the pattern with the string &quot;%%&quot;.
-</p>
-<p>If the pattern contains &quot;%d&quot; or &quot;%0<var>N</var>d&quot;, the first filename of
-the file list specified by the pattern must contain a number
-inclusively contained between 0 and 4, all the following numbers must
-be sequential. This limitation may be hopefully fixed.
-</p>
-<p>The pattern may contain a suffix which is used to automatically
-determine the format of the images contained in the files.
-</p>
-<p>For example the pattern &quot;img-%03d.bmp&quot; will match a sequence of
-filenames of the form &lsquo;<tt>img-001.bmp</tt>&rsquo;, &lsquo;<tt>img-002.bmp</tt>&rsquo;, ...,
-&lsquo;<tt>img-010.bmp</tt>&rsquo;, etc.; the pattern &quot;i%%m%%g-%d.jpg&quot; will match a
-sequence of filenames of the form &lsquo;<tt>i%m%g-1.jpg</tt>&rsquo;,
-&lsquo;<tt>i%m%g-2.jpg</tt>&rsquo;, ..., &lsquo;<tt>i%m%g-10.jpg</tt>&rsquo;, etc.
-</p>
-<p>The size, the pixel format, and the format of each image must be the
-same for all the files in the sequence.
-</p>
-<p>The following example shows how to use &lsquo;<tt>ffmpeg</tt>&rsquo; for creating a
-video from the images in the file sequence &lsquo;<tt>img-001.jpeg</tt>&rsquo;,
-&lsquo;<tt>img-002.jpeg</tt>&rsquo;, ..., assuming an input framerate of 10 frames per
-second:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -r 10 -f image2 -i 'img-%03d.jpeg' out.avi
+<p>For example to show only audio streams, you can use the command:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffprobe -show_streams -select_streams a INPUT
 </pre></td></tr></table>
 
-<p>Note that the pattern must not necessarily contain &quot;%d&quot; or
-&quot;%0<var>N</var>d&quot;, for example to convert a single image file
-&lsquo;<tt>img.jpeg</tt>&rsquo; you can employ the command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f image2 -i img.jpeg img.png
+<p>To show only video packets belonging to the video stream with index 1:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffprobe -show_packets -select_streams v:1 INPUT
 </pre></td></tr></table>
 
-<a name="applehttp"></a>
-<h2 class="section"><a href="ffprobe.html#toc-applehttp">6.2 applehttp</a></h2>
-
-<p>Apple HTTP Live Streaming demuxer.
-</p>
-<p>This demuxer presents all AVStreams from all variant streams.
-The id field is set to the bitrate variant index number. By setting
-the discard flags on AVStreams (by pressing &rsquo;a&rsquo; or &rsquo;v&rsquo; in ffplay),
-the caller can decide which variant streams to actually receive.
-The total bitrate of the variant that the stream belongs to is
-available in a metadata key named &quot;variant_bitrate&quot;.
+</dd>
+<dt> &lsquo;<samp>-show_data</samp>&rsquo;</dt>
+<dd><p>Show payload data, as a hexadecimal and ASCII dump. Coupled with
+&lsquo;<samp>-show_packets</samp>&rsquo;, it will dump the packets&rsquo; data. Coupled with
+&lsquo;<samp>-show_streams</samp>&rsquo;, it will dump the codec extradata.
 </p>
-<a name="Protocols"></a>
-<h1 class="chapter"><a href="ffprobe.html#toc-Protocols">7. Protocols</a></h1>
-
-<p>Protocols are configured elements in FFmpeg which allow to access
-resources which require the use of a particular protocol.
+<p>The dump is printed as the &quot;data&quot; field. It may contain newlines.
 </p>
-<p>When you configure your FFmpeg build, all the supported protocols are
-enabled by default. You can list all available ones using the
-configure option &quot;&ndash;list-protocols&quot;.
+</dd>
+<dt> &lsquo;<samp>-show_error</samp>&rsquo;</dt>
+<dd><p>Show information about the error found when trying to probe the input.
 </p>
-<p>You can disable all the protocols using the configure option
-&quot;&ndash;disable-protocols&quot;, and selectively enable a protocol using the
-option &quot;&ndash;enable-protocol=<var>PROTOCOL</var>&quot;, or you can disable a
-particular protocol using the option
-&quot;&ndash;disable-protocol=<var>PROTOCOL</var>&quot;.
+<p>The error information is printed within a section with name &quot;ERROR&quot;.
 </p>
-<p>The option &quot;-protocols&quot; of the ff* tools will display the list of
-supported protocols.
+</dd>
+<dt> &lsquo;<samp>-show_format</samp>&rsquo;</dt>
+<dd><p>Show information about the container format of the input multimedia
+stream.
 </p>
-<p>A description of the currently available protocols follows.
+<p>All the container format information is printed within a section with
+name &quot;FORMAT&quot;.
 </p>
-<a name="applehttp-1"></a>
-<h2 class="section"><a href="ffprobe.html#toc-applehttp-1">7.1 applehttp</a></h2>
-
-<p>Read Apple HTTP Live Streaming compliant segmented stream as
-a uniform one. The M3U8 playlists describing the segments can be
-remote HTTP resources or local files, accessed using the standard
-file protocol.
-HTTP is default, specific protocol can be declared by specifying
-&quot;+<var>proto</var>&quot; after the applehttp URI scheme name, where <var>proto</var>
-is either &quot;file&quot; or &quot;http&quot;.
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">applehttp://host/path/to/remote/resource.m3u8
-applehttp+http://host/path/to/remote/resource.m3u8
-applehttp+file://path/to/local/resource.m3u8
-</pre></td></tr></table>
-
-<a name="concat"></a>
-<h2 class="section"><a href="ffprobe.html#toc-concat">7.2 concat</a></h2>
-
-<p>Physical concatenation protocol.
+</dd>
+<dt> &lsquo;<samp>-show_format_entry <var>name</var></samp>&rsquo;</dt>
+<dd><p>Like &lsquo;<samp>-show_format</samp>&rsquo;, but only prints the specified entry of the
+container format information, rather than all. This option may be given more
+than once, then all specified entries will be shown.
 </p>
-<p>Allow to read and seek from many resource in sequence as if they were
-a unique resource.
+<p>This option is deprecated, use <code>show_entries</code> instead.
 </p>
-<p>A URL accepted by this protocol has the syntax:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">concat:<var>URL1</var>|<var>URL2</var>|...|<var>URLN</var>
+</dd>
+<dt> &lsquo;<samp>-show_entries <var>section_entries</var></samp>&rsquo;</dt>
+<dd><p>Set list of entries to show.
+</p>
+<p>Entries are specified according to the following
+syntax. <var>section_entries</var> contains a list of section entries
+separated by <code>:</code>. Each section entry is composed by a section
+name (or unique name), optionally followed by a list of entries local
+to that section, separated by <code>,</code>.
+</p>
+<p>If section name is specified but is followed by no <code>=</code>, all
+entries are printed to output, together with all the contained
+sections. Otherwise only the entries specified in the local section
+entries list are printed. In particular, if <code>=</code> is specified but
+the list of local entries is empty, then no entries will be shown for
+that section.
+</p>
+<p>Note that the order of specification of the local section entries is
+not honored in the output, and the usual display order will be
+retained.
+</p>
+<p>The formal syntax is given by:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>LOCAL_SECTION_ENTRIES</var> ::= <var>SECTION_ENTRY_NAME</var>[,<var>LOCAL_SECTION_ENTRIES</var>]
+<var>SECTION_ENTRY</var>         ::= <var>SECTION_NAME</var>[=[<var>LOCAL_SECTION_ENTRIES</var>]]
+<var>SECTION_ENTRIES</var>       ::= <var>SECTION_ENTRY</var>[:<var>SECTION_ENTRIES</var>]
 </pre></td></tr></table>
 
-<p>where <var>URL1</var>, <var>URL2</var>, ..., <var>URLN</var> are the urls of the
-resource to be concatenated, each one possibly specifying a distinct
-protocol.
-</p>
-<p>For example to read a sequence of files &lsquo;<tt>split1.mpeg</tt>&rsquo;,
-&lsquo;<tt>split2.mpeg</tt>&rsquo;, &lsquo;<tt>split3.mpeg</tt>&rsquo; with &lsquo;<tt>ffplay</tt>&rsquo; use the
-command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay concat:split1.mpeg\|split2.mpeg\|split3.mpeg
+<p>For example, to show only the index and type of each stream, and the PTS
+time, duration time, and stream index of the packets, you can specify
+the argument:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">packet=pts_time,duration_time,stream_index : stream=index,codec_type
 </pre></td></tr></table>
 
-<p>Note that you may need to escape the character &quot;|&quot; which is special for
-many shells.
-</p>
-<a name="file"></a>
-<h2 class="section"><a href="ffprobe.html#toc-file">7.3 file</a></h2>
-
-<p>File access protocol.
-</p>
-<p>Allow to read from or read to a file.
-</p>
-<p>For example to read from a file &lsquo;<tt>input.mpeg</tt>&rsquo; with &lsquo;<tt>ffmpeg</tt>&rsquo;
-use the command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i file:input.mpeg output.mpeg
+<p>To show all the entries in the section &quot;format&quot;, but only the codec
+type in the section &quot;stream&quot;, specify the argument:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">format : stream=codec_type
 </pre></td></tr></table>
 
-<p>The ff* tools default to the file protocol, that is a resource
-specified with the name &quot;FILE.mpeg&quot; is interpreted as the URL
-&quot;file:FILE.mpeg&quot;.
-</p>
-<a name="gopher"></a>
-<h2 class="section"><a href="ffprobe.html#toc-gopher">7.4 gopher</a></h2>
-
-<p>Gopher protocol.
-</p>
-<a name="http"></a>
-<h2 class="section"><a href="ffprobe.html#toc-http">7.5 http</a></h2>
-
-<p>HTTP (Hyper Text Transfer Protocol).
-</p>
-<a name="mmst"></a>
-<h2 class="section"><a href="ffprobe.html#toc-mmst">7.6 mmst</a></h2>
-
-<p>MMS (Microsoft Media Server) protocol over TCP.
-</p>
-<a name="mmsh"></a>
-<h2 class="section"><a href="ffprobe.html#toc-mmsh">7.7 mmsh</a></h2>
-
-<p>MMS (Microsoft Media Server) protocol over HTTP.
-</p>
-<p>The required syntax is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">mmsh://<var>server</var>[:<var>port</var>][/<var>app</var>][/<var>playpath</var>]
+<p>To show all the tags in the stream and format sections:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">format_tags : format_tags
 </pre></td></tr></table>
 
-<a name="md5"></a>
-<h2 class="section"><a href="ffprobe.html#toc-md5">7.8 md5</a></h2>
-
-<p>MD5 output protocol.
-</p>
-<p>Computes the MD5 hash of the data to be written, and on close writes
-this to the designated output or stdout if none is specified. It can
-be used to test muxers without writing an actual file.
-</p>
-<p>Some examples follow.
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># Write the MD5 hash of the encoded AVI file to the file output.avi.md5.
-ffmpeg -i input.flv -f avi -y md5:output.avi.md5
-
-# Write the MD5 hash of the encoded AVI file to stdout.
-ffmpeg -i input.flv -f avi -y md5:
+<p>To show only the <code>title</code> tag (if available) in the stream
+sections:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">stream_tags=title
 </pre></td></tr></table>
 
-<p>Note that some formats (typically MOV) require the output protocol to
-be seekable, so they will fail with the MD5 output protocol.
+</dd>
+<dt> &lsquo;<samp>-show_packets</samp>&rsquo;</dt>
+<dd><p>Show information about each packet contained in the input multimedia
+stream.
 </p>
-<a name="pipe"></a>
-<h2 class="section"><a href="ffprobe.html#toc-pipe">7.9 pipe</a></h2>
-
-<p>UNIX pipe access protocol.
+<p>The information for each single packet is printed within a dedicated
+section with name &quot;PACKET&quot;.
 </p>
-<p>Allow to read and write from UNIX pipes.
+</dd>
+<dt> &lsquo;<samp>-show_frames</samp>&rsquo;</dt>
+<dd><p>Show information about each frame and subtitle contained in the input
+multimedia stream.
 </p>
-<p>The accepted syntax is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">pipe:[<var>number</var>]
-</pre></td></tr></table>
-
-<p><var>number</var> is the number corresponding to the file descriptor of the
-pipe (e.g. 0 for stdin, 1 for stdout, 2 for stderr).  If <var>number</var>
-is not specified, by default the stdout file descriptor will be used
-for writing, stdin for reading.
-</p>
-<p>For example to read from stdin with &lsquo;<tt>ffmpeg</tt>&rsquo;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">cat test.wav | ffmpeg -i pipe:0
-# ...this is the same as...
-cat test.wav | ffmpeg -i pipe:
-</pre></td></tr></table>
-
-<p>For writing to stdout with &lsquo;<tt>ffmpeg</tt>&rsquo;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i test.wav -f avi pipe:1 | cat &gt; test.avi
-# ...this is the same as...
-ffmpeg -i test.wav -f avi pipe: | cat &gt; test.avi
-</pre></td></tr></table>
-
-<p>Note that some formats (typically MOV), require the output protocol to
-be seekable, so they will fail with the pipe output protocol.
+<p>The information for each single frame is printed within a dedicated
+section with name &quot;FRAME&quot; or &quot;SUBTITLE&quot;.
 </p>
-<a name="rtmp"></a>
-<h2 class="section"><a href="ffprobe.html#toc-rtmp">7.10 rtmp</a></h2>
-
-<p>Real-Time Messaging Protocol.
+</dd>
+<dt> &lsquo;<samp>-show_streams</samp>&rsquo;</dt>
+<dd><p>Show information about each media stream contained in the input
+multimedia stream.
 </p>
-<p>The Real-Time Messaging Protocol (RTMP) is used for streaming multime‐
-dia content across a TCP/IP network.
+<p>Each media stream information is printed within a dedicated section
+with name &quot;STREAM&quot;.
 </p>
-<p>The required syntax is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">rtmp://<var>server</var>[:<var>port</var>][/<var>app</var>][/<var>playpath</var>]
-</pre></td></tr></table>
-
-<p>The accepted parameters are:
-</p><dl compact="compact">
-<dt> &lsquo;<samp>server</samp>&rsquo;</dt>
-<dd><p>The address of the RTMP server.
+</dd>
+<dt> &lsquo;<samp>-show_programs</samp>&rsquo;</dt>
+<dd><p>Show information about programs and their streams contained in the input
+multimedia stream.
+</p>
+<p>Each media stream information is printed within a dedicated section
+with name &quot;PROGRAM_STREAM&quot;.
 </p>
 </dd>
-<dt> &lsquo;<samp>port</samp>&rsquo;</dt>
-<dd><p>The number of the TCP port to use (by default is 1935).
+<dt> &lsquo;<samp>-show_chapters</samp>&rsquo;</dt>
+<dd><p>Show information about chapters stored in the format.
+</p>
+<p>Each chapter is printed within a dedicated section with name &quot;CHAPTER&quot;.
 </p>
 </dd>
-<dt> &lsquo;<samp>app</samp>&rsquo;</dt>
-<dd><p>It is the name of the application to access. It usually corresponds to
-the path where the application is installed on the RTMP server
-(e.g. &lsquo;<tt>/ondemand/</tt>&rsquo;, &lsquo;<tt>/flash/live/</tt>&rsquo;, etc.).
+<dt> &lsquo;<samp>-count_frames</samp>&rsquo;</dt>
+<dd><p>Count the number of frames per stream and report it in the
+corresponding stream section.
 </p>
 </dd>
-<dt> &lsquo;<samp>playpath</samp>&rsquo;</dt>
-<dd><p>It is the path or name of the resource to play with reference to the
-application specified in <var>app</var>, may be prefixed by &quot;mp4:&quot;.
+<dt> &lsquo;<samp>-count_packets</samp>&rsquo;</dt>
+<dd><p>Count the number of packets per stream and report it in the
+corresponding stream section.
 </p>
 </dd>
-</dl>
-
-<p>For example to read with &lsquo;<tt>ffplay</tt>&rsquo; a multimedia resource named
-&quot;sample&quot; from the application &quot;vod&quot; from an RTMP server &quot;myserver&quot;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay rtmp://myserver/vod/sample
+<dt> &lsquo;<samp>-read_intervals <var>read_intervals</var></samp>&rsquo;</dt>
+<dd>
+<p>Read only the specified intervals. <var>read_intervals</var> must be a
+sequence of interval specifications separated by &quot;,&quot;.
+<code>ffprobe</code> will seek to the interval starting point, and will
+continue reading from that.
+</p>
+<p>Each interval is specified by two optional parts, separated by &quot;%&quot;.
+</p>
+<p>The first part specifies the interval start position. It is
+interpreted as an abolute position, or as a relative offset from the
+current position if it is preceded by the &quot;+&quot; character. If this first
+part is not specified, no seeking will be performed when reading this
+interval.
+</p>
+<p>The second part specifies the interval end position. It is interpreted
+as an absolute position, or as a relative offset from the current
+position if it is preceded by the &quot;+&quot; character. If the offset
+specification starts with &quot;#&quot;, it is interpreted as the number of
+packets to read (not including the flushing packets) from the interval
+start. If no second part is specified, the program will read until the
+end of the input.
+</p>
+<p>Note that seeking is not accurate, thus the actual interval start
+point may be different from the specified position. Also, when an
+interval duration is specified, the absolute end time will be computed
+by adding the duration to the interval start point found by seeking
+the file, rather than to the specified start value.
+</p>
+<p>The formal syntax is given by:
+</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>INTERVAL</var>  ::= [<var>START</var>|+<var>START_OFFSET</var>][%[<var>END</var>|+<var>END_OFFSET</var>]]
+<var>INTERVALS</var> ::= <var>INTERVAL</var>[,<var>INTERVALS</var>]
 </pre></td></tr></table>
 
-<a name="rtmp_002c-rtmpe_002c-rtmps_002c-rtmpt_002c-rtmpte"></a>
-<h2 class="section"><a href="ffprobe.html#toc-rtmp_002c-rtmpe_002c-rtmps_002c-rtmpt_002c-rtmpte">7.11 rtmp, rtmpe, rtmps, rtmpt, rtmpte</a></h2>
-
-<p>Real-Time Messaging Protocol and its variants supported through
-librtmp.
-</p>
-<p>Requires the presence of the librtmp headers and library during
-configuration. You need to explicitely configure the build with
-&quot;&ndash;enable-librtmp&quot;. If enabled this will replace the native RTMP
-protocol.
-</p>
-<p>This protocol provides most client functions and a few server
-functions needed to support RTMP, RTMP tunneled in HTTP (RTMPT),
-encrypted RTMP (RTMPE), RTMP over SSL/TLS (RTMPS) and tunneled
-variants of these encrypted types (RTMPTE, RTMPTS).
-</p>
-<p>The required syntax is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>rtmp_proto</var>://<var>server</var>[:<var>port</var>][/<var>app</var>][/<var>playpath</var>] <var>options</var>
+<p>A few examples follow.
+</p><ul>
+<li>
+Seek to time 10, read packets until 20 seconds after the found seek
+point, then seek to position <code>01:30</code> (1 minute and thirty
+seconds) and read packets until position <code>01:45</code>.
+<table><tr><td>&nbsp;</td><td><pre class="example">10%+20,01:30%01:45
 </pre></td></tr></table>
 
-<p>where <var>rtmp_proto</var> is one of the strings &quot;rtmp&quot;, &quot;rtmpt&quot;, &quot;rtmpe&quot;,
-&quot;rtmps&quot;, &quot;rtmpte&quot;, &quot;rtmpts&quot; corresponding to each RTMP variant, and
-<var>server</var>, <var>port</var>, <var>app</var> and <var>playpath</var> have the same
-meaning as specified for the RTMP native protocol.
-<var>options</var> contains a list of space-separated options of the form
-<var>key</var>=<var>val</var>.
-</p>
-<p>See the librtmp manual page (man 3 librtmp) for more information.
-</p>
-<p>For example, to stream a file in real-time to an RTMP server using
-&lsquo;<tt>ffmpeg</tt>&rsquo;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i myfile -f flv rtmp://myserver/live/mystream
+</li><li>
+Read only 42 packets after seeking to position <code>01:23</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">01:23%+#42
 </pre></td></tr></table>
 
-<p>To play the same stream using &lsquo;<tt>ffplay</tt>&rsquo;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffplay &quot;rtmp://myserver/live/mystream live=1&quot;
+</li><li>
+Read only the first 20 seconds from the start:
+<table><tr><td>&nbsp;</td><td><pre class="example">%+20
 </pre></td></tr></table>
 
-<a name="rtp"></a>
-<h2 class="section"><a href="ffprobe.html#toc-rtp">7.12 rtp</a></h2>
+</li><li>
+Read from the start until position <code>02:30</code>:
+<table><tr><td>&nbsp;</td><td><pre class="example">%02:30
+</pre></td></tr></table>
+</li></ul>
 
-<p>Real-Time Protocol.
+</dd>
+<dt> &lsquo;<samp>-show_private_data, -private</samp>&rsquo;</dt>
+<dd><p>Show private data, that is data depending on the format of the
+particular shown element.
+This option is enabled by default, but you may need to disable it
+for specific uses, for example when creating XSD-compliant XML output.
 </p>
-<a name="rtsp"></a>
-<h2 class="section"><a href="ffprobe.html#toc-rtsp">7.13 rtsp</a></h2>
-
-<p>RTSP is not technically a protocol handler in libavformat, it is a demuxer
-and muxer. The demuxer supports both normal RTSP (with data transferred
-over RTP; this is used by e.g. Apple and Microsoft) and Real-RTSP (with
-data transferred over RDT).
+</dd>
+<dt> &lsquo;<samp>-show_program_version</samp>&rsquo;</dt>
+<dd><p>Show information related to program version.
 </p>
-<p>The muxer can be used to send a stream using RTSP ANNOUNCE to a server
-supporting it (currently Darwin Streaming Server and Mischa Spiegelmock&rsquo;s
-<a href="http://github.com/revmischa/rtsp-server">RTSP server</a>).
+<p>Version information is printed within a section with name
+&quot;PROGRAM_VERSION&quot;.
 </p>
-<p>The required syntax for a RTSP url is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">rtsp://<var>hostname</var>[:<var>port</var>]/<var>path</var>[?<var>options</var>]
-</pre></td></tr></table>
-
-<p><var>options</var> is a <code>&amp;</code>-separated list. The following options
-are supported:
+</dd>
+<dt> &lsquo;<samp>-show_library_versions</samp>&rsquo;</dt>
+<dd><p>Show information related to library versions.
 </p>
-<dl compact="compact">
-<dt> &lsquo;<samp>udp</samp>&rsquo;</dt>
-<dd><p>Use UDP as lower transport protocol.
+<p>Version information for each library is printed within a section with
+name &quot;LIBRARY_VERSION&quot;.
 </p>
 </dd>
-<dt> &lsquo;<samp>tcp</samp>&rsquo;</dt>
-<dd><p>Use TCP (interleaving within the RTSP control channel) as lower
-transport protocol.
+<dt> &lsquo;<samp>-show_versions</samp>&rsquo;</dt>
+<dd><p>Show information related to program and library versions. This is the
+equivalent of setting both &lsquo;<samp>-show_program_version</samp>&rsquo; and
+&lsquo;<samp>-show_library_versions</samp>&rsquo; options.
 </p>
 </dd>
-<dt> &lsquo;<samp>multicast</samp>&rsquo;</dt>
-<dd><p>Use UDP multicast as lower transport protocol.
+<dt> &lsquo;<samp>-bitexact</samp>&rsquo;</dt>
+<dd><p>Force bitexact output, useful to produce output which is not dependent
+on the specific build.
 </p>
 </dd>
-<dt> &lsquo;<samp>http</samp>&rsquo;</dt>
-<dd><p>Use HTTP tunneling as lower transport protocol, which is useful for
-passing proxies.
+<dt> &lsquo;<samp>-i <var>input_file</var></samp>&rsquo;</dt>
+<dd><p>Read <var>input_file</var>.
 </p>
 </dd>
-<dt> &lsquo;<samp>filter_src</samp>&rsquo;</dt>
-<dd><p>Accept packets only from negotiated peer address and port.
-</p></dd>
 </dl>
 
-<p>Multiple lower transport protocols may be specified, in that case they are
-tried one at a time (if the setup of one fails, the next one is tried).
-For the muxer, only the <code>tcp</code> and <code>udp</code> options are supported.
-</p>
-<p>When receiving data over UDP, the demuxer tries to reorder received packets
-(since they may arrive out of order, or packets may get lost totally). In
-order for this to be enabled, a maximum delay must be specified in the
-<code>max_delay</code> field of AVFormatContext.
-</p>
-<p>When watching multi-bitrate Real-RTSP streams with &lsquo;<tt>ffplay</tt>&rsquo;, the
-streams to display can be chosen with <code>-vst</code> <var>n</var> and
-<code>-ast</code> <var>n</var> for video and audio respectively, and can be switched
-on the fly by pressing <code>v</code> and <code>a</code>.
-</p>
-<p>Example command lines:
-</p>
-<p>To watch a stream over UDP, with a max reordering delay of 0.5 seconds:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -max_delay 500000 rtsp://server/video.mp4?udp
-</pre></td></tr></table>
+<a name="Writers"></a>
+<h1 class="chapter"><a href="ffprobe.html#toc-Writers">4. Writers</a></h1>
 
-<p>To watch a stream tunneled over HTTP:
+<p>A writer defines the output format adopted by <code>ffprobe</code>, and will be
+used for printing all the parts of the output.
 </p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffplay rtsp://server/video.mp4?http
-</pre></td></tr></table>
-
-<p>To send a stream in realtime to a RTSP server, for others to watch:
+<p>A writer may accept one or more arguments, which specify the options
+to adopt. The options are specified as a list of <var>key</var>=<var>value</var>
+pairs, separated by &quot;:&quot;.
 </p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i <var>input</var> -f rtsp -muxdelay 0.1 rtsp://server/live.sdp
-</pre></td></tr></table>
-
-<a name="sap"></a>
-<h2 class="section"><a href="ffprobe.html#toc-sap">7.14 sap</a></h2>
-
-<p>Session Announcement Protocol (RFC 2974). This is not technically a
-protocol handler in libavformat, it is a muxer and demuxer.
-It is used for signalling of RTP streams, by announcing the SDP for the
-streams regularly on a separate port.
-</p>
-<a name="Muxer"></a>
-<h3 class="subsection"><a href="ffprobe.html#toc-Muxer">7.14.1 Muxer</a></h3>
-
-<p>The syntax for a SAP url given to the muxer is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">sap://<var>destination</var>[:<var>port</var>][?<var>options</var>]
-</pre></td></tr></table>
-
-<p>The RTP packets are sent to <var>destination</var> on port <var>port</var>,
-or to port 5004 if no port is specified.
-<var>options</var> is a <code>&amp;</code>-separated list. The following options
-are supported:
+<p>All writers support the following options:
 </p>
 <dl compact="compact">
-<dt> &lsquo;<samp>announce_addr=<var>address</var></samp>&rsquo;</dt>
-<dd><p>Specify the destination IP address for sending the announcements to.
-If omitted, the announcements are sent to the commonly used SAP
-announcement multicast address 224.2.127.254 (sap.mcast.net), or
-ff0e::2:7ffe if <var>destination</var> is an IPv6 address.
+<dt> &lsquo;<samp>string_validation, sv</samp>&rsquo;</dt>
+<dd><p>Set string validation mode.
 </p>
-</dd>
-<dt> &lsquo;<samp>announce_port=<var>port</var></samp>&rsquo;</dt>
-<dd><p>Specify the port to send the announcements on, defaults to
-9875 if not specified.
+<p>The following values are accepted.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>fail</samp>&rsquo;</dt>
+<dd><p>The writer will fail immediately in case an invalid string (UTF-8)
+sequence or code point is found in the input. This is especially
+useful to validate input metadata.
 </p>
 </dd>
-<dt> &lsquo;<samp>ttl=<var>ttl</var></samp>&rsquo;</dt>
-<dd><p>Specify the time to live value for the announcements and RTP packets,
-defaults to 255.
+<dt> &lsquo;<samp>ignore</samp>&rsquo;</dt>
+<dd><p>Any validation error will be ignored. This will result in possibly
+broken output, especially with the json or xml writer.
 </p>
 </dd>
-<dt> &lsquo;<samp>same_port=<var>0|1</var></samp>&rsquo;</dt>
-<dd><p>If set to 1, send all RTP streams on the same port pair. If zero (the
-default), all streams are sent on unique ports, with each stream on a
-port 2 numbers higher than the previous.
-VLC/Live555 requires this to be set to 1, to be able to receive the stream.
-The RTP stack in libavformat for receiving requires all streams to be sent
-on unique ports.
+<dt> &lsquo;<samp>replace</samp>&rsquo;</dt>
+<dd><p>The writer will substitute invalid UTF-8 sequences or code points with
+the string specified with the &lsquo;<samp>string_validation_replacement</samp>&rsquo;.
 </p></dd>
 </dl>
 
-<p>Example command lines follow.
-</p>
-<p>To broadcast a stream on the local subnet, for watching in VLC:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i <var>input</var> -f sap sap://224.0.0.255?same_port=1
-</pre></td></tr></table>
-
-<p>Similarly, for watching in ffplay:
+<p>Default value is &lsquo;<samp>replace</samp>&rsquo;.
 </p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i <var>input</var> -f sap sap://224.0.0.255
-</pre></td></tr></table>
-
-<p>And for watching in ffplay, over IPv6:
+</dd>
+<dt> &lsquo;<samp>string_validation_replacement, svr</samp>&rsquo;</dt>
+<dd><p>Set replacement string to use in case &lsquo;<samp>string_validation</samp>&rsquo; is
+set to &lsquo;<samp>replace</samp>&rsquo;.
 </p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -re -i <var>input</var> -f sap sap://[ff0e::1:2:3:4]
-</pre></td></tr></table>
-
-<a name="Demuxer"></a>
-<h3 class="subsection"><a href="ffprobe.html#toc-Demuxer">7.14.2 Demuxer</a></h3>
-
-<p>The syntax for a SAP url given to the demuxer is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">sap://[<var>address</var>][:<var>port</var>]
-</pre></td></tr></table>
+<p>In case the option is not specified, the writer will assume the empty
+string, that is it will remove the invalid sequences from the input
+strings.
+</p></dd>
+</dl>
 
-<p><var>address</var> is the multicast address to listen for announcements on,
-if omitted, the default 224.2.127.254 (sap.mcast.net) is used. <var>port</var>
-is the port that is listened on, 9875 if omitted.
-</p>
-<p>The demuxers listens for announcements on the given address and port.
-Once an announcement is received, it tries to receive that particular stream.
+<p>A description of the currently available writers follows.
 </p>
-<p>Example command lines follow.
+<a name="default"></a>
+<h2 class="section"><a href="ffprobe.html#toc-default">4.1 default</a></h2>
+<p>Default format.
 </p>
-<p>To play back the first stream announced on the normal SAP multicast address:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffplay sap://
+<p>Print each section in the form:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">[SECTION]
+key1=val1
+...
+keyN=valN
+[/SECTION]
 </pre></td></tr></table>
 
-<p>To play back the first stream announced on one the default IPv6 SAP multicast address:
+<p>Metadata tags are printed as a line in the corresponding FORMAT, STREAM or
+PROGRAM_STREAM section, and are prefixed by the string &quot;TAG:&quot;.
 </p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffplay sap://[ff0e::2:7ffe]
-</pre></td></tr></table>
-
-<a name="tcp"></a>
-<h2 class="section"><a href="ffprobe.html#toc-tcp">7.15 tcp</a></h2>
-
-<p>Trasmission Control Protocol.
+<p>A description of the accepted options follows.
 </p>
-<p>The required syntax for a TCP url is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">tcp://<var>hostname</var>:<var>port</var>[?<var>options</var>]
-</pre></td></tr></table>
-
 <dl compact="compact">
-<dt> &lsquo;<samp>listen</samp>&rsquo;</dt>
-<dd><p>Listen for an incoming connection
+<dt> &lsquo;<samp>nokey, nk</samp>&rsquo;</dt>
+<dd><p>If set to 1 specify not to print the key of each field. Default value
+is 0.
 </p>
-<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i <var>input</var> -f <var>format</var> tcp://<var>hostname</var>:<var>port</var>?listen
-ffplay tcp://<var>hostname</var>:<var>port</var>
-</pre></td></tr></table>
-
 </dd>
+<dt> &lsquo;<samp>noprint_wrappers, nw</samp>&rsquo;</dt>
+<dd><p>If set to 1 specify not to print the section header and footer.
+Default value is 0.
+</p></dd>
 </dl>
 
-<a name="udp"></a>
-<h2 class="section"><a href="ffprobe.html#toc-udp">7.16 udp</a></h2>
-
-<p>User Datagram Protocol.
+<a name="compact_002c-csv"></a>
+<h2 class="section"><a href="ffprobe.html#toc-compact_002c-csv">4.2 compact, csv</a></h2>
+<p>Compact and CSV format.
+</p>
+<p>The <code>csv</code> writer is equivalent to <code>compact</code>, but supports
+different defaults.
 </p>
-<p>The required syntax for a UDP url is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">udp://<var>hostname</var>:<var>port</var>[?<var>options</var>]
+<p>Each section is printed on a single line.
+If no option is specifid, the output has the form:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">section|key1=val1| ... |keyN=valN
 </pre></td></tr></table>
 
-<p><var>options</var> contains a list of &amp;-seperated options of the form <var>key</var>=<var>val</var>.
-Follow the list of supported options.
+<p>Metadata tags are printed in the corresponding &quot;format&quot; or &quot;stream&quot;
+section. A metadata tag key, if printed, is prefixed by the string
+&quot;tag:&quot;.
+</p>
+<p>The description of the accepted options follows.
 </p>
 <dl compact="compact">
-<dt> &lsquo;<samp>buffer_size=<var>size</var></samp>&rsquo;</dt>
-<dd><p>set the UDP buffer size in bytes
+<dt> &lsquo;<samp>item_sep, s</samp>&rsquo;</dt>
+<dd><p>Specify the character to use for separating fields in the output line.
+It must be a single printable character, it is &quot;|&quot; by default (&quot;,&quot; for
+the <code>csv</code> writer).
 </p>
 </dd>
-<dt> &lsquo;<samp>localport=<var>port</var></samp>&rsquo;</dt>
-<dd><p>override the local UDP port to bind with
+<dt> &lsquo;<samp>nokey, nk</samp>&rsquo;</dt>
+<dd><p>If set to 1 specify not to print the key of each field. Its default
+value is 0 (1 for the <code>csv</code> writer).
 </p>
 </dd>
-<dt> &lsquo;<samp>pkt_size=<var>size</var></samp>&rsquo;</dt>
-<dd><p>set the size in bytes of UDP packets
+<dt> &lsquo;<samp>escape, e</samp>&rsquo;</dt>
+<dd><p>Set the escape mode to use, default to &quot;c&quot; (&quot;csv&quot; for the <code>csv</code>
+writer).
 </p>
-</dd>
-<dt> &lsquo;<samp>reuse=<var>1|0</var></samp>&rsquo;</dt>
-<dd><p>explicitly allow or disallow reusing UDP sockets
+<p>It can assume one of the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>c</samp>&rsquo;</dt>
+<dd><p>Perform C-like escaping. Strings containing a newline (&rsquo;\n&rsquo;), carriage
+return (&rsquo;\r&rsquo;), a tab (&rsquo;\t&rsquo;), a form feed (&rsquo;\f&rsquo;), the escaping
+character (&rsquo;\&rsquo;) or the item separator character <var>SEP</var> are escaped using C-like fashioned
+escaping, so that a newline is converted to the sequence &quot;\n&quot;, a
+carriage return to &quot;\r&quot;, &rsquo;\&rsquo; to &quot;\\&quot; and the separator <var>SEP</var> is
+converted to &quot;\<var>SEP</var>&quot;.
 </p>
 </dd>
-<dt> &lsquo;<samp>ttl=<var>ttl</var></samp>&rsquo;</dt>
-<dd><p>set the time to live value (for multicast only)
+<dt> &lsquo;<samp>csv</samp>&rsquo;</dt>
+<dd><p>Perform CSV-like escaping, as described in RFC4180.  Strings
+containing a newline (&rsquo;\n&rsquo;), a carriage return (&rsquo;\r&rsquo;), a double quote
+(&rsquo;&quot;&rsquo;), or <var>SEP</var> are enclosed in double-quotes.
 </p>
 </dd>
-<dt> &lsquo;<samp>connect=<var>1|0</var></samp>&rsquo;</dt>
-<dd><p>Initialize the UDP socket with <code>connect()</code>. In this case, the
-destination address can&rsquo;t be changed with ff_udp_set_remote_url later.
-If the destination address isn&rsquo;t known at the start, this option can
-be specified in ff_udp_set_remote_url, too.
-This allows finding out the source address for the packets with getsockname,
-and makes writes return with AVERROR(ECONNREFUSED) if &quot;destination
-unreachable&quot; is received.
-For receiving, this gives the benefit of only receiving packets from
-the specified peer address/port.
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>Perform no escaping.
 </p></dd>
 </dl>
 
-<p>Some usage examples of the udp protocol with &lsquo;<tt>ffmpeg</tt>&rsquo; follow.
-</p>
-<p>To stream over UDP to a remote endpoint:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i <var>input</var> -f <var>format</var> udp://<var>hostname</var>:<var>port</var>
-</pre></td></tr></table>
-
-<p>To stream in mpegts format over UDP using 188 sized UDP packets, using a large input buffer:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i <var>input</var> -f mpegts udp://<var>hostname</var>:<var>port</var>?pkt_size=188&amp;buffer_size=65535
-</pre></td></tr></table>
-
-<p>To receive over UDP from a remote endpoint:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i udp://[<var>multicast-address</var>]:<var>port</var>
-</pre></td></tr></table>
-
-<a name="Input-Devices"></a>
-<h1 class="chapter"><a href="ffprobe.html#toc-Input-Devices">8. Input Devices</a></h1>
-
-<p>Input devices are configured elements in FFmpeg which allow to access
-the data coming from a multimedia device attached to your system.
-</p>
-<p>When you configure your FFmpeg build, all the supported input devices
-are enabled by default. You can list all available ones using the
-configure option &quot;&ndash;list-indevs&quot;.
-</p>
-<p>You can disable all the input devices using the configure option
-&quot;&ndash;disable-indevs&quot;, and selectively enable an input device using the
-option &quot;&ndash;enable-indev=<var>INDEV</var>&quot;, or you can disable a particular
-input device using the option &quot;&ndash;disable-indev=<var>INDEV</var>&quot;.
-</p>
-<p>The option &quot;-formats&quot; of the ff* tools will display the list of
-supported input devices (amongst the demuxers).
-</p>
-<p>A description of the currently available input devices follows.
-</p>
-<a name="alsa"></a>
-<h2 class="section"><a href="ffprobe.html#toc-alsa">8.1 alsa</a></h2>
-
-<p>ALSA (Advanced Linux Sound Architecture) input device.
-</p>
-<p>To enable this input device during configuration you need libasound
-installed on your system.
-</p>
-<p>This device allows capturing from an ALSA device. The name of the
-device to capture has to be an ALSA card identifier.
-</p>
-<p>An ALSA identifier has the syntax:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">hw:<var>CARD</var>[,<var>DEV</var>[,<var>SUBDEV</var>]]
-</pre></td></tr></table>
-
-<p>where the <var>DEV</var> and <var>SUBDEV</var> components are optional.
-</p>
-<p>The three arguments (in order: <var>CARD</var>,<var>DEV</var>,<var>SUBDEV</var>)
-specify card number or identifier, device number and subdevice number
-(-1 means any).
-</p>
-<p>To see the list of cards currently recognized by your system check the
-files &lsquo;<tt>/proc/asound/cards</tt>&rsquo; and &lsquo;<tt>/proc/asound/devices</tt>&rsquo;.
-</p>
-<p>For example to capture with &lsquo;<tt>ffmpeg</tt>&rsquo; from an ALSA device with
-card id 0, you may run the command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f alsa -i hw:0 alsaout.wav
-</pre></td></tr></table>
-
-<p>For more information see:
-<a href="http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html">http://www.alsa-project.org/alsa-doc/alsa-lib/pcm.html</a>
-</p>
-<a name="bktr"></a>
-<h2 class="section"><a href="ffprobe.html#toc-bktr">8.2 bktr</a></h2>
-
-<p>BSD video input device.
-</p>
-<a name="dv1394"></a>
-<h2 class="section"><a href="ffprobe.html#toc-dv1394">8.3 dv1394</a></h2>
-
-<p>Linux DV 1394 input device.
-</p>
-<a name="fbdev"></a>
-<h2 class="section"><a href="ffprobe.html#toc-fbdev">8.4 fbdev</a></h2>
-
-<p>Linux framebuffer input device.
-</p>
-<p>The Linux framebuffer is a graphic hardware-independent abstraction
-layer to show graphics on a computer monitor, typically on the
-console. It is accessed through a file device node, usually
-&lsquo;<tt>/dev/fb0</tt>&rsquo;.
-</p>
-<p>For more detailed information read the file
-Documentation/fb/framebuffer.txt included in the Linux source tree.
-</p>
-<p>To record from the framebuffer device &lsquo;<tt>/dev/fb0</tt>&rsquo; with
-&lsquo;<tt>ffmpeg</tt>&rsquo;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f fbdev -r 10 -i /dev/fb0 out.avi
-</pre></td></tr></table>
-
-<p>You can take a single screenshot image with the command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f fbdev -vframes 1 -r 1 -i /dev/fb0 screenshot.jpeg
-</pre></td></tr></table>
-
-<p>See also <a href="http://linux-fbdev.sourceforge.net/">http://linux-fbdev.sourceforge.net/</a>, and fbset(1).
+</dd>
+<dt> &lsquo;<samp>print_section, p</samp>&rsquo;</dt>
+<dd><p>Print the section name at the begin of each line if the value is
+<code>1</code>, disable it with value set to <code>0</code>. Default value is
+<code>1</code>.
 </p>
-<a name="jack"></a>
-<h2 class="section"><a href="ffprobe.html#toc-jack">8.5 jack</a></h2>
+</dd>
+</dl>
 
-<p>JACK input device.
+<a name="flat"></a>
+<h2 class="section"><a href="ffprobe.html#toc-flat">4.3 flat</a></h2>
+<p>Flat format.
 </p>
-<p>To enable this input device during configuration you need libjack
-installed on your system.
+<p>A free-form output where each line contains an explicit key=value, such as
+&quot;streams.stream.3.tags.foo=bar&quot;. The output is shell escaped, so it can be
+directly embedded in sh scripts as long as the separator character is an
+alphanumeric character or an underscore (see <var>sep_char</var> option).
 </p>
-<p>A JACK input device creates one or more JACK writable clients, one for
-each audio channel, with name <var>client_name</var>:input_<var>N</var>, where
-<var>client_name</var> is the name provided by the application, and <var>N</var>
-is a number which identifies the channel.
-Each writable client will send the acquired data to the FFmpeg input
-device.
+<p>The description of the accepted options follows.
 </p>
-<p>Once you have created one or more JACK readable clients, you need to
-connect them to one or more JACK writable clients.
-</p>
-<p>To connect or disconnect JACK clients you can use the
-&lsquo;<tt>jack_connect</tt>&rsquo; and &lsquo;<tt>jack_disconnect</tt>&rsquo; programs, or do it
-through a graphical interface, for example with &lsquo;<tt>qjackctl</tt>&rsquo;.
+<dl compact="compact">
+<dt> &lsquo;<samp>sep_char, s</samp>&rsquo;</dt>
+<dd><p>Separator character used to separate the chapter, the section name, IDs and
+potential tags in the printed field key.
 </p>
-<p>To list the JACK clients and their properties you can invoke the command
-&lsquo;<tt>jack_lsp</tt>&rsquo;.
+<p>Default value is &rsquo;.&rsquo;.
 </p>
-<p>Follows an example which shows how to capture a JACK readable client
-with &lsquo;<tt>ffmpeg</tt>&rsquo;.
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># Create a JACK writable client with name &quot;ffmpeg&quot;.
-$ ffmpeg -f jack -i ffmpeg -y out.wav
-
-# Start the sample jack_metro readable client.
-$ jack_metro -b 120 -d 0.2 -f 4000
-
-# List the current JACK clients.
-$ jack_lsp -c
-system:capture_1
-system:capture_2
-system:playback_1
-system:playback_2
-ffmpeg:input_1
-metro:120_bpm
-
-# Connect metro to the ffmpeg writable client.
-$ jack_connect metro:120_bpm ffmpeg:input_1
-</pre></td></tr></table>
-
-<p>For more information read:
-<a href="http://jackaudio.org/">http://jackaudio.org/</a>
+</dd>
+<dt> &lsquo;<samp>hierarchical, h</samp>&rsquo;</dt>
+<dd><p>Specify if the section name specification should be hierarchical. If
+set to 1, and if there is more than one section in the current
+chapter, the section name will be prefixed by the name of the
+chapter. A value of 0 will disable this behavior.
 </p>
-<a name="lavfi"></a>
-<h2 class="section"><a href="ffprobe.html#toc-lavfi">8.6 lavfi</a></h2>
+<p>Default value is 1.
+</p></dd>
+</dl>
 
-<p>Libavfilter input virtual device.
-</p>
-<p>This input device reads data from the open output pads of a libavfilter
-filtergraph.
+<a name="ini"></a>
+<h2 class="section"><a href="ffprobe.html#toc-ini">4.4 ini</a></h2>
+<p>INI format output.
 </p>
-<p>For each filtergraph open output, the input device will create a
-corresponding stream which is mapped to the generated output. Currently
-only video data is supported. The filtergraph is specified through the
-option &lsquo;<samp>graph</samp>&rsquo;.
+<p>Print output in an INI based format.
 </p>
-<p>To enable this input device, you need to configure your build with
-<code>--enable-libavfilter</code>.
+<p>The following conventions are adopted:
 </p>
-<a name="Options-1"></a>
-<h3 class="subsection"><a href="ffprobe.html#toc-Options-1">8.6.1 Options</a></h3>
-
-<dl compact="compact">
-<dt> &lsquo;<samp>graph</samp>&rsquo;</dt>
-<dd><p>Specify the filtergraph to use as input. Each video open output must be
-labelled by a unique string of the form &quot;out<var>N</var>&quot;, where <var>N</var> is a
-number starting from 0 corresponding to the mapped input stream
-generated by the device.
-The first unlabelled output is automatically assigned to the &quot;out0&quot;
-label, but all the others need to be specified explicitely.
-</p>
-<p>If not specified defaults to the filename specified for the input
-device.
-</p></dd>
-</dl>
-
-<a name="Examples"></a>
-<h3 class="subsection"><a href="ffprobe.html#toc-Examples">8.6.2 Examples</a></h3>
-
 <ul>
 <li>
-Create a color video stream and play it back with &lsquo;<tt>ffplay</tt>&rsquo;:
-<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi -graph &quot;color=pink [out0]&quot; dummy
-</pre></td></tr></table>
-
+all key and values are UTF-8
 </li><li>
-As the previous example, but use filename for specifying the graph
-description, and omit the &quot;out0&quot; label:
-<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi color=pink
-</pre></td></tr></table>
-
+&rsquo;.&rsquo; is the subgroup separator
 </li><li>
-Create three different video test filtered sources and play them:
-<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -f lavfi -graph &quot;testsrc [out0]; testsrc,hflip [out1]; testsrc,negate [out2]&quot; test3
-</pre></td></tr></table>
+newline, &rsquo;\t&rsquo;, &rsquo;\f&rsquo;, &rsquo;\b&rsquo; and the following characters are escaped
+</li><li>
+&rsquo;\&rsquo; is the escape character
+</li><li>
+&rsquo;#&rsquo; is the comment indicator
+</li><li>
+&rsquo;=&rsquo; is the key/value separator
+</li><li>
+&rsquo;:&rsquo; is not used but usually parsed as key/value separator
 </li></ul>
 
-<a name="libdc1394"></a>
-<h2 class="section"><a href="ffprobe.html#toc-libdc1394">8.7 libdc1394</a></h2>
-
-<p>IIDC1394 input device, based on libdc1394 and libraw1394.
+<p>This writer accepts options as a list of <var>key</var>=<var>value</var> pairs,
+separated by &quot;:&quot;.
 </p>
-<a name="openal"></a>
-<h2 class="section"><a href="ffprobe.html#toc-openal">8.8 openal</a></h2>
-
-<p>The OpenAL input device provides audio capture on all systems with a
-working OpenAL 1.1 implementation.
+<p>The description of the accepted options follows.
 </p>
-<p>To enable this input device during configuration, you need OpenAL
-headers and libraries installed on your system, and need to configure
-FFmpeg with <code>--enable-openal</code>.
+<dl compact="compact">
+<dt> &lsquo;<samp>hierarchical, h</samp>&rsquo;</dt>
+<dd><p>Specify if the section name specification should be hierarchical. If
+set to 1, and if there is more than one section in the current
+chapter, the section name will be prefixed by the name of the
+chapter. A value of 0 will disable this behavior.
 </p>
-<p>OpenAL headers and libraries should be provided as part of your OpenAL
-implementation, or as an additional download (an SDK). Depending on your
-installation you may need to specify additional flags via the
-<code>--extra-cflags</code> and <code>--extra-ldflags</code> for allowing the build
-system to locate the OpenAL headers and libraries.
+<p>Default value is 1.
+</p></dd>
+</dl>
+
+<a name="json"></a>
+<h2 class="section"><a href="ffprobe.html#toc-json">4.5 json</a></h2>
+<p>JSON based format.
 </p>
-<p>An incomplete list of OpenAL implementations follows:
+<p>Each section is printed using JSON notation.
+</p>
+<p>The description of the accepted options follows.
 </p>
 <dl compact="compact">
-<dt> <strong>Creative</strong></dt>
-<dd><p>The official Windows implementation, providing hardware acceleration
-with supported devices and software fallback.
-See <a href="http://openal.org/">http://openal.org/</a>.
-</p></dd>
-<dt> <strong>OpenAL Soft</strong></dt>
-<dd><p>Portable, open source (LGPL) software implementation. Includes
-backends for the most common sound APIs on the Windows, Linux,
-Solaris, and BSD operating systems.
-See <a href="http://kcat.strangesoft.net/openal.html">http://kcat.strangesoft.net/openal.html</a>.
-</p></dd>
-<dt> <strong>Apple</strong></dt>
-<dd><p>OpenAL is part of Core Audio, the official Mac OS X Audio interface.
-See <a href="http://developer.apple.com/technologies/mac/audio-and-video.html">http://developer.apple.com/technologies/mac/audio-and-video.html</a>
+<dt> &lsquo;<samp>compact, c</samp>&rsquo;</dt>
+<dd><p>If set to 1 enable compact output, that is each section will be
+printed on a single line. Default value is 0.
 </p></dd>
 </dl>
 
-<p>This device allows to capture from an audio input device handled
-through OpenAL.
+<p>For more information about JSON, see <a href="http://www.json.org/">http://www.json.org/</a>.
 </p>
-<p>You need to specify the name of the device to capture in the provided
-filename. If the empty string is provided, the device will
-automatically select the default device. You can get the list of the
-supported devices by using the option <var>list_devices</var>.
+<a name="xml"></a>
+<h2 class="section"><a href="ffprobe.html#toc-xml">4.6 xml</a></h2>
+<p>XML based format.
 </p>
-<a name="Options"></a>
-<h3 class="subsection"><a href="ffprobe.html#toc-Options">8.8.1 Options</a></h3>
-
-<dl compact="compact">
-<dt> &lsquo;<samp>channels</samp>&rsquo;</dt>
-<dd><p>Set the number of channels in the captured audio. Only the values
-&lsquo;<samp>1</samp>&rsquo; (monaural) and &lsquo;<samp>2</samp>&rsquo; (stereo) are currently supported.
-Defaults to &lsquo;<samp>2</samp>&rsquo;.
+<p>The XML output is described in the XML schema description file
+&lsquo;<tt>ffprobe.xsd</tt>&rsquo; installed in the FFmpeg datadir.
 </p>
-</dd>
-<dt> &lsquo;<samp>sample_size</samp>&rsquo;</dt>
-<dd><p>Set the sample size (in bits) of the captured audio. Only the values
-&lsquo;<samp>8</samp>&rsquo; and &lsquo;<samp>16</samp>&rsquo; are currently supported. Defaults to
-&lsquo;<samp>16</samp>&rsquo;.
+<p>An updated version of the schema can be retrieved at the url
+<a href="http://www.ffmpeg.org/schema/ffprobe.xsd">http://www.ffmpeg.org/schema/ffprobe.xsd</a>, which redirects to the
+latest schema committed into the FFmpeg development source code tree.
 </p>
-</dd>
-<dt> &lsquo;<samp>sample_rate</samp>&rsquo;</dt>
-<dd><p>Set the sample rate (in Hz) of the captured audio.
-Defaults to &lsquo;<samp>44.1k</samp>&rsquo;.
+<p>Note that the output issued will be compliant to the
+&lsquo;<tt>ffprobe.xsd</tt>&rsquo; schema only when no special global output options
+(&lsquo;<samp>unit</samp>&rsquo;, &lsquo;<samp>prefix</samp>&rsquo;, &lsquo;<samp>byte_binary_prefix</samp>&rsquo;,
+&lsquo;<samp>sexagesimal</samp>&rsquo; etc.) are specified.
 </p>
-</dd>
-<dt> &lsquo;<samp>list_devices</samp>&rsquo;</dt>
-<dd><p>If set to &lsquo;<samp>true</samp>&rsquo;, print a list of devices and exit.
-Defaults to &lsquo;<samp>false</samp>&rsquo;.
+<p>The description of the accepted options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>fully_qualified, q</samp>&rsquo;</dt>
+<dd><p>If set to 1 specify if the output should be fully qualified. Default
+value is 0.
+This is required for generating an XML file which can be validated
+through an XSD file.
 </p>
 </dd>
+<dt> &lsquo;<samp>xsd_compliant, x</samp>&rsquo;</dt>
+<dd><p>If set to 1 perform more checks for ensuring that the output is XSD
+compliant. Default value is 0.
+This option automatically sets &lsquo;<samp>fully_qualified</samp>&rsquo; to 1.
+</p></dd>
 </dl>
 
-<a name="Examples-1"></a>
-<h3 class="subsection"><a href="ffprobe.html#toc-Examples-1">8.8.2 Examples</a></h3>
-
-<p>Print the list of OpenAL supported devices and exit:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -list_devices true -f openal -i dummy out.ogg
-</pre></td></tr></table>
-
-<p>Capture from the OpenAL device &lsquo;<tt>DR-BT101 via PulseAudio</tt>&rsquo;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out.ogg
-</pre></td></tr></table>
-
-<p>Capture from the default device (note the empty string &rdquo; as filename):
-</p><table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f openal -i '' out.ogg
-</pre></td></tr></table>
-
-<p>Capture from two devices simultaneously, writing to two different files,
-within the same &lsquo;<tt>ffmpeg</tt>&rsquo; command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">$ ffmpeg -f openal -i 'DR-BT101 via PulseAudio' out1.ogg -f openal -i 'ALSA Default' out2.ogg
-</pre></td></tr></table>
-<p>Note: not all OpenAL implementations support multiple simultaneous capture -
-try the latest OpenAL Soft if the above does not work.
+<p>For more information about the XML format, see
+<a href="http://www.w3.org/XML/">http://www.w3.org/XML/</a>.
 </p>
-<a name="oss"></a>
-<h2 class="section"><a href="ffprobe.html#toc-oss">8.9 oss</a></h2>
+<a name="Timecode"></a>
+<h1 class="chapter"><a href="ffprobe.html#toc-Timecode">5. Timecode</a></h1>
 
-<p>Open Sound System input device.
+<p><code>ffprobe</code> supports Timecode extraction:
 </p>
-<p>The filename to provide to the input device is the device node
-representing the OSS input device, and is usually set to
-&lsquo;<tt>/dev/dsp</tt>&rsquo;.
-</p>
-<p>For example to grab from &lsquo;<tt>/dev/dsp</tt>&rsquo; using &lsquo;<tt>ffmpeg</tt>&rsquo; use the
-command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f oss -i /dev/dsp /tmp/oss.wav
-</pre></td></tr></table>
-
-<p>For more information about OSS see:
-<a href="http://manuals.opensound.com/usersguide/dsp.html">http://manuals.opensound.com/usersguide/dsp.html</a>
-</p>
-<a name="sndio"></a>
-<h2 class="section"><a href="ffprobe.html#toc-sndio">8.10 sndio</a></h2>
-
-<p>sndio input device.
-</p>
-<p>To enable this input device during configuration you need libsndio
-installed on your system.
-</p>
-<p>The filename to provide to the input device is the device node
-representing the sndio input device, and is usually set to
-&lsquo;<tt>/dev/audio0</tt>&rsquo;.
-</p>
-<p>For example to grab from &lsquo;<tt>/dev/audio0</tt>&rsquo; using &lsquo;<tt>ffmpeg</tt>&rsquo; use the
-command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f sndio -i /dev/audio0 /tmp/oss.wav
-</pre></td></tr></table>
+<ul>
+<li>
+MPEG1/2 timecode is extracted from the GOP, and is available in the video
+stream details (&lsquo;<samp>-show_streams</samp>&rsquo;, see <var>timecode</var>).
 
-<a name="video4linux-and-video4linux2"></a>
-<h2 class="section"><a href="ffprobe.html#toc-video4linux-and-video4linux2">8.11 video4linux and video4linux2</a></h2>
+</li><li>
+MOV timecode is extracted from tmcd track, so is available in the tmcd
+stream metadata (&lsquo;<samp>-show_streams</samp>&rsquo;, see <var>TAG:timecode</var>).
 
-<p>Video4Linux and Video4Linux2 input video devices.
-</p>
-<p>The name of the device to grab is a file device node, usually Linux
-systems tend to automatically create such nodes when the device
-(e.g. an USB webcam) is plugged into the system, and has a name of the
-kind &lsquo;<tt>/dev/video<var>N</var></tt>&rsquo;, where <var>N</var> is a number associated to
-the device.
-</p>
-<p>Video4Linux and Video4Linux2 devices only support a limited set of
-<var>width</var>x<var>height</var> sizes and framerates. You can check which are
-supported for example with the command &lsquo;<tt>dov4l</tt>&rsquo; for Video4Linux
-devices and the command &lsquo;<tt>v4l-info</tt>&rsquo; for Video4Linux2 devices.
-</p>
-<p>If the size for the device is set to 0x0, the input device will
-try to autodetect the size to use.
-Only for the video4linux2 device, if the frame rate is set to 0/0 the
-input device will use the frame rate value already set in the driver.
-</p>
-<p>Video4Linux support is deprecated since Linux 2.6.30, and will be
-dropped in later versions.
-</p>
-<p>Follow some usage examples of the video4linux devices with the ff*
-tools.
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># Grab and show the input of a video4linux device, frame rate is set
-# to the default of 25/1.
-ffplay -s 320x240 -f video4linux /dev/video0
+</li><li>
+DV, GXF and AVI timecodes are available in format metadata
+(&lsquo;<samp>-show_format</samp>&rsquo;, see <var>TAG:timecode</var>).
 
-# Grab and show the input of a video4linux2 device, autoadjust size.
-ffplay -f video4linux2 /dev/video0
+</li></ul>
 
-# Grab and record the input of a video4linux2 device, autoadjust size,
-# frame rate value defaults to 0/0 so it is read from the video4linux2
-# driver.
-ffmpeg -f video4linux2 -i /dev/video0 out.mpeg
-</pre></td></tr></table>
 
-<a name="vfwcap"></a>
-<h2 class="section"><a href="ffprobe.html#toc-vfwcap">8.12 vfwcap</a></h2>
+<a name="See-Also"></a>
+<h1 class="chapter"><a href="ffprobe.html#toc-See-Also">6. See Also</a></h1>
 
-<p>VfW (Video for Windows) capture input device.
+<p><a href="ffprobe-all.html">ffprobe-all</a>,
+<a href="ffmpeg.html">ffmpeg</a>, <a href="ffplay.html">ffplay</a>, <a href="ffserver.html">ffserver</a>,
+<a href="ffmpeg-utils.html">ffmpeg-utils</a>,
+<a href="ffmpeg-scaler.html">ffmpeg-scaler</a>,
+<a href="ffmpeg-resampler.html">ffmpeg-resampler</a>,
+<a href="ffmpeg-codecs.html">ffmpeg-codecs</a>,
+<a href="ffmpeg-bitstream-filters.html">ffmpeg-bitstream-filters</a>,
+<a href="ffmpeg-formats.html">ffmpeg-formats</a>,
+<a href="ffmpeg-devices.html">ffmpeg-devices</a>,
+<a href="ffmpeg-protocols.html">ffmpeg-protocols</a>,
+<a href="ffmpeg-filters.html">ffmpeg-filters</a>
 </p>
-<p>The filename passed as input is the capture driver number, ranging from
-0 to 9. You may use &quot;list&quot; as filename to print a list of drivers. Any
-other filename will be interpreted as device number 0.
-</p>
-<a name="x11grab"></a>
-<h2 class="section"><a href="ffprobe.html#toc-x11grab">8.13 x11grab</a></h2>
 
-<p>X11 video input device.
-</p>
-<p>This device allows to capture a region of an X11 display.
-</p>
-<p>The filename passed as input has the syntax:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">[<var>hostname</var>]:<var>display_number</var>.<var>screen_number</var>[+<var>x_offset</var>,<var>y_offset</var>]
-</pre></td></tr></table>
+<a name="Authors"></a>
+<h1 class="chapter"><a href="ffprobe.html#toc-Authors">7. Authors</a></h1>
 
-<p><var>hostname</var>:<var>display_number</var>.<var>screen_number</var> specifies the
-X11 display name of the screen to grab from. <var>hostname</var> can be
-ommitted, and defaults to &quot;localhost&quot;. The environment variable
-<code>DISPLAY</code> contains the default display name.
-</p>
-<p><var>x_offset</var> and <var>y_offset</var> specify the offsets of the grabbed
-area with respect to the top-left border of the X11 screen. They
-default to 0.
+<p>The FFmpeg developers.
 </p>
-<p>Check the X11 documentation (e.g. man X) for more detailed information.
+<p>For details about the authorship, see the Git history of the project
+(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
+<code>git log</code> in the FFmpeg source directory, or browsing the
+online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
 </p>
-<p>Use the &lsquo;<tt>dpyinfo</tt>&rsquo; program for getting basic information about the
-properties of your X11 display (e.g. grep for &quot;name&quot; or &quot;dimensions&quot;).
-</p>
-<p>For example to grab from &lsquo;<tt>:0.0</tt>&rsquo; using &lsquo;<tt>ffmpeg</tt>&rsquo;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -r 25 -s cif -i :0.0 out.mpg
-
-# Grab at position 10,20.
-ffmpeg -f x11grab -r 25 -s cif -i :0.0+10,20 out.mpg
-</pre></td></tr></table>
-
-<a name="follow_005fmouse-AVOption"></a>
-<h3 class="subsection"><a href="ffprobe.html#toc-follow_005fmouse-AVOption">8.13.1 <var>follow_mouse</var> AVOption</a></h3>
-
-<p>The syntax is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">-follow_mouse centered|<var>PIXELS</var>
-</pre></td></tr></table>
-
-<p>When it is specified with &quot;centered&quot;, the grabbing region follows the mouse
-pointer and keeps the pointer at the center of region; otherwise, the region
-follows only when the mouse pointer reaches within <var>PIXELS</var> (greater than
-zero) to the edge of region.
+<p>Maintainers for the specific components are listed in the file
+&lsquo;<tt>MAINTAINERS</tt>&rsquo; in the source code tree.
 </p>
-<p>For example:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -follow_mouse centered -r 25 -s cif -i :0.0 out.mpg
 
-# Follows only when the mouse pointer reaches within 100 pixels to edge
-ffmpeg -f x11grab -follow_mouse 100 -r 25 -s cif -i :0.0 out.mpg
-</pre></td></tr></table>
-
-<a name="show_005fregion-AVOption"></a>
-<h3 class="subsection"><a href="ffprobe.html#toc-show_005fregion-AVOption">8.13.2 <var>show_region</var> AVOption</a></h3>
-
-<p>The syntax is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">-show_region 1
-</pre></td></tr></table>
-
-<p>If <var>show_region</var> AVOption is specified with <var>1</var>, then the grabbing
-region will be indicated on screen. With this option, it&rsquo;s easy to know what is
-being grabbed if only a portion of the screen is grabbed.
-</p>
-<p>For example:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f x11grab -show_region 1 -r 25 -s cif -i :0.0+10,20 out.mpg
-
-# With follow_mouse
-ffmpeg -f x11grab -follow_mouse centered -show_region 1  -r 25 -s cif -i :0.0 out.mpg
-</pre></td></tr></table>
-
-
-
-<hr size="1">
-<p>
- <font size="-1">
-  This document was generated by <em>Kyle Schwarz</em> on <em>September 2, 2011</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.
- </font>
- <br>
-
-</p>
-</body>
-</html>
+<footer class="footer pagination-right">
+<span class="label label-info">This document was generated by <em>Kyle Schwarz</em> on <em>December 14, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
index 5b9ee34b1425ae7a94d1a1601a2d5471c8d49dcf..1ebcf042bb5442478eac5a6fec3dfabd3bb195d0 100644 (file)
@@ -1,6 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<!DOCTYPE html>
 <html>
-<!-- Created on September 2, 2011 by texi2html 1.82
+<!-- Created on December 14, 2013 by texi2html 1.82 -->
+<!--
 texi2html was written by: 
             Lionel Cons <Lionel.Cons@cern.ch> (original author)
             Karl Berry  <karl@freefriends.org>
@@ -8,38 +9,22 @@ texi2html was written by:
             and many others.
 Maintained by: Many creative people.
 Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
 -->
 <head>
-<title>General Documentation</title>
+<title>FFmpeg documentation : General </title>
 
-<meta name="description" content="General Documentation">
-<meta name="keywords" content="General Documentation">
-<meta name="resource-type" content="document">
-<meta name="distribution" content="global">
+<meta name="description" content="General Documentation: ">
+<meta name="keywords" content="FFmpeg documentation : General ">
 <meta name="Generator" content="texi2html 1.82">
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<style type="text/css">
-<!--
-a.summary-letter {text-decoration: none}
-blockquote.smallquotation {font-size: smaller}
-pre.display {font-family: serif}
-pre.format {font-family: serif}
-pre.menu-comment {font-family: serif}
-pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: serif; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: serif; font-size: smaller}
-pre.smalllisp {font-size: smaller}
-span.roman {font-family:serif; font-weight:normal;}
-span.sansserif {font-family:sans-serif; font-weight:normal;}
-ul.toc {list-style: none}
--->
-</style>
-
+<link rel="stylesheet" type="text/css" href="default.css" />
 
+<link rel="icon" href="favicon.png" type="image/png" />
 </head>
-
-<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<body>
+<div id="container">
+<div id="body">
 
 <a name="SEC_Top"></a>
 <h1 class="settitle">General Documentation</h1>
@@ -49,11 +34,25 @@ ul.toc {list-style: none}
 <div class="contents">
 
 <ul class="toc">
-  <li><a name="toc-external-libraries" href="#external-libraries">1. external libraries</a>
+  <li><a name="toc-External-libraries" href="#External-libraries">1. External libraries</a>
   <ul class="toc">
-    <li><a name="toc-OpenCORE-AMR" href="#OpenCORE-AMR">1.1 OpenCORE AMR</a></li>
+    <li><a name="toc-OpenJPEG" href="#OpenJPEG">1.1 OpenJPEG</a></li>
+    <li><a name="toc-OpenCORE_002c-VisualOn_002c-and-Fraunhofer-libraries" href="#OpenCORE_002c-VisualOn_002c-and-Fraunhofer-libraries">1.2 OpenCORE, VisualOn, and Fraunhofer libraries</a>
+    <ul class="toc">
+      <li><a name="toc-OpenCORE-AMR" href="#OpenCORE-AMR">1.2.1 OpenCORE AMR</a></li>
+      <li><a name="toc-VisualOn-AAC-encoder-library" href="#VisualOn-AAC-encoder-library">1.2.2 VisualOn AAC encoder library</a></li>
+      <li><a name="toc-VisualOn-AMR_002dWB-encoder-library" href="#VisualOn-AMR_002dWB-encoder-library">1.2.3 VisualOn AMR-WB encoder library</a></li>
+      <li><a name="toc-Fraunhofer-AAC-library" href="#Fraunhofer-AAC-library">1.2.4 Fraunhofer AAC library</a></li>
+    </ul></li>
+    <li><a name="toc-LAME" href="#LAME">1.3 LAME</a></li>
+    <li><a name="toc-TwoLAME" href="#TwoLAME">1.4 TwoLAME</a></li>
+    <li><a name="toc-libvpx" href="#libvpx">1.5 libvpx</a></li>
+    <li><a name="toc-libwavpack" href="#libwavpack">1.6 libwavpack</a></li>
+    <li><a name="toc-x264" href="#x264">1.7 x264</a></li>
+    <li><a name="toc-libilbc" href="#libilbc">1.8 libilbc</a></li>
+    <li><a name="toc-libzvbi" href="#libzvbi">1.9 libzvbi</a></li>
   </ul></li>
-  <li><a name="toc-Supported-File-Formats-and-Codecs" href="#Supported-File-Formats-and-Codecs">2. Supported File Formats and Codecs</a>
+  <li><a name="toc-Supported-File-Formats_002c-Codecs-or-Features" href="#Supported-File-Formats_002c-Codecs-or-Features">2. Supported File Formats, Codecs or Features</a>
   <ul class="toc">
     <li><a name="toc-File-Formats" href="#File-Formats">2.1 File Formats</a></li>
     <li><a name="toc-Image-Formats" href="#Image-Formats">2.2 Image Formats</a></li>
@@ -62,62 +61,165 @@ ul.toc {list-style: none}
     <li><a name="toc-Subtitle-Formats" href="#Subtitle-Formats">2.5 Subtitle Formats</a></li>
     <li><a name="toc-Network-Protocols" href="#Network-Protocols">2.6 Network Protocols</a></li>
     <li><a name="toc-Input_002fOutput-Devices" href="#Input_002fOutput-Devices">2.7 Input/Output Devices</a></li>
-  </ul></li>
-  <li><a name="toc-Platform-Specific-information" href="#Platform-Specific-information">3. Platform Specific information</a>
-  <ul class="toc">
-    <li><a name="toc-DOS" href="#DOS">3.1 DOS</a></li>
-    <li><a name="toc-OS_002f2" href="#OS_002f2">3.2 OS/2</a></li>
-    <li><a name="toc-Unix_002dlike" href="#Unix_002dlike">3.3 Unix-like</a>
-    <ul class="toc">
-      <li><a name="toc-BSD" href="#BSD">3.3.1 BSD</a></li>
-      <li><a name="toc-_0028Open_0029Solaris" href="#g_t_0028Open_0029Solaris">3.3.2 (Open)Solaris</a></li>
-      <li><a name="toc-Darwin-_0028MacOS-X_002c-iPhone_0029" href="#Darwin-_0028MacOS-X_002c-iPhone_0029">3.3.3 Darwin (MacOS X, iPhone)</a></li>
-    </ul></li>
-    <li><a name="toc-Windows" href="#Windows">3.4 Windows</a>
-    <ul class="toc">
-      <li><a name="toc-Native-Windows-compilation" href="#Native-Windows-compilation">3.4.1 Native Windows compilation</a></li>
-      <li><a name="toc-Microsoft-Visual-C_002b_002b-compatibility" href="#Microsoft-Visual-C_002b_002b-compatibility">3.4.2 Microsoft Visual C++ compatibility</a>
-      <ul class="toc">
-        <li><a name="toc-Using-static-libraries" href="#Using-static-libraries">3.4.2.1 Using static libraries</a></li>
-        <li><a name="toc-Using-shared-libraries" href="#Using-shared-libraries">3.4.2.2 Using shared libraries</a></li>
-      </ul></li>
-      <li><a name="toc-Cross-compilation-for-Windows-with-Linux-1" href="#Cross-compilation-for-Windows-with-Linux-1">3.4.3 Cross compilation for Windows with Linux</a></li>
-      <li><a name="toc-Compilation-under-Cygwin" href="#Compilation-under-Cygwin">3.4.4 Compilation under Cygwin</a></li>
-      <li><a name="toc-Crosscompilation-for-Windows-under-Cygwin" href="#Crosscompilation-for-Windows-under-Cygwin">3.4.5 Crosscompilation for Windows under Cygwin</a></li>
-    </ul>
-</li>
+    <li><a name="toc-Timecode" href="#Timecode">2.8 Timecode</a></li>
   </ul>
 </li>
 </ul>
 </div>
 
-<hr size="1">
-<a name="external-libraries"></a>
-<h1 class="chapter"><a href="general.html#toc-external-libraries">1. external libraries</a></h1>
+<a name="External-libraries"></a>
+<h1 class="chapter"><a href="general.html#toc-External-libraries">1. External libraries</a></h1>
 
 <p>FFmpeg can be hooked up with a number of external libraries to add support
 for more formats. None of them are used by default, their use has to be
-explicitly requested by passing the appropriate flags to &lsquo;<tt>./configure</tt>&rsquo;.
+explicitly requested by passing the appropriate flags to
+<code>./configure</code>.
+</p>
+<a name="OpenJPEG"></a>
+<h2 class="section"><a href="general.html#toc-OpenJPEG">1.1 OpenJPEG</a></h2>
+
+<p>FFmpeg can use the OpenJPEG libraries for encoding/decoding J2K videos.  Go to
+<a href="http://www.openjpeg.org/">http://www.openjpeg.org/</a> to get the libraries and follow the installation
+instructions.  To enable using OpenJPEG in FFmpeg, pass <code>--enable-libopenjpeg</code> to
+&lsquo;<tt>./configure</tt>&rsquo;.
 </p>
+
+<a name="OpenCORE_002c-VisualOn_002c-and-Fraunhofer-libraries"></a>
+<h2 class="section"><a href="general.html#toc-OpenCORE_002c-VisualOn_002c-and-Fraunhofer-libraries">1.2 OpenCORE, VisualOn, and Fraunhofer libraries</a></h2>
+
+<p>Spun off Google Android sources, OpenCore, VisualOn and Fraunhofer
+libraries provide encoders for a number of audio codecs.
+</p>
+<div class="float alert alert-info">
+<p>OpenCORE and VisualOn libraries are under the Apache License 2.0
+(see <a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a> for details), which is
+incompatible to the LGPL version 2.1 and GPL version 2. You have to
+upgrade FFmpeg&rsquo;s license to LGPL version 3 (or if you have enabled
+GPL components, GPL version 3) by passing <code>--enable-version3</code> to configure in
+order to use it.
+</p>
+<p>The Fraunhofer AAC library is licensed under a license incompatible to the GPL
+and is not known to be compatible to the LGPL. Therefore, you have to pass
+<code>--enable-nonfree</code> to configure to use it.
+</p></div>
 <a name="OpenCORE-AMR"></a>
-<h2 class="section"><a href="general.html#toc-OpenCORE-AMR">1.1 OpenCORE AMR</a></h2>
+<h3 class="subsection"><a href="general.html#toc-OpenCORE-AMR">1.2.1 OpenCORE AMR</a></h3>
 
 <p>FFmpeg can make use of the OpenCORE libraries for AMR-NB
 decoding/encoding and AMR-WB decoding.
 </p>
-<p>Go to <a href="http://sourceforge.net/projects/opencore-amr/">http://sourceforge.net/projects/opencore-amr/</a> and follow the instructions for
-installing the libraries. Then pass <code>--enable-libopencore-amrnb</code> and/or
-<code>--enable-libopencore-amrwb</code> to configure to enable the libraries.
+<p>Go to <a href="http://sourceforge.net/projects/opencore-amr/">http://sourceforge.net/projects/opencore-amr/</a> and follow the
+instructions for installing the libraries.
+Then pass <code>--enable-libopencore-amrnb</code> and/or
+<code>--enable-libopencore-amrwb</code> to configure to enable them.
 </p>
-<p>Note that OpenCORE is under the Apache License 2.0 (see
-<a href="http://www.apache.org/licenses/LICENSE-2.0">http://www.apache.org/licenses/LICENSE-2.0</a> for details), which is
-incompatible with the LGPL version 2.1 and GPL version 2. You have to
-upgrade FFmpeg&rsquo;s license to LGPL version 3 (or if you have enabled
-GPL components, GPL version 3) to use it.
+<a name="VisualOn-AAC-encoder-library"></a>
+<h3 class="subsection"><a href="general.html#toc-VisualOn-AAC-encoder-library">1.2.2 VisualOn AAC encoder library</a></h3>
+
+<p>FFmpeg can make use of the VisualOn AACenc library for AAC encoding.
+</p>
+<p>Go to <a href="http://sourceforge.net/projects/opencore-amr/">http://sourceforge.net/projects/opencore-amr/</a> and follow the
+instructions for installing the library.
+Then pass <code>--enable-libvo-aacenc</code> to configure to enable it.
+</p>
+<a name="VisualOn-AMR_002dWB-encoder-library"></a>
+<h3 class="subsection"><a href="general.html#toc-VisualOn-AMR_002dWB-encoder-library">1.2.3 VisualOn AMR-WB encoder library</a></h3>
+
+<p>FFmpeg can make use of the VisualOn AMR-WBenc library for AMR-WB encoding.
+</p>
+<p>Go to <a href="http://sourceforge.net/projects/opencore-amr/">http://sourceforge.net/projects/opencore-amr/</a> and follow the
+instructions for installing the library.
+Then pass <code>--enable-libvo-amrwbenc</code> to configure to enable it.
 </p>
+<a name="Fraunhofer-AAC-library"></a>
+<h3 class="subsection"><a href="general.html#toc-Fraunhofer-AAC-library">1.2.4 Fraunhofer AAC library</a></h3>
 
-<a name="Supported-File-Formats-and-Codecs"></a>
-<h1 class="chapter"><a href="general.html#toc-Supported-File-Formats-and-Codecs">2. Supported File Formats and Codecs</a></h1>
+<p>FFmpeg can make use of the Fraunhofer AAC library for AAC encoding.
+</p>
+<p>Go to <a href="http://sourceforge.net/projects/opencore-amr/">http://sourceforge.net/projects/opencore-amr/</a> and follow the
+instructions for installing the library.
+Then pass <code>--enable-libfdk-aac</code> to configure to enable it.
+</p>
+<a name="LAME"></a>
+<h2 class="section"><a href="general.html#toc-LAME">1.3 LAME</a></h2>
+
+<p>FFmpeg can make use of the LAME library for MP3 encoding.
+</p>
+<p>Go to <a href="http://lame.sourceforge.net/">http://lame.sourceforge.net/</a> and follow the
+instructions for installing the library.
+Then pass <code>--enable-libmp3lame</code> to configure to enable it.
+</p>
+<a name="TwoLAME"></a>
+<h2 class="section"><a href="general.html#toc-TwoLAME">1.4 TwoLAME</a></h2>
+
+<p>FFmpeg can make use of the TwoLAME library for MP2 encoding.
+</p>
+<p>Go to <a href="http://www.twolame.org/">http://www.twolame.org/</a> and follow the
+instructions for installing the library.
+Then pass <code>--enable-libtwolame</code> to configure to enable it.
+</p>
+<a name="libvpx"></a>
+<h2 class="section"><a href="general.html#toc-libvpx">1.5 libvpx</a></h2>
+
+<p>FFmpeg can make use of the libvpx library for VP8/VP9 encoding.
+</p>
+<p>Go to <a href="http://www.webmproject.org/">http://www.webmproject.org/</a> and follow the instructions for
+installing the library. Then pass <code>--enable-libvpx</code> to configure to
+enable it.
+</p>
+<a name="libwavpack"></a>
+<h2 class="section"><a href="general.html#toc-libwavpack">1.6 libwavpack</a></h2>
+
+<p>FFmpeg can make use of the libwavpack library for WavPack encoding.
+</p>
+<p>Go to <a href="http://www.wavpack.com/">http://www.wavpack.com/</a> and follow the instructions for
+installing the library. Then pass <code>--enable-libwavpack</code> to configure to
+enable it.
+</p>
+<a name="x264"></a>
+<h2 class="section"><a href="general.html#toc-x264">1.7 x264</a></h2>
+
+<p>FFmpeg can make use of the x264 library for H.264 encoding.
+</p>
+<p>Go to <a href="http://www.videolan.org/developers/x264.html">http://www.videolan.org/developers/x264.html</a> and follow the
+instructions for installing the library. Then pass <code>--enable-libx264</code> to
+configure to enable it.
+</p>
+<div class="float alert alert-info">
+<p>x264 is under the GNU Public License Version 2 or later
+(see <a href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html">http://www.gnu.org/licenses/old-licenses/gpl-2.0.html</a> for
+details), you must upgrade FFmpeg&rsquo;s license to GPL in order to use it.
+</p></div>
+<a name="libilbc"></a>
+<h2 class="section"><a href="general.html#toc-libilbc">1.8 libilbc</a></h2>
+
+<p>iLBC is a narrowband speech codec that has been made freely available
+by Google as part of the WebRTC project. libilbc is a packaging friendly
+copy of the iLBC codec. FFmpeg can make use of the libilbc library for
+iLBC encoding and decoding.
+</p>
+<p>Go to <a href="https://github.com/dekkers/libilbc">https://github.com/dekkers/libilbc</a> and follow the instructions for
+installing the library. Then pass <code>--enable-libilbc</code> to configure to
+enable it.
+</p>
+<a name="libzvbi"></a>
+<h2 class="section"><a href="general.html#toc-libzvbi">1.9 libzvbi</a></h2>
+
+<p>libzvbi is a VBI decoding library which can be used by FFmpeg to decode DVB
+teletext pages and DVB teletext subtitles.
+</p>
+<p>Go to <a href="http://sourceforge.net/projects/zapping/">http://sourceforge.net/projects/zapping/</a> and follow the instructions for
+installing the library. Then pass <code>--enable-libzvbi</code> to configure to
+enable it.
+</p>
+<div class="float alert alert-info">
+<p>libzvbi is licensed under the GNU General Public License Version 2 or later
+(see <a href="http://www.gnu.org/licenses/old-licenses/gpl-2.0.html">http://www.gnu.org/licenses/old-licenses/gpl-2.0.html</a> for details),
+you must upgrade FFmpeg&rsquo;s license to GPL in order to use it.
+</p></div>
+
+<a name="Supported-File-Formats_002c-Codecs-or-Features"></a>
+<h1 class="chapter"><a href="general.html#toc-Supported-File-Formats_002c-Codecs-or-Features">2. Supported File Formats, Codecs or Features</a></h1>
 
 <p>You can use the <code>-formats</code> and <code>-codecs</code> options to have an exhaustive list.
 </p>
@@ -131,24 +233,36 @@ library:
 <tr><td width="40%">Name</td><td width="10%">Encoding</td><td width="10%">Decoding</td><td width="40%">Comments</td></tr>
 <tr><td width="40%">4xm</td><td width="10%"></td><td width="10%">X</td><td width="40%">4X Technologies format, used in some games.</td></tr>
 <tr><td width="40%">8088flex TMV</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">ACT Voice</td><td width="10%"></td><td width="10%">X</td><td width="40%">contains G.729 audio</td></tr>
 <tr><td width="40%">Adobe Filmstrip</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">Audio IFF (AIFF)</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">American Laser Games MM</td><td width="10%"></td><td width="10%">X</td><td width="40%">Multimedia format used in games like Mad Dog McCree.</td></tr>
 <tr><td width="40%">3GPP AMR</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">Amazing Studio Packed Animation File</td><td width="10%"></td><td width="10%">X</td><td width="40%">Multimedia format used in game Heart Of Darkness.</td></tr>
 <tr><td width="40%">Apple HTTP Live Streaming</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">Artworx Data Format</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">ADP</td><td width="10%"></td><td width="10%">X</td><td width="40%">Audio format used on the Nintendo Gamecube.</td></tr>
+<tr><td width="40%">AFC</td><td width="10%"></td><td width="10%">X</td><td width="40%">Audio format used on the Nintendo Gamecube.</td></tr>
 <tr><td width="40%">ASF</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">AST</td><td width="10%">X</td><td width="10%">X</td><td width="40%">Audio format used on the Nintendo Wii.</td></tr>
 <tr><td width="40%">AVI</td><td width="10%">X</td><td width="10%">X</td></tr>
-<tr><td width="40%">AVISynth</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">AviSynth</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">AVR</td><td width="10%"></td><td width="10%">X</td><td width="40%">Audio format used on Mac.</td></tr>
 <tr><td width="40%">AVS</td><td width="10%"></td><td width="10%">X</td><td width="40%">Multimedia format used by the Creature Shock game.</td></tr>
 <tr><td width="40%">Beam Software SIFF</td><td width="10%"></td><td width="10%">X</td><td width="40%">Audio and video format used in some games by Beam Software.</td></tr>
 <tr><td width="40%">Bethesda Softworks VID</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in some games from Bethesda Softworks.</td></tr>
+<tr><td width="40%">Binary text</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Bink</td><td width="10%"></td><td width="10%">X</td><td width="40%">Multimedia format used by many games.</td></tr>
 <tr><td width="40%">Bitmap Brothers JV</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in Z and Z95 games.</td></tr>
 <tr><td width="40%">Brute Force &amp; Ignorance</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in the game Flash Traffic: City of Angels.</td></tr>
+<tr><td width="40%">BRSTM</td><td width="10%"></td><td width="10%">X</td><td width="40%">Audio format used on the Nintendo Wii.</td></tr>
 <tr><td width="40%">BWF</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">CRI ADX</td><td width="10%">X</td><td width="10%">X</td><td width="40%">Audio-only format used in console video games.</td></tr>
+<tr><td width="40%">Discworld II BMV</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Interplay C93</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in the game Cyberia from Interplay.</td></tr>
 <tr><td width="40%">Delphine Software International CIN</td><td width="10%"></td><td width="10%">X</td><td width="40%">Multimedia format used by Delphine Software games.</td></tr>
 <tr><td width="40%">CD+G</td><td width="10%"></td><td width="10%">X</td><td width="40%">Video format used by CD+G karaoke disks</td></tr>
+<tr><td width="40%">Commodore CDXL</td><td width="10%"></td><td width="10%">X</td><td width="40%">Amiga CD video format</td></tr>
 <tr><td width="40%">Core Audio Format</td><td width="10%">X</td><td width="10%">X</td><td width="40%">Apple Core Audio Format</td></tr>
 <tr><td width="40%">CRC testing format</td><td width="10%">X</td><td width="10%"></td></tr>
 <tr><td width="40%">Creative Voice</td><td width="10%">X</td><td width="10%">X</td><td width="40%">Created for the Sound Blaster Pro.</td></tr>
@@ -161,6 +275,7 @@ library:
          game and different game cutscenes repacked for use with ScummVM.</td></tr>
 <tr><td width="40%">Electronic Arts cdata</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Electronic Arts Multimedia</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in various EA games; files have extensions like WVE and UV2.</td></tr>
+<tr><td width="40%">Ensoniq Paris Audio File</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">FFM (FFserver live feed)</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">Flash (SWF)</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">Flash 9 (AVM2)</td><td width="10%">X</td><td width="10%">X</td><td width="40%">Only embedded audio is decoded.</td></tr>
@@ -168,24 +283,36 @@ library:
 <tr><td width="40%">Flash Video (FLV)</td><td width="10%">X</td><td width="10%">X</td><td width="40%">Macromedia Flash video files</td></tr>
 <tr><td width="40%">framecrc testing format</td><td width="10%">X</td><td width="10%"></td></tr>
 <tr><td width="40%">FunCom ISS</td><td width="10%"></td><td width="10%">X</td><td width="40%">Audio format used in various games from FunCom like The Longest Journey.</td></tr>
-<tr><td width="40%">GIF Animation</td><td width="10%">X</td><td width="10%"></td></tr>
+<tr><td width="40%">G.723.1</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">G.729 BIT</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">G.729 raw</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">GIF Animation</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">GXF</td><td width="10%">X</td><td width="10%">X</td><td width="40%">General eXchange Format SMPTE 360M, used by Thomson Grass Valley
          playout servers.</td></tr>
+<tr><td width="40%">HNM</td><td width="10%"></td><td width="10%">X</td><td width="40%">Only version 4 supported, used in some games from Cryo Interactive</td></tr>
+<tr><td width="40%">iCEDraw File</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">ICO</td><td width="10%">X</td><td width="10%">X</td><td width="40%">Microsoft Windows ICO</td></tr>
 <tr><td width="40%">id Quake II CIN video</td><td width="10%"></td><td width="10%">X</td></tr>
-<tr><td width="40%">id RoQ</td><td width="10%">X</td><td width="10%">X</td><td width="40%">Used in Quake III, Jedi Knight 2, other computer games.</td></tr>
+<tr><td width="40%">id RoQ</td><td width="10%">X</td><td width="10%">X</td><td width="40%">Used in Quake III, Jedi Knight 2 and other computer games.</td></tr>
 <tr><td width="40%">IEC61937 encapsulation</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">IFF</td><td width="10%"></td><td width="10%">X</td><td width="40%">Interchange File Format</td></tr>
+<tr><td width="40%">iLBC</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">Interplay MVE</td><td width="10%"></td><td width="10%">X</td><td width="40%">Format used in various Interplay computer games.</td></tr>
 <tr><td width="40%">IV8</td><td width="10%"></td><td width="10%">X</td><td width="40%">A format generated by IndigoVision 8000 video server.</td></tr>
 <tr><td width="40%">IVF (On2)</td><td width="10%">X</td><td width="10%">X</td><td width="40%">A format used by libvpx</td></tr>
+<tr><td width="40%">IRCAM</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">LATM</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">LMLM4</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used by Linux Media Labs MPEG-4 PCI boards</td></tr>
 <tr><td width="40%">LOAS</td><td width="10%"></td><td width="10%">X</td><td width="40%">contains LATM multiplexed AAC audio</td></tr>
+<tr><td width="40%">LVF</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">LXF</td><td width="10%"></td><td width="10%">X</td><td width="40%">VR native stream format, used by Leitch/Harris&rsquo; video servers.</td></tr>
 <tr><td width="40%">Matroska</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">Matroska audio</td><td width="10%">X</td><td width="10%"></td></tr>
 <tr><td width="40%">FFmpeg metadata</td><td width="10%">X</td><td width="10%">X</td><td width="40%">Metadata in text format.</td></tr>
 <tr><td width="40%">MAXIS XA</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in Sim City 3000; file extension .xa.</td></tr>
 <tr><td width="40%">MD Studio</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">Metal Gear Solid: The Twin Snakes</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">Megalux Frame</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used by Megalux Ultimate Paint</td></tr>
 <tr><td width="40%">Mobotix .mxg</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Monkey&rsquo;s Audio</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Motion Pixels MVI</td><td width="10%"></td><td width="10%">X</td></tr>
@@ -204,12 +331,14 @@ library:
 <tr><td width="40%">Material eXchange Format (MXF)</td><td width="10%">X</td><td width="10%">X</td><td width="40%">SMPTE 377M, used by D-Cinema, broadcast industry.</td></tr>
 <tr><td width="40%">Material eXchange Format (MXF), D-10 Mapping</td><td width="10%">X</td><td width="10%">X</td><td width="40%">SMPTE 386M, D-10/IMX Mapping.</td></tr>
 <tr><td width="40%">NC camera feed</td><td width="10%"></td><td width="10%">X</td><td width="40%">NC (AVIP NC4600) camera streams</td></tr>
+<tr><td width="40%">NIST SPeech HEader REsources</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">NTT TwinVQ (VQF)</td><td width="10%"></td><td width="10%">X</td><td width="40%">Nippon Telegraph and Telephone Corporation TwinVQ.</td></tr>
 <tr><td width="40%">Nullsoft Streaming Video</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">NuppelVideo</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">NUT</td><td width="10%">X</td><td width="10%">X</td><td width="40%">NUT Open Container Format</td></tr>
 <tr><td width="40%">Ogg</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">Playstation Portable PMP</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">Portable Voice Format</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">TechnoTrend PVA</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used by TechnoTrend DVB PCI boards.</td></tr>
 <tr><td width="40%">QCP</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">raw ADTS (AAC)</td><td width="10%">X</td><td width="10%">X</td></tr>
@@ -219,12 +348,14 @@ library:
 <tr><td width="40%">raw Dirac</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">raw DNxHD</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">raw DTS</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">raw DTS-HD</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">raw E-AC-3</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">raw FLAC</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">raw GSM</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">raw H.261</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">raw H.263</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">raw H.264</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">raw HEVC</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">raw Ingenient MJPEG</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">raw MJPEG</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">raw MLP</td><td width="10%"></td><td width="10%">X</td></tr>
@@ -236,8 +367,9 @@ library:
 <tr><td width="40%">raw video</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">raw id RoQ</td><td width="10%">X</td><td width="10%"></td></tr>
 <tr><td width="40%">raw Shorten</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">raw TAK</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">raw TrueHD</td><td width="10%">X</td><td width="10%">X</td></tr>
-<tr><td width="40%">raw VC-1</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">raw VC-1</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">raw PCM A-law</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">raw PCM mu-law</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">raw PCM signed 8 bit</td><td width="10%">X</td><td width="10%">X</td></tr>
@@ -262,22 +394,28 @@ library:
 <tr><td width="40%">REDCODE R3D</td><td width="10%"></td><td width="10%">X</td><td width="40%">File format used by RED Digital cameras, contains JPEG 2000 frames and PCM audio.</td></tr>
 <tr><td width="40%">RealMedia</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">Redirector</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">RedSpark</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Renderware TeXture Dictionary</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">RL2</td><td width="10%"></td><td width="10%">X</td><td width="40%">Audio and video format used in some games by Entertainment Software Partners.</td></tr>
 <tr><td width="40%">RPL/ARMovie</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Lego Mindstorms RSO</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">RSD</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">RTMP</td><td width="10%">X</td><td width="10%">X</td><td width="40%">Output is performed by publishing stream to RTMP server</td></tr>
 <tr><td width="40%">RTP</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">RTSP</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">SAP</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">SBG</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">SDP</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Sega FILM/CPK</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in many Sega Saturn console games.</td></tr>
+<tr><td width="40%">Silicon Graphics Movie</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Sierra SOL</td><td width="10%"></td><td width="10%">X</td><td width="40%">.sol files used in Sierra Online games.</td></tr>
 <tr><td width="40%">Sierra VMD</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in Sierra CD-ROM games.</td></tr>
 <tr><td width="40%">Smacker</td><td width="10%"></td><td width="10%">X</td><td width="40%">Multimedia format used by many games.</td></tr>
-<tr><td width="40%">Sony OpenMG (OMA)</td><td width="10%"></td><td width="10%">X</td><td width="40%">Audio format used in Sony Sonic Stage and Sony Vegas.</td></tr>
+<tr><td width="40%">SMJPEG</td><td width="10%">X</td><td width="10%">X</td><td width="40%">Used in certain Loki game ports.</td></tr>
+<tr><td width="40%">Smush</td><td width="10%"></td><td width="10%">X</td><td width="40%">Multimedia format used in some LucasArts games.</td></tr>
+<tr><td width="40%">Sony OpenMG (OMA)</td><td width="10%">X</td><td width="10%">X</td><td width="40%">Audio format used in Sony Sonic Stage and Sony Vegas.</td></tr>
 <tr><td width="40%">Sony PlayStation STR</td><td width="10%"></td><td width="10%">X</td></tr>
-<tr><td width="40%">Sony Wave64 (W64)</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">Sony Wave64 (W64)</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">SoX native format</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">SUN AU format</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">Text files</td><td width="10%"></td><td width="10%">X</td></tr>
@@ -285,15 +423,17 @@ library:
 <tr><td width="40%">Tiertex Limited SEQ</td><td width="10%"></td><td width="10%">X</td><td width="40%">Tiertex .seq files used in the DOS CD-ROM version of the game Flashback.</td></tr>
 <tr><td width="40%">True Audio</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">VC-1 test bitstream</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">Vivo</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">WAV</td><td width="10%">X</td><td width="10%">X</td></tr>
-<tr><td width="40%">WavPack</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">WavPack</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">WebM</td><td width="10%">X</td><td width="10%">X</td></tr>
-<tr><td width="40%">Windows Televison (WTV)</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">Windows Televison (WTV)</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">Wing Commander III movie</td><td width="10%"></td><td width="10%">X</td><td width="40%">Multimedia format used in Origin&rsquo;s Wing Commander III computer game.</td></tr>
 <tr><td width="40%">Westwood Studios audio</td><td width="10%"></td><td width="10%">X</td><td width="40%">Multimedia format used in Westwood Studios games.</td></tr>
 <tr><td width="40%">Westwood Studios VQA</td><td width="10%"></td><td width="10%">X</td><td width="40%">Multimedia format used in Westwood Studios games.</td></tr>
 <tr><td width="40%">XMV</td><td width="10%"></td><td width="10%">X</td><td width="40%">Microsoft video container used in Xbox games.</td></tr>
 <tr><td width="40%">xWMA</td><td width="10%"></td><td width="10%">X</td><td width="40%">Microsoft audio container used by XAudio 2.</td></tr>
+<tr><td width="40%">eXtended BINary text (XBIN)</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">YUV4MPEG pipe</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">Psygnosis YOP</td><td width="10%"></td><td width="10%">X</td></tr>
 </table>
@@ -309,9 +449,11 @@ following image formats are supported:
 <table>
 <tr><td width="40%">Name</td><td width="10%">Encoding</td><td width="10%">Decoding</td><td width="40%">Comments</td></tr>
 <tr><td width="40%">.Y.U.V</td><td width="10%">X</td><td width="10%">X</td><td width="40%">one raw file per component</td></tr>
-<tr><td width="40%">animated GIF</td><td width="10%">X</td><td width="10%">X</td><td width="40%">Only uncompressed GIFs are generated.</td></tr>
+<tr><td width="40%">animated GIF</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">BMP</td><td width="10%">X</td><td width="10%">X</td><td width="40%">Microsoft BMP image</td></tr>
+<tr><td width="40%">PIX</td><td width="10%"></td><td width="10%">X</td><td width="40%">PIX is an image format used in the Argonaut BRender engine.</td></tr>
 <tr><td width="40%">DPX</td><td width="10%">X</td><td width="10%">X</td><td width="40%">Digital Picture Exchange</td></tr>
+<tr><td width="40%">EXR</td><td width="10%"></td><td width="10%">X</td><td width="40%">OpenEXR</td></tr>
 <tr><td width="40%">JPEG</td><td width="10%">X</td><td width="10%">X</td><td width="40%">Progressive JPEG is not supported.</td></tr>
 <tr><td width="40%">JPEG 2000</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">JPEG-LS</td><td width="10%">X</td><td width="10%">X</td></tr>
@@ -322,13 +464,17 @@ following image formats are supported:
 <tr><td width="40%">PGM</td><td width="10%">X</td><td width="10%">X</td><td width="40%">Portable GrayMap image</td></tr>
 <tr><td width="40%">PGMYUV</td><td width="10%">X</td><td width="10%">X</td><td width="40%">PGM with U and V components in YUV 4:2:0</td></tr>
 <tr><td width="40%">PIC</td><td width="10%"></td><td width="10%">X</td><td width="40%">Pictor/PC Paint</td></tr>
-<tr><td width="40%">PNG</td><td width="10%">X</td><td width="10%">X</td><td width="40%">2/4 bpp not supported yet</td></tr>
+<tr><td width="40%">PNG</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">PPM</td><td width="10%">X</td><td width="10%">X</td><td width="40%">Portable PixelMap image</td></tr>
 <tr><td width="40%">PTX</td><td width="10%"></td><td width="10%">X</td><td width="40%">V.Flash PTX format</td></tr>
 <tr><td width="40%">SGI</td><td width="10%">X</td><td width="10%">X</td><td width="40%">SGI RGB image format</td></tr>
-<tr><td width="40%">Sun Rasterfile</td><td width="10%"></td><td width="10%">X</td><td width="40%">Sun RAS image format</td></tr>
+<tr><td width="40%">Sun Rasterfile</td><td width="10%">X</td><td width="10%">X</td><td width="40%">Sun RAS image format</td></tr>
 <tr><td width="40%">TIFF</td><td width="10%">X</td><td width="10%">X</td><td width="40%">YUV, JPEG and some extension is not supported yet.</td></tr>
 <tr><td width="40%">Truevision Targa</td><td width="10%">X</td><td width="10%">X</td><td width="40%">Targa (.TGA) image format</td></tr>
+<tr><td width="40%">WebP</td><td width="10%"></td><td width="10%">X</td><td width="40%">WebP image format</td></tr>
+<tr><td width="40%">XBM</td><td width="10%">X</td><td width="10%">X</td><td width="40%">X BitMap image format</td></tr>
+<tr><td width="40%">XFace</td><td width="10%">X</td><td width="10%">X</td><td width="40%">X-Face image format</td></tr>
+<tr><td width="40%">XWD</td><td width="10%">X</td><td width="10%">X</td><td width="40%">X Window Dump image format</td></tr>
 </table>
 
 <p><code>X</code> means that encoding (resp. decoding) is supported.
@@ -342,13 +488,14 @@ following image formats are supported:
 <tr><td width="40%">Name</td><td width="10%">Encoding</td><td width="10%">Decoding</td><td width="40%">Comments</td></tr>
 <tr><td width="40%">4X Movie</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in certain computer games.</td></tr>
 <tr><td width="40%">8088flex TMV</td><td width="10%"></td><td width="10%">X</td></tr>
-<tr><td width="40%">8SVX exponential</td><td width="10%"></td><td width="10%">X</td></tr>
-<tr><td width="40%">8SVX fibonacci</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">A64 multicolor</td><td width="10%">X</td><td width="10%"></td><td width="40%">Creates video suitable to be played on a commodore 64 (multicolor mode).</td></tr>
+<tr><td width="40%">Amazing Studio PAF Video</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">American Laser Games MM</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in games like Mad Dog McCree.</td></tr>
-<tr><td width="40%">AMV Video</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in Chinese MP3 players.</td></tr>
+<tr><td width="40%">AMV Video</td><td width="10%">X</td><td width="10%">X</td><td width="40%">Used in Chinese MP3 players.</td></tr>
 <tr><td width="40%">ANSI/ASCII art</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">Apple Intermediate Codec</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Apple MJPEG-B</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">Apple ProRes</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">Apple QuickDraw</td><td width="10%"></td><td width="10%">X</td><td width="40%">fourcc: qdrw</td></tr>
 <tr><td width="40%">Asus v1</td><td width="10%">X</td><td width="10%">X</td><td width="40%">fourcc: ASV1</td></tr>
 <tr><td width="40%">Asus v2</td><td width="10%">X</td><td width="10%">X</td><td width="40%">fourcc: ASV2</td></tr>
@@ -358,27 +505,35 @@ following image formats are supported:
 <tr><td width="40%">Auravision Aura 2</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Autodesk Animator Flic video</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Autodesk RLE</td><td width="10%"></td><td width="10%">X</td><td width="40%">fourcc: AASC</td></tr>
+<tr><td width="40%">Avid 1:1 10-bit RGB Packer</td><td width="10%">X</td><td width="10%">X</td><td width="40%">fourcc: AVrp</td></tr>
 <tr><td width="40%">AVS (Audio Video Standard) video</td><td width="10%"></td><td width="10%">X</td><td width="40%">Video encoding used by the Creature Shock game.</td></tr>
+<tr><td width="40%">AYUV</td><td width="10%">X</td><td width="10%">X</td><td width="40%">Microsoft uncompressed packed 4:4:4:4</td></tr>
 <tr><td width="40%">Beam Software VB</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Bethesda VID video</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in some games from Bethesda Softworks.</td></tr>
 <tr><td width="40%">Bink Video</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Bitmap Brothers JV video</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">y41p Brooktree uncompressed 4:1:1 12-bit</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">Brute Force &amp; Ignorance</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in the game Flash Traffic: City of Angels.</td></tr>
 <tr><td width="40%">C93 video</td><td width="10%"></td><td width="10%">X</td><td width="40%">Codec used in Cyberia game.</td></tr>
 <tr><td width="40%">CamStudio</td><td width="10%"></td><td width="10%">X</td><td width="40%">fourcc: CSCD</td></tr>
 <tr><td width="40%">CD+G</td><td width="10%"></td><td width="10%">X</td><td width="40%">Video codec for CD+G karaoke disks</td></tr>
+<tr><td width="40%">CDXL</td><td width="10%"></td><td width="10%">X</td><td width="40%">Amiga CD video codec</td></tr>
 <tr><td width="40%">Chinese AVS video</td><td width="10%">E</td><td width="10%">X</td><td width="40%">AVS1-P2, JiZhun profile, encoding through external library libxavs</td></tr>
 <tr><td width="40%">Delphine Software International CIN video</td><td width="10%"></td><td width="10%">X</td><td width="40%">Codec used in Delphine Software International games.</td></tr>
+<tr><td width="40%">Discworld II BMV Video</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">Canopus Lossless Codec</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Cinepak</td><td width="10%"></td><td width="10%">X</td></tr>
-<tr><td width="40%">Cirrus Logic AccuPak</td><td width="10%"></td><td width="10%">X</td><td width="40%">fourcc: CLJR</td></tr>
+<tr><td width="40%">Cirrus Logic AccuPak</td><td width="10%">X</td><td width="10%">X</td><td width="40%">fourcc: CLJR</td></tr>
+<tr><td width="40%">CPiA Video Format</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Creative YUV (CYUV)</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">DFA</td><td width="10%"></td><td width="10%">X</td><td width="40%">Codec used in Chronomaster game.</td></tr>
-<tr><td width="40%">Dirac</td><td width="10%">E</td><td width="10%">E</td><td width="40%">supported through external libdirac/libschroedinger libraries</td></tr>
+<tr><td width="40%">Dirac</td><td width="10%">E</td><td width="10%">X</td><td width="40%">supported through external library libschroedinger</td></tr>
 <tr><td width="40%">Deluxe Paint Animation</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">DNxHD</td><td width="10%">X</td><td width="10%">X</td><td width="40%">aka SMPTE VC3</td></tr>
 <tr><td width="40%">Duck TrueMotion 1.0</td><td width="10%"></td><td width="10%">X</td><td width="40%">fourcc: DUCK</td></tr>
 <tr><td width="40%">Duck TrueMotion 2.0</td><td width="10%"></td><td width="10%">X</td><td width="40%">fourcc: TM20</td></tr>
 <tr><td width="40%">DV (Digital Video)</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">Dxtory capture format</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Feeble Files/ScummVM DXA</td><td width="10%"></td><td width="10%">X</td><td width="40%">Codec originally used in Feeble Files game.</td></tr>
 <tr><td width="40%">Electronic Arts CMV video</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in NHL 95 game.</td></tr>
 <tr><td width="40%">Electronic Arts Madcow video</td><td width="10%"></td><td width="10%">X</td></tr>
@@ -386,37 +541,48 @@ following image formats are supported:
 <tr><td width="40%">Electronic Arts TGQ video</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Electronic Arts TQI video</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Escape 124</td><td width="10%"></td><td width="10%">X</td></tr>
-<tr><td width="40%">FFmpeg video codec #1</td><td width="10%">X</td><td width="10%">X</td><td width="40%">experimental lossless codec (fourcc: FFV1)</td></tr>
+<tr><td width="40%">Escape 130</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">FFmpeg video codec #1</td><td width="10%">X</td><td width="10%">X</td><td width="40%">lossless codec (fourcc: FFV1)</td></tr>
 <tr><td width="40%">Flash Screen Video v1</td><td width="10%">X</td><td width="10%">X</td><td width="40%">fourcc: FSV1</td></tr>
 <tr><td width="40%">Flash Screen Video v2</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">Flash Video (FLV)</td><td width="10%">X</td><td width="10%">X</td><td width="40%">Sorenson H.263 used in Flash</td></tr>
+<tr><td width="40%">Forward Uncompressed</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Fraps</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">Go2Webinar</td><td width="10%"></td><td width="10%">X</td><td width="40%">fourcc: G2M4</td></tr>
 <tr><td width="40%">H.261</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">H.263 / H.263-1996</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">H.263+ / H.263-1998 / H.263 version 2</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10</td><td width="10%">E</td><td width="10%">X</td><td width="40%">encoding supported through external library libx264</td></tr>
-<tr><td width="40%">H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (VDPAU acceleration)</td><td width="10%">E</td><td width="10%">X</td></tr>
+<tr><td width="40%">HEVC</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">HNM version 4</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">HuffYUV</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">HuffYUV FFmpeg variant</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">IBM Ultimotion</td><td width="10%"></td><td width="10%">X</td><td width="40%">fourcc: ULTI</td></tr>
 <tr><td width="40%">id Cinematic video</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in Quake II.</td></tr>
 <tr><td width="40%">id RoQ video</td><td width="10%">X</td><td width="10%">X</td><td width="40%">Used in Quake III, Jedi Knight 2, other computer games.</td></tr>
-<tr><td width="40%">IFF ILBM</td><td width="10%"></td><td width="10%">X</td><td width="40%">IFF interlaved bitmap</td></tr>
+<tr><td width="40%">IFF ILBM</td><td width="10%"></td><td width="10%">X</td><td width="40%">IFF interleaved bitmap</td></tr>
 <tr><td width="40%">IFF ByteRun1</td><td width="10%"></td><td width="10%">X</td><td width="40%">IFF run length encoded bitmap</td></tr>
 <tr><td width="40%">Intel H.263</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Intel Indeo 2</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Intel Indeo 3</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">Intel Indeo 4</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Intel Indeo 5</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Interplay C93</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in the game Cyberia from Interplay.</td></tr>
 <tr><td width="40%">Interplay MVE video</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in Interplay .MVE files.</td></tr>
+<tr><td width="40%">J2K</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">Karl Morton&rsquo;s video codec</td><td width="10%"></td><td width="10%">X</td><td width="40%">Codec used in Worms games.</td></tr>
 <tr><td width="40%">Kega Game Video (KGV1)</td><td width="10%"></td><td width="10%">X</td><td width="40%">Kega emulator screen capture codec.</td></tr>
 <tr><td width="40%">Lagarith</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">LCL (LossLess Codec Library) MSZH</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">LCL (LossLess Codec Library) ZLIB</td><td width="10%">E</td><td width="10%">E</td></tr>
 <tr><td width="40%">LOCO</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">LucasArts Smush</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in LucasArts games.</td></tr>
 <tr><td width="40%">lossless MJPEG</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">Microsoft ATC Screen</td><td width="10%"></td><td width="10%">X</td><td width="40%">Also known as Microsoft Screen 3.</td></tr>
+<tr><td width="40%">Microsoft Expression Encoder Screen</td><td width="10%"></td><td width="10%">X</td><td width="40%">Also known as Microsoft Titanium Screen 2.</td></tr>
 <tr><td width="40%">Microsoft RLE</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">Microsoft Screen 1</td><td width="10%"></td><td width="10%">X</td><td width="40%">Also known as Windows Media Video V7 Screen.</td></tr>
+<tr><td width="40%">Microsoft Screen 2</td><td width="10%"></td><td width="10%">X</td><td width="40%">Also known as Windows Media Video V9 Screen.</td></tr>
 <tr><td width="40%">Microsoft Video 1</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Mimic</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in MSN Messenger Webcam streams.</td></tr>
 <tr><td width="40%">Miro VideoXL</td><td width="10%"></td><td width="10%">X</td><td width="40%">fourcc: VIXL</td></tr>
@@ -424,11 +590,8 @@ following image formats are supported:
 <tr><td width="40%">Mobotix MxPEG video</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Motion Pixels video</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">MPEG-1 video</td><td width="10%">X</td><td width="10%">X</td></tr>
-<tr><td width="40%">MPEG-1/2 video XvMC (X-Video Motion Compensation)</td><td width="10%"></td><td width="10%">X</td></tr>
-<tr><td width="40%">MPEG-1/2 video (VDPAU acceleration)</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">MPEG-2 video</td><td width="10%">X</td><td width="10%">X</td></tr>
-<tr><td width="40%">MPEG-4 part 2</td><td width="10%">X</td><td width="10%">X
-    &nbsp;libxvidcore can be used alternatively for encoding.</td></tr>
+<tr><td width="40%">MPEG-4 part 2</td><td width="10%">X</td><td width="10%">X</td><td width="40%">libxvidcore can be used alternatively for encoding.</td></tr>
 <tr><td width="40%">MPEG-4 part 2 Microsoft variant version 1</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">MPEG-4 part 2 Microsoft variant version 2</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">MPEG-4 part 2 Microsoft variant version 3</td><td width="10%">X</td><td width="10%">X</td></tr>
@@ -438,14 +601,16 @@ following image formats are supported:
 <tr><td width="40%">On2 VP5</td><td width="10%"></td><td width="10%">X</td><td width="40%">fourcc: VP50</td></tr>
 <tr><td width="40%">On2 VP6</td><td width="10%"></td><td width="10%">X</td><td width="40%">fourcc: VP60,VP61,VP62</td></tr>
 <tr><td width="40%">VP8</td><td width="10%">E</td><td width="10%">X</td><td width="40%">fourcc: VP80, encoding supported through external library libvpx</td></tr>
-<tr><td width="40%">planar RGB</td><td width="10%"></td><td width="10%">X</td><td width="40%">fourcc: 8BPS</td></tr>
+<tr><td width="40%">VP9</td><td width="10%">E</td><td width="10%">X</td><td width="40%">encoding supported through external library libvpx</td></tr>
+<tr><td width="40%">Pinnacle TARGA CineWave YUV16</td><td width="10%"></td><td width="10%">X</td><td width="40%">fourcc: Y216</td></tr>
+<tr><td width="40%">Prores</td><td width="10%"></td><td width="10%">X</td><td width="40%">fourcc: apch,apcn,apcs,apco</td></tr>
 <tr><td width="40%">Q-team QPEG</td><td width="10%"></td><td width="10%">X</td><td width="40%">fourccs: QPEG, Q1.0, Q1.1</td></tr>
 <tr><td width="40%">QuickTime 8BPS video</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">QuickTime Animation (RLE) video</td><td width="10%">X</td><td width="10%">X</td><td width="40%">fourcc: &rsquo;rle &rsquo;</td></tr>
 <tr><td width="40%">QuickTime Graphics (SMC)</td><td width="10%"></td><td width="10%">X</td><td width="40%">fourcc: &rsquo;smc &rsquo;</td></tr>
 <tr><td width="40%">QuickTime video (RPZA)</td><td width="10%"></td><td width="10%">X</td><td width="40%">fourcc: rpza</td></tr>
-<tr><td width="40%">R10K AJA Kona 10-bit RGB Codec</td><td width="10%"></td><td width="10%">X</td></tr>
-<tr><td width="40%">R210 Quicktime Uncompressed RGB 10-bit</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">R10K AJA Kona 10-bit RGB Codec</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">R210 Quicktime Uncompressed RGB 10-bit</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">Raw Video</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">RealVideo 1.0</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">RealVideo 2.0</td><td width="10%">X</td><td width="10%">X</td></tr>
@@ -453,7 +618,10 @@ following image formats are supported:
 <tr><td width="40%">RealVideo 4.0</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Renderware TXD (TeXture Dictionary)</td><td width="10%"></td><td width="10%">X</td><td width="40%">Texture dictionaries used by the Renderware Engine.</td></tr>
 <tr><td width="40%">RL2 video</td><td width="10%"></td><td width="10%">X</td><td width="40%">used in some games by Entertainment Software Partners</td></tr>
+<tr><td width="40%">SGI RLE 8-bit</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Sierra VMD video</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in Sierra VMD files.</td></tr>
+<tr><td width="40%">Silicon Graphics Motion Video Compressor 1 (MVC1)</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">Silicon Graphics Motion Video Compressor 2 (MVC2)</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Smacker video</td><td width="10%"></td><td width="10%">X</td><td width="40%">Video encoding used in Smacker.</td></tr>
 <tr><td width="40%">SMPTE VC-1</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Snow</td><td width="10%">X</td><td width="10%">X</td><td width="40%">experimental wavelet codec (fourcc: SNOW)</td></tr>
@@ -462,9 +630,15 @@ following image formats are supported:
 <tr><td width="40%">Sorenson Vector Quantizer 3</td><td width="10%"></td><td width="10%">X</td><td width="40%">fourcc: SVQ3</td></tr>
 <tr><td width="40%">Sunplus JPEG (SP5X)</td><td width="10%"></td><td width="10%">X</td><td width="40%">fourcc: SP5X</td></tr>
 <tr><td width="40%">TechSmith Screen Capture Codec</td><td width="10%"></td><td width="10%">X</td><td width="40%">fourcc: TSCC</td></tr>
+<tr><td width="40%">TechSmith Screen Capture Codec 2</td><td width="10%"></td><td width="10%">X</td><td width="40%">fourcc: TSC2</td></tr>
 <tr><td width="40%">Theora</td><td width="10%">E</td><td width="10%">X</td><td width="40%">encoding supported through external library libtheora</td></tr>
 <tr><td width="40%">Tiertex Limited SEQ video</td><td width="10%"></td><td width="10%">X</td><td width="40%">Codec used in DOS CD-ROM FlashBack game.</td></tr>
-<tr><td width="40%">V210 Quicktime Uncompressed 4:2:2 10-bit</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">Ut Video</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">v210 QuickTime uncompressed 4:2:2 10-bit</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">v308 QuickTime uncompressed 4:4:4</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">v408 QuickTime uncompressed 4:4:4:4</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">v410 QuickTime uncompressed 4:4:4 10-bit</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">VBLE Lossless Codec</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">VMware Screen Codec / VMware Video</td><td width="10%"></td><td width="10%">X</td><td width="40%">Codec used in videos captured by VMware.</td></tr>
 <tr><td width="40%">Westwood Studios VQA (Vector Quantized Animation) video</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Windows Media Image</td><td width="10%"></td><td width="10%">X</td></tr>
@@ -477,6 +651,8 @@ following image formats are supported:
 <tr><td width="40%">WMV7</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">YAMAHA SMAF</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">Psygnosis YOP Video</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">yuv4</td><td width="10%">X</td><td width="10%">X</td><td width="40%">libquicktime uncompressed packed 4:2:0</td></tr>
+<tr><td width="40%">ZeroCodec Lossless Video</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">ZLIB</td><td width="10%">X</td><td width="10%">X</td><td width="40%">part of LCL, encoder experimental</td></tr>
 <tr><td width="40%">Zip Motion Blocks Video</td><td width="10%">X</td><td width="10%">X</td><td width="40%">Encoder works only in PAL8.</td></tr>
 </table>
@@ -490,7 +666,9 @@ following image formats are supported:
 
 <table>
 <tr><td width="40%">Name</td><td width="10%">Encoding</td><td width="10%">Decoding</td><td width="40%">Comments</td></tr>
-<tr><td width="40%">8SVX audio</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">8SVX exponential</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">8SVX fibonacci</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">AAC+</td><td width="10%">E</td><td width="10%">X</td><td width="40%">encoding supported through external library libaacplus</td></tr>
 <tr><td width="40%">AAC</td><td width="10%">E</td><td width="10%">X</td><td width="40%">encoding supported through external library libfaac and libvo-aacenc</td></tr>
 <tr><td width="40%">AC-3</td><td width="10%">IX</td><td width="10%">X</td></tr>
 <tr><td width="40%">ADPCM 4X Movie</td><td width="10%"></td><td width="10%">X</td></tr>
@@ -513,15 +691,18 @@ following image formats are supported:
 <tr><td width="40%">ADPCM IMA WAV</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">ADPCM IMA Westwood</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">ADPCM ISS IMA</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in FunCom games.</td></tr>
+<tr><td width="40%">ADPCM IMA Dialogic</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">ADPCM IMA Duck DK3</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in some Sega Saturn console games.</td></tr>
 <tr><td width="40%">ADPCM IMA Duck DK4</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in some Sega Saturn console games.</td></tr>
+<tr><td width="40%">ADPCM IMA Radical</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">ADPCM Microsoft</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">ADPCM MS IMA</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">ADPCM Nintendo Gamecube AFC</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">ADPCM Nintendo Gamecube DTK</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">ADPCM Nintendo Gamecube THP</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">ADPCM QT IMA</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">ADPCM SEGA CRI ADX</td><td width="10%">X</td><td width="10%">X</td><td width="40%">Used in Sega Dreamcast games.</td></tr>
 <tr><td width="40%">ADPCM Shockwave Flash</td><td width="10%">X</td><td width="10%">X</td></tr>
-<tr><td width="40%">ADPCM SMJPEG IMA</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in certain Loki game ports.</td></tr>
 <tr><td width="40%">ADPCM Sound Blaster Pro 2-bit</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">ADPCM Sound Blaster Pro 2.6-bit</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">ADPCM Sound Blaster Pro 4-bit</td><td width="10%"></td><td width="10%">X</td></tr>
@@ -529,15 +710,17 @@ following image formats are supported:
 <tr><td width="40%">ADPCM Yamaha</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">AMR-NB</td><td width="10%">E</td><td width="10%">X</td><td width="40%">encoding supported through external library libopencore-amrnb</td></tr>
 <tr><td width="40%">AMR-WB</td><td width="10%">E</td><td width="10%">X</td><td width="40%">encoding supported through external library libvo-amrwbenc</td></tr>
+<tr><td width="40%">Amazing Studio PAF Audio</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Apple lossless audio</td><td width="10%">X</td><td width="10%">X</td><td width="40%">QuickTime fourcc &rsquo;alac&rsquo;</td></tr>
-<tr><td width="40%">Atrac 1</td><td width="10%"></td><td width="10%">X</td></tr>
-<tr><td width="40%">Atrac 3</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">ATRAC1</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">ATRAC3</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Bink Audio</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in Bink and Smacker files in many games.</td></tr>
-<tr><td width="40%">CELT (Opus)</td><td width="10%"></td><td width="10%">E</td><td width="40%">decoding supported through external library libcelt</td></tr>
+<tr><td width="40%">CELT</td><td width="10%"></td><td width="10%">E</td><td width="40%">decoding supported through external library libcelt</td></tr>
 <tr><td width="40%">Delphine Software International CIN audio</td><td width="10%"></td><td width="10%">X</td><td width="40%">Codec used in Delphine Software International games.</td></tr>
+<tr><td width="40%">Discworld II BMV Audio</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">COOK</td><td width="10%"></td><td width="10%">X</td><td width="40%">All versions except 5.1 are supported.</td></tr>
 <tr><td width="40%">DCA (DTS Coherent Acoustics)</td><td width="10%">X</td><td width="10%">X</td></tr>
-<tr><td width="40%">DPCM id RoQ</td><td width="10%">X</td><td width="10%">X</td><td width="40%">Used in Quake III, Jedi Knight 2, other computer games.</td></tr>
+<tr><td width="40%">DPCM id RoQ</td><td width="10%">X</td><td width="10%">X</td><td width="40%">Used in Quake III, Jedi Knight 2 and other computer games.</td></tr>
 <tr><td width="40%">DPCM Interplay</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in various Interplay computer games.</td></tr>
 <tr><td width="40%">DPCM Sierra Online</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in Sierra Online game audio files.</td></tr>
 <tr><td width="40%">DPCM Sol</td><td width="10%"></td><td width="10%">X</td></tr>
@@ -545,24 +728,34 @@ following image formats are supported:
 <tr><td width="40%">DSP Group TrueSpeech</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">DV audio</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Enhanced AC-3</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">EVRC (Enhanced Variable Rate Codec)</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">FLAC (Free Lossless Audio Codec)</td><td width="10%">X</td><td width="10%">IX</td></tr>
+<tr><td width="40%">G.723.1</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">G.729</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">GSM</td><td width="10%">E</td><td width="10%">X</td><td width="40%">encoding supported through external library libgsm</td></tr>
 <tr><td width="40%">GSM Microsoft variant</td><td width="10%">E</td><td width="10%">X</td><td width="40%">encoding supported through external library libgsm</td></tr>
+<tr><td width="40%">IAC (Indeo Audio Coder)</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">iLBC (Internet Low Bitrate Codec)</td><td width="10%">E</td><td width="10%">E</td><td width="40%">encoding and decoding supported through external library libilbc</td></tr>
 <tr><td width="40%">IMC (Intel Music Coder)</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">MACE (Macintosh Audio Compression/Expansion) 3:1</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">MACE (Macintosh Audio Compression/Expansion) 6:1</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">MLP (Meridian Lossless Packing)</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in DVD-Audio discs.</td></tr>
-<tr><td width="40%">Monkey&rsquo;s Audio</td><td width="10%"></td><td width="10%">X</td><td width="40%">Only versions 3.97-3.99 are supported.</td></tr>
+<tr><td width="40%">Monkey&rsquo;s Audio</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">MP1 (MPEG audio layer 1)</td><td width="10%"></td><td width="10%">IX</td></tr>
-<tr><td width="40%">MP2 (MPEG audio layer 2)</td><td width="10%">IX</td><td width="10%">IX</td></tr>
+<tr><td width="40%">MP2 (MPEG audio layer 2)</td><td width="10%">IX</td><td width="10%">IX</td><td width="40%">libtwolame can be used alternatively for encoding.</td></tr>
 <tr><td width="40%">MP3 (MPEG audio layer 3)</td><td width="10%">E</td><td width="10%">IX</td><td width="40%">encoding supported through external library LAME, ADU MP3 and MP3onMP4 also supported</td></tr>
 <tr><td width="40%">MPEG-4 Audio Lossless Coding (ALS)</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Musepack SV7</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Musepack SV8</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Nellymoser Asao</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">Opus</td><td width="10%">E</td><td width="10%">E</td><td width="40%">supported through external library libopus</td></tr>
 <tr><td width="40%">PCM A-law</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">PCM mu-law</td><td width="10%">X</td><td width="10%">X</td></tr>
-<tr><td width="40%">PCM 16-bit little-endian planar</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">PCM signed 8-bit planar</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">PCM signed 16-bit big-endian planar</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">PCM signed 16-bit little-endian planar</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">PCM signed 24-bit little-endian planar</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">PCM signed 32-bit little-endian planar</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">PCM 32-bit floating point big-endian</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">PCM 32-bit floating point little-endian</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">PCM 64-bit floating point big-endian</td><td width="10%">X</td><td width="10%">X</td></tr>
@@ -583,28 +776,33 @@ following image formats are supported:
 <tr><td width="40%">PCM unsigned 24-bit little-endian</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">PCM unsigned 32-bit big-endian</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">PCM unsigned 32-bit little-endian</td><td width="10%">X</td><td width="10%">X</td></tr>
-<tr><td width="40%">PCM Zork</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">PCM Zork</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">QCELP / PureVoice</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">QDesign Music Codec 2</td><td width="10%"></td><td width="10%">X</td><td width="40%">There are still some distortions.</td></tr>
 <tr><td width="40%">RealAudio 1.0 (14.4K)</td><td width="10%">X</td><td width="10%">X</td><td width="40%">Real 14400 bit/s codec</td></tr>
 <tr><td width="40%">RealAudio 2.0 (28.8K)</td><td width="10%"></td><td width="10%">X</td><td width="40%">Real 28800 bit/s codec</td></tr>
 <tr><td width="40%">RealAudio 3.0 (dnet)</td><td width="10%">IX</td><td width="10%">X</td><td width="40%">Real low bitrate AC-3 codec</td></tr>
+<tr><td width="40%">RealAudio Lossless</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">RealAudio SIPR / ACELP.NET</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Shorten</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Sierra VMD audio</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in Sierra VMD files.</td></tr>
 <tr><td width="40%">Smacker audio</td><td width="10%"></td><td width="10%">X</td></tr>
-<tr><td width="40%">SMPTE 302M AES3 audio</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">SMPTE 302M AES3 audio</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">Sonic</td><td width="10%">X</td><td width="10%">X</td><td width="40%">experimental codec</td></tr>
 <tr><td width="40%">Sonic lossless</td><td width="10%">X</td><td width="10%">X</td><td width="40%">experimental codec</td></tr>
-<tr><td width="40%">Speex</td><td width="10%"></td><td width="10%">E</td><td width="40%">supported through external library libspeex</td></tr>
-<tr><td width="40%">True Audio (TTA)</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">Speex</td><td width="10%">E</td><td width="10%">E</td><td width="40%">supported through external library libspeex</td></tr>
+<tr><td width="40%">TAK (Tom&rsquo;s lossless Audio Kompressor)</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">True Audio (TTA)</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">TrueHD</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in HD-DVD and Blu-Ray discs.</td></tr>
 <tr><td width="40%">TwinVQ (VQF flavor)</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">VIMA</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in LucasArts SMUSH animations.</td></tr>
 <tr><td width="40%">Vorbis</td><td width="10%">E</td><td width="10%">X</td><td width="40%">A native but very primitive encoder exists.</td></tr>
-<tr><td width="40%">WavPack</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">Voxware MetaSound</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">WavPack</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">Westwood Audio (SND1)</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Windows Media Audio 1</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">Windows Media Audio 2</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">Windows Media Audio Lossless</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Windows Media Audio Pro</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">Windows Media Audio Voice</td><td width="10%"></td><td width="10%">X</td></tr>
 </table>
@@ -621,35 +819,64 @@ performance on systems without hardware floating point support).
 
 <table>
 <tr><td width="40%">Name</td><td width="10%">Muxing</td><td width="10%">Demuxing</td><td width="10%">Encoding</td><td width="10%">Decoding</td></tr>
-<tr><td width="40%">SSA/ASS</td><td width="10%">X</td><td width="10%">X</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">3GPP Timed Text</td><td width="10%"></td><td width="10%"></td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">AQTitle</td><td width="10%"></td><td width="10%">X</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">DVB</td><td width="10%">X</td><td width="10%">X</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">DVB teletext</td><td width="10%"></td><td width="10%">X</td><td width="10%"></td><td width="10%">E</td></tr>
 <tr><td width="40%">DVD</td><td width="10%">X</td><td width="10%">X</td><td width="10%">X</td><td width="10%">X</td></tr>
-<tr><td width="40%">MicroDVD</td><td width="10%">X</td><td width="10%">X</td><td width="10%"></td><td width="10%"></td></tr>
+<tr><td width="40%">JACOsub</td><td width="10%">X</td><td width="10%">X</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">MicroDVD</td><td width="10%">X</td><td width="10%">X</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">MPL2</td><td width="10%"></td><td width="10%">X</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">MPsub (MPlayer)</td><td width="10%"></td><td width="10%">X</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">PGS</td><td width="10%"></td><td width="10%"></td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">PJS (Phoenix)</td><td width="10%"></td><td width="10%">X</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">RealText</td><td width="10%"></td><td width="10%">X</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">SAMI</td><td width="10%"></td><td width="10%">X</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">SSA/ASS</td><td width="10%">X</td><td width="10%">X</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">SubRip (SRT)</td><td width="10%">X</td><td width="10%">X</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">SubViewer v1</td><td width="10%"></td><td width="10%">X</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">SubViewer</td><td width="10%"></td><td width="10%">X</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">TED Talks captions</td><td width="10%"></td><td width="10%">X</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">VobSub (IDX+SUB)</td><td width="10%"></td><td width="10%">X</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">VPlayer</td><td width="10%"></td><td width="10%">X</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">WebVTT</td><td width="10%">X</td><td width="10%">X</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">XSUB</td><td width="10%"></td><td width="10%"></td><td width="10%">X</td><td width="10%">X</td></tr>
 </table>
 
 <p><code>X</code> means that the feature is supported.
 </p>
+<p><code>E</code> means that support is provided through an external library.
+</p>
 <a name="Network-Protocols"></a>
 <h2 class="section"><a href="general.html#toc-Network-Protocols">2.6 Network Protocols</a></h2>
 
 <table>
 <tr><td width="40%">Name</td><td width="10%">Support</td></tr>
-<tr><td width="40%">Apple HTTP Live Streaming</td><td width="10%">X</td></tr>
 <tr><td width="40%">file</td><td width="10%">X</td></tr>
 <tr><td width="40%">Gopher</td><td width="10%">X</td></tr>
+<tr><td width="40%">HLS</td><td width="10%">X</td></tr>
 <tr><td width="40%">HTTP</td><td width="10%">X</td></tr>
-<tr><td width="40%">MMS</td><td width="10%">X</td></tr>
+<tr><td width="40%">HTTPS</td><td width="10%">X</td></tr>
+<tr><td width="40%">MMSH</td><td width="10%">X</td></tr>
+<tr><td width="40%">MMST</td><td width="10%">X</td></tr>
 <tr><td width="40%">pipe</td><td width="10%">X</td></tr>
+<tr><td width="40%">RTMP</td><td width="10%">X</td></tr>
+<tr><td width="40%">RTMPE</td><td width="10%">X</td></tr>
+<tr><td width="40%">RTMPS</td><td width="10%">X</td></tr>
+<tr><td width="40%">RTMPT</td><td width="10%">X</td></tr>
+<tr><td width="40%">RTMPTE</td><td width="10%">X</td></tr>
+<tr><td width="40%">RTMPTS</td><td width="10%">X</td></tr>
 <tr><td width="40%">RTP</td><td width="10%">X</td></tr>
+<tr><td width="40%">SCTP</td><td width="10%">X</td></tr>
 <tr><td width="40%">TCP</td><td width="10%">X</td></tr>
+<tr><td width="40%">TLS</td><td width="10%">X</td></tr>
 <tr><td width="40%">UDP</td><td width="10%">X</td></tr>
 </table>
 
 <p><code>X</code> means that the protocol is supported.
 </p>
+<p><code>E</code> means that support is provided through an external library.
+</p>
 
 <a name="Input_002fOutput-Devices"></a>
 <h2 class="section"><a href="general.html#toc-Input_002fOutput-Devices">2.7 Input/Output Devices</a></h2>
@@ -658,385 +885,36 @@ performance on systems without hardware floating point support).
 <tr><td width="40%">Name</td><td width="10%">Input</td><td width="10%">Output</td></tr>
 <tr><td width="40%">ALSA</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">BKTR</td><td width="10%">X</td><td width="10%"></td></tr>
+<tr><td width="40%">caca</td><td width="10%"></td><td width="10%">X</td></tr>
 <tr><td width="40%">DV1394</td><td width="10%">X</td><td width="10%"></td></tr>
+<tr><td width="40%">Lavfi virtual device</td><td width="10%">X</td><td width="10%"></td></tr>
+<tr><td width="40%">Linux framebuffer</td><td width="10%">X</td><td width="10%"></td></tr>
 <tr><td width="40%">JACK</td><td width="10%">X</td><td width="10%"></td></tr>
+<tr><td width="40%">LIBCDIO</td><td width="10%">X</td></tr>
 <tr><td width="40%">LIBDC1394</td><td width="10%">X</td><td width="10%"></td></tr>
+<tr><td width="40%">OpenAL</td><td width="10%">X</td></tr>
 <tr><td width="40%">OSS</td><td width="10%">X</td><td width="10%">X</td></tr>
-<tr><td width="40%">Video4Linux</td><td width="10%">X</td><td width="10%"></td></tr>
-<tr><td width="40%">Video4Linux2</td><td width="10%">X</td><td width="10%"></td></tr>
+<tr><td width="40%">Pulseaudio</td><td width="10%">X</td><td width="10%"></td></tr>
+<tr><td width="40%">SDL</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">Video4Linux2</td><td width="10%">X</td><td width="10%">X</td></tr>
 <tr><td width="40%">VfW capture</td><td width="10%">X</td><td width="10%"></td></tr>
 <tr><td width="40%">X11 grabbing</td><td width="10%">X</td><td width="10%"></td></tr>
 </table>
 
 <p><code>X</code> means that input/output is supported.
 </p>
+<a name="Timecode"></a>
+<h2 class="section"><a href="general.html#toc-Timecode">2.8 Timecode</a></h2>
 
-<a name="Platform-Specific-information"></a>
-<h1 class="chapter"><a href="general.html#toc-Platform-Specific-information">3. Platform Specific information</a></h1>
-
-<a name="DOS"></a>
-<h2 class="section"><a href="general.html#toc-DOS">3.1 DOS</a></h2>
-
-<p>Using a cross-compiler is preferred for various reasons.
-</p>
-<a name="OS_002f2"></a>
-<h2 class="section"><a href="general.html#toc-OS_002f2">3.2 OS/2</a></h2>
-
-<p>For information about compiling FFmpeg on OS/2 see
-<a href="http://www.edm2.com/index.php/FFmpeg">http://www.edm2.com/index.php/FFmpeg</a>.
-</p>
-<a name="Unix_002dlike"></a>
-<h2 class="section"><a href="general.html#toc-Unix_002dlike">3.3 Unix-like</a></h2>
-
-<p>Some parts of FFmpeg cannot be built with version 2.15 of the GNU
-assembler which is still provided by a few AMD64 distributions. To
-make sure your compiler really uses the required version of gas
-after a binutils upgrade, run:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">$(gcc -print-prog-name=as) --version
-</pre></td></tr></table>
-
-<p>If not, then you should install a different compiler that has no
-hard-coded path to gas. In the worst case pass <code>--disable-asm</code>
-to configure.
-</p>
-<a name="BSD"></a>
-<h3 class="subsection"><a href="general.html#toc-BSD">3.3.1 BSD</a></h3>
-
-<p>BSD make will not build FFmpeg, you need to install and use GNU Make
-(&lsquo;<tt>gmake</tt>&rsquo;).
-</p>
-<a name="g_t_0028Open_0029Solaris"></a>
-<h3 class="subsection"><a href="general.html#toc-_0028Open_0029Solaris">3.3.2 (Open)Solaris</a></h3>
-
-<p>GNU Make is required to build FFmpeg, so you have to invoke (&lsquo;<tt>gmake</tt>&rsquo;),
-standard Solaris Make will not work. When building with a non-c99 front-end
-(gcc, generic suncc) add either <code>--extra-libs=/usr/lib/values-xpg6.o</code>
-or <code>--extra-libs=/usr/lib/64/values-xpg6.o</code> to the configure options
-since the libc is not c99-compliant by default. The probes performed by
-configure may raise an exception leading to the death of configure itself
-due to a bug in the system shell. Simply invoke a different shell such as
-bash directly to work around this:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">bash ./configure
-</pre></td></tr></table>
-
-<a name="Darwin-_0028MacOS-X_002c-iPhone_0029"></a>
-<h3 class="subsection"><a href="general.html#toc-Darwin-_0028MacOS-X_002c-iPhone_0029">3.3.3 Darwin (MacOS X, iPhone)</a></h3>
-
-<p>MacOS X on PowerPC or ARM (iPhone) requires a preprocessor from
-<a href="http://github.com/yuvi/gas-preprocessor">http://github.com/yuvi/gas-preprocessor</a> to build the optimized
-assembler functions. Just download the Perl script and put it somewhere
-in your PATH, FFmpeg&rsquo;s configure will pick it up automatically.
-</p>
-<a name="Windows"></a>
-<h2 class="section"><a href="general.html#toc-Windows">3.4 Windows</a></h2>
-
-<p>To get help and instructions for building FFmpeg under Windows, check out
-the FFmpeg Windows Help Forum at
-<a href="http://ffmpeg.arrozcru.org/">http://ffmpeg.arrozcru.org/</a>.
-</p>
-<a name="Native-Windows-compilation"></a>
-<h3 class="subsection"><a href="general.html#toc-Native-Windows-compilation">3.4.1 Native Windows compilation</a></h3>
-
-<p>FFmpeg can be built to run natively on Windows using the MinGW tools. Install
-the latest versions of MSYS and MinGW from <a href="http://www.mingw.org/">http://www.mingw.org/</a>.
-You can find detailed installation instructions in the download
-section and the FAQ.
-</p>
-<p>FFmpeg does not build out-of-the-box with the packages the automated MinGW
-installer provides. It also requires coreutils to be installed and many other
-packages updated to the latest version. The minimum version for some packages
-are listed below:
-</p>
-<ul>
-<li> bash 3.1
-</li><li> msys-make 3.81-2 (note: not mingw32-make)
-</li><li> w32api 3.13
-</li><li> mingw-runtime 3.15
-</li></ul>
-
-<p>FFmpeg automatically passes <code>-fno-common</code> to the compiler to work around
-a GCC bug (see <a href="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37216">http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37216</a>).
-</p>
-<p>Notes:
-</p>
-<ul>
-<li> Building natively using MSYS can be sped up by disabling implicit rules
-in the Makefile by calling <code>make -r</code> instead of plain <code>make</code>. This
-speed up is close to non-existent for normal one-off builds and is only
-noticeable when running make for a second time (for example in
-<code>make install</code>).
-
-</li><li> In order to compile FFplay, you must have the MinGW development library
-of <a href="http://www.libsdl.org/">SDL</a>.
-Edit the &lsquo;<tt>bin/sdl-config</tt>&rsquo; script so that it points to the correct prefix
-where SDL was installed. Verify that &lsquo;<tt>sdl-config</tt>&rsquo; can be launched from
-the MSYS command line.
-
-</li><li> By using <code>./configure --enable-shared</code> when configuring FFmpeg,
-you can build the FFmpeg libraries (e.g. libavutil, libavcodec,
-libavformat) as DLLs.
-
-</li></ul>
-
-<a name="Microsoft-Visual-C_002b_002b-compatibility"></a>
-<h3 class="subsection"><a href="general.html#toc-Microsoft-Visual-C_002b_002b-compatibility">3.4.2 Microsoft Visual C++ compatibility</a></h3>
-
-<p>As stated in the FAQ, FFmpeg will not compile under MSVC++. However, if you
-want to use the libav* libraries in your own applications, you can still
-compile those applications using MSVC++. But the libav* libraries you link
-to <em>must</em> be built with MinGW. However, you will not be able to debug
-inside the libav* libraries, since MSVC++ does not recognize the debug
-symbols generated by GCC.
-We strongly recommend you to move over from MSVC++ to MinGW tools.
-</p>
-<p>This description of how to use the FFmpeg libraries with MSVC++ is based on
-Microsoft Visual C++ 2005 Express Edition. If you have a different version,
-you might have to modify the procedures slightly.
-</p>
-<a name="Using-static-libraries"></a>
-<h4 class="subsubsection"><a href="general.html#toc-Using-static-libraries">3.4.2.1 Using static libraries</a></h4>
-
-<p>Assuming you have just built and installed FFmpeg in &lsquo;<tt>/usr/local</tt>&rsquo;.
-</p>
-<ol>
-<li> Create a new console application (&quot;File / New / Project&quot;) and then
-select &quot;Win32 Console Application&quot;. On the appropriate page of the
-Application Wizard, uncheck the &quot;Precompiled headers&quot; option.
-
-</li><li> Write the source code for your application, or, for testing, just
-copy the code from an existing sample application into the source file
-that MSVC++ has already created for you. For example, you can copy
-&lsquo;<tt>libavformat/output-example.c</tt>&rsquo; from the FFmpeg distribution.
-
-</li><li> Open the &quot;Project / Properties&quot; dialog box. In the &quot;Configuration&quot;
-combo box, select &quot;All Configurations&quot; so that the changes you make will
-affect both debug and release builds. In the tree view on the left hand
-side, select &quot;C/C++ / General&quot;, then edit the &quot;Additional Include
-Directories&quot; setting to contain the path where the FFmpeg includes were
-installed (i.e. &lsquo;<tt>c:\msys\1.0\local\include</tt>&rsquo;).
-Do not add MinGW&rsquo;s include directory here, or the include files will
-conflict with MSVC&rsquo;s.
-
-</li><li> Still in the &quot;Project / Properties&quot; dialog box, select
-&quot;Linker / General&quot; from the tree view and edit the
-&quot;Additional Library Directories&quot; setting to contain the &lsquo;<tt>lib</tt>&rsquo;
-directory where FFmpeg was installed (i.e. &lsquo;<tt>c:\msys\1.0\local\lib</tt>&rsquo;),
-the directory where MinGW libs are installed (i.e. &lsquo;<tt>c:\mingw\lib</tt>&rsquo;),
-and the directory where MinGW&rsquo;s GCC libs are installed
-(i.e. &lsquo;<tt>C:\mingw\lib\gcc\mingw32\4.2.1-sjlj</tt>&rsquo;). Then select
-&quot;Linker / Input&quot; from the tree view, and add the files &lsquo;<tt>libavformat.a</tt>&rsquo;,
-&lsquo;<tt>libavcodec.a</tt>&rsquo;, &lsquo;<tt>libavutil.a</tt>&rsquo;, &lsquo;<tt>libmingwex.a</tt>&rsquo;,
-&lsquo;<tt>libgcc.a</tt>&rsquo;, and any other libraries you used (i.e. &lsquo;<tt>libz.a</tt>&rsquo;)
-to the end of &quot;Additional Dependencies&quot;.
-
-</li><li> Now, select &quot;C/C++ / Code Generation&quot; from the tree view. Select
-&quot;Debug&quot; in the &quot;Configuration&quot; combo box. Make sure that &quot;Runtime
-Library&quot; is set to &quot;Multi-threaded Debug DLL&quot;. Then, select &quot;Release&quot; in
-the &quot;Configuration&quot; combo box and make sure that &quot;Runtime Library&quot; is
-set to &quot;Multi-threaded DLL&quot;.
-
-</li><li> Click &quot;OK&quot; to close the &quot;Project / Properties&quot; dialog box.
-
-</li><li> MSVC++ lacks some C99 header files that are fundamental for FFmpeg.
-Get msinttypes from <a href="http://code.google.com/p/msinttypes/downloads/list">http://code.google.com/p/msinttypes/downloads/list</a>
-and install it in MSVC++&rsquo;s include directory
-(i.e. &lsquo;<tt>C:\Program Files\Microsoft Visual Studio 8\VC\include</tt>&rsquo;).
-
-</li><li> MSVC++ also does not understand the <code>inline</code> keyword used by
-FFmpeg, so you must add this line before <code>#include</code>ing libav*:
-<table><tr><td>&nbsp;</td><td><pre class="example">#define inline _inline
-</pre></td></tr></table>
-
-</li><li> Build your application, everything should work.
-
-</li></ol>
-
-<a name="Using-shared-libraries"></a>
-<h4 class="subsubsection"><a href="general.html#toc-Using-shared-libraries">3.4.2.2 Using shared libraries</a></h4>
-
-<p>This is how to create DLL and LIB files that are compatible with MSVC++:
-</p>
-<ol>
-<li> Add a call to &lsquo;<tt>vcvars32.bat</tt>&rsquo; (which sets up the environment
-variables for the Visual C++ tools) as the first line of &lsquo;<tt>msys.bat</tt>&rsquo;.
-The standard location for &lsquo;<tt>vcvars32.bat</tt>&rsquo; is
-&lsquo;<tt>C:\Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat</tt>&rsquo;,
-and the standard location for &lsquo;<tt>msys.bat</tt>&rsquo; is &lsquo;<tt>C:\msys\1.0\msys.bat</tt>&rsquo;.
-If this corresponds to your setup, add the following line as the first line
-of &lsquo;<tt>msys.bat</tt>&rsquo;:
-
-<table><tr><td>&nbsp;</td><td><pre class="example">call &quot;C:\Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat&quot;
-</pre></td></tr></table>
-
-<p>Alternatively, you may start the &lsquo;<tt>Visual Studio 2005 Command Prompt</tt>&rsquo;,
-and run &lsquo;<tt>c:\msys\1.0\msys.bat</tt>&rsquo; from there.
-</p>
-</li><li> Within the MSYS shell, run <code>lib.exe</code>. If you get a help message
-from &lsquo;<tt>Microsoft (R) Library Manager</tt>&rsquo;, this means your environment
-variables are set up correctly, the &lsquo;<tt>Microsoft (R) Library Manager</tt>&rsquo;
-is on the path and will be used by FFmpeg to create
-MSVC++-compatible import libraries.
-
-</li><li> Build FFmpeg with
-
-<table><tr><td>&nbsp;</td><td><pre class="example">./configure --enable-shared
-make
-make install
-</pre></td></tr></table>
-
-<p>Your install path (&lsquo;<tt>/usr/local/</tt>&rsquo; by default) should now have the
-necessary DLL and LIB files under the &lsquo;<tt>bin</tt>&rsquo; directory.
-</p>
-<p>Alternatively, build the libraries with a cross compiler, according to
-the instructions below in <a href="#Cross-compilation-for-Windows-with-Linux">Cross compilation for Windows with Linux</a>.
-</p>
-<p>To use those files with MSVC++, do the same as you would do with
-the static libraries, as described above. But in Step 4,
-you should only need to add the directory where the LIB files are installed
-(i.e. &lsquo;<tt>c:\msys\usr\local\bin</tt>&rsquo;). This is not a typo, the LIB files are
-installed in the &lsquo;<tt>bin</tt>&rsquo; directory. And instead of adding the static
-libraries (&lsquo;<tt>libxxx.a</tt>&rsquo; files) you should add the MSVC import libraries
-(&lsquo;<tt>avcodec.lib</tt>&rsquo;, &lsquo;<tt>avformat.lib</tt>&rsquo;, and
-&lsquo;<tt>avutil.lib</tt>&rsquo;). Note that you should not use the GCC import
-libraries (&lsquo;<tt>libxxx.dll.a</tt>&rsquo; files), as these will give you undefined
-reference errors. There should be no need for &lsquo;<tt>libmingwex.a</tt>&rsquo;,
-&lsquo;<tt>libgcc.a</tt>&rsquo;, and &lsquo;<tt>wsock32.lib</tt>&rsquo;, nor any other external library
-statically linked into the DLLs.
-</p>
-<p>FFmpeg headers do not declare global data for Windows DLLs through the usual
-dllexport/dllimport interface. Such data will be exported properly while
-building, but to use them in your MSVC++ code you will have to edit the
-appropriate headers and mark the data as dllimport. For example, in
-libavutil/pixdesc.h you should have:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">extern __declspec(dllimport) const AVPixFmtDescriptor av_pix_fmt_descriptors[];
-</pre></td></tr></table>
-
-<p>Note that using import libraries created by dlltool requires
-the linker optimization option to be set to
-&quot;References: Keep Unreferenced Data (<code>/OPT:NOREF</code>)&quot;, otherwise
-the resulting binaries will fail during runtime. This isn&rsquo;t
-required when using import libraries generated by lib.exe.
-This issue is reported upstream at
-<a href="http://sourceware.org/bugzilla/show_bug.cgi?id=12633">http://sourceware.org/bugzilla/show_bug.cgi?id=12633</a>.
-</p>
-<p>To create import libraries that work with the <code>/OPT:REF</code> option
-(which is enabled by default in Release mode), follow these steps:
-</p>
-<ol>
-<li> Open &lsquo;<tt>Visual Studio 2005 Command Prompt</tt>&rsquo;.
-
-<p>Alternatively, in a normal command line prompt, call &lsquo;<tt>vcvars32.bat</tt>&rsquo;
-which sets up the environment variables for the Visual C++ tools
-(the standard location for this file is
-&lsquo;<tt>C:\Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat</tt>&rsquo;).
-</p>
-</li><li> Enter the &lsquo;<tt>bin</tt>&rsquo; directory where the created LIB and DLL files
-are stored.
-
-</li><li> Generate new import libraries with &lsquo;<tt>lib.exe</tt>&rsquo;:
-
-<table><tr><td>&nbsp;</td><td><pre class="example">lib /machine:i386 /def:..\lib\avcodec-53.def  /out:avcodec.lib
-lib /machine:i386 /def:..\lib\avdevice-53.def /out:avdevice.lib
-lib /machine:i386 /def:..\lib\avfilter-2.def  /out:avfilter.lib
-lib /machine:i386 /def:..\lib\avformat-53.def /out:avformat.lib
-lib /machine:i386 /def:..\lib\avutil-51.def   /out:avutil.lib
-lib /machine:i386 /def:..\lib\swscale-2.def   /out:swscale.lib
-</pre></td></tr></table>
-
-</li></ol>
-
-<p><a name="Cross-compilation-for-Windows-with-Linux"></a>
-</p></li></ol>
-<a name="Cross-compilation-for-Windows-with-Linux-1"></a>
-<h3 class="subsection"><a href="general.html#toc-Cross-compilation-for-Windows-with-Linux-1">3.4.3 Cross compilation for Windows with Linux</a></h3>
-
-<p>You must use the MinGW cross compilation tools available at
-<a href="http://www.mingw.org/">http://www.mingw.org/</a>.
-</p>
-<p>Then configure FFmpeg with the following options:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">./configure --target-os=mingw32 --cross-prefix=i386-mingw32msvc-
-</pre></td></tr></table>
-<p>(you can change the cross-prefix according to the prefix chosen for the
-MinGW tools).
-</p>
-<p>Then you can easily test FFmpeg with <a href="http://www.winehq.com/">Wine</a>.
-</p>
-<a name="Compilation-under-Cygwin"></a>
-<h3 class="subsection"><a href="general.html#toc-Compilation-under-Cygwin">3.4.4 Compilation under Cygwin</a></h3>
-
-<p>Please use Cygwin 1.7.x as the obsolete 1.5.x Cygwin versions lack
-llrint() in its C library.
-</p>
-<p>Install your Cygwin with all the &quot;Base&quot; packages, plus the
-following &quot;Devel&quot; ones:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">binutils, gcc4-core, make, git, mingw-runtime, texi2html
-</pre></td></tr></table>
-
-<p>And the following &quot;Utils&quot; one:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">diffutils
-</pre></td></tr></table>
-
-<p>Then run
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">./configure
-</pre></td></tr></table>
-
-<p>to make a static build.
-</p>
-<p>The current <code>gcc4-core</code> package is buggy and needs this flag to build
-shared libraries:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">./configure --enable-shared --disable-static --extra-cflags=-fno-reorder-functions
-</pre></td></tr></table>
-
-<p>If you want to build FFmpeg with additional libraries, download Cygwin
-&quot;Devel&quot; packages for Ogg and Vorbis from any Cygwin packages repository:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">libogg-devel, libvorbis-devel
-</pre></td></tr></table>
-
-<p>These library packages are only available from
-<a href="http://sourceware.org/cygwinports/">Cygwin Ports</a>:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">yasm, libSDL-devel, libdirac-devel, libfaac-devel, libgsm-devel,
-libmp3lame-devel, libschroedinger1.0-devel, speex-devel, libtheora-devel,
-libxvidcore-devel
-</pre></td></tr></table>
-
-<p>The recommendation for libnut and x264 is to build them from source by
-yourself, as they evolve too quickly for Cygwin Ports to be up to date.
-</p>
-<p>Cygwin 1.7.x has IPv6 support. You can add IPv6 to Cygwin 1.5.x by means
-of the <code>libgetaddrinfo-devel</code> package, available at Cygwin Ports.
-</p>
-<a name="Crosscompilation-for-Windows-under-Cygwin"></a>
-<h3 class="subsection"><a href="general.html#toc-Crosscompilation-for-Windows-under-Cygwin">3.4.5 Crosscompilation for Windows under Cygwin</a></h3>
-
-<p>With Cygwin you can create Windows binaries that do not need the cygwin1.dll.
-</p>
-<p>Just install your Cygwin as explained before, plus these additional
-&quot;Devel&quot; packages:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">gcc-mingw-core, mingw-runtime, mingw-zlib
-</pre></td></tr></table>
-
-<p>and add some special flags to your configure invocation.
-</p>
-<p>For a static build run
-</p><table><tr><td>&nbsp;</td><td><pre class="example">./configure --target-os=mingw32 --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin
-</pre></td></tr></table>
-
-<p>and for a build with shared libraries
-</p><table><tr><td>&nbsp;</td><td><pre class="example">./configure --target-os=mingw32 --enable-shared --disable-static --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin
-</pre></td></tr></table>
-
-<hr size="1">
-<p>
- <font size="-1">
-  This document was generated by <em>Kyle Schwarz</em> on <em>September 2, 2011</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.
- </font>
- <br>
+<table>
+<tr><td width="40%">Codec/format</td><td width="10%">Read</td><td width="10%">Write</td></tr>
+<tr><td width="40%">AVI</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">DV</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">GXF</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">MOV</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">MPEG1/2</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">MXF</td><td width="10%">X</td><td width="10%">X</td></tr>
+</table>
 
-</p>
-</body>
-</html>
+<footer class="footer pagination-right">
+<span class="label label-info">This document was generated by <em>Kyle Schwarz</em> on <em>December 14, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies/ffmpeg/doc/git-howto.html b/dependencies/ffmpeg/doc/git-howto.html
new file mode 100644 (file)
index 0000000..a655252
--- /dev/null
@@ -0,0 +1,459 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on December 14, 2013 by texi2html 1.82 -->
+<!--
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>FFmpeg documentation : Using git to develop FFmpeg: </title>
+
+<meta name="description" content="Using git to develop FFmpeg: ">
+<meta name="keywords" content="FFmpeg documentation : Using git to develop FFmpeg: ">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="default.css" />
+
+<link rel="icon" href="favicon.png" type="image/png" />
+</head>
+<body>
+<div id="container">
+<div id="body">
+
+<a name="SEC_Top"></a>
+<h1 class="settitle">Using git to develop FFmpeg</h1>
+
+<a name="SEC_Contents"></a>
+<h1>Table of Contents</h1>
+<div class="contents">
+
+<ul class="toc">
+  <li><a name="toc-Introduction" href="#Introduction">1. Introduction</a></li>
+  <li><a name="toc-Basics-Usage" href="#Basics-Usage">2. Basics Usage</a>
+  <ul class="toc">
+    <li><a name="toc-Get-GIT" href="#Get-GIT">2.1 Get GIT</a></li>
+    <li><a name="toc-Cloning-the-source-tree" href="#Cloning-the-source-tree">2.2 Cloning the source tree</a></li>
+    <li><a name="toc-Updating-the-source-tree-to-the-latest-revision" href="#Updating-the-source-tree-to-the-latest-revision">2.3 Updating the source tree to the latest revision</a></li>
+    <li><a name="toc-Rebasing-your-local-branches" href="#Rebasing-your-local-branches">2.4 Rebasing your local branches</a></li>
+    <li><a name="toc-Adding_002fremoving-files_002fdirectories" href="#Adding_002fremoving-files_002fdirectories">2.5 Adding/removing files/directories</a></li>
+    <li><a name="toc-Showing-modifications" href="#Showing-modifications">2.6 Showing modifications</a></li>
+    <li><a name="toc-Inspecting-the-changelog" href="#Inspecting-the-changelog">2.7 Inspecting the changelog</a></li>
+    <li><a name="toc-Checking-source-tree-status" href="#Checking-source-tree-status">2.8 Checking source tree status</a></li>
+    <li><a name="toc-Committing" href="#Committing">2.9 Committing</a></li>
+    <li><a name="toc-Preparing-a-patchset" href="#Preparing-a-patchset">2.10 Preparing a patchset</a></li>
+    <li><a name="toc-Sending-patches-for-review" href="#Sending-patches-for-review">2.11 Sending patches for review</a></li>
+    <li><a name="toc-Renaming_002fmoving_002fcopying-files-or-contents-of-files" href="#Renaming_002fmoving_002fcopying-files-or-contents-of-files">2.12 Renaming/moving/copying files or contents of files</a></li>
+  </ul></li>
+  <li><a name="toc-Git-configuration" href="#Git-configuration">3. Git configuration</a>
+  <ul class="toc">
+    <li><a name="toc-Personal-Git-installation" href="#Personal-Git-installation">3.1 Personal Git installation</a></li>
+    <li><a name="toc-Repository-configuration" href="#Repository-configuration">3.2 Repository configuration</a></li>
+  </ul></li>
+  <li><a name="toc-FFmpeg-specific" href="#FFmpeg-specific">4. FFmpeg specific</a>
+  <ul class="toc">
+    <li><a name="toc-Reverting-broken-commits" href="#Reverting-broken-commits">4.1 Reverting broken commits</a></li>
+    <li><a name="toc-Pushing-changes-to-remote-trees" href="#Pushing-changes-to-remote-trees">4.2 Pushing changes to remote trees</a></li>
+    <li><a name="toc-Finding-a-specific-svn-revision" href="#Finding-a-specific-svn-revision">4.3 Finding a specific svn revision</a></li>
+  </ul></li>
+  <li><a name="toc-pre_002dpush-checklist" href="#pre_002dpush-checklist">5. pre-push checklist</a></li>
+  <li><a name="toc-Server-Issues" href="#Server-Issues">6. Server Issues</a></li>
+</ul>
+</div>
+
+<a name="Introduction"></a>
+<h1 class="chapter"><a href="git-howto.html#toc-Introduction">1. Introduction</a></h1>
+
+<p>This document aims in giving some quick references on a set of useful git
+commands. You should always use the extensive and detailed documentation
+provided directly by git:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">git --help
+man git
+</pre></td></tr></table>
+
+<p>shows you the available subcommands,
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">git &lt;command&gt; --help
+man git-&lt;command&gt;
+</pre></td></tr></table>
+
+<p>shows information about the subcommand &lt;command&gt;.
+</p>
+<p>Additional information could be found on the
+<a href="http://gitref.org">Git Reference</a> website
+</p>
+<p>For more information about the Git project, visit the
+</p>
+<p><a href="http://git-scm.com/">Git website</a>
+</p>
+<p>Consult these resources whenever you have problems, they are quite exhaustive.
+</p>
+<p>What follows now is a basic introduction to Git and some FFmpeg-specific
+guidelines to ease the contribution to the project
+</p>
+<a name="Basics-Usage"></a>
+<h1 class="chapter"><a href="git-howto.html#toc-Basics-Usage">2. Basics Usage</a></h1>
+
+<a name="Get-GIT"></a>
+<h2 class="section"><a href="git-howto.html#toc-Get-GIT">2.1 Get GIT</a></h2>
+
+<p>You can get git from <a href="http://git-scm.com/">http://git-scm.com/</a>
+Most distribution and operating system provide a package for it.
+</p>
+
+<a name="Cloning-the-source-tree"></a>
+<h2 class="section"><a href="git-howto.html#toc-Cloning-the-source-tree">2.2 Cloning the source tree</a></h2>
+
+<table><tr><td>&nbsp;</td><td><pre class="example">git clone git://source.ffmpeg.org/ffmpeg &lt;target&gt;
+</pre></td></tr></table>
+
+<p>This will put the FFmpeg sources into the directory <var>&lt;target&gt;</var>.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">git clone git@source.ffmpeg.org:ffmpeg &lt;target&gt;
+</pre></td></tr></table>
+
+<p>This will put the FFmpeg sources into the directory <var>&lt;target&gt;</var> and let
+you push back your changes to the remote repository.
+</p>
+<p>Make sure that you do not have Windows line endings in your checkouts,
+otherwise you may experience spurious compilation failures. One way to
+achieve this is to run
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">git config --global core.autocrlf false
+</pre></td></tr></table>
+
+
+<a name="Updating-the-source-tree-to-the-latest-revision"></a>
+<h2 class="section"><a href="git-howto.html#toc-Updating-the-source-tree-to-the-latest-revision">2.3 Updating the source tree to the latest revision</a></h2>
+
+<table><tr><td>&nbsp;</td><td><pre class="example">git pull (--rebase)
+</pre></td></tr></table>
+
+<p>pulls in the latest changes from the tracked branch. The tracked branch
+can be remote. By default the master branch tracks the branch master in
+the remote origin.
+</p>
+<div class="float alert alert-warning">
+<p><code>--rebase</code> (see below) is recommended.
+</p></div>
+<a name="Rebasing-your-local-branches"></a>
+<h2 class="section"><a href="git-howto.html#toc-Rebasing-your-local-branches">2.4 Rebasing your local branches</a></h2>
+
+<table><tr><td>&nbsp;</td><td><pre class="example">git pull --rebase
+</pre></td></tr></table>
+
+<p>fetches the changes from the main repository and replays your local commits
+over it. This is required to keep all your local changes at the top of
+FFmpeg&rsquo;s master tree. The master tree will reject pushes with merge commits.
+</p>
+
+<a name="Adding_002fremoving-files_002fdirectories"></a>
+<h2 class="section"><a href="git-howto.html#toc-Adding_002fremoving-files_002fdirectories">2.5 Adding/removing files/directories</a></h2>
+
+<table><tr><td>&nbsp;</td><td><pre class="example">git add [-A] &lt;filename/dirname&gt;
+git rm [-r] &lt;filename/dirname&gt;
+</pre></td></tr></table>
+
+<p>GIT needs to get notified of all changes you make to your working
+directory that makes files appear or disappear.
+Line moves across files are automatically tracked.
+</p>
+
+<a name="Showing-modifications"></a>
+<h2 class="section"><a href="git-howto.html#toc-Showing-modifications">2.6 Showing modifications</a></h2>
+
+<table><tr><td>&nbsp;</td><td><pre class="example">git diff &lt;filename(s)&gt;
+</pre></td></tr></table>
+
+<p>will show all local modifications in your working directory as unified diff.
+</p>
+
+<a name="Inspecting-the-changelog"></a>
+<h2 class="section"><a href="git-howto.html#toc-Inspecting-the-changelog">2.7 Inspecting the changelog</a></h2>
+
+<table><tr><td>&nbsp;</td><td><pre class="example">git log &lt;filename(s)&gt;
+</pre></td></tr></table>
+
+<p>You may also use the graphical tools like gitview or gitk or the web
+interface available at http://source.ffmpeg.org/
+</p>
+<a name="Checking-source-tree-status"></a>
+<h2 class="section"><a href="git-howto.html#toc-Checking-source-tree-status">2.8 Checking source tree status</a></h2>
+
+<table><tr><td>&nbsp;</td><td><pre class="example">git status
+</pre></td></tr></table>
+
+<p>detects all the changes you made and lists what actions will be taken in case
+of a commit (additions, modifications, deletions, etc.).
+</p>
+
+<a name="Committing"></a>
+<h2 class="section"><a href="git-howto.html#toc-Committing">2.9 Committing</a></h2>
+
+<table><tr><td>&nbsp;</td><td><pre class="example">git diff --check
+</pre></td></tr></table>
+
+<p>to double check your changes before committing them to avoid trouble later
+on. All experienced developers do this on each and every commit, no matter
+how small.
+Every one of them has been saved from looking like a fool by this many times.
+It&rsquo;s very easy for stray debug output or cosmetic modifications to slip in,
+please avoid problems through this extra level of scrutiny.
+</p>
+<p>For cosmetics-only commits you should get (almost) empty output from
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">git diff -w -b &lt;filename(s)&gt;
+</pre></td></tr></table>
+
+<p>Also check the output of
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">git status
+</pre></td></tr></table>
+
+<p>to make sure you don&rsquo;t have untracked files or deletions.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">git add [-i|-p|-A] &lt;filenames/dirnames&gt;
+</pre></td></tr></table>
+
+<p>Make sure you have told git your name and email address
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">git config --global user.name &quot;My Name&quot;
+git config --global user.email my@email.invalid
+</pre></td></tr></table>
+
+<p>Use <var>&ndash;global</var> to set the global configuration for all your git checkouts.
+</p>
+<p>Git will select the changes to the files for commit. Optionally you can use
+the interactive or the patch mode to select hunk by hunk what should be
+added to the commit.
+</p>
+
+<table><tr><td>&nbsp;</td><td><pre class="example">git commit
+</pre></td></tr></table>
+
+<p>Git will commit the selected changes to your current local branch.
+</p>
+<p>You will be prompted for a log message in an editor, which is either
+set in your personal configuration file through
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">git config --global core.editor
+</pre></td></tr></table>
+
+<p>or set by one of the following environment variables:
+<var>GIT_EDITOR</var>, <var>VISUAL</var> or <var>EDITOR</var>.
+</p>
+<p>Log messages should be concise but descriptive. Explain why you made a change,
+what you did will be obvious from the changes themselves most of the time.
+Saying just &quot;bug fix&quot; or &quot;10l&quot; is bad. Remember that people of varying skill
+levels look at and educate themselves while reading through your code. Don&rsquo;t
+include filenames in log messages, Git provides that information.
+</p>
+<p>Possibly make the commit message have a terse, descriptive first line, an
+empty line and then a full description. The first line will be used to name
+the patch by git format-patch.
+</p>
+<a name="Preparing-a-patchset"></a>
+<h2 class="section"><a href="git-howto.html#toc-Preparing-a-patchset">2.10 Preparing a patchset</a></h2>
+
+<table><tr><td>&nbsp;</td><td><pre class="example">git format-patch &lt;commit&gt; [-o directory]
+</pre></td></tr></table>
+
+<p>will generate a set of patches for each commit between <var>&lt;commit&gt;</var> and
+current <var>HEAD</var>. E.g.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">git format-patch origin/master
+</pre></td></tr></table>
+
+<p>will generate patches for all commits on current branch which are not
+present in upstream.
+A useful shortcut is also
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">git format-patch -n
+</pre></td></tr></table>
+
+<p>which will generate patches from last <var>n</var> commits.
+By default the patches are created in the current directory.
+</p>
+<a name="Sending-patches-for-review"></a>
+<h2 class="section"><a href="git-howto.html#toc-Sending-patches-for-review">2.11 Sending patches for review</a></h2>
+
+<table><tr><td>&nbsp;</td><td><pre class="example">git send-email &lt;commit list|directory&gt;
+</pre></td></tr></table>
+
+<p>will send the patches created by <code>git format-patch</code> or directly
+generates them. All the email fields can be configured in the global/local
+configuration or overridden by command line.
+Note that this tool must often be installed separately (e.g. <var>git-email</var>
+package on Debian-based distros).
+</p>
+
+<a name="Renaming_002fmoving_002fcopying-files-or-contents-of-files"></a>
+<h2 class="section"><a href="git-howto.html#toc-Renaming_002fmoving_002fcopying-files-or-contents-of-files">2.12 Renaming/moving/copying files or contents of files</a></h2>
+
+<p>Git automatically tracks such changes, making those normal commits.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">mv/cp path/file otherpath/otherfile
+git add [-A] .
+git commit
+</pre></td></tr></table>
+
+
+<a name="Git-configuration"></a>
+<h1 class="chapter"><a href="git-howto.html#toc-Git-configuration">3. Git configuration</a></h1>
+
+<p>In order to simplify a few workflows, it is advisable to configure both
+your personal Git installation and your local FFmpeg repository.
+</p>
+<a name="Personal-Git-installation"></a>
+<h2 class="section"><a href="git-howto.html#toc-Personal-Git-installation">3.1 Personal Git installation</a></h2>
+
+<p>Add the following to your &lsquo;<tt>~/.gitconfig</tt>&rsquo; to help <code>git send-email</code>
+and <code>git format-patch</code> detect renames:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">[diff]
+        renames = copy
+</pre></td></tr></table>
+
+<a name="Repository-configuration"></a>
+<h2 class="section"><a href="git-howto.html#toc-Repository-configuration">3.2 Repository configuration</a></h2>
+
+<p>In order to have <code>git send-email</code> automatically send patches
+to the ffmpeg-devel mailing list, add the following stanza
+to &lsquo;<tt>/path/to/ffmpeg/repository/.git/config</tt>&rsquo;:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">[sendemail]
+        to = ffmpeg-devel@ffmpeg.org
+</pre></td></tr></table>
+
+<a name="FFmpeg-specific"></a>
+<h1 class="chapter"><a href="git-howto.html#toc-FFmpeg-specific">4. FFmpeg specific</a></h1>
+
+<a name="Reverting-broken-commits"></a>
+<h2 class="section"><a href="git-howto.html#toc-Reverting-broken-commits">4.1 Reverting broken commits</a></h2>
+
+<table><tr><td>&nbsp;</td><td><pre class="example">git reset &lt;commit&gt;
+</pre></td></tr></table>
+
+<p><code>git reset</code> will uncommit the changes till <var>&lt;commit&gt;</var> rewriting
+the current branch history.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">git commit --amend
+</pre></td></tr></table>
+
+<p>allows to amend the last commit details quickly.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">git rebase -i origin/master
+</pre></td></tr></table>
+
+<p>will replay local commits over the main repository allowing to edit, merge
+or remove some of them in the process.
+</p>
+<div class="float alert alert-info">
+<p><code>git reset</code>, <code>git commit --amend</code> and <code>git rebase</code>
+rewrite history, so you should use them ONLY on your local or topic branches.
+The main repository will reject those changes.
+</p></div>
+<table><tr><td>&nbsp;</td><td><pre class="example">git revert &lt;commit&gt;
+</pre></td></tr></table>
+
+<p><code>git revert</code> will generate a revert commit. This will not make the
+faulty commit disappear from the history.
+</p>
+<a name="Pushing-changes-to-remote-trees"></a>
+<h2 class="section"><a href="git-howto.html#toc-Pushing-changes-to-remote-trees">4.2 Pushing changes to remote trees</a></h2>
+
+<table><tr><td>&nbsp;</td><td><pre class="example">git push
+</pre></td></tr></table>
+
+<p>Will push the changes to the default remote (<var>origin</var>).
+Git will prevent you from pushing changes if the local and remote trees are
+out of sync. Refer to and to sync the local tree.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">git remote add &lt;name&gt; &lt;url&gt;
+</pre></td></tr></table>
+
+<p>Will add additional remote with a name reference, it is useful if you want
+to push your local branch for review on a remote host.
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">git push &lt;remote&gt; &lt;refspec&gt;
+</pre></td></tr></table>
+
+<p>Will push the changes to the <var>&lt;remote&gt;</var> repository.
+Omitting <var>&lt;refspec&gt;</var> makes <code>git push</code> update all the remote
+branches matching the local ones.
+</p>
+<a name="Finding-a-specific-svn-revision"></a>
+<h2 class="section"><a href="git-howto.html#toc-Finding-a-specific-svn-revision">4.3 Finding a specific svn revision</a></h2>
+
+<p>Since version 1.7.1 git supports <var>:/foo</var> syntax for specifying commits
+based on a regular expression. see man gitrevisions
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">git show :/'as revision 23456'
+</pre></td></tr></table>
+
+<p>will show the svn changeset <var>r23456</var>. With older git versions searching in
+the <code>git log</code> output is the easiest option (especially if a pager with
+search capabilities is used).
+This commit can be checked out with
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">git checkout -b svn_23456 :/'as revision 23456'
+</pre></td></tr></table>
+
+<p>or for git &lt; 1.7.1 with
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">git checkout -b svn_23456 $SHA1
+</pre></td></tr></table>
+
+<p>where <var>$SHA1</var> is the commit hash from the <code>git log</code> output.
+</p>
+
+<a name="pre_002dpush-checklist"></a>
+<h1 class="chapter"><a href="git-howto.html#toc-pre_002dpush-checklist">5. pre-push checklist</a></h1>
+
+<p>Once you have a set of commits that you feel are ready for pushing,
+work through the following checklist to doublecheck everything is in
+proper order. This list tries to be exhaustive. In case you are just
+pushing a typo in a comment, some of the steps may be unnecessary.
+Apply your common sense, but if in doubt, err on the side of caution.
+</p>
+<p>First, make sure that the commits and branches you are going to push
+match what you want pushed and that nothing is missing, extraneous or
+wrong. You can see what will be pushed by running the git push command
+with &ndash;dry-run first. And then inspecting the commits listed with
+<code>git log -p 1234567..987654</code>. The <code>git status</code> command
+may help in finding local changes that have been forgotten to be added.
+</p>
+<p>Next let the code pass through a full run of our testsuite.
+</p>
+<ul>
+<li> <code>make distclean</code>
+</li><li> <code>/path/to/ffmpeg/configure</code>
+</li><li> <code>make check</code>
+</li><li> if fate fails due to missing samples run <code>make fate-rsync</code> and retry
+</li></ul>
+
+<p>Make sure all your changes have been checked before pushing them, the
+testsuite only checks against regressions and that only to some extend. It does
+obviously not check newly added features/code to be working unless you have
+added a test for that (which is recommended).
+</p>
+<p>Also note that every single commit should pass the test suite, not just
+the result of a series of patches.
+</p>
+<p>Once everything passed, push the changes to your public ffmpeg clone and post a
+merge request to ffmpeg-devel. You can also push them directly but this is not
+recommended.
+</p>
+<a name="Server-Issues"></a>
+<h1 class="chapter"><a href="git-howto.html#toc-Server-Issues">6. Server Issues</a></h1>
+
+<p>Contact the project admins <a href="mailto:root@ffmpeg.org">root@ffmpeg.org</a> if you have technical
+problems with the GIT server.
+</p><footer class="footer pagination-right">
+<span class="label label-info">This document was generated by <em>Kyle Schwarz</em> on <em>December 14, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies/ffmpeg/doc/libavcodec.html b/dependencies/ffmpeg/doc/libavcodec.html
new file mode 100644 (file)
index 0000000..cc87b0a
--- /dev/null
@@ -0,0 +1,78 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on December 14, 2013 by texi2html 1.82 -->
+<!--
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>FFmpeg documentation : Libavcodec </title>
+
+<meta name="description" content="Libavcodec Documentation: ">
+<meta name="keywords" content="FFmpeg documentation : Libavcodec ">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="default.css" />
+
+<link rel="icon" href="favicon.png" type="image/png" />
+</head>
+<body>
+<div id="container">
+<div id="body">
+
+<a name="SEC_Top"></a>
+<h1 class="settitle">Libavcodec Documentation</h1>
+
+<a name="SEC_Contents"></a>
+<h1>Table of Contents</h1>
+<div class="contents">
+
+<ul class="toc">
+  <li><a name="toc-Description" href="#Description">1. Description</a></li>
+  <li><a name="toc-See-Also" href="#See-Also">2. See Also</a></li>
+  <li><a name="toc-Authors" href="#Authors">3. Authors</a></li>
+</ul>
+</div>
+
+<a name="Description"></a>
+<h1 class="chapter"><a href="libavcodec.html#toc-Description">1. Description</a></h1>
+
+<p>The libavcodec library provides a generic encoding/decoding framework
+and contains multiple decoders and encoders for audio, video and
+subtitle streams, and several bitstream filters.
+</p>
+<p>The shared architecture provides various services ranging from bit
+stream I/O to DSP optimizations, and makes it suitable for
+implementing robust and fast codecs as well as for experimentation.
+</p>
+
+<a name="See-Also"></a>
+<h1 class="chapter"><a href="libavcodec.html#toc-See-Also">2. See Also</a></h1>
+
+<p><a href="ffmpeg.html">ffmpeg</a>, <a href="ffplay.html">ffplay</a>, <a href="ffprobe.html">ffprobe</a>, <a href="ffserver.html">ffserver</a>,
+<a href="ffmpeg-codecs.html">ffmpeg-codecs</a>, <a href="ffmpeg-bitstream-filters.html">bitstream-filters</a>,
+<a href="libavutil.html">libavutil</a>
+</p>
+
+<a name="Authors"></a>
+<h1 class="chapter"><a href="libavcodec.html#toc-Authors">3. Authors</a></h1>
+
+<p>The FFmpeg developers.
+</p>
+<p>For details about the authorship, see the Git history of the project
+(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
+<code>git log</code> in the FFmpeg source directory, or browsing the
+online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
+</p>
+<p>Maintainers for the specific components are listed in the file
+&lsquo;<tt>MAINTAINERS</tt>&rsquo; in the source code tree.
+</p>
+
+<footer class="footer pagination-right">
+<span class="label label-info">This document was generated by <em>Kyle Schwarz</em> on <em>December 14, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies/ffmpeg/doc/libavdevice.html b/dependencies/ffmpeg/doc/libavdevice.html
new file mode 100644 (file)
index 0000000..5b0609a
--- /dev/null
@@ -0,0 +1,75 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on December 14, 2013 by texi2html 1.82 -->
+<!--
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>FFmpeg documentation : Libavdevice </title>
+
+<meta name="description" content="Libavdevice Documentation: ">
+<meta name="keywords" content="FFmpeg documentation : Libavdevice ">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="default.css" />
+
+<link rel="icon" href="favicon.png" type="image/png" />
+</head>
+<body>
+<div id="container">
+<div id="body">
+
+<a name="SEC_Top"></a>
+<h1 class="settitle">Libavdevice Documentation</h1>
+
+<a name="SEC_Contents"></a>
+<h1>Table of Contents</h1>
+<div class="contents">
+
+<ul class="toc">
+  <li><a name="toc-Description" href="#Description">1. Description</a></li>
+  <li><a name="toc-See-Also" href="#See-Also">2. See Also</a></li>
+  <li><a name="toc-Authors" href="#Authors">3. Authors</a></li>
+</ul>
+</div>
+
+<a name="Description"></a>
+<h1 class="chapter"><a href="libavdevice.html#toc-Description">1. Description</a></h1>
+
+<p>The libavdevice library provides a generic framework for grabbing from
+and rendering to many common multimedia input/output devices, and
+supports several input and output devices, including Video4Linux2,
+VfW, DShow, and ALSA.
+</p>
+
+<a name="See-Also"></a>
+<h1 class="chapter"><a href="libavdevice.html#toc-See-Also">2. See Also</a></h1>
+
+<p><a href="ffmpeg.html">ffmpeg</a>, <a href="ffplay.html">ffplay</a>, <a href="ffprobe.html">ffprobe</a>, <a href="ffserver.html">ffserver</a>,
+<a href="ffmpeg-devices.html">ffmpeg-devices</a>,
+<a href="libavutil.html">libavutil</a>, <a href="libavcodec.html">libavcodec</a>, <a href="libavformat.html">libavformat</a>
+</p>
+
+<a name="Authors"></a>
+<h1 class="chapter"><a href="libavdevice.html#toc-Authors">3. Authors</a></h1>
+
+<p>The FFmpeg developers.
+</p>
+<p>For details about the authorship, see the Git history of the project
+(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
+<code>git log</code> in the FFmpeg source directory, or browsing the
+online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
+</p>
+<p>Maintainers for the specific components are listed in the file
+&lsquo;<tt>MAINTAINERS</tt>&rsquo; in the source code tree.
+</p>
+
+<footer class="footer pagination-right">
+<span class="label label-info">This document was generated by <em>Kyle Schwarz</em> on <em>December 14, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
index c12106f2021b98aefc3ceb6f96605377cd83fde2..2185113a06183a6e343953787fb476164d0f5907 100644 (file)
@@ -1,6 +1,7 @@
-<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html401/loose.dtd">
+<!DOCTYPE html>
 <html>
-<!-- Created on September 2, 2011 by texi2html 1.82
+<!-- Created on December 14, 2013 by texi2html 1.82 -->
+<!--
 texi2html was written by: 
             Lionel Cons <Lionel.Cons@cern.ch> (original author)
             Karl Berry  <karl@freefriends.org>
@@ -8,38 +9,22 @@ texi2html was written by:
             and many others.
 Maintained by: Many creative people.
 Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
 -->
 <head>
-<title>Libavfilter Documentation</title>
+<title>FFmpeg documentation : Libavfilter </title>
 
-<meta name="description" content="Libavfilter Documentation">
-<meta name="keywords" content="Libavfilter Documentation">
-<meta name="resource-type" content="document">
-<meta name="distribution" content="global">
+<meta name="description" content="Libavfilter Documentation: ">
+<meta name="keywords" content="FFmpeg documentation : Libavfilter ">
 <meta name="Generator" content="texi2html 1.82">
 <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
-<style type="text/css">
-<!--
-a.summary-letter {text-decoration: none}
-blockquote.smallquotation {font-size: smaller}
-pre.display {font-family: serif}
-pre.format {font-family: serif}
-pre.menu-comment {font-family: serif}
-pre.menu-preformatted {font-family: serif}
-pre.smalldisplay {font-family: serif; font-size: smaller}
-pre.smallexample {font-size: smaller}
-pre.smallformat {font-family: serif; font-size: smaller}
-pre.smalllisp {font-size: smaller}
-span.roman {font-family:serif; font-weight:normal;}
-span.sansserif {font-family:sans-serif; font-weight:normal;}
-ul.toc {list-style: none}
--->
-</style>
-
+<link rel="stylesheet" type="text/css" href="default.css" />
 
+<link rel="icon" href="favicon.png" type="image/png" />
 </head>
-
-<body lang="en" bgcolor="#FFFFFF" text="#000000" link="#0000FF" vlink="#800080" alink="#FF0000">
+<body>
+<div id="container">
+<div id="body">
 
 <a name="SEC_Top"></a>
 <h1 class="settitle">Libavfilter Documentation</h1>
@@ -49,2780 +34,41 @@ ul.toc {list-style: none}
 <div class="contents">
 
 <ul class="toc">
-  <li><a name="toc-Introduction" href="#Introduction">1. Introduction</a></li>
-  <li><a name="toc-Tutorial" href="#Tutorial">2. Tutorial</a></li>
-  <li><a name="toc-graph2dot" href="#graph2dot">3. graph2dot</a></li>
-  <li><a name="toc-Filtergraph-description" href="#Filtergraph-description">4. Filtergraph description</a>
-  <ul class="toc">
-    <li><a name="toc-Filtergraph-syntax" href="#Filtergraph-syntax">4.1 Filtergraph syntax</a></li>
-  </ul></li>
-  <li><a name="toc-Audio-Filters" href="#Audio-Filters">5. Audio Filters</a>
-  <ul class="toc">
-    <li><a name="toc-aformat" href="#aformat">5.1 aformat</a></li>
-    <li><a name="toc-anull" href="#anull">5.2 anull</a></li>
-    <li><a name="toc-aresample" href="#aresample">5.3 aresample</a></li>
-    <li><a name="toc-ashowinfo" href="#ashowinfo">5.4 ashowinfo</a></li>
-  </ul></li>
-  <li><a name="toc-Audio-Sources" href="#Audio-Sources">6. Audio Sources</a>
-  <ul class="toc">
-    <li><a name="toc-abuffer" href="#abuffer">6.1 abuffer</a></li>
-    <li><a name="toc-amovie" href="#amovie">6.2 amovie</a></li>
-    <li><a name="toc-anullsrc" href="#anullsrc">6.3 anullsrc</a></li>
-  </ul></li>
-  <li><a name="toc-Audio-Sinks" href="#Audio-Sinks">7. Audio Sinks</a>
-  <ul class="toc">
-    <li><a name="toc-abuffersink" href="#abuffersink">7.1 abuffersink</a></li>
-    <li><a name="toc-anullsink" href="#anullsink">7.2 anullsink</a></li>
-  </ul></li>
-  <li><a name="toc-Video-Filters" href="#Video-Filters">8. Video Filters</a>
-  <ul class="toc">
-    <li><a name="toc-blackframe" href="#blackframe">8.1 blackframe</a></li>
-    <li><a name="toc-boxblur" href="#boxblur">8.2 boxblur</a></li>
-    <li><a name="toc-copy" href="#copy">8.3 copy</a></li>
-    <li><a name="toc-crop" href="#crop">8.4 crop</a></li>
-    <li><a name="toc-cropdetect" href="#cropdetect">8.5 cropdetect</a></li>
-    <li><a name="toc-delogo" href="#delogo">8.6 delogo</a></li>
-    <li><a name="toc-drawbox" href="#drawbox">8.7 drawbox</a></li>
-    <li><a name="toc-drawtext" href="#drawtext">8.8 drawtext</a></li>
-    <li><a name="toc-fade" href="#fade">8.9 fade</a></li>
-    <li><a name="toc-fieldorder" href="#fieldorder">8.10 fieldorder</a></li>
-    <li><a name="toc-fifo" href="#fifo">8.11 fifo</a></li>
-    <li><a name="toc-format" href="#format">8.12 format</a></li>
-    <li><a name="toc-frei0r-1" href="#frei0r-1">8.13 frei0r</a></li>
-    <li><a name="toc-gradfun" href="#gradfun">8.14 gradfun</a></li>
-    <li><a name="toc-hflip" href="#hflip">8.15 hflip</a></li>
-    <li><a name="toc-hqdn3d" href="#hqdn3d">8.16 hqdn3d</a></li>
-    <li><a name="toc-lut_002c-lutrgb_002c-lutyuv" href="#lut_002c-lutrgb_002c-lutyuv">8.17 lut, lutrgb, lutyuv</a></li>
-    <li><a name="toc-mp" href="#mp">8.18 mp</a></li>
-    <li><a name="toc-negate" href="#negate">8.19 negate</a></li>
-    <li><a name="toc-noformat" href="#noformat">8.20 noformat</a></li>
-    <li><a name="toc-null" href="#null">8.21 null</a></li>
-    <li><a name="toc-ocv" href="#ocv">8.22 ocv</a>
-    <ul class="toc">
-      <li><a name="toc-dilate-1" href="#dilate-1">8.22.1 dilate</a></li>
-      <li><a name="toc-erode" href="#erode">8.22.2 erode</a></li>
-      <li><a name="toc-smooth" href="#smooth">8.22.3 smooth</a></li>
-    </ul></li>
-    <li><a name="toc-overlay" href="#overlay">8.23 overlay</a></li>
-    <li><a name="toc-pad" href="#pad">8.24 pad</a></li>
-    <li><a name="toc-pixdesctest" href="#pixdesctest">8.25 pixdesctest</a></li>
-    <li><a name="toc-scale" href="#scale">8.26 scale</a></li>
-    <li><a name="toc-select" href="#select">8.27 select</a></li>
-    <li><a name="toc-setdar-1" href="#setdar-1">8.28 setdar</a></li>
-    <li><a name="toc-setpts" href="#setpts">8.29 setpts</a></li>
-    <li><a name="toc-setsar-1" href="#setsar-1">8.30 setsar</a></li>
-    <li><a name="toc-settb" href="#settb">8.31 settb</a></li>
-    <li><a name="toc-showinfo" href="#showinfo">8.32 showinfo</a></li>
-    <li><a name="toc-slicify" href="#slicify">8.33 slicify</a></li>
-    <li><a name="toc-split" href="#split">8.34 split</a></li>
-    <li><a name="toc-transpose" href="#transpose">8.35 transpose</a></li>
-    <li><a name="toc-unsharp" href="#unsharp">8.36 unsharp</a></li>
-    <li><a name="toc-vflip" href="#vflip">8.37 vflip</a></li>
-    <li><a name="toc-yadif" href="#yadif">8.38 yadif</a></li>
-  </ul></li>
-  <li><a name="toc-Video-Sources" href="#Video-Sources">9. Video Sources</a>
-  <ul class="toc">
-    <li><a name="toc-buffer" href="#buffer">9.1 buffer</a></li>
-    <li><a name="toc-color" href="#color">9.2 color</a></li>
-    <li><a name="toc-movie" href="#movie">9.3 movie</a></li>
-    <li><a name="toc-mptestsrc" href="#mptestsrc">9.4 mptestsrc</a></li>
-    <li><a name="toc-nullsrc" href="#nullsrc">9.5 nullsrc</a></li>
-    <li><a name="toc-frei0r_005fsrc" href="#frei0r_005fsrc">9.6 frei0r_src</a></li>
-    <li><a name="toc-rgbtestsrc_002c-testsrc" href="#rgbtestsrc_002c-testsrc">9.7 rgbtestsrc, testsrc</a></li>
-  </ul></li>
-  <li><a name="toc-Video-Sinks" href="#Video-Sinks">10. Video Sinks</a>
-  <ul class="toc">
-    <li><a name="toc-buffersink" href="#buffersink">10.1 buffersink</a></li>
-    <li><a name="toc-nullsink" href="#nullsink">10.2 nullsink</a></li>
-  </ul>
-</li>
+  <li><a name="toc-Description" href="#Description">1. Description</a></li>
+  <li><a name="toc-See-Also" href="#See-Also">2. See Also</a></li>
+  <li><a name="toc-Authors" href="#Authors">3. Authors</a></li>
 </ul>
 </div>
 
-<hr size="1">
-<a name="Introduction"></a>
-<h1 class="chapter"><a href="libavfilter.html#toc-Introduction">1. Introduction</a></h1>
-
-<p>Libavfilter is the filtering API of FFmpeg. It is the substitute of the
-now deprecated &rsquo;vhooks&rsquo; and started as a Google Summer of Code project.
-</p>
-<p>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:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">   svn checkout svn://svn.ffmpeg.org/soc/libavfilter
-</pre></td></tr></table>
-
-<p>And then read the README file in the top directory to learn how to
-integrate it into ffmpeg and ffplay.
-</p>
-<p>But note that there may still be serious bugs in the code and its API
-and ABI should not be considered stable yet!
-</p>
-<a name="Tutorial"></a>
-<h1 class="chapter"><a href="libavfilter.html#toc-Tutorial">2. Tutorial</a></h1>
-
-<p>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:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">input --&gt; split --&gt; fifo -----------------------&gt; overlay --&gt; output
-            |                                        ^
-            |                                        |
-            +------&gt; fifo --&gt; crop --&gt; vflip --------+
-</pre></td></tr></table>
-
-<p>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:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">./ffmpeg -i in.avi -s 240x320 -vf &quot;[in] split [T1], fifo, [T2] overlay= 0:240 [out]; [T1] fifo, crop=0:0:-1:240, vflip [T2]
-</pre></td></tr></table>
-
-<p>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.
-</p>
-<p>Video filters are loaded using the <var>-vf</var> option passed to
-ffmpeg or to ffplay. Filters in the same linear chain are separated by
-commas. In our example, <var>split, fifo, overlay</var> are in one linear
-chain, and <var>fifo, crop, vflip</var> 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]</var> and <var>[T2]</var>. The magic
-labels <var>[in]</var> and <var>[out]</var> are the points where video is input
-and output.
-</p>
-<p>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.
-</p>
-<p>There exist so-called <var>source filters</var> that do not have a video
-input, and we expect in the future some <var>sink filters</var> that will
-not have video output.
-</p>
-<a name="graph2dot"></a>
-<h1 class="chapter"><a href="libavfilter.html#toc-graph2dot">3. graph2dot</a></h1>
-
-<p>The &lsquo;<tt>graph2dot</tt>&rsquo; program included in the FFmpeg &lsquo;<tt>tools</tt>&rsquo;
-directory can be used to parse a filter graph description and issue a
-corresponding textual representation in the dot language.
-</p>
-<p>Invoke the command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">graph2dot -h
-</pre></td></tr></table>
-
-<p>to see how to use &lsquo;<tt>graph2dot</tt>&rsquo;.
-</p>
-<p>You can then pass the dot description to the &lsquo;<tt>dot</tt>&rsquo; program (from
-the graphviz suite of programs) and obtain a graphical representation
-of the filter graph.
-</p>
-<p>For example the sequence of commands:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">echo <var>GRAPH_DESCRIPTION</var> | \
-tools/graph2dot -o graph.tmp &amp;&amp; \
-dot -Tpng graph.tmp -o graph.png &amp;&amp; \
-display graph.png
-</pre></td></tr></table>
-
-<p>can be used to create and display an image representing the graph
-described by the <var>GRAPH_DESCRIPTION</var> string.
-</p>
-<a name="Filtergraph-description"></a>
-<h1 class="chapter"><a href="libavfilter.html#toc-Filtergraph-description">4. Filtergraph description</a></h1>
-
-<p>A filtergraph is a directed graph of connected filters. It can contain
-cycles, and there can be multiple links between a pair of
-filters. Each link has one input pad on one side connecting it to one
-filter from which it takes its input, and one output pad on the other
-side connecting it to the one filter accepting its output.
-</p>
-<p>Each filter in a filtergraph is an instance of a filter class
-registered in the application, which defines the features and the
-number of input and output pads of the filter.
-</p>
-<p>A filter with no input pads is called a &quot;source&quot;, a filter with no
-output pads is called a &quot;sink&quot;.
-</p>
-<a name="Filtergraph-syntax"></a>
-<h2 class="section"><a href="libavfilter.html#toc-Filtergraph-syntax">4.1 Filtergraph syntax</a></h2>
-
-<p>A filtergraph can be represented using a textual representation, which
-is recognized by the <code>-vf</code> and <code>-af</code> options of the ff*
-tools, and by the <code>avfilter_graph_parse()</code> function defined in
-&lsquo;<tt>libavfilter/avfiltergraph.h</tt>&rsquo;.
-</p>
-<p>A filterchain consists of a sequence of connected filters, each one
-connected to the previous one in the sequence. A filterchain is
-represented by a list of &quot;,&quot;-separated filter descriptions.
-</p>
-<p>A filtergraph consists of a sequence of filterchains. A sequence of
-filterchains is represented by a list of &quot;;&quot;-separated filterchain
-descriptions.
-</p>
-<p>A filter is represented by a string of the form:
-[<var>in_link_1</var>]...[<var>in_link_N</var>]<var>filter_name</var>=<var>arguments</var>[<var>out_link_1</var>]...[<var>out_link_M</var>]
-</p>
-<p><var>filter_name</var> is the name of the filter class of which the
-described filter is an instance of, and has to be the name of one of
-the filter classes registered in the program.
-The name of the filter class is optionally followed by a string
-&quot;=<var>arguments</var>&quot;.
-</p>
-<p><var>arguments</var> is a string which contains the parameters used to
-initialize the filter instance, and are described in the filter
-descriptions below.
-</p>
-<p>The list of arguments can be quoted using the character &quot;&rsquo;&quot; as initial
-and ending mark, and the character &rsquo;\&rsquo; for escaping the characters
-within the quoted text; otherwise the argument string is considered
-terminated when the next special character (belonging to the set
-&quot;[]=;,&quot;) is encountered.
-</p>
-<p>The name and arguments of the filter are optionally preceded and
-followed by a list of link labels.
-A link label allows to name a link and associate it to a filter output
-or input pad. The preceding labels <var>in_link_1</var>
-... <var>in_link_N</var>, are associated to the filter input pads,
-the following labels <var>out_link_1</var> ... <var>out_link_M</var>, are
-associated to the output pads.
-</p>
-<p>When two link labels with the same name are found in the
-filtergraph, a link between the corresponding input and output pad is
-created.
-</p>
-<p>If an output pad is not labelled, it is linked by default to the first
-unlabelled input pad of the next filter in the filterchain.
-For example in the filterchain:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">nullsrc, split[L1], [L2]overlay, nullsink
-</pre></td></tr></table>
-<p>the split filter instance has two output pads, and the overlay filter
-instance two input pads. The first output pad of split is labelled
-&quot;L1&quot;, the first input pad of overlay is labelled &quot;L2&quot;, and the second
-output pad of split is linked to the second input pad of overlay,
-which are both unlabelled.
-</p>
-<p>In a complete filterchain all the unlabelled filter input and output
-pads must be connected. A filtergraph is considered valid if all the
-filter input and output pads of all the filterchains are connected.
-</p>
-<p>Follows a BNF description for the filtergraph syntax:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>NAME</var>             ::= sequence of alphanumeric characters and '_'
-<var>LINKLABEL</var>        ::= &quot;[&quot; <var>NAME</var> &quot;]&quot;
-<var>LINKLABELS</var>       ::= <var>LINKLABEL</var> [<var>LINKLABELS</var>]
-<var>FILTER_ARGUMENTS</var> ::= sequence of chars (eventually quoted)
-<var>FILTER</var>           ::= [<var>LINKNAMES</var>] <var>NAME</var> [&quot;=&quot; <var>ARGUMENTS</var>] [<var>LINKNAMES</var>]
-<var>FILTERCHAIN</var>      ::= <var>FILTER</var> [,<var>FILTERCHAIN</var>]
-<var>FILTERGRAPH</var>      ::= <var>FILTERCHAIN</var> [;<var>FILTERGRAPH</var>]
-</pre></td></tr></table>
-
-
-<a name="Audio-Filters"></a>
-<h1 class="chapter"><a href="libavfilter.html#toc-Audio-Filters">5. Audio Filters</a></h1>
-
-<p>When you configure your FFmpeg build, you can disable any of the
-existing filters using &ndash;disable-filters.
-The configure output will show the audio filters included in your
-build.
-</p>
-<p>Below is a description of the currently available audio filters.
-</p>
-<a name="aformat"></a>
-<h2 class="section"><a href="libavfilter.html#toc-aformat">5.1 aformat</a></h2>
-
-<p>Convert the input audio to one of the specified formats. The framework will
-negotiate the most appropriate format to minimize conversions.
-</p>
-<p>The filter accepts three lists of formats, separated by &quot;:&quot;, in the form:
-&quot;<var>sample_formats</var>:<var>channel_layouts</var>:<var>packing_formats</var>&quot;.
-</p>
-<p>Elements in each list are separated by &quot;,&quot; which has to be escaped in the
-filtergraph specification.
-</p>
-<p>The special parameter &quot;all&quot;, in place of a list of elements, signifies all
-supported formats.
-</p>
-<p>Some examples follow:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">aformat=u8\\,s16:mono:packed
-
-aformat=s16:mono\\,stereo:all
-</pre></td></tr></table>
-
-<a name="anull"></a>
-<h2 class="section"><a href="libavfilter.html#toc-anull">5.2 anull</a></h2>
-
-<p>Pass the audio source unchanged to the output.
-</p>
-<a name="aresample"></a>
-<h2 class="section"><a href="libavfilter.html#toc-aresample">5.3 aresample</a></h2>
-
-<p>Resample the input audio to the specified sample rate.
-</p>
-<p>The filter accepts exactly one parameter, the output sample rate. If not
-specified then the filter will automatically convert between its input
-and output sample rates.
-</p>
-<p>For example, to resample the input audio to 44100Hz:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">aresample=44100
-</pre></td></tr></table>
-
-<a name="ashowinfo"></a>
-<h2 class="section"><a href="libavfilter.html#toc-ashowinfo">5.4 ashowinfo</a></h2>
-
-<p>Show a line containing various information for each input audio frame.
-The input audio is not modified.
-</p>
-<p>The shown line contains a sequence of key/value pairs of the form
-<var>key</var>:<var>value</var>.
-</p>
-<p>A description of each shown parameter follows:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
-<dd><p>sequential number of the input frame, starting from 0
-</p>
-</dd>
-<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
-<dd><p>presentation TimeStamp of the input frame, expressed as a number of
-time base units. The time base unit depends on the filter input pad, and
-is usually 1/<var>sample_rate</var>.
-</p>
-</dd>
-<dt> &lsquo;<samp>pts_time</samp>&rsquo;</dt>
-<dd><p>presentation TimeStamp of the input frame, expressed as a number of
-seconds
-</p>
-</dd>
-<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
-<dd><p>position of the frame in the input stream, -1 if this information in
-unavailable and/or meanigless (for example in case of synthetic audio)
-</p>
-</dd>
-<dt> &lsquo;<samp>fmt</samp>&rsquo;</dt>
-<dd><p>sample format name
-</p>
-</dd>
-<dt> &lsquo;<samp>chlayout</samp>&rsquo;</dt>
-<dd><p>channel layout description
-</p>
-</dd>
-<dt> &lsquo;<samp>nb_samples</samp>&rsquo;</dt>
-<dd><p>number of samples (per each channel) contained in the filtered frame
-</p>
-</dd>
-<dt> &lsquo;<samp>rate</samp>&rsquo;</dt>
-<dd><p>sample rate for the audio frame
-</p>
-</dd>
-<dt> &lsquo;<samp>planar</samp>&rsquo;</dt>
-<dd><p>if the packing format is planar, 0 if packed
-</p>
-</dd>
-<dt> &lsquo;<samp>checksum</samp>&rsquo;</dt>
-<dd><p>Adler-32 checksum of all the planes of the input frame
-</p>
-</dd>
-<dt> &lsquo;<samp>plane_checksum</samp>&rsquo;</dt>
-<dd><p>Adler-32 checksum for each input frame plane, expressed in the form
-&quot;[<var>c0</var> <var>c1</var> <var>c2</var> <var>c3</var> <var>c4</var> <var>c5</var> <var>c6</var> <var>c7</var>]&quot;
-</p></dd>
-</dl>
-
-
-<a name="Audio-Sources"></a>
-<h1 class="chapter"><a href="libavfilter.html#toc-Audio-Sources">6. Audio Sources</a></h1>
-
-<p>Below is a description of the currently available audio sources.
-</p>
-<a name="abuffer"></a>
-<h2 class="section"><a href="libavfilter.html#toc-abuffer">6.1 abuffer</a></h2>
-
-<p>Buffer audio frames, and make them available to the filter chain.
-</p>
-<p>This source is mainly intended for a programmatic use, in particular
-through the interface defined in &lsquo;<tt>libavfilter/asrc_abuffer.h</tt>&rsquo;.
-</p>
-<p>It accepts the following mandatory parameters:
-<var>sample_rate</var>:<var>sample_fmt</var>:<var>channel_layout</var>:<var>packing</var>
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>sample_rate</samp>&rsquo;</dt>
-<dd><p>The sample rate of the incoming audio buffers.
-</p>
-</dd>
-<dt> &lsquo;<samp>sample_fmt</samp>&rsquo;</dt>
-<dd><p>The sample format of the incoming audio buffers.
-Either a sample format name or its corresponging integer representation from
-the enum AVSampleFormat in &lsquo;<tt>libavutil/samplefmt.h</tt>&rsquo;
-</p>
-</dd>
-<dt> &lsquo;<samp>channel_layout</samp>&rsquo;</dt>
-<dd><p>The channel layout of the incoming audio buffers.
-Either a channel layout name from channel_layout_map in
-&lsquo;<tt>libavutil/audioconvert.c</tt>&rsquo; or its corresponding integer representation
-from the AV_CH_LAYOUT_* macros in &lsquo;<tt>libavutil/audioconvert.h</tt>&rsquo;
-</p>
-</dd>
-<dt> &lsquo;<samp>packing</samp>&rsquo;</dt>
-<dd><p>Either &quot;packed&quot; or &quot;planar&quot;, or their integer representation: 0 or 1
-respectively.
-</p>
-</dd>
-</dl>
-
-<p>For example:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">abuffer=44100:s16:stereo:planar
-</pre></td></tr></table>
-
-<p>will instruct the source to accept planar 16bit signed stereo at 44100Hz.
-Since the sample format with name &quot;s16&quot; corresponds to the number
-1 and the &quot;stereo&quot; channel layout corresponds to the value 3, this is
-equivalent to:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">abuffer=44100:1:3:1
-</pre></td></tr></table>
-
-<a name="amovie"></a>
-<h2 class="section"><a href="libavfilter.html#toc-amovie">6.2 amovie</a></h2>
-
-<p>Read an audio stream from a movie container.
-</p>
-<p>It accepts the syntax: <var>movie_name</var>[:<var>options</var>] where
-<var>movie_name</var> is the name of the resource to read (not necessarily
-a file but also a device or a stream accessed through some protocol),
-and <var>options</var> is an optional sequence of <var>key</var>=<var>value</var>
-pairs, separated by &quot;:&quot;.
-</p>
-<p>The description of the accepted options follows.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>format_name, f</samp>&rsquo;</dt>
-<dd><p>Specify the format assumed for the movie to read, and can be either
-the name of a container or an input device. If not specified the
-format is guessed from <var>movie_name</var> or by probing.
-</p>
-</dd>
-<dt> &lsquo;<samp>seek_point, sp</samp>&rsquo;</dt>
-<dd><p>Specify the seek point in seconds, the frames will be output
-starting from this seek point, the parameter is evaluated with
-<code>av_strtod</code> so the numerical value may be suffixed by an IS
-postfix. Default value is &quot;0&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>stream_index, si</samp>&rsquo;</dt>
-<dd><p>Specify the index of the audio stream to read. If the value is -1,
-the best suited audio stream will be automatically selected. Default
-value is &quot;-1&quot;.
-</p>
-</dd>
-</dl>
-
-<a name="anullsrc"></a>
-<h2 class="section"><a href="libavfilter.html#toc-anullsrc">6.3 anullsrc</a></h2>
-
-<p>Null audio source, never return audio frames. It is mainly useful as a
-template and to be employed in analysis / debugging tools.
-</p>
-<p>It accepts as optional parameter a string of the form
-<var>sample_rate</var>:<var>channel_layout</var>.
-</p>
-<p><var>sample_rate</var> specify the sample rate, and defaults to 44100.
-</p>
-<p><var>channel_layout</var> specify the channel layout, and can be either an
-integer or a string representing a channel layout. The default value
-of <var>channel_layout</var> is 3, which corresponds to CH_LAYOUT_STEREO.
-</p>
-<p>Check the channel_layout_map definition in
-&lsquo;<tt>libavcodec/audioconvert.c</tt>&rsquo; for the mapping between strings and
-channel layout values.
-</p>
-<p>Follow some examples:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">#  set the sample rate to 48000 Hz and the channel layout to CH_LAYOUT_MONO.
-anullsrc=48000:4
-
-# same as
-anullsrc=48000:mono
-</pre></td></tr></table>
-
-
-<a name="Audio-Sinks"></a>
-<h1 class="chapter"><a href="libavfilter.html#toc-Audio-Sinks">7. Audio Sinks</a></h1>
-
-<p>Below is a description of the currently available audio sinks.
-</p>
-<a name="abuffersink"></a>
-<h2 class="section"><a href="libavfilter.html#toc-abuffersink">7.1 abuffersink</a></h2>
-
-<p>Buffer audio frames, and make them available to the end of filter chain.
-</p>
-<p>This sink is mainly intended for programmatic use, in particular
-through the interface defined in &lsquo;<tt>libavfilter/asink_abuffer.h</tt>&rsquo;.
-</p>
-<p>It requires a pointer to a ABufferSinkContext structure, which defines the
-incoming buffers&rsquo; format, to be passed as the opaque parameter to
-<code>avfilter_init_filter</code> for initialization.
-</p>
-<a name="anullsink"></a>
-<h2 class="section"><a href="libavfilter.html#toc-anullsink">7.2 anullsink</a></h2>
-
-<p>Null audio sink, do absolutely nothing with the input audio. It is
-mainly useful as a template and to be employed in analysis / debugging
-tools.
-</p>
-
-<a name="Video-Filters"></a>
-<h1 class="chapter"><a href="libavfilter.html#toc-Video-Filters">8. Video Filters</a></h1>
-
-<p>When you configure your FFmpeg build, you can disable any of the
-existing filters using &ndash;disable-filters.
-The configure output will show the video filters included in your
-build.
-</p>
-<p>Below is a description of the currently available video filters.
-</p>
-<a name="blackframe"></a>
-<h2 class="section"><a href="libavfilter.html#toc-blackframe">8.1 blackframe</a></h2>
-
-<p>Detect frames that are (almost) completely black. Can be useful to
-detect chapter transitions or commercials. Output lines consist of
-the frame number of the detected frame, the percentage of blackness,
-the position in the file if known or -1 and the timestamp in seconds.
-</p>
-<p>In order to display the output lines, you need to set the loglevel at
-least to the AV_LOG_INFO value.
-</p>
-<p>The filter accepts the syntax:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">blackframe[=<var>amount</var>:[<var>threshold</var>]]
-</pre></td></tr></table>
-
-<p><var>amount</var> is the percentage of the pixels that have to be below the
-threshold, and defaults to 98.
-</p>
-<p><var>threshold</var> is the threshold below which a pixel value is
-considered black, and defaults to 32.
-</p>
-<a name="boxblur"></a>
-<h2 class="section"><a href="libavfilter.html#toc-boxblur">8.2 boxblur</a></h2>
-
-<p>Apply boxblur algorithm to the input video.
-</p>
-<p>This filter accepts the parameters:
-<var>luma_power</var>:<var>luma_radius</var>:<var>chroma_radius</var>:<var>chroma_power</var>:<var>alpha_radius</var>:<var>alpha_power</var>
-</p>
-<p>Chroma and alpha parameters are optional, if not specified they default
-to the corresponding values set for <var>luma_radius</var> and
-<var>luma_power</var>.
-</p>
-<p><var>luma_radius</var>, <var>chroma_radius</var>, and <var>alpha_radius</var> represent
-the radius in pixels of the box used for blurring the corresponding
-input plane. They are expressions, and can contain the following
-constants:
-</p><dl compact="compact">
-<dt> &lsquo;<samp>w, h</samp>&rsquo;</dt>
-<dd><p>the input width and heigth in pixels
-</p>
-</dd>
-<dt> &lsquo;<samp>cw, ch</samp>&rsquo;</dt>
-<dd><p>the input chroma image width and height in pixels
-</p>
-</dd>
-<dt> &lsquo;<samp>hsub, vsub</samp>&rsquo;</dt>
-<dd><p>horizontal and vertical chroma subsample values. For example for the
-pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
-</p></dd>
-</dl>
-
-<p>The radius must be a non-negative number, and must be not greater than
-the value of the expression <code>min(w,h)/2</code> for the luma and alpha planes,
-and of <code>min(cw,ch)/2</code> for the chroma planes.
-</p>
-<p><var>luma_power</var>, <var>chroma_power</var>, and <var>alpha_power</var> represent
-how many times the boxblur filter is applied to the corresponding
-plane.
-</p>
-<p>Some examples follow:
-</p>
-<ul>
-<li>
-Apply a boxblur filter with luma, chroma, and alpha radius
-set to 2:
-<table><tr><td>&nbsp;</td><td><pre class="example">boxblur=2:1
-</pre></td></tr></table>
-
-</li><li>
-Set luma radius to 2, alpha and chroma radius to 0
-<table><tr><td>&nbsp;</td><td><pre class="example">boxblur=2:1:0:0:0:0
-</pre></td></tr></table>
-
-</li><li>
-Set luma and chroma radius to a fraction of the video dimension
-<table><tr><td>&nbsp;</td><td><pre class="example">boxblur=min(h\,w)/10:1:min(cw\,ch)/10:1
-</pre></td></tr></table>
-
-</li></ul>
-
-<a name="copy"></a>
-<h2 class="section"><a href="libavfilter.html#toc-copy">8.3 copy</a></h2>
-
-<p>Copy the input source unchanged to the output. Mainly useful for
-testing purposes.
-</p>
-<a name="crop"></a>
-<h2 class="section"><a href="libavfilter.html#toc-crop">8.4 crop</a></h2>
-
-<p>Crop the input video to <var>out_w</var>:<var>out_h</var>:<var>x</var>:<var>y</var>.
-</p>
-<p>The parameters are expressions containing the following constants:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>E, PI, PHI</samp>&rsquo;</dt>
-<dd><p>the corresponding mathematical approximated values for e
-(euler number), pi (greek PI), PHI (golden ratio)
-</p>
-</dd>
-<dt> &lsquo;<samp>x, y</samp>&rsquo;</dt>
-<dd><p>the computed values for <var>x</var> and <var>y</var>. They are evaluated for
-each new frame.
-</p>
-</dd>
-<dt> &lsquo;<samp>in_w, in_h</samp>&rsquo;</dt>
-<dd><p>the input width and heigth
-</p>
-</dd>
-<dt> &lsquo;<samp>iw, ih</samp>&rsquo;</dt>
-<dd><p>same as <var>in_w</var> and <var>in_h</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>out_w, out_h</samp>&rsquo;</dt>
-<dd><p>the output (cropped) width and heigth
-</p>
-</dd>
-<dt> &lsquo;<samp>ow, oh</samp>&rsquo;</dt>
-<dd><p>same as <var>out_w</var> and <var>out_h</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
-<dd><p>same as <var>iw</var> / <var>ih</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
-<dd><p>input sample aspect ratio
-</p>
-</dd>
-<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
-<dd><p>input display aspect ratio, it is the same as (<var>iw</var> / <var>ih</var>) * <var>sar</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>hsub, vsub</samp>&rsquo;</dt>
-<dd><p>horizontal and vertical chroma subsample values. For example for the
-pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
-</p>
-</dd>
-<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
-<dd><p>the number of input frame, starting from 0
-</p>
-</dd>
-<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
-<dd><p>the position in the file of the input frame, NAN if unknown
-</p>
-</dd>
-<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
-<dd><p>timestamp expressed in seconds, NAN if the input timestamp is unknown
-</p>
-</dd>
-</dl>
-
-<p>The <var>out_w</var> and <var>out_h</var> parameters specify the expressions for
-the width and height of the output (cropped) video. They are
-evaluated just at the configuration of the filter.
-</p>
-<p>The default value of <var>out_w</var> is &quot;in_w&quot;, and the default value of
-<var>out_h</var> is &quot;in_h&quot;.
-</p>
-<p>The expression for <var>out_w</var> may depend on the value of <var>out_h</var>,
-and the expression for <var>out_h</var> may depend on <var>out_w</var>, but they
-cannot depend on <var>x</var> and <var>y</var>, as <var>x</var> and <var>y</var> are
-evaluated after <var>out_w</var> and <var>out_h</var>.
-</p>
-<p>The <var>x</var> and <var>y</var> parameters specify the expressions for the
-position of the top-left corner of the output (non-cropped) area. They
-are evaluated for each frame. If the evaluated value is not valid, it
-is approximated to the nearest valid value.
-</p>
-<p>The default value of <var>x</var> is &quot;(in_w-out_w)/2&quot;, and the default
-value for <var>y</var> is &quot;(in_h-out_h)/2&quot;, which set the cropped area at
-the center of the input image.
-</p>
-<p>The expression for <var>x</var> may depend on <var>y</var>, and the expression
-for <var>y</var> may depend on <var>x</var>.
-</p>
-<p>Follow some examples:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># crop the central input area with size 100x100
-crop=100:100
-
-# crop the central input area with size 2/3 of the input video
-&quot;crop=2/3*in_w:2/3*in_h&quot;
-
-# crop the input video central square
-crop=in_h
-
-# delimit the rectangle with the top-left corner placed at position
-# 100:100 and the right-bottom corner corresponding to the right-bottom
-# corner of the input image.
-crop=in_w-100:in_h-100:100:100
-
-# crop 10 pixels from the left and right borders, and 20 pixels from
-# the top and bottom borders
-&quot;crop=in_w-2*10:in_h-2*20&quot;
-
-# keep only the bottom right quarter of the input image
-&quot;crop=in_w/2:in_h/2:in_w/2:in_h/2&quot;
-
-# crop height for getting Greek harmony
-&quot;crop=in_w:1/PHI*in_w&quot;
-
-# trembling effect
-&quot;crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(n/10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(n/7)&quot;
-
-# erratic camera effect depending on timestamp
-&quot;crop=in_w/2:in_h/2:(in_w-out_w)/2+((in_w-out_w)/2)*sin(t*10):(in_h-out_h)/2 +((in_h-out_h)/2)*sin(t*13)&quot;
-
-# set x depending on the value of y
-&quot;crop=in_w/2:in_h/2:y:10+10*sin(n/10)&quot;
-</pre></td></tr></table>
-
-<a name="cropdetect"></a>
-<h2 class="section"><a href="libavfilter.html#toc-cropdetect">8.5 cropdetect</a></h2>
-
-<p>Auto-detect crop size.
-</p>
-<p>Calculate necessary cropping parameters and prints the recommended
-parameters through the logging system. The detected dimensions
-correspond to the non-black area of the input video.
-</p>
-<p>It accepts the syntax:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">cropdetect[=<var>limit</var>[:<var>round</var>[:<var>reset</var>]]]
-</pre></td></tr></table>
-
-<dl compact="compact">
-<dt> &lsquo;<samp>limit</samp>&rsquo;</dt>
-<dd><p>Threshold, which can be optionally specified from nothing (0) to
-everything (255), defaults to 24.
-</p>
-</dd>
-<dt> &lsquo;<samp>round</samp>&rsquo;</dt>
-<dd><p>Value which the width/height should be divisible by, defaults to
-16. The offset is automatically adjusted to center the video. Use 2 to
-get only even dimensions (needed for 4:2:2 video). 16 is best when
-encoding to most video codecs.
-</p>
-</dd>
-<dt> &lsquo;<samp>reset</samp>&rsquo;</dt>
-<dd><p>Counter that determines after how many frames cropdetect will reset
-the previously detected largest video area and start over to detect
-the current optimal crop area. Defaults to 0.
-</p>
-<p>This can be useful when channel logos distort the video area. 0
-indicates never reset and return the largest area encountered during
-playback.
-</p></dd>
-</dl>
-
-<a name="delogo"></a>
-<h2 class="section"><a href="libavfilter.html#toc-delogo">8.6 delogo</a></h2>
-
-<p>Suppress a TV station logo by a simple interpolation of the surrounding
-pixels. Just set a rectangle covering the logo and watch it disappear
-(and sometimes something even uglier appear - your mileage may vary).
-</p>
-<p>The filter accepts parameters as a string of the form
-&quot;<var>x</var>:<var>y</var>:<var>w</var>:<var>h</var>:<var>band</var>&quot;, or as a list of
-<var>key</var>=<var>value</var> pairs, separated by &quot;:&quot;.
-</p>
-<p>The description of the accepted parameters follows.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>x, y</samp>&rsquo;</dt>
-<dd><p>Specify the top left corner coordinates of the logo. They must be
-specified.
-</p>
-</dd>
-<dt> &lsquo;<samp>w, h</samp>&rsquo;</dt>
-<dd><p>Specify the width and height of the logo to clear. They must be
-specified.
-</p>
-</dd>
-<dt> &lsquo;<samp>band, t</samp>&rsquo;</dt>
-<dd><p>Specify the thickness of the fuzzy edge of the rectangle (added to
-<var>w</var> and <var>h</var>). The default value is 4.
-</p>
-</dd>
-<dt> &lsquo;<samp>show</samp>&rsquo;</dt>
-<dd><p>When set to 1, a green rectangle is drawn on the screen to simplify
-finding the right <var>x</var>, <var>y</var>, <var>w</var>, <var>h</var> parameters, and
-<var>band</var> is set to 4. The default value is 0.
-</p>
-</dd>
-</dl>
-
-<p>Some examples follow.
-</p>
-<ul>
-<li>
-Set a rectangle covering the area with top left corner coordinates 0,0
-and size 100x77, setting a band of size 10:
-<table><tr><td>&nbsp;</td><td><pre class="example">delogo=0:0:100:77:10
-</pre></td></tr></table>
-
-</li><li>
-As the previous example, but use named options:
-<table><tr><td>&nbsp;</td><td><pre class="example">delogo=x=0:y=0:w=100:h=77:band=10
-</pre></td></tr></table>
-
-</li></ul>
-
-<a name="drawbox"></a>
-<h2 class="section"><a href="libavfilter.html#toc-drawbox">8.7 drawbox</a></h2>
-
-<p>Draw a colored box on the input image.
-</p>
-<p>It accepts the syntax:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">drawbox=<var>x</var>:<var>y</var>:<var>width</var>:<var>height</var>:<var>color</var>
-</pre></td></tr></table>
-
-<dl compact="compact">
-<dt> &lsquo;<samp>x, y</samp>&rsquo;</dt>
-<dd><p>Specify the top left corner coordinates of the box. Default to 0.
-</p>
-</dd>
-<dt> &lsquo;<samp>width, height</samp>&rsquo;</dt>
-<dd><p>Specify the width and height of the box, if 0 they are interpreted as
-the input width and height. Default to 0.
-</p>
-</dd>
-<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
-<dd><p>Specify the color of the box to write, it can be the name of a color
-(case insensitive match) or a 0xRRGGBB[AA] sequence.
-</p></dd>
-</dl>
-
-<p>Follow some examples:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># draw a black box around the edge of the input image
-drawbox
-
-# draw a box with color red and an opacity of 50%
-drawbox=10:20:200:60:red@0.5&quot;
-</pre></td></tr></table>
-
-<a name="drawtext"></a>
-<h2 class="section"><a href="libavfilter.html#toc-drawtext">8.8 drawtext</a></h2>
-
-<p>Draw text string or text from specified file on top of video using the
-libfreetype library.
-</p>
-<p>To enable compilation of this filter you need to configure FFmpeg with
-<code>--enable-libfreetype</code>.
-</p>
-<p>The filter also recognizes strftime() sequences in the provided text
-and expands them accordingly. Check the documentation of strftime().
-</p>
-<p>The filter accepts parameters as a list of <var>key</var>=<var>value</var> pairs,
-separated by &quot;:&quot;.
-</p>
-<p>The description of the accepted parameters follows.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>fontfile</samp>&rsquo;</dt>
-<dd><p>The font file to be used for drawing text. Path must be included.
-This parameter is mandatory.
-</p>
-</dd>
-<dt> &lsquo;<samp>text</samp>&rsquo;</dt>
-<dd><p>The text string to be drawn. The text must be a sequence of UTF-8
-encoded characters.
-This parameter is mandatory if no file is specified with the parameter
-<var>textfile</var>.
-</p>
-</dd>
-<dt> &lsquo;<samp>textfile</samp>&rsquo;</dt>
-<dd><p>A text file containing text to be drawn. The text must be a sequence
-of UTF-8 encoded characters.
-</p>
-<p>This parameter is mandatory if no text string is specified with the
-parameter <var>text</var>.
-</p>
-<p>If both text and textfile are specified, an error is thrown.
-</p>
-</dd>
-<dt> &lsquo;<samp>x, y</samp>&rsquo;</dt>
-<dd><p>The offsets where text will be drawn within the video frame.
-Relative to the top/left border of the output image.
-</p>
-<p>The default value of <var>x</var> and <var>y</var> is 0.
-</p>
-</dd>
-<dt> &lsquo;<samp>fontsize</samp>&rsquo;</dt>
-<dd><p>The font size to be used for drawing text.
-The default value of <var>fontsize</var> is 16.
-</p>
-</dd>
-<dt> &lsquo;<samp>fontcolor</samp>&rsquo;</dt>
-<dd><p>The color to be used for drawing fonts.
-Either a string (e.g. &quot;red&quot;) or in 0xRRGGBB[AA] format
-(e.g. &quot;0xff000033&quot;), possibly followed by an alpha specifier.
-The default value of <var>fontcolor</var> is &quot;black&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>boxcolor</samp>&rsquo;</dt>
-<dd><p>The color to be used for drawing box around text.
-Either a string (e.g. &quot;yellow&quot;) or in 0xRRGGBB[AA] format
-(e.g. &quot;0xff00ff&quot;), possibly followed by an alpha specifier.
-The default value of <var>boxcolor</var> is &quot;white&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>box</samp>&rsquo;</dt>
-<dd><p>Used to draw a box around text using background color.
-Value should be either 1 (enable) or 0 (disable).
-The default value of <var>box</var> is 0.
-</p>
-</dd>
-<dt> &lsquo;<samp>shadowx, shadowy</samp>&rsquo;</dt>
-<dd><p>The x and y offsets for the text shadow position with respect to the
-position of the text. They can be either positive or negative
-values. Default value for both is &quot;0&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>shadowcolor</samp>&rsquo;</dt>
-<dd><p>The color to be used for drawing a shadow behind the drawn text.  It
-can be a color name (e.g. &quot;yellow&quot;) or a string in the 0xRRGGBB[AA]
-form (e.g. &quot;0xff00ff&quot;), possibly followed by an alpha specifier.
-The default value of <var>shadowcolor</var> is &quot;black&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>ft_load_flags</samp>&rsquo;</dt>
-<dd><p>Flags to be used for loading the fonts.
-</p>
-<p>The flags map the corresponding flags supported by libfreetype, and are
-a combination of the following values:
-</p><dl compact="compact">
-<dt> <var>default</var></dt>
-<dt> <var>no_scale</var></dt>
-<dt> <var>no_hinting</var></dt>
-<dt> <var>render</var></dt>
-<dt> <var>no_bitmap</var></dt>
-<dt> <var>vertical_layout</var></dt>
-<dt> <var>force_autohint</var></dt>
-<dt> <var>crop_bitmap</var></dt>
-<dt> <var>pedantic</var></dt>
-<dt> <var>ignore_global_advance_width</var></dt>
-<dt> <var>no_recurse</var></dt>
-<dt> <var>ignore_transform</var></dt>
-<dt> <var>monochrome</var></dt>
-<dt> <var>linear_design</var></dt>
-<dt> <var>no_autohint</var></dt>
-<dt> <var>end table</var></dt>
-</dl>
+<a name="Description"></a>
+<h1 class="chapter"><a href="libavfilter.html#toc-Description">1. Description</a></h1>
 
-<p>Default value is &quot;render&quot;.
+<p>The libavfilter library provides a generic audio/video filtering
+framework containing several filters, sources and sinks.
 </p>
-<p>For more information consult the documentation for the FT_LOAD_*
-libfreetype flags.
-</p>
-</dd>
-<dt> &lsquo;<samp>tabsize</samp>&rsquo;</dt>
-<dd><p>The size in number of spaces to use for rendering the tab.
-Default value is 4.
-</p></dd>
-</dl>
-
-<p>For example the command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text'&quot;
-</pre></td></tr></table>
-
-<p>will draw &quot;Test Text&quot; with font FreeSerif, using the default values
-for the optional parameters.
-</p>
-<p>The command:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">drawtext=&quot;fontfile=/usr/share/fonts/truetype/freefont/FreeSerif.ttf: text='Test Text':\
-          x=100: y=50: fontsize=24: fontcolor=yellow@0.2: box=1: boxcolor=red@0.2&quot;
-</pre></td></tr></table>
-
-<p>will draw &rsquo;Test Text&rsquo; with font FreeSerif of size 24 at position x=100
-and y=50 (counting from the top-left corner of the screen), text is
-yellow with a red box around it. Both the text and the box have an
-opacity of 20%.
-</p>
-<p>Note that the double quotes are not necessary if spaces are not used
-within the parameter list.
-</p>
-<p>For more information about libfreetype, check:
-<a href="http://www.freetype.org/">http://www.freetype.org/</a>.
-</p>
-<a name="fade"></a>
-<h2 class="section"><a href="libavfilter.html#toc-fade">8.9 fade</a></h2>
-
-<p>Apply fade-in/out effect to input video.
-</p>
-<p>It accepts the parameters:
-<var>type</var>:<var>start_frame</var>:<var>nb_frames</var>
-</p>
-<p><var>type</var> specifies if the effect type, can be either &quot;in&quot; for
-fade-in, or &quot;out&quot; for a fade-out effect.
-</p>
-<p><var>start_frame</var> specifies the number of the start frame for starting
-to apply the fade effect.
-</p>
-<p><var>nb_frames</var> specifies the number of frames for which the fade
-effect has to last. At the end of the fade-in effect the output video
-will have the same intensity as the input video, at the end of the
-fade-out transition the output video will be completely black.
-</p>
-<p>A few usage examples follow, usable too as test scenarios.
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># fade in first 30 frames of video
-fade=in:0:30
-
-# fade out last 45 frames of a 200-frame video
-fade=out:155:45
-
-# fade in first 25 frames and fade out last 25 frames of a 1000-frame video
-fade=in:0:25, fade=out:975:25
 
-# make first 5 frames black, then fade in from frame 5-24
-fade=in:5:20
-</pre></td></tr></table>
+<a name="See-Also"></a>
+<h1 class="chapter"><a href="libavfilter.html#toc-See-Also">2. See Also</a></h1>
 
-<a name="fieldorder"></a>
-<h2 class="section"><a href="libavfilter.html#toc-fieldorder">8.10 fieldorder</a></h2>
-
-<p>Transform the field order of the input video.
-</p>
-<p>It accepts one parameter which specifies the required field order that
-the input interlaced video will be transformed to. The parameter can
-assume one of the following values:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>0 or bff</samp>&rsquo;</dt>
-<dd><p>output bottom field first
-</p></dd>
-<dt> &lsquo;<samp>1 or tff</samp>&rsquo;</dt>
-<dd><p>output top field first
-</p></dd>
-</dl>
-
-<p>Default value is &quot;tff&quot;.
+<p><a href="ffmpeg.html">ffmpeg</a>, <a href="ffplay.html">ffplay</a>, <a href="ffprobe.html">ffprobe</a>, <a href="ffserver.html">ffserver</a>,
+<a href="ffmpeg-filters.html">ffmpeg-filters</a>,
+<a href="libavutil.html">libavutil</a>, <a href="libswscale.html">libswscale</a>, <a href="libswresample.html">libswresample</a>,
+<a href="libavcodec.html">libavcodec</a>, <a href="libavformat.html">libavformat</a>, <a href="libavdevice.html">libavdevice</a>
 </p>
-<p>Transformation is achieved by shifting the picture content up or down
-by one line, and filling the remaining line with appropriate picture content.
-This method is consistent with most broadcast field order converters.
-</p>
-<p>If the input video is not flagged as being interlaced, or it is already
-flagged as being of the required output field order then this filter does
-not alter the incoming video.
-</p>
-<p>This filter is very useful when converting to or from PAL DV material,
-which is bottom field first.
-</p>
-<p>For example:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">./ffmpeg -i in.vob -vf &quot;fieldorder=bff&quot; out.dv
-</pre></td></tr></table>
-
-<a name="fifo"></a>
-<h2 class="section"><a href="libavfilter.html#toc-fifo">8.11 fifo</a></h2>
 
-<p>Buffer input images and send them when they are requested.
-</p>
-<p>This filter is mainly useful when auto-inserted by the libavfilter
-framework.
-</p>
-<p>The filter does not take parameters.
-</p>
-<a name="format"></a>
-<h2 class="section"><a href="libavfilter.html#toc-format">8.12 format</a></h2>
+<a name="Authors"></a>
+<h1 class="chapter"><a href="libavfilter.html#toc-Authors">3. Authors</a></h1>
 
-<p>Convert the input video to one of the specified pixel formats.
-Libavfilter will try to pick one that is supported for the input to
-the next filter.
-</p>
-<p>The filter accepts a list of pixel format names, separated by &quot;:&quot;,
-for example &quot;yuv420p:monow:rgb24&quot;.
+<p>The FFmpeg developers.
 </p>
-<p>Some examples follow:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># convert the input video to the format &quot;yuv420p&quot;
-format=yuv420p
-
-# convert the input video to any of the formats in the list
-format=yuv420p:yuv444p:yuv410p
-</pre></td></tr></table>
-
-<p><a name="frei0r"></a>
-</p><a name="frei0r-1"></a>
-<h2 class="section"><a href="libavfilter.html#toc-frei0r-1">8.13 frei0r</a></h2>
-
-<p>Apply a frei0r effect to the input video.
+<p>For details about the authorship, see the Git history of the project
+(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
+<code>git log</code> in the FFmpeg source directory, or browsing the
+online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
 </p>
-<p>To enable compilation of this filter you need to install the frei0r
-header and configure FFmpeg with &ndash;enable-frei0r.
+<p>Maintainers for the specific components are listed in the file
+&lsquo;<tt>MAINTAINERS</tt>&rsquo; in the source code tree.
 </p>
-<p>The filter supports the syntax:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>filter_name</var>[{:|=}<var>param1</var>:<var>param2</var>:...:<var>paramN</var>]
-</pre></td></tr></table>
 
-<p><var>filter_name</var> is the name to the frei0r effect to load. If the
-environment variable <code>FREI0R_PATH</code> is defined, the frei0r effect
-is searched in each one of the directories specified by the colon
-separated list in <code>FREIOR_PATH</code>, otherwise in the standard frei0r
-paths, which are in this order: &lsquo;<tt>HOME/.frei0r-1/lib/</tt>&rsquo;,
-&lsquo;<tt>/usr/local/lib/frei0r-1/</tt>&rsquo;, &lsquo;<tt>/usr/lib/frei0r-1/</tt>&rsquo;.
-</p>
-<p><var>param1</var>, <var>param2</var>, ... , <var>paramN</var> specify the parameters
-for the frei0r effect.
-</p>
-<p>A frei0r effect parameter can be a boolean (whose values are specified
-with &quot;y&quot; and &quot;n&quot;), a double, a color (specified by the syntax
-<var>R</var>/<var>G</var>/<var>B</var>, <var>R</var>, <var>G</var>, and <var>B</var> being float
-numbers from 0.0 to 1.0) or by an <code>av_parse_color()</code> color
-description), a position (specified by the syntax <var>X</var>/<var>Y</var>,
-<var>X</var> and <var>Y</var> being float numbers) and a string.
-</p>
-<p>The number and kind of parameters depend on the loaded effect. If an
-effect parameter is not specified the default value is set.
-</p>
-<p>Some examples follow:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># apply the distort0r effect, set the first two double parameters
-frei0r=distort0r:0.5:0.01
-
-# apply the colordistance effect, takes a color as first parameter
-frei0r=colordistance:0.2/0.3/0.4
-frei0r=colordistance:violet
-frei0r=colordistance:0x112233
-
-# apply the perspective effect, specify the top left and top right
-# image positions
-frei0r=perspective:0.2/0.2:0.8/0.2
-</pre></td></tr></table>
-
-<p>For more information see:
-<a href="http://piksel.org/frei0r">http://piksel.org/frei0r</a>
-</p>
-<a name="gradfun"></a>
-<h2 class="section"><a href="libavfilter.html#toc-gradfun">8.14 gradfun</a></h2>
-
-<p>Fix the banding artifacts that are sometimes introduced into nearly flat
-regions by truncation to 8bit colordepth.
-Interpolate the gradients that should go where the bands are, and
-dither them.
-</p>
-<p>This filter is designed for playback only.  Do not use it prior to
-lossy compression, because compression tends to lose the dither and
-bring back the bands.
-</p>
-<p>The filter takes two optional parameters, separated by &rsquo;:&rsquo;:
-<var>strength</var>:<var>radius</var>
-</p>
-<p><var>strength</var> is the maximum amount by which the filter will change
-any one pixel. Also the threshold for detecting nearly flat
-regions. Acceptable values range from .51 to 255, default value is
-1.2, out-of-range values will be clipped to the valid range.
-</p>
-<p><var>radius</var> is the neighborhood to fit the gradient to. A larger
-radius makes for smoother gradients, but also prevents the filter from
-modifying the pixels near detailed regions. Acceptable values are
-8-32, default value is 16, out-of-range values will be clipped to the
-valid range.
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example"># default parameters
-gradfun=1.2:16
-
-# omitting radius
-gradfun=1.2
-</pre></td></tr></table>
-
-<a name="hflip"></a>
-<h2 class="section"><a href="libavfilter.html#toc-hflip">8.15 hflip</a></h2>
-
-<p>Flip the input video horizontally.
-</p>
-<p>For example to horizontally flip the video in input with
-&lsquo;<tt>ffmpeg</tt>&rsquo;:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.avi -vf &quot;hflip&quot; out.avi
-</pre></td></tr></table>
-
-<a name="hqdn3d"></a>
-<h2 class="section"><a href="libavfilter.html#toc-hqdn3d">8.16 hqdn3d</a></h2>
-
-<p>High precision/quality 3d denoise filter. This filter aims to reduce
-image noise producing smooth images and making still images really
-still. It should enhance compressibility.
-</p>
-<p>It accepts the following optional parameters:
-<var>luma_spatial</var>:<var>chroma_spatial</var>:<var>luma_tmp</var>:<var>chroma_tmp</var>
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>luma_spatial</samp>&rsquo;</dt>
-<dd><p>a non-negative float number which specifies spatial luma strength,
-defaults to 4.0
-</p>
-</dd>
-<dt> &lsquo;<samp>chroma_spatial</samp>&rsquo;</dt>
-<dd><p>a non-negative float number which specifies spatial chroma strength,
-defaults to 3.0*<var>luma_spatial</var>/4.0
-</p>
-</dd>
-<dt> &lsquo;<samp>luma_tmp</samp>&rsquo;</dt>
-<dd><p>a float number which specifies luma temporal strength, defaults to
-6.0*<var>luma_spatial</var>/4.0
-</p>
-</dd>
-<dt> &lsquo;<samp>chroma_tmp</samp>&rsquo;</dt>
-<dd><p>a float number which specifies chroma temporal strength, defaults to
-<var>luma_tmp</var>*<var>chroma_spatial</var>/<var>luma_spatial</var>
-</p></dd>
-</dl>
-
-<a name="lut_002c-lutrgb_002c-lutyuv"></a>
-<h2 class="section"><a href="libavfilter.html#toc-lut_002c-lutrgb_002c-lutyuv">8.17 lut, lutrgb, lutyuv</a></h2>
-
-<p>Compute a look-up table for binding each pixel component input value
-to an output value, and apply it to input video.
-</p>
-<p><var>lutyuv</var> applies a lookup table to a YUV input video, <var>lutrgb</var>
-to an RGB input video.
-</p>
-<p>These filters accept in input a &quot;:&quot;-separated list of options, which
-specify the expressions used for computing the lookup table for the
-corresponding pixel component values.
-</p>
-<p>The <var>lut</var> filter requires either YUV or RGB pixel formats in
-input, and accepts the options:
-</p><dl compact="compact">
-<dd><p><var>c0</var> (first  pixel component)
-<var>c1</var> (second pixel component)
-<var>c2</var> (third  pixel component)
-<var>c3</var> (fourth pixel component, corresponds to the alpha component)
-</p></dd>
-</dl>
-
-<p>The exact component associated to each option depends on the format in
-input.
-</p>
-<p>The <var>lutrgb</var> filter requires RGB pixel formats in input, and
-accepts the options:
-</p><dl compact="compact">
-<dd><p><var>r</var> (red component)
-<var>g</var> (green component)
-<var>b</var> (blue component)
-<var>a</var> (alpha component)
-</p></dd>
-</dl>
-
-<p>The <var>lutyuv</var> filter requires YUV pixel formats in input, and
-accepts the options:
-</p><dl compact="compact">
-<dd><p><var>y</var> (Y/luminance component)
-<var>u</var> (U/Cb component)
-<var>v</var> (V/Cr component)
-<var>a</var> (alpha component)
-</p></dd>
-</dl>
-
-<p>The expressions can contain the following constants and functions:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>E, PI, PHI</samp>&rsquo;</dt>
-<dd><p>the corresponding mathematical approximated values for e
-(euler number), pi (greek PI), PHI (golden ratio)
-</p>
-</dd>
-<dt> &lsquo;<samp>w, h</samp>&rsquo;</dt>
-<dd><p>the input width and heigth
-</p>
-</dd>
-<dt> &lsquo;<samp>val</samp>&rsquo;</dt>
-<dd><p>input value for the pixel component
-</p>
-</dd>
-<dt> &lsquo;<samp>clipval</samp>&rsquo;</dt>
-<dd><p>the input value clipped in the <var>minval</var>-<var>maxval</var> range
-</p>
-</dd>
-<dt> &lsquo;<samp>maxval</samp>&rsquo;</dt>
-<dd><p>maximum value for the pixel component
-</p>
-</dd>
-<dt> &lsquo;<samp>minval</samp>&rsquo;</dt>
-<dd><p>minimum value for the pixel component
-</p>
-</dd>
-<dt> &lsquo;<samp>negval</samp>&rsquo;</dt>
-<dd><p>the negated value for the pixel component value clipped in the
-<var>minval</var>-<var>maxval</var> range , it corresponds to the expression
-&quot;maxval-clipval+minval&quot;
-</p>
-</dd>
-<dt> &lsquo;<samp>clip(val)</samp>&rsquo;</dt>
-<dd><p>the computed value in <var>val</var> clipped in the
-<var>minval</var>-<var>maxval</var> range
-</p>
-</dd>
-<dt> &lsquo;<samp>gammaval(gamma)</samp>&rsquo;</dt>
-<dd><p>the computed gamma correction value of the pixel component value
-clipped in the <var>minval</var>-<var>maxval</var> range, corresponds to the
-expression
-&quot;pow((clipval-minval)/(maxval-minval)\,<var>gamma</var>)*(maxval-minval)+minval&quot;
-</p>
-</dd>
-</dl>
-
-<p>All expressions default to &quot;val&quot;.
-</p>
-<p>Some examples follow:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># negate input video
-lutrgb=&quot;r=maxval+minval-val:g=maxval+minval-val:b=maxval+minval-val&quot;
-lutyuv=&quot;y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val&quot;
-
-# the above is the same as
-lutrgb=&quot;r=negval:g=negval:b=negval&quot;
-lutyuv=&quot;y=negval:u=negval:v=negval&quot;
-
-# negate luminance
-lutyuv=negval
-
-# remove chroma components, turns the video into a graytone image
-lutyuv=&quot;u=128:v=128&quot;
-
-# apply a luma burning effect
-lutyuv=&quot;y=2*val&quot;
-
-# remove green and blue components
-lutrgb=&quot;g=0:b=0&quot;
-
-# set a constant alpha channel value on input
-format=rgba,lutrgb=a=&quot;maxval-minval/2&quot;
-
-# correct luminance gamma by a 0.5 factor
-lutyuv=y=gammaval(0.5)
-</pre></td></tr></table>
-
-<a name="mp"></a>
-<h2 class="section"><a href="libavfilter.html#toc-mp">8.18 mp</a></h2>
-
-<p>Apply an MPlayer filter to the input video.
-</p>
-<p>This filter provides a wrapper around most of the filters of
-MPlayer/MEncoder.
-</p>
-<p>This wrapper is considered experimental. Some of the wrapped filters
-may not work properly and we may drop support for them, as they will
-be implemented natively into FFmpeg. Thus you should avoid
-depending on them when writing portable scripts.
-</p>
-<p>The filters accepts the parameters:
-<var>filter_name</var>[:=]<var>filter_params</var>
-</p>
-<p><var>filter_name</var> is the name of a supported MPlayer filter,
-<var>filter_params</var> is a string containing the parameters accepted by
-the named filter.
-</p>
-<p>The list of the currently supported filters follows:
-</p><dl compact="compact">
-<dt> <var>2xsai</var></dt>
-<dt> <var>decimate</var></dt>
-<dt> <var>denoise3d</var></dt>
-<dt> <var>detc</var></dt>
-<dt> <var>dint</var></dt>
-<dt> <var>divtc</var></dt>
-<dt> <var>down3dright</var></dt>
-<dt> <var>dsize</var></dt>
-<dt> <var>eq2</var></dt>
-<dt> <var>eq</var></dt>
-<dt> <var>field</var></dt>
-<dt> <var>fil</var></dt>
-<dt> <var>fixpts</var></dt>
-<dt> <var>framestep</var></dt>
-<dt> <var>fspp</var></dt>
-<dt> <var>geq</var></dt>
-<dt> <var>harddup</var></dt>
-<dt> <var>hqdn3d</var></dt>
-<dt> <var>hue</var></dt>
-<dt> <var>il</var></dt>
-<dt> <var>ilpack</var></dt>
-<dt> <var>ivtc</var></dt>
-<dt> <var>kerndeint</var></dt>
-<dt> <var>mcdeint</var></dt>
-<dt> <var>mirror</var></dt>
-<dt> <var>noise</var></dt>
-<dt> <var>ow</var></dt>
-<dt> <var>palette</var></dt>
-<dt> <var>perspective</var></dt>
-<dt> <var>phase</var></dt>
-<dt> <var>pp7</var></dt>
-<dt> <var>pullup</var></dt>
-<dt> <var>qp</var></dt>
-<dt> <var>rectangle</var></dt>
-<dt> <var>remove-logo</var></dt>
-<dt> <var>rotate</var></dt>
-<dt> <var>sab</var></dt>
-<dt> <var>screenshot</var></dt>
-<dt> <var>smartblur</var></dt>
-<dt> <var>softpulldown</var></dt>
-<dt> <var>softskip</var></dt>
-<dt> <var>spp</var></dt>
-<dt> <var>swapuv</var></dt>
-<dt> <var>telecine</var></dt>
-<dt> <var>tile</var></dt>
-<dt> <var>tinterlace</var></dt>
-<dt> <var>unsharp</var></dt>
-<dt> <var>uspp</var></dt>
-<dt> <var>yuvcsp</var></dt>
-<dt> <var>yvu9</var></dt>
-</dl>
-
-<p>The parameter syntax and behavior for the listed filters are the same
-of the corresponding MPlayer filters. For detailed instructions check
-the &quot;VIDEO FILTERS&quot; section in the MPlayer manual.
-</p>
-<p>Some examples follow:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># remove a logo by interpolating the surrounding pixels
-mp=delogo=200:200:80:20:1
-
-# adjust gamma, brightness, contrast
-mp=eq2=1.0:2:0.5
-
-# tweak hue and saturation
-mp=hue=100:-10
-</pre></td></tr></table>
-
-<p>See also mplayer(1), <a href="http://www.mplayerhq.hu/">http://www.mplayerhq.hu/</a>.
-</p>
-<a name="negate"></a>
-<h2 class="section"><a href="libavfilter.html#toc-negate">8.19 negate</a></h2>
-
-<p>Negate input video.
-</p>
-<p>This filter accepts an integer in input, if non-zero it negates the
-alpha component (if available). The default value in input is 0.
-</p>
-<a name="noformat"></a>
-<h2 class="section"><a href="libavfilter.html#toc-noformat">8.20 noformat</a></h2>
-
-<p>Force libavfilter not to use any of the specified pixel formats for the
-input to the next filter.
-</p>
-<p>The filter accepts a list of pixel format names, separated by &quot;:&quot;,
-for example &quot;yuv420p:monow:rgb24&quot;.
-</p>
-<p>Some examples follow:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># force libavfilter to use a format different from &quot;yuv420p&quot; for the
-# input to the vflip filter
-noformat=yuv420p,vflip
-
-# convert the input video to any of the formats not contained in the list
-noformat=yuv420p:yuv444p:yuv410p
-</pre></td></tr></table>
-
-<a name="null"></a>
-<h2 class="section"><a href="libavfilter.html#toc-null">8.21 null</a></h2>
-
-<p>Pass the video source unchanged to the output.
-</p>
-<a name="ocv"></a>
-<h2 class="section"><a href="libavfilter.html#toc-ocv">8.22 ocv</a></h2>
-
-<p>Apply video transform using libopencv.
-</p>
-<p>To enable this filter install libopencv library and headers and
-configure FFmpeg with &ndash;enable-libopencv.
-</p>
-<p>The filter takes the parameters: <var>filter_name</var>{:=}<var>filter_params</var>.
-</p>
-<p><var>filter_name</var> is the name of the libopencv filter to apply.
-</p>
-<p><var>filter_params</var> specifies the parameters to pass to the libopencv
-filter. If not specified the default values are assumed.
-</p>
-<p>Refer to the official libopencv documentation for more precise
-informations:
-<a href="http://opencv.willowgarage.com/documentation/c/image_filtering.html">http://opencv.willowgarage.com/documentation/c/image_filtering.html</a>
-</p>
-<p>Follows the list of supported libopencv filters.
-</p>
-<p><a name="dilate"></a>
-</p><a name="dilate-1"></a>
-<h3 class="subsection"><a href="libavfilter.html#toc-dilate-1">8.22.1 dilate</a></h3>
-
-<p>Dilate an image by using a specific structuring element.
-This filter corresponds to the libopencv function <code>cvDilate</code>.
-</p>
-<p>It accepts the parameters: <var>struct_el</var>:<var>nb_iterations</var>.
-</p>
-<p><var>struct_el</var> represents a structuring element, and has the syntax:
-<var>cols</var>x<var>rows</var>+<var>anchor_x</var>x<var>anchor_y</var>/<var>shape</var>
-</p>
-<p><var>cols</var> and <var>rows</var> represent the number of colums and rows of
-the structuring element, <var>anchor_x</var> and <var>anchor_y</var> the anchor
-point, and <var>shape</var> the shape for the structuring element, and
-can be one of the values &quot;rect&quot;, &quot;cross&quot;, &quot;ellipse&quot;, &quot;custom&quot;.
-</p>
-<p>If the value for <var>shape</var> is &quot;custom&quot;, it must be followed by a
-string of the form &quot;=<var>filename</var>&quot;. The file with name
-<var>filename</var> is assumed to represent a binary image, with each
-printable character corresponding to a bright pixel. When a custom
-<var>shape</var> is used, <var>cols</var> and <var>rows</var> are ignored, the number
-or columns and rows of the read file are assumed instead.
-</p>
-<p>The default value for <var>struct_el</var> is &quot;3x3+0x0/rect&quot;.
-</p>
-<p><var>nb_iterations</var> specifies the number of times the transform is
-applied to the image, and defaults to 1.
-</p>
-<p>Follow some example:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># use the default values
-ocv=dilate
-
-# dilate using a structuring element with a 5x5 cross, iterate two times
-ocv=dilate=5x5+2x2/cross:2
-
-# read the shape from the file diamond.shape, iterate two times
-# the file diamond.shape may contain a pattern of characters like this:
-#   *
-#  ***
-# *****
-#  ***
-#   *
-# the specified cols and rows are ignored (but not the anchor point coordinates)
-ocv=0x0+2x2/custom=diamond.shape:2
-</pre></td></tr></table>
-
-<a name="erode"></a>
-<h3 class="subsection"><a href="libavfilter.html#toc-erode">8.22.2 erode</a></h3>
-
-<p>Erode an image by using a specific structuring element.
-This filter corresponds to the libopencv function <code>cvErode</code>.
-</p>
-<p>The filter accepts the parameters: <var>struct_el</var>:<var>nb_iterations</var>,
-with the same syntax and semantics as the <a href="#dilate">dilate</a> filter.
-</p>
-<a name="smooth"></a>
-<h3 class="subsection"><a href="libavfilter.html#toc-smooth">8.22.3 smooth</a></h3>
-
-<p>Smooth the input video.
-</p>
-<p>The filter takes the following parameters:
-<var>type</var>:<var>param1</var>:<var>param2</var>:<var>param3</var>:<var>param4</var>.
-</p>
-<p><var>type</var> is the type of smooth filter to apply, and can be one of
-the following values: &quot;blur&quot;, &quot;blur_no_scale&quot;, &quot;median&quot;, &quot;gaussian&quot;,
-&quot;bilateral&quot;. The default value is &quot;gaussian&quot;.
-</p>
-<p><var>param1</var>, <var>param2</var>, <var>param3</var>, and <var>param4</var> are
-parameters whose meanings depend on smooth type. <var>param1</var> and
-<var>param2</var> accept integer positive values or 0, <var>param3</var> and
-<var>param4</var> accept float values.
-</p>
-<p>The default value for <var>param1</var> is 3, the default value for the
-other parameters is 0.
-</p>
-<p>These parameters correspond to the parameters assigned to the
-libopencv function <code>cvSmooth</code>.
-</p>
-<a name="overlay"></a>
-<h2 class="section"><a href="libavfilter.html#toc-overlay">8.23 overlay</a></h2>
-
-<p>Overlay one video on top of another.
-</p>
-<p>It takes two inputs and one output, the first input is the &quot;main&quot;
-video on which the second input is overlayed.
-</p>
-<p>It accepts the parameters: <var>x</var>:<var>y</var>.
-</p>
-<p><var>x</var> is the x coordinate of the overlayed video on the main video,
-<var>y</var> is the y coordinate. The parameters are expressions containing
-the following parameters:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>main_w, main_h</samp>&rsquo;</dt>
-<dd><p>main input width and height
-</p>
-</dd>
-<dt> &lsquo;<samp>W, H</samp>&rsquo;</dt>
-<dd><p>same as <var>main_w</var> and <var>main_h</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>overlay_w, overlay_h</samp>&rsquo;</dt>
-<dd><p>overlay input width and height
-</p>
-</dd>
-<dt> &lsquo;<samp>w, h</samp>&rsquo;</dt>
-<dd><p>same as <var>overlay_w</var> and <var>overlay_h</var>
-</p></dd>
-</dl>
-
-<p>Be aware that frames are taken from each input video in timestamp
-order, hence, if their initial timestamps differ, it is a a good idea
-to pass the two inputs through a <var>setpts=PTS-STARTPTS</var> filter to
-have them begin in the same zero timestamp, as it does the example for
-the <var>movie</var> filter.
-</p>
-<p>Follow some examples:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># draw the overlay at 10 pixels from the bottom right
-# corner of the main video.
-overlay=main_w-overlay_w-10:main_h-overlay_h-10
-
-# insert a transparent PNG logo in the bottom left corner of the input
-movie=logo.png [logo];
-[in][logo] overlay=10:main_h-overlay_h-10 [out]
-
-# insert 2 different transparent PNG logos (second logo on bottom
-# right corner):
-movie=logo1.png [logo1];
-movie=logo2.png [logo2];
-[in][logo1]       overlay=10:H-h-10 [in+logo1];
-[in+logo1][logo2] overlay=W-w-10:H-h-10 [out]
-
-# add a transparent color layer on top of the main video,
-# WxH specifies the size of the main input to the overlay filter
-color=red.3:WxH [over]; [in][over] overlay [out]
-</pre></td></tr></table>
-
-<p>You can chain togheter more overlays but the efficiency of such
-approach is yet to be tested.
-</p>
-<a name="pad"></a>
-<h2 class="section"><a href="libavfilter.html#toc-pad">8.24 pad</a></h2>
-
-<p>Add paddings to the input image, and places the original input at the
-given coordinates <var>x</var>, <var>y</var>.
-</p>
-<p>It accepts the following parameters:
-<var>width</var>:<var>height</var>:<var>x</var>:<var>y</var>:<var>color</var>.
-</p>
-<p>The parameters <var>width</var>, <var>height</var>, <var>x</var>, and <var>y</var> are
-expressions containing the following constants:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>E, PI, PHI</samp>&rsquo;</dt>
-<dd><p>the corresponding mathematical approximated values for e
-(euler number), pi (greek PI), phi (golden ratio)
-</p>
-</dd>
-<dt> &lsquo;<samp>in_w, in_h</samp>&rsquo;</dt>
-<dd><p>the input video width and heigth
-</p>
-</dd>
-<dt> &lsquo;<samp>iw, ih</samp>&rsquo;</dt>
-<dd><p>same as <var>in_w</var> and <var>in_h</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>out_w, out_h</samp>&rsquo;</dt>
-<dd><p>the output width and heigth, that is the size of the padded area as
-specified by the <var>width</var> and <var>height</var> expressions
-</p>
-</dd>
-<dt> &lsquo;<samp>ow, oh</samp>&rsquo;</dt>
-<dd><p>same as <var>out_w</var> and <var>out_h</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>x, y</samp>&rsquo;</dt>
-<dd><p>x and y offsets as specified by the <var>x</var> and <var>y</var>
-expressions, or NAN if not yet specified
-</p>
-</dd>
-<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
-<dd><p>same as <var>iw</var> / <var>ih</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
-<dd><p>input sample aspect ratio
-</p>
-</dd>
-<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
-<dd><p>input display aspect ratio, it is the same as (<var>iw</var> / <var>ih</var>) * <var>sar</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>hsub, vsub</samp>&rsquo;</dt>
-<dd><p>horizontal and vertical chroma subsample values. For example for the
-pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
-</p></dd>
-</dl>
-
-<p>Follows the description of the accepted parameters.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>width, height</samp>&rsquo;</dt>
-<dd>
-<p>Specify the size of the output image with the paddings added. If the
-value for <var>width</var> or <var>height</var> is 0, the corresponding input size
-is used for the output.
-</p>
-<p>The <var>width</var> expression can reference the value set by the
-<var>height</var> expression, and viceversa.
-</p>
-<p>The default value of <var>width</var> and <var>height</var> is 0.
-</p>
-</dd>
-<dt> &lsquo;<samp>x, y</samp>&rsquo;</dt>
-<dd>
-<p>Specify the offsets where to place the input image in the padded area
-with respect to the top/left border of the output image.
-</p>
-<p>The <var>x</var> expression can reference the value set by the <var>y</var>
-expression, and viceversa.
-</p>
-<p>The default value of <var>x</var> and <var>y</var> is 0.
-</p>
-</dd>
-<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
-<dd>
-<p>Specify the color of the padded area, it can be the name of a color
-(case insensitive match) or a 0xRRGGBB[AA] sequence.
-</p>
-<p>The default value of <var>color</var> is &quot;black&quot;.
-</p>
-</dd>
-</dl>
-
-<p>Some examples follow:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example"># Add paddings with color &quot;violet&quot; to the input video. Output video
-# size is 640x480, the top-left corner of the input video is placed at
-# column 0, row 40.
-pad=640:480:0:40:violet
-
-# pad the input to get an output with dimensions increased bt 3/2,
-# and put the input video at the center of the padded area
-pad=&quot;3/2*iw:3/2*ih:(ow-iw)/2:(oh-ih)/2&quot;
-
-# pad the input to get a squared output with size equal to the maximum
-# value between the input width and height, and put the input video at
-# the center of the padded area
-pad=&quot;max(iw\,ih):ow:(ow-iw)/2:(oh-ih)/2&quot;
-
-# pad the input to get a final w/h ratio of 16:9
-pad=&quot;ih*16/9:ih:(ow-iw)/2:(oh-ih)/2&quot;
-
-# for anamorphic video, in order to set the output display aspect ratio,
-# it is necessary to use sar in the expression, according to the relation:
-# (ih * X / ih) * sar = output_dar
-# X = output_dar / sar
-pad=&quot;ih*16/9/sar:ih:(ow-iw)/2:(oh-ih)/2&quot;
-
-# double output size and put the input video in the bottom-right
-# corner of the output padded area
-pad=&quot;2*iw:2*ih:ow-iw:oh-ih&quot;
-</pre></td></tr></table>
-
-<a name="pixdesctest"></a>
-<h2 class="section"><a href="libavfilter.html#toc-pixdesctest">8.25 pixdesctest</a></h2>
-
-<p>Pixel format descriptor test filter, mainly useful for internal
-testing. The output video should be equal to the input video.
-</p>
-<p>For example:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">format=monow, pixdesctest
-</pre></td></tr></table>
-
-<p>can be used to test the monowhite pixel format descriptor definition.
-</p>
-<a name="scale"></a>
-<h2 class="section"><a href="libavfilter.html#toc-scale">8.26 scale</a></h2>
-
-<p>Scale the input video to <var>width</var>:<var>height</var> and/or convert the image format.
-</p>
-<p>The parameters <var>width</var> and <var>height</var> are expressions containing
-the following constants:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>E, PI, PHI</samp>&rsquo;</dt>
-<dd><p>the corresponding mathematical approximated values for e
-(euler number), pi (greek PI), phi (golden ratio)
-</p>
-</dd>
-<dt> &lsquo;<samp>in_w, in_h</samp>&rsquo;</dt>
-<dd><p>the input width and heigth
-</p>
-</dd>
-<dt> &lsquo;<samp>iw, ih</samp>&rsquo;</dt>
-<dd><p>same as <var>in_w</var> and <var>in_h</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>out_w, out_h</samp>&rsquo;</dt>
-<dd><p>the output (cropped) width and heigth
-</p>
-</dd>
-<dt> &lsquo;<samp>ow, oh</samp>&rsquo;</dt>
-<dd><p>same as <var>out_w</var> and <var>out_h</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>a</samp>&rsquo;</dt>
-<dd><p>same as <var>iw</var> / <var>ih</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
-<dd><p>input sample aspect ratio
-</p>
-</dd>
-<dt> &lsquo;<samp>dar</samp>&rsquo;</dt>
-<dd><p>input display aspect ratio, it is the same as (<var>iw</var> / <var>ih</var>) * <var>sar</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>hsub, vsub</samp>&rsquo;</dt>
-<dd><p>horizontal and vertical chroma subsample values. For example for the
-pixel format &quot;yuv422p&quot; <var>hsub</var> is 2 and <var>vsub</var> is 1.
-</p></dd>
-</dl>
-
-<p>If the input image format is different from the format requested by
-the next filter, the scale filter will convert the input to the
-requested format.
-</p>
-<p>If the value for <var>width</var> or <var>height</var> is 0, the respective input
-size is used for the output.
-</p>
-<p>If the value for <var>width</var> or <var>height</var> is -1, the scale filter will
-use, for the respective output size, a value that maintains the aspect
-ratio of the input image.
-</p>
-<p>The default value of <var>width</var> and <var>height</var> is 0.
-</p>
-<p>Some examples follow:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># scale the input video to a size of 200x100.
-scale=200:100
-
-# scale the input to 2x
-scale=2*iw:2*ih
-# the above is the same as
-scale=2*in_w:2*in_h
-
-# scale the input to half size
-scale=iw/2:ih/2
-
-# increase the width, and set the height to the same size
-scale=3/2*iw:ow
-
-# seek for Greek harmony
-scale=iw:1/PHI*iw
-scale=ih*PHI:ih
-
-# increase the height, and set the width to 3/2 of the height
-scale=3/2*oh:3/5*ih
-
-# increase the size, but make the size a multiple of the chroma
-scale=&quot;trunc(3/2*iw/hsub)*hsub:trunc(3/2*ih/vsub)*vsub&quot;
-
-# increase the width to a maximum of 500 pixels, keep the same input aspect ratio
-scale='min(500\, iw*3/2):-1'
-</pre></td></tr></table>
-
-<a name="select"></a>
-<h2 class="section"><a href="libavfilter.html#toc-select">8.27 select</a></h2>
-<p>Select frames to pass in output.
-</p>
-<p>It accepts in input an expression, which is evaluated for each input
-frame. If the expression is evaluated to a non-zero value, the frame
-is selected and passed to the output, otherwise it is discarded.
-</p>
-<p>The expression can contain the following constants:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>PI</samp>&rsquo;</dt>
-<dd><p>Greek PI
-</p>
-</dd>
-<dt> &lsquo;<samp>PHI</samp>&rsquo;</dt>
-<dd><p>golden ratio
-</p>
-</dd>
-<dt> &lsquo;<samp>E</samp>&rsquo;</dt>
-<dd><p>Euler number
-</p>
-</dd>
-<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
-<dd><p>the sequential number of the filtered frame, starting from 0
-</p>
-</dd>
-<dt> &lsquo;<samp>selected_n</samp>&rsquo;</dt>
-<dd><p>the sequential number of the selected frame, starting from 0
-</p>
-</dd>
-<dt> &lsquo;<samp>prev_selected_n</samp>&rsquo;</dt>
-<dd><p>the sequential number of the last selected frame, NAN if undefined
-</p>
-</dd>
-<dt> &lsquo;<samp>TB</samp>&rsquo;</dt>
-<dd><p>timebase of the input timestamps
-</p>
-</dd>
-<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
-<dd><p>the PTS (Presentation TimeStamp) of the filtered video frame,
-expressed in <var>TB</var> units, NAN if undefined
-</p>
-</dd>
-<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
-<dd><p>the PTS (Presentation TimeStamp) of the filtered video frame,
-expressed in seconds, NAN if undefined
-</p>
-</dd>
-<dt> &lsquo;<samp>prev_pts</samp>&rsquo;</dt>
-<dd><p>the PTS of the previously filtered video frame, NAN if undefined
-</p>
-</dd>
-<dt> &lsquo;<samp>prev_selected_pts</samp>&rsquo;</dt>
-<dd><p>the PTS of the last previously filtered video frame, NAN if undefined
-</p>
-</dd>
-<dt> &lsquo;<samp>prev_selected_t</samp>&rsquo;</dt>
-<dd><p>the PTS of the last previously selected video frame, NAN if undefined
-</p>
-</dd>
-<dt> &lsquo;<samp>start_pts</samp>&rsquo;</dt>
-<dd><p>the PTS of the first video frame in the video, NAN if undefined
-</p>
-</dd>
-<dt> &lsquo;<samp>start_t</samp>&rsquo;</dt>
-<dd><p>the time of the first video frame in the video, NAN if undefined
-</p>
-</dd>
-<dt> &lsquo;<samp>pict_type</samp>&rsquo;</dt>
-<dd><p>the picture type of the filtered frame, can assume one of the following
-values:
-</p><dl compact="compact">
-<dt> &lsquo;<samp>PICT_TYPE_I</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>PICT_TYPE_P</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>PICT_TYPE_B</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>PICT_TYPE_S</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>PICT_TYPE_SI</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>PICT_TYPE_SP</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>PICT_TYPE_BI</samp>&rsquo;</dt>
-</dl>
-
-</dd>
-<dt> &lsquo;<samp>interlace_type</samp>&rsquo;</dt>
-<dd><p>the frame interlace type, can assume one of the following values:
-</p><dl compact="compact">
-<dt> &lsquo;<samp>INTERLACE_TYPE_P</samp>&rsquo;</dt>
-<dd><p>the frame is progressive (not interlaced)
-</p></dd>
-<dt> &lsquo;<samp>INTERLACE_TYPE_T</samp>&rsquo;</dt>
-<dd><p>the frame is top-field-first
-</p></dd>
-<dt> &lsquo;<samp>INTERLACE_TYPE_B</samp>&rsquo;</dt>
-<dd><p>the frame is bottom-field-first
-</p></dd>
-</dl>
-
-</dd>
-<dt> &lsquo;<samp>key</samp>&rsquo;</dt>
-<dd><p>1 if the filtered frame is a key-frame, 0 otherwise
-</p>
-</dd>
-<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
-<dd><p>the position in the file of the filtered frame, -1 if the information
-is not available (e.g. for synthetic video)
-</p></dd>
-</dl>
-
-<p>The default value of the select expression is &quot;1&quot;.
-</p>
-<p>Some examples follow:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example"># select all frames in input
-select
-
-# the above is the same as:
-select=1
-
-# skip all frames:
-select=0
-
-# select only I-frames
-select='eq(pict_type\,PICT_TYPE_I)'
-
-# select one frame every 100
-select='not(mod(n\,100))'
-
-# select only frames contained in the 10-20 time interval
-select='gte(t\,10)*lte(t\,20)'
-
-# select only I frames contained in the 10-20 time interval
-select='gte(t\,10)*lte(t\,20)*eq(pict_type\,PICT_TYPE_I)'
-
-# select frames with a minimum distance of 10 seconds
-select='isnan(prev_selected_t)+gte(t-prev_selected_t\,10)'
-</pre></td></tr></table>
-
-<p><a name="setdar"></a>
-</p><a name="setdar-1"></a>
-<h2 class="section"><a href="libavfilter.html#toc-setdar-1">8.28 setdar</a></h2>
-
-<p>Set the Display Aspect Ratio for the filter output video.
-</p>
-<p>This is done by changing the specified Sample (aka Pixel) Aspect
-Ratio, according to the following equation:
-<em>DAR = HORIZONTAL_RESOLUTION / VERTICAL_RESOLUTION * SAR</em>
-</p>
-<p>Keep in mind that this filter does not modify the pixel dimensions of
-the video frame. Also the display aspect ratio set by this filter may
-be changed by later filters in the filterchain, e.g. in case of
-scaling or if another &quot;setdar&quot; or a &quot;setsar&quot; filter is applied.
-</p>
-<p>The filter accepts a parameter string which represents the wanted
-display aspect ratio.
-The parameter can be a floating point number string, or an expression
-of the form <var>num</var>:<var>den</var>, where <var>num</var> and <var>den</var> are the
-numerator and denominator of the aspect ratio.
-If the parameter is not specified, it is assumed the value &quot;0:1&quot;.
-</p>
-<p>For example to change the display aspect ratio to 16:9, specify:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">setdar=16:9
-# the above is equivalent to
-setdar=1.77777
-</pre></td></tr></table>
-
-<p>See also the <a href="#setsar">setsar</a> filter documentation.
-</p>
-<a name="setpts"></a>
-<h2 class="section"><a href="libavfilter.html#toc-setpts">8.29 setpts</a></h2>
-
-<p>Change the PTS (presentation timestamp) of the input video frames.
-</p>
-<p>Accept in input an expression evaluated through the eval API, which
-can contain the following constants:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>PTS</samp>&rsquo;</dt>
-<dd><p>the presentation timestamp in input
-</p>
-</dd>
-<dt> &lsquo;<samp>PI</samp>&rsquo;</dt>
-<dd><p>Greek PI
-</p>
-</dd>
-<dt> &lsquo;<samp>PHI</samp>&rsquo;</dt>
-<dd><p>golden ratio
-</p>
-</dd>
-<dt> &lsquo;<samp>E</samp>&rsquo;</dt>
-<dd><p>Euler number
-</p>
-</dd>
-<dt> &lsquo;<samp>N</samp>&rsquo;</dt>
-<dd><p>the count of the input frame, starting from 0.
-</p>
-</dd>
-<dt> &lsquo;<samp>STARTPTS</samp>&rsquo;</dt>
-<dd><p>the PTS of the first video frame
-</p>
-</dd>
-<dt> &lsquo;<samp>INTERLACED</samp>&rsquo;</dt>
-<dd><p>tell if the current frame is interlaced
-</p>
-</dd>
-<dt> &lsquo;<samp>POS</samp>&rsquo;</dt>
-<dd><p>original position in the file of the frame, or undefined if undefined
-for the current frame
-</p>
-</dd>
-<dt> &lsquo;<samp>PREV_INPTS</samp>&rsquo;</dt>
-<dd><p>previous input PTS
-</p>
-</dd>
-<dt> &lsquo;<samp>PREV_OUTPTS</samp>&rsquo;</dt>
-<dd><p>previous output PTS
-</p>
-</dd>
-</dl>
-
-<p>Some examples follow:
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example"># start counting PTS from zero
-setpts=PTS-STARTPTS
-
-# fast motion
-setpts=0.5*PTS
-
-# slow motion
-setpts=2.0*PTS
-
-# fixed rate 25 fps
-setpts=N/(25*TB)
-
-# fixed rate 25 fps with some jitter
-setpts='1/(25*TB) * (N + 0.05 * sin(N*2*PI/25))'
-</pre></td></tr></table>
-
-<p><a name="setsar"></a>
-</p><a name="setsar-1"></a>
-<h2 class="section"><a href="libavfilter.html#toc-setsar-1">8.30 setsar</a></h2>
-
-<p>Set the Sample (aka Pixel) Aspect Ratio for the filter output video.
-</p>
-<p>Note that as a consequence of the application of this filter, the
-output display aspect ratio will change according to the following
-equation:
-<em>DAR = HORIZONTAL_RESOLUTION / VERTICAL_RESOLUTION * SAR</em>
-</p>
-<p>Keep in mind that the sample aspect ratio set by this filter may be
-changed by later filters in the filterchain, e.g. if another &quot;setsar&quot;
-or a &quot;setdar&quot; filter is applied.
-</p>
-<p>The filter accepts a parameter string which represents the wanted
-sample aspect ratio.
-The parameter can be a floating point number string, or an expression
-of the form <var>num</var>:<var>den</var>, where <var>num</var> and <var>den</var> are the
-numerator and denominator of the aspect ratio.
-If the parameter is not specified, it is assumed the value &quot;0:1&quot;.
-</p>
-<p>For example to change the sample aspect ratio to 10:11, specify:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">setsar=10:11
-</pre></td></tr></table>
-
-<a name="settb"></a>
-<h2 class="section"><a href="libavfilter.html#toc-settb">8.31 settb</a></h2>
-
-<p>Set the timebase to use for the output frames timestamps.
-It is mainly useful for testing timebase configuration.
-</p>
-<p>It accepts in input an arithmetic expression representing a rational.
-The expression can contain the constants &quot;PI&quot;, &quot;E&quot;, &quot;PHI&quot;, &quot;AVTB&quot; (the
-default timebase), and &quot;intb&quot; (the input timebase).
-</p>
-<p>The default value for the input is &quot;intb&quot;.
-</p>
-<p>Follow some examples.
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example"># set the timebase to 1/25
-settb=1/25
-
-# set the timebase to 1/10
-settb=0.1
-
-#set the timebase to 1001/1000
-settb=1+0.001
-
-#set the timebase to 2*intb
-settb=2*intb
-
-#set the default timebase value
-settb=AVTB
-</pre></td></tr></table>
-
-<a name="showinfo"></a>
-<h2 class="section"><a href="libavfilter.html#toc-showinfo">8.32 showinfo</a></h2>
-
-<p>Show a line containing various information for each input video frame.
-The input video is not modified.
-</p>
-<p>The shown line contains a sequence of key/value pairs of the form
-<var>key</var>:<var>value</var>.
-</p>
-<p>A description of each shown parameter follows:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
-<dd><p>sequential number of the input frame, starting from 0
-</p>
-</dd>
-<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
-<dd><p>Presentation TimeStamp of the input frame, expressed as a number of
-time base units. The time base unit depends on the filter input pad.
-</p>
-</dd>
-<dt> &lsquo;<samp>pts_time</samp>&rsquo;</dt>
-<dd><p>Presentation TimeStamp of the input frame, expressed as a number of
-seconds
-</p>
-</dd>
-<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
-<dd><p>position of the frame in the input stream, -1 if this information in
-unavailable and/or meanigless (for example in case of synthetic video)
-</p>
-</dd>
-<dt> &lsquo;<samp>fmt</samp>&rsquo;</dt>
-<dd><p>pixel format name
-</p>
-</dd>
-<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
-<dd><p>sample aspect ratio of the input frame, expressed in the form
-<var>num</var>/<var>den</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>s</samp>&rsquo;</dt>
-<dd><p>size of the input frame, expressed in the form
-<var>width</var>x<var>height</var>
-</p>
-</dd>
-<dt> &lsquo;<samp>i</samp>&rsquo;</dt>
-<dd><p>interlaced mode (&quot;P&quot; for &quot;progressive&quot;, &quot;T&quot; for top field first, &quot;B&quot;
-for bottom field first)
-</p>
-</dd>
-<dt> &lsquo;<samp>iskey</samp>&rsquo;</dt>
-<dd><p>1 if the frame is a key frame, 0 otherwise
-</p>
-</dd>
-<dt> &lsquo;<samp>type</samp>&rsquo;</dt>
-<dd><p>picture type of the input frame (&quot;I&quot; for an I-frame, &quot;P&quot; for a
-P-frame, &quot;B&quot; for a B-frame, &quot;?&quot; for unknown type).
-Check also the documentation of the <code>AVPictureType</code> enum and of
-the <code>av_get_picture_type_char</code> function defined in
-&lsquo;<tt>libavutil/avutil.h</tt>&rsquo;.
-</p>
-</dd>
-<dt> &lsquo;<samp>checksum</samp>&rsquo;</dt>
-<dd><p>Adler-32 checksum of all the planes of the input frame
-</p>
-</dd>
-<dt> &lsquo;<samp>plane_checksum</samp>&rsquo;</dt>
-<dd><p>Adler-32 checksum of each plane of the input frame, expressed in the form
-&quot;[<var>c0</var> <var>c1</var> <var>c2</var> <var>c3</var>]&quot;
-</p></dd>
-</dl>
-
-<a name="slicify"></a>
-<h2 class="section"><a href="libavfilter.html#toc-slicify">8.33 slicify</a></h2>
-
-<p>Pass the images of input video on to next video filter as multiple
-slices.
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">./ffmpeg -i in.avi -vf &quot;slicify=32&quot; out.avi
-</pre></td></tr></table>
-
-<p>The filter accepts the slice height as parameter. If the parameter is
-not specified it will use the default value of 16.
-</p>
-<p>Adding this in the beginning of filter chains should make filtering
-faster due to better use of the memory cache.
-</p>
-<a name="split"></a>
-<h2 class="section"><a href="libavfilter.html#toc-split">8.34 split</a></h2>
-
-<p>Pass on the input video to two outputs. Both outputs are identical to
-the input video.
-</p>
-<p>For example:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">[in] split [splitout1][splitout2];
-[splitout1] crop=100:100:0:0    [cropout];
-[splitout2] pad=200:200:100:100 [padout];
-</pre></td></tr></table>
-
-<p>will create two separate outputs from the same input, one cropped and
-one padded.
-</p>
-<a name="transpose"></a>
-<h2 class="section"><a href="libavfilter.html#toc-transpose">8.35 transpose</a></h2>
-
-<p>Transpose rows with columns in the input video and optionally flip it.
-</p>
-<p>It accepts a parameter representing an integer, which can assume the
-values:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
-<dd><p>Rotate by 90 degrees counterclockwise and vertically flip (default), that is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">L.R     L.l
-. . -&gt;  . .
-l.r     R.r
-</pre></td></tr></table>
-
-</dd>
-<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
-<dd><p>Rotate by 90 degrees clockwise, that is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">L.R     l.L
-. . -&gt;  . .
-l.r     r.R
-</pre></td></tr></table>
-
-</dd>
-<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
-<dd><p>Rotate by 90 degrees counterclockwise, that is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">L.R     R.r
-. . -&gt;  . .
-l.r     L.l
-</pre></td></tr></table>
-
-</dd>
-<dt> &lsquo;<samp>3</samp>&rsquo;</dt>
-<dd><p>Rotate by 90 degrees clockwise and vertically flip, that is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">L.R     r.R
-. . -&gt;  . .
-l.r     l.L
-</pre></td></tr></table>
-</dd>
-</dl>
-
-<a name="unsharp"></a>
-<h2 class="section"><a href="libavfilter.html#toc-unsharp">8.36 unsharp</a></h2>
-
-<p>Sharpen or blur the input video.
-</p>
-<p>It accepts the following parameters:
-<var>luma_msize_x</var>:<var>luma_msize_y</var>:<var>luma_amount</var>:<var>chroma_msize_x</var>:<var>chroma_msize_y</var>:<var>chroma_amount</var>
-</p>
-<p>Negative values for the amount will blur the input video, while positive
-values will sharpen. All parameters are optional and default to the
-equivalent of the string &rsquo;5:5:1.0:5:5:0.0&rsquo;.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>luma_msize_x</samp>&rsquo;</dt>
-<dd><p>Set the luma matrix horizontal size. It can be an integer between 3
-and 13, default value is 5.
-</p>
-</dd>
-<dt> &lsquo;<samp>luma_msize_y</samp>&rsquo;</dt>
-<dd><p>Set the luma matrix vertical size. It can be an integer between 3
-and 13, default value is 5.
-</p>
-</dd>
-<dt> &lsquo;<samp>luma_amount</samp>&rsquo;</dt>
-<dd><p>Set the luma effect strength. It can be a float number between -2.0
-and 5.0, default value is 1.0.
-</p>
-</dd>
-<dt> &lsquo;<samp>chroma_msize_x</samp>&rsquo;</dt>
-<dd><p>Set the chroma matrix horizontal size. It can be an integer between 3
-and 13, default value is 5.
-</p>
-</dd>
-<dt> &lsquo;<samp>chroma_msize_y</samp>&rsquo;</dt>
-<dd><p>Set the chroma matrix vertical size. It can be an integer between 3
-and 13, default value is 5.
-</p>
-</dd>
-<dt> &lsquo;<samp>chroma_amount</samp>&rsquo;</dt>
-<dd><p>Set the chroma effect strength. It can be a float number between -2.0
-and 5.0, default value is 0.0.
-</p>
-</dd>
-</dl>
-
-<table><tr><td>&nbsp;</td><td><pre class="example"># Strong luma sharpen effect parameters
-unsharp=7:7:2.5
-
-# Strong blur of both luma and chroma parameters
-unsharp=7:7:-2:7:7:-2
-
-# Use the default values with <code>ffmpeg</code>
-./ffmpeg -i in.avi -vf &quot;unsharp&quot; out.mp4
-</pre></td></tr></table>
-
-<a name="vflip"></a>
-<h2 class="section"><a href="libavfilter.html#toc-vflip">8.37 vflip</a></h2>
-
-<p>Flip the input video vertically.
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">./ffmpeg -i in.avi -vf &quot;vflip&quot; out.avi
-</pre></td></tr></table>
-
-<a name="yadif"></a>
-<h2 class="section"><a href="libavfilter.html#toc-yadif">8.38 yadif</a></h2>
-
-<p>Deinterlace the input video (&quot;yadif&quot; means &quot;yet another deinterlacing
-filter&quot;).
-</p>
-<p>It accepts the optional parameters: <var>mode</var>:<var>parity</var>:<var>auto</var>.
-</p>
-<p><var>mode</var> specifies the interlacing mode to adopt, accepts one of the
-following values:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
-<dd><p>output 1 frame for each frame
-</p></dd>
-<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
-<dd><p>output 1 frame for each field
-</p></dd>
-<dt> &lsquo;<samp>2</samp>&rsquo;</dt>
-<dd><p>like 0 but skips spatial interlacing check
-</p></dd>
-<dt> &lsquo;<samp>3</samp>&rsquo;</dt>
-<dd><p>like 1 but skips spatial interlacing check
-</p></dd>
-</dl>
-
-<p>Default value is 0.
-</p>
-<p><var>parity</var> specifies the picture field parity assumed for the input
-interlaced video, accepts one of the following values:
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
-<dd><p>assume top field first
-</p></dd>
-<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
-<dd><p>assume bottom field first
-</p></dd>
-<dt> &lsquo;<samp>-1</samp>&rsquo;</dt>
-<dd><p>enable automatic detection
-</p></dd>
-</dl>
-
-<p>Default value is -1.
-If interlacing is unknown or decoder does not export this information,
-top field first will be assumed.
-</p>
-<p><var>auto</var> specifies if deinterlacer should trust the interlaced flag
-and only deinterlace frames marked as interlaced
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>0</samp>&rsquo;</dt>
-<dd><p>deinterlace all frames
-</p></dd>
-<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
-<dd><p>only deinterlace frames marked as interlaced
-</p></dd>
-</dl>
-
-<p>Default value is 0.
-</p>
-
-<a name="Video-Sources"></a>
-<h1 class="chapter"><a href="libavfilter.html#toc-Video-Sources">9. Video Sources</a></h1>
-
-<p>Below is a description of the currently available video sources.
-</p>
-<a name="buffer"></a>
-<h2 class="section"><a href="libavfilter.html#toc-buffer">9.1 buffer</a></h2>
-
-<p>Buffer video frames, and make them available to the filter chain.
-</p>
-<p>This source is mainly intended for a programmatic use, in particular
-through the interface defined in &lsquo;<tt>libavfilter/vsrc_buffer.h</tt>&rsquo;.
-</p>
-<p>It accepts the following parameters:
-<var>width</var>:<var>height</var>:<var>pix_fmt_string</var>:<var>timebase_num</var>:<var>timebase_den</var>:<var>sample_aspect_ratio_num</var>:<var>sample_aspect_ratio.den</var>:<var>scale_params</var>
-</p>
-<p>All the parameters but <var>scale_params</var> need to be explicitely
-defined.
-</p>
-<p>Follows the list of the accepted parameters.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>width, height</samp>&rsquo;</dt>
-<dd><p>Specify the width and height of the buffered video frames.
-</p>
-</dd>
-<dt> &lsquo;<samp>pix_fmt_string</samp>&rsquo;</dt>
-<dd><p>A string representing the pixel format of the buffered video frames.
-It may be a number corresponding to a pixel format, or a pixel format
-name.
-</p>
-</dd>
-<dt> &lsquo;<samp>timebase_num, timebase_den</samp>&rsquo;</dt>
-<dd><p>Specify numerator and denomitor of the timebase assumed by the
-timestamps of the buffered frames.
-</p>
-</dd>
-<dt> &lsquo;<samp>sample_aspect_ratio.num, sample_aspect_ratio.den</samp>&rsquo;</dt>
-<dd><p>Specify numerator and denominator of the sample aspect ratio assumed
-by the video frames.
-</p>
-</dd>
-<dt> &lsquo;<samp>scale_params</samp>&rsquo;</dt>
-<dd><p>Specify the optional parameters to be used for the scale filter which
-is automatically inserted when an input change is detected in the
-input size or format.
-</p></dd>
-</dl>
-
-<p>For example:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">buffer=320:240:yuv410p:1:24:1:1
-</pre></td></tr></table>
-
-<p>will instruct the source to accept video frames with size 320x240 and
-with format &quot;yuv410p&quot;, assuming 1/24 as the timestamps timebase and
-square pixels (1:1 sample aspect ratio).
-Since the pixel format with name &quot;yuv410p&quot; corresponds to the number 6
-(check the enum PixelFormat definition in &lsquo;<tt>libavutil/pixfmt.h</tt>&rsquo;),
-this example corresponds to:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">buffer=320:240:6:1:24:1:1
-</pre></td></tr></table>
-
-<a name="color"></a>
-<h2 class="section"><a href="libavfilter.html#toc-color">9.2 color</a></h2>
-
-<p>Provide an uniformly colored input.
-</p>
-<p>It accepts the following parameters:
-<var>color</var>:<var>frame_size</var>:<var>frame_rate</var>
-</p>
-<p>Follows the description of the accepted parameters.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
-<dd><p>Specify the color of the source. It can be the name of a color (case
-insensitive match) or a 0xRRGGBB[AA] sequence, possibly followed by an
-alpha specifier. The default value is &quot;black&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>frame_size</samp>&rsquo;</dt>
-<dd><p>Specify the size of the sourced video, it may be a string of the form
-<var>width</var>x<var>heigth</var>, or the name of a size abbreviation. The
-default value is &quot;320x240&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>frame_rate</samp>&rsquo;</dt>
-<dd><p>Specify the frame rate of the sourced video, as the number of frames
-generated per second. It has to be a string in the format
-<var>frame_rate_num</var>/<var>frame_rate_den</var>, an integer number, a float
-number or a valid video frame rate abbreviation. The default value is
-&quot;25&quot;.
-</p>
-</dd>
-</dl>
-
-<p>For example the following graph description will generate a red source
-with an opacity of 0.2, with size &quot;qcif&quot; and a frame rate of 10
-frames per second, which will be overlayed over the source connected
-to the pad with identifier &quot;in&quot;.
-</p>
-<table><tr><td>&nbsp;</td><td><pre class="example">&quot;color=red@0.2:qcif:10 [color]; [in][color] overlay [out]&quot;
-</pre></td></tr></table>
-
-<a name="movie"></a>
-<h2 class="section"><a href="libavfilter.html#toc-movie">9.3 movie</a></h2>
-
-<p>Read a video stream from a movie container.
-</p>
-<p>It accepts the syntax: <var>movie_name</var>[:<var>options</var>] where
-<var>movie_name</var> is the name of the resource to read (not necessarily
-a file but also a device or a stream accessed through some protocol),
-and <var>options</var> is an optional sequence of <var>key</var>=<var>value</var>
-pairs, separated by &quot;:&quot;.
-</p>
-<p>The description of the accepted options follows.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>format_name, f</samp>&rsquo;</dt>
-<dd><p>Specifies the format assumed for the movie to read, and can be either
-the name of a container or an input device. If not specified the
-format is guessed from <var>movie_name</var> or by probing.
-</p>
-</dd>
-<dt> &lsquo;<samp>seek_point, sp</samp>&rsquo;</dt>
-<dd><p>Specifies the seek point in seconds, the frames will be output
-starting from this seek point, the parameter is evaluated with
-<code>av_strtod</code> so the numerical value may be suffixed by an IS
-postfix. Default value is &quot;0&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>stream_index, si</samp>&rsquo;</dt>
-<dd><p>Specifies the index of the video stream to read. If the value is -1,
-the best suited video stream will be automatically selected. Default
-value is &quot;-1&quot;.
-</p>
-</dd>
-</dl>
-
-<p>This filter allows to overlay a second video on top of main input of
-a filtergraph as shown in this graph:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">input -----------&gt; deltapts0 --&gt; overlay --&gt; output
-                                    ^
-                                    |
-movie --&gt; scale--&gt; deltapts1 -------+
-</pre></td></tr></table>
-
-<p>Some examples follow:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># skip 3.2 seconds from the start of the avi file in.avi, and overlay it
-# on top of the input labelled as &quot;in&quot;.
-movie=in.avi:seek_point=3.2, scale=180:-1, setpts=PTS-STARTPTS [movie];
-[in] setpts=PTS-STARTPTS, [movie] overlay=16:16 [out]
-
-# read from a video4linux2 device, and overlay it on top of the input
-# labelled as &quot;in&quot;
-movie=/dev/video0:f=video4linux2, scale=180:-1, setpts=PTS-STARTPTS [movie];
-[in] setpts=PTS-STARTPTS, [movie] overlay=16:16 [out]
-
-</pre></td></tr></table>
-
-<a name="mptestsrc"></a>
-<h2 class="section"><a href="libavfilter.html#toc-mptestsrc">9.4 mptestsrc</a></h2>
-
-<p>Generate various test patterns, as generated by the MPlayer test filter.
-</p>
-<p>The size of the generated video is fixed, and is 256x256.
-This source is useful in particular for testing encoding features.
-</p>
-<p>This source accepts an optional sequence of <var>key</var>=<var>value</var> pairs,
-separated by &quot;:&quot;. The description of the accepted options follows.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
-<dd><p>Specify the frame rate of the sourced video, as the number of frames
-generated per second. It has to be a string in the format
-<var>frame_rate_num</var>/<var>frame_rate_den</var>, an integer number, a float
-number or a valid video frame rate abbreviation. The default value is
-&quot;25&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>duration, d</samp>&rsquo;</dt>
-<dd><p>Set the video duration of the sourced video. The accepted syntax is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">[-]HH[:MM[:SS[.m...]]]
-[-]S+[.m...]
-</pre></td></tr></table>
-<p>See also the function <code>av_parse_time()</code>.
-</p>
-<p>If not specified, or the expressed duration is negative, the video is
-supposed to be generated forever.
-</p>
-</dd>
-<dt> &lsquo;<samp>test, t</samp>&rsquo;</dt>
-<dd>
-<p>Set the number or the name of the test to perform. Supported tests are:
-</p><dl compact="compact">
-<dt> &lsquo;<samp>dc_luma</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>dc_chroma</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>freq_luma</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>freq_chroma</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>amp_luma</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>amp_chroma</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>cbp</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>mv</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>ring1</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>ring2</samp>&rsquo;</dt>
-<dt> &lsquo;<samp>all</samp>&rsquo;</dt>
-</dl>
-
-<p>Default value is &quot;all&quot;, which will cycle through the list of all tests.
-</p></dd>
-</dl>
-
-<p>For example the following:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">testsrc=t=dc_luma
-</pre></td></tr></table>
-
-<p>will generate a &quot;dc_luma&quot; test pattern.
-</p>
-<a name="nullsrc"></a>
-<h2 class="section"><a href="libavfilter.html#toc-nullsrc">9.5 nullsrc</a></h2>
-
-<p>Null video source, never return images. It is mainly useful as a
-template and to be employed in analysis / debugging tools.
-</p>
-<p>It accepts as optional parameter a string of the form
-<var>width</var>:<var>height</var>:<var>timebase</var>.
-</p>
-<p><var>width</var> and <var>height</var> specify the size of the configured
-source. The default values of <var>width</var> and <var>height</var> are
-respectively 352 and 288 (corresponding to the CIF size format).
-</p>
-<p><var>timebase</var> specifies an arithmetic expression representing a
-timebase. The expression can contain the constants &quot;PI&quot;, &quot;E&quot;, &quot;PHI&quot;,
-&quot;AVTB&quot; (the default timebase), and defaults to the value &quot;AVTB&quot;.
-</p>
-<a name="frei0r_005fsrc"></a>
-<h2 class="section"><a href="libavfilter.html#toc-frei0r_005fsrc">9.6 frei0r_src</a></h2>
-
-<p>Provide a frei0r source.
-</p>
-<p>To enable compilation of this filter you need to install the frei0r
-header and configure FFmpeg with &ndash;enable-frei0r.
-</p>
-<p>The source supports the syntax:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"><var>size</var>:<var>rate</var>:<var>src_name</var>[{=|:}<var>param1</var>:<var>param2</var>:...:<var>paramN</var>]
-</pre></td></tr></table>
-
-<p><var>size</var> is the size of the video to generate, may be a string of the
-form <var>width</var>x<var>height</var> or a frame size abbreviation.
-<var>rate</var> is the rate of the video to generate, may be a string of
-the form <var>num</var>/<var>den</var> or a frame rate abbreviation.
-<var>src_name</var> is the name to the frei0r source to load. For more
-information regarding frei0r and how to set the parameters read the
-section <a href="#frei0r">frei0r</a> in the description of the video filters.
-</p>
-<p>Some examples follow:
-</p><table><tr><td>&nbsp;</td><td><pre class="example"># generate a frei0r partik0l source with size 200x200 and framerate 10
-# which is overlayed on the overlay filter main input
-frei0r_src=200x200:10:partik0l=1234 [overlay]; [in][overlay] overlay
-</pre></td></tr></table>
-
-<a name="rgbtestsrc_002c-testsrc"></a>
-<h2 class="section"><a href="libavfilter.html#toc-rgbtestsrc_002c-testsrc">9.7 rgbtestsrc, testsrc</a></h2>
-
-<p>The <code>rgbtestsrc</code> source generates an RGB test pattern useful for
-detecting RGB vs BGR issues. You should see a red, green and blue
-stripe from top to bottom.
-</p>
-<p>The <code>testsrc</code> source generates a test video pattern, showing a
-color pattern, a scrolling gradient and a timestamp. This is mainly
-intended for testing purposes.
-</p>
-<p>Both sources accept an optional sequence of <var>key</var>=<var>value</var> pairs,
-separated by &quot;:&quot;. The description of the accepted options follows.
-</p>
-<dl compact="compact">
-<dt> &lsquo;<samp>size, s</samp>&rsquo;</dt>
-<dd><p>Specify the size of the sourced video, it may be a string of the form
-<var>width</var>x<var>heigth</var>, or the name of a size abbreviation. The
-default value is &quot;320x240&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>rate, r</samp>&rsquo;</dt>
-<dd><p>Specify the frame rate of the sourced video, as the number of frames
-generated per second. It has to be a string in the format
-<var>frame_rate_num</var>/<var>frame_rate_den</var>, an integer number, a float
-number or a valid video frame rate abbreviation. The default value is
-&quot;25&quot;.
-</p>
-</dd>
-<dt> &lsquo;<samp>sar</samp>&rsquo;</dt>
-<dd><p>Set the sample aspect ratio of the sourced video.
-</p>
-</dd>
-<dt> &lsquo;<samp>duration</samp>&rsquo;</dt>
-<dd><p>Set the video duration of the sourced video. The accepted syntax is:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">[-]HH[:MM[:SS[.m...]]]
-[-]S+[.m...]
-</pre></td></tr></table>
-<p>See also the function <code>av_parse_time()</code>.
-</p>
-<p>If not specified, or the expressed duration is negative, the video is
-supposed to be generated forever.
-</p></dd>
-</dl>
-
-<p>For example the following:
-</p><table><tr><td>&nbsp;</td><td><pre class="example">testsrc=duration=5.3:size=qcif:rate=10
-</pre></td></tr></table>
-
-<p>will generate a video with a duration of 5.3 seconds, with size
-176x144 and a framerate of 10 frames per second.
-</p>
-
-<a name="Video-Sinks"></a>
-<h1 class="chapter"><a href="libavfilter.html#toc-Video-Sinks">10. Video Sinks</a></h1>
-
-<p>Below is a description of the currently available video sinks.
-</p>
-<a name="buffersink"></a>
-<h2 class="section"><a href="libavfilter.html#toc-buffersink">10.1 buffersink</a></h2>
-
-<p>Buffer video frames, and make them available to the end of the filter
-graph.
-</p>
-<p>This sink is mainly intended for a programmatic use, in particular
-through the interface defined in &lsquo;<tt>libavfilter/vsink_buffer.h</tt>&rsquo;.
-</p>
-<p>It does not require a string parameter in input, but you need to
-specify a pointer to a list of supported pixel formats terminated by
--1 in the opaque parameter provided to <code>avfilter_init_filter</code>
-when initializing this sink.
-</p>
-<a name="nullsink"></a>
-<h2 class="section"><a href="libavfilter.html#toc-nullsink">10.2 nullsink</a></h2>
-
-<p>Null video sink, do absolutely nothing with the input video. It is
-mainly useful as a template and to be employed in analysis / debugging
-tools.
-</p>
-
-
-<hr size="1">
-<p>
- <font size="-1">
-  This document was generated by <em>Kyle Schwarz</em> on <em>September 2, 2011</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.
- </font>
- <br>
-
-</p>
-</body>
-</html>
+<footer class="footer pagination-right">
+<span class="label label-info">This document was generated by <em>Kyle Schwarz</em> on <em>December 14, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies/ffmpeg/doc/libavformat.html b/dependencies/ffmpeg/doc/libavformat.html
new file mode 100644 (file)
index 0000000..8c5b256
--- /dev/null
@@ -0,0 +1,78 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on December 14, 2013 by texi2html 1.82 -->
+<!--
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>FFmpeg documentation : Libavformat </title>
+
+<meta name="description" content="Libavformat Documentation: ">
+<meta name="keywords" content="FFmpeg documentation : Libavformat ">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="default.css" />
+
+<link rel="icon" href="favicon.png" type="image/png" />
+</head>
+<body>
+<div id="container">
+<div id="body">
+
+<a name="SEC_Top"></a>
+<h1 class="settitle">Libavformat Documentation</h1>
+
+<a name="SEC_Contents"></a>
+<h1>Table of Contents</h1>
+<div class="contents">
+
+<ul class="toc">
+  <li><a name="toc-Description" href="#Description">1. Description</a></li>
+  <li><a name="toc-See-Also" href="#See-Also">2. See Also</a></li>
+  <li><a name="toc-Authors" href="#Authors">3. Authors</a></li>
+</ul>
+</div>
+
+<a name="Description"></a>
+<h1 class="chapter"><a href="libavformat.html#toc-Description">1. Description</a></h1>
+
+<p>The libavformat library provides a generic framework for multiplexing
+and demultiplexing (muxing and demuxing) audio, video and subtitle
+streams. It encompasses multiple muxers and demuxers for multimedia
+container formats.
+</p>
+<p>It also supports several input and output protocols to access a media
+resource.
+</p>
+
+<a name="See-Also"></a>
+<h1 class="chapter"><a href="libavformat.html#toc-See-Also">2. See Also</a></h1>
+
+<p><a href="ffmpeg.html">ffmpeg</a>, <a href="ffplay.html">ffplay</a>, <a href="ffprobe.html">ffprobe</a>, <a href="ffserver.html">ffserver</a>,
+<a href="ffmpeg-formats.html">ffmpeg-formats</a>, <a href="ffmpeg-protocols.html">ffmpeg-protocols</a>,
+<a href="libavutil.html">libavutil</a>, <a href="libavcodec.html">libavcodec</a>
+</p>
+
+<a name="Authors"></a>
+<h1 class="chapter"><a href="libavformat.html#toc-Authors">3. Authors</a></h1>
+
+<p>The FFmpeg developers.
+</p>
+<p>For details about the authorship, see the Git history of the project
+(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
+<code>git log</code> in the FFmpeg source directory, or browsing the
+online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
+</p>
+<p>Maintainers for the specific components are listed in the file
+&lsquo;<tt>MAINTAINERS</tt>&rsquo; in the source code tree.
+</p>
+
+<footer class="footer pagination-right">
+<span class="label label-info">This document was generated by <em>Kyle Schwarz</em> on <em>December 14, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies/ffmpeg/doc/libavutil.html b/dependencies/ffmpeg/doc/libavutil.html
new file mode 100644 (file)
index 0000000..8423478
--- /dev/null
@@ -0,0 +1,97 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on December 14, 2013 by texi2html 1.82 -->
+<!--
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>FFmpeg documentation : Libavutil </title>
+
+<meta name="description" content="Libavutil Documentation: ">
+<meta name="keywords" content="FFmpeg documentation : Libavutil ">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="default.css" />
+
+<link rel="icon" href="favicon.png" type="image/png" />
+</head>
+<body>
+<div id="container">
+<div id="body">
+
+<a name="SEC_Top"></a>
+<h1 class="settitle">Libavutil Documentation</h1>
+
+<a name="SEC_Contents"></a>
+<h1>Table of Contents</h1>
+<div class="contents">
+
+<ul class="toc">
+  <li><a name="toc-Description" href="#Description">1. Description</a></li>
+  <li><a name="toc-See-Also" href="#See-Also">2. See Also</a></li>
+  <li><a name="toc-Authors" href="#Authors">3. Authors</a></li>
+</ul>
+</div>
+
+<a name="Description"></a>
+<h1 class="chapter"><a href="libavutil.html#toc-Description">1. Description</a></h1>
+
+<p>The libavutil library is a utility library to aid portable
+multimedia programming. It contains safe portable string functions,
+random number generators, data structures, additional mathematics
+functions, cryptography and multimedia related functionality (like
+enumerations for pixel and sample formats). It is not a library for
+code needed by both libavcodec and libavformat.
+</p>
+<p>The goals for this library is to be:
+</p>
+<dl compact="compact">
+<dt> <strong>Modular</strong></dt>
+<dd><p>It should have few interdependencies and the possibility of disabling individual
+parts during <code>./configure</code>.
+</p>
+</dd>
+<dt> <strong>Small</strong></dt>
+<dd><p>Both sources and objects should be small.
+</p>
+</dd>
+<dt> <strong>Efficient</strong></dt>
+<dd><p>It should have low CPU and memory usage.
+</p>
+</dd>
+<dt> <strong>Useful</strong></dt>
+<dd><p>It should avoid useless features that almost no one needs.
+</p></dd>
+</dl>
+
+
+<a name="See-Also"></a>
+<h1 class="chapter"><a href="libavutil.html#toc-See-Also">2. See Also</a></h1>
+
+<p><a href="ffmpeg.html">ffmpeg</a>, <a href="ffplay.html">ffplay</a>, <a href="ffprobe.html">ffprobe</a>, <a href="ffserver.html">ffserver</a>,
+<a href="ffmpeg-utils.html">ffmpeg-utils</a>
+</p>
+
+<a name="Authors"></a>
+<h1 class="chapter"><a href="libavutil.html#toc-Authors">3. Authors</a></h1>
+
+<p>The FFmpeg developers.
+</p>
+<p>For details about the authorship, see the Git history of the project
+(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
+<code>git log</code> in the FFmpeg source directory, or browsing the
+online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
+</p>
+<p>Maintainers for the specific components are listed in the file
+&lsquo;<tt>MAINTAINERS</tt>&rsquo; in the source code tree.
+</p>
+
+<footer class="footer pagination-right">
+<span class="label label-info">This document was generated by <em>Kyle Schwarz</em> on <em>December 14, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies/ffmpeg/doc/libswresample.html b/dependencies/ffmpeg/doc/libswresample.html
new file mode 100644 (file)
index 0000000..d137bfa
--- /dev/null
@@ -0,0 +1,100 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on December 14, 2013 by texi2html 1.82 -->
+<!--
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>FFmpeg documentation : Libswresample </title>
+
+<meta name="description" content="Libswresample Documentation: ">
+<meta name="keywords" content="FFmpeg documentation : Libswresample ">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="default.css" />
+
+<link rel="icon" href="favicon.png" type="image/png" />
+</head>
+<body>
+<div id="container">
+<div id="body">
+
+<a name="SEC_Top"></a>
+<h1 class="settitle">Libswresample Documentation</h1>
+
+<a name="SEC_Contents"></a>
+<h1>Table of Contents</h1>
+<div class="contents">
+
+<ul class="toc">
+  <li><a name="toc-Description" href="#Description">1. Description</a></li>
+  <li><a name="toc-See-Also" href="#See-Also">2. See Also</a></li>
+  <li><a name="toc-Authors" href="#Authors">3. Authors</a></li>
+</ul>
+</div>
+
+<a name="Description"></a>
+<h1 class="chapter"><a href="libswresample.html#toc-Description">1. Description</a></h1>
+
+<p>The libswresample library performs highly optimized audio resampling,
+rematrixing and sample format conversion operations.
+</p>
+<p>Specifically, this library performs the following conversions:
+</p>
+<ul>
+<li>
+<em>Resampling</em>: is the process of changing the audio rate, for
+example from a high sample rate of 44100Hz to 8000Hz. Audio
+conversion from high to low sample rate is a lossy process. Several
+resampling options and algorithms are available.
+
+</li><li>
+<em>Format conversion</em>: is the process of converting the type of
+samples, for example from 16-bit signed samples to unsigned 8-bit or
+float samples. It also handles packing conversion, when passing from
+packed layout (all samples belonging to distinct channels interleaved
+in the same buffer), to planar layout (all samples belonging to the
+same channel stored in a dedicated buffer or &quot;plane&quot;).
+
+</li><li>
+<em>Rematrixing</em>: is the process of changing the channel layout, for
+example from stereo to mono. When the input channels cannot be mapped
+to the output streams, the process is lossy, since it involves
+different gain factors and mixing.
+</li></ul>
+
+<p>Various other audio conversions (e.g. stretching and padding) are
+enabled through dedicated options.
+</p>
+
+<a name="See-Also"></a>
+<h1 class="chapter"><a href="libswresample.html#toc-See-Also">2. See Also</a></h1>
+
+<p><a href="ffmpeg.html">ffmpeg</a>, <a href="ffplay.html">ffplay</a>, <a href="ffprobe.html">ffprobe</a>, <a href="ffserver.html">ffserver</a>,
+<a href="ffmpeg-resampler.html">ffmpeg-resampler</a>,
+<a href="libavutil.html">libavutil</a>
+</p>
+
+<a name="Authors"></a>
+<h1 class="chapter"><a href="libswresample.html#toc-Authors">3. Authors</a></h1>
+
+<p>The FFmpeg developers.
+</p>
+<p>For details about the authorship, see the Git history of the project
+(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
+<code>git log</code> in the FFmpeg source directory, or browsing the
+online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
+</p>
+<p>Maintainers for the specific components are listed in the file
+&lsquo;<tt>MAINTAINERS</tt>&rsquo; in the source code tree.
+</p>
+
+<footer class="footer pagination-right">
+<span class="label label-info">This document was generated by <em>Kyle Schwarz</em> on <em>December 14, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies/ffmpeg/doc/libswscale.html b/dependencies/ffmpeg/doc/libswscale.html
new file mode 100644 (file)
index 0000000..e3becab
--- /dev/null
@@ -0,0 +1,93 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on December 14, 2013 by texi2html 1.82 -->
+<!--
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>FFmpeg documentation : Libswscale </title>
+
+<meta name="description" content="Libswscale Documentation: ">
+<meta name="keywords" content="FFmpeg documentation : Libswscale ">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="default.css" />
+
+<link rel="icon" href="favicon.png" type="image/png" />
+</head>
+<body>
+<div id="container">
+<div id="body">
+
+<a name="SEC_Top"></a>
+<h1 class="settitle">Libswscale Documentation</h1>
+
+<a name="SEC_Contents"></a>
+<h1>Table of Contents</h1>
+<div class="contents">
+
+<ul class="toc">
+  <li><a name="toc-Description" href="#Description">1. Description</a></li>
+  <li><a name="toc-See-Also" href="#See-Also">2. See Also</a></li>
+  <li><a name="toc-Authors" href="#Authors">3. Authors</a></li>
+</ul>
+</div>
+
+<a name="Description"></a>
+<h1 class="chapter"><a href="libswscale.html#toc-Description">1. Description</a></h1>
+
+<p>The libswscale library performs highly optimized image scaling and
+colorspace and pixel format conversion operations.
+</p>
+<p>Specifically, this library performs the following conversions:
+</p>
+<ul>
+<li>
+<em>Rescaling</em>: is the process of changing the video size. Several
+rescaling options and algorithms are available. This is usually a
+lossy process.
+
+</li><li>
+<em>Pixel format conversion</em>: is the process of converting the image
+format and colorspace of the image, for example from planar YUV420P to
+RGB24 packed. It also handles packing conversion, that is converts
+from packed layout (all pixels belonging to distinct planes
+interleaved in the same buffer), to planar layout (all samples
+belonging to the same plane stored in a dedicated buffer or &quot;plane&quot;).
+
+<p>This is usually a lossy process in case the source and destination
+colorspaces differ.
+</p></li></ul>
+
+
+<a name="See-Also"></a>
+<h1 class="chapter"><a href="libswscale.html#toc-See-Also">2. See Also</a></h1>
+
+<p><a href="ffmpeg.html">ffmpeg</a>, <a href="ffplay.html">ffplay</a>, <a href="ffprobe.html">ffprobe</a>, <a href="ffserver.html">ffserver</a>,
+<a href="ffmpeg-scaler.html">ffmpeg-scaler</a>,
+<a href="libavutil.html">libavutil</a>
+</p>
+
+<a name="Authors"></a>
+<h1 class="chapter"><a href="libswscale.html#toc-Authors">3. Authors</a></h1>
+
+<p>The FFmpeg developers.
+</p>
+<p>For details about the authorship, see the Git history of the project
+(git://source.ffmpeg.org/ffmpeg), e.g. by typing the command
+<code>git log</code> in the FFmpeg source directory, or browsing the
+online repository at <a href="http://source.ffmpeg.org">http://source.ffmpeg.org</a>.
+</p>
+<p>Maintainers for the specific components are listed in the file
+&lsquo;<tt>MAINTAINERS</tt>&rsquo; in the source code tree.
+</p>
+
+<footer class="footer pagination-right">
+<span class="label label-info">This document was generated by <em>Kyle Schwarz</em> on <em>December 14, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies/ffmpeg/doc/nut.html b/dependencies/ffmpeg/doc/nut.html
new file mode 100644 (file)
index 0000000..1dcfa2e
--- /dev/null
@@ -0,0 +1,183 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on December 14, 2013 by texi2html 1.82 -->
+<!--
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>FFmpeg documentation : NUT: </title>
+
+<meta name="description" content="NUT: ">
+<meta name="keywords" content="FFmpeg documentation : NUT: ">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="default.css" />
+
+<link rel="icon" href="favicon.png" type="image/png" />
+</head>
+<body>
+<div id="container">
+<div id="body">
+
+<a name="SEC_Top"></a>
+<h1 class="settitle">NUT</h1>
+
+<a name="SEC_Contents"></a>
+<h1>Table of Contents</h1>
+<div class="contents">
+
+<ul class="toc">
+  <li><a name="toc-Description" href="#Description">1. Description</a></li>
+  <li><a name="toc-Container_002dspecific-codec-tags" href="#Container_002dspecific-codec-tags">2. Container-specific codec tags</a>
+  <ul class="toc">
+    <li><a name="toc-Generic-raw-YUVA-formats" href="#Generic-raw-YUVA-formats">2.1 Generic raw YUVA formats</a></li>
+    <li><a name="toc-Raw-Audio" href="#Raw-Audio">2.2 Raw Audio</a></li>
+    <li><a name="toc-Subtitles" href="#Subtitles">2.3 Subtitles</a></li>
+    <li><a name="toc-Raw-Data" href="#Raw-Data">2.4 Raw Data</a></li>
+    <li><a name="toc-Codecs" href="#Codecs">2.5 Codecs</a></li>
+  </ul>
+</li>
+</ul>
+</div>
+
+<a name="Description"></a>
+<h1 class="chapter"><a href="nut.html#toc-Description">1. Description</a></h1>
+<p>NUT is a low overhead generic container format. It stores audio, video,
+subtitle and user-defined streams in a simple, yet efficient, way.
+</p>
+<p>It was created by a group of FFmpeg and MPlayer developers in 2003
+and was finalized in 2008.
+</p>
+<p>The official nut specification is at svn://svn.mplayerhq.hu/nut
+In case of any differences between this text and the official specification,
+the official specification shall prevail.
+</p>
+<a name="Container_002dspecific-codec-tags"></a>
+<h1 class="chapter"><a href="nut.html#toc-Container_002dspecific-codec-tags">2. Container-specific codec tags</a></h1>
+
+<a name="Generic-raw-YUVA-formats"></a>
+<h2 class="section"><a href="nut.html#toc-Generic-raw-YUVA-formats">2.1 Generic raw YUVA formats</a></h2>
+
+<p>Since many exotic planar YUVA pixel formats are not considered by
+the AVI/QuickTime FourCC lists, the following scheme is adopted for
+representing them.
+</p>
+<p>The first two bytes can contain the values:
+Y1 = only Y
+Y2 = Y+A
+Y3 = YUV
+Y4 = YUVA
+</p>
+<p>The third byte represents the width and height chroma subsampling
+values for the UV planes, that is the amount to shift the luma
+width/height right to find the chroma width/height.
+</p>
+<p>The fourth byte is the number of bits used (8, 16, ...).
+</p>
+<p>If the order of bytes is inverted, that means that each component has
+to be read big-endian.
+</p>
+<a name="Raw-Audio"></a>
+<h2 class="section"><a href="nut.html#toc-Raw-Audio">2.2 Raw Audio</a></h2>
+
+<table>
+<tr><td width="40%">ALAW</td><td width="40%">A-LAW</td></tr>
+<tr><td width="40%">ULAW</td><td width="40%">MU-LAW</td></tr>
+<tr><td width="40%">P&lt;type&gt;&lt;interleaving&gt;&lt;bits&gt;</td><td width="40%">little-endian PCM</td></tr>
+<tr><td width="40%">&lt;bits&gt;&lt;interleaving&gt;&lt;type&gt;P</td><td width="40%">big-endian PCM</td></tr>
+</table>
+
+<p>&lt;type&gt; is S for signed integer, U for unsigned integer, F for IEEE float
+&lt;interleaving&gt; is D for default, P is for planar.
+&lt;bits&gt; is 8/16/24/32
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">PFD[32]   would for example be signed 32 bit little-endian IEEE float
+</pre></td></tr></table>
+
+<a name="Subtitles"></a>
+<h2 class="section"><a href="nut.html#toc-Subtitles">2.3 Subtitles</a></h2>
+
+<table>
+<tr><td width="40%">UTF8</td><td width="40%">Raw UTF-8</td></tr>
+<tr><td width="40%">SSA[0]</td><td width="40%">SubStation Alpha</td></tr>
+<tr><td width="40%">DVDS</td><td width="40%">DVD subtitles</td></tr>
+<tr><td width="40%">DVBS</td><td width="40%">DVB subtitles</td></tr>
+</table>
+
+<a name="Raw-Data"></a>
+<h2 class="section"><a href="nut.html#toc-Raw-Data">2.4 Raw Data</a></h2>
+
+<table>
+<tr><td width="40%">UTF8</td><td width="40%">Raw UTF-8</td></tr>
+</table>
+
+<a name="Codecs"></a>
+<h2 class="section"><a href="nut.html#toc-Codecs">2.5 Codecs</a></h2>
+
+<table>
+<tr><td width="40%">3IV1</td><td width="40%">non-compliant MPEG-4 generated by old 3ivx</td></tr>
+<tr><td width="40%">ASV1</td><td width="40%">Asus Video</td></tr>
+<tr><td width="40%">ASV2</td><td width="40%">Asus Video 2</td></tr>
+<tr><td width="40%">CVID</td><td width="40%">Cinepak</td></tr>
+<tr><td width="40%">CYUV</td><td width="40%">Creative YUV</td></tr>
+<tr><td width="40%">DIVX</td><td width="40%">non-compliant MPEG-4 generated by old DivX</td></tr>
+<tr><td width="40%">DUCK</td><td width="40%">Truemotion 1</td></tr>
+<tr><td width="40%">FFV1</td><td width="40%">FFmpeg video 1</td></tr>
+<tr><td width="40%">FFVH</td><td width="40%">FFmpeg Huffyuv</td></tr>
+<tr><td width="40%">H261</td><td width="40%">ITU H.261</td></tr>
+<tr><td width="40%">H262</td><td width="40%">ITU H.262</td></tr>
+<tr><td width="40%">H263</td><td width="40%">ITU H.263</td></tr>
+<tr><td width="40%">H264</td><td width="40%">ITU H.264</td></tr>
+<tr><td width="40%">HFYU</td><td width="40%">Huffyuv</td></tr>
+<tr><td width="40%">I263</td><td width="40%">Intel H.263</td></tr>
+<tr><td width="40%">IV31</td><td width="40%">Indeo 3.1</td></tr>
+<tr><td width="40%">IV32</td><td width="40%">Indeo 3.2</td></tr>
+<tr><td width="40%">IV50</td><td width="40%">Indeo 5.0</td></tr>
+<tr><td width="40%">LJPG</td><td width="40%">ITU JPEG (lossless)</td></tr>
+<tr><td width="40%">MJLS</td><td width="40%">ITU JPEG-LS</td></tr>
+<tr><td width="40%">MJPG</td><td width="40%">ITU JPEG</td></tr>
+<tr><td width="40%">MPG4</td><td width="40%">MS MPEG-4v1 (not ISO MPEG-4)</td></tr>
+<tr><td width="40%">MP42</td><td width="40%">MS MPEG-4v2</td></tr>
+<tr><td width="40%">MP43</td><td width="40%">MS MPEG-4v3</td></tr>
+<tr><td width="40%">MP4V</td><td width="40%">ISO MPEG-4 Part 2 Video (from old encoders)</td></tr>
+<tr><td width="40%">mpg1</td><td width="40%">ISO MPEG-1 Video</td></tr>
+<tr><td width="40%">mpg2</td><td width="40%">ISO MPEG-2 Video</td></tr>
+<tr><td width="40%">MRLE</td><td width="40%">MS RLE</td></tr>
+<tr><td width="40%">MSVC</td><td width="40%">MS Video 1</td></tr>
+<tr><td width="40%">RT21</td><td width="40%">Indeo 2.1</td></tr>
+<tr><td width="40%">RV10</td><td width="40%">RealVideo 1.0</td></tr>
+<tr><td width="40%">RV20</td><td width="40%">RealVideo 2.0</td></tr>
+<tr><td width="40%">RV30</td><td width="40%">RealVideo 3.0</td></tr>
+<tr><td width="40%">RV40</td><td width="40%">RealVideo 4.0</td></tr>
+<tr><td width="40%">SNOW</td><td width="40%">FFmpeg Snow</td></tr>
+<tr><td width="40%">SVQ1</td><td width="40%">Sorenson Video 1</td></tr>
+<tr><td width="40%">SVQ3</td><td width="40%">Sorenson Video 3</td></tr>
+<tr><td width="40%">theo</td><td width="40%">Xiph Theora</td></tr>
+<tr><td width="40%">TM20</td><td width="40%">Truemotion 2.0</td></tr>
+<tr><td width="40%">UMP4</td><td width="40%">non-compliant MPEG-4 generated by UB Video MPEG-4</td></tr>
+<tr><td width="40%">VCR1</td><td width="40%">ATI VCR1</td></tr>
+<tr><td width="40%">VP30</td><td width="40%">VP 3.0</td></tr>
+<tr><td width="40%">VP31</td><td width="40%">VP 3.1</td></tr>
+<tr><td width="40%">VP50</td><td width="40%">VP 5.0</td></tr>
+<tr><td width="40%">VP60</td><td width="40%">VP 6.0</td></tr>
+<tr><td width="40%">VP61</td><td width="40%">VP 6.1</td></tr>
+<tr><td width="40%">VP62</td><td width="40%">VP 6.2</td></tr>
+<tr><td width="40%">VP70</td><td width="40%">VP 7.0</td></tr>
+<tr><td width="40%">WMV1</td><td width="40%">MS WMV7</td></tr>
+<tr><td width="40%">WMV2</td><td width="40%">MS WMV8</td></tr>
+<tr><td width="40%">WMV3</td><td width="40%">MS WMV9</td></tr>
+<tr><td width="40%">WV1F</td><td width="40%">non-compliant MPEG-4 generated by ?</td></tr>
+<tr><td width="40%">WVC1</td><td width="40%">VC-1</td></tr>
+<tr><td width="40%">XVID</td><td width="40%">non-compliant MPEG-4 generated by old Xvid</td></tr>
+<tr><td width="40%">XVIX</td><td width="40%">non-compliant MPEG-4 generated by old Xvid with interlacing bug</td></tr>
+</table>
+
+<footer class="footer pagination-right">
+<span class="label label-info">This document was generated by <em>Kyle Schwarz</em> on <em>December 14, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies/ffmpeg/doc/platform.html b/dependencies/ffmpeg/doc/platform.html
new file mode 100644 (file)
index 0000000..d8bc01a
--- /dev/null
@@ -0,0 +1,421 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on December 14, 2013 by texi2html 1.82 -->
+<!--
+texi2html was written by: 
+            Lionel Cons <Lionel.Cons@cern.ch> (original author)
+            Karl Berry  <karl@freefriends.org>
+            Olaf Bachmann <obachman@mathematik.uni-kl.de>
+            and many others.
+Maintained by: Many creative people.
+Send bugs and suggestions to <texi2html-bug@nongnu.org>
+
+-->
+<head>
+<title>FFmpeg documentation : Platform Specific Information: </title>
+
+<meta name="description" content="Platform Specific Information: ">
+<meta name="keywords" content="FFmpeg documentation : Platform Specific Information: ">
+<meta name="Generator" content="texi2html 1.82">
+<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
+<link rel="stylesheet" type="text/css" href="default.css" />
+
+<link rel="icon" href="favicon.png" type="image/png" />
+</head>
+<body>
+<div id="container">
+<div id="body">
+
+<a name="SEC_Top"></a>
+<h1 class="settitle">Platform Specific Information</h1>
+
+<a name="SEC_Contents"></a>
+<h1>Table of Contents</h1>
+<div class="contents">
+
+<ul class="toc">
+  <li><a name="toc-Unix_002dlike" href="#Unix_002dlike">1. Unix-like</a>
+  <ul class="toc">
+    <li><a name="toc-BSD" href="#BSD">1.1 BSD</a></li>
+    <li><a name="toc-_0028Open_0029Solaris" href="#g_t_0028Open_0029Solaris">1.2 (Open)Solaris</a></li>
+    <li><a name="toc-Darwin-_0028Mac-OS-X_002c-iPhone_0029" href="#Darwin-_0028Mac-OS-X_002c-iPhone_0029">1.3 Darwin (Mac OS X, iPhone)</a></li>
+  </ul></li>
+  <li><a name="toc-DOS" href="#DOS">2. DOS</a></li>
+  <li><a name="toc-OS_002f2" href="#OS_002f2">3. OS/2</a></li>
+  <li><a name="toc-Windows" href="#Windows">4. Windows</a>
+  <ul class="toc">
+    <li><a name="toc-Native-Windows-compilation-using-MinGW-or-MinGW_002dw64" href="#Native-Windows-compilation-using-MinGW-or-MinGW_002dw64">4.1 Native Windows compilation using MinGW or MinGW-w64</a></li>
+    <li><a name="toc-Microsoft-Visual-C_002b_002b-or-Intel-C_002b_002b-Compiler-for-Windows" href="#Microsoft-Visual-C_002b_002b-or-Intel-C_002b_002b-Compiler-for-Windows">4.2 Microsoft Visual C++ or Intel C++ Compiler for Windows</a>
+    <ul class="toc">
+      <li><a name="toc-Linking-to-FFmpeg-with-Microsoft-Visual-C_002b_002b" href="#Linking-to-FFmpeg-with-Microsoft-Visual-C_002b_002b">4.2.1 Linking to FFmpeg with Microsoft Visual C++</a></li>
+    </ul></li>
+    <li><a name="toc-Cross-compilation-for-Windows-with-Linux-1" href="#Cross-compilation-for-Windows-with-Linux-1">4.3 Cross compilation for Windows with Linux</a></li>
+    <li><a name="toc-Compilation-under-Cygwin" href="#Compilation-under-Cygwin">4.4 Compilation under Cygwin</a></li>
+    <li><a name="toc-Crosscompilation-for-Windows-under-Cygwin" href="#Crosscompilation-for-Windows-under-Cygwin">4.5 Crosscompilation for Windows under Cygwin</a></li>
+  </ul></li>
+  <li><a name="toc-Plan-9" href="#Plan-9">5. Plan 9</a></li>
+</ul>
+</div>
+
+<a name="Unix_002dlike"></a>
+<h1 class="chapter"><a href="platform.html#toc-Unix_002dlike">1. Unix-like</a></h1>
+
+<p>Some parts of FFmpeg cannot be built with version 2.15 of the GNU
+assembler which is still provided by a few AMD64 distributions. To
+make sure your compiler really uses the required version of gas
+after a binutils upgrade, run:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">$(gcc -print-prog-name=as) --version
+</pre></td></tr></table>
+
+<p>If not, then you should install a different compiler that has no
+hard-coded path to gas. In the worst case pass <code>--disable-asm</code>
+to configure.
+</p>
+<a name="BSD"></a>
+<h2 class="section"><a href="platform.html#toc-BSD">1.1 BSD</a></h2>
+
+<p>BSD make will not build FFmpeg, you need to install and use GNU Make
+(<code>gmake</code>).
+</p>
+<a name="g_t_0028Open_0029Solaris"></a>
+<h2 class="section"><a href="platform.html#toc-_0028Open_0029Solaris">1.2 (Open)Solaris</a></h2>
+
+<p>GNU Make is required to build FFmpeg, so you have to invoke (<code>gmake</code>),
+standard Solaris Make will not work. When building with a non-c99 front-end
+(gcc, generic suncc) add either <code>--extra-libs=/usr/lib/values-xpg6.o</code>
+or <code>--extra-libs=/usr/lib/64/values-xpg6.o</code> to the configure options
+since the libc is not c99-compliant by default. The probes performed by
+configure may raise an exception leading to the death of configure itself
+due to a bug in the system shell. Simply invoke a different shell such as
+bash directly to work around this:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">bash ./configure
+</pre></td></tr></table>
+
+<p><a name="Darwin"></a>
+</p><a name="Darwin-_0028Mac-OS-X_002c-iPhone_0029"></a>
+<h2 class="section"><a href="platform.html#toc-Darwin-_0028Mac-OS-X_002c-iPhone_0029">1.3 Darwin (Mac OS X, iPhone)</a></h2>
+
+<p>The toolchain provided with Xcode is sufficient to build the basic
+unacelerated code.
+</p>
+<p>Mac OS X on PowerPC or ARM (iPhone) requires a preprocessor from
+<a href="http://github.com/yuvi/gas-preprocessor">http://github.com/yuvi/gas-preprocessor</a> to build the optimized
+assembler functions. Just download the Perl script and put it somewhere
+in your PATH, FFmpeg&rsquo;s configure will pick it up automatically.
+</p>
+<p>Mac OS X on amd64 and x86 requires <code>yasm</code> to build most of the
+optimized assembler functions. <a href="http://www.finkproject.org/">Fink</a>,
+<a href="http://www.gentoo.org/proj/en/gentoo-alt/prefix/bootstrap-macos.xml">Gentoo Prefix</a>,
+<a href="http://mxcl.github.com/homebrew/">Homebrew</a>
+or <a href="http://www.macports.org">MacPorts</a> can easily provide it.
+</p>
+
+<a name="DOS"></a>
+<h1 class="chapter"><a href="platform.html#toc-DOS">2. DOS</a></h1>
+
+<p>Using a cross-compiler is preferred for various reasons.
+<a href="http://www.delorie.com/howto/djgpp/linux-x-djgpp.html">http://www.delorie.com/howto/djgpp/linux-x-djgpp.html</a>
+</p>
+
+<a name="OS_002f2"></a>
+<h1 class="chapter"><a href="platform.html#toc-OS_002f2">3. OS/2</a></h1>
+
+<p>For information about compiling FFmpeg on OS/2 see
+<a href="http://www.edm2.com/index.php/FFmpeg">http://www.edm2.com/index.php/FFmpeg</a>.
+</p>
+
+<a name="Windows"></a>
+<h1 class="chapter"><a href="platform.html#toc-Windows">4. Windows</a></h1>
+
+<p>To get help and instructions for building FFmpeg under Windows, check out
+the FFmpeg Windows Help Forum at <a href="http://ffmpeg.zeranoe.com/forum/">http://ffmpeg.zeranoe.com/forum/</a>.
+</p>
+<a name="Native-Windows-compilation-using-MinGW-or-MinGW_002dw64"></a>
+<h2 class="section"><a href="platform.html#toc-Native-Windows-compilation-using-MinGW-or-MinGW_002dw64">4.1 Native Windows compilation using MinGW or MinGW-w64</a></h2>
+
+<p>FFmpeg can be built to run natively on Windows using the MinGW or MinGW-w64
+toolchains. Install the latest versions of MSYS and MinGW or MinGW-w64 from
+<a href="http://www.mingw.org/">http://www.mingw.org/</a> or <a href="http://mingw-w64.sourceforge.net/">http://mingw-w64.sourceforge.net/</a>.
+You can find detailed installation instructions in the download section and
+the FAQ.
+</p>
+<p>Notes:
+</p>
+<ul>
+<li> Building natively using MSYS can be sped up by disabling implicit rules
+in the Makefile by calling <code>make -r</code> instead of plain <code>make</code>. This
+speed up is close to non-existent for normal one-off builds and is only
+noticeable when running make for a second time (for example during
+<code>make install</code>).
+
+</li><li> In order to compile FFplay, you must have the MinGW development library
+of <a href="http://www.libsdl.org/">SDL</a> and <code>pkg-config</code> installed.
+
+</li><li> By using <code>./configure --enable-shared</code> when configuring FFmpeg,
+you can build the FFmpeg libraries (e.g. libavutil, libavcodec,
+libavformat) as DLLs.
+
+</li></ul>
+
+<a name="Microsoft-Visual-C_002b_002b-or-Intel-C_002b_002b-Compiler-for-Windows"></a>
+<h2 class="section"><a href="platform.html#toc-Microsoft-Visual-C_002b_002b-or-Intel-C_002b_002b-Compiler-for-Windows">4.2 Microsoft Visual C++ or Intel C++ Compiler for Windows</a></h2>
+
+<p>FFmpeg can be built with MSVC 2012 or earlier using a C99-to-C89 conversion utility
+and wrapper, or with MSVC 2013 and ICL natively.
+</p>
+<p>You will need the following prerequisites:
+</p>
+<ul>
+<li> <a href="https://github.com/libav/c99-to-c89/">C99-to-C89 Converter &amp; Wrapper</a>
+(if using MSVC 2012 or earlier)
+</li><li> <a href="http://code.google.com/p/msinttypes/">msinttypes</a>
+(if using MSVC 2012 or earlier)
+</li><li> <a href="http://www.mingw.org/">MSYS</a>
+</li><li> <a href="http://yasm.tortall.net/">YASM</a>
+</li><li> <a href="http://gnuwin32.sourceforge.net/packages/bc.htm">bc for Windows</a> if
+you want to run <a href="fate.html">FATE</a>.
+</li></ul>
+
+<p>To set up a proper environment in MSYS, you need to run <code>msys.bat</code> from
+the Visual Studio or Intel Compiler command prompt.
+</p>
+<p>Place <code>yasm.exe</code> somewhere in your <code>PATH</code>. If using MSVC 2012 or
+earlier, place <code>c99wrap.exe</code> and <code>c99conv.exe</code> somewhere in your
+<code>PATH</code> as well.
+</p>
+<p>Next, make sure any other headers and libs you want to use, such as zlib, are
+located in a spot that the compiler can see. Do so by modifying the <code>LIB</code>
+and <code>INCLUDE</code> environment variables to include the <strong>Windows-style</strong>
+paths to these directories. Alternatively, you can try and use the
+<code>--extra-cflags</code>/<code>--extra-ldflags</code> configure options. If using MSVC
+2012 or earlier, place <code>inttypes.h</code> somewhere the compiler can see too.
+</p>
+<p>Finally, run:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">For MSVC:
+./configure --toolchain=msvc
+
+For ICL:
+./configure --toolchain=icl
+
+make
+make install
+</pre></td></tr></table>
+
+<p>If you wish to compile shared libraries, add <code>--enable-shared</code> to your
+configure options. Note that due to the way MSVC and ICL handle DLL imports and
+exports, you cannot compile static and shared libraries at the same time, and
+enabling shared libraries will automatically disable the static ones.
+</p>
+<p>Notes:
+</p>
+<ul>
+<li> It is possible that coreutils&rsquo; <code>link.exe</code> conflicts with MSVC&rsquo;s linker.
+You can find out by running <code>which link</code> to see which <code>link.exe</code> you
+are using. If it is located at <code>/bin/link.exe</code>, then you have the wrong one
+in your <code>PATH</code>. Either move or remove that copy, or make sure MSVC&rsquo;s
+<code>link.exe</code> takes precedence in your <code>PATH</code> over coreutils&rsquo;.
+
+</li><li> If you wish to build with zlib support, you will have to grab a compatible
+zlib binary from somewhere, with an MSVC import lib, or if you wish to link
+statically, you can follow the instructions below to build a compatible
+<code>zlib.lib</code> with MSVC. Regardless of which method you use, you must still
+follow step 3, or compilation will fail.
+<ol>
+<li> Grab the <a href="http://zlib.net/">zlib sources</a>.
+</li><li> Edit <code>win32/Makefile.msc</code> so that it uses -MT instead of -MD, since
+this is how FFmpeg is built as well.
+</li><li> Edit <code>zconf.h</code> and remove its inclusion of <code>unistd.h</code>. This gets
+erroneously included when building FFmpeg.
+</li><li> Run <code>nmake -f win32/Makefile.msc</code>.
+</li><li> Move <code>zlib.lib</code>, <code>zconf.h</code>, and <code>zlib.h</code> to somewhere MSVC
+can see.
+</li></ol>
+
+</li><li> FFmpeg has been tested with the following on i686 and x86_64:
+<ul>
+<li> Visual Studio 2010 Pro and Express
+</li><li> Visual Studio 2012 Pro and Express
+</li><li> Visual Studio 2013 Pro and Express
+</li><li> Intel Composer XE 2013
+</li><li> Intel Composer XE 2013 SP1
+</li></ul>
+<p>Anything else is not officially supported.
+</p>
+</li></ul>
+
+<a name="Linking-to-FFmpeg-with-Microsoft-Visual-C_002b_002b"></a>
+<h3 class="subsection"><a href="platform.html#toc-Linking-to-FFmpeg-with-Microsoft-Visual-C_002b_002b">4.2.1 Linking to FFmpeg with Microsoft Visual C++</a></h3>
+
+<p>If you plan to link with MSVC-built static libraries, you will need
+to make sure you have <code>Runtime Library</code> set to
+<code>Multi-threaded (/MT)</code> in your project&rsquo;s settings.
+</p>
+<p>You will need to define <code>inline</code> to something MSVC understands:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">#define inline __inline
+</pre></td></tr></table>
+
+<p>Also note, that as stated in <strong>Microsoft Visual C++</strong>, you will need
+an MSVC-compatible <a href="http://code.google.com/p/msinttypes/">inttypes.h</a>.
+</p>
+<p>If you plan on using import libraries created by dlltool, you must
+set <code>References</code> to <code>No (/OPT:NOREF)</code> under the linker optimization
+settings, otherwise the resulting binaries will fail during runtime.
+This is not required when using import libraries generated by <code>lib.exe</code>.
+This issue is reported upstream at
+<a href="http://sourceware.org/bugzilla/show_bug.cgi?id=12633">http://sourceware.org/bugzilla/show_bug.cgi?id=12633</a>.
+</p>
+<p>To create import libraries that work with the <code>/OPT:REF</code> option
+(which is enabled by default in Release mode), follow these steps:
+</p>
+<ol>
+<li> Open the <em>Visual Studio Command Prompt</em>.
+
+<p>Alternatively, in a normal command line prompt, call &lsquo;<tt>vcvars32.bat</tt>&rsquo;
+which sets up the environment variables for the Visual C++ tools
+(the standard location for this file is something like
+&lsquo;<tt>C:\Program Files (x86_\Microsoft Visual Studio 10.0\VC\bin\vcvars32.bat</tt>&rsquo;).
+</p>
+</li><li> Enter the &lsquo;<tt>bin</tt>&rsquo; directory where the created LIB and DLL files
+are stored.
+
+</li><li> Generate new import libraries with <code>lib.exe</code>:
+
+<table><tr><td>&nbsp;</td><td><pre class="example">lib /machine:i386 /def:..\lib\foo-version.def  /out:foo.lib
+</pre></td></tr></table>
+
+<p>Replace <code>foo-version</code> and <code>foo</code> with the respective library names.
+</p>
+</li></ol>
+
+<p><a name="Cross-compilation-for-Windows-with-Linux"></a>
+</p><a name="Cross-compilation-for-Windows-with-Linux-1"></a>
+<h2 class="section"><a href="platform.html#toc-Cross-compilation-for-Windows-with-Linux-1">4.3 Cross compilation for Windows with Linux</a></h2>
+
+<p>You must use the MinGW cross compilation tools available at
+<a href="http://www.mingw.org/">http://www.mingw.org/</a>.
+</p>
+<p>Then configure FFmpeg with the following options:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">./configure --target-os=mingw32 --cross-prefix=i386-mingw32msvc-
+</pre></td></tr></table>
+<p>(you can change the cross-prefix according to the prefix chosen for the
+MinGW tools).
+</p>
+<p>Then you can easily test FFmpeg with <a href="http://www.winehq.com/">Wine</a>.
+</p>
+<a name="Compilation-under-Cygwin"></a>
+<h2 class="section"><a href="platform.html#toc-Compilation-under-Cygwin">4.4 Compilation under Cygwin</a></h2>
+
+<p>Please use Cygwin 1.7.x as the obsolete 1.5.x Cygwin versions lack
+llrint() in its C library.
+</p>
+<p>Install your Cygwin with all the &quot;Base&quot; packages, plus the
+following &quot;Devel&quot; ones:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">binutils, gcc4-core, make, git, mingw-runtime, texi2html
+</pre></td></tr></table>
+
+<p>In order to run FATE you will also need the following &quot;Utils&quot; packages:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">bc, diffutils
+</pre></td></tr></table>
+
+<p>If you want to build FFmpeg with additional libraries, download Cygwin
+&quot;Devel&quot; packages for Ogg and Vorbis from any Cygwin packages repository:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">libogg-devel, libvorbis-devel
+</pre></td></tr></table>
+
+<p>These library packages are only available from
+<a href="http://sourceware.org/cygwinports/">Cygwin Ports</a>:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example">yasm, libSDL-devel, libfaac-devel, libaacplus-devel, libgsm-devel, libmp3lame-devel,
+libschroedinger1.0-devel, speex-devel, libtheora-devel, libxvidcore-devel
+</pre></td></tr></table>
+
+<p>The recommendation for x264 is to build it from source, as it evolves too
+quickly for Cygwin Ports to be up to date.
+</p>
+<a name="Crosscompilation-for-Windows-under-Cygwin"></a>
+<h2 class="section"><a href="platform.html#toc-Crosscompilation-for-Windows-under-Cygwin">4.5 Crosscompilation for Windows under Cygwin</a></h2>
+
+<p>With Cygwin you can create Windows binaries that do not need the cygwin1.dll.
+</p>
+<p>Just install your Cygwin as explained before, plus these additional
+&quot;Devel&quot; packages:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">gcc-mingw-core, mingw-runtime, mingw-zlib
+</pre></td></tr></table>
+
+<p>and add some special flags to your configure invocation.
+</p>
+<p>For a static build run
+</p><table><tr><td>&nbsp;</td><td><pre class="example">./configure --target-os=mingw32 --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin
+</pre></td></tr></table>
+
+<p>and for a build with shared libraries
+</p><table><tr><td>&nbsp;</td><td><pre class="example">./configure --target-os=mingw32 --enable-shared --disable-static --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin
+</pre></td></tr></table>
+
+<a name="Plan-9"></a>
+<h1 class="chapter"><a href="platform.html#toc-Plan-9">5. Plan 9</a></h1>
+
+<p>The native <a href="http://plan9.bell-labs.com/plan9/">Plan 9</a> compiler
+does not implement all the C99 features needed by FFmpeg so the gcc
+port must be used.  Furthermore, a few items missing from the C
+library and shell environment need to be fixed.
+</p>
+<ul>
+<li> GNU awk, grep, make, and sed
+
+<p>Working packages of these tools can be found at
+<a href="http://code.google.com/p/ports2plan9/downloads/list">ports2plan9</a>.
+They can be installed with <a href="http://9front.org/">9front&rsquo;s</a> <code>pkg</code>
+utility by setting <code>pkgpath</code> to
+<code>http://ports2plan9.googlecode.com/files/</code>.
+</p>
+</li><li> Missing/broken <code>head</code> and <code>printf</code> commands
+
+<p>Replacements adequate for building FFmpeg can be found in the
+<code>compat/plan9</code> directory.  Place these somewhere they will be
+found by the shell.  These are not full implementations of the
+commands and are <em>not</em> suitable for general use.
+</p>
+</li><li> Missing C99 <code>stdint.h</code> and <code>inttypes.h</code>
+
+<p>Replacement headers are available from
+<a href="http://code.google.com/p/plan9front/issues/detail?id=152">http://code.google.com/p/plan9front/issues/detail?id=152</a>.
+</p>
+</li><li> Missing or non-standard library functions
+
+<p>Some functions in the C library are missing or incomplete.  The
+<code><a href="http://ports2plan9.googlecode.com/files/gcc-apelibs-1207.tbz">gcc-apelibs-1207</a></code> package from
+<a href="http://code.google.com/p/ports2plan9/downloads/list">ports2plan9</a>
+includes an updated C library, but installing the full package gives
+unusable executables.  Instead, keep the files from <code>gccbin.tgz</code>
+under <code>/386/lib/gnu</code>.  From the <code>libc.a</code> archive in the
+<code>gcc-apelibs-1207</code> package, extract the following object files and
+turn them into a library:
+</p>
+<ul>
+<li> <code>strerror.o</code>
+</li><li> <code>strtoll.o</code>
+</li><li> <code>snprintf.o</code>
+</li><li> <code>vsnprintf.o</code>
+</li><li> <code>vfprintf.o</code>
+</li><li> <code>_IO_getc.o</code>
+</li><li> <code>_IO_putc.o</code>
+</li></ul>
+
+<p>Use the <code>--extra-libs</code> option of <code>configure</code> to inform the
+build system of this library.
+</p>
+</li><li> FPU exceptions enabled by default
+
+<p>Unlike most other systems, Plan 9 enables FPU exceptions by default.
+These must be disabled before calling any FFmpeg functions.  While the
+included tools will do this automatically, other users of the
+libraries must do it themselves.
+</p>
+</li></ul>
+
+<footer class="footer pagination-right">
+<span class="label label-info">This document was generated by <em>Kyle Schwarz</em> on <em>December 14, 2013</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies/ffmpeg/ff-prompt.cmd b/dependencies/ffmpeg/ff-prompt.cmd
new file mode 100644 (file)
index 0000000..63bd33d
--- /dev/null
@@ -0,0 +1,35 @@
+ECHO OFF
+REM FF Prompt 1.0
+REM Open a command prompt to run ffmpeg/ffplay/ffprobe
+REM Copyright (C) 2013  Kyle Schwarz
+
+TITLE "FF Prompt"
+
+IF NOT EXIST bin\ffmpeg.exe (
+  CLS
+  ECHO bin\ffmpeg.exe could not be found.
+  GOTO:error
+)
+
+CD bin || GOTO:error
+PROMPT $G
+CLS
+ffmpeg -version
+SET PATH=%CD%;%PATH%
+ECHO.
+ECHO For help run: ffmpeg -h
+ECHO For formats run: ffmpeg -formats ^| more
+ECHO For codecs run: ffmpeg -codecs ^| more
+ECHO.
+ECHO Current directory is now: "%CD%"
+ECHO The bin directory has been added to PATH
+ECHO.
+
+CMD /F:ON /Q /K
+GOTO:EOF
+
+:error
+  ECHO.
+  ECHO Press any key to exit.
+  PAUSE >nul
+  GOTO:EOF
diff --git a/dependencies/ffmpeg/licenses/fontconfig.txt b/dependencies/ffmpeg/licenses/fontconfig.txt
new file mode 100644 (file)
index 0000000..2a5d777
--- /dev/null
@@ -0,0 +1,27 @@
+fontconfig/COPYING
+
+Copyright © 2000,2001,2002,2003,2004,2006,2007 Keith Packard
+Copyright © 2005 Patrick Lam
+Copyright © 2009 Roozbeh Pournader
+Copyright © 2008,2009 Red Hat, Inc.
+Copyright © 2008 Danilo Šegan
+
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation, and that the name of the author(s) not be used in
+advertising or publicity pertaining to distribution of the software without
+specific, written prior permission.  The authors make no
+representations about the suitability of this software for any purpose.  It
+is provided "as is" without express or implied warranty.
+
+THE AUTHOR(S) DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+EVENT SHALL THE AUTHOR(S) BE LIABLE FOR ANY SPECIAL, INDIRECT OR
+CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
+DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
+TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
+PERFORMANCE OF THIS SOFTWARE.
+
index b6ee268ef765991bfcd8a100abd0c62992dcb916..1b1174021d8c76c8539b006261948bb4852302e3 100644 (file)
-                   GNU GENERAL PUBLIC LICENSE\r
-                      Version 2, June 1991\r
-\r
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.\r
-     51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA\r
- Everyone is permitted to copy and distribute verbatim copies\r
- of this license document, but changing it is not allowed.\r
-\r
-                           Preamble\r
-\r
-  The licenses for most software are designed to take away your\r
-freedom to share and change it.  By contrast, the GNU General Public\r
-License is intended to guarantee your freedom to share and change free\r
-software--to make sure the software is free for all its users.  This\r
-General Public License applies to most of the Free Software\r
-Foundation's software and to any other program whose authors commit to\r
-using it.  (Some other Free Software Foundation software is covered by\r
-the GNU Library General Public License instead.)  You can apply it to\r
-your programs, too.\r
-\r
-  When we speak of free software, we are referring to freedom, not\r
-price.  Our General Public Licenses are designed to make sure that you\r
-have the freedom to distribute copies of free software (and charge for\r
-this service if you wish), that you receive source code or can get it\r
-if you want it, that you can change the software or use pieces of it\r
-in new free programs; and that you know you can do these things.\r
-\r
-  To protect your rights, we need to make restrictions that forbid\r
-anyone to deny you these rights or to ask you to surrender the rights.\r
-These restrictions translate to certain responsibilities for you if you\r
-distribute copies of the software, or if you modify it.\r
-\r
-  For example, if you distribute copies of such a program, whether\r
-gratis or for a fee, you must give the recipients all the rights that\r
-you have.  You must make sure that they, too, receive or can get the\r
-source code.  And you must show them these terms so they know their\r
-rights.\r
-\r
-  We protect your rights with two steps: (1) copyright the software, and\r
-(2) offer you this license which gives you legal permission to copy,\r
-distribute and/or modify the software.\r
-\r
-  Also, for each author's protection and ours, we want to make certain\r
-that everyone understands that there is no warranty for this free\r
-software.  If the software is modified by someone else and passed on, we\r
-want its recipients to know that what they have is not the original, so\r
-that any problems introduced by others will not reflect on the original\r
-authors' reputations.\r
-\r
-  Finally, any free program is threatened constantly by software\r
-patents.  We wish to avoid the danger that redistributors of a free\r
-program will individually obtain patent licenses, in effect making the\r
-program proprietary.  To prevent this, we have made it clear that any\r
-patent must be licensed for everyone's free use or not licensed at all.\r
-\r
-  The precise terms and conditions for copying, distribution and\r
-modification follow.\r
-\f\r
-                   GNU GENERAL PUBLIC LICENSE\r
-   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\r
-\r
-  0. This License applies to any program or other work which contains\r
-a notice placed by the copyright holder saying it may be distributed\r
-under the terms of this General Public License.  The "Program", below,\r
-refers to any such program or work, and a "work based on the Program"\r
-means either the Program or any derivative work under copyright law:\r
-that is to say, a work containing the Program or a portion of it,\r
-either verbatim or with modifications and/or translated into another\r
-language.  (Hereinafter, translation is included without limitation in\r
-the term "modification".)  Each licensee is addressed as "you".\r
-\r
-Activities other than copying, distribution and modification are not\r
-covered by this License; they are outside its scope.  The act of\r
-running the Program is not restricted, and the output from the Program\r
-is covered only if its contents constitute a work based on the\r
-Program (independent of having been made by running the Program).\r
-Whether that is true depends on what the Program does.\r
-\r
-  1. You may copy and distribute verbatim copies of the Program's\r
-source code as you receive it, in any medium, provided that you\r
-conspicuously and appropriately publish on each copy an appropriate\r
-copyright notice and disclaimer of warranty; keep intact all the\r
-notices that refer to this License and to the absence of any warranty;\r
-and give any other recipients of the Program a copy of this License\r
-along with the Program.\r
-\r
-You may charge a fee for the physical act of transferring a copy, and\r
-you may at your option offer warranty protection in exchange for a fee.\r
-\r
-  2. You may modify your copy or copies of the Program or any portion\r
-of it, thus forming a work based on the Program, and copy and\r
-distribute such modifications or work under the terms of Section 1\r
-above, provided that you also meet all of these conditions:\r
-\r
-    a) You must cause the modified files to carry prominent notices\r
-    stating that you changed the files and the date of any change.\r
-\r
-    b) You must cause any work that you distribute or publish, that in\r
-    whole or in part contains or is derived from the Program or any\r
-    part thereof, to be licensed as a whole at no charge to all third\r
-    parties under the terms of this License.\r
-\r
-    c) If the modified program normally reads commands interactively\r
-    when run, you must cause it, when started running for such\r
-    interactive use in the most ordinary way, to print or display an\r
-    announcement including an appropriate copyright notice and a\r
-    notice that there is no warranty (or else, saying that you provide\r
-    a warranty) and that users may redistribute the program under\r
-    these conditions, and telling the user how to view a copy of this\r
-    License.  (Exception: if the Program itself is interactive but\r
-    does not normally print such an announcement, your work based on\r
-    the Program is not required to print an announcement.)\r
-\f\r
-These requirements apply to the modified work as a whole.  If\r
-identifiable sections of that work are not derived from the Program,\r
-and can be reasonably considered independent and separate works in\r
-themselves, then this License, and its terms, do not apply to those\r
-sections when you distribute them as separate works.  But when you\r
-distribute the same sections as part of a whole which is a work based\r
-on the Program, the distribution of the whole must be on the terms of\r
-this License, whose permissions for other licensees extend to the\r
-entire whole, and thus to each and every part regardless of who wrote it.\r
-\r
-Thus, it is not the intent of this section to claim rights or contest\r
-your rights to work written entirely by you; rather, the intent is to\r
-exercise the right to control the distribution of derivative or\r
-collective works based on the Program.\r
-\r
-In addition, mere aggregation of another work not based on the Program\r
-with the Program (or with a work based on the Program) on a volume of\r
-a storage or distribution medium does not bring the other work under\r
-the scope of this License.\r
-\r
-  3. You may copy and distribute the Program (or a work based on it,\r
-under Section 2) in object code or executable form under the terms of\r
-Sections 1 and 2 above provided that you also do one of the following:\r
-\r
-    a) Accompany it with the complete corresponding machine-readable\r
-    source code, which must be distributed under the terms of Sections\r
-    1 and 2 above on a medium customarily used for software interchange; or,\r
-\r
-    b) Accompany it with a written offer, valid for at least three\r
-    years, to give any third party, for a charge no more than your\r
-    cost of physically performing source distribution, a complete\r
-    machine-readable copy of the corresponding source code, to be\r
-    distributed under the terms of Sections 1 and 2 above on a medium\r
-    customarily used for software interchange; or,\r
-\r
-    c) Accompany it with the information you received as to the offer\r
-    to distribute corresponding source code.  (This alternative is\r
-    allowed only for noncommercial distribution and only if you\r
-    received the program in object code or executable form with such\r
-    an offer, in accord with Subsection b above.)\r
-\r
-The source code for a work means the preferred form of the work for\r
-making modifications to it.  For an executable work, complete source\r
-code means all the source code for all modules it contains, plus any\r
-associated interface definition files, plus the scripts used to\r
-control compilation and installation of the executable.  However, as a\r
-special exception, the source code distributed need not include\r
-anything that is normally distributed (in either source or binary\r
-form) with the major components (compiler, kernel, and so on) of the\r
-operating system on which the executable runs, unless that component\r
-itself accompanies the executable.\r
-\r
-If distribution of executable or object code is made by offering\r
-access to copy from a designated place, then offering equivalent\r
-access to copy the source code from the same place counts as\r
-distribution of the source code, even though third parties are not\r
-compelled to copy the source along with the object code.\r
-\f\r
-  4. You may not copy, modify, sublicense, or distribute the Program\r
-except as expressly provided under this License.  Any attempt\r
-otherwise to copy, modify, sublicense or distribute the Program is\r
-void, and will automatically terminate your rights under this License.\r
-However, parties who have received copies, or rights, from you under\r
-this License will not have their licenses terminated so long as such\r
-parties remain in full compliance.\r
-\r
-  5. You are not required to accept this License, since you have not\r
-signed it.  However, nothing else grants you permission to modify or\r
-distribute the Program or its derivative works.  These actions are\r
-prohibited by law if you do not accept this License.  Therefore, by\r
-modifying or distributing the Program (or any work based on the\r
-Program), you indicate your acceptance of this License to do so, and\r
-all its terms and conditions for copying, distributing or modifying\r
-the Program or works based on it.\r
-\r
-  6. Each time you redistribute the Program (or any work based on the\r
-Program), the recipient automatically receives a license from the\r
-original licensor to copy, distribute or modify the Program subject to\r
-these terms and conditions.  You may not impose any further\r
-restrictions on the recipients' exercise of the rights granted herein.\r
-You are not responsible for enforcing compliance by third parties to\r
-this License.\r
-\r
-  7. If, as a consequence of a court judgment or allegation of patent\r
-infringement or for any other reason (not limited to patent issues),\r
-conditions are imposed on you (whether by court order, agreement or\r
-otherwise) that contradict the conditions of this License, they do not\r
-excuse you from the conditions of this License.  If you cannot\r
-distribute so as to satisfy simultaneously your obligations under this\r
-License and any other pertinent obligations, then as a consequence you\r
-may not distribute the Program at all.  For example, if a patent\r
-license would not permit royalty-free redistribution of the Program by\r
-all those who receive copies directly or indirectly through you, then\r
-the only way you could satisfy both it and this License would be to\r
-refrain entirely from distribution of the Program.\r
-\r
-If any portion of this section is held invalid or unenforceable under\r
-any particular circumstance, the balance of the section is intended to\r
-apply and the section as a whole is intended to apply in other\r
-circumstances.\r
-\r
-It is not the purpose of this section to induce you to infringe any\r
-patents or other property right claims or to contest validity of any\r
-such claims; this section has the sole purpose of protecting the\r
-integrity of the free software distribution system, which is\r
-implemented by public license practices.  Many people have made\r
-generous contributions to the wide range of software distributed\r
-through that system in reliance on consistent application of that\r
-system; it is up to the author/donor to decide if he or she is willing\r
-to distribute software through any other system and a licensee cannot\r
-impose that choice.\r
-\r
-This section is intended to make thoroughly clear what is believed to\r
-be a consequence of the rest of this License.\r
-\f\r
-  8. If the distribution and/or use of the Program is restricted in\r
-certain countries either by patents or by copyrighted interfaces, the\r
-original copyright holder who places the Program under this License\r
-may add an explicit geographical distribution limitation excluding\r
-those countries, so that distribution is permitted only in or among\r
-countries not thus excluded.  In such case, this License incorporates\r
-the limitation as if written in the body of this License.\r
-\r
-  9. The Free Software Foundation may publish revised and/or new versions\r
-of the General Public License from time to time.  Such new versions will\r
-be similar in spirit to the present version, but may differ in detail to\r
-address new problems or concerns.\r
-\r
-Each version is given a distinguishing version number.  If the Program\r
-specifies a version number of this License which applies to it and "any\r
-later version", you have the option of following the terms and conditions\r
-either of that version or of any later version published by the Free\r
-Software Foundation.  If the Program does not specify a version number of\r
-this License, you may choose any version ever published by the Free Software\r
-Foundation.\r
-\r
-  10. If you wish to incorporate parts of the Program into other free\r
-programs whose distribution conditions are different, write to the author\r
-to ask for permission.  For software which is copyrighted by the Free\r
-Software Foundation, write to the Free Software Foundation; we sometimes\r
-make exceptions for this.  Our decision will be guided by the two goals\r
-of preserving the free status of all derivatives of our free software and\r
-of promoting the sharing and reuse of software generally.\r
-\r
-                           NO WARRANTY\r
-\r
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\r
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN\r
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\r
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\r
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS\r
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE\r
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\r
-REPAIR OR CORRECTION.\r
-\r
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\r
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\r
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\r
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\r
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\r
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\r
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\r
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\r
-POSSIBILITY OF SUCH DAMAGES.\r
-\r
-                    END OF TERMS AND CONDITIONS\r
-\f\r
-           How to Apply These Terms to Your New Programs\r
-\r
-  If you develop a new program, and you want it to be of the greatest\r
-possible use to the public, the best way to achieve this is to make it\r
-free software which everyone can redistribute and change under these terms.\r
-\r
-  To do so, attach the following notices to the program.  It is safest\r
-to attach them to the start of each source file to most effectively\r
-convey the exclusion of warranty; and each file should have at least\r
-the "copyright" line and a pointer to where the full notice is found.\r
-\r
-    <one line to give the program's name and a brief idea of what it does.>\r
-    Copyright (C) <year>  <name of author>\r
-\r
-    This program is free software; you can redistribute it and/or modify\r
-    it under the terms of the GNU General Public License as published by\r
-    the Free Software Foundation; either version 2 of the License, or\r
-    (at your option) any later version.\r
-\r
-    This program is distributed in the hope that it will be useful,\r
-    but WITHOUT ANY WARRANTY; without even the implied warranty of\r
-    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
-    GNU General Public License for more details.\r
-\r
-    You should have received a copy of the GNU General Public License\r
-    along with this program; if not, write to the Free Software\r
-    Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA\r
-\r
-\r
-Also add information on how to contact you by electronic and paper mail.\r
-\r
-If the program is interactive, make it output a short notice like this\r
-when it starts in an interactive mode:\r
-\r
-    Gnomovision version 69, Copyright (C) year  name of author\r
-    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\r
-    This is free software, and you are welcome to redistribute it\r
-    under certain conditions; type `show c' for details.\r
-\r
-The hypothetical commands `show w' and `show c' should show the appropriate\r
-parts of the General Public License.  Of course, the commands you use may\r
-be called something other than `show w' and `show c'; they could even be\r
-mouse-clicks or menu items--whatever suits your program.\r
-\r
-You should also get your employer (if you work as a programmer) or your\r
-school, if any, to sign a "copyright disclaimer" for the program, if\r
-necessary.  Here is a sample; alter the names:\r
-\r
-  Yoyodyne, Inc., hereby disclaims all copyright interest in the program\r
-  `Gnomovision' (which makes passes at compilers) written by James Hacker.\r
-\r
-  <signature of Ty Coon>, 1 April 1989\r
-  Ty Coon, President of Vice\r
-\r
-This General Public License does not permit incorporating your program into\r
-proprietary programs.  If your program is a subroutine library, you may\r
-consider it more useful to permit linking proprietary applications with the\r
-library.  If this is what you want to do, use the GNU Library General\r
-Public License instead of this License.\r
+                    The FreeType Project LICENSE\r
+                    ----------------------------\r
+\r
+                            2006-Jan-27\r
+\r
+                    Copyright 1996-2002, 2006 by\r
+          David Turner, Robert Wilhelm, and Werner Lemberg\r
+\r
+\r
+\r
+Introduction\r
+============\r
+\r
+  The FreeType  Project is distributed in  several archive packages;\r
+  some of them may contain, in addition to the FreeType font engine,\r
+  various tools and  contributions which rely on, or  relate to, the\r
+  FreeType Project.\r
+\r
+  This  license applies  to all  files found  in such  packages, and\r
+  which do not  fall under their own explicit  license.  The license\r
+  affects  thus  the  FreeType   font  engine,  the  test  programs,\r
+  documentation and makefiles, at the very least.\r
+\r
+  This  license   was  inspired  by  the  BSD,   Artistic,  and  IJG\r
+  (Independent JPEG  Group) licenses, which  all encourage inclusion\r
+  and  use of  free  software in  commercial  and freeware  products\r
+  alike.  As a consequence, its main points are that:\r
+\r
+    o We don't promise that this software works. However, we will be\r
+      interested in any kind of bug reports. (`as is' distribution)\r
+\r
+    o You can  use this software for whatever you  want, in parts or\r
+      full form, without having to pay us. (`royalty-free' usage)\r
+\r
+    o You may not pretend that  you wrote this software.  If you use\r
+      it, or  only parts of it,  in a program,  you must acknowledge\r
+      somewhere  in  your  documentation  that  you  have  used  the\r
+      FreeType code. (`credits')\r
+\r
+  We  specifically  permit  and  encourage  the  inclusion  of  this\r
+  software, with  or without modifications,  in commercial products.\r
+  We  disclaim  all warranties  covering  The  FreeType Project  and\r
+  assume no liability related to The FreeType Project.\r
+\r
+\r
+  Finally,  many  people  asked  us  for  a  preferred  form  for  a\r
+  credit/disclaimer to use in compliance with this license.  We thus\r
+  encourage you to use the following text:\r
+\r
+   """\r
+    Portions of this software are copyright © <year> The FreeType\r
+    Project (www.freetype.org).  All rights reserved.\r
+   """\r
+\r
+  Please replace <year> with the value from the FreeType version you\r
+  actually use.\r
+\r
+\r
+Legal Terms\r
+===========\r
+\r
+0. Definitions\r
+--------------\r
+\r
+  Throughout this license,  the terms `package', `FreeType Project',\r
+  and  `FreeType  archive' refer  to  the  set  of files  originally\r
+  distributed  by the  authors  (David Turner,  Robert Wilhelm,  and\r
+  Werner Lemberg) as the `FreeType Project', be they named as alpha,\r
+  beta or final release.\r
+\r
+  `You' refers to  the licensee, or person using  the project, where\r
+  `using' is a generic term including compiling the project's source\r
+  code as  well as linking it  to form a  `program' or `executable'.\r
+  This  program is  referred to  as  `a program  using the  FreeType\r
+  engine'.\r
+\r
+  This  license applies  to all  files distributed  in  the original\r
+  FreeType  Project,   including  all  source   code,  binaries  and\r
+  documentation,  unless  otherwise  stated   in  the  file  in  its\r
+  original, unmodified form as  distributed in the original archive.\r
+  If you are  unsure whether or not a particular  file is covered by\r
+  this license, you must contact us to verify this.\r
+\r
+  The FreeType  Project is copyright (C) 1996-2000  by David Turner,\r
+  Robert Wilhelm, and Werner Lemberg.  All rights reserved except as\r
+  specified below.\r
+\r
+1. No Warranty\r
+--------------\r
+\r
+  THE FREETYPE PROJECT  IS PROVIDED `AS IS' WITHOUT  WARRANTY OF ANY\r
+  KIND, EITHER  EXPRESS OR IMPLIED,  INCLUDING, BUT NOT  LIMITED TO,\r
+  WARRANTIES  OF  MERCHANTABILITY   AND  FITNESS  FOR  A  PARTICULAR\r
+  PURPOSE.  IN NO EVENT WILL ANY OF THE AUTHORS OR COPYRIGHT HOLDERS\r
+  BE LIABLE  FOR ANY DAMAGES CAUSED  BY THE USE OR  THE INABILITY TO\r
+  USE, OF THE FREETYPE PROJECT.\r
+\r
+2. Redistribution\r
+-----------------\r
+\r
+  This  license  grants  a  worldwide, royalty-free,  perpetual  and\r
+  irrevocable right  and license to use,  execute, perform, compile,\r
+  display,  copy,   create  derivative  works   of,  distribute  and\r
+  sublicense the  FreeType Project (in  both source and  object code\r
+  forms)  and  derivative works  thereof  for  any  purpose; and  to\r
+  authorize others  to exercise  some or all  of the  rights granted\r
+  herein, subject to the following conditions:\r
+\r
+    o Redistribution of  source code  must retain this  license file\r
+      (`FTL.TXT') unaltered; any  additions, deletions or changes to\r
+      the original  files must be clearly  indicated in accompanying\r
+      documentation.   The  copyright   notices  of  the  unaltered,\r
+      original  files must  be  preserved in  all  copies of  source\r
+      files.\r
+\r
+    o Redistribution in binary form must provide a  disclaimer  that\r
+      states  that  the software is based in part of the work of the\r
+      FreeType Team,  in  the  distribution  documentation.  We also\r
+      encourage you to put an URL to the FreeType web page  in  your\r
+      documentation, though this isn't mandatory.\r
+\r
+  These conditions  apply to any  software derived from or  based on\r
+  the FreeType Project,  not just the unmodified files.   If you use\r
+  our work, you  must acknowledge us.  However, no  fee need be paid\r
+  to us.\r
+\r
+3. Advertising\r
+--------------\r
+\r
+  Neither the  FreeType authors and  contributors nor you  shall use\r
+  the name of the  other for commercial, advertising, or promotional\r
+  purposes without specific prior written permission.\r
+\r
+  We suggest,  but do not require, that  you use one or  more of the\r
+  following phrases to refer  to this software in your documentation\r
+  or advertising  materials: `FreeType Project',  `FreeType Engine',\r
+  `FreeType library', or `FreeType Distribution'.\r
+\r
+  As  you have  not signed  this license,  you are  not  required to\r
+  accept  it.   However,  as  the FreeType  Project  is  copyrighted\r
+  material, only  this license, or  another one contracted  with the\r
+  authors, grants you  the right to use, distribute,  and modify it.\r
+  Therefore,  by  using,  distributing,  or modifying  the  FreeType\r
+  Project, you indicate that you understand and accept all the terms\r
+  of this license.\r
+\r
+4. Contacts\r
+-----------\r
+\r
+  There are two mailing lists related to FreeType:\r
+\r
+    o freetype@nongnu.org\r
+\r
+      Discusses general use and applications of FreeType, as well as\r
+      future and  wanted additions to the  library and distribution.\r
+      If  you are looking  for support,  start in  this list  if you\r
+      haven't found anything to help you in the documentation.\r
+\r
+    o freetype-devel@nongnu.org\r
+\r
+      Discusses bugs,  as well  as engine internals,  design issues,\r
+      specific licenses, porting, etc.\r
+\r
+  Our home page can be found at\r
+\r
+    http://www.freetype.org\r
+\r
+\r
+--- end of FTL.TXT ---\r
index 0f3bd3d29ff35ab45c59cbeb601957e61fed0ce7..584a1d48494b8d06b469f37fc0993345575c9dff 100644 (file)
@@ -337,4 +337,4 @@ This General Public License does not permit incorporating your program into
 proprietary programs.  If your program is a subroutine library, you may\r
 consider it more useful to permit linking proprietary applications with the\r
 library.  If this is what you want to do, use the GNU Library General\r
-Public License instead of this License.
\ No newline at end of file
+Public License instead of this License.\r
diff --git a/dependencies/ffmpeg/licenses/gnutls.txt b/dependencies/ffmpeg/licenses/gnutls.txt
new file mode 100644 (file)
index 0000000..94a9ed0
--- /dev/null
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
index b240210341f0148e4d8d7a7d681e7e3bd1f70705..49de7232dcad25396a62be1e8e104f3c830e058e 100644 (file)
@@ -478,4 +478,4 @@ necessary.  Here is a sample; alter the names:
   <signature of Ty Coon>, 1 April 1990\r
   Ty Coon, President of Vice\r
 \r
-That's all there is to it!
\ No newline at end of file
+That's all there is to it!\r
diff --git a/dependencies/ffmpeg/licenses/libass.txt b/dependencies/ffmpeg/licenses/libass.txt
new file mode 100644 (file)
index 0000000..8351a30
--- /dev/null
@@ -0,0 +1,11 @@
+Permission to use, copy, modify, and/or distribute this software for any
+purpose with or without fee is hereby granted, provided that the above
+copyright notice and this permission notice appear in all copies.
+
+THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
+WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
+ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
+WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
+ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
+OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
diff --git a/dependencies/ffmpeg/licenses/libbluray.txt b/dependencies/ffmpeg/licenses/libbluray.txt
new file mode 100644 (file)
index 0000000..20fb9c7
--- /dev/null
@@ -0,0 +1,458 @@
+                  GNU LESSER GENERAL PUBLIC LICENSE
+                       Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+ 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                            Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+
+                  GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                            NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                     END OF TERMS AND CONDITIONS
diff --git a/dependencies/ffmpeg/licenses/libcaca.txt b/dependencies/ffmpeg/licenses/libcaca.txt
new file mode 100644 (file)
index 0000000..2978491
--- /dev/null
@@ -0,0 +1,14 @@
+            DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+                    Version 2, December 2004
+
+ Copyright (C) 2004 Sam Hocevar
+  14 rue de Plaisance, 75014 Paris, France
+ Everyone is permitted to copy and distribute verbatim or modified
+ copies of this license document, and changing it is allowed as long
+ as the name is changed.
+
+            DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. You just DO WHAT THE FUCK YOU WANT TO.
+
diff --git a/dependencies/ffmpeg/licenses/libgsm.txt b/dependencies/ffmpeg/licenses/libgsm.txt
new file mode 100644 (file)
index 0000000..28fbb3c
--- /dev/null
@@ -0,0 +1,35 @@
+Copyright 1992, 1993, 1994 by Jutta Degener and Carsten Bormann,
+Technische Universitaet Berlin
+
+Any use of this software is permitted provided that this notice is not
+removed and that neither the authors nor the Technische Universitaet Berlin
+are deemed to have made any representations as to the suitability of this
+software for any purpose nor are held responsible for any defects of
+this software.  THERE IS ABSOLUTELY NO WARRANTY FOR THIS SOFTWARE.
+
+As a matter of courtesy, the authors request to be informed about uses
+this software has found, about bugs in this software, and about any
+improvements that may be of general interest.
+
+Berlin, 28.11.1994
+Jutta Degener
+Carsten Bormann
+
+                                 oOo
+
+Since the original terms of 15 years ago maybe do not make our
+intentions completely clear given today's refined usage of the legal
+terms, we append this additional permission:
+
+      Permission to use, copy, modify, and distribute this software
+      for any purpose with or without fee is hereby granted,
+      provided that this notice is not removed and that neither
+      the authors nor the Technische Universitaet Berlin are
+      deemed to have made any representations as to the suitability
+      of this software for any purpose nor are held responsible
+      for any defects of this software.  THERE IS ABSOLUTELY NO
+      WARRANTY FOR THIS SOFTWARE.
+
+Berkeley/Bremen, 05.04.2009
+Jutta Degener
+Carsten Bormann
diff --git a/dependencies/ffmpeg/licenses/libiconv.txt b/dependencies/ffmpeg/licenses/libiconv.txt
new file mode 100644 (file)
index 0000000..94a9ed0
--- /dev/null
@@ -0,0 +1,674 @@
+                    GNU GENERAL PUBLIC LICENSE
+                       Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                            Preamble
+
+  The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+  The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works.  By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users.  We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors.  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+them if you wish), that you receive source code or can get it if you
+want it, that you can change the software or use pieces of it in new
+free programs, and that you know you can do these things.
+
+  To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights.  Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received.  You must make sure that they, too, receive
+or can get the source code.  And you must show them these terms so they
+know their rights.
+
+  Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+  For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software.  For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+  Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so.  This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software.  The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable.  Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products.  If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+  Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary.  To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                       TERMS AND CONDITIONS
+
+  0. Definitions.
+
+  "This License" refers to version 3 of the GNU General Public License.
+
+  "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+  "The Program" refers to any copyrightable work licensed under this
+License.  Each licensee is addressed as "you".  "Licensees" and
+"recipients" may be individuals or organizations.
+
+  To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy.  The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+  A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+  To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy.  Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+  To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies.  Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+  An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License.  If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+  1. Source Code.
+
+  The "source code" for a work means the preferred form of the work
+for making modifications to it.  "Object code" means any non-source
+form of a work.
+
+  A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+  The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form.  A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+  The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities.  However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work.  For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+  The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+  The Corresponding Source for a work in source code form is that
+same work.
+
+  2. Basic Permissions.
+
+  All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met.  This License explicitly affirms your unlimited
+permission to run the unmodified Program.  The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work.  This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+  You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force.  You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright.  Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+  Conveying under any other circumstances is permitted solely under
+the conditions stated below.  Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+  No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+  When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+  4. Conveying Verbatim Copies.
+
+  You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+  You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+  5. Conveying Modified Source Versions.
+
+  You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+    a) The work must carry prominent notices stating that you modified
+    it, and giving a relevant date.
+
+    b) The work must carry prominent notices stating that it is
+    released under this License and any conditions added under section
+    7.  This requirement modifies the requirement in section 4 to
+    "keep intact all notices".
+
+    c) You must license the entire work, as a whole, under this
+    License to anyone who comes into possession of a copy.  This
+    License will therefore apply, along with any applicable section 7
+    additional terms, to the whole of the work, and all its parts,
+    regardless of how they are packaged.  This License gives no
+    permission to license the work in any other way, but it does not
+    invalidate such permission if you have separately received it.
+
+    d) If the work has interactive user interfaces, each must display
+    Appropriate Legal Notices; however, if the Program has interactive
+    interfaces that do not display Appropriate Legal Notices, your
+    work need not make them do so.
+
+  A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit.  Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+  6. Conveying Non-Source Forms.
+
+  You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+    a) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by the
+    Corresponding Source fixed on a durable physical medium
+    customarily used for software interchange.
+
+    b) Convey the object code in, or embodied in, a physical product
+    (including a physical distribution medium), accompanied by a
+    written offer, valid for at least three years and valid for as
+    long as you offer spare parts or customer support for that product
+    model, to give anyone who possesses the object code either (1) a
+    copy of the Corresponding Source for all the software in the
+    product that is covered by this License, on a durable physical
+    medium customarily used for software interchange, for a price no
+    more than your reasonable cost of physically performing this
+    conveying of source, or (2) access to copy the
+    Corresponding Source from a network server at no charge.
+
+    c) Convey individual copies of the object code with a copy of the
+    written offer to provide the Corresponding Source.  This
+    alternative is allowed only occasionally and noncommercially, and
+    only if you received the object code with such an offer, in accord
+    with subsection 6b.
+
+    d) Convey the object code by offering access from a designated
+    place (gratis or for a charge), and offer equivalent access to the
+    Corresponding Source in the same way through the same place at no
+    further charge.  You need not require recipients to copy the
+    Corresponding Source along with the object code.  If the place to
+    copy the object code is a network server, the Corresponding Source
+    may be on a different server (operated by you or a third party)
+    that supports equivalent copying facilities, provided you maintain
+    clear directions next to the object code saying where to find the
+    Corresponding Source.  Regardless of what server hosts the
+    Corresponding Source, you remain obligated to ensure that it is
+    available for as long as needed to satisfy these requirements.
+
+    e) Convey the object code using peer-to-peer transmission, provided
+    you inform other peers where the object code and Corresponding
+    Source of the work are being offered to the general public at no
+    charge under subsection 6d.
+
+  A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+  A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling.  In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage.  For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product.  A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+  "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source.  The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+  If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information.  But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+  The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed.  Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+  Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+  7. Additional Terms.
+
+  "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law.  If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+  When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it.  (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.)  You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+  Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+    a) Disclaiming warranty or limiting liability differently from the
+    terms of sections 15 and 16 of this License; or
+
+    b) Requiring preservation of specified reasonable legal notices or
+    author attributions in that material or in the Appropriate Legal
+    Notices displayed by works containing it; or
+
+    c) Prohibiting misrepresentation of the origin of that material, or
+    requiring that modified versions of such material be marked in
+    reasonable ways as different from the original version; or
+
+    d) Limiting the use for publicity purposes of names of licensors or
+    authors of the material; or
+
+    e) Declining to grant rights under trademark law for use of some
+    trade names, trademarks, or service marks; or
+
+    f) Requiring indemnification of licensors and authors of that
+    material by anyone who conveys the material (or modified versions of
+    it) with contractual assumptions of liability to the recipient, for
+    any liability that these contractual assumptions directly impose on
+    those licensors and authors.
+
+  All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10.  If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term.  If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+  If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+  Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+  8. Termination.
+
+  You may not propagate or modify a covered work except as expressly
+provided under this License.  Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+  However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+  Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+  Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License.  If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+  9. Acceptance Not Required for Having Copies.
+
+  You are not required to accept this License in order to receive or
+run a copy of the Program.  Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance.  However,
+nothing other than this License grants you permission to propagate or
+modify any covered work.  These actions infringe copyright if you do
+not accept this License.  Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+  10. Automatic Licensing of Downstream Recipients.
+
+  Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License.  You are not responsible
+for enforcing compliance by third parties with this License.
+
+  An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations.  If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+  You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License.  For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+  11. Patents.
+
+  A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based.  The
+work thus licensed is called the contributor's "contributor version".
+
+  A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version.  For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+  Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+  In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement).  To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+  If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients.  "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+  If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+  A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License.  You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+  Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+  12. No Surrender of Others' Freedom.
+
+  If conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all.  For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+  13. Use with the GNU Affero General Public License.
+
+  Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work.  The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+  14. Revised Versions of this License.
+
+  The Free Software Foundation may publish revised and/or new versions of
+the GNU General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+  Each version is given a distinguishing version number.  If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation.  If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+  If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+  Later license versions may give you additional or different
+permissions.  However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+  15. Disclaimer of Warranty.
+
+  THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
+APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
+OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
+THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
+IS WITH YOU.  SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
+ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. Limitation of Liability.
+
+  IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
+GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
+USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
+DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
+PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
+EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
+SUCH DAMAGES.
+
+  17. Interpretation of Sections 15 and 16.
+
+  If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+                     END OF TERMS AND CONDITIONS
+
+            How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software: you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+  If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+    <program>  Copyright (C) <year>  <name of author>
+    This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+  You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+  The GNU General Public License does not permit incorporating your program
+into proprietary programs.  If your program is a subroutine library, you
+may consider it more useful to permit linking proprietary applications with
+the library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.  But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/dependencies/ffmpeg/licenses/libilbc.txt b/dependencies/ffmpeg/licenses/libilbc.txt
new file mode 100644 (file)
index 0000000..4c41b7b
--- /dev/null
@@ -0,0 +1,29 @@
+Copyright (c) 2011, The WebRTC project authors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+  * Redistributions of source code must retain the above copyright
+    notice, this list of conditions and the following disclaimer.
+
+  * Redistributions in binary form must reproduce the above copyright
+    notice, this list of conditions and the following disclaimer in
+    the documentation and/or other materials provided with the
+    distribution.
+
+  * Neither the name of Google nor the names of its contributors may
+    be used to endorse or promote products derived from this software
+    without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/dependencies/ffmpeg/licenses/libmodplug.txt b/dependencies/ffmpeg/licenses/libmodplug.txt
new file mode 100644 (file)
index 0000000..59fbf82
--- /dev/null
@@ -0,0 +1 @@
+ModPlug-XMMS and libmodplug are now in the public domain.
diff --git a/dependencies/ffmpeg/licenses/libtheora.txt b/dependencies/ffmpeg/licenses/libtheora.txt
new file mode 100644 (file)
index 0000000..c8ccce4
--- /dev/null
@@ -0,0 +1,28 @@
+Copyright (C) 2002-2009 Xiph.org Foundation
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+- Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+- Neither the name of the Xiph.org Foundation nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
diff --git a/dependencies/ffmpeg/licenses/libvorbis.txt b/dependencies/ffmpeg/licenses/libvorbis.txt
new file mode 100644 (file)
index 0000000..28de72a
--- /dev/null
@@ -0,0 +1,28 @@
+Copyright (c) 2002-2008 Xiph.org Foundation
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+- Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+- Neither the name of the Xiph.org Foundation nor the names of its
+contributors may be used to endorse or promote products derived from
+this software without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL THE FOUNDATION
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
index 872c1f141b301ff688df5680e189fa932e214515..06427ff263c939a7303d31e49b0adf56dc3ce221 100644 (file)
@@ -1,4 +1,4 @@
-Copyright (c) 2010, Google Inc. All rights reserved.\r
+Copyright (c) 2010, The WebM Project authors. All rights reserved.\r
 \r
 Redistribution and use in source and binary forms, with or without\r
 modification, are permitted provided that the following conditions are\r
@@ -12,9 +12,10 @@ met:
     the documentation and/or other materials provided with the\r
     distribution.\r
 \r
-  * Neither the name of Google nor the names of its contributors may\r
-    be used to endorse or promote products derived from this software\r
-    without specific prior written permission.\r
+  * Neither the name of Google, nor the WebM Project, nor the names\r
+    of its contributors may be used to endorse or promote products\r
+    derived from this software without specific prior written\r
+    permission.\r
 \r
 THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS\r
 "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT\r
@@ -27,3 +28,4 @@ DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT\r
 (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE\r
 OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
+\r
index 6c40ca52e01cfc6634a7ab060c9d81aadd647076..6f339353e5c960a6471c6bbb98bfa7158a596ecf 100644 (file)
@@ -188,4 +188,4 @@ identification within third-party archives.
  law or agreed to in writing, software distributed under the License is\r
  distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r
  KIND, either express or implied. See the License for the specific language\r
- governing permissions and limitations under the License.
\ No newline at end of file
+ governing permissions and limitations under the License.\r
index 0ad448854ee957abca4284d980931730314e1bff..50406922a11d5e33fe8e9dd04fd737a0c6ab81ee 100644 (file)
@@ -1,10 +1,14 @@
 /*\r
- * Copyright (c) 2002-2007, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium\r
- * Copyright (c) 2002-2007, Professor Benoit Macq\r
- * Copyright (c) 2001-2003, David Janssens\r
- * Copyright (c) 2002-2003, Yannick Verschueren\r
- * Copyright (c) 2003-2007, Francois-Olivier Devaux and Antonin Descampe\r
+ * Copyright (c) 2002-2012, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium\r
+ * Copyright (c) 2002-2012, Professor Benoit Macq\r
+ * Copyright (c) 2003-2012, Antonin Descampe\r
+ * Copyright (c) 2003-2009, Francois-Olivier Devaux\r
  * Copyright (c) 2005, Herve Drolon, FreeImage Team\r
+ * Copyright (c) 2002-2003, Yannick Verschueren\r
+ * Copyright (c) 2001-2003, David Janssens\r
+ * Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), France \r
+ * Copyright (c) 2012, CS Systemes d'Information, France\r
+ *\r
  * All rights reserved.\r
  *\r
  * Redistribution and use in source and binary forms, with or without\r
@@ -27,4 +31,4 @@
  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)\r
  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE\r
  * POSSIBILITY OF SUCH DAMAGE.\r
- */
\ No newline at end of file
+ */\r
diff --git a/dependencies/ffmpeg/licenses/opus.txt b/dependencies/ffmpeg/licenses/opus.txt
new file mode 100644 (file)
index 0000000..f4159e6
--- /dev/null
@@ -0,0 +1,44 @@
+Copyright 2001-2011 Xiph.Org, Skype Limited, Octasic,
+                    Jean-Marc Valin, Timothy B. Terriberry,
+                    CSIRO, Gregory Maxwell, Mark Borgerding,
+                    Erik de Castro Lopo
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+- Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+- Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+- Neither the name of Internet Society, IETF or IETF Trust, nor the 
+names of specific contributors, may be used to endorse or promote
+products derived from this software without specific prior written
+permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER
+OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
+EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
+PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+Opus is subject to the royalty-free patent licenses which are
+specified at:
+
+Xiph.Org Foundation:
+https://datatracker.ietf.org/ipr/1524/
+
+Microsoft Corporation:
+https://datatracker.ietf.org/ipr/1914/
+
+Broadcom Corporation:
+https://datatracker.ietf.org/ipr/1526/
diff --git a/dependencies/ffmpeg/licenses/rtmpdump.txt b/dependencies/ffmpeg/licenses/rtmpdump.txt
new file mode 100644 (file)
index 0000000..d511905
--- /dev/null
@@ -0,0 +1,339 @@
+                   GNU GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users.  This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it.  (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.)  You can apply it to
+your programs, too.
+
+  When we speak of free software, we are referring to freedom, not
+price.  Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+  To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+  For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have.  You must make sure that they, too, receive or can get the
+source code.  And you must show them these terms so they know their
+rights.
+
+  We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+  Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software.  If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary.  To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.
+
+                   GNU GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License.  The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language.  (Hereinafter, translation is included without limitation in
+the term "modification".)  Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+  1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+  2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) You must cause the modified files to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    b) You must cause any work that you distribute or publish, that in
+    whole or in part contains or is derived from the Program or any
+    part thereof, to be licensed as a whole at no charge to all third
+    parties under the terms of this License.
+
+    c) If the modified program normally reads commands interactively
+    when run, you must cause it, when started running for such
+    interactive use in the most ordinary way, to print or display an
+    announcement including an appropriate copyright notice and a
+    notice that there is no warranty (or else, saying that you provide
+    a warranty) and that users may redistribute the program under
+    these conditions, and telling the user how to view a copy of this
+    License.  (Exception: if the Program itself is interactive but
+    does not normally print such an announcement, your work based on
+    the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+    a) Accompany it with the complete corresponding machine-readable
+    source code, which must be distributed under the terms of Sections
+    1 and 2 above on a medium customarily used for software interchange; or,
+
+    b) Accompany it with a written offer, valid for at least three
+    years, to give any third party, for a charge no more than your
+    cost of physically performing source distribution, a complete
+    machine-readable copy of the corresponding source code, to be
+    distributed under the terms of Sections 1 and 2 above on a medium
+    customarily used for software interchange; or,
+
+    c) Accompany it with the information you received as to the offer
+    to distribute corresponding source code.  (This alternative is
+    allowed only for noncommercial distribution and only if you
+    received the program in object code or executable form with such
+    an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it.  For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable.  However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License.  Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+  5. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Program or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+  6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+  7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded.  In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+  9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time.  Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation.  If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+  10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission.  For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this.  Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+                           NO WARRANTY
+
+  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
+
+           How to Apply These Terms to Your New Programs
+
+  If you develop a new program, and you want it to be of the greatest
+possible use to the public, the best way to achieve this is to make it
+free software which everyone can redistribute and change under these terms.
+
+  To do so, attach the following notices to the program.  It is safest
+to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the program's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This program is free software; you can redistribute it and/or modify
+    it under the terms of the GNU General Public License as published by
+    the Free Software Foundation; either version 2 of the License, or
+    (at your option) any later version.
+
+    This program is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+    GNU General Public License for more details.
+
+    You should have received a copy of the GNU General Public License along
+    with this program; if not, write to the Free Software Foundation, Inc.,
+    51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
+
+Also add information on how to contact you by electronic and paper mail.
+
+If the program is interactive, make it output a short notice like this
+when it starts in an interactive mode:
+
+    Gnomovision version 69, Copyright (C) year name of author
+    Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+    This is free software, and you are welcome to redistribute it
+    under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License.  Of course, the commands you use may
+be called something other than `show w' and `show c'; they could even be
+mouse-clicks or menu items--whatever suits your program.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the program, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the program
+  `Gnomovision' (which makes passes at compilers) written by James Hacker.
+
+  <signature of Ty Coon>, 1 April 1989
+  Ty Coon, President of Vice
+
+This General Public License does not permit incorporating your program into
+proprietary programs.  If your program is a subroutine library, you may
+consider it more useful to permit linking proprietary applications with the
+library.  If this is what you want to do, use the GNU Lesser General
+Public License instead of this License.
index 2b79e5a85b59c0da06afea8416c486ab956ee8e9..9a412493ddf398b13b403f237bf0a4b3e54994ff 100644 (file)
@@ -1,22 +1,25 @@
-                   GNU GENERAL PUBLIC LICENSE\r
+                 GNU LIBRARY GENERAL PUBLIC LICENSE\r
                       Version 2, June 1991\r
 \r
- Copyright (C) 1989, 1991 Free Software Foundation, Inc.\r
-     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA\r
+ Copyright (C) 1991 Free Software Foundation, Inc.\r
+                    675 Mass Ave, Cambridge, MA 02139, USA\r
  Everyone is permitted to copy and distribute verbatim copies\r
  of this license document, but changing it is not allowed.\r
 \r
+[This is the first released version of the library GPL.  It is\r
+ numbered 2 because it goes with version 2 of the ordinary GPL.]\r
+\r
                            Preamble\r
 \r
   The licenses for most software are designed to take away your\r
 freedom to share and change it.  By contrast, the GNU General Public\r
-License is intended to guarantee your freedom to share and change free\r
-software--to make sure the software is free for all its users.  This\r
-General Public License applies to most of the Free Software\r
-Foundation's software and to any other program whose authors commit to\r
-using it.  (Some other Free Software Foundation software is covered by\r
-the GNU Library General Public License instead.)  You can apply it to\r
-your programs, too.\r
+Licenses are intended to guarantee your freedom to share and change\r
+free software--to make sure the software is free for all its users.\r
+\r
+  This license, the Library General Public License, applies to some\r
+specially designated Free Software Foundation software, and to any\r
+other libraries whose authors decide to use it.  You can use it for\r
+your libraries, too.\r
 \r
   When we speak of free software, we are referring to freedom, not\r
 price.  Our General Public Licenses are designed to make sure that you\r
@@ -27,195 +30,347 @@ in new free programs; and that you know you can do these things.
 \r
   To protect your rights, we need to make restrictions that forbid\r
 anyone to deny you these rights or to ask you to surrender the rights.\r
-These restrictions translate to certain responsibilities for you if you\r
-distribute copies of the software, or if you modify it.\r
-\r
-  For example, if you distribute copies of such a program, whether\r
-gratis or for a fee, you must give the recipients all the rights that\r
-you have.  You must make sure that they, too, receive or can get the\r
-source code.  And you must show them these terms so they know their\r
-rights.\r
-\r
-  We protect your rights with two steps: (1) copyright the software, and\r
-(2) offer you this license which gives you legal permission to copy,\r
-distribute and/or modify the software.\r
-\r
-  Also, for each author's protection and ours, we want to make certain\r
+These restrictions translate to certain responsibilities for you if\r
+you distribute copies of the library, or if you modify it.\r
+\r
+  For example, if you distribute copies of the library, whether gratis\r
+or for a fee, you must give the recipients all the rights that we gave\r
+you.  You must make sure that they, too, receive or can get the source\r
+code.  If you link a program with the library, you must provide\r
+complete object files to the recipients so that they can relink them\r
+with the library, after making changes to the library and recompiling\r
+it.  And you must show them these terms so they know their rights.\r
+\r
+  Our method of protecting your rights has two steps: (1) copyright\r
+the library, and (2) offer you this license which gives you legal\r
+permission to copy, distribute and/or modify the library.\r
+\r
+  Also, for each distributor's protection, we want to make certain\r
 that everyone understands that there is no warranty for this free\r
-software.  If the software is modified by someone else and passed on, we\r
-want its recipients to know that what they have is not the original, so\r
-that any problems introduced by others will not reflect on the original\r
-authors' reputations.\r
-\r
+library.  If the library is modified by someone else and passed on, we\r
+want its recipients to know that what they have is not the original\r
+version, so that any problems introduced by others will not reflect on\r
+the original authors' reputations.\r
+\f\r
   Finally, any free program is threatened constantly by software\r
-patents.  We wish to avoid the danger that redistributors of a free\r
-program will individually obtain patent licenses, in effect making the\r
-program proprietary.  To prevent this, we have made it clear that any\r
-patent must be licensed for everyone's free use or not licensed at all.\r
+patents.  We wish to avoid the danger that companies distributing free\r
+software will individually obtain patent licenses, thus in effect\r
+transforming the program into proprietary software.  To prevent this,\r
+we have made it clear that any patent must be licensed for everyone's\r
+free use or not licensed at all.\r
+\r
+  Most GNU software, including some libraries, is covered by the ordinary\r
+GNU General Public License, which was designed for utility programs.  This\r
+license, the GNU Library General Public License, applies to certain\r
+designated libraries.  This license is quite different from the ordinary\r
+one; be sure to read it in full, and don't assume that anything in it is\r
+the same as in the ordinary license.\r
+\r
+  The reason we have a separate public license for some libraries is that\r
+they blur the distinction we usually make between modifying or adding to a\r
+program and simply using it.  Linking a program with a library, without\r
+changing the library, is in some sense simply using the library, and is\r
+analogous to running a utility program or application program.  However, in\r
+a textual and legal sense, the linked executable is a combined work, a\r
+derivative of the original library, and the ordinary General Public License\r
+treats it as such.\r
+\r
+  Because of this blurred distinction, using the ordinary General\r
+Public License for libraries did not effectively promote software\r
+sharing, because most developers did not use the libraries.  We\r
+concluded that weaker conditions might promote sharing better.\r
+\r
+  However, unrestricted linking of non-free programs would deprive the\r
+users of those programs of all benefit from the free status of the\r
+libraries themselves.  This Library General Public License is intended to\r
+permit developers of non-free programs to use free libraries, while\r
+preserving your freedom as a user of such programs to change the free\r
+libraries that are incorporated in them.  (We have not seen how to achieve\r
+this as regards changes in header files, but we have achieved it as regards\r
+changes in the actual functions of the Library.)  The hope is that this\r
+will lead to faster development of free libraries.\r
 \r
   The precise terms and conditions for copying, distribution and\r
-modification follow.\r
+modification follow.  Pay close attention to the difference between a\r
+"work based on the library" and a "work that uses the library".  The\r
+former contains code derived from the library, while the latter only\r
+works together with the library.\r
+\r
+  Note that it is possible for a library to be covered by the ordinary\r
+General Public License rather than by this special one.\r
 \f\r
-                   GNU GENERAL PUBLIC LICENSE\r
+                 GNU LIBRARY GENERAL PUBLIC LICENSE\r
    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\r
 \r
-  0. This License applies to any program or other work which contains\r
-a notice placed by the copyright holder saying it may be distributed\r
-under the terms of this General Public License.  The "Program", below,\r
-refers to any such program or work, and a "work based on the Program"\r
-means either the Program or any derivative work under copyright law:\r
-that is to say, a work containing the Program or a portion of it,\r
-either verbatim or with modifications and/or translated into another\r
-language.  (Hereinafter, translation is included without limitation in\r
-the term "modification".)  Each licensee is addressed as "you".\r
-\r
-Activities other than copying, distribution and modification are not\r
+  0. This License Agreement applies to any software library which\r
+contains a notice placed by the copyright holder or other authorized\r
+party saying it may be distributed under the terms of this Library\r
+General Public License (also called "this License").  Each licensee is\r
+addressed as "you".\r
+\r
+  A "library" means a collection of software functions and/or data\r
+prepared so as to be conveniently linked with application programs\r
+(which use some of those functions and data) to form executables.\r
+\r
+  The "Library", below, refers to any such software library or work\r
+which has been distributed under these terms.  A "work based on the\r
+Library" means either the Library or any derivative work under\r
+copyright law: that is to say, a work containing the Library or a\r
+portion of it, either verbatim or with modifications and/or translated\r
+straightforwardly into another language.  (Hereinafter, translation is\r
+included without limitation in the term "modification".)\r
+\r
+  "Source code" for a work means the preferred form of the work for\r
+making modifications to it.  For a library, complete source code means\r
+all the source code for all modules it contains, plus any associated\r
+interface definition files, plus the scripts used to control compilation\r
+and installation of the library.\r
+\r
+  Activities other than copying, distribution and modification are not\r
 covered by this License; they are outside its scope.  The act of\r
-running the Program is not restricted, and the output from the Program\r
-is covered only if its contents constitute a work based on the\r
-Program (independent of having been made by running the Program).\r
-Whether that is true depends on what the Program does.\r
-\r
-  1. You may copy and distribute verbatim copies of the Program's\r
-source code as you receive it, in any medium, provided that you\r
-conspicuously and appropriately publish on each copy an appropriate\r
-copyright notice and disclaimer of warranty; keep intact all the\r
-notices that refer to this License and to the absence of any warranty;\r
-and give any other recipients of the Program a copy of this License\r
-along with the Program.\r
-\r
-You may charge a fee for the physical act of transferring a copy, and\r
-you may at your option offer warranty protection in exchange for a fee.\r
-\r
-  2. You may modify your copy or copies of the Program or any portion\r
-of it, thus forming a work based on the Program, and copy and\r
+running a program using the Library is not restricted, and output from\r
+such a program is covered only if its contents constitute a work based\r
+on the Library (independent of the use of the Library in a tool for\r
+writing it).  Whether that is true depends on what the Library does\r
+and what the program that uses the Library does.\r
+  \r
+  1. You may copy and distribute verbatim copies of the Library's\r
+complete source code as you receive it, in any medium, provided that\r
+you conspicuously and appropriately publish on each copy an\r
+appropriate copyright notice and disclaimer of warranty; keep intact\r
+all the notices that refer to this License and to the absence of any\r
+warranty; and distribute a copy of this License along with the\r
+Library.\r
+\r
+  You may charge a fee for the physical act of transferring a copy,\r
+and you may at your option offer warranty protection in exchange for a\r
+fee.\r
+\f\r
+  2. You may modify your copy or copies of the Library or any portion\r
+of it, thus forming a work based on the Library, and copy and\r
 distribute such modifications or work under the terms of Section 1\r
 above, provided that you also meet all of these conditions:\r
 \r
-    a) You must cause the modified files to carry prominent notices\r
+    a) The modified work must itself be a software library.\r
+\r
+    b) You must cause the files modified to carry prominent notices\r
     stating that you changed the files and the date of any change.\r
 \r
-    b) You must cause any work that you distribute or publish, that in\r
-    whole or in part contains or is derived from the Program or any\r
-    part thereof, to be licensed as a whole at no charge to all third\r
-    parties under the terms of this License.\r
-\r
-    c) If the modified program normally reads commands interactively\r
-    when run, you must cause it, when started running for such\r
-    interactive use in the most ordinary way, to print or display an\r
-    announcement including an appropriate copyright notice and a\r
-    notice that there is no warranty (or else, saying that you provide\r
-    a warranty) and that users may redistribute the program under\r
-    these conditions, and telling the user how to view a copy of this\r
-    License.  (Exception: if the Program itself is interactive but\r
-    does not normally print such an announcement, your work based on\r
-    the Program is not required to print an announcement.)\r
-\f\r
+    c) You must cause the whole of the work to be licensed at no\r
+    charge to all third parties under the terms of this License.\r
+\r
+    d) If a facility in the modified Library refers to a function or a\r
+    table of data to be supplied by an application program that uses\r
+    the facility, other than as an argument passed when the facility\r
+    is invoked, then you must make a good faith effort to ensure that,\r
+    in the event an application does not supply such function or\r
+    table, the facility still operates, and performs whatever part of\r
+    its purpose remains meaningful.\r
+\r
+    (For example, a function in a library to compute square roots has\r
+    a purpose that is entirely well-defined independent of the\r
+    application.  Therefore, Subsection 2d requires that any\r
+    application-supplied function or table used by this function must\r
+    be optional: if the application does not supply it, the square\r
+    root function must still compute square roots.)\r
+\r
 These requirements apply to the modified work as a whole.  If\r
-identifiable sections of that work are not derived from the Program,\r
+identifiable sections of that work are not derived from the Library,\r
 and can be reasonably considered independent and separate works in\r
 themselves, then this License, and its terms, do not apply to those\r
 sections when you distribute them as separate works.  But when you\r
 distribute the same sections as part of a whole which is a work based\r
-on the Program, the distribution of the whole must be on the terms of\r
+on the Library, the distribution of the whole must be on the terms of\r
 this License, whose permissions for other licensees extend to the\r
-entire whole, and thus to each and every part regardless of who wrote it.\r
+entire whole, and thus to each and every part regardless of who wrote\r
+it.\r
 \r
 Thus, it is not the intent of this section to claim rights or contest\r
 your rights to work written entirely by you; rather, the intent is to\r
 exercise the right to control the distribution of derivative or\r
-collective works based on the Program.\r
+collective works based on the Library.\r
 \r
-In addition, mere aggregation of another work not based on the Program\r
-with the Program (or with a work based on the Program) on a volume of\r
+In addition, mere aggregation of another work not based on the Library\r
+with the Library (or with a work based on the Library) on a volume of\r
 a storage or distribution medium does not bring the other work under\r
 the scope of this License.\r
 \r
-  3. You may copy and distribute the Program (or a work based on it,\r
-under Section 2) in object code or executable form under the terms of\r
-Sections 1 and 2 above provided that you also do one of the following:\r
-\r
-    a) Accompany it with the complete corresponding machine-readable\r
-    source code, which must be distributed under the terms of Sections\r
-    1 and 2 above on a medium customarily used for software interchange; or,\r
-\r
-    b) Accompany it with a written offer, valid for at least three\r
-    years, to give any third party, for a charge no more than your\r
-    cost of physically performing source distribution, a complete\r
-    machine-readable copy of the corresponding source code, to be\r
-    distributed under the terms of Sections 1 and 2 above on a medium\r
-    customarily used for software interchange; or,\r
-\r
-    c) Accompany it with the information you received as to the offer\r
-    to distribute corresponding source code.  (This alternative is\r
-    allowed only for noncommercial distribution and only if you\r
-    received the program in object code or executable form with such\r
-    an offer, in accord with Subsection b above.)\r
-\r
-The source code for a work means the preferred form of the work for\r
-making modifications to it.  For an executable work, complete source\r
-code means all the source code for all modules it contains, plus any\r
-associated interface definition files, plus the scripts used to\r
-control compilation and installation of the executable.  However, as a\r
-special exception, the source code distributed need not include\r
-anything that is normally distributed (in either source or binary\r
-form) with the major components (compiler, kernel, and so on) of the\r
-operating system on which the executable runs, unless that component\r
-itself accompanies the executable.\r
-\r
-If distribution of executable or object code is made by offering\r
-access to copy from a designated place, then offering equivalent\r
-access to copy the source code from the same place counts as\r
-distribution of the source code, even though third parties are not\r
+  3. You may opt to apply the terms of the ordinary GNU General Public\r
+License instead of this License to a given copy of the Library.  To do\r
+this, you must alter all the notices that refer to this License, so\r
+that they refer to the ordinary GNU General Public License, version 2,\r
+instead of to this License.  (If a newer version than version 2 of the\r
+ordinary GNU General Public License has appeared, then you can specify\r
+that version instead if you wish.)  Do not make any other change in\r
+these notices.\r
+\f\r
+  Once this change is made in a given copy, it is irreversible for\r
+that copy, so the ordinary GNU General Public License applies to all\r
+subsequent copies and derivative works made from that copy.\r
+\r
+  This option is useful when you wish to copy part of the code of\r
+the Library into a program that is not a library.\r
+\r
+  4. You may copy and distribute the Library (or a portion or\r
+derivative of it, under Section 2) in object code or executable form\r
+under the terms of Sections 1 and 2 above provided that you accompany\r
+it with the complete corresponding machine-readable source code, which\r
+must be distributed under the terms of Sections 1 and 2 above on a\r
+medium customarily used for software interchange.\r
+\r
+  If distribution of object code is made by offering access to copy\r
+from a designated place, then offering equivalent access to copy the\r
+source code from the same place satisfies the requirement to\r
+distribute the source code, even though third parties are not\r
 compelled to copy the source along with the object code.\r
+\r
+  5. A program that contains no derivative of any portion of the\r
+Library, but is designed to work with the Library by being compiled or\r
+linked with it, is called a "work that uses the Library".  Such a\r
+work, in isolation, is not a derivative work of the Library, and\r
+therefore falls outside the scope of this License.\r
+\r
+  However, linking a "work that uses the Library" with the Library\r
+creates an executable that is a derivative of the Library (because it\r
+contains portions of the Library), rather than a "work that uses the\r
+library".  The executable is therefore covered by this License.\r
+Section 6 states terms for distribution of such executables.\r
+\r
+  When a "work that uses the Library" uses material from a header file\r
+that is part of the Library, the object code for the work may be a\r
+derivative work of the Library even though the source code is not.\r
+Whether this is true is especially significant if the work can be\r
+linked without the Library, or if the work is itself a library.  The\r
+threshold for this to be true is not precisely defined by law.\r
+\r
+  If such an object file uses only numerical parameters, data\r
+structure layouts and accessors, and small macros and small inline\r
+functions (ten lines or less in length), then the use of the object\r
+file is unrestricted, regardless of whether it is legally a derivative\r
+work.  (Executables containing this object code plus portions of the\r
+Library will still fall under Section 6.)\r
+\r
+  Otherwise, if the work is a derivative of the Library, you may\r
+distribute the object code for the work under the terms of Section 6.\r
+Any executables containing that work also fall under Section 6,\r
+whether or not they are linked directly with the Library itself.\r
+\f\r
+  6. As an exception to the Sections above, you may also compile or\r
+link a "work that uses the Library" with the Library to produce a\r
+work containing portions of the Library, and distribute that work\r
+under terms of your choice, provided that the terms permit\r
+modification of the work for the customer's own use and reverse\r
+engineering for debugging such modifications.\r
+\r
+  You must give prominent notice with each copy of the work that the\r
+Library is used in it and that the Library and its use are covered by\r
+this License.  You must supply a copy of this License.  If the work\r
+during execution displays copyright notices, you must include the\r
+copyright notice for the Library among them, as well as a reference\r
+directing the user to the copy of this License.  Also, you must do one\r
+of these things:\r
+\r
+    a) Accompany the work with the complete corresponding\r
+    machine-readable source code for the Library including whatever\r
+    changes were used in the work (which must be distributed under\r
+    Sections 1 and 2 above); and, if the work is an executable linked\r
+    with the Library, with the complete machine-readable "work that\r
+    uses the Library", as object code and/or source code, so that the\r
+    user can modify the Library and then relink to produce a modified\r
+    executable containing the modified Library.  (It is understood\r
+    that the user who changes the contents of definitions files in the\r
+    Library will not necessarily be able to recompile the application\r
+    to use the modified definitions.)\r
+\r
+    b) Accompany the work with a written offer, valid for at\r
+    least three years, to give the same user the materials\r
+    specified in Subsection 6a, above, for a charge no more\r
+    than the cost of performing this distribution.\r
+\r
+    c) If distribution of the work is made by offering access to copy\r
+    from a designated place, offer equivalent access to copy the above\r
+    specified materials from the same place.\r
+\r
+    d) Verify that the user has already received a copy of these\r
+    materials or that you have already sent this user a copy.\r
+\r
+  For an executable, the required form of the "work that uses the\r
+Library" must include any data and utility programs needed for\r
+reproducing the executable from it.  However, as a special exception,\r
+the source code distributed need not include anything that is normally\r
+distributed (in either source or binary form) with the major\r
+components (compiler, kernel, and so on) of the operating system on\r
+which the executable runs, unless that component itself accompanies\r
+the executable.\r
+\r
+  It may happen that this requirement contradicts the license\r
+restrictions of other proprietary libraries that do not normally\r
+accompany the operating system.  Such a contradiction means you cannot\r
+use both them and the Library together in an executable that you\r
+distribute.\r
 \f\r
-  4. You may not copy, modify, sublicense, or distribute the Program\r
-except as expressly provided under this License.  Any attempt\r
-otherwise to copy, modify, sublicense or distribute the Program is\r
-void, and will automatically terminate your rights under this License.\r
-However, parties who have received copies, or rights, from you under\r
-this License will not have their licenses terminated so long as such\r
-parties remain in full compliance.\r
-\r
-  5. You are not required to accept this License, since you have not\r
+  7. You may place library facilities that are a work based on the\r
+Library side-by-side in a single library together with other library\r
+facilities not covered by this License, and distribute such a combined\r
+library, provided that the separate distribution of the work based on\r
+the Library and of the other library facilities is otherwise\r
+permitted, and provided that you do these two things:\r
+\r
+    a) Accompany the combined library with a copy of the same work\r
+    based on the Library, uncombined with any other library\r
+    facilities.  This must be distributed under the terms of the\r
+    Sections above.\r
+\r
+    b) Give prominent notice with the combined library of the fact\r
+    that part of it is a work based on the Library, and explaining\r
+    where to find the accompanying uncombined form of the same work.\r
+\r
+  8. You may not copy, modify, sublicense, link with, or distribute\r
+the Library except as expressly provided under this License.  Any\r
+attempt otherwise to copy, modify, sublicense, link with, or\r
+distribute the Library is void, and will automatically terminate your\r
+rights under this License.  However, parties who have received copies,\r
+or rights, from you under this License will not have their licenses\r
+terminated so long as such parties remain in full compliance.\r
+\r
+  9. You are not required to accept this License, since you have not\r
 signed it.  However, nothing else grants you permission to modify or\r
-distribute the Program or its derivative works.  These actions are\r
+distribute the Library or its derivative works.  These actions are\r
 prohibited by law if you do not accept this License.  Therefore, by\r
-modifying or distributing the Program (or any work based on the\r
-Program), you indicate your acceptance of this License to do so, and\r
+modifying or distributing the Library (or any work based on the\r
+Library), you indicate your acceptance of this License to do so, and\r
 all its terms and conditions for copying, distributing or modifying\r
-the Program or works based on it.\r
+the Library or works based on it.\r
 \r
-  6. Each time you redistribute the Program (or any work based on the\r
-Program), the recipient automatically receives a license from the\r
-original licensor to copy, distribute or modify the Program subject to\r
-these terms and conditions.  You may not impose any further\r
+  10. Each time you redistribute the Library (or any work based on the\r
+Library), the recipient automatically receives a license from the\r
+original licensor to copy, distribute, link with or modify the Library\r
+subject to these terms and conditions.  You may not impose any further\r
 restrictions on the recipients' exercise of the rights granted herein.\r
 You are not responsible for enforcing compliance by third parties to\r
 this License.\r
-\r
-  7. If, as a consequence of a court judgment or allegation of patent\r
+\f\r
+  11. If, as a consequence of a court judgment or allegation of patent\r
 infringement or for any other reason (not limited to patent issues),\r
 conditions are imposed on you (whether by court order, agreement or\r
 otherwise) that contradict the conditions of this License, they do not\r
 excuse you from the conditions of this License.  If you cannot\r
 distribute so as to satisfy simultaneously your obligations under this\r
 License and any other pertinent obligations, then as a consequence you\r
-may not distribute the Program at all.  For example, if a patent\r
-license would not permit royalty-free redistribution of the Program by\r
+may not distribute the Library at all.  For example, if a patent\r
+license would not permit royalty-free redistribution of the Library by\r
 all those who receive copies directly or indirectly through you, then\r
 the only way you could satisfy both it and this License would be to\r
-refrain entirely from distribution of the Program.\r
+refrain entirely from distribution of the Library.\r
 \r
-If any portion of this section is held invalid or unenforceable under\r
-any particular circumstance, the balance of the section is intended to\r
-apply and the section as a whole is intended to apply in other\r
-circumstances.\r
+If any portion of this section is held invalid or unenforceable under any\r
+particular circumstance, the balance of the section is intended to apply,\r
+and the section as a whole is intended to apply in other circumstances.\r
 \r
 It is not the purpose of this section to induce you to infringe any\r
 patents or other property right claims or to contest validity of any\r
 such claims; this section has the sole purpose of protecting the\r
-integrity of the free software distribution system, which is\r
+integrity of the free software distribution system which is\r
 implemented by public license practices.  Many people have made\r
 generous contributions to the wide range of software distributed\r
 through that system in reliance on consistent application of that\r
@@ -225,54 +380,88 @@ impose that choice.
 \r
 This section is intended to make thoroughly clear what is believed to\r
 be a consequence of the rest of this License.\r
-\f\r
-  8. If the distribution and/or use of the Program is restricted in\r
+\r
+  12. If the distribution and/or use of the Library is restricted in\r
 certain countries either by patents or by copyrighted interfaces, the\r
-original copyright holder who places the Program under this License\r
-may add an explicit geographical distribution limitation excluding\r
-those countries, so that distribution is permitted only in or among\r
-countries not thus excluded.  In such case, this License incorporates\r
-the limitation as if written in the body of this License.\r
-\r
-  9. The Free Software Foundation may publish revised and/or new versions\r
-of the General Public License from time to time.  Such new versions will\r
-be similar in spirit to the present version, but may differ in detail to\r
-address new problems or concerns.\r
-\r
-Each version is given a distinguishing version number.  If the Program\r
-specifies a version number of this License which applies to it and "any\r
-later version", you have the option of following the terms and conditions\r
-either of that version or of any later version published by the Free\r
-Software Foundation.  If the Program does not specify a version number of\r
-this License, you may choose any version ever published by the Free Software\r
-Foundation.\r
-\r
-  10. If you wish to incorporate parts of the Program into other free\r
-programs whose distribution conditions are different, write to the author\r
-to ask for permission.  For software which is copyrighted by the Free\r
-Software Foundation, write to the Free Software Foundation; we sometimes\r
-make exceptions for this.  Our decision will be guided by the two goals\r
-of preserving the free status of all derivatives of our free software and\r
-of promoting the sharing and reuse of software generally.\r
+original copyright holder who places the Library under this License may add\r
+an explicit geographical distribution limitation excluding those countries,\r
+so that distribution is permitted only in or among countries not thus\r
+excluded.  In such case, this License incorporates the limitation as if\r
+written in the body of this License.\r
+\r
+  13. The Free Software Foundation may publish revised and/or new\r
+versions of the Library General Public License from time to time.\r
+Such new versions will be similar in spirit to the present version,\r
+but may differ in detail to address new problems or concerns.\r
+\r
+Each version is given a distinguishing version number.  If the Library\r
+specifies a version number of this License which applies to it and\r
+"any later version", you have the option of following the terms and\r
+conditions either of that version or of any later version published by\r
+the Free Software Foundation.  If the Library does not specify a\r
+license version number, you may choose any version ever published by\r
+the Free Software Foundation.\r
+\f\r
+  14. If you wish to incorporate parts of the Library into other free\r
+programs whose distribution conditions are incompatible with these,\r
+write to the author to ask for permission.  For software which is\r
+copyrighted by the Free Software Foundation, write to the Free\r
+Software Foundation; we sometimes make exceptions for this.  Our\r
+decision will be guided by the two goals of preserving the free status\r
+of all derivatives of our free software and of promoting the sharing\r
+and reuse of software generally.\r
 \r
                            NO WARRANTY\r
 \r
-  11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY\r
-FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW.  EXCEPT WHEN\r
-OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES\r
-PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED\r
-OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF\r
-MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE RISK AS\r
-TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE\r
-PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,\r
-REPAIR OR CORRECTION.\r
-\r
-  12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING\r
-WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR\r
-REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,\r
-INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING\r
-OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED\r
-TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY\r
-YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER\r
-PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE\r
-POSSIBILITY OF SUCH DAMAGES.
\ No newline at end of file
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO\r
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.\r
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR\r
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY\r
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE\r
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR\r
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE\r
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME\r
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\r
+\r
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN\r
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY\r
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU\r
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR\r
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE\r
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING\r
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A\r
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF\r
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH\r
+DAMAGES.\r
+\r
+                    END OF TERMS AND CONDITIONS\r
+\r
+     Appendix: How to Apply These Terms to Your New Libraries\r
+\r
+  If you develop a new library, and you want it to be of the greatest\r
+possible use to the public, we recommend making it free software that\r
+everyone can redistribute and change.  You can do so by permitting\r
+redistribution under these terms (or, alternatively, under the terms of the\r
+ordinary General Public License).\r
+\r
+  To apply these terms, attach the following notices to the library.  It is\r
+safest to attach them to the start of each source file to most effectively\r
+convey the exclusion of warranty; and each file should have at least the\r
+"copyright" line and a pointer to where the full notice is found.\r
+\r
+    <one line to give the library's name and a brief idea of what it does.>\r
+    Copyright (C) <year>  <name of author>\r
+\r
+    This library is free software; you can redistribute it and/or\r
+    modify it under the terms of the GNU Library General Public\r
+    License as published by the Free Software Foundation; either\r
+    version 2 of the License, or (at your option) any later version.\r
+\r
+    This library is distributed in the hope that it will be useful,\r
+    but WITHOUT ANY WARRANTY; without even the implied warranty of\r
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\r
+    Library General Public License for more details.\r
+\r
+    You should have received a copy of the GNU Library General Public\r
+    License along with this library; if not, write to the Free\r
+    Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.\r
diff --git a/dependencies/ffmpeg/licenses/soxr.txt b/dependencies/ffmpeg/licenses/soxr.txt
new file mode 100644 (file)
index 0000000..1c61878
--- /dev/null
@@ -0,0 +1,24 @@
+SoX Resampler Library       Copyright (c) 2007-13 robs@users.sourceforge.net
+
+This library is free software; you can redistribute it and/or modify it
+under the terms of the GNU Lesser General Public License as published by
+the Free Software Foundation; either version 2.1 of the License, or (at
+your option) any later version.
+
+This library is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Lesser
+General Public License for more details.
+
+You should have received a copy of the GNU Lesser General Public License
+along with this library; if not, write to the Free Software Foundation,
+Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA.
+
+
+Notes
+
+1. Re software in the `examples' directory: works that are not resampling
+examples but are based on the given examples -- for example, applications using
+the library -- shall not be considered to be derivative works of the examples.
+
+2. If building with pffft.c, see the licence embedded in that file.
index e7a3ac7ef37b6b1c990a8a34070a6c492f036c48..2d92429d26e1c5ca81d3f07de0f9f0e036f36d88 100644 (file)
@@ -32,4 +32,4 @@ PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
 PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF\r
 LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING\r
 NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS\r
-SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
\ No newline at end of file
+SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.\r
diff --git a/dependencies/ffmpeg/licenses/twolame.txt b/dependencies/ffmpeg/licenses/twolame.txt
new file mode 100644 (file)
index 0000000..b1e3f5a
--- /dev/null
@@ -0,0 +1,504 @@
+                 GNU LESSER GENERAL PUBLIC LICENSE
+                      Version 2.1, February 1999
+
+ Copyright (C) 1991, 1999 Free Software Foundation, Inc.
+     59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the Lesser GPL.  It also counts
+ as the successor of the GNU Library Public License, version 2, hence
+ the version number 2.1.]
+
+                           Preamble
+
+  The licenses for most software are designed to take away your
+freedom to share and change it.  By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+  This license, the Lesser General Public License, applies to some
+specially designated software packages--typically libraries--of the
+Free Software Foundation and other authors who decide to use it.  You
+can use it too, but we suggest you first think carefully about whether
+this license or the ordinary General Public License is the better
+strategy to use in any particular case, based on the explanations below.
+
+  When we speak of free software, we are referring to freedom of use,
+not price.  Our General Public Licenses are designed to make sure that
+you have the freedom to distribute copies of free software (and charge
+for this service if you wish); that you receive source code or can get
+it if you want it; that you can change the software and use pieces of
+it in new free programs; and that you are informed that you can do
+these things.
+
+  To protect your rights, we need to make restrictions that forbid
+distributors to deny you these rights or to ask you to surrender these
+rights.  These restrictions translate to certain responsibilities for
+you if you distribute copies of the library or if you modify it.
+
+  For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you.  You must make sure that they, too, receive or can get the source
+code.  If you link other code with the library, you must provide
+complete object files to the recipients, so that they can relink them
+with the library after making changes to the library and recompiling
+it.  And you must show them these terms so they know their rights.
+
+  We protect your rights with a two-step method: (1) we copyright the
+library, and (2) we offer you this license, which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  To protect each distributor, we want to make it very clear that
+there is no warranty for the free library.  Also, if the library is
+modified by someone else and passed on, the recipients should know
+that what they have is not the original version, so that the original
+author's reputation will not be affected by problems that might be
+introduced by others.
+\f
+  Finally, software patents pose a constant threat to the existence of
+any free program.  We wish to make sure that a company cannot
+effectively restrict the users of a free program by obtaining a
+restrictive license from a patent holder.  Therefore, we insist that
+any patent license obtained for a version of the library must be
+consistent with the full freedom of use specified in this license.
+
+  Most GNU software, including some libraries, is covered by the
+ordinary GNU General Public License.  This license, the GNU Lesser
+General Public License, applies to certain designated libraries, and
+is quite different from the ordinary General Public License.  We use
+this license for certain libraries in order to permit linking those
+libraries into non-free programs.
+
+  When a program is linked with a library, whether statically or using
+a shared library, the combination of the two is legally speaking a
+combined work, a derivative of the original library.  The ordinary
+General Public License therefore permits such linking only if the
+entire combination fits its criteria of freedom.  The Lesser General
+Public License permits more lax criteria for linking other code with
+the library.
+
+  We call this license the "Lesser" General Public License because it
+does Less to protect the user's freedom than the ordinary General
+Public License.  It also provides other free software developers Less
+of an advantage over competing non-free programs.  These disadvantages
+are the reason we use the ordinary General Public License for many
+libraries.  However, the Lesser license provides advantages in certain
+special circumstances.
+
+  For example, on rare occasions, there may be a special need to
+encourage the widest possible use of a certain library, so that it becomes
+a de-facto standard.  To achieve this, non-free programs must be
+allowed to use the library.  A more frequent case is that a free
+library does the same job as widely used non-free libraries.  In this
+case, there is little to gain by limiting the free library to free
+software only, so we use the Lesser General Public License.
+
+  In other cases, permission to use a particular library in non-free
+programs enables a greater number of people to use a large body of
+free software.  For example, permission to use the GNU C Library in
+non-free programs enables many more people to use the whole GNU
+operating system, as well as its variant, the GNU/Linux operating
+system.
+
+  Although the Lesser General Public License is Less protective of the
+users' freedom, it does ensure that the user of a program that is
+linked with the Library has the freedom and the wherewithal to run
+that program using a modified version of the Library.
+
+  The precise terms and conditions for copying, distribution and
+modification follow.  Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library".  The
+former contains code derived from the library, whereas the latter must
+be combined with the library in order to run.
+\f
+                 GNU LESSER GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library or other
+program which contains a notice placed by the copyright holder or
+other authorized party saying it may be distributed under the terms of
+this Lesser General Public License (also called "this License").
+Each licensee is addressed as "you".
+
+  A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+  The "Library", below, refers to any such software library or work
+which has been distributed under these terms.  A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language.  (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+  "Source code" for a work means the preferred form of the work for
+making modifications to it.  For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+  Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope.  The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it).  Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+  
+  1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+  You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+\f
+  2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+    a) The modified work must itself be a software library.
+
+    b) You must cause the files modified to carry prominent notices
+    stating that you changed the files and the date of any change.
+
+    c) You must cause the whole of the work to be licensed at no
+    charge to all third parties under the terms of this License.
+
+    d) If a facility in the modified Library refers to a function or a
+    table of data to be supplied by an application program that uses
+    the facility, other than as an argument passed when the facility
+    is invoked, then you must make a good faith effort to ensure that,
+    in the event an application does not supply such function or
+    table, the facility still operates, and performs whatever part of
+    its purpose remains meaningful.
+
+    (For example, a function in a library to compute square roots has
+    a purpose that is entirely well-defined independent of the
+    application.  Therefore, Subsection 2d requires that any
+    application-supplied function or table used by this function must
+    be optional: if the application does not supply it, the square
+    root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole.  If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works.  But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+  3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library.  To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License.  (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.)  Do not make any other change in
+these notices.
+\f
+  Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+  This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+  4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+  If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+  5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library".  Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+  However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library".  The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+  When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library.  The
+threshold for this to be true is not precisely defined by law.
+
+  If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work.  (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+  Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+\f
+  6. As an exception to the Sections above, you may also combine or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+  You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License.  You must supply a copy of this License.  If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License.  Also, you must do one
+of these things:
+
+    a) Accompany the work with the complete corresponding
+    machine-readable source code for the Library including whatever
+    changes were used in the work (which must be distributed under
+    Sections 1 and 2 above); and, if the work is an executable linked
+    with the Library, with the complete machine-readable "work that
+    uses the Library", as object code and/or source code, so that the
+    user can modify the Library and then relink to produce a modified
+    executable containing the modified Library.  (It is understood
+    that the user who changes the contents of definitions files in the
+    Library will not necessarily be able to recompile the application
+    to use the modified definitions.)
+
+    b) Use a suitable shared library mechanism for linking with the
+    Library.  A suitable mechanism is one that (1) uses at run time a
+    copy of the library already present on the user's computer system,
+    rather than copying library functions into the executable, and (2)
+    will operate properly with a modified version of the library, if
+    the user installs one, as long as the modified version is
+    interface-compatible with the version that the work was made with.
+
+    c) Accompany the work with a written offer, valid for at
+    least three years, to give the same user the materials
+    specified in Subsection 6a, above, for a charge no more
+    than the cost of performing this distribution.
+
+    d) If distribution of the work is made by offering access to copy
+    from a designated place, offer equivalent access to copy the above
+    specified materials from the same place.
+
+    e) Verify that the user has already received a copy of these
+    materials or that you have already sent this user a copy.
+
+  For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it.  However, as a special exception,
+the materials to be distributed need not include anything that is
+normally distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+  It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system.  Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+\f
+  7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+    a) Accompany the combined library with a copy of the same work
+    based on the Library, uncombined with any other library
+    facilities.  This must be distributed under the terms of the
+    Sections above.
+
+    b) Give prominent notice with the combined library of the fact
+    that part of it is a work based on the Library, and explaining
+    where to find the accompanying uncombined form of the same work.
+
+  8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License.  Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License.  However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+  9. You are not required to accept this License, since you have not
+signed it.  However, nothing else grants you permission to modify or
+distribute the Library or its derivative works.  These actions are
+prohibited by law if you do not accept this License.  Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+  10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions.  You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties with
+this License.
+\f
+  11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License.  If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all.  For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices.  Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+  12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded.  In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+  13. The Free Software Foundation may publish revised and/or new
+versions of the Lesser General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number.  If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation.  If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+\f
+  14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission.  For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this.  Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+                           NO WARRANTY
+
+  15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU.  SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+  16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+                    END OF TERMS AND CONDITIONS
+\f
+           How to Apply These Terms to Your New Libraries
+
+  If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change.  You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+  To apply these terms, attach the following notices to the library.  It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+    <one line to give the library's name and a brief idea of what it does.>
+    Copyright (C) <year>  <name of author>
+
+    This library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+    License as published by the Free Software Foundation; either
+    version 2.1 of the License, or (at your option) any later version.
+
+    This library is distributed in the hope that it will be useful,
+    but WITHOUT ANY WARRANTY; without even the implied warranty of
+    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+    Lesser General Public License for more details.
+
+    You should have received a copy of the GNU Lesser General Public
+    License along with this library; if not, write to the Free Software
+    Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary.  Here is a sample; alter the names:
+
+  Yoyodyne, Inc., hereby disclaims all copyright interest in the
+  library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+  <signature of Ty Coon>, 1 April 1990
+  Ty Coon, President of Vice
+
+That's all there is to it!
+
+
diff --git a/dependencies/ffmpeg/licenses/vid.stab.txt b/dependencies/ffmpeg/licenses/vid.stab.txt
new file mode 100644 (file)
index 0000000..a09e1dc
--- /dev/null
@@ -0,0 +1,16 @@
+In this project is open source in the sense of the GPL.
+
+ *   This program is free software; you can redistribute it and/or modify  *
+ *   it under the terms of the GNU General Public License as published by  *
+ *   the Free Software Foundation; either version 2 of the License, or     *
+ *   (at your option) any later version.                                   *
+ *                                                                         *
+ *   You should have received a copy of the GNU General Public License     *
+ *   along with this program; if not, write to the                         *
+ *   Free Software Foundation, Inc.,                                       *
+ *   59 Temple Place - Suite 330, Boston, MA  02111-1307, USA.             *
+ *                                                                         *
+ *   This program is distributed in the hope that it will be useful,       *
+ *   but WITHOUT ANY WARRANTY; without even the implied warranty of        *
+ *   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
+ *   GNU General Public License for more details.                          *
diff --git a/dependencies/ffmpeg/licenses/vo-aacenc.txt b/dependencies/ffmpeg/licenses/vo-aacenc.txt
new file mode 100644 (file)
index 0000000..5ec4bf0
--- /dev/null
@@ -0,0 +1,191 @@
+Apache License
+Version 2.0, January 2004
+http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction, and
+distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by the
+copyright owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other
+entities that control, are controlled by, or are under common control with
+that entity. For the purposes of this definition, "control" means (i) the
+power, direct or indirect, to cause the direction or management of such
+entity, whether by contract or otherwise, or (ii) ownership of fifty
+percent (50%) or more of the outstanding shares, or (iii) beneficial
+ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising
+permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications,
+including but not limited to software source code, documentation source,
+and configuration files.
+
+"Object" form shall mean any form resulting from mechanical transformation
+or translation of a Source form, including but not limited to compiled
+object code, generated documentation, and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form,
+made available under the License, as indicated by a copyright notice that
+is included in or attached to the work (an example is provided in the
+Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form,
+that is based on (or derived from) the Work and for which the editorial
+revisions, annotations, elaborations, or other modifications represent, as
+a whole, an original work of authorship. For the purposes of this License,
+Derivative Works shall not include works that remain separable from, or
+merely link (or bind by name) to the interfaces of, the Work and Derivative
+Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original
+version of the Work and any modifications or additions to that Work or
+Derivative Works thereof, that is intentionally submitted to Licensor for
+inclusion in the Work by the copyright owner or by an individual or Legal
+Entity authorized to submit on behalf of the copyright owner. For the
+purposes of this definition, "submitted" means any form of electronic,
+verbal, or written communication sent to the Licensor or its
+representatives, including but not limited to communication on electronic
+mailing lists, source code control systems, and issue tracking systems that
+are managed by, or on behalf of, the Licensor for the purpose of discussing
+and improving the Work, but excluding communication that is conspicuously
+marked or otherwise designated in writing by the copyright owner as "Not a
+Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on
+behalf of whom a Contribution has been received by Licensor and
+subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of this
+License, each Contributor hereby grants to You a perpetual, worldwide,
+non-exclusive, no-charge, royalty-free, irrevocable copyright license to
+reproduce, prepare Derivative Works of, publicly display, publicly perform,
+sublicense, and distribute the Work and such Derivative Works in Source or
+Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of this
+License, each Contributor hereby grants to You a perpetual, worldwide,
+non-exclusive, no-charge, royalty-free, irrevocable (except as stated in
+this section) patent license to make, have made, use, offer to sell, sell,
+import, and otherwise transfer the Work, where such license applies only to
+those patent claims licensable by such Contributor that are necessarily
+infringed by their Contribution(s) alone or by combination of their
+Contribution(s) with the Work to which such Contribution(s) was submitted.
+If You institute patent litigation against any entity (including a
+cross-claim or counterclaim in a lawsuit) alleging that the Work or a
+Contribution incorporated within the Work constitutes direct or
+contributory patent infringement, then any patent licenses granted to You
+under this License for that Work shall terminate as of the date such
+litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the Work or
+Derivative Works thereof in any medium, with or without modifications, and
+in Source or Object form, provided that You meet the following conditions:
+
+   1. You must give any other recipients of the Work or Derivative Works a
+copy of this License; and
+
+   2. You must cause any modified files to carry prominent notices stating
+that You changed the files; and
+
+   3. You must retain, in the Source form of any Derivative Works that You
+distribute, all copyright, patent, trademark, and attribution notices from
+the Source form of the Work, excluding those notices that do not pertain to
+any part of the Derivative Works; and
+
+   4. If the Work includes a "NOTICE" text file as part of its
+distribution, then any Derivative Works that You distribute must include a
+readable copy of the attribution notices contained within such NOTICE file,
+excluding those notices that do not pertain to any part of the Derivative
+Works, in at least one of the following places: within a NOTICE text file
+distributed as part of the Derivative Works; within the Source form or
+documentation, if provided along with the Derivative Works; or, within a
+display generated by the Derivative Works, if and wherever such third-party
+notices normally appear. The contents of the NOTICE file are for
+informational purposes only and do not modify the License. You may add Your
+own attribution notices within Derivative Works that You distribute,
+alongside or as an addendum to the NOTICE text from the Work, provided that
+such additional attribution notices cannot be construed as modifying the
+License.
+
+You may add Your own copyright statement to Your modifications and may
+provide additional or different license terms and conditions for use,
+reproduction, or distribution of Your modifications, or for any such
+Derivative Works as a whole, provided Your use, reproduction, and
+distribution of the Work otherwise complies with the conditions stated in
+this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise, any
+Contribution intentionally submitted for inclusion in the Work by You to
+the Licensor shall be under the terms and conditions of this License,
+without any additional terms or conditions. Notwithstanding the above,
+nothing herein shall supersede or modify the terms of any separate license
+agreement you may have executed with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+names, trademarks, service marks, or product names of the Licensor, except
+as required for reasonable and customary use in describing the origin of
+the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or agreed to
+in writing, Licensor provides the Work (and each Contributor provides its
+Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied, including, without limitation, any
+warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or
+FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for
+determining the appropriateness of using or redistributing the Work and
+assume any risks associated with Your exercise of permissions under this
+License.
+
+8. Limitation of Liability. In no event and under no legal theory, whether
+in tort (including negligence), contract, or otherwise, unless required by
+applicable law (such as deliberate and grossly negligent acts) or agreed to
+in writing, shall any Contributor be liable to You for damages, including
+any direct, indirect, special, incidental, or consequential damages of any
+character arising as a result of this License or out of the use or
+inability to use the Work (including but not limited to damages for loss of
+goodwill, work stoppage, computer failure or malfunction, or any and all
+other commercial damages or losses), even if such Contributor has been
+advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing the
+Work or Derivative Works thereof, You may choose to offer, and charge a fee
+for, acceptance of support, warranty, indemnity, or other liability
+obligations and/or rights consistent with this License. However, in
+accepting such obligations, You may act only on Your own behalf and on Your
+sole responsibility, not on behalf of any other Contributor, and only if
+You agree to indemnify, defend, and hold each Contributor harmless for any
+liability incurred by, or claims asserted against, such Contributor by
+reason of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work
+
+To apply the Apache License to your work, attach the following boilerplate
+notice, with the fields enclosed by brackets "[]" replaced with your own
+identifying information. (Don't include the brackets!) The text should be
+enclosed in the appropriate comment syntax for the file format. We also
+recommend that a file or class name and description of purpose be included
+on the same "printed page" as the copyright notice for easier
+identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License"); you may
+ not use this file except in compliance with the License. You may obtain a
+ copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable
+ law or agreed to in writing, software distributed under the License is
+ distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the specific language
+ governing permissions and limitations under the License.
diff --git a/dependencies/ffmpeg/licenses/vo-amrwbenc.txt b/dependencies/ffmpeg/licenses/vo-amrwbenc.txt
new file mode 100644 (file)
index 0000000..5ec4bf0
--- /dev/null
@@ -0,0 +1,191 @@
+Apache License
+Version 2.0, January 2004
+http://www.apache.org/licenses/
+
+TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+1. Definitions.
+
+"License" shall mean the terms and conditions for use, reproduction, and
+distribution as defined by Sections 1 through 9 of this document.
+
+"Licensor" shall mean the copyright owner or entity authorized by the
+copyright owner that is granting the License.
+
+"Legal Entity" shall mean the union of the acting entity and all other
+entities that control, are controlled by, or are under common control with
+that entity. For the purposes of this definition, "control" means (i) the
+power, direct or indirect, to cause the direction or management of such
+entity, whether by contract or otherwise, or (ii) ownership of fifty
+percent (50%) or more of the outstanding shares, or (iii) beneficial
+ownership of such entity.
+
+"You" (or "Your") shall mean an individual or Legal Entity exercising
+permissions granted by this License.
+
+"Source" form shall mean the preferred form for making modifications,
+including but not limited to software source code, documentation source,
+and configuration files.
+
+"Object" form shall mean any form resulting from mechanical transformation
+or translation of a Source form, including but not limited to compiled
+object code, generated documentation, and conversions to other media types.
+
+"Work" shall mean the work of authorship, whether in Source or Object form,
+made available under the License, as indicated by a copyright notice that
+is included in or attached to the work (an example is provided in the
+Appendix below).
+
+"Derivative Works" shall mean any work, whether in Source or Object form,
+that is based on (or derived from) the Work and for which the editorial
+revisions, annotations, elaborations, or other modifications represent, as
+a whole, an original work of authorship. For the purposes of this License,
+Derivative Works shall not include works that remain separable from, or
+merely link (or bind by name) to the interfaces of, the Work and Derivative
+Works thereof.
+
+"Contribution" shall mean any work of authorship, including the original
+version of the Work and any modifications or additions to that Work or
+Derivative Works thereof, that is intentionally submitted to Licensor for
+inclusion in the Work by the copyright owner or by an individual or Legal
+Entity authorized to submit on behalf of the copyright owner. For the
+purposes of this definition, "submitted" means any form of electronic,
+verbal, or written communication sent to the Licensor or its
+representatives, including but not limited to communication on electronic
+mailing lists, source code control systems, and issue tracking systems that
+are managed by, or on behalf of, the Licensor for the purpose of discussing
+and improving the Work, but excluding communication that is conspicuously
+marked or otherwise designated in writing by the copyright owner as "Not a
+Contribution."
+
+"Contributor" shall mean Licensor and any individual or Legal Entity on
+behalf of whom a Contribution has been received by Licensor and
+subsequently incorporated within the Work.
+
+2. Grant of Copyright License. Subject to the terms and conditions of this
+License, each Contributor hereby grants to You a perpetual, worldwide,
+non-exclusive, no-charge, royalty-free, irrevocable copyright license to
+reproduce, prepare Derivative Works of, publicly display, publicly perform,
+sublicense, and distribute the Work and such Derivative Works in Source or
+Object form.
+
+3. Grant of Patent License. Subject to the terms and conditions of this
+License, each Contributor hereby grants to You a perpetual, worldwide,
+non-exclusive, no-charge, royalty-free, irrevocable (except as stated in
+this section) patent license to make, have made, use, offer to sell, sell,
+import, and otherwise transfer the Work, where such license applies only to
+those patent claims licensable by such Contributor that are necessarily
+infringed by their Contribution(s) alone or by combination of their
+Contribution(s) with the Work to which such Contribution(s) was submitted.
+If You institute patent litigation against any entity (including a
+cross-claim or counterclaim in a lawsuit) alleging that the Work or a
+Contribution incorporated within the Work constitutes direct or
+contributory patent infringement, then any patent licenses granted to You
+under this License for that Work shall terminate as of the date such
+litigation is filed.
+
+4. Redistribution. You may reproduce and distribute copies of the Work or
+Derivative Works thereof in any medium, with or without modifications, and
+in Source or Object form, provided that You meet the following conditions:
+
+   1. You must give any other recipients of the Work or Derivative Works a
+copy of this License; and
+
+   2. You must cause any modified files to carry prominent notices stating
+that You changed the files; and
+
+   3. You must retain, in the Source form of any Derivative Works that You
+distribute, all copyright, patent, trademark, and attribution notices from
+the Source form of the Work, excluding those notices that do not pertain to
+any part of the Derivative Works; and
+
+   4. If the Work includes a "NOTICE" text file as part of its
+distribution, then any Derivative Works that You distribute must include a
+readable copy of the attribution notices contained within such NOTICE file,
+excluding those notices that do not pertain to any part of the Derivative
+Works, in at least one of the following places: within a NOTICE text file
+distributed as part of the Derivative Works; within the Source form or
+documentation, if provided along with the Derivative Works; or, within a
+display generated by the Derivative Works, if and wherever such third-party
+notices normally appear. The contents of the NOTICE file are for
+informational purposes only and do not modify the License. You may add Your
+own attribution notices within Derivative Works that You distribute,
+alongside or as an addendum to the NOTICE text from the Work, provided that
+such additional attribution notices cannot be construed as modifying the
+License.
+
+You may add Your own copyright statement to Your modifications and may
+provide additional or different license terms and conditions for use,
+reproduction, or distribution of Your modifications, or for any such
+Derivative Works as a whole, provided Your use, reproduction, and
+distribution of the Work otherwise complies with the conditions stated in
+this License.
+
+5. Submission of Contributions. Unless You explicitly state otherwise, any
+Contribution intentionally submitted for inclusion in the Work by You to
+the Licensor shall be under the terms and conditions of this License,
+without any additional terms or conditions. Notwithstanding the above,
+nothing herein shall supersede or modify the terms of any separate license
+agreement you may have executed with Licensor regarding such Contributions.
+
+6. Trademarks. This License does not grant permission to use the trade
+names, trademarks, service marks, or product names of the Licensor, except
+as required for reasonable and customary use in describing the origin of
+the Work and reproducing the content of the NOTICE file.
+
+7. Disclaimer of Warranty. Unless required by applicable law or agreed to
+in writing, Licensor provides the Work (and each Contributor provides its
+Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied, including, without limitation, any
+warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or
+FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for
+determining the appropriateness of using or redistributing the Work and
+assume any risks associated with Your exercise of permissions under this
+License.
+
+8. Limitation of Liability. In no event and under no legal theory, whether
+in tort (including negligence), contract, or otherwise, unless required by
+applicable law (such as deliberate and grossly negligent acts) or agreed to
+in writing, shall any Contributor be liable to You for damages, including
+any direct, indirect, special, incidental, or consequential damages of any
+character arising as a result of this License or out of the use or
+inability to use the Work (including but not limited to damages for loss of
+goodwill, work stoppage, computer failure or malfunction, or any and all
+other commercial damages or losses), even if such Contributor has been
+advised of the possibility of such damages.
+
+9. Accepting Warranty or Additional Liability. While redistributing the
+Work or Derivative Works thereof, You may choose to offer, and charge a fee
+for, acceptance of support, warranty, indemnity, or other liability
+obligations and/or rights consistent with this License. However, in
+accepting such obligations, You may act only on Your own behalf and on Your
+sole responsibility, not on behalf of any other Contributor, and only if
+You agree to indemnify, defend, and hold each Contributor harmless for any
+liability incurred by, or claims asserted against, such Contributor by
+reason of your accepting any such warranty or additional liability.
+
+END OF TERMS AND CONDITIONS
+
+APPENDIX: How to apply the Apache License to your work
+
+To apply the Apache License to your work, attach the following boilerplate
+notice, with the fields enclosed by brackets "[]" replaced with your own
+identifying information. (Don't include the brackets!) The text should be
+enclosed in the appropriate comment syntax for the file format. We also
+recommend that a file or class name and description of purpose be included
+on the same "printed page" as the copyright notice for easier
+identification within third-party archives.
+
+ Copyright [yyyy] [name of copyright owner]
+
+ Licensed under the Apache License, Version 2.0 (the "License"); you may
+ not use this file except in compliance with the License. You may obtain a
+ copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable
+ law or agreed to in writing, software distributed under the License is
+ distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ KIND, either express or implied. See the License for the specific language
+ governing permissions and limitations under the License.
diff --git a/dependencies/ffmpeg/licenses/wavpack.txt b/dependencies/ffmpeg/licenses/wavpack.txt
new file mode 100644 (file)
index 0000000..6ffc23b
--- /dev/null
@@ -0,0 +1,25 @@
+               Copyright (c) 1998 - 2009 Conifer Software
+                          All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are met:
+
+    * Redistributions of source code must retain the above copyright notice,
+      this list of conditions and the following disclaimer.
+    * Redistributions in binary form must reproduce the above copyright notice,
+      this list of conditions and the following disclaimer in the
+      documentation and/or other materials provided with the distribution.
+    * Neither the name of Conifer Software nor the names of its contributors
+      may be used to endorse or promote products derived from this software
+      without specific prior written permission.
+
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
+AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
+SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
+CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
+OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
index 1e51ded8a6f0c6c59296c05b3830e8f452fcc779..fbdd65f6f8b5e99b1d4d1e24eef4f4dce46164e4 100644 (file)
@@ -55,7 +55,7 @@ patent must be licensed for everyone's free use or not licensed at all.
 \r
   The precise terms and conditions for copying, distribution and\r
 modification follow.\r
-\r
+\f\r
                    GNU GENERAL PUBLIC LICENSE\r
    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\r
 \r
@@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions:
     License.  (Exception: if the Program itself is interactive but\r
     does not normally print such an announcement, your work based on\r
     the Program is not required to print an announcement.)\r
-\r
+\f\r
 These requirements apply to the modified work as a whole.  If\r
 identifiable sections of that work are not derived from the Program,\r
 and can be reasonably considered independent and separate works in\r
@@ -168,7 +168,7 @@ access to copy from a designated place, then offering equivalent
 access to copy the source code from the same place counts as\r
 distribution of the source code, even though third parties are not\r
 compelled to copy the source along with the object code.\r
-\r
+\f\r
   4. You may not copy, modify, sublicense, or distribute the Program\r
 except as expressly provided under this License.  Any attempt\r
 otherwise to copy, modify, sublicense or distribute the Program is\r
@@ -225,7 +225,7 @@ impose that choice.
 \r
 This section is intended to make thoroughly clear what is believed to\r
 be a consequence of the rest of this License.\r
-\r
+\f\r
   8. If the distribution and/or use of the Program is restricted in\r
 certain countries either by patents or by copyrighted interfaces, the\r
 original copyright holder who places the Program under this License\r
@@ -278,7 +278,7 @@ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
 POSSIBILITY OF SUCH DAMAGES.\r
 \r
                     END OF TERMS AND CONDITIONS\r
-\r
+\f\r
            How to Apply These Terms to Your New Programs\r
 \r
   If you develop a new program, and you want it to be of the greatest\r
@@ -337,4 +337,4 @@ This General Public License does not permit incorporating your program into
 proprietary programs.  If your program is a subroutine library, you may\r
 consider it more useful to permit linking proprietary applications with the\r
 library.  If this is what you want to do, use the GNU Library General\r
-Public License instead of this License.
\ No newline at end of file
+Public License instead of this License.\r
index ea9864d07158d1a160f6baf3b3ff7c9f2034645d..03ccb0617d188bc3f1e7619fe2120a5b24fb4332 100644 (file)
@@ -55,7 +55,7 @@ patent must be licensed for everyone's free use or not licensed at all.
 \r
   The precise terms and conditions for copying, distribution and\r
 modification follow.\r
-\r
+\f\r
                    GNU GENERAL PUBLIC LICENSE\r
    TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\r
 \r
@@ -110,7 +110,7 @@ above, provided that you also meet all of these conditions:
     License.  (Exception: if the Program itself is interactive but\r
     does not normally print such an announcement, your work based on\r
     the Program is not required to print an announcement.)\r
-\r
+\f\r
 These requirements apply to the modified work as a whole.  If\r
 identifiable sections of that work are not derived from the Program,\r
 and can be reasonably considered independent and separate works in\r
@@ -168,7 +168,7 @@ access to copy from a designated place, then offering equivalent
 access to copy the source code from the same place counts as\r
 distribution of the source code, even though third parties are not\r
 compelled to copy the source along with the object code.\r
-\r
+\f\r
   4. You may not copy, modify, sublicense, or distribute the Program\r
 except as expressly provided under this License.  Any attempt\r
 otherwise to copy, modify, sublicense or distribute the Program is\r
@@ -225,7 +225,7 @@ impose that choice.
 \r
 This section is intended to make thoroughly clear what is believed to\r
 be a consequence of the rest of this License.\r
-\r
+\f\r
   8. If the distribution and/or use of the Program is restricted in\r
 certain countries either by patents or by copyrighted interfaces, the\r
 original copyright holder who places the Program under this License\r
@@ -278,7 +278,7 @@ PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
 POSSIBILITY OF SUCH DAMAGES.\r
 \r
                     END OF TERMS AND CONDITIONS\r
-\r
+\f\r
            How to Apply These Terms to Your New Programs\r
 \r
   If you develop a new program, and you want it to be of the greatest\r
@@ -337,4 +337,4 @@ This General Public License does not permit incorporating your program into
 proprietary programs.  If your program is a subroutine library, you may\r
 consider it more useful to permit linking proprietary applications with the\r
 library.  If this is what you want to do, use the GNU Library General\r
-Public License instead of this License.
\ No newline at end of file
+Public License instead of this License.\r
index eb9dc5823572831b8adb40a28ea39023a1bb55fb..d2b63098499a2277afdc3285afa42c690c0417b3 100644 (file)
@@ -1,7 +1,7 @@
-  zlib.h -- interface of the 'zlib' general purpose compression library\r
-  version 1.2.5, April 19th, 2010\r
+/* zlib.h -- interface of the 'zlib' general purpose compression library\r
+  version 1.2.7, May 2nd, 2012\r
 \r
-  Copyright (C) 1995-2010 Jean-loup Gailly and Mark Adler\r
+  Copyright (C) 1995-2012 Jean-loup Gailly and Mark Adler\r
 \r
   This software is provided 'as-is', without any express or implied\r
   warranty.  In no event will the authors be held liable for any damages\r
@@ -19,5 +19,8 @@
      misrepresented as being the original software.\r
   3. This notice may not be removed or altered from any source distribution.\r
 \r
-  Jean-loup Gailly\r
-  Mark Adler\r
+  Jean-loup Gailly        Mark Adler\r
+  jloup@gzip.org          madler@alumni.caltech.edu\r
+\r
+*/\r
+\r
diff --git a/dependencies/ffmpeg/presets/ffprobe.xsd b/dependencies/ffmpeg/presets/ffprobe.xsd
new file mode 100644 (file)
index 0000000..cc3d1b6
--- /dev/null
@@ -0,0 +1,258 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"
+    targetNamespace="http://www.ffmpeg.org/schema/ffprobe"
+    xmlns:ffprobe="http://www.ffmpeg.org/schema/ffprobe">
+
+    <xsd:element name="ffprobe" type="ffprobe:ffprobeType"/>
+
+    <xsd:complexType name="ffprobeType">
+        <xsd:sequence>
+            <xsd:element name="packets"  type="ffprobe:packetsType" minOccurs="0" maxOccurs="1" />
+            <xsd:element name="frames"   type="ffprobe:framesType"  minOccurs="0" maxOccurs="1" />
+            <xsd:element name="streams"  type="ffprobe:streamsType" minOccurs="0" maxOccurs="1" />
+            <xsd:element name="programs" type="ffprobe:programsType" minOccurs="0" maxOccurs="1" />
+            <xsd:element name="chapters" type="ffprobe:chaptersType" minOccurs="0" maxOccurs="1" />
+            <xsd:element name="format"   type="ffprobe:formatType"  minOccurs="0" maxOccurs="1" />
+            <xsd:element name="error"    type="ffprobe:errorType"   minOccurs="0" maxOccurs="1" />
+            <xsd:element name="program_version"  type="ffprobe:programVersionType"  minOccurs="0" maxOccurs="1" />
+            <xsd:element name="library_versions" type="ffprobe:libraryVersionsType" minOccurs="0" maxOccurs="1" />
+        </xsd:sequence>
+    </xsd:complexType>
+
+    <xsd:complexType name="packetsType">
+        <xsd:sequence>
+            <xsd:element name="packet" type="ffprobe:packetType" minOccurs="0" maxOccurs="unbounded"/>
+        </xsd:sequence>
+    </xsd:complexType>
+
+    <xsd:complexType name="framesType">
+        <xsd:sequence>
+            <xsd:choice minOccurs="0" maxOccurs="unbounded">
+                <xsd:element name="frame" type="ffprobe:frameType" minOccurs="0" maxOccurs="unbounded"/>
+                <xsd:element name="subtitle" type="ffprobe:subtitleType" minOccurs="0" maxOccurs="unbounded"/>
+            </xsd:choice>
+        </xsd:sequence>
+    </xsd:complexType>
+
+    <xsd:complexType name="packetType">
+      <xsd:attribute name="codec_type"    type="xsd:string" use="required" />
+      <xsd:attribute name="stream_index"  type="xsd:int" use="required" />
+      <xsd:attribute name="pts"           type="xsd:long"  />
+      <xsd:attribute name="pts_time"      type="xsd:float" />
+      <xsd:attribute name="dts"           type="xsd:long"  />
+      <xsd:attribute name="dts_time"      type="xsd:float" />
+      <xsd:attribute name="duration"      type="xsd:long"  />
+      <xsd:attribute name="duration_time" type="xsd:float" />
+      <xsd:attribute name="convergence_duration"      type="xsd:long"  />
+      <xsd:attribute name="convergence_duration_time" type="xsd:float" />
+      <xsd:attribute name="size"          type="xsd:long" use="required" />
+      <xsd:attribute name="pos"           type="xsd:long"  />
+      <xsd:attribute name="flags"         type="xsd:string" use="required" />
+      <xsd:attribute name="data"          type="xsd:string" />
+    </xsd:complexType>
+
+    <xsd:complexType name="frameType">
+      <xsd:attribute name="media_type"    type="xsd:string" use="required"/>
+      <xsd:attribute name="key_frame"     type="xsd:int"    use="required"/>
+      <xsd:attribute name="pts"           type="xsd:long" />
+      <xsd:attribute name="pts_time"      type="xsd:float"/>
+      <xsd:attribute name="pkt_pts"       type="xsd:long" />
+      <xsd:attribute name="pkt_pts_time"  type="xsd:float"/>
+      <xsd:attribute name="pkt_dts"       type="xsd:long" />
+      <xsd:attribute name="pkt_dts_time"  type="xsd:float"/>
+      <xsd:attribute name="pkt_duration"  type="xsd:long" />
+      <xsd:attribute name="pkt_duration_time" type="xsd:float"/>
+      <xsd:attribute name="pkt_pos"       type="xsd:long" />
+      <xsd:attribute name="pkt_size"      type="xsd:int" />
+
+      <!-- audio attributes -->
+      <xsd:attribute name="sample_fmt"             type="xsd:string"/>
+      <xsd:attribute name="nb_samples"             type="xsd:long"  />
+      <xsd:attribute name="channels"               type="xsd:int"   />
+      <xsd:attribute name="channel_layout"         type="xsd:string"/>
+
+      <!-- video attributes -->
+      <xsd:attribute name="width"                  type="xsd:long"  />
+      <xsd:attribute name="height"                 type="xsd:long"  />
+      <xsd:attribute name="pix_fmt"                type="xsd:string"/>
+      <xsd:attribute name="sample_aspect_ratio"    type="xsd:string"/>
+      <xsd:attribute name="pict_type"              type="xsd:string"/>
+      <xsd:attribute name="coded_picture_number"   type="xsd:long"  />
+      <xsd:attribute name="display_picture_number" type="xsd:long"  />
+      <xsd:attribute name="interlaced_frame"       type="xsd:int"   />
+      <xsd:attribute name="top_field_first"        type="xsd:int"   />
+      <xsd:attribute name="repeat_pict"            type="xsd:int"   />
+    </xsd:complexType>
+
+    <xsd:complexType name="subtitleType">
+      <xsd:attribute name="media_type"         type="xsd:string" fixed="subtitle" use="required"/>
+      <xsd:attribute name="pts"                type="xsd:long" />
+      <xsd:attribute name="pts_time"           type="xsd:float"/>
+      <xsd:attribute name="format"             type="xsd:int"  />
+      <xsd:attribute name="start_display_time" type="xsd:int"  />
+      <xsd:attribute name="end_display_time"   type="xsd:int"  />
+      <xsd:attribute name="num_rects"          type="xsd:int"  />
+    </xsd:complexType>
+
+    <xsd:complexType name="streamsType">
+        <xsd:sequence>
+            <xsd:element name="stream" type="ffprobe:streamType" minOccurs="0" maxOccurs="unbounded"/>
+        </xsd:sequence>
+    </xsd:complexType>
+
+    <xsd:complexType name="programsType">
+        <xsd:sequence>
+            <xsd:element name="program" type="ffprobe:programType" minOccurs="0" maxOccurs="unbounded"/>
+        </xsd:sequence>
+    </xsd:complexType>
+
+    <xsd:complexType name="streamDispositionType">
+      <xsd:attribute name="default"          type="xsd:int" use="required" />
+      <xsd:attribute name="dub"              type="xsd:int" use="required" />
+      <xsd:attribute name="original"         type="xsd:int" use="required" />
+      <xsd:attribute name="comment"          type="xsd:int" use="required" />
+      <xsd:attribute name="lyrics"           type="xsd:int" use="required" />
+      <xsd:attribute name="karaoke"          type="xsd:int" use="required" />
+      <xsd:attribute name="forced"           type="xsd:int" use="required" />
+      <xsd:attribute name="hearing_impaired" type="xsd:int" use="required" />
+      <xsd:attribute name="visual_impaired"  type="xsd:int" use="required" />
+      <xsd:attribute name="clean_effects"    type="xsd:int" use="required" />
+      <xsd:attribute name="attached_pic"     type="xsd:int" use="required" />
+    </xsd:complexType>
+
+    <xsd:complexType name="streamType">
+      <xsd:sequence>
+        <xsd:element name="disposition" type="ffprobe:streamDispositionType" minOccurs="0" maxOccurs="1"/>
+        <xsd:element name="tag" type="ffprobe:tagType" minOccurs="0" maxOccurs="unbounded"/>
+      </xsd:sequence>
+
+      <xsd:attribute name="index"            type="xsd:int" use="required"/>
+      <xsd:attribute name="codec_name"       type="xsd:string" />
+      <xsd:attribute name="codec_long_name"  type="xsd:string" />
+      <xsd:attribute name="profile"          type="xsd:string" />
+      <xsd:attribute name="codec_type"       type="xsd:string" />
+      <xsd:attribute name="codec_time_base"  type="xsd:string" use="required"/>
+      <xsd:attribute name="codec_tag"        type="xsd:string" use="required"/>
+      <xsd:attribute name="codec_tag_string" type="xsd:string" use="required"/>
+      <xsd:attribute name="extradata"        type="xsd:string" />
+
+      <!-- video attributes -->
+      <xsd:attribute name="width"                type="xsd:int"/>
+      <xsd:attribute name="height"               type="xsd:int"/>
+      <xsd:attribute name="has_b_frames"         type="xsd:int"/>
+      <xsd:attribute name="sample_aspect_ratio"  type="xsd:string"/>
+      <xsd:attribute name="display_aspect_ratio" type="xsd:string"/>
+      <xsd:attribute name="pix_fmt"              type="xsd:string"/>
+      <xsd:attribute name="level"                type="xsd:int"/>
+      <xsd:attribute name="timecode"             type="xsd:string"/>
+
+      <!-- audio attributes -->
+      <xsd:attribute name="sample_fmt"       type="xsd:string"/>
+      <xsd:attribute name="sample_rate"      type="xsd:int"/>
+      <xsd:attribute name="channels"         type="xsd:int"/>
+      <xsd:attribute name="channel_layout"   type="xsd:string"/>
+      <xsd:attribute name="bits_per_sample"  type="xsd:int"/>
+
+      <xsd:attribute name="id"               type="xsd:string"/>
+      <xsd:attribute name="r_frame_rate"     type="xsd:string" use="required"/>
+      <xsd:attribute name="avg_frame_rate"   type="xsd:string" use="required"/>
+      <xsd:attribute name="time_base"        type="xsd:string" use="required"/>
+      <xsd:attribute name="start_pts"        type="xsd:long"/>
+      <xsd:attribute name="start_time"       type="xsd:float"/>
+      <xsd:attribute name="duration_ts"      type="xsd:long"/>
+      <xsd:attribute name="duration"         type="xsd:float"/>
+      <xsd:attribute name="bit_rate"         type="xsd:int"/>
+      <xsd:attribute name="nb_frames"        type="xsd:int"/>
+      <xsd:attribute name="nb_read_frames"   type="xsd:int"/>
+      <xsd:attribute name="nb_read_packets"  type="xsd:int"/>
+    </xsd:complexType>
+
+    <xsd:complexType name="programType">
+      <xsd:sequence>
+        <xsd:element name="tag" type="ffprobe:tagType" minOccurs="0" maxOccurs="unbounded"/>
+        <xsd:element name="streams" type="ffprobe:streamsType" minOccurs="0" maxOccurs="1"/>
+      </xsd:sequence>
+
+      <xsd:attribute name="program_id"           type="xsd:int"    use="required"/>
+      <xsd:attribute name="program_num"          type="xsd:int"    use="required"/>
+      <xsd:attribute name="nb_streams"           type="xsd:int"    use="required"/>
+      <xsd:attribute name="start_time"           type="xsd:float"/>
+      <xsd:attribute name="start_pts"            type="xsd:long"/>
+      <xsd:attribute name="end_time"             type="xsd:float"/>
+      <xsd:attribute name="end_pts"              type="xsd:long"/>
+      <xsd:attribute name="pmt_pid"              type="xsd:int"    use="required"/>
+      <xsd:attribute name="pcr_pid"              type="xsd:int"    use="required"/>
+    </xsd:complexType>
+
+    <xsd:complexType name="formatType">
+      <xsd:sequence>
+        <xsd:element name="tag" type="ffprobe:tagType" minOccurs="0" maxOccurs="unbounded"/>
+      </xsd:sequence>
+
+      <xsd:attribute name="filename"         type="xsd:string" use="required"/>
+      <xsd:attribute name="nb_streams"       type="xsd:int"    use="required"/>
+      <xsd:attribute name="nb_programs"      type="xsd:int"    use="required"/>
+      <xsd:attribute name="format_name"      type="xsd:string" use="required"/>
+      <xsd:attribute name="format_long_name" type="xsd:string"/>
+      <xsd:attribute name="start_time"       type="xsd:float"/>
+      <xsd:attribute name="duration"         type="xsd:float"/>
+      <xsd:attribute name="size"             type="xsd:long"/>
+      <xsd:attribute name="bit_rate"         type="xsd:long"/>
+      <xsd:attribute name="probe_score"      type="xsd:int"/>
+    </xsd:complexType>
+
+    <xsd:complexType name="tagType">
+      <xsd:attribute name="key"   type="xsd:string" use="required"/>
+      <xsd:attribute name="value" type="xsd:string" use="required"/>
+    </xsd:complexType>
+
+    <xsd:complexType name="errorType">
+      <xsd:attribute name="code"   type="xsd:int"    use="required"/>
+      <xsd:attribute name="string" type="xsd:string" use="required"/>
+    </xsd:complexType>
+
+    <xsd:complexType name="programVersionType">
+      <xsd:attribute name="version"          type="xsd:string" use="required"/>
+      <xsd:attribute name="copyright"        type="xsd:string" use="required"/>
+      <xsd:attribute name="build_date"       type="xsd:string" use="required"/>
+      <xsd:attribute name="build_time"       type="xsd:string" use="required"/>
+      <xsd:attribute name="compiler_type"    type="xsd:string" use="required"/>
+      <xsd:attribute name="compiler_version" type="xsd:string" use="required"/>
+      <xsd:attribute name="configuration"    type="xsd:string" use="required"/>
+    </xsd:complexType>
+
+    <xsd:complexType name="chaptersType">
+      <xsd:sequence>
+        <xsd:element name="chapter" type="ffprobe:chapterType" minOccurs="0" maxOccurs="unbounded"/>
+      </xsd:sequence>
+    </xsd:complexType>
+
+    <xsd:complexType name="chapterType">
+      <xsd:sequence>
+        <xsd:element name="tag" type="ffprobe:tagType" minOccurs="0" maxOccurs="unbounded"/>
+      </xsd:sequence>
+
+      <xsd:attribute name="id"         type="xsd:int" use="required"/>
+      <xsd:attribute name="time_base"  type="xsd:string" use="required"/>
+      <xsd:attribute name="start"      type="xsd:int" use="required"/>
+      <xsd:attribute name="start_time" type="xsd:float"/>
+      <xsd:attribute name="end"        type="xsd:int" use="required"/>
+      <xsd:attribute name="end_time"   type="xsd:float" use="required"/>
+    </xsd:complexType>
+
+    <xsd:complexType name="libraryVersionType">
+      <xsd:attribute name="name"        type="xsd:string" use="required"/>
+      <xsd:attribute name="major"       type="xsd:int"    use="required"/>
+      <xsd:attribute name="minor"       type="xsd:int"    use="required"/>
+      <xsd:attribute name="micro"       type="xsd:int"    use="required"/>
+      <xsd:attribute name="version"     type="xsd:int"    use="required"/>
+      <xsd:attribute name="ident"       type="xsd:string" use="required"/>
+    </xsd:complexType>
+
+    <xsd:complexType name="libraryVersionsType">
+        <xsd:sequence>
+          <xsd:element name="library_version" type="ffprobe:libraryVersionType" minOccurs="0" maxOccurs="unbounded"/>
+        </xsd:sequence>
+    </xsd:complexType>
+</xsd:schema>
diff --git a/dependencies/ffmpeg/presets/libvpx-1080p.ffpreset b/dependencies/ffmpeg/presets/libvpx-1080p.ffpreset
new file mode 100644 (file)
index 0000000..cf25932
--- /dev/null
@@ -0,0 +1,19 @@
+vcodec=libvpx
+
+g=120
+lag-in-frames=16
+deadline=good
+cpu-used=0
+vprofile=1
+qmax=51
+qmin=11
+slices=4
+b=2M
+
+#ignored unless using -pass 2
+maxrate=24M
+minrate=100k
+auto-alt-ref=1
+arnr-maxframes=7
+arnr-strength=5
+arnr-type=centered
diff --git a/dependencies/ffmpeg/presets/libvpx-1080p50_60.ffpreset b/dependencies/ffmpeg/presets/libvpx-1080p50_60.ffpreset
new file mode 100644 (file)
index 0000000..4a88040
--- /dev/null
@@ -0,0 +1,19 @@
+vcodec=libvpx
+
+g=120
+lag-in-frames=25
+deadline=good
+cpu-used=0
+vprofile=1
+qmax=51
+qmin=11
+slices=4
+b=2M
+
+#ignored unless using -pass 2
+maxrate=24M
+minrate=100k
+auto-alt-ref=1
+arnr-maxframes=7
+arnr-strength=5
+arnr-type=centered
diff --git a/dependencies/ffmpeg/presets/libvpx-360p.ffpreset b/dependencies/ffmpeg/presets/libvpx-360p.ffpreset
new file mode 100644 (file)
index 0000000..f9729ba
--- /dev/null
@@ -0,0 +1,18 @@
+vcodec=libvpx
+
+g=120
+lag-in-frames=16
+deadline=good
+cpu-used=0
+vprofile=0
+qmax=63
+qmin=0
+b=768k
+
+#ignored unless using -pass 2
+maxrate=1.5M
+minrate=40k
+auto-alt-ref=1
+arnr-maxframes=7
+arnr-strength=5
+arnr-type=centered
diff --git a/dependencies/ffmpeg/presets/libvpx-720p.ffpreset b/dependencies/ffmpeg/presets/libvpx-720p.ffpreset
new file mode 100644 (file)
index 0000000..e84cc15
--- /dev/null
@@ -0,0 +1,19 @@
+vcodec=libvpx
+
+g=120
+lag-in-frames=16
+deadline=good
+cpu-used=0
+vprofile=0
+qmax=51
+qmin=11
+slices=4
+b=2M
+
+#ignored unless using -pass 2
+maxrate=24M
+minrate=100k
+auto-alt-ref=1
+arnr-maxframes=7
+arnr-strength=5
+arnr-type=centered
diff --git a/dependencies/ffmpeg/presets/libvpx-720p50_60.ffpreset b/dependencies/ffmpeg/presets/libvpx-720p50_60.ffpreset
new file mode 100644 (file)
index 0000000..8fce2bf
--- /dev/null
@@ -0,0 +1,19 @@
+vcodec=libvpx
+
+g=120
+lag-in-frames=25
+deadline=good
+cpu-used=0
+vprofile=0
+qmax=51
+qmin=11
+slices=4
+b=2M
+
+#ignored unless using -pass 2
+maxrate=24M
+minrate=100k
+auto-alt-ref=1
+arnr-maxframes=7
+arnr-strength=5
+arnr-type=centered
diff --git a/dependencies/ffmpeg/presets/libx264-ipod320.ffpreset b/dependencies/ffmpeg/presets/libx264-ipod320.ffpreset
new file mode 100644 (file)
index 0000000..76722bd
--- /dev/null
@@ -0,0 +1,6 @@
+vcodec=libx264
+
+vprofile=baseline
+level=13
+maxrate=768000
+bufsize=3000000
diff --git a/dependencies/ffmpeg/presets/libx264-ipod640.ffpreset b/dependencies/ffmpeg/presets/libx264-ipod640.ffpreset
new file mode 100644 (file)
index 0000000..51f7564
--- /dev/null
@@ -0,0 +1,6 @@
+vcodec=libx264
+
+vprofile=baseline
+level=30
+maxrate=10000000
+bufsize=10000000