]> git.sesse.net Git - casparcg/commitdiff
Updated to ffmpeg version 2.2.3
authorHelge Norberg <helge.norberg@svt.se>
Tue, 21 Oct 2014 12:22:10 +0000 (14:22 +0200)
committerHelge Norberg <helge.norberg@svt.se>
Tue, 21 Oct 2014 12:22:10 +0000 (14:22 +0200)
176 files changed:
dependencies64/ffmpeg/README.txt [new file with mode: 0644]
dependencies64/ffmpeg/bin/avcodec-55.dll
dependencies64/ffmpeg/bin/avdevice-55.dll
dependencies64/ffmpeg/bin/avfilter-3.dll [deleted file]
dependencies64/ffmpeg/bin/avfilter-4.dll [new file with mode: 0644]
dependencies64/ffmpeg/bin/avformat-55.dll
dependencies64/ffmpeg/bin/avutil-52.dll
dependencies64/ffmpeg/bin/ffmpeg.exe [new file with mode: 0644]
dependencies64/ffmpeg/bin/ffplay.exe [new file with mode: 0644]
dependencies64/ffmpeg/bin/ffprobe.exe [new file with mode: 0644]
dependencies64/ffmpeg/bin/postproc-52.dll
dependencies64/ffmpeg/bin/swresample-0.dll
dependencies64/ffmpeg/bin/swscale-2.dll
dependencies64/ffmpeg/doc/developer.html [new file with mode: 0644]
dependencies64/ffmpeg/doc/examples/Makefile [new file with mode: 0644]
dependencies64/ffmpeg/doc/examples/README [new file with mode: 0644]
dependencies64/ffmpeg/doc/examples/avcodec.c [new file with mode: 0644]
dependencies64/ffmpeg/doc/examples/avio_reading.c [new file with mode: 0644]
dependencies64/ffmpeg/doc/examples/demuxing_decoding.c [new file with mode: 0644]
dependencies64/ffmpeg/doc/examples/filter_audio.c [new file with mode: 0644]
dependencies64/ffmpeg/doc/examples/filtering_audio.c [new file with mode: 0644]
dependencies64/ffmpeg/doc/examples/filtering_video.c [new file with mode: 0644]
dependencies64/ffmpeg/doc/examples/metadata.c [new file with mode: 0644]
dependencies64/ffmpeg/doc/examples/muxing.c [new file with mode: 0644]
dependencies64/ffmpeg/doc/examples/remuxing.c [new file with mode: 0644]
dependencies64/ffmpeg/doc/examples/resampling_audio.c [new file with mode: 0644]
dependencies64/ffmpeg/doc/examples/scaling_video.c [new file with mode: 0644]
dependencies64/ffmpeg/doc/examples/transcode_aac.c [new file with mode: 0644]
dependencies64/ffmpeg/doc/faq.html [new file with mode: 0644]
dependencies64/ffmpeg/doc/fate.html [new file with mode: 0644]
dependencies64/ffmpeg/doc/ffmpeg-all.html [new file with mode: 0644]
dependencies64/ffmpeg/doc/ffmpeg-bitstream-filters.html [new file with mode: 0644]
dependencies64/ffmpeg/doc/ffmpeg-codecs.html [new file with mode: 0644]
dependencies64/ffmpeg/doc/ffmpeg-devices.html [new file with mode: 0644]
dependencies64/ffmpeg/doc/ffmpeg-filters.html [new file with mode: 0644]
dependencies64/ffmpeg/doc/ffmpeg-formats.html [new file with mode: 0644]
dependencies64/ffmpeg/doc/ffmpeg-protocols.html [new file with mode: 0644]
dependencies64/ffmpeg/doc/ffmpeg-resampler.html [new file with mode: 0644]
dependencies64/ffmpeg/doc/ffmpeg-scaler.html [new file with mode: 0644]
dependencies64/ffmpeg/doc/ffmpeg-utils.html [new file with mode: 0644]
dependencies64/ffmpeg/doc/ffmpeg.html [new file with mode: 0644]
dependencies64/ffmpeg/doc/ffplay-all.html [new file with mode: 0644]
dependencies64/ffmpeg/doc/ffplay.html [new file with mode: 0644]
dependencies64/ffmpeg/doc/ffprobe-all.html [new file with mode: 0644]
dependencies64/ffmpeg/doc/ffprobe.html [new file with mode: 0644]
dependencies64/ffmpeg/doc/general.html [new file with mode: 0644]
dependencies64/ffmpeg/doc/git-howto.html [new file with mode: 0644]
dependencies64/ffmpeg/doc/libavcodec.html [new file with mode: 0644]
dependencies64/ffmpeg/doc/libavdevice.html [new file with mode: 0644]
dependencies64/ffmpeg/doc/libavfilter.html [new file with mode: 0644]
dependencies64/ffmpeg/doc/libavformat.html [new file with mode: 0644]
dependencies64/ffmpeg/doc/libavutil.html [new file with mode: 0644]
dependencies64/ffmpeg/doc/libswresample.html [new file with mode: 0644]
dependencies64/ffmpeg/doc/libswscale.html [new file with mode: 0644]
dependencies64/ffmpeg/doc/nut.html [new file with mode: 0644]
dependencies64/ffmpeg/doc/platform.html [new file with mode: 0644]
dependencies64/ffmpeg/include/libavcodec/avcodec.h
dependencies64/ffmpeg/include/libavcodec/avfft.h
dependencies64/ffmpeg/include/libavcodec/old_codec_ids.h
dependencies64/ffmpeg/include/libavcodec/vda.h
dependencies64/ffmpeg/include/libavcodec/vdpau.h
dependencies64/ffmpeg/include/libavcodec/version.h
dependencies64/ffmpeg/include/libavcodec/xvmc.h
dependencies64/ffmpeg/include/libavdevice/avdevice.h
dependencies64/ffmpeg/include/libavdevice/version.h
dependencies64/ffmpeg/include/libavfilter/avcodec.h
dependencies64/ffmpeg/include/libavfilter/avfilter.h
dependencies64/ffmpeg/include/libavfilter/buffersink.h
dependencies64/ffmpeg/include/libavfilter/buffersrc.h
dependencies64/ffmpeg/include/libavfilter/version.h
dependencies64/ffmpeg/include/libavformat/avformat.h
dependencies64/ffmpeg/include/libavformat/avio.h
dependencies64/ffmpeg/include/libavformat/version.h
dependencies64/ffmpeg/include/libavutil/adler32.h
dependencies64/ffmpeg/include/libavutil/attributes.h
dependencies64/ffmpeg/include/libavutil/audio_fifo.h
dependencies64/ffmpeg/include/libavutil/avstring.h
dependencies64/ffmpeg/include/libavutil/avutil.h
dependencies64/ffmpeg/include/libavutil/bprint.h
dependencies64/ffmpeg/include/libavutil/bswap.h
dependencies64/ffmpeg/include/libavutil/channel_layout.h
dependencies64/ffmpeg/include/libavutil/common.h
dependencies64/ffmpeg/include/libavutil/cpu.h
dependencies64/ffmpeg/include/libavutil/dict.h
dependencies64/ffmpeg/include/libavutil/downmix_info.h [new file with mode: 0644]
dependencies64/ffmpeg/include/libavutil/eval.h
dependencies64/ffmpeg/include/libavutil/ffversion.h [new file with mode: 0644]
dependencies64/ffmpeg/include/libavutil/frame.h
dependencies64/ffmpeg/include/libavutil/intfloat.h
dependencies64/ffmpeg/include/libavutil/intfloat_readwrite.h
dependencies64/ffmpeg/include/libavutil/log.h
dependencies64/ffmpeg/include/libavutil/macros.h [new file with mode: 0644]
dependencies64/ffmpeg/include/libavutil/mathematics.h
dependencies64/ffmpeg/include/libavutil/mem.h
dependencies64/ffmpeg/include/libavutil/old_pix_fmts.h
dependencies64/ffmpeg/include/libavutil/opt.h
dependencies64/ffmpeg/include/libavutil/parseutils.h
dependencies64/ffmpeg/include/libavutil/pixdesc.h
dependencies64/ffmpeg/include/libavutil/pixfmt.h
dependencies64/ffmpeg/include/libavutil/rational.h
dependencies64/ffmpeg/include/libavutil/stereo3d.h [new file with mode: 0644]
dependencies64/ffmpeg/include/libavutil/timestamp.h
dependencies64/ffmpeg/include/libavutil/version.h
dependencies64/ffmpeg/include/libavutil/xtea.h
dependencies64/ffmpeg/include/libswresample/swresample.h
dependencies64/ffmpeg/include/libswresample/version.h
dependencies64/ffmpeg/include/libswscale/swscale.h
dependencies64/ffmpeg/include/libswscale/version.h
dependencies64/ffmpeg/lib/avcodec-55.def [new file with mode: 0644]
dependencies64/ffmpeg/lib/avcodec.lib
dependencies64/ffmpeg/lib/avdevice-55.def [new file with mode: 0644]
dependencies64/ffmpeg/lib/avdevice.lib
dependencies64/ffmpeg/lib/avfilter-4.def [new file with mode: 0644]
dependencies64/ffmpeg/lib/avfilter.lib
dependencies64/ffmpeg/lib/avformat-55.def [new file with mode: 0644]
dependencies64/ffmpeg/lib/avformat.lib
dependencies64/ffmpeg/lib/avutil-52.def [new file with mode: 0644]
dependencies64/ffmpeg/lib/avutil.lib
dependencies64/ffmpeg/lib/libavcodec.dll.a [new file with mode: 0644]
dependencies64/ffmpeg/lib/libavdevice.dll.a [new file with mode: 0644]
dependencies64/ffmpeg/lib/libavfilter.dll.a [new file with mode: 0644]
dependencies64/ffmpeg/lib/libavformat.dll.a [new file with mode: 0644]
dependencies64/ffmpeg/lib/libavutil.dll.a [new file with mode: 0644]
dependencies64/ffmpeg/lib/libpostproc.dll.a [new file with mode: 0644]
dependencies64/ffmpeg/lib/libswresample.dll.a [new file with mode: 0644]
dependencies64/ffmpeg/lib/libswscale.dll.a [new file with mode: 0644]
dependencies64/ffmpeg/lib/postproc-52.def [new file with mode: 0644]
dependencies64/ffmpeg/lib/postproc.lib
dependencies64/ffmpeg/lib/swresample-0.def [new file with mode: 0644]
dependencies64/ffmpeg/lib/swresample.lib
dependencies64/ffmpeg/lib/swscale-2.def [new file with mode: 0644]
dependencies64/ffmpeg/lib/swscale.lib
dependencies64/ffmpeg/licenses/bzip2.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/fontconfig.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/freetype.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/frei0r.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/gme.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/gnutls.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/lame.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/libass.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/libbluray.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/libcaca.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/libgsm.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/libiconv.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/libilbc.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/libmodplug.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/libtheora.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/libvorbis.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/libvpx.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/libwebp.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/opencore-amr.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/openjpeg.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/opus.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/rtmpdump.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/schroedinger.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/soxr.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/speex.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/twolame.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/vid.stab.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/vo-aacenc.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/vo-amrwbenc.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/wavpack.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/x264.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/x265.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/xavs.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/xvid.txt [new file with mode: 0644]
dependencies64/ffmpeg/licenses/zlib.txt [new file with mode: 0644]
dependencies64/ffmpeg/presets/ffprobe.xsd [new file with mode: 0644]
dependencies64/ffmpeg/presets/libvpx-1080p.ffpreset [new file with mode: 0644]
dependencies64/ffmpeg/presets/libvpx-1080p50_60.ffpreset [new file with mode: 0644]
dependencies64/ffmpeg/presets/libvpx-360p.ffpreset [new file with mode: 0644]
dependencies64/ffmpeg/presets/libvpx-720p.ffpreset [new file with mode: 0644]
dependencies64/ffmpeg/presets/libvpx-720p50_60.ffpreset [new file with mode: 0644]
dependencies64/ffmpeg/presets/libx264-ipod320.ffpreset [new file with mode: 0644]
dependencies64/ffmpeg/presets/libx264-ipod640.ffpreset [new file with mode: 0644]
shell/shell.vcxproj

diff --git a/dependencies64/ffmpeg/README.txt b/dependencies64/ffmpeg/README.txt
new file mode 100644 (file)
index 0000000..2e12829
--- /dev/null
@@ -0,0 +1,107 @@
+This is a FFmpeg Win64 shared build by Kyle Schwarz.
+
+Zeranoe's FFmpeg Builds Home Page: <http://ffmpeg.zeranoe.com/builds/>
+
+This build was compiled on: Jun 19 2014, at: 20:36:23
+
+FFmpeg version: 2.2.3
+  libavutil      52. 66.100 / 52. 66.100
+  libavcodec     55. 52.102 / 55. 52.102
+  libavformat    55. 33.100 / 55. 33.100
+  libavdevice    55. 10.100 / 55. 10.100
+  libavfilter     4.  2.100 /  4.  2.100
+  libswscale      2.  5.102 /  2.  5.102
+  libswresample   0. 18.100 /  0. 18.100
+  libpostproc    52.  3.100 / 52.  3.100
+
+This FFmpeg build was configured with:
+  --disable-static
+  --enable-shared
+  --enable-gpl
+  --enable-version3
+  --disable-w32threads
+  --enable-avisynth
+  --enable-bzlib
+  --enable-fontconfig
+  --enable-frei0r
+  --enable-gnutls
+  --enable-iconv
+  --enable-libass
+  --enable-libbluray
+  --enable-libcaca
+  --enable-libfreetype
+  --enable-libgme
+  --enable-libgsm
+  --enable-libilbc
+  --enable-libmodplug
+  --enable-libmp3lame
+  --enable-libopencore-amrnb
+  --enable-libopencore-amrwb
+  --enable-libopenjpeg
+  --enable-libopus
+  --enable-librtmp
+  --enable-libschroedinger
+  --enable-libsoxr
+  --enable-libspeex
+  --enable-libtheora
+  --enable-libtwolame
+  --enable-libvidstab
+  --enable-libvo-aacenc
+  --enable-libvo-amrwbenc
+  --enable-libvorbis
+  --enable-libvpx
+  --enable-libwavpack
+  --enable-libwebp
+  --enable-libx264
+  --enable-libx265
+  --enable-libxavs
+  --enable-libxvid
+  --enable-decklink
+  --enable-zlib
+
+This build was compiled with the following external libraries:
+  bzip2 1.0.6 <http://bzip.org/>
+  Fontconfig 2.11.1 <http://freedesktop.org/wiki/Software/fontconfig>
+  Frei0r 20130909-git-10d8360 <http://frei0r.dyne.org/>
+  GnuTLS 3.2.15 <http://gnutls.org/>
+  libiconv 1.14 <http://gnu.org/software/libiconv/>
+  libass 0.10.2 <http://code.google.com/p/libass/>
+  libbluray 0.6.0 <http://videolan.org/developers/libbluray.html>
+  libcaca 0.99.beta18 <http://caca.zoy.org/wiki/libcaca>
+  FreeType 2.5.3 <http://freetype.sourceforge.net/>
+  Game Music Emu 0.6.0 <http://code.google.com/p/game-music-emu/>
+  GSM 1.0.13-4 <http://packages.debian.org/source/squeeze/libgsm>
+  iLBC 20120913-git-b5f9b10 <https://github.com/dekkers/libilbc/>
+  Modplug-XMMS 0.8.8.4 <http://modplug-xmms.sourceforge.net/>
+  LAME 3.99.5 <http://lame.sourceforge.net/>
+  OpenCORE AMR 0.1.3 <http://sourceforge.net/projects/opencore-amr/>
+  OpenJPEG 1.5.1 <http://www.openjpeg.org/>
+  Opus 1.1 <http://opus-codec.org/>
+  RTMPDump 20140302-git-79459a2 <http://rtmpdump.mplayerhq.hu/>
+  Schroedinger 1.0.11 <http://diracvideo.org/>
+  libsoxr 0.1.1 <http://sourceforge.net/projects/soxr/>
+  Speex 1.2rc1 <http://speex.org/>
+  Theora 1.1.1 <http://theora.org/>
+  TwoLAME 0.3.13 <http://twolame.org/>
+  vid.stab 0.98 <http://public.hronopik.de/vid.stab/>
+  VisualOn AAC 0.1.3 <https://github.com/mstorsjo/vo-aacenc>
+  VisualOn AMR-WB 0.1.2 <https://github.com/mstorsjo/vo-amrwbenc>
+  Vorbis 1.3.4 <http://vorbis.com/>
+  vpx 1.3.0 <http://webmproject.org/>
+  WavPack 4.70.0 <http://wavpack.com/>
+  WebP 0.4.0 <https://developers.google.com/speed/webp/>
+  x264 20140422-git-ac76440 <http://videolan.org/developers/x264.html>
+  x265 1.1 <http://x265.org/>
+  XAVS svn-r55 <http://xavs.sourceforge.net/>
+  Xvid 1.3.3 <http://xvid.org/>
+  zlib 1.2.8 <http://zlib.net/>
+
+The source code for this FFmpeg build can be found at: <http://ffmpeg.zeranoe.com/builds/source/>
+
+This build was compiled on Debian jessie/sid (64-bit): <http://www.debian.org/>
+
+GCC 4.8.3 was used to compile this FFmpeg build: <http://gcc.gnu.org/>
+
+This build was compiled using the MinGW-w64 toolchain: <http://mingw-w64.sourceforge.net/>
+
+Licenses for each library can be found in the 'licenses' folder.
index 256dd898bd6cfefba003c75073a047742c366fb6..4525685b1f5576af19340c36c374e3b260dd16c7 100644 (file)
Binary files a/dependencies64/ffmpeg/bin/avcodec-55.dll and b/dependencies64/ffmpeg/bin/avcodec-55.dll differ
index 6067d113a61766b2cc7f02aea881d63beef99051..a67faa6874552d5de961afc72da8e1d1706b9857 100644 (file)
Binary files a/dependencies64/ffmpeg/bin/avdevice-55.dll and b/dependencies64/ffmpeg/bin/avdevice-55.dll differ
diff --git a/dependencies64/ffmpeg/bin/avfilter-3.dll b/dependencies64/ffmpeg/bin/avfilter-3.dll
deleted file mode 100644 (file)
index 0f5d8a4..0000000
Binary files a/dependencies64/ffmpeg/bin/avfilter-3.dll and /dev/null differ
diff --git a/dependencies64/ffmpeg/bin/avfilter-4.dll b/dependencies64/ffmpeg/bin/avfilter-4.dll
new file mode 100644 (file)
index 0000000..384f126
Binary files /dev/null and b/dependencies64/ffmpeg/bin/avfilter-4.dll differ
index bb8bac6cb46ba7176fec9dc6292c8298e8bc1bdf..8585917fd678fae278afd1b0a5b247ffebafa1a2 100644 (file)
Binary files a/dependencies64/ffmpeg/bin/avformat-55.dll and b/dependencies64/ffmpeg/bin/avformat-55.dll differ
index 961e1437f9d29d8b86bf94d6b76302ed7b90835b..5bd6f5ca982438d1e9ce6317ed791fdb5b53b236 100644 (file)
Binary files a/dependencies64/ffmpeg/bin/avutil-52.dll and b/dependencies64/ffmpeg/bin/avutil-52.dll differ
diff --git a/dependencies64/ffmpeg/bin/ffmpeg.exe b/dependencies64/ffmpeg/bin/ffmpeg.exe
new file mode 100644 (file)
index 0000000..19cac2a
Binary files /dev/null and b/dependencies64/ffmpeg/bin/ffmpeg.exe differ
diff --git a/dependencies64/ffmpeg/bin/ffplay.exe b/dependencies64/ffmpeg/bin/ffplay.exe
new file mode 100644 (file)
index 0000000..1663a26
Binary files /dev/null and b/dependencies64/ffmpeg/bin/ffplay.exe differ
diff --git a/dependencies64/ffmpeg/bin/ffprobe.exe b/dependencies64/ffmpeg/bin/ffprobe.exe
new file mode 100644 (file)
index 0000000..97a418e
Binary files /dev/null and b/dependencies64/ffmpeg/bin/ffprobe.exe differ
index e3885ce26871eea62952a8ad70285dd64443c1c9..c6b889fcaaac6db9363ec540aba7c17ad4c99568 100644 (file)
Binary files a/dependencies64/ffmpeg/bin/postproc-52.dll and b/dependencies64/ffmpeg/bin/postproc-52.dll differ
index efc021080da9f5066b1db7b6c6ec2800aa6c632b..9aaa85039853e915c43681ca8c93b73b11aebb36 100644 (file)
Binary files a/dependencies64/ffmpeg/bin/swresample-0.dll and b/dependencies64/ffmpeg/bin/swresample-0.dll differ
index 62823440a278eb9439d8fda36c22d21965bc16f6..d70864f54947910418f7b6b5ed40345db5a2e103 100644 (file)
Binary files a/dependencies64/ffmpeg/bin/swscale-2.dll and b/dependencies64/ffmpeg/bin/swscale-2.dll differ
diff --git a/dependencies64/ffmpeg/doc/developer.html b/dependencies64/ffmpeg/doc/developer.html
new file mode 100644 (file)
index 0000000..494cdb9
--- /dev/null
@@ -0,0 +1,877 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on June 19, 2014 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 : Developer </title>
+
+<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">
+<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">Developer Documentation</h1>
+
+<a name="SEC_Contents"></a>
+<h1>Table of Contents</h1>
+<div class="contents">
+
+<ul class="toc">
+  <li><a name="toc-Developers-Guide" href="#Developers-Guide">1. Developers Guide</a>
+  <ul class="toc">
+    <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>
+
+<a name="Developers-Guide"></a>
+<h1 class="chapter"><a href="developer.html#toc-Developers-Guide">1. Developers Guide</a></h1>
+
+<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>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 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.2 Contributing</a></h2>
+
+<p>There are 3 ways by which code gets into ffmpeg.
+</p><ul>
+<li> Submitting Patches to the main developer mailing list
+      see <a href="#Submitting-patches">Submitting patches</a> for details.
+</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 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.3 Coding Rules</a></h2>
+
+<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>There are the following guidelines regarding the indentation in files:
+</p>
+<ul>
+<li>
+Indent size is 4.
+
+</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>
+<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>
+<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 ...
+ */
+
+/**
+ * Summary sentence.
+ * more text ...
+ * ...
+ */
+typedef struct Foobar {
+    int var1; /**&lt; var1 description */
+    int var2; ///&lt; var2 description
+    /** var3 description */
+    int var3;
+} Foobar;
+
+/**
+ * Summary sentence.
+ * more text ...
+ * ...
+ * @param my_parameter description of my_parameter
+ * @return return value description
+ */
+int myfunc(int my_parameter)
+...
+</pre></td></tr></table>
+
+<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>
+<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.4 Development Policy</a></h2>
+
+<ol>
+<li>
+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://opensource.org/licenses/isc-license.txt">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><a name="Submitting-patches"></a>
+</p><a name="Submitting-patches-1"></a>
+<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.
+</p>
+<p>When you submit your patch, please use <code>git format-patch</code> or
+<code>git send-email</code>. We cannot read other diffs :-)
+</p>
+<p>Also please do not submit a patch which contains several unrelated changes.
+Split it into separate, self-contained pieces. This does not mean splitting
+file by file. Instead, make the patch as small as possible while still
+keeping it as a logical unit that contains an individual change, even
+if it spans multiple files. This makes reviewing your patches much easier
+for us and greatly increases your chances of getting your patch applied.
+</p>
+<p>Use the patcheck tool of FFmpeg to check your patch.
+The tool is located in the tools directory.
+</p>
+<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>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;)
+</p>
+<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
+several iterations. Once your patch is deemed good enough, some developer
+will pick it up and commit it to the official FFmpeg tree.
+</p>
+<p>Give us a few days to react. But if some time passes without reaction,
+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.6 New codecs or formats checklist</a></h2>
+
+<ol>
+<li>
+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?
+
+</li><li>
+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;?
+
+</li><li>
+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?
+
+</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.
+
+</li><li>
+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?
+
+</li><li>
+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?
+
+</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)?
+</li></ol>
+
+
+<a name="patch-submission-checklist"></a>
+<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?
+
+</li><li>
+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://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?
+
+</li><li>
+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)
+
+</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?
+
+</li><li>
+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?
+
+</li><li>
+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, 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?
+
+</li><li>
+Did you add tabs or trailing whitespace to the code? Both are forbidden.
+
+</li><li>
+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.
+
+</li><li>
+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
+
+</li><li>
+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?
+
+</li><li>
+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?
+
+</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.
+
+</li><li>
+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.
+
+</li><li>
+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>
+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.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.
+Reviews and comments will be posted as replies to the patch on the
+mailing list. The patch submitter then has to take care of every comment,
+that can be by resubmitting a changed patch or by discussion. Resubmitted
+patches will themselves be reviewed like any other patch. If at some point
+a patch passes review with no comments then it is approved, that can for
+simple and small patches happen immediately while large patches will generally
+have to be changed and reviewed many times before they are approved.
+After a patch is approved it will be committed to the repository.
+</p>
+<p>We will review all submitted patches, but sometimes we are quite busy so
+especially for large patches this can take several weeks.
+</p>
+<p>If you feel that the review process is too slow and you are willing to try to
+take over maintainership of the area of code you change then just clone
+git master and maintain the area of code there. We will merge each area from
+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
+separate patches.
+</p>
+<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 <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>
+<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>
+<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>June 19, 2014</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies64/ffmpeg/doc/examples/Makefile b/dependencies64/ffmpeg/doc/examples/Makefile
new file mode 100644 (file)
index 0000000..1553bab
--- /dev/null
@@ -0,0 +1,41 @@
+# 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=       avio_reading                       \
+                avcodec                            \
+                demuxing_decoding                  \
+                filtering_video                    \
+                filtering_audio                    \
+                metadata                           \
+                muxing                             \
+                remuxing                           \
+                resampling_audio                   \
+                scaling_video                      \
+                transcode_aac                      \
+
+OBJS=$(addsuffix .o,$(EXAMPLES))
+
+# the following examples make explicit use of the math library
+avcodec:           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/dependencies64/ffmpeg/doc/examples/README b/dependencies64/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/dependencies64/ffmpeg/doc/examples/avcodec.c b/dependencies64/ffmpeg/doc/examples/avcodec.c
new file mode 100644 (file)
index 0000000..d56e6a4
--- /dev/null
@@ -0,0 +1,658 @@
+/*
+ * 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.
+ *
+ * @example avcodec.c
+ * 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
+ */
+
+#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 < 0) {
+        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);
+            if (data_size < 0) {
+                /* This should not occur, checking just for paranoia */
+                fprintf(stderr, "Failed to calculate data size\n");
+                exit(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/dependencies64/ffmpeg/doc/examples/avio_reading.c b/dependencies64/ffmpeg/doc/examples/avio_reading.c
new file mode 100644 (file)
index 0000000..02474e9
--- /dev/null
@@ -0,0 +1,134 @@
+/*
+ * Copyright (c) 2014 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
+ * libavformat AVIOContext API example.
+ *
+ * Make libavformat demuxer access media content through a custom
+ * AVIOContext read callback.
+ * @example avio_reading.c
+ */
+
+#include <libavcodec/avcodec.h>
+#include <libavformat/avformat.h>
+#include <libavformat/avio.h>
+#include <libavutil/file.h>
+
+struct buffer_data {
+    uint8_t *ptr;
+    size_t size; ///< size left in the buffer
+};
+
+static int read_packet(void *opaque, uint8_t *buf, int buf_size)
+{
+    struct buffer_data *bd = (struct buffer_data *)opaque;
+    buf_size = FFMIN(buf_size, bd->size);
+
+    printf("ptr:%p size:%zu\n", bd->ptr, bd->size);
+
+    /* copy internal buffer data to buf */
+    memcpy(buf, bd->ptr, buf_size);
+    bd->ptr  += buf_size;
+    bd->size -= buf_size;
+
+    return buf_size;
+}
+
+int main(int argc, char *argv[])
+{
+    AVFormatContext *fmt_ctx = NULL;
+    AVIOContext *avio_ctx = NULL;
+    uint8_t *buffer = NULL, *avio_ctx_buffer = NULL;
+    size_t buffer_size, avio_ctx_buffer_size = 4096;
+    char *input_filename = NULL;
+    int ret = 0;
+    struct buffer_data bd = { 0 };
+
+    if (argc != 2) {
+        fprintf(stderr, "usage: %s input_file\n"
+                "API example program to show how to read from a custom buffer "
+                "accessed through AVIOContext.\n", argv[0]);
+        return 1;
+    }
+    input_filename = argv[1];
+
+    /* register codecs and formats and other lavf/lavc components*/
+    av_register_all();
+
+    /* slurp file content into buffer */
+    ret = av_file_map(input_filename, &buffer, &buffer_size, 0, NULL);
+    if (ret < 0)
+        goto end;
+
+    /* fill opaque structure used by the AVIOContext read callback */
+    bd.ptr  = buffer;
+    bd.size = buffer_size;
+
+    if (!(fmt_ctx = avformat_alloc_context())) {
+        ret = AVERROR(ENOMEM);
+        goto end;
+    }
+
+    avio_ctx_buffer = av_malloc(avio_ctx_buffer_size);
+    if (!avio_ctx_buffer) {
+        ret = AVERROR(ENOMEM);
+        goto end;
+    }
+    avio_ctx = avio_alloc_context(avio_ctx_buffer, avio_ctx_buffer_size,
+                                  0, &bd, &read_packet, NULL, NULL);
+    if (!avio_ctx) {
+        ret = AVERROR(ENOMEM);
+        goto end;
+    }
+    fmt_ctx->pb = avio_ctx;
+
+    ret = avformat_open_input(&fmt_ctx, NULL, NULL, NULL);
+    if (ret < 0) {
+        fprintf(stderr, "Could not open input\n");
+        goto end;
+    }
+
+    ret = avformat_find_stream_info(fmt_ctx, NULL);
+    if (ret < 0) {
+        fprintf(stderr, "Could not find stream information\n");
+        goto end;
+    }
+
+    av_dump_format(fmt_ctx, 0, input_filename, 0);
+
+end:
+    avformat_close_input(&fmt_ctx);
+    /* note: the internal buffer could have changed, and be != avio_ctx_buffer */
+    if (avio_ctx) {
+        av_freep(&avio_ctx->buffer);
+        av_freep(&avio_ctx);
+    }
+    av_file_unmap(buffer, buffer_size);
+
+    if (ret < 0) {
+        fprintf(stderr, "Error occurred: %s\n", av_err2str(ret));
+        return 1;
+    }
+
+    return 0;
+}
diff --git a/dependencies64/ffmpeg/doc/examples/demuxing_decoding.c b/dependencies64/ffmpeg/doc/examples/demuxing_decoding.c
new file mode 100644 (file)
index 0000000..077fc87
--- /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 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/dependencies64/ffmpeg/doc/examples/filter_audio.c b/dependencies64/ffmpeg/doc/examples/filter_audio.c
new file mode 100644 (file)
index 0000000..8451f9c
--- /dev/null
@@ -0,0 +1,364 @@
+/*
+ * copyright (c) 2013 Andrew Kelley
+ *
+ * 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
+ * libavfilter API usage example.
+ *
+ * @example filter_audio.c
+ * This example will generate a sine wave audio,
+ * pass it through a simple filter chain, and then compute the MD5 checksum of
+ * the output data.
+ *
+ * The filter chain it uses is:
+ * (input) -> abuffer -> volume -> aformat -> abuffersink -> (output)
+ *
+ * abuffer: This provides the endpoint where you can feed the decoded samples.
+ * volume: In this example we hardcode it to 0.90.
+ * aformat: This converts the samples to the samplefreq, channel layout,
+ *          and sample format required by the audio device.
+ * abuffersink: This provides the endpoint where you can read the samples after
+ *              they have passed through the filter chain.
+ */
+
+#include <inttypes.h>
+#include <math.h>
+#include <stdio.h>
+#include <stdlib.h>
+
+#include "libavutil/channel_layout.h"
+#include "libavutil/md5.h"
+#include "libavutil/opt.h"
+#include "libavutil/samplefmt.h"
+
+#include "libavfilter/avfilter.h"
+#include "libavfilter/buffersink.h"
+#include "libavfilter/buffersrc.h"
+
+#define INPUT_SAMPLERATE     48000
+#define INPUT_FORMAT         AV_SAMPLE_FMT_FLTP
+#define INPUT_CHANNEL_LAYOUT AV_CH_LAYOUT_5POINT0
+
+#define VOLUME_VAL 0.90
+
+static int init_filter_graph(AVFilterGraph **graph, AVFilterContext **src,
+                             AVFilterContext **sink)
+{
+    AVFilterGraph *filter_graph;
+    AVFilterContext *abuffer_ctx;
+    AVFilter        *abuffer;
+    AVFilterContext *volume_ctx;
+    AVFilter        *volume;
+    AVFilterContext *aformat_ctx;
+    AVFilter        *aformat;
+    AVFilterContext *abuffersink_ctx;
+    AVFilter        *abuffersink;
+
+    AVDictionary *options_dict = NULL;
+    uint8_t options_str[1024];
+    uint8_t ch_layout[64];
+
+    int err;
+
+    /* Create a new filtergraph, which will contain all the filters. */
+    filter_graph = avfilter_graph_alloc();
+    if (!filter_graph) {
+        fprintf(stderr, "Unable to create filter graph.\n");
+        return AVERROR(ENOMEM);
+    }
+
+    /* Create the abuffer filter;
+     * it will be used for feeding the data into the graph. */
+    abuffer = avfilter_get_by_name("abuffer");
+    if (!abuffer) {
+        fprintf(stderr, "Could not find the abuffer filter.\n");
+        return AVERROR_FILTER_NOT_FOUND;
+    }
+
+    abuffer_ctx = avfilter_graph_alloc_filter(filter_graph, abuffer, "src");
+    if (!abuffer_ctx) {
+        fprintf(stderr, "Could not allocate the abuffer instance.\n");
+        return AVERROR(ENOMEM);
+    }
+
+    /* Set the filter options through the AVOptions API. */
+    av_get_channel_layout_string(ch_layout, sizeof(ch_layout), 0, INPUT_CHANNEL_LAYOUT);
+    av_opt_set    (abuffer_ctx, "channel_layout", ch_layout,                            AV_OPT_SEARCH_CHILDREN);
+    av_opt_set    (abuffer_ctx, "sample_fmt",     av_get_sample_fmt_name(INPUT_FORMAT), AV_OPT_SEARCH_CHILDREN);
+    av_opt_set_q  (abuffer_ctx, "time_base",      (AVRational){ 1, INPUT_SAMPLERATE },  AV_OPT_SEARCH_CHILDREN);
+    av_opt_set_int(abuffer_ctx, "sample_rate",    INPUT_SAMPLERATE,                     AV_OPT_SEARCH_CHILDREN);
+
+    /* Now initialize the filter; we pass NULL options, since we have already
+     * set all the options above. */
+    err = avfilter_init_str(abuffer_ctx, NULL);
+    if (err < 0) {
+        fprintf(stderr, "Could not initialize the abuffer filter.\n");
+        return err;
+    }
+
+    /* Create volume filter. */
+    volume = avfilter_get_by_name("volume");
+    if (!volume) {
+        fprintf(stderr, "Could not find the volume filter.\n");
+        return AVERROR_FILTER_NOT_FOUND;
+    }
+
+    volume_ctx = avfilter_graph_alloc_filter(filter_graph, volume, "volume");
+    if (!volume_ctx) {
+        fprintf(stderr, "Could not allocate the volume instance.\n");
+        return AVERROR(ENOMEM);
+    }
+
+    /* A different way of passing the options is as key/value pairs in a
+     * dictionary. */
+    av_dict_set(&options_dict, "volume", AV_STRINGIFY(VOLUME_VAL), 0);
+    err = avfilter_init_dict(volume_ctx, &options_dict);
+    av_dict_free(&options_dict);
+    if (err < 0) {
+        fprintf(stderr, "Could not initialize the volume filter.\n");
+        return err;
+    }
+
+    /* Create the aformat filter;
+     * it ensures that the output is of the format we want. */
+    aformat = avfilter_get_by_name("aformat");
+    if (!aformat) {
+        fprintf(stderr, "Could not find the aformat filter.\n");
+        return AVERROR_FILTER_NOT_FOUND;
+    }
+
+    aformat_ctx = avfilter_graph_alloc_filter(filter_graph, aformat, "aformat");
+    if (!aformat_ctx) {
+        fprintf(stderr, "Could not allocate the aformat instance.\n");
+        return AVERROR(ENOMEM);
+    }
+
+    /* A third way of passing the options is in a string of the form
+     * key1=value1:key2=value2.... */
+    snprintf(options_str, sizeof(options_str),
+             "sample_fmts=%s:sample_rates=%d:channel_layouts=0x%"PRIx64,
+             av_get_sample_fmt_name(AV_SAMPLE_FMT_S16), 44100,
+             (uint64_t)AV_CH_LAYOUT_STEREO);
+    err = avfilter_init_str(aformat_ctx, options_str);
+    if (err < 0) {
+        av_log(NULL, AV_LOG_ERROR, "Could not initialize the aformat filter.\n");
+        return err;
+    }
+
+    /* Finally create the abuffersink filter;
+     * it will be used to get the filtered data out of the graph. */
+    abuffersink = avfilter_get_by_name("abuffersink");
+    if (!abuffersink) {
+        fprintf(stderr, "Could not find the abuffersink filter.\n");
+        return AVERROR_FILTER_NOT_FOUND;
+    }
+
+    abuffersink_ctx = avfilter_graph_alloc_filter(filter_graph, abuffersink, "sink");
+    if (!abuffersink_ctx) {
+        fprintf(stderr, "Could not allocate the abuffersink instance.\n");
+        return AVERROR(ENOMEM);
+    }
+
+    /* This filter takes no options. */
+    err = avfilter_init_str(abuffersink_ctx, NULL);
+    if (err < 0) {
+        fprintf(stderr, "Could not initialize the abuffersink instance.\n");
+        return err;
+    }
+
+    /* Connect the filters;
+     * in this simple case the filters just form a linear chain. */
+    err = avfilter_link(abuffer_ctx, 0, volume_ctx, 0);
+    if (err >= 0)
+        err = avfilter_link(volume_ctx, 0, aformat_ctx, 0);
+    if (err >= 0)
+        err = avfilter_link(aformat_ctx, 0, abuffersink_ctx, 0);
+    if (err < 0) {
+        fprintf(stderr, "Error connecting filters\n");
+        return err;
+    }
+
+    /* Configure the graph. */
+    err = avfilter_graph_config(filter_graph, NULL);
+    if (err < 0) {
+        av_log(NULL, AV_LOG_ERROR, "Error configuring the filter graph\n");
+        return err;
+    }
+
+    *graph = filter_graph;
+    *src   = abuffer_ctx;
+    *sink  = abuffersink_ctx;
+
+    return 0;
+}
+
+/* Do something useful with the filtered data: this simple
+ * example just prints the MD5 checksum of each plane to stdout. */
+static int process_output(struct AVMD5 *md5, AVFrame *frame)
+{
+    int planar     = av_sample_fmt_is_planar(frame->format);
+    int channels   = av_get_channel_layout_nb_channels(frame->channel_layout);
+    int planes     = planar ? channels : 1;
+    int bps        = av_get_bytes_per_sample(frame->format);
+    int plane_size = bps * frame->nb_samples * (planar ? 1 : channels);
+    int i, j;
+
+    for (i = 0; i < planes; i++) {
+        uint8_t checksum[16];
+
+        av_md5_init(md5);
+        av_md5_sum(checksum, frame->extended_data[i], plane_size);
+
+        fprintf(stdout, "plane %d: 0x", i);
+        for (j = 0; j < sizeof(checksum); j++)
+            fprintf(stdout, "%02X", checksum[j]);
+        fprintf(stdout, "\n");
+    }
+    fprintf(stdout, "\n");
+
+    return 0;
+}
+
+/* Construct a frame of audio data to be filtered;
+ * this simple example just synthesizes a sine wave. */
+static int get_input(AVFrame *frame, int frame_num)
+{
+    int err, i, j;
+
+#define FRAME_SIZE 1024
+
+    /* Set up the frame properties and allocate the buffer for the data. */
+    frame->sample_rate    = INPUT_SAMPLERATE;
+    frame->format         = INPUT_FORMAT;
+    frame->channel_layout = INPUT_CHANNEL_LAYOUT;
+    frame->nb_samples     = FRAME_SIZE;
+    frame->pts            = frame_num * FRAME_SIZE;
+
+    err = av_frame_get_buffer(frame, 0);
+    if (err < 0)
+        return err;
+
+    /* Fill the data for each channel. */
+    for (i = 0; i < 5; i++) {
+        float *data = (float*)frame->extended_data[i];
+
+        for (j = 0; j < frame->nb_samples; j++)
+            data[j] = sin(2 * M_PI * (frame_num + j) * (i + 1) / FRAME_SIZE);
+    }
+
+    return 0;
+}
+
+int main(int argc, char *argv[])
+{
+    struct AVMD5 *md5;
+    AVFilterGraph *graph;
+    AVFilterContext *src, *sink;
+    AVFrame *frame;
+    uint8_t errstr[1024];
+    float duration;
+    int err, nb_frames, i;
+
+    if (argc < 2) {
+        fprintf(stderr, "Usage: %s <duration>\n", argv[0]);
+        return 1;
+    }
+
+    duration  = atof(argv[1]);
+    nb_frames = duration * INPUT_SAMPLERATE / FRAME_SIZE;
+    if (nb_frames <= 0) {
+        fprintf(stderr, "Invalid duration: %s\n", argv[1]);
+        return 1;
+    }
+
+    avfilter_register_all();
+
+    /* Allocate the frame we will be using to store the data. */
+    frame  = av_frame_alloc();
+    if (!frame) {
+        fprintf(stderr, "Error allocating the frame\n");
+        return 1;
+    }
+
+    md5 = av_md5_alloc();
+    if (!md5) {
+        fprintf(stderr, "Error allocating the MD5 context\n");
+        return 1;
+    }
+
+    /* Set up the filtergraph. */
+    err = init_filter_graph(&graph, &src, &sink);
+    if (err < 0) {
+        fprintf(stderr, "Unable to init filter graph:");
+        goto fail;
+    }
+
+    /* the main filtering loop */
+    for (i = 0; i < nb_frames; i++) {
+        /* get an input frame to be filtered */
+        err = get_input(frame, i);
+        if (err < 0) {
+            fprintf(stderr, "Error generating input frame:");
+            goto fail;
+        }
+
+        /* Send the frame to the input of the filtergraph. */
+        err = av_buffersrc_add_frame(src, frame);
+        if (err < 0) {
+            av_frame_unref(frame);
+            fprintf(stderr, "Error submitting the frame to the filtergraph:");
+            goto fail;
+        }
+
+        /* Get all the filtered output that is available. */
+        while ((err = av_buffersink_get_frame(sink, frame)) >= 0) {
+            /* now do something with our filtered frame */
+            err = process_output(md5, frame);
+            if (err < 0) {
+                fprintf(stderr, "Error processing the filtered frame:");
+                goto fail;
+            }
+            av_frame_unref(frame);
+        }
+
+        if (err == AVERROR(EAGAIN)) {
+            /* Need to feed more frames in. */
+            continue;
+        } else if (err == AVERROR_EOF) {
+            /* Nothing more to do, finish. */
+            break;
+        } else if (err < 0) {
+            /* An error occurred. */
+            fprintf(stderr, "Error filtering the data:");
+            goto fail;
+        }
+    }
+
+    avfilter_graph_free(&graph);
+    av_frame_free(&frame);
+    av_freep(&md5);
+
+    return 0;
+
+fail:
+    av_strerror(err, errstr, sizeof(errstr));
+    fprintf(stderr, "%s\n", errstr);
+    return 1;
+}
diff --git a/dependencies64/ffmpeg/doc/examples/filtering_audio.c b/dependencies64/ffmpeg/doc/examples/filtering_audio.c
new file mode 100644 (file)
index 0000000..46595fb
--- /dev/null
@@ -0,0 +1,280 @@
+/*
+ * 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 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);
+    }
+
+    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) {
+            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/dependencies64/ffmpeg/doc/examples/filtering_video.c b/dependencies64/ffmpeg/doc/examples/filtering_video.c
new file mode 100644 (file)
index 0000000..8d59573
--- /dev/null
@@ -0,0 +1,261 @@
+/*
+ * 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 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);
+    }
+
+    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) {
+            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/dependencies64/ffmpeg/doc/examples/metadata.c b/dependencies64/ffmpeg/doc/examples/metadata.c
new file mode 100644 (file)
index 0000000..f73c267
--- /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 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/dependencies64/ffmpeg/doc/examples/muxing.c b/dependencies64/ffmpeg/doc/examples/muxing.c
new file mode 100644 (file)
index 0000000..ad8e027
--- /dev/null
@@ -0,0 +1,606 @@
+/*
+ * 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 muxing.c
+ */
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <math.h>
+
+#include <libavutil/opt.h>
+#include <libavutil/mathematics.h>
+#include <libavutil/timestamp.h>
+#include <libavformat/avformat.h>
+#include <libswscale/swscale.h>
+#include <libswresample/swresample.h>
+
+static int audio_is_eof, video_is_eof;
+
+#define STREAM_DURATION   10.0
+#define STREAM_FRAME_RATE 25 /* 25 images/s */
+#define STREAM_PIX_FMT    AV_PIX_FMT_YUV420P /* default pix_fmt */
+
+static int sws_flags = SWS_BICUBIC;
+
+static void log_packet(const AVFormatContext *fmt_ctx, const AVPacket *pkt)
+{
+    AVRational *time_base = &fmt_ctx->streams[pkt->stream_index]->time_base;
+
+    printf("pts:%s pts_time:%s dts:%s dts_time:%s duration:%s duration_time:%s stream_index:%d\n",
+           av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, time_base),
+           av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, time_base),
+           av_ts2str(pkt->duration), av_ts2timestr(pkt->duration, time_base),
+           pkt->stream_index);
+}
+
+static int write_frame(AVFormatContext *fmt_ctx, const AVRational *time_base, AVStream *st, AVPacket *pkt)
+{
+    /* rescale output packet timestamp values from codec to stream timebase */
+    pkt->pts = av_rescale_q_rnd(pkt->pts, *time_base, st->time_base, AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX);
+    pkt->dts = av_rescale_q_rnd(pkt->dts, *time_base, st->time_base, AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX);
+    pkt->duration = av_rescale_q(pkt->duration, *time_base, st->time_base);
+    pkt->stream_index = st->index;
+
+    /* Write the compressed frame to the media file. */
+    log_packet(fmt_ctx, pkt);
+    return av_interleaved_write_frame(fmt_ctx, pkt);
+}
+
+/* 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  = (*codec)->sample_fmts ?
+            (*codec)->sample_fmts[0] : 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;
+
+AVFrame *audio_frame;
+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;
+int samples_count;
+
+struct SwrContext *swr_ctx = NULL;
+
+static void open_audio(AVFormatContext *oc, AVCodec *codec, AVStream *st)
+{
+    AVCodecContext *c;
+    int ret;
+
+    c = st->codec;
+
+    /* allocate and init a re-usable frame */
+    audio_frame = av_frame_alloc();
+    if (!audio_frame) {
+        fprintf(stderr, "Could not allocate audio frame\n");
+        exit(1);
+    }
+
+    /* 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, AV_SAMPLE_FMT_S16, 0);
+    if (ret < 0) {
+        fprintf(stderr, "Could not allocate source samples\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;
+
+    /* 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);
+        }
+
+        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);
+        }
+    } else {
+        dst_samples_data = src_samples_data;
+    }
+    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, int flush)
+{
+    AVCodecContext *c;
+    AVPacket pkt = { 0 }; // data and size must be 0;
+    int got_packet, ret, dst_nb_samples;
+
+    av_init_packet(&pkt);
+    c = st->codec;
+
+    if (!flush) {
+        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_nb_samples = src_nb_samples;
+        }
+
+        audio_frame->nb_samples = dst_nb_samples;
+        audio_frame->pts = av_rescale_q(samples_count, (AVRational){1, c->sample_rate}, c->time_base);
+        avcodec_fill_audio_frame(audio_frame, c->channels, c->sample_fmt,
+                                 dst_samples_data[0], dst_samples_size, 0);
+        samples_count += dst_nb_samples;
+    }
+
+    ret = avcodec_encode_audio2(c, &pkt, flush ? NULL : audio_frame, &got_packet);
+    if (ret < 0) {
+        fprintf(stderr, "Error encoding audio frame: %s\n", av_err2str(ret));
+        exit(1);
+    }
+
+    if (!got_packet) {
+        if (flush)
+            audio_is_eof = 1;
+        return;
+    }
+
+    ret = write_frame(oc, &c->time_base, st, &pkt);
+    if (ret < 0) {
+        fprintf(stderr, "Error while writing audio frame: %s\n",
+                av_err2str(ret));
+        exit(1);
+    }
+}
+
+static void close_audio(AVFormatContext *oc, AVStream *st)
+{
+    avcodec_close(st->codec);
+    if (dst_samples_data != src_samples_data) {
+        av_free(dst_samples_data[0]);
+        av_free(dst_samples_data);
+    }
+    av_free(src_samples_data[0]);
+    av_free(src_samples_data);
+    av_frame_free(&audio_frame);
+}
+
+/**************************************************************/
+/* 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);
+    }
+    frame->format = c->pix_fmt;
+    frame->width = c->width;
+    frame->height = c->height;
+
+    /* 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 flush)
+{
+    int ret;
+    static struct SwsContext *sws_ctx;
+    AVCodecContext *c = st->codec;
+
+    if (!flush) {
+        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 && !flush) {
+        /* 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 */
+        frame->pts = frame_count;
+        ret = avcodec_encode_video2(c, &pkt, flush ? NULL : 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 (got_packet) {
+            ret = write_frame(oc, &c->time_base, st, &pkt);
+        } else {
+            if (flush)
+                video_is_eof = 1;
+            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_frame_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 flush, 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;
+    }
+
+    flush = 0;
+    while ((video_st && !video_is_eof) || (audio_st && !audio_is_eof)) {
+        /* Compute current audio and video time. */
+        audio_time = (audio_st && !audio_is_eof) ? audio_st->pts.val * av_q2d(audio_st->time_base) : INFINITY;
+        video_time = (video_st && !video_is_eof) ? video_st->pts.val * av_q2d(video_st->time_base) : INFINITY;
+
+        if (!flush &&
+            (!audio_st || audio_time >= STREAM_DURATION) &&
+            (!video_st || video_time >= STREAM_DURATION)) {
+            flush = 1;
+        }
+
+        /* write interleaved audio and video frames */
+        if (audio_st && !audio_is_eof && audio_time <= video_time) {
+            write_audio_frame(oc, audio_st, flush);
+        } else if (video_st && !video_is_eof && video_time < audio_time) {
+            write_video_frame(oc, video_st, flush);
+        }
+    }
+
+    /* 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/dependencies64/ffmpeg/doc/examples/remuxing.c b/dependencies64/ffmpeg/doc/examples/remuxing.c
new file mode 100644 (file)
index 0000000..cdb2f6b
--- /dev/null
@@ -0,0 +1,164 @@
+/*
+ * Copyright (c) 2013 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
+ * libavformat/libavcodec demuxing and muxing API example.
+ *
+ * Remux streams from one container format to another.
+ * @example remuxing.c
+ */
+
+#include <libavutil/timestamp.h>
+#include <libavformat/avformat.h>
+
+static void log_packet(const AVFormatContext *fmt_ctx, const AVPacket *pkt, const char *tag)
+{
+    AVRational *time_base = &fmt_ctx->streams[pkt->stream_index]->time_base;
+
+    printf("%s: pts:%s pts_time:%s dts:%s dts_time:%s duration:%s duration_time:%s stream_index:%d\n",
+           tag,
+           av_ts2str(pkt->pts), av_ts2timestr(pkt->pts, time_base),
+           av_ts2str(pkt->dts), av_ts2timestr(pkt->dts, time_base),
+           av_ts2str(pkt->duration), av_ts2timestr(pkt->duration, time_base),
+           pkt->stream_index);
+}
+
+int main(int argc, char **argv)
+{
+    AVOutputFormat *ofmt = NULL;
+    AVFormatContext *ifmt_ctx = NULL, *ofmt_ctx = NULL;
+    AVPacket pkt;
+    const char *in_filename, *out_filename;
+    int ret, i;
+
+    if (argc < 3) {
+        printf("usage: %s input output\n"
+               "API example program to remux a media file with libavformat and libavcodec.\n"
+               "The output format is guessed according to the file extension.\n"
+               "\n", argv[0]);
+        return 1;
+    }
+
+    in_filename  = argv[1];
+    out_filename = argv[2];
+
+    av_register_all();
+
+    if ((ret = avformat_open_input(&ifmt_ctx, in_filename, 0, 0)) < 0) {
+        fprintf(stderr, "Could not open input file '%s'", in_filename);
+        goto end;
+    }
+
+    if ((ret = avformat_find_stream_info(ifmt_ctx, 0)) < 0) {
+        fprintf(stderr, "Failed to retrieve input stream information");
+        goto end;
+    }
+
+    av_dump_format(ifmt_ctx, 0, in_filename, 0);
+
+    avformat_alloc_output_context2(&ofmt_ctx, NULL, NULL, out_filename);
+    if (!ofmt_ctx) {
+        fprintf(stderr, "Could not create output context\n");
+        ret = AVERROR_UNKNOWN;
+        goto end;
+    }
+
+    ofmt = ofmt_ctx->oformat;
+
+    for (i = 0; i < ifmt_ctx->nb_streams; i++) {
+        AVStream *in_stream = ifmt_ctx->streams[i];
+        AVStream *out_stream = avformat_new_stream(ofmt_ctx, in_stream->codec->codec);
+        if (!out_stream) {
+            fprintf(stderr, "Failed allocating output stream\n");
+            ret = AVERROR_UNKNOWN;
+            goto end;
+        }
+
+        ret = avcodec_copy_context(out_stream->codec, in_stream->codec);
+        if (ret < 0) {
+            fprintf(stderr, "Failed to copy context from input to output stream codec context\n");
+            goto end;
+        }
+        if (ofmt_ctx->oformat->flags & AVFMT_GLOBALHEADER)
+            out_stream->codec->flags |= CODEC_FLAG_GLOBAL_HEADER;
+    }
+    av_dump_format(ofmt_ctx, 0, out_filename, 1);
+
+    if (!(ofmt->flags & AVFMT_NOFILE)) {
+        ret = avio_open(&ofmt_ctx->pb, out_filename, AVIO_FLAG_WRITE);
+        if (ret < 0) {
+            fprintf(stderr, "Could not open output file '%s'", out_filename);
+            goto end;
+        }
+    }
+
+    ret = avformat_write_header(ofmt_ctx, NULL);
+    if (ret < 0) {
+        fprintf(stderr, "Error occurred when opening output file\n");
+        goto end;
+    }
+
+    while (1) {
+        AVStream *in_stream, *out_stream;
+
+        ret = av_read_frame(ifmt_ctx, &pkt);
+        if (ret < 0)
+            break;
+
+        in_stream  = ifmt_ctx->streams[pkt.stream_index];
+        out_stream = ofmt_ctx->streams[pkt.stream_index];
+
+        log_packet(ifmt_ctx, &pkt, "in");
+
+        /* copy packet */
+        pkt.pts = av_rescale_q_rnd(pkt.pts, in_stream->time_base, out_stream->time_base, AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX);
+        pkt.dts = av_rescale_q_rnd(pkt.dts, in_stream->time_base, out_stream->time_base, AV_ROUND_NEAR_INF|AV_ROUND_PASS_MINMAX);
+        pkt.duration = av_rescale_q(pkt.duration, in_stream->time_base, out_stream->time_base);
+        pkt.pos = -1;
+        log_packet(ofmt_ctx, &pkt, "out");
+
+        ret = av_interleaved_write_frame(ofmt_ctx, &pkt);
+        if (ret < 0) {
+            fprintf(stderr, "Error muxing packet\n");
+            break;
+        }
+        av_free_packet(&pkt);
+    }
+
+    av_write_trailer(ofmt_ctx);
+end:
+
+    avformat_close_input(&ifmt_ctx);
+
+    /* close output */
+    if (ofmt_ctx && !(ofmt->flags & AVFMT_NOFILE))
+        avio_close(ofmt_ctx->pb);
+    avformat_free_context(ofmt_ctx);
+
+    if (ret < 0 && ret != AVERROR_EOF) {
+        fprintf(stderr, "Error occurred: %s\n", av_err2str(ret));
+        return 1;
+    }
+
+    return 0;
+}
diff --git a/dependencies64/ffmpeg/doc/examples/resampling_audio.c b/dependencies64/ffmpeg/doc/examples/resampling_audio.c
new file mode 100644 (file)
index 0000000..f743cbe
--- /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 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/dependencies64/ffmpeg/doc/examples/scaling_video.c b/dependencies64/ffmpeg/doc/examples/scaling_video.c
new file mode 100644 (file)
index 0000000..fcb98b7
--- /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 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/dependencies64/ffmpeg/doc/examples/transcode_aac.c b/dependencies64/ffmpeg/doc/examples/transcode_aac.c
new file mode 100644 (file)
index 0000000..bf0128f
--- /dev/null
@@ -0,0 +1,755 @@
+/*
+ * 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
+ *
+ * @example transcode_aac.c
+ * 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;
+}
diff --git a/dependencies64/ffmpeg/doc/faq.html b/dependencies64/ffmpeg/doc/faq.html
new file mode 100644 (file)
index 0000000..a546811
--- /dev/null
@@ -0,0 +1,659 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on June 19, 2014 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 FAQ: </title>
+
+<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">
+<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 FAQ</h1>
+
+<a name="SEC_Contents"></a>
+<h1>Table of Contents</h1>
+<div class="contents">
+
+<ul class="toc">
+  <li><a name="toc-General-Questions" href="#General-Questions">1. General Questions</a>
+  <ul class="toc">
+    <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">
+    <li><a name="toc-ffmpeg-does-not-work_003b-what-is-wrong_003f" href="#ffmpeg-does-not-work_003b-what-is-wrong_003f">3.1 ffmpeg does not work; what is wrong?</a></li>
+    <li><a name="toc-How-do-I-encode-single-pictures-into-movies_003f" href="#How-do-I-encode-single-pictures-into-movies_003f">3.2 How do I encode single pictures into movies?</a></li>
+    <li><a name="toc-How-do-I-encode-movie-to-single-pictures_003f" href="#How-do-I-encode-movie-to-single-pictures_003f">3.3 How do I encode movie to single pictures?</a></li>
+    <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-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-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-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.15 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.16 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.17 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-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-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>
+
+<a name="General-Questions"></a>
+<h1 class="chapter"><a href="faq.html#toc-General-Questions">1. General Questions</a></h1>
+
+<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.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.
+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.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="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.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.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.
+</p>
+<p>The following list of video codecs should work on most Windows systems:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>msmpeg4v2</samp>&rsquo;</dt>
+<dd><p>.avi/.asf
+</p></dd>
+<dt> &lsquo;<samp>msmpeg4</samp>&rsquo;</dt>
+<dd><p>.asf only
+</p></dd>
+<dt> &lsquo;<samp>wmv1</samp>&rsquo;</dt>
+<dd><p>.asf only
+</p></dd>
+<dt> &lsquo;<samp>wmv2</samp>&rsquo;</dt>
+<dd><p>.asf only
+</p></dd>
+<dt> &lsquo;<samp>mpeg4</samp>&rsquo;</dt>
+<dd><p>Only if you have some MPEG-4 codec like ffdshow or Xvid installed.
+</p></dd>
+<dt> &lsquo;<samp>mpeg1video</samp>&rsquo;</dt>
+<dd><p>.mpg only
+</p></dd>
+</dl>
+<p>Note, ASF files often have .wmv or .wma extensions in Windows. It should also
+be mentioned that Microsoft claims a patent on the ASF format, and may sue
+or threaten users who create ASF files with non-Microsoft software. It is
+strongly advised to avoid ASF where possible.
+</p>
+<p>The following list of audio codecs should work on most Windows systems:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>adpcm_ima_wav</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>adpcm_ms</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>pcm_s16le</samp>&rsquo;</dt>
+<dd><p>always
+</p></dd>
+<dt> &lsquo;<samp>libmp3lame</samp>&rsquo;</dt>
+<dd><p>If some MP3 codec like LAME is installed.
+</p></dd>
+</dl>
+
+
+<a name="Compilation"></a>
+<h1 class="chapter"><a href="faq.html#toc-Compilation">2. Compilation</a></h1>
+
+<a name="error_003a-can_0027t-find-a-register-in-class-_0027GENERAL_005fREGS_0027-while-reloading-_0027asm_0027"></a>
+<h2 class="section"><a href="faq.html#toc-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></h2>
+
+<p>This is a bug in gcc. Do not report it to us. Instead, please report it to
+the gcc developers. Note that we will not add workarounds for gcc bugs.
+</p>
+<p>Also note that (some of) the gcc developers believe this is not a bug or
+not a bug they should fix:
+<a href="http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11203">http://gcc.gnu.org/bugzilla/show_bug.cgi?id=11203</a>.
+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>
+
+<a name="ffmpeg-does-not-work_003b-what-is-wrong_003f"></a>
+<h2 class="section"><a href="faq.html#toc-ffmpeg-does-not-work_003b-what-is-wrong_003f">3.1 ffmpeg does not work; what is wrong?</a></h2>
+
+<p>Try a <code>make distclean</code> in the ffmpeg source directory before the build.
+If this does not help see
+(<a href="http://ffmpeg.org/bugreports.html">http://ffmpeg.org/bugreports.html</a>).
+</p>
+<a name="How-do-I-encode-single-pictures-into-movies_003f"></a>
+<h2 class="section"><a href="faq.html#toc-How-do-I-encode-single-pictures-into-movies_003f">3.2 How do I encode single pictures into movies?</a></h2>
+
+<p>First, rename your pictures to follow a numerical sequence.
+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
+</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>
+<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
+</pre></td></tr></table>
+
+<p>If you want to sequence them by oldest modified first, substitute
+<code>$(ls -r -t *jpg)</code> in place of <code>*jpg</code>.
+</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
+</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
+</pre></td></tr></table>
+
+<p>The &lsquo;<tt>movie.mpg</tt>&rsquo; used as input will be converted to
+&lsquo;<tt>movie1.jpg</tt>&rsquo;, &lsquo;<tt>movie2.jpg</tt>&rsquo;, etc...
+</p>
+<p>Instead of relying on file format self-recognition, you may also use
+</p><dl compact="compact">
+<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 -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.
+</p>
+<a name="Why-do-I-see-a-slight-quality-degradation-with-multithreaded-MPEG_002a-encoding_003f"></a>
+<h2 class="section"><a href="faq.html#toc-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></h2>
+
+<p>For multithreaded MPEG* encoding, the encoded slices must be independent,
+otherwise thread n would practically have to wait for n-1 to finish, so it&rsquo;s
+quite logical that there is a small reduction of quality. This is not a bug.
+</p>
+<a name="How-can-I-read-from-the-standard-input-or-write-to-the-standard-output_003f"></a>
+<h2 class="section"><a href="faq.html#toc-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></h2>
+
+<p>Use &lsquo;<tt>-</tt>&rsquo; as file name.
+</p>
+<a name="g_t_002df-jpeg-doesn_0027t-work_002e"></a>
+<h2 class="section"><a href="faq.html#toc-_002df-jpeg-doesn_0027t-work_002e">3.6 -f jpeg doesn&rsquo;t work.</a></h2>
+
+<p>Try &rsquo;-f image2 test%d.jpg&rsquo;.
+</p>
+<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 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;-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="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.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.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.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.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;)
+</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
+</pre></td></tr></table>
+
+<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.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>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 -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 -qscale:v 2 output.avi
+</pre></td></tr></table>
+
+<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>
+<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 -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 - -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
+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 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
+mkfifo temp2.a
+mkfifo temp2.v
+mkfifo all.a
+mkfifo all.v
+ffmpeg -i input1.flv -vn -f u16le -acodec pcm_s16le -ac 2 -ar 44100 - &gt; temp1.a &lt; /dev/null &amp;
+ffmpeg -i input2.flv -vn -f u16le -acodec pcm_s16le -ac 2 -ar 44100 - &gt; temp2.a &lt; /dev/null &amp;
+ffmpeg -i input1.flv -an -f yuv4mpegpipe - &gt; temp1.v &lt; /dev/null &amp;
+{ ffmpeg -i input2.flv -an -f yuv4mpegpipe - &lt; /dev/null | tail -n +2 &gt; temp2.v ; } &amp;
+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 \
+       -y output.flv
+rm temp[12].[av] all.[av]
+</pre></td></tr></table>
+
+<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.15 Using &lsquo;<samp>-f lavfi</samp>&rsquo;, audio becomes mono for no apparent reason.</a></h2>
+
+<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.16 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.17 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. 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>
+<a name="Can-you-support-my-C-compiler-XXX_003f"></a>
+<h2 class="section"><a href="faq.html#toc-Can-you-support-my-C-compiler-XXX_003f">4.2 Can you support my C compiler XXX?</a></h2>
+
+<p>It depends. If your compiler is C99-compliant, then patches to support
+it are likely to be welcome if they do not pollute the source code
+with <code>#ifdef</code>s related to the compiler.
+</p>
+<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>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.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.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
+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.6 Why are the ffmpeg programs devoid of debugging symbols?</a></h2>
+
+<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.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
+or filter would be OK under GPL while a bug fix to LGPL code would not.
+</p>
+<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>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>
+<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
+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_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>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-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 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.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.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-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><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 <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>
+<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>
+<footer class="footer pagination-right">
+<span class="label label-info">This document was generated by <em>Kyle Schwarz</em> on <em>June 19, 2014</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies64/ffmpeg/doc/fate.html b/dependencies64/ffmpeg/doc/fate.html
new file mode 100644 (file)
index 0000000..1eb50bc
--- /dev/null
@@ -0,0 +1,284 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on June 19, 2014 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>June 19, 2014</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies64/ffmpeg/doc/ffmpeg-all.html b/dependencies64/ffmpeg/doc/ffmpeg-all.html
new file mode 100644 (file)
index 0000000..83f8e25
--- /dev/null
@@ -0,0 +1,24449 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on June 19, 2014 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-9" href="#Options-9">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-1" href="#Preset-files-1">5.12 Preset files</a></li>
+  </ul></li>
+  <li><a name="toc-Tips" href="#Tips">6. Tips</a></li>
+  <li><a name="toc-Examples-37" href="#Examples-37">7. Examples</a>
+  <ul class="toc">
+    <li><a name="toc-Preset-files" href="#Preset-files">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-68" href="#Examples-68">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-52" href="#Examples-52">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" href="#rawvideo">13.1 rawvideo</a>
+    <ul class="toc">
+      <li><a name="toc-Options-21" href="#Options-21">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-ac3" href="#ac3">14.1 ac3</a>
+    <ul class="toc">
+      <li><a name="toc-AC_002d3-Decoder-Options" href="#AC_002d3-Decoder-Options">14.1.1 AC-3 Decoder Options</a></li>
+    </ul></li>
+    <li><a name="toc-ffwavesynth" href="#ffwavesynth">14.2 ffwavesynth</a></li>
+    <li><a name="toc-libcelt" href="#libcelt">14.3 libcelt</a></li>
+    <li><a name="toc-libgsm" href="#libgsm">14.4 libgsm</a></li>
+    <li><a name="toc-libilbc" href="#libilbc">14.5 libilbc</a>
+    <ul class="toc">
+      <li><a name="toc-Options-27" href="#Options-27">14.5.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libopencore_002damrnb" href="#libopencore_002damrnb">14.6 libopencore-amrnb</a></li>
+    <li><a name="toc-libopencore_002damrwb" href="#libopencore_002damrwb">14.7 libopencore-amrwb</a></li>
+    <li><a name="toc-libopus-1" href="#libopus-1">14.8 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-35" href="#Options-35">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-41" href="#Options-41">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-43" href="#Options-43">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-29" href="#Options-29">17.3.1 Options</a></li>
+      <li><a name="toc-Examples-98" href="#Examples-98">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-31" href="#Options-31">17.4.1 Options</a></li>
+      <li><a name="toc-Examples-67" href="#Examples-67">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-14" href="#Options-14">17.5.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libopencore_002damrnb-1" href="#libopencore_002damrnb-1">17.6 libopencore-amrnb</a>
+    <ul class="toc">
+      <li><a name="toc-Options-12" href="#Options-12">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-24" href="#Options-24">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-26" href="#Options-26">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-37" href="#Options-37">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-19" href="#Options-19">17.12.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libwavpack-1" href="#libwavpack-1">17.13 libwavpack</a>
+    <ul class="toc">
+      <li><a name="toc-Options-42" href="#Options-42">17.13.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-wavpack" href="#wavpack">17.14 wavpack</a>
+    <ul class="toc">
+      <li><a name="toc-Options-17" href="#Options-17">17.14.1 Options</a>
+      <ul class="toc">
+        <li><a name="toc-Shared-options" href="#Shared-options">17.14.1.1 Shared options</a></li>
+        <li><a name="toc-Private-options" href="#Private-options">17.14.1.2 Private options</a></li>
+      </ul>
+</li>
+    </ul>
+</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-1" href="#Options-1">18.1.1 Options</a></li>
+      <li><a name="toc-Examples-17" href="#Examples-17">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-39" href="#Options-39">18.2.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libwebp" href="#libwebp">18.3 libwebp</a>
+    <ul class="toc">
+      <li><a name="toc-Pixel-Format" href="#Pixel-Format">18.3.1 Pixel Format</a></li>
+      <li><a name="toc-Options-44" href="#Options-44">18.3.2 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libx264_002c-libx264rgb" href="#libx264_002c-libx264rgb">18.4 libx264, libx264rgb</a>
+    <ul class="toc">
+      <li><a name="toc-Supported-Pixel-Formats" href="#Supported-Pixel-Formats">18.4.1 Supported Pixel Formats</a></li>
+      <li><a name="toc-Options-20" href="#Options-20">18.4.2 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libxvid" href="#libxvid">18.5 libxvid</a>
+    <ul class="toc">
+      <li><a name="toc-Options-13" href="#Options-13">18.5.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-png" href="#png">18.6 png</a>
+    <ul class="toc">
+      <li><a name="toc-Private-options-1" href="#Private-options-1">18.6.1 Private options</a></li>
+    </ul></li>
+    <li><a name="toc-ProRes" href="#ProRes">18.7 ProRes</a>
+    <ul class="toc">
+      <li><a name="toc-Private-Options-for-prores_002dks" href="#Private-Options-for-prores_002dks">18.7.1 Private Options for prores-ks</a></li>
+      <li><a name="toc-Speed-considerations" href="#Speed-considerations">18.7.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" href="#noise">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" href="#Syntax">21.3.1 Syntax</a></li>
+      <li><a name="toc-Options-15" href="#Options-15">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-1" href="#image2-1">21.7 image2</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-13" href="#Examples-13">21.7.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mpegts" href="#mpegts">21.8 mpegts</a></li>
+    <li><a name="toc-rawvideo-1" href="#rawvideo-1">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>
+    <ul class="toc">
+      <li><a name="toc-Options-23" href="#Options-23">22.1.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-crc-1" href="#crc-1">22.2 crc</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-16" href="#Examples-16">22.2.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-framecrc-1" href="#framecrc-1">22.3 framecrc</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-99" href="#Examples-99">22.3.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-framemd5-1" href="#framemd5-1">22.4 framemd5</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-73" href="#Examples-73">22.4.1 Examples</a></li>
+    </ul></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>
+    <ul class="toc">
+      <li><a name="toc-Options-10" href="#Options-10">22.6.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-ico-1" href="#ico-1">22.7 ico</a></li>
+    <li><a name="toc-image2-2" href="#image2-2">22.8 image2</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-15" href="#Examples-15">22.8.1 Examples</a></li>
+      <li><a name="toc-Options-22" href="#Options-22">22.8.2 Options</a></li>
+    </ul></li>
+    <li><a name="toc-matroska" href="#matroska">22.9 matroska</a>
+    <ul class="toc">
+      <li><a name="toc-Metadata-1" href="#Metadata-1">22.9.1 Metadata</a></li>
+      <li><a name="toc-Options-30" href="#Options-30">22.9.2 Options</a></li>
+    </ul></li>
+    <li><a name="toc-md5-2" href="#md5-2">22.10 md5</a></li>
+    <li><a name="toc-mov_002c-mp4_002c-ismv" href="#mov_002c-mp4_002c-ismv">22.11 mov, mp4, ismv</a>
+    <ul class="toc">
+      <li><a name="toc-Options-16" href="#Options-16">22.11.1 Options</a></li>
+      <li><a name="toc-Example-1" href="#Example-1">22.11.2 Example</a></li>
+    </ul></li>
+    <li><a name="toc-mp3" href="#mp3">22.12 mp3</a></li>
+    <li><a name="toc-mpegts-1" href="#mpegts-1">22.13 mpegts</a>
+    <ul class="toc">
+      <li><a name="toc-Options-7" href="#Options-7">22.13.1 Options</a></li>
+      <li><a name="toc-Example" href="#Example">22.13.2 Example</a></li>
+    </ul></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-Options-5" href="#Options-5">22.16.1 Options</a></li>
+      <li><a name="toc-Examples-43" href="#Examples-43">22.16.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-tee" href="#tee">22.17 tee</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-97" href="#Examples-97">22.17.1 Examples</a></li>
+    </ul>
+</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-1" href="#concat-1">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-1" href="#md5-1">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>
+    <ul class="toc">
+      <li><a name="toc-Examples-47" href="#Examples-47">24.24.1 Examples</a></li>
+    </ul></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>
+    <ul class="toc">
+      <li><a name="toc-Examples-65" href="#Examples-65">24.30.1 Examples</a></li>
+    </ul></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-28" href="#Options-28">26.3.1 Options</a></li>
+      <li><a name="toc-Examples-92" href="#Examples-92">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-1" href="#fbdev-1">26.5 fbdev</a></li>
+    <li><a name="toc-iec61883" href="#iec61883">26.6 iec61883</a>
+    <ul class="toc">
+      <li><a name="toc-Options-32" href="#Options-32">26.6.1 Options</a></li>
+      <li><a name="toc-Examples-2" href="#Examples-2">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-34" href="#Options-34">26.8.1 Options</a></li>
+      <li><a name="toc-Examples-66" href="#Examples-66">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-33" href="#Options-33">26.10.1 Options</a></li>
+      <li><a name="toc-Examples-42" href="#Examples-42">26.10.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-oss" href="#oss">26.11 oss</a></li>
+    <li><a name="toc-pulse" href="#pulse">26.12 pulse</a>
+    <ul class="toc">
+      <li><a name="toc-Options-6" href="#Options-6">26.12.1 Options</a></li>
+      <li><a name="toc-Examples-33" href="#Examples-33">26.12.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sndio" href="#sndio">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-40" href="#Options-40">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-25" href="#Options-25">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-53" href="#Examples-53">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-45" href="#Options-45">27.2.1 Options</a></li>
+      <li><a name="toc-Examples-84" href="#Examples-84">27.2.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-decklink" href="#decklink">27.3 decklink</a>
+    <ul class="toc">
+      <li><a name="toc-Options" href="#Options">27.3.1 Options</a></li>
+      <li><a name="toc-Examples-61" href="#Examples-61">27.3.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-fbdev" href="#fbdev">27.4 fbdev</a>
+    <ul class="toc">
+      <li><a name="toc-Options-36" href="#Options-36">27.4.1 Options</a></li>
+      <li><a name="toc-Examples-36" href="#Examples-36">27.4.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-opengl" href="#opengl">27.5 opengl</a>
+    <ul class="toc">
+      <li><a name="toc-Options-18" href="#Options-18">27.5.1 Options</a></li>
+      <li><a name="toc-Examples-100" href="#Examples-100">27.5.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-oss-1" href="#oss-1">27.6 oss</a></li>
+    <li><a name="toc-pulse-1" href="#pulse-1">27.7 pulse</a>
+    <ul class="toc">
+      <li><a name="toc-Options-11" href="#Options-11">27.7.1 Options</a></li>
+      <li><a name="toc-Examples-56" href="#Examples-56">27.7.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sdl" href="#sdl">27.8 sdl</a>
+    <ul class="toc">
+      <li><a name="toc-Options-38" href="#Options-38">27.8.1 Options</a></li>
+      <li><a name="toc-Interactive-commands" href="#Interactive-commands">27.8.2 Interactive commands</a></li>
+      <li><a name="toc-Examples-32" href="#Examples-32">27.8.3 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sndio-1" href="#sndio-1">27.9 sndio</a></li>
+    <li><a name="toc-xv" href="#xv">27.10 xv</a>
+    <ul class="toc">
+      <li><a name="toc-Options-4" href="#Options-4">27.10.1 Options</a></li>
+      <li><a name="toc-Examples-26" href="#Examples-26">27.10.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-11" href="#Examples-11">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" href="#Examples">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-10" href="#Examples-10">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-23" href="#Examples-23">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-21" href="#Examples-21">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-54" href="#Examples-54">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-101" href="#Examples-101">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-5" href="#Examples-5">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-50" href="#Examples-50">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-78" href="#Examples-78">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>
+    <ul class="toc">
+      <li><a name="toc-Examples-102" href="#Examples-102">34.30.1 Examples</a></li>
+    </ul></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-90" href="#Examples-90">34.33.1 Examples</a></li>
+      <li><a name="toc-Commands-3" href="#Commands-3">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-62" href="#Examples-62">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-Commands-1" href="#Commands-1">34.40.1 Commands</a></li>
+      <li><a name="toc-Examples-63" href="#Examples-63">34.40.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-volumedetect" href="#volumedetect">34.41 volumedetect</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-81" href="#Examples-81">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-24" href="#Examples-24">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-89" href="#Examples-89">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-70" href="#Examples-70">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-35" href="#Examples-35">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-18" href="#Examples-18">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-39" href="#Examples-39">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-96" href="#Examples-96">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-88" href="#Examples-88">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-28" href="#Examples-28">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-51" href="#Examples-51">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-94" href="#Examples-94">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-12" href="#Examples-12">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-dejudder" href="#dejudder">37.18 dejudder</a></li>
+    <li><a name="toc-delogo" href="#delogo">37.19 delogo</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-22" href="#Examples-22">37.19.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-deshake" href="#deshake">37.20 deshake</a></li>
+    <li><a name="toc-drawbox" href="#drawbox">37.21 drawbox</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-48" href="#Examples-48">37.21.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-drawgrid" href="#drawgrid">37.22 drawgrid</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-60" href="#Examples-60">37.22.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-drawtext-1" href="#drawtext-1">37.23 drawtext</a>
+    <ul class="toc">
+      <li><a name="toc-Syntax-1" href="#Syntax-1">37.23.1 Syntax</a></li>
+      <li><a name="toc-Text-expansion" href="#Text-expansion">37.23.2 Text expansion</a></li>
+      <li><a name="toc-Examples-86" href="#Examples-86">37.23.3 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-edgedetect" href="#edgedetect">37.24 edgedetect</a></li>
+    <li><a name="toc-extractplanes" href="#extractplanes">37.25 extractplanes</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-27" href="#Examples-27">37.25.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-elbg" href="#elbg">37.26 elbg</a></li>
+    <li><a name="toc-fade" href="#fade">37.27 fade</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-1" href="#Examples-1">37.27.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-field" href="#field">37.28 field</a></li>
+    <li><a name="toc-fieldmatch" href="#fieldmatch">37.29 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.29.1 p/c/n/u/b meaning</a>
+      <ul class="toc">
+        <li><a name="toc-p_002fc_002fn" href="#p_002fc_002fn">37.29.1.1 p/c/n</a></li>
+        <li><a name="toc-u_002fb" href="#u_002fb">37.29.1.2 u/b</a></li>
+      </ul></li>
+      <li><a name="toc-Examples-29" href="#Examples-29">37.29.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-fieldorder" href="#fieldorder">37.30 fieldorder</a></li>
+    <li><a name="toc-fifo" href="#fifo">37.31 fifo</a></li>
+    <li><a name="toc-format-1" href="#format-1">37.32 format</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-49" href="#Examples-49">37.32.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-fps-1" href="#fps-1">37.33 fps</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-91" href="#Examples-91">37.33.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-framepack" href="#framepack">37.34 framepack</a></li>
+    <li><a name="toc-framestep" href="#framestep">37.35 framestep</a></li>
+    <li><a name="toc-frei0r-1" href="#frei0r-1">37.36 frei0r</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-46" href="#Examples-46">37.36.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-geq" href="#geq">37.37 geq</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-79" href="#Examples-79">37.37.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-gradfun" href="#gradfun">37.38 gradfun</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-71" href="#Examples-71">37.38.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-haldclut-1" href="#haldclut-1">37.39 haldclut</a>
+    <ul class="toc">
+      <li><a name="toc-Workflow-examples" href="#Workflow-examples">37.39.1 Workflow examples</a>
+      <ul class="toc">
+        <li><a name="toc-Hald-CLUT-video-stream" href="#Hald-CLUT-video-stream">37.39.1.1 Hald CLUT video stream</a></li>
+        <li><a name="toc-Hald-CLUT-with-preview" href="#Hald-CLUT-with-preview">37.39.1.2 Hald CLUT with preview</a></li>
+      </ul>
+</li>
+    </ul></li>
+    <li><a name="toc-hflip" href="#hflip">37.40 hflip</a></li>
+    <li><a name="toc-histeq" href="#histeq">37.41 histeq</a></li>
+    <li><a name="toc-histogram" href="#histogram">37.42 histogram</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-41" href="#Examples-41">37.42.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-hqdn3d-1" href="#hqdn3d-1">37.43 hqdn3d</a></li>
+    <li><a name="toc-hue" href="#hue">37.44 hue</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-14" href="#Examples-14">37.44.1 Examples</a></li>
+      <li><a name="toc-Commands-2" href="#Commands-2">37.44.2 Commands</a></li>
+    </ul></li>
+    <li><a name="toc-idet" href="#idet">37.45 idet</a></li>
+    <li><a name="toc-il" href="#il">37.46 il</a></li>
+    <li><a name="toc-interlace" href="#interlace">37.47 interlace</a></li>
+    <li><a name="toc-kerndeint" href="#kerndeint">37.48 kerndeint</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-9" href="#Examples-9">37.48.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-lut3d-1" href="#lut3d-1">37.49 lut3d</a></li>
+    <li><a name="toc-lut_002c-lutrgb_002c-lutyuv" href="#lut_002c-lutrgb_002c-lutyuv">37.50 lut, lutrgb, lutyuv</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-77" href="#Examples-77">37.50.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mergeplanes" href="#mergeplanes">37.51 mergeplanes</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-40" href="#Examples-40">37.51.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mcdeint" href="#mcdeint">37.52 mcdeint</a></li>
+    <li><a name="toc-mp" href="#mp">37.53 mp</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-34" href="#Examples-34">37.53.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mpdecimate" href="#mpdecimate">37.54 mpdecimate</a></li>
+    <li><a name="toc-negate" href="#negate">37.55 negate</a></li>
+    <li><a name="toc-noformat" href="#noformat">37.56 noformat</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-30" href="#Examples-30">37.56.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-noise-1" href="#noise-1">37.57 noise</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-72" href="#Examples-72">37.57.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-null" href="#null">37.58 null</a></li>
+    <li><a name="toc-ocv" href="#ocv">37.59 ocv</a>
+    <ul class="toc">
+      <li><a name="toc-dilate-1" href="#dilate-1">37.59.1 dilate</a></li>
+      <li><a name="toc-erode" href="#erode">37.59.2 erode</a></li>
+      <li><a name="toc-smooth" href="#smooth">37.59.3 smooth</a></li>
+    </ul></li>
+    <li><a name="toc-overlay-1" href="#overlay-1">37.60 overlay</a>
+    <ul class="toc">
+      <li><a name="toc-Commands" href="#Commands">37.60.1 Commands</a></li>
+      <li><a name="toc-Examples-8" href="#Examples-8">37.60.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-owdenoise" href="#owdenoise">37.61 owdenoise</a></li>
+    <li><a name="toc-pad" href="#pad">37.62 pad</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-44" href="#Examples-44">37.62.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-perspective" href="#perspective">37.63 perspective</a></li>
+    <li><a name="toc-phase" href="#phase">37.64 phase</a></li>
+    <li><a name="toc-pixdesctest" href="#pixdesctest">37.65 pixdesctest</a></li>
+    <li><a name="toc-pp" href="#pp">37.66 pp</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-57" href="#Examples-57">37.66.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-psnr" href="#psnr">37.67 psnr</a></li>
+    <li><a name="toc-pullup-1" href="#pullup-1">37.68 pullup</a></li>
+    <li><a name="toc-removelogo" href="#removelogo">37.69 removelogo</a></li>
+    <li><a name="toc-rotate" href="#rotate">37.70 rotate</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-69" href="#Examples-69">37.70.1 Examples</a></li>
+      <li><a name="toc-Commands-4" href="#Commands-4">37.70.2 Commands</a></li>
+    </ul></li>
+    <li><a name="toc-sab" href="#sab">37.71 sab</a></li>
+    <li><a name="toc-scale-1" href="#scale-1">37.72 scale</a>
+    <ul class="toc">
+      <li><a name="toc-Options-2" href="#Options-2">37.72.1 Options</a></li>
+      <li><a name="toc-Examples-75" href="#Examples-75">37.72.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-separatefields" href="#separatefields">37.73 separatefields</a></li>
+    <li><a name="toc-setdar_002c-setsar" href="#setdar_002c-setsar">37.74 setdar, setsar</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-6" href="#Examples-6">37.74.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-setfield-1" href="#setfield-1">37.75 setfield</a></li>
+    <li><a name="toc-showinfo" href="#showinfo">37.76 showinfo</a></li>
+    <li><a name="toc-smartblur-1" href="#smartblur-1">37.77 smartblur</a></li>
+    <li><a name="toc-stereo3d" href="#stereo3d">37.78 stereo3d</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-80" href="#Examples-80">37.78.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-spp" href="#spp">37.79 spp</a></li>
+    <li><a name="toc-subtitles-1" href="#subtitles-1">37.80 subtitles</a></li>
+    <li><a name="toc-super2xsai" href="#super2xsai">37.81 super2xsai</a></li>
+    <li><a name="toc-swapuv" href="#swapuv">37.82 swapuv</a></li>
+    <li><a name="toc-telecine" href="#telecine">37.83 telecine</a></li>
+    <li><a name="toc-thumbnail" href="#thumbnail">37.84 thumbnail</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-31" href="#Examples-31">37.84.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-tile" href="#tile">37.85 tile</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-95" href="#Examples-95">37.85.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-tinterlace" href="#tinterlace">37.86 tinterlace</a></li>
+    <li><a name="toc-transpose" href="#transpose">37.87 transpose</a></li>
+    <li><a name="toc-trim" href="#trim">37.88 trim</a></li>
+    <li><a name="toc-unsharp" href="#unsharp">37.89 unsharp</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-64" href="#Examples-64">37.89.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-vidstabdetect-1" href="#vidstabdetect-1">37.90 vidstabdetect</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-55" href="#Examples-55">37.90.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-vidstabtransform-1" href="#vidstabtransform-1">37.91 vidstabtransform</a>
+    <ul class="toc">
+      <li><a name="toc-Options-3" href="#Options-3">37.91.1 Options</a></li>
+      <li><a name="toc-Examples-87" href="#Examples-87">37.91.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-vflip" href="#vflip">37.92 vflip</a></li>
+    <li><a name="toc-vignette" href="#vignette">37.93 vignette</a>
+    <ul class="toc">
+      <li><a name="toc-Expressions" href="#Expressions">37.93.1 Expressions</a></li>
+      <li><a name="toc-Examples-59" href="#Examples-59">37.93.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-w3fdif" href="#w3fdif">37.94 w3fdif</a></li>
+    <li><a name="toc-yadif-1" href="#yadif-1">37.95 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-20" href="#Examples-20">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-76" href="#Examples-76">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-5" href="#Commands-5">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-85" href="#Examples-85">40.1.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-concat-2" href="#concat-2">40.2 concat</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-93" href="#Examples-93">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-74" href="#Examples-74">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-38" href="#Examples-38">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-3" href="#Examples-3">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-19" href="#Examples-19">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-4" href="#Examples-4">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-45" href="#Examples-45">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-83" href="#Examples-83">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-25" href="#Examples-25">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-7" href="#Examples-7">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-58" href="#Examples-58">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-82" href="#Examples-82">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
+| file  | ---------&gt; | packets      | -----+
+|_______|            |______________|      |
+                                           v
+                                       _________
+                                      |         |
+                                      | decoded |
+                                      | frames  |
+ ________             ______________  |_________|
+|        |           |              |      |
+| output | &lt;-------- | encoded data | &lt;----+
+| file   |   muxer   | packets      |   encoder
+|________|           |______________|
+
+
+</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"> _________               __________              ______________
+|         |  simple     |          |            |              |
+| decoded |  fltrgrph   | 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; | 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-9"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Options-9">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>-hide_banner</samp>&rsquo;</dt>
+<dd><p>Suppress printing banner.
+</p>
+<p>All FFmpeg tools will normally show a copyright notice, build options
+and library versions. This option can be used to suppress printing
+this information.
+</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.
+</p>
+<p><var>offset</var> must be a time duration specification,
+see <a href="ffmpeg-utils.html#time-duration-syntax">(ffmpeg-utils)time duration syntax</a>.
+</p>
+<p>The offset is added to the timestamps of the input files. Specifying
+a positive offset means that the corresponding streams are delayed by
+the time duration specified in <var>offset</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>-timestamp <var>date</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set the recording timestamp in the container.
+</p>
+<p><var>date</var> must be a time duration specification,
+see <a href="ffmpeg-utils.html#date-syntax">(ffmpeg-utils)date syntax</a>.
+</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>-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>-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>input/output,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-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-Preset-files-1">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-37"></a>
+<h1 class="chapter"><a href="ffmpeg-all.html#toc-Examples-37">7. Examples</a></h1>
+
+<a name="Preset-files"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-Preset-files">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-68"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-68">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-52"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-52">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 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>
+</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.
+Negative values behave identical to the corresponding positive ones, except
+that the score is normalized.
+Positive values exist primarly for compatibility reasons and are not so useful.
+</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>-decoders</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"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-rawvideo">13.1 rawvideo</a></h2>
+
+<p>Raw video decoder.
+</p>
+<p>This decoder decodes rawvideo streams.
+</p>
+<a name="Options-21"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-21">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>
+
+<p>A description of some of the currently available audio decoders
+follows.
+</p>
+<a name="ac3"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-ac3">14.1 ac3</a></h2>
+
+<p>AC-3 audio decoder.
+</p>
+<p>This decoder implements part of ATSC A/52:2010 and ETSI TS 102 366, as well as
+the undocumented RealAudio 3 (a.k.a. dnet).
+</p>
+<a name="AC_002d3-Decoder-Options"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-AC_002d3-Decoder-Options">14.1.1 AC-3 Decoder Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-drc_scale <var>value</var></samp>&rsquo;</dt>
+<dd><p>Dynamic Range Scale Factor. The factor to apply to dynamic range values
+from the AC-3 stream. This factor is applied exponentially.
+There are 3 notable scale factor ranges:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>drc_scale == 0</samp>&rsquo;</dt>
+<dd><p>DRC disabled. Produces full range audio.
+</p></dd>
+<dt> &lsquo;<samp>0 &lt; drc_scale &lt;= 1</samp>&rsquo;</dt>
+<dd><p>DRC enabled.  Applies a fraction of the stream DRC value.
+Audio reproduction is between full range and full compression.
+</p></dd>
+<dt> &lsquo;<samp>drc_scale &gt; 1</samp>&rsquo;</dt>
+<dd><p>DRC enabled. Applies drc_scale asymmetrically.
+Loud sounds are fully compressed.  Soft sounds are enhanced.
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="ffwavesynth"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-ffwavesynth">14.2 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.3 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.4 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.5 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-27"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-27">14.5.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-all.html#toc-libopencore_002damrnb">14.6 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.7 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.8 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-35"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-35">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-41"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-41">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>-encoders</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-43"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-43">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-29"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-29">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-98"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-98">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>Support for encoding 7.1 audio is only available with libfdk-aac 0.1.3 or
+higher.
+</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-31"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-31">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-67"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-67">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-14"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-14">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 overridden 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-all.html#toc-libopencore_002damrnb-1">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-12"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-12">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-24"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-24">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-26"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-26">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-37"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-37">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-19"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-19">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>
+
+<p><a name="libwavpack"></a>
+</p><a name="libwavpack-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-libwavpack-1">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.
+</p>
+<p>Requires the presence of the libwavpack headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libwavpack</code>.
+</p>
+<p>Note that a libavcodec-native encoder for the WavPack codec exists so users can
+encode audios with this codec without using this encoder. See <a href="#wavpackenc">wavpackenc</a>.
+</p>
+<a name="Options-42"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-42">17.13.1 Options</a></h3>
+
+<p><code>wavpack</code> command line utility&rsquo;s corresponding options are listed in
+parentheses, if any.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>frame_size (<em>--blocksize</em>)</samp>&rsquo;</dt>
+<dd><p>Default is 32768.
+</p>
+</dd>
+<dt> &lsquo;<samp>compression_level</samp>&rsquo;</dt>
+<dd><p>Set speed vs. compression tradeoff. Acceptable arguments are listed below:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>0 (<em>-f</em>)</samp>&rsquo;</dt>
+<dd><p>Fast mode.
+</p>
+</dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>Normal (default) settings.
+</p>
+</dd>
+<dt> &lsquo;<samp>2 (<em>-h</em>)</samp>&rsquo;</dt>
+<dd><p>High quality.
+</p>
+</dd>
+<dt> &lsquo;<samp>3 (<em>-hh</em>)</samp>&rsquo;</dt>
+<dd><p>Very high quality.
+</p>
+</dd>
+<dt> &lsquo;<samp>4-8 (<em>-hh -x</em><var>EXTRAPROC</var>)</samp>&rsquo;</dt>
+<dd><p>Same as &lsquo;<samp>3</samp>&rsquo;, but with extra processing enabled.
+</p>
+<p>&lsquo;<samp>4</samp>&rsquo; is the same as &lsquo;<samp>-x2</samp>&rsquo; and &lsquo;<samp>8</samp>&rsquo; is the same as &lsquo;<samp>-x6</samp>&rsquo;.
+</p>
+</dd>
+</dl>
+</dd>
+</dl>
+
+<p><a name="wavpackenc"></a>
+</p><a name="wavpack"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-wavpack">17.14 wavpack</a></h2>
+
+<p>WavPack lossless audio encoder.
+</p>
+<p>This is a libavcodec-native WavPack encoder. There is also an encoder based on
+libwavpack, but there is virtually no reason to use that encoder.
+</p>
+<p>See also <a href="#libwavpack">libwavpack</a>.
+</p>
+<a name="Options-17"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-17">17.14.1 Options</a></h3>
+
+<p>The equivalent options for <code>wavpack</code> command line utility are listed in
+parentheses.
+</p>
+<a name="Shared-options"></a>
+<h4 class="subsubsection"><a href="ffmpeg-all.html#toc-Shared-options">17.14.1.1 Shared options</a></h4>
+
+<p>The following shared options are effective for this encoder. Only special notes
+about this particular encoder will be documented here. For the general meaning
+of the options, see <a href="#codec_002doptions">the Codec Options chapter</a>.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>frame_size (<em>--blocksize</em>)</samp>&rsquo;</dt>
+<dd><p>For this encoder, the range for this option is between 128 and 131072. Default
+is automatically decided based on sample rate and number of channel.
+</p>
+<p>For the complete formula of calculating default, see
+&lsquo;<tt>libavcodec/wavpackenc.c</tt>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>compression_level (<em>-f</em>, <em>-h</em>, <em>-hh</em>, and <em>-x</em>)</samp>&rsquo;</dt>
+<dd><p>This option&rsquo;s syntax is consistent with <a href="#libwavpack">libwavpack</a>&rsquo;s.
+</p></dd>
+</dl>
+
+<a name="Private-options"></a>
+<h4 class="subsubsection"><a href="ffmpeg-all.html#toc-Private-options">17.14.1.2 Private options</a></h4>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>joint_stereo (<em>-j</em>)</samp>&rsquo;</dt>
+<dd><p>Set whether to enable joint stereo. Valid values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>on (<em>1</em>)</samp>&rsquo;</dt>
+<dd><p>Force mid/side audio encoding.
+</p></dd>
+<dt> &lsquo;<samp>off (<em>0</em>)</samp>&rsquo;</dt>
+<dd><p>Force left/right audio encoding.
+</p></dd>
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Let the encoder decide automatically.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>optimize_mono</samp>&rsquo;</dt>
+<dd><p>Set whether to enable optimization for mono. This option is only effective for
+non-mono streams. Available values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>on</samp>&rsquo;</dt>
+<dd><p>enabled
+</p></dd>
+<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
+<dd><p>disabled
+</p></dd>
+</dl>
+
+</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 information about the libtheora project see
+<a href="http://www.theora.org/">http://www.theora.org/</a>.
+</p>
+<a name="Options-1"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-1">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-17"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-17">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-39"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-39">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="libwebp"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-libwebp">18.3 libwebp</a></h2>
+
+<p>libwebp WebP Image encoder wrapper
+</p>
+<p>libwebp is Google&rsquo;s official encoder for WebP images. It can encode in either
+lossy or lossless mode. Lossy images are essentially a wrapper around a VP8
+frame. Lossless images are a separate codec developed by Google.
+</p>
+<a name="Pixel-Format"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Pixel-Format">18.3.1 Pixel Format</a></h3>
+
+<p>Currently, libwebp only supports YUV420 for lossy and RGB for lossless due
+to limitations of the format and libwebp. Alpha is supported for either mode.
+Because of API limitations, if RGB is passed in when encoding lossy or YUV is
+passed in for encoding lossless, the pixel format will automatically be
+converted using functions from libwebp. This is not ideal and is done only for
+convenience.
+</p>
+<a name="Options-44"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-44">18.3.2 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-lossless <var>boolean</var></samp>&rsquo;</dt>
+<dd><p>Enables/Disables use of lossless mode. Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>-compression_level <var>integer</var></samp>&rsquo;</dt>
+<dd><p>For lossy, this is a quality/speed tradeoff. Higher values give better quality
+for a given size at the cost of increased encoding time. For lossless, this is
+a size/speed tradeoff. Higher values give smaller size at the cost of increased
+encoding time. More specifically, it controls the number of extra algorithms
+and compression tools used, and varies the combination of these tools. This
+maps to the <var>method</var> option in libwebp. The valid range is 0 to 6.
+Default is 4.
+</p>
+</dd>
+<dt> &lsquo;<samp>-qscale <var>float</var></samp>&rsquo;</dt>
+<dd><p>For lossy encoding, this controls image quality, 0 to 100. For lossless
+encoding, this controls the effort and time spent at compressing more. The
+default value is 75. Note that for usage via libavcodec, this option is called
+<var>global_quality</var> and must be multiplied by <var>FF_QP2LAMBDA</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>-preset <var>type</var></samp>&rsquo;</dt>
+<dd><p>Configuration preset. This does some automatic settings based on the general
+type of the image.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>Do not use a preset.
+</p></dd>
+<dt> &lsquo;<samp>default</samp>&rsquo;</dt>
+<dd><p>Use the encoder default.
+</p></dd>
+<dt> &lsquo;<samp>picture</samp>&rsquo;</dt>
+<dd><p>Digital picture, like portrait, inner shot
+</p></dd>
+<dt> &lsquo;<samp>photo</samp>&rsquo;</dt>
+<dd><p>Outdoor photograph, with natural lighting
+</p></dd>
+<dt> &lsquo;<samp>drawing</samp>&rsquo;</dt>
+<dd><p>Hand or line drawing, with high-contrast details
+</p></dd>
+<dt> &lsquo;<samp>icon</samp>&rsquo;</dt>
+<dd><p>Small-sized colorful images
+</p></dd>
+<dt> &lsquo;<samp>text</samp>&rsquo;</dt>
+<dd><p>Text-like
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="libx264_002c-libx264rgb"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-libx264_002c-libx264rgb">18.4 libx264, libx264rgb</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 one 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>
+<p>The libx264rgb encoder is the same as libx264, except it accepts packed RGB
+pixel formats as input instead of YUV.
+</p>
+<a name="Supported-Pixel-Formats"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Supported-Pixel-Formats">18.4.1 Supported Pixel Formats</a></h3>
+
+<p>x264 supports 8- to 10-bit color spaces. The exact bit depth is controlled at
+x264&rsquo;s configure time. FFmpeg only supports one bit depth in one particular
+build. In other words, it is not possible to build one FFmpeg with multiple
+versions of x264 with different bit depths.
+</p>
+<a name="Options-20"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-20">18.4.2 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 compatibility 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.5 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-13"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-13">18.5.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.6 png</a></h2>
+
+<p>PNG image encoder.
+</p>
+<a name="Private-options-1"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Private-options-1">18.6.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.7 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 chosen 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.7.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.7.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"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-noise">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>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>make_non_negative</samp>&rsquo;</dt>
+<dd><p>Shift timestamps to make them non-negative.
+Also note that this affects only leading negative timestamps, and not
+non-monotonic negative timestamps.
+</p></dd>
+<dt> &lsquo;<samp>make_zero</samp>&rsquo;</dt>
+<dd><p>Shift timestamps so that the first timestamp is 0.
+</p></dd>
+<dt> &lsquo;<samp>auto (default)</samp>&rsquo;</dt>
+<dd><p>Enables shifting when required by the target format.
+</p></dd>
+<dt> &lsquo;<samp>disabled</samp>&rsquo;</dt>
+<dd><p>Disables shifting of timestamp.
+</p></dd>
+</dl>
+
+<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>
+</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>
+<dt> &lsquo;<samp>output_ts_offset <var>offset</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set the output time offset.
+</p>
+<p><var>offset</var> must be a time duration specification,
+see <a href="ffmpeg-utils.html#time-duration-syntax">(ffmpeg-utils)time duration syntax</a>.
+</p>
+<p>The offset is added by the muxer to the output timestamps.
+</p>
+<p>Specifying a positive offset means that the corresponding streams are
+delayed bt the time duration specified in <var>offset</var>. Default value
+is <code>0</code> (meaning that no offset is applied).
+</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"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Syntax">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-15"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-15">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-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-image2-1">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-13"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-13">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"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-mpegts">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-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-rawvideo-1">21.9 rawvideo</a></h2>
+
+<p>Raw video demuxer.
+</p>
+<p>This demuxer allows one 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>
+<a name="Options-23"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-23">22.1.1 Options</a></h3>
+
+<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>See also the <a href="#framecrc">framecrc</a> muxer.
+</p>
+<a name="Examples-16"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-16">22.2.1 Examples</a></h3>
+
+<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><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>
+<a name="Examples-99"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-99">22.3.1 Examples</a></h3>
+
+<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>
+<a name="Examples-73"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-73">22.4.1 Examples</a></h3>
+
+<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 (HLS) 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>
+<p>For example, to convert an input file with <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.nut out.m3u8
+</pre></td></tr></table>
+
+<p>See also the <a href="#segment">segment</a> muxer, which provides a more generic and
+flexible implementation of a segmenter, and can be used to perform HLS
+segmentation.
+</p>
+<a name="Options-10"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-10">22.6.1 Options</a></h3>
+
+<p>This muxer supports the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>hls_time <var>seconds</var></samp>&rsquo;</dt>
+<dd><p>Set the segment length in seconds. Default value is 2.
+</p>
+</dd>
+<dt> &lsquo;<samp>hls_list_size <var>size</var></samp>&rsquo;</dt>
+<dd><p>Set the maximum number of playlist entries. If set to 0 the list file
+will contain all the segments. Default value is 5.
+</p>
+</dd>
+<dt> &lsquo;<samp>hls_wrap <var>wrap</var></samp>&rsquo;</dt>
+<dd><p>Set the number after which the segment filename number (the number
+specified in each segment file) wraps. If set to 0 the number will be
+never wrapped. Default value is 0.
+</p>
+<p>This option is useful to avoid to fill the disk with many segment
+files, and limits the maximum number of segment files written to disk
+to <var>wrap</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_number <var>number</var></samp>&rsquo;</dt>
+<dd><p>Start the playlist sequence number from <var>number</var>. Default value is
+0.
+</p>
+<p>Note that the playlist sequence number must be unique for each segment
+and it is not to be confused with the segment filename sequence number
+which can be cyclic, for example if the &lsquo;<samp>wrap</samp>&rsquo; option is
+specified.
+</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-2"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-image2-2">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>
+<a name="Examples-15"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-15">22.8.1 Examples</a></h3>
+
+<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>
+
+<p>The &lsquo;<samp>strftime</samp>&rsquo; option allows you to expand the filename with
+date and time information. Check the documentation of
+the <code>strftime()</code> function for the syntax.
+</p>
+<p>For example to generate image files from the <code>strftime()</code>
+&quot;%Y-%m-%d_%H-%M-%S&quot; pattern, the following <code>ffmpeg</code> command
+can be used:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f v4l2 -r 1 -i /dev/video0 -f image2 -strftime 1 &quot;%Y-%m-%d_%H-%M-%S.jpg&quot;
+</pre></td></tr></table>
+
+<a name="Options-22"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-22">22.8.2 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>start_number</samp>&rsquo;</dt>
+<dd><p>Start the sequence from the specified number. Default value is 1. Must
+be a non-negative number.
+</p>
+</dd>
+<dt> &lsquo;<samp>update</samp>&rsquo;</dt>
+<dd><p>If set to 1, the filename will always be interpreted as just a
+filename, not a pattern, and the corresponding file will be continuously
+overwritten with new images. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>strftime</samp>&rsquo;</dt>
+<dd><p>If set to 1, expand the filename with date and time information from
+<code>strftime()</code>. Default value is 0.
+</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>
+<a name="Metadata-1"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Metadata-1">22.9.1 Metadata</a></h3>
+
+<p>The recognized metadata settings in this muxer are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>title</samp>&rsquo;</dt>
+<dd><p>Set title name provided to a single track.
+</p>
+</dd>
+<dt> &lsquo;<samp>language</samp>&rsquo;</dt>
+<dd><p>Specify the language of the track in the Matroska languages form.
+</p>
+<p>The language can be either the 3 letters bibliographic ISO-639-2 (ISO
+639-2/B) form (like &quot;fre&quot; for French), or a language code mixed with a
+country code for specialities in languages (like &quot;fre-ca&quot; for Canadian
+French).
+</p>
+</dd>
+<dt> &lsquo;<samp>stereo_mode</samp>&rsquo;</dt>
+<dd><p>Set stereo 3D video layout of two views in a single video track.
+</p>
+<p>The following values are recognized:
+</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>
+
+<a name="Options-30"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-30">22.9.2 Options</a></h3>
+
+<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="ffmpeg-all.html#toc-md5-2">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_002c-mp4_002c-ismv"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-mov_002c-mp4_002c-ismv">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>
+<a name="Options-16"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-16">22.11.1 Options</a></h3>
+
+<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>
+
+<a name="Example-1"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Example-1">22.11.2 Example</a></h3>
+
+<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. Setting
+<code>id3v2_version</code> to 0 will disable the ID3v2 header completely. The legacy
+ID3v1 tag is not written by default, but may be enabled with the
+<code>write_id3v1</code> option.
+</p>
+<p>The muxer may also write a Xing frame at the beginning, which contains the
+number of frames in the file. It is useful for computing duration of VBR files.
+The Xing frame is written if the output stream is seekable and if the
+<code>write_xing</code> option is set to 1 (the default).
+</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>
+
+<p>Write a &quot;clean&quot; MP3 without any extra features:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.wav -write_xing 0 -id3v2_version 0 out.mp3
+</pre></td></tr></table>
+
+<a name="mpegts-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-mpegts-1">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 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>
+<a name="Options-7"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-7">22.13.1 Options</a></h3>
+
+<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>
+
+<a name="Example"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Example">22.13.2 Example</a></h3>
+
+<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>
+
+<p><a name="segment"></a>
+</p><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>This 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>See also the <a href="#hls">hls</a> muxer, which provides a more specific
+implementation for HLS segmentation.
+</p>
+<a name="Options-5"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-5">22.16.1 Options</a></h3>
+
+<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 chosen
+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-43"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-43">22.16.2 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 <a href="ffmpeg-utils.html#quoting_005fand_005fescaping">(ffmpeg-utils)quoting_and_escaping</a>).
+</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.
+</p>
+<p>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>. <var>spec</var> must be a stream specifier (see <a href="#Format-stream-specifiers">Format stream specifiers</a>).  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>
+
+<a name="Examples-97"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-97">22.17.1 Examples</a></h3>
+
+<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><li>
+As below, but select only stream <code>a:1</code> for the audio output. Note
+that a second level escaping must be performed, as &quot;:&quot; is a special
+character used to separate options.
+<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:1\']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-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-concat-1">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 write to a file.
+</p>
+<p>A file URL can have the form:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">file:<var>filename</var>
+</pre></td></tr></table>
+
+<p>where <var>filename</var> is the path of the file to read.
+</p>
+<p>An URL that does not have a protocol prefix will be assumed to be a
+file URL. Depending on the build, an URL that looks like a Windows
+path with the drive letter at the beginning will also be assumed to be
+a file URL (usually not the case in builds for unix-like systems).
+</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>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>content_type</samp>&rsquo;</dt>
+<dd><p>Set a specific content type for the POST messages.
+</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>multiple_requests</samp>&rsquo;</dt>
+<dd><p>Use persistent connections if set to 1, default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>post_data</samp>&rsquo;</dt>
+<dd><p>Set custom HTTP post data.
+</p>
+</dd>
+<dt> &lsquo;<samp>user-agent</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>user_agent</samp>&rsquo;</dt>
+<dd><p>Override the User-Agent header. If not specified the protocol will use a
+string describing the libavformat build. (&quot;Lavf/&lt;version&gt;&quot;)
+</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>Export the 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 by 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. It should be
+polled in regular intervals by applications interested in mid-stream metadata
+updates.
+</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>
+<dt> &lsquo;<samp>offset</samp>&rsquo;</dt>
+<dd><p>Set initial byte offset.
+</p>
+</dd>
+<dt> &lsquo;<samp>end_offset</samp>&rsquo;</dt>
+<dd><p>Try to limit the request to bytes preceding this offset.
+</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-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-md5-1">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>
+<dt> &lsquo;<samp>private_key</samp>&rsquo;</dt>
+<dd><p>Specify the path of the file containing private key to use during authorization.
+By default libssh searches for keys in the &lsquo;<tt>~/.ssh/</tt>&rsquo; directory.
+</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>Real-Time Streaming Protocol.
+</p>
+<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>Options can be 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>.
+</p>
+<p>The following options are supported.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>initial_pause</samp>&rsquo;</dt>
+<dd><p>Do not start playing the stream immediately if set to 1. Default value
+is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtsp_transport</samp>&rsquo;</dt>
+<dd><p>Set RTSP trasport protocols.
+</p>
+<p>It accepts the following values:
+</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 &lsquo;<samp>tcp</samp>&rsquo; and &lsquo;<samp>udp</samp>&rsquo; options are supported.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtsp_flags</samp>&rsquo;</dt>
+<dd><p>Set RTSP flags.
+</p>
+<p>The following values are accepted:
+</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>Default value is &lsquo;<samp>none</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>allowed_media_types</samp>&rsquo;</dt>
+<dd><p>Set media types to accept from the server.
+</p>
+<p>The following flags are accepted:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>video</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>audio</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>data</samp>&rsquo;</dt>
+</dl>
+
+<p>By default it accepts all media types.
+</p>
+</dd>
+<dt> &lsquo;<samp>min_port</samp>&rsquo;</dt>
+<dd><p>Set minimum local UDP port. Default value is 5000.
+</p>
+</dd>
+<dt> &lsquo;<samp>max_port</samp>&rsquo;</dt>
+<dd><p>Set maximum local UDP port. Default value is 65000.
+</p>
+</dd>
+<dt> &lsquo;<samp>timeout</samp>&rsquo;</dt>
+<dd><p>Set maximum timeout (in seconds) to wait for incoming connections.
+</p>
+<p>A value of -1 mean infinite (default). This option implies the
+&lsquo;<samp>rtsp_flags</samp>&rsquo; set to &lsquo;<samp>listen</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>reorder_queue_size</samp>&rsquo;</dt>
+<dd><p>Set number of packets to buffer for handling of reordered packets.
+</p>
+</dd>
+<dt> &lsquo;<samp>stimeout</samp>&rsquo;</dt>
+<dd><p>Set socket TCP I/O timeout in micro seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>user-agent</samp>&rsquo;</dt>
+<dd><p>Override User-Agent header. If not specified, it default to the
+libavformat identifier string.
+</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>
+<a name="Examples-47"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-47">24.24.1 Examples</a></h3>
+
+<p>The following examples all make use of the <code>ffplay</code> and
+<code>ffmpeg</code> tools.
+</p>
+<ul>
+<li>
+Watch a stream over UDP, with a max reordering delay of 0.5 seconds:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -max_delay 500000 -rtsp_transport udp rtsp://server/video.mp4
+</pre></td></tr></table>
+
+</li><li>
+Watch a stream tunneled over HTTP:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -rtsp_transport http rtsp://server/video.mp4
+</pre></td></tr></table>
+
+</li><li>
+Send a stream in realtime to a RTSP server, for others to watch:
+<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>
+
+</li><li>
+Receive a stream in realtime:
+<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>
+</li></ul>
+
+<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>Transmission 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>
+
+<p><var>options</var> contains a list of &amp;-separated options of the form
+<var>key</var>=<var>val</var>.
+</p>
+<p>The list of supported options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>listen=<var>1|0</var></samp>&rsquo;</dt>
+<dd><p>Listen for an incoming connection. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>timeout=<var>microseconds</var></samp>&rsquo;</dt>
+<dd><p>Set raise error timeout, expressed in microseconds.
+</p>
+<p>This option is only relevant in read mode: if no data arrived in more
+than this time interval, raise error.
+</p>
+</dd>
+<dt> &lsquo;<samp>listen_timeout=<var>microseconds</var></samp>&rsquo;</dt>
+<dd><p>Set listen timeout, expressed in microseconds.
+</p></dd>
+</dl>
+
+<p>The following example shows how to setup a listening TCP connection
+with <code>ffmpeg</code>, which is then accessed with <code>ffplay</code>:
+</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>
+
+<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 an 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 one 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>Set raise error timeout, expressed in microseconds.
+</p>
+<p>This option is only relevant in read mode: if no data arrived in more
+than this time interval, raise error.
+</p></dd>
+</dl>
+
+<a name="Examples-65"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-65">24.30.1 Examples</a></h3>
+
+<ul>
+<li>
+Use <code>ffmpeg</code> to stream over UDP to a remote endpoint:
+<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>
+
+</li><li>
+Use <code>ffmpeg</code> to stream in mpegts format over UDP using 188
+sized UDP packets, using a large input buffer:
+<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>
+
+</li><li>
+Use <code>ffmpeg</code> to receive over UDP from a remote endpoint:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i udp://[<var>multicast-address</var>]:<var>port</var> ...
+</pre></td></tr></table>
+</li></ul>
+
+<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-28"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-28">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-92"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-92">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-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-fbdev-1">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-32"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-32">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-2"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-2">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-34"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-34">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-66"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-66">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 one 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-33"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-33">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-42"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-42">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"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-oss">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-6"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-6">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-33"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-33">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"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-sndio">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-40"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-40">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 one 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 one 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-25"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-25">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-53"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-53">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 one 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-45"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-45">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-84"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-84">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="decklink"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-decklink">27.3 decklink</a></h2>
+
+<p>The decklink output device provides playback capabilities for Blackmagic
+DeckLink devices.
+</p>
+<p>To enable this output device, you need the Blackmagic DeckLink SDK and you
+need to configure with the appropriate <code>--extra-cflags</code>
+and <code>--extra-ldflags</code>.
+On Windows, you need to run the IDL files through <code>widl</code>.
+</p>
+<p>DeckLink is very picky about the formats it supports. Pixel format is always
+uyvy422, framerate and video size must be determined for your device with
+<code>-list_formats 1</code>. Audio sample rate is always 48 kHz.
+</p>
+<a name="Options"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options">27.3.1 Options</a></h3>
+
+<dl compact="compact">
+<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>
+<dt> &lsquo;<samp>list_formats</samp>&rsquo;</dt>
+<dd><p>If set to &lsquo;<samp>true</samp>&rsquo;, print a list of supported formats and exit.
+Defaults to &lsquo;<samp>false</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>preroll</samp>&rsquo;</dt>
+<dd><p>Amount of time to preroll video in seconds.
+Defaults to &lsquo;<samp>0.5</samp>&rsquo;.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-61"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-61">27.3.2 Examples</a></h3>
+
+<ul>
+<li>
+List output devices:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i test.avi -f decklink -list_devices 1 dummy
+</pre></td></tr></table>
+
+</li><li>
+List supported formats:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i test.avi -f decklink -list_formats 1 'DeckLink Mini Monitor'
+</pre></td></tr></table>
+
+</li><li>
+Play video clip:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i test.avi -f decklink -pix_fmt uyvy422 'DeckLink Mini Monitor'
+</pre></td></tr></table>
+
+</li><li>
+Play video clip with non-standard framerate or video size:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i test.avi -f decklink -pix_fmt uyvy422 -s 720x486 -r 24000/1001 'DeckLink Mini Monitor'
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="fbdev"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-fbdev">27.4 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-36"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-36">27.4.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-36"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-36">27.4.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="opengl"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-opengl">27.5 opengl</a></h2>
+<p>OpenGL output device.
+</p>
+<p>To enable this output device you need to configure FFmpeg with <code>--enable-opengl</code>.
+</p>
+<p>This output device allows one to render to OpenGL context.
+Context may be provided by application or default SDL window is created.
+</p>
+<p>When device renders to external context, application must implement handlers for following messages:
+<code>AV_CTL_MESSAGE_CREATE_WINDOW_BUFFER</code> - create OpenGL context on current thread.
+<code>AV_CTL_MESSAGE_PREPARE_WINDOW_BUFFER</code> - make OpenGL context current.
+<code>AV_CTL_MESSAGE_DISPLAY_WINDOW_BUFFER</code> - swap buffers.
+<code>AV_CTL_MESSAGE_DESTROY_WINDOW_BUFFER</code> - destroy OpenGL context.
+Application is also required to inform a device about current resolution by sending <code>AV_DEVICE_WINDOW_RESIZED</code> message.
+</p>
+<a name="Options-18"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-18">27.5.1 Options</a></h3>
+<dl compact="compact">
+<dt> &lsquo;<samp>background</samp>&rsquo;</dt>
+<dd><p>Set background color. Black is a default.
+</p></dd>
+<dt> &lsquo;<samp>no_window</samp>&rsquo;</dt>
+<dd><p>Disables default SDL window when set to non-zero value.
+Application must provide OpenGL context and both <code>window_size_cb</code> and <code>window_swap_buffers_cb</code> callbacks when set.
+</p></dd>
+<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.
+Ignored when &lsquo;<samp>no_window</samp>&rsquo; is set.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-100"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-100">27.5.2 Examples</a></h3>
+<p>Play a file on SDL window using OpenGL rendering:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg  -i INPUT -f opengl &quot;window title&quot;
+</pre></td></tr></table>
+
+<a name="oss-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-oss-1">27.6 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.7 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-11"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-11">27.7.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-56"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-56">27.7.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.8 sdl</a></h2>
+
+<p>SDL (Simple DirectMedia Layer) output device.
+</p>
+<p>This output device allows one 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-38"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-38">27.8.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.8.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-32"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-32">27.8.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-all.html#toc-sndio-1">27.9 sndio</a></h2>
+
+<p>sndio audio output device.
+</p>
+<a name="xv"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-xv">27.10 xv</a></h2>
+
+<p>XV (XVideo) output device.
+</p>
+<p>This output device allows one to show a video stream in a X Window System
+window.
+</p>
+<a name="Options-4"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-4">27.10.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-26"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-26">27.10.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>bicublin</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 one 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>Filtergraph description composition entails several levels of
+escaping. See <a href="ffmpeg-utils.html#quoting_005fand_005fescaping">(ffmpeg-utils)quoting_and_escaping</a> for more
+information about the employed escaping procedure.
+</p>
+<p>A first level escaping affects the content of each filter option
+value, which may contain the special character <code>:</code> used to
+separate values, or one of the escaping characters <code>\'</code>.
+</p>
+<p>A second level escaping affects the whole filter description, which
+may contain the escaping characters <code>\'</code> or the special
+characters <code>[],;</code> used by the filtergraph description.
+</p>
+<p>Finally, when you specify a filtergraph on a shell commandline, you
+need to perform a third level escaping for the shell special
+characters contained within it.
+</p>
+<p>For example, consider the following string to be embedded in
+the <a href="#drawtext">drawtext</a> filter description &lsquo;<samp>text</samp>&rsquo; value:
+</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>This string contains the <code>'</code> special escaping character, and the
+<code>:</code> special character, so it needs to be escaped in this way:
+</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
+description 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>(note that in addition to the <code>\'</code> escaping special characters,
+also <code>,</code> needs to be escaped).
+</p>
+<p>Finally an additional level of escaping is 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>
+
+<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-11"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-11">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"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples">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-10"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-10">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-23"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-23">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-21"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-21">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-54"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-54">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-101"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-101">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-5"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-5">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-50"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-50">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. <var>attacks</var> refers to
+increase of volume and <var>decays</var> 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. A typical value for attack is 0.3 seconds and
+a typical value for decay is 0.8 seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>points</samp>&rsquo;</dt>
+<dd><p>Set list of points for the transfer function, specified in dB relative to the
+maximum possible signal amplitude. Each key points list must be defined using
+the following syntax: <code>x0/y0|x1/y1|x2/y2|....</code> or
+<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 the curve radius in dB for all joints. Defaults to 0.01.
+</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.
+This allows easy adjustment of the overall gain. Defaults to 0.
+</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. Defaults to 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>delay</samp>&rsquo;</dt>
+<dd><p>Set delay in seconds. The input audio is analyzed 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. Defaults to 0.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-78"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-78">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="Examples-102"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-102">34.30.1 Examples</a></h3>
+<ul>
+<li>
+Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
+<table><tr><td>&nbsp;</td><td><pre class="example">equalizer=f=1000:width_type=h:width=200:g=-10
+</pre></td></tr></table>
+
+</li><li>
+Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
+<table><tr><td>&nbsp;</td><td><pre class="example">equalizer=f=1000:width_type=q:width=1:g=2,equalizer=f=100:width_type=q:width=2:g=-5
+</pre></td></tr></table>
+</li></ul>
+
+<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-90"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-90">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-3"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Commands-3">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-62"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-62">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>Set audio volume expression.
+</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 &quot;1.0&quot;.
+</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>
+<dt> &lsquo;<samp>eval</samp>&rsquo;</dt>
+<dd><p>Set when the volume expression is evaluated.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>once</samp>&rsquo;</dt>
+<dd><p>only evaluate expression once during the filter initialization, or
+when the &lsquo;<samp>volume</samp>&rsquo; command is sent
+</p>
+</dd>
+<dt> &lsquo;<samp>frame</samp>&rsquo;</dt>
+<dd><p>evaluate expression for each incoming frame
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>once</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<p>The volume expression can contain the following parameters.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>frame number (starting at zero)
+</p></dd>
+<dt> &lsquo;<samp>nb_channels</samp>&rsquo;</dt>
+<dd><p>number of channels
+</p></dd>
+<dt> &lsquo;<samp>nb_consumed_samples</samp>&rsquo;</dt>
+<dd><p>number of samples consumed by the filter
+</p></dd>
+<dt> &lsquo;<samp>nb_samples</samp>&rsquo;</dt>
+<dd><p>number of samples in the current frame
+</p></dd>
+<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
+<dd><p>original frame position in the file
+</p></dd>
+<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
+<dd><p>frame PTS
+</p></dd>
+<dt> &lsquo;<samp>sample_rate</samp>&rsquo;</dt>
+<dd><p>sample rate
+</p></dd>
+<dt> &lsquo;<samp>startpts</samp>&rsquo;</dt>
+<dd><p>PTS at start of stream
+</p></dd>
+<dt> &lsquo;<samp>startt</samp>&rsquo;</dt>
+<dd><p>time at start of stream
+</p></dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>frame time
+</p></dd>
+<dt> &lsquo;<samp>tb</samp>&rsquo;</dt>
+<dd><p>timestamp timebase
+</p></dd>
+<dt> &lsquo;<samp>volume</samp>&rsquo;</dt>
+<dd><p>last set volume value
+</p></dd>
+</dl>
+
+<p>Note that when &lsquo;<samp>eval</samp>&rsquo; is set to &lsquo;<samp>once</samp>&rsquo; only the
+<var>sample_rate</var> and <var>tb</var> variables are available, all other
+variables will evaluate to NAN.
+</p>
+<a name="Commands-1"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Commands-1">34.40.1 Commands</a></h3>
+
+<p>This filter supports the following commands:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>volume</samp>&rsquo;</dt>
+<dd><p>Modify the volume 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="Examples-63"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-63">34.40.2 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><li>
+Fade volume after time 10 with an annihilation period of 5 seconds:
+<table><tr><td>&nbsp;</td><td><pre class="example">volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
+</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-81"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-81">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-24"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-24">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-89"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-89">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-70"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-70">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-35"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-35">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-18"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-18">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-39"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-39">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-96"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-96">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-88"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-88">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-28"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-28">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-51"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-51">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-94"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-94">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-12"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-12">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="dejudder"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-dejudder">37.18 dejudder</a></h2>
+
+<p>Remove judder produced by partially interlaced telecined content.
+</p>
+<p>Judder can be introduced, for instance, by <a href="#pullup">pullup</a> filter. If the original
+source was partially telecined content then the output of <code>pullup,dejudder</code>
+will have a variable frame rate. May change the recorded frame rate of the
+container. Aside from that change, this filter will not affect constant frame
+rate video.
+</p>
+<p>The option available in this filter is:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>cycle</samp>&rsquo;</dt>
+<dd><p>Specify the length of the window over which the judder repeats.
+</p>
+<p>Accepts any interger greater than 1. Useful values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>4</samp>&rsquo;</dt>
+<dd><p>If the original was telecined from 24 to 30 fps (Film to NTSC).
+</p>
+</dd>
+<dt> &lsquo;<samp>5</samp>&rsquo;</dt>
+<dd><p>If the original was telecined from 25 to 30 fps (PAL to NTSC).
+</p>
+</dd>
+<dt> &lsquo;<samp>20</samp>&rsquo;</dt>
+<dd><p>If a mixture of the two.
+</p></dd>
+</dl>
+
+<p>The default is &lsquo;<samp>4</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<a name="delogo"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-delogo">37.19 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-22"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-22">37.19.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.20 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.21 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-48"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-48">37.21.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.22 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-60"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-60">37.22.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.23 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="ffmpeg-all.html#toc-Syntax-1">37.23.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>borderw</samp>&rsquo;</dt>
+<dd><p>Set the width of the border to be drawn around the text using <var>bordercolor</var>.
+The default value of <var>borderw</var> is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>bordercolor</samp>&rsquo;</dt>
+<dd><p>Set the color to be used for drawing border 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>bordercolor</var> is &quot;black&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;default&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.23.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-86"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-86">37.23.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.24 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 chosen 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.25 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-27"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-27">37.25.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.26 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.27 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-1"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-1">37.27.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.28 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.29 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.29.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.29.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.29.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-29"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-29">37.29.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.30 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.31 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.32 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-49"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-49">37.32.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.33 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-91"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-91">37.33.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="framepack"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-framepack">37.34 framepack</a></h2>
+
+<p>Pack two different video streams into a stereoscopic video, setting proper
+metadata on supported codecs. The two views should have the same size and
+framerate and processing will stop when the shorter video ends. Please note
+that you may conveniently adjust view properties with the <a href="#scale">scale</a> and
+<a href="#fps">fps</a> filters.
+</p>
+<p>This filter accepts the following named parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>format</samp>&rsquo;</dt>
+<dd><p>Desired packing format. Supported values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>sbs</samp>&rsquo;</dt>
+<dd><p>Views are next to each other (default).
+</p>
+</dd>
+<dt> &lsquo;<samp>tab</samp>&rsquo;</dt>
+<dd><p>Views are on top of each other.
+</p>
+</dd>
+<dt> &lsquo;<samp>lines</samp>&rsquo;</dt>
+<dd><p>Views are packed by line.
+</p>
+</dd>
+<dt> &lsquo;<samp>columns</samp>&rsquo;</dt>
+<dd><p>Views are eacked by column.
+</p>
+</dd>
+<dt> &lsquo;<samp>frameseq</samp>&rsquo;</dt>
+<dd><p>Views are temporally interleaved.
+</p>
+</dd>
+</dl>
+
+</dd>
+</dl>
+
+<p>Some examples follow:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example"># Convert left and right views into a frame sequential video.
+ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
+
+# Convert views into a side-by-side video with the same output resolution as the input.
+ffmpeg -i LEFT -i RIGHT -filter_complex [0:v]scale=w=iw/2[left],[1:v]scale=w=iw/2[right],[left][right]framepack=sbs OUTPUT
+</pre></td></tr></table>
+
+<a name="framestep"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-framestep">37.35 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.36 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-46"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-46">37.36.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.37 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="ffmpeg-all.html#toc-Examples-79">37.37.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.38 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-71"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-71">37.38.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.39 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.39.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.39.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.39.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.40 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.41 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.42 histogram</a></h2>
+
+<p>Compute and draw a color distribution histogram for the input video.
+</p>
+<p>The computed histogram is a representation of the color component
+distribution 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 displays the 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 the
+current frame. Below each graph a color component scale meter is shown.
+</p>
+</dd>
+<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
+<dd><p>Displays chroma values (U/V color placement) in a two dimensional
+graph (which is called a vectorscope). The brighter a pixel in the
+vectorscope, the more pixels of the input frame correspond to that pixel
+(i.e., 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. The graph can therefore be used to read 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 the amount of a specific color is increased (while leaving the other
+colors unchanged) the saturation increases, and the indicator moves 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, the graph on the left side
+represents color component value 0 and the right side represents value = 255.
+In column mode, the 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
+many values of the same luminance are distributed across input rows/columns.
+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 the 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 below each other.
+</p>
+<p>Using 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 graphs 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 perform by
+making level adjustments the three waveforms.
+</p>
+</dd>
+<dt> &lsquo;<samp>overlay</samp>&rsquo;</dt>
+<dd><p>Presents information 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 makes it easier to spot
+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-41"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-41">37.42.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.43 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.44 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-14"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-14">37.44.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-2"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Commands-2">37.44.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.45 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.46 il</a></h2>
+
+<p>Deinterleave or interleave fields.
+</p>
+<p>This filter allows one 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.47 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. A vertical lowpass filter
+is always applied in order to avoid twitter effects and reduce moiré patterns.
+</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>
+</dl>
+
+<a name="kerndeint"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-kerndeint">37.48 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-9"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-9">37.48.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.49 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.50 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-77"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-77">37.50.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.51 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-40"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-40">37.51.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.52 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.53 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-34"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-34">37.53.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.54 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.55 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.56 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-30"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-30">37.56.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="ffmpeg-all.html#toc-noise-1">37.57 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-72"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-72">37.57.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.58 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.59 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.59.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.59.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.59.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.60 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>eof_action</samp>&rsquo;</dt>
+<dd><p>The action to take when EOF is encountered on the secondary input, accepts one
+of the following values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>repeat</samp>&rsquo;</dt>
+<dd><p>repeat the last frame (the default)
+</p></dd>
+<dt> &lsquo;<samp>endall</samp>&rsquo;</dt>
+<dd><p>end both streams
+</p></dd>
+<dt> &lsquo;<samp>pass</samp>&rsquo;</dt>
+<dd><p>pass through the main input
+</p></dd>
+</dl>
+
+</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>yuv422</samp>&rsquo;</dt>
+<dd><p>force YUV422 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"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Commands">37.60.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-8"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-8">37.60.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>
+mask 10-20 seconds of a video by applying the delogo filter to a section
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
+-vf '[in]split[split_main][split_delogo];[split_delogo]trim=start=360:end=371,delogo=0:0:640:480[delogoed];[split_main][delogoed]overlay=eof_action=pass[out]'
+masked.avi
+</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.61 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.62 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-44"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-44">37.62.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.63 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.64 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.65 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.66 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-57"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-57">37.66.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.67 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>
+<p><a name="pullup"></a>
+</p><a name="pullup-1"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-pullup-1">37.68 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.69 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.70 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 height
+</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 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>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-69"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-69">37.70.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>
+Rotate the input by 45 degrees clockwise:
+<table><tr><td>&nbsp;</td><td><pre class="example">rotate=45*PI/180
+</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 chosen 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-all.html#toc-Commands-4">37.70.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.71 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.72 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-2"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-2">37.72.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>If one of the values is -n with n &gt; 1, the scale filter will also use a value
+that maintains the aspect ratio of the input image, calculated from the other
+specified dimension. After that it will, however, make sure that the calculated
+dimension is divisible by n and adjust the value if necessary.
+</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 explicitly 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-75"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-75">37.72.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.73 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.74 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-6"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-6">37.74.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.75 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.76 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.77 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.78 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-80"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-80">37.78.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.79 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.80 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.81 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.82 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.83 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.84 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-31"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-31">37.84.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.85 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-95"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-95">37.85.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 accommodate 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.86 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.87 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.88 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.89 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-64"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-64">37.89.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.90 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 15.
+</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-55"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-55">37.90.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.91 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>
+<a name="Options-3"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Options-3">37.91.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>input</samp>&rsquo;</dt>
+<dd><p>Set path to the file used to read the transforms. Default value is
+&lsquo;<tt>transforms.trf</tt>&rsquo;).
+</p>
+</dd>
+<dt> &lsquo;<samp>smoothing</samp>&rsquo;</dt>
+<dd><p>Set the number of frames (value*2 + 1) used for lowpass filtering the
+camera movements. Default value is 10.
+</p>
+<p>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). 0 is a special case where a
+static camera is simulated.
+</p>
+</dd>
+<dt> &lsquo;<samp>optalgo</samp>&rsquo;</dt>
+<dd><p>Set the camera path optimization algorithm.
+</p>
+<p>Accepted values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>gauss</samp>&rsquo;</dt>
+<dd><p>gaussian kernel low-pass filter on camera motion (default)
+</p></dd>
+<dt> &lsquo;<samp>avg</samp>&rsquo;</dt>
+<dd><p>averaging on transformations
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>maxshift</samp>&rsquo;</dt>
+<dd><p>Set maximal number of pixels to translate frames. Default value is -1,
+meaning no limit.
+</p>
+</dd>
+<dt> &lsquo;<samp>maxangle</samp>&rsquo;</dt>
+<dd><p>Set maximal angle in radians (degree*PI/180) to rotate frames. Default
+value is -1, meaning no limit.
+</p>
+</dd>
+<dt> &lsquo;<samp>crop</samp>&rsquo;</dt>
+<dd><p>Specify how to deal with borders that may be visible due to movement
+compensation.
+</p>
+<p>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><p>Invert transforms if set to 1. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>relative</samp>&rsquo;</dt>
+<dd><p>Consider transforms as relative to previsou frame if set to 1,
+absolute if set to 0. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>zoom</samp>&rsquo;</dt>
+<dd><p>Set percentage to zoom. A positive value will result in a zoom-in
+effect, a negative value in a zoom-out effect. Default value is 0 (no
+zoom).
+</p>
+</dd>
+<dt> &lsquo;<samp>optzoom</samp>&rsquo;</dt>
+<dd><p>Set optimal zooming to avoid borders.
+</p>
+<p>Accepted values are:
+</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), see &lsquo;<samp>zoomspeed</samp>&rsquo;
+</p></dd>
+</dl>
+
+<p>Note that the value given at zoom is added to the one calculated here.
+</p>
+</dd>
+<dt> &lsquo;<samp>zoomspeed</samp>&rsquo;</dt>
+<dd><p>Set percent to zoom maximally each frame (enabled when
+&lsquo;<samp>optzoom</samp>&rsquo; is set to 2). Range is from 0 to 5, default value is
+0.25.
+</p>
+</dd>
+<dt> &lsquo;<samp>interpol</samp>&rsquo;</dt>
+<dd><p>Specify 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>Enable virtual tripod mode if set to 1, which is equivalent to
+<code>relative=0:smoothing=0</code>. Default value is 0.
+</p>
+<p>Use also <code>tripod</code> option of <a href="#vidstabdetect">vidstabdetect</a>.
+</p>
+</dd>
+<dt> &lsquo;<samp>debug</samp>&rsquo;</dt>
+<dd><p>Increase log verbosity if set to 1. Also the detected global motions
+are written to the temporary file &lsquo;<tt>global_motions.trf</tt>&rsquo;. Default
+value is 0.
+</p></dd>
+</dl>
+
+<a name="Examples-87"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-87">37.91.2 Examples</a></h3>
+
+<ul>
+<li>
+Use <code>ffmpeg</code> for a typical stabilization with default values:
+<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>
+
+<p>Note the use of the unsharp filter which is always recommended.
+</p>
+</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.92 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.93 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 one 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.93.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-59"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-59">37.93.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.94 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.95 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-20"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-20">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 one 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-76"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-76">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-5"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Commands-5">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-85"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-85">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-2"></a>
+<h2 class="section"><a href="ffmpeg-all.html#toc-concat-2">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-93"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-93">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>
+<dt> &lsquo;<samp>peak</samp>&rsquo;</dt>
+<dd><p>Set peak mode(s).
+</p>
+<p>Available modes can be cumulated (the option is a <code>flag</code> type). Possible
+values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>Disable any peak mode (default).
+</p></dd>
+<dt> &lsquo;<samp>sample</samp>&rsquo;</dt>
+<dd><p>Enable sample-peak mode.
+</p>
+<p>Simple peak mode looking for the higher sample value. It logs a message
+for sample-peak (identified by <code>SPK</code>).
+</p></dd>
+<dt> &lsquo;<samp>true</samp>&rsquo;</dt>
+<dd><p>Enable true-peak mode.
+</p>
+<p>If enabled, the peak lookup is done on an over-sampled version of the input
+stream for better peak accuracy. It logs a message for true-peak.
+(identified by <code>TPK</code>) and true-peak per frame (identified by <code>FTPK</code>).
+This mode requires a build with <code>libswresample</code>.
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Examples-74"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-74">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-38"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-38">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-3"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-3">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-19"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-19">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-4"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-4">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-45"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-45">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-83"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-83">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-25"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-25">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-7"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-7">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-58"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-58">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 one 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-82"></a>
+<h3 class="subsection"><a href="ffmpeg-all.html#toc-Examples-82">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>June 19, 2014</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies64/ffmpeg/doc/ffmpeg-bitstream-filters.html b/dependencies64/ffmpeg/doc/ffmpeg-bitstream-filters.html
new file mode 100644 (file)
index 0000000..115a058
--- /dev/null
@@ -0,0 +1,225 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on June 19, 2014 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>June 19, 2014</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies64/ffmpeg/doc/ffmpeg-codecs.html b/dependencies64/ffmpeg/doc/ffmpeg-codecs.html
new file mode 100644 (file)
index 0000000..a227685
--- /dev/null
@@ -0,0 +1,4261 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on June 19, 2014 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-2" href="#Options-2">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-ac3" href="#ac3">5.1 ac3</a>
+    <ul class="toc">
+      <li><a name="toc-AC_002d3-Decoder-Options" href="#AC_002d3-Decoder-Options">5.1.1 AC-3 Decoder Options</a></li>
+    </ul></li>
+    <li><a name="toc-ffwavesynth" href="#ffwavesynth">5.2 ffwavesynth</a></li>
+    <li><a name="toc-libcelt" href="#libcelt">5.3 libcelt</a></li>
+    <li><a name="toc-libgsm" href="#libgsm">5.4 libgsm</a></li>
+    <li><a name="toc-libilbc" href="#libilbc">5.5 libilbc</a>
+    <ul class="toc">
+      <li><a name="toc-Options-16" href="#Options-16">5.5.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libopencore_002damrnb" href="#libopencore_002damrnb">5.6 libopencore-amrnb</a></li>
+    <li><a name="toc-libopencore_002damrwb" href="#libopencore_002damrwb">5.7 libopencore-amrwb</a></li>
+    <li><a name="toc-libopus-1" href="#libopus-1">5.8 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-14" href="#Options-14">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-18" href="#Options-18">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-12" href="#Options-12">8.3.1 Options</a></li>
+      <li><a name="toc-Examples-2" href="#Examples-2">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-13" href="#Options-13">8.4.1 Options</a></li>
+      <li><a name="toc-Examples-1" href="#Examples-1">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-5" href="#Options-5">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" href="#Options">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-4" href="#Options-4">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-6" href="#Options-6">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-17" href="#Options-17">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-3" href="#Options-3">8.10.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libopus" href="#libopus">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-10" href="#Options-10">8.12.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libwavpack-1" href="#libwavpack-1">8.13 libwavpack</a>
+    <ul class="toc">
+      <li><a name="toc-Options-15" href="#Options-15">8.13.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-wavpack" href="#wavpack">8.14 wavpack</a>
+    <ul class="toc">
+      <li><a name="toc-Options-11" href="#Options-11">8.14.1 Options</a>
+      <ul class="toc">
+        <li><a name="toc-Shared-options" href="#Shared-options">8.14.1.1 Shared options</a></li>
+        <li><a name="toc-Private-options" href="#Private-options">8.14.1.2 Private options</a></li>
+      </ul>
+</li>
+    </ul>
+</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-1" href="#Options-1">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-20" href="#Options-20">9.2.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libwebp" href="#libwebp">9.3 libwebp</a>
+    <ul class="toc">
+      <li><a name="toc-Pixel-Format" href="#Pixel-Format">9.3.1 Pixel Format</a></li>
+      <li><a name="toc-Options-7" href="#Options-7">9.3.2 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libx264_002c-libx264rgb" href="#libx264_002c-libx264rgb">9.4 libx264, libx264rgb</a>
+    <ul class="toc">
+      <li><a name="toc-Supported-Pixel-Formats" href="#Supported-Pixel-Formats">9.4.1 Supported Pixel Formats</a></li>
+      <li><a name="toc-Options-19" href="#Options-19">9.4.2 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libxvid" href="#libxvid">9.5 libxvid</a>
+    <ul class="toc">
+      <li><a name="toc-Options-9" href="#Options-9">9.5.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-png" href="#png">9.6 png</a>
+    <ul class="toc">
+      <li><a name="toc-Private-options-1" href="#Private-options-1">9.6.1 Private options</a></li>
+    </ul></li>
+    <li><a name="toc-ProRes" href="#ProRes">9.7 ProRes</a>
+    <ul class="toc">
+      <li><a name="toc-Private-Options-for-prores_002dks" href="#Private-Options-for-prores_002dks">9.7.1 Private Options for prores-ks</a></li>
+      <li><a name="toc-Speed-considerations" href="#Speed-considerations">9.7.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.
+Negative values behave identical to the corresponding positive ones, except
+that the score is normalized.
+Positive values exist primarly for compatibility reasons and are not so useful.
+</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>-decoders</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-2"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-2">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>
+
+<p>A description of some of the currently available audio decoders
+follows.
+</p>
+<a name="ac3"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-ac3">5.1 ac3</a></h2>
+
+<p>AC-3 audio decoder.
+</p>
+<p>This decoder implements part of ATSC A/52:2010 and ETSI TS 102 366, as well as
+the undocumented RealAudio 3 (a.k.a. dnet).
+</p>
+<a name="AC_002d3-Decoder-Options"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-AC_002d3-Decoder-Options">5.1.1 AC-3 Decoder Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-drc_scale <var>value</var></samp>&rsquo;</dt>
+<dd><p>Dynamic Range Scale Factor. The factor to apply to dynamic range values
+from the AC-3 stream. This factor is applied exponentially.
+There are 3 notable scale factor ranges:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>drc_scale == 0</samp>&rsquo;</dt>
+<dd><p>DRC disabled. Produces full range audio.
+</p></dd>
+<dt> &lsquo;<samp>0 &lt; drc_scale &lt;= 1</samp>&rsquo;</dt>
+<dd><p>DRC enabled.  Applies a fraction of the stream DRC value.
+Audio reproduction is between full range and full compression.
+</p></dd>
+<dt> &lsquo;<samp>drc_scale &gt; 1</samp>&rsquo;</dt>
+<dd><p>DRC enabled. Applies drc_scale asymmetrically.
+Loud sounds are fully compressed.  Soft sounds are enhanced.
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="ffwavesynth"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-ffwavesynth">5.2 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.3 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.4 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.5 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-16"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-16">5.5.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.6 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.7 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-codecs.html#toc-libopus-1">5.8 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-14"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-14">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-18"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-18">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>-encoders</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-12"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-12">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-2"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Examples-2">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>Support for encoding 7.1 audio is only available with libfdk-aac 0.1.3 or
+higher.
+</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-13"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-13">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-1"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Examples-1">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-5"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-5">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 overridden 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"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options">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-4"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-4">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-6"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-6">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-17"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-17">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-3"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-3">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"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-libopus">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-10"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-10">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>
+
+<p><a name="libwavpack"></a>
+</p><a name="libwavpack-1"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-libwavpack-1">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.
+</p>
+<p>Requires the presence of the libwavpack headers and library during
+configuration. You need to explicitly configure the build with
+<code>--enable-libwavpack</code>.
+</p>
+<p>Note that a libavcodec-native encoder for the WavPack codec exists so users can
+encode audios with this codec without using this encoder. See <a href="#wavpackenc">wavpackenc</a>.
+</p>
+<a name="Options-15"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-15">8.13.1 Options</a></h3>
+
+<p><code>wavpack</code> command line utility&rsquo;s corresponding options are listed in
+parentheses, if any.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>frame_size (<em>--blocksize</em>)</samp>&rsquo;</dt>
+<dd><p>Default is 32768.
+</p>
+</dd>
+<dt> &lsquo;<samp>compression_level</samp>&rsquo;</dt>
+<dd><p>Set speed vs. compression tradeoff. Acceptable arguments are listed below:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>0 (<em>-f</em>)</samp>&rsquo;</dt>
+<dd><p>Fast mode.
+</p>
+</dd>
+<dt> &lsquo;<samp>1</samp>&rsquo;</dt>
+<dd><p>Normal (default) settings.
+</p>
+</dd>
+<dt> &lsquo;<samp>2 (<em>-h</em>)</samp>&rsquo;</dt>
+<dd><p>High quality.
+</p>
+</dd>
+<dt> &lsquo;<samp>3 (<em>-hh</em>)</samp>&rsquo;</dt>
+<dd><p>Very high quality.
+</p>
+</dd>
+<dt> &lsquo;<samp>4-8 (<em>-hh -x</em><var>EXTRAPROC</var>)</samp>&rsquo;</dt>
+<dd><p>Same as &lsquo;<samp>3</samp>&rsquo;, but with extra processing enabled.
+</p>
+<p>&lsquo;<samp>4</samp>&rsquo; is the same as &lsquo;<samp>-x2</samp>&rsquo; and &lsquo;<samp>8</samp>&rsquo; is the same as &lsquo;<samp>-x6</samp>&rsquo;.
+</p>
+</dd>
+</dl>
+</dd>
+</dl>
+
+<p><a name="wavpackenc"></a>
+</p><a name="wavpack"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-wavpack">8.14 wavpack</a></h2>
+
+<p>WavPack lossless audio encoder.
+</p>
+<p>This is a libavcodec-native WavPack encoder. There is also an encoder based on
+libwavpack, but there is virtually no reason to use that encoder.
+</p>
+<p>See also <a href="#libwavpack">libwavpack</a>.
+</p>
+<a name="Options-11"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-11">8.14.1 Options</a></h3>
+
+<p>The equivalent options for <code>wavpack</code> command line utility are listed in
+parentheses.
+</p>
+<a name="Shared-options"></a>
+<h4 class="subsubsection"><a href="ffmpeg-codecs.html#toc-Shared-options">8.14.1.1 Shared options</a></h4>
+
+<p>The following shared options are effective for this encoder. Only special notes
+about this particular encoder will be documented here. For the general meaning
+of the options, see <a href="#codec_002doptions">the Codec Options chapter</a>.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>frame_size (<em>--blocksize</em>)</samp>&rsquo;</dt>
+<dd><p>For this encoder, the range for this option is between 128 and 131072. Default
+is automatically decided based on sample rate and number of channel.
+</p>
+<p>For the complete formula of calculating default, see
+&lsquo;<tt>libavcodec/wavpackenc.c</tt>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>compression_level (<em>-f</em>, <em>-h</em>, <em>-hh</em>, and <em>-x</em>)</samp>&rsquo;</dt>
+<dd><p>This option&rsquo;s syntax is consistent with <a href="#libwavpack">libwavpack</a>&rsquo;s.
+</p></dd>
+</dl>
+
+<a name="Private-options"></a>
+<h4 class="subsubsection"><a href="ffmpeg-codecs.html#toc-Private-options">8.14.1.2 Private options</a></h4>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>joint_stereo (<em>-j</em>)</samp>&rsquo;</dt>
+<dd><p>Set whether to enable joint stereo. Valid values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>on (<em>1</em>)</samp>&rsquo;</dt>
+<dd><p>Force mid/side audio encoding.
+</p></dd>
+<dt> &lsquo;<samp>off (<em>0</em>)</samp>&rsquo;</dt>
+<dd><p>Force left/right audio encoding.
+</p></dd>
+<dt> &lsquo;<samp>auto</samp>&rsquo;</dt>
+<dd><p>Let the encoder decide automatically.
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>optimize_mono</samp>&rsquo;</dt>
+<dd><p>Set whether to enable optimization for mono. This option is only effective for
+non-mono streams. Available values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>on</samp>&rsquo;</dt>
+<dd><p>enabled
+</p></dd>
+<dt> &lsquo;<samp>off</samp>&rsquo;</dt>
+<dd><p>disabled
+</p></dd>
+</dl>
+
+</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 information about the libtheora project see
+<a href="http://www.theora.org/">http://www.theora.org/</a>.
+</p>
+<a name="Options-1"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-1">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-20"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-20">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="libwebp"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-libwebp">9.3 libwebp</a></h2>
+
+<p>libwebp WebP Image encoder wrapper
+</p>
+<p>libwebp is Google&rsquo;s official encoder for WebP images. It can encode in either
+lossy or lossless mode. Lossy images are essentially a wrapper around a VP8
+frame. Lossless images are a separate codec developed by Google.
+</p>
+<a name="Pixel-Format"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Pixel-Format">9.3.1 Pixel Format</a></h3>
+
+<p>Currently, libwebp only supports YUV420 for lossy and RGB for lossless due
+to limitations of the format and libwebp. Alpha is supported for either mode.
+Because of API limitations, if RGB is passed in when encoding lossy or YUV is
+passed in for encoding lossless, the pixel format will automatically be
+converted using functions from libwebp. This is not ideal and is done only for
+convenience.
+</p>
+<a name="Options-7"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-7">9.3.2 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-lossless <var>boolean</var></samp>&rsquo;</dt>
+<dd><p>Enables/Disables use of lossless mode. Default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>-compression_level <var>integer</var></samp>&rsquo;</dt>
+<dd><p>For lossy, this is a quality/speed tradeoff. Higher values give better quality
+for a given size at the cost of increased encoding time. For lossless, this is
+a size/speed tradeoff. Higher values give smaller size at the cost of increased
+encoding time. More specifically, it controls the number of extra algorithms
+and compression tools used, and varies the combination of these tools. This
+maps to the <var>method</var> option in libwebp. The valid range is 0 to 6.
+Default is 4.
+</p>
+</dd>
+<dt> &lsquo;<samp>-qscale <var>float</var></samp>&rsquo;</dt>
+<dd><p>For lossy encoding, this controls image quality, 0 to 100. For lossless
+encoding, this controls the effort and time spent at compressing more. The
+default value is 75. Note that for usage via libavcodec, this option is called
+<var>global_quality</var> and must be multiplied by <var>FF_QP2LAMBDA</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>-preset <var>type</var></samp>&rsquo;</dt>
+<dd><p>Configuration preset. This does some automatic settings based on the general
+type of the image.
+</p><dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>Do not use a preset.
+</p></dd>
+<dt> &lsquo;<samp>default</samp>&rsquo;</dt>
+<dd><p>Use the encoder default.
+</p></dd>
+<dt> &lsquo;<samp>picture</samp>&rsquo;</dt>
+<dd><p>Digital picture, like portrait, inner shot
+</p></dd>
+<dt> &lsquo;<samp>photo</samp>&rsquo;</dt>
+<dd><p>Outdoor photograph, with natural lighting
+</p></dd>
+<dt> &lsquo;<samp>drawing</samp>&rsquo;</dt>
+<dd><p>Hand or line drawing, with high-contrast details
+</p></dd>
+<dt> &lsquo;<samp>icon</samp>&rsquo;</dt>
+<dd><p>Small-sized colorful images
+</p></dd>
+<dt> &lsquo;<samp>text</samp>&rsquo;</dt>
+<dd><p>Text-like
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="libx264_002c-libx264rgb"></a>
+<h2 class="section"><a href="ffmpeg-codecs.html#toc-libx264_002c-libx264rgb">9.4 libx264, libx264rgb</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 one 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>
+<p>The libx264rgb encoder is the same as libx264, except it accepts packed RGB
+pixel formats as input instead of YUV.
+</p>
+<a name="Supported-Pixel-Formats"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Supported-Pixel-Formats">9.4.1 Supported Pixel Formats</a></h3>
+
+<p>x264 supports 8- to 10-bit color spaces. The exact bit depth is controlled at
+x264&rsquo;s configure time. FFmpeg only supports one bit depth in one particular
+build. In other words, it is not possible to build one FFmpeg with multiple
+versions of x264 with different bit depths.
+</p>
+<a name="Options-19"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-19">9.4.2 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 compatibility 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.5 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-9"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Options-9">9.5.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.6 png</a></h2>
+
+<p>PNG image encoder.
+</p>
+<a name="Private-options-1"></a>
+<h3 class="subsection"><a href="ffmpeg-codecs.html#toc-Private-options-1">9.6.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.7 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 chosen 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.7.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.7.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>June 19, 2014</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies64/ffmpeg/doc/ffmpeg-devices.html b/dependencies64/ffmpeg/doc/ffmpeg-devices.html
new file mode 100644 (file)
index 0000000..bc5a30b
--- /dev/null
@@ -0,0 +1,1443 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on June 19, 2014 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-1" href="#alsa-1">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-11" href="#Options-11">3.3.1 Options</a></li>
+      <li><a name="toc-Examples-8" href="#Examples-8">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-1" href="#fbdev-1">3.5 fbdev</a></li>
+    <li><a name="toc-iec61883" href="#iec61883">3.6 iec61883</a>
+    <ul class="toc">
+      <li><a name="toc-Options-2" href="#Options-2">3.6.1 Options</a></li>
+      <li><a name="toc-Examples-10" href="#Examples-10">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-13" href="#Options-13">3.8.1 Options</a></li>
+      <li><a name="toc-Examples-6" href="#Examples-6">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-4" href="#Options-4">3.10.1 Options</a></li>
+      <li><a name="toc-Examples-5" href="#Examples-5">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-12" href="#Options-12">3.12.1 Options</a></li>
+      <li><a name="toc-Examples-1" href="#Examples-1">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-7" href="#Options-7">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-5" href="#Options-5">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" href="#alsa">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" href="#Options">4.2.1 Options</a></li>
+      <li><a name="toc-Examples-4" href="#Examples-4">4.2.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-decklink" href="#decklink">4.3 decklink</a>
+    <ul class="toc">
+      <li><a name="toc-Options-9" href="#Options-9">4.3.1 Options</a></li>
+      <li><a name="toc-Examples-11" href="#Examples-11">4.3.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-fbdev" href="#fbdev">4.4 fbdev</a>
+    <ul class="toc">
+      <li><a name="toc-Options-6" href="#Options-6">4.4.1 Options</a></li>
+      <li><a name="toc-Examples" href="#Examples">4.4.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-opengl" href="#opengl">4.5 opengl</a>
+    <ul class="toc">
+      <li><a name="toc-Options-8" href="#Options-8">4.5.1 Options</a></li>
+      <li><a name="toc-Examples-7" href="#Examples-7">4.5.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-oss-1" href="#oss-1">4.6 oss</a></li>
+    <li><a name="toc-pulse" href="#pulse">4.7 pulse</a>
+    <ul class="toc">
+      <li><a name="toc-Options-1" href="#Options-1">4.7.1 Options</a></li>
+      <li><a name="toc-Examples-3" href="#Examples-3">4.7.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sdl" href="#sdl">4.8 sdl</a>
+    <ul class="toc">
+      <li><a name="toc-Options-3" href="#Options-3">4.8.1 Options</a></li>
+      <li><a name="toc-Interactive-commands" href="#Interactive-commands">4.8.2 Interactive commands</a></li>
+      <li><a name="toc-Examples-12" href="#Examples-12">4.8.3 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sndio-1" href="#sndio-1">4.9 sndio</a></li>
+    <li><a name="toc-xv" href="#xv">4.10 xv</a>
+    <ul class="toc">
+      <li><a name="toc-Options-10" href="#Options-10">4.10.1 Options</a></li>
+      <li><a name="toc-Examples-2" href="#Examples-2">4.10.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-1"></a>
+<h2 class="section"><a href="ffmpeg-devices.html#toc-alsa-1">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-11"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Options-11">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-8"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Examples-8">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-1"></a>
+<h2 class="section"><a href="ffmpeg-devices.html#toc-fbdev-1">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-2"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Options-2">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-10"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Examples-10">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-13"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Options-13">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-6"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Examples-6">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 one 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-4"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Options-4">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-5"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Examples-5">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-12"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Options-12">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-1"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Examples-1">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-7"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Options-7">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 one 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 one 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-5"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Options-5">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"></a>
+<h2 class="section"><a href="ffmpeg-devices.html#toc-alsa">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 one 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"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Options">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-4"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Examples-4">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="decklink"></a>
+<h2 class="section"><a href="ffmpeg-devices.html#toc-decklink">4.3 decklink</a></h2>
+
+<p>The decklink output device provides playback capabilities for Blackmagic
+DeckLink devices.
+</p>
+<p>To enable this output device, you need the Blackmagic DeckLink SDK and you
+need to configure with the appropriate <code>--extra-cflags</code>
+and <code>--extra-ldflags</code>.
+On Windows, you need to run the IDL files through <code>widl</code>.
+</p>
+<p>DeckLink is very picky about the formats it supports. Pixel format is always
+uyvy422, framerate and video size must be determined for your device with
+<code>-list_formats 1</code>. Audio sample rate is always 48 kHz.
+</p>
+<a name="Options-9"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Options-9">4.3.1 Options</a></h3>
+
+<dl compact="compact">
+<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>
+<dt> &lsquo;<samp>list_formats</samp>&rsquo;</dt>
+<dd><p>If set to &lsquo;<samp>true</samp>&rsquo;, print a list of supported formats and exit.
+Defaults to &lsquo;<samp>false</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>preroll</samp>&rsquo;</dt>
+<dd><p>Amount of time to preroll video in seconds.
+Defaults to &lsquo;<samp>0.5</samp>&rsquo;.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-11"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Examples-11">4.3.2 Examples</a></h3>
+
+<ul>
+<li>
+List output devices:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i test.avi -f decklink -list_devices 1 dummy
+</pre></td></tr></table>
+
+</li><li>
+List supported formats:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i test.avi -f decklink -list_formats 1 'DeckLink Mini Monitor'
+</pre></td></tr></table>
+
+</li><li>
+Play video clip:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i test.avi -f decklink -pix_fmt uyvy422 'DeckLink Mini Monitor'
+</pre></td></tr></table>
+
+</li><li>
+Play video clip with non-standard framerate or video size:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i test.avi -f decklink -pix_fmt uyvy422 -s 720x486 -r 24000/1001 'DeckLink Mini Monitor'
+</pre></td></tr></table>
+
+</li></ul>
+
+<a name="fbdev"></a>
+<h2 class="section"><a href="ffmpeg-devices.html#toc-fbdev">4.4 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-6"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Options-6">4.4.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"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Examples">4.4.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="opengl"></a>
+<h2 class="section"><a href="ffmpeg-devices.html#toc-opengl">4.5 opengl</a></h2>
+<p>OpenGL output device.
+</p>
+<p>To enable this output device you need to configure FFmpeg with <code>--enable-opengl</code>.
+</p>
+<p>This output device allows one to render to OpenGL context.
+Context may be provided by application or default SDL window is created.
+</p>
+<p>When device renders to external context, application must implement handlers for following messages:
+<code>AV_CTL_MESSAGE_CREATE_WINDOW_BUFFER</code> - create OpenGL context on current thread.
+<code>AV_CTL_MESSAGE_PREPARE_WINDOW_BUFFER</code> - make OpenGL context current.
+<code>AV_CTL_MESSAGE_DISPLAY_WINDOW_BUFFER</code> - swap buffers.
+<code>AV_CTL_MESSAGE_DESTROY_WINDOW_BUFFER</code> - destroy OpenGL context.
+Application is also required to inform a device about current resolution by sending <code>AV_DEVICE_WINDOW_RESIZED</code> message.
+</p>
+<a name="Options-8"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Options-8">4.5.1 Options</a></h3>
+<dl compact="compact">
+<dt> &lsquo;<samp>background</samp>&rsquo;</dt>
+<dd><p>Set background color. Black is a default.
+</p></dd>
+<dt> &lsquo;<samp>no_window</samp>&rsquo;</dt>
+<dd><p>Disables default SDL window when set to non-zero value.
+Application must provide OpenGL context and both <code>window_size_cb</code> and <code>window_swap_buffers_cb</code> callbacks when set.
+</p></dd>
+<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.
+Ignored when &lsquo;<samp>no_window</samp>&rsquo; is set.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-7"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Examples-7">4.5.2 Examples</a></h3>
+<p>Play a file on SDL window using OpenGL rendering:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg  -i INPUT -f opengl &quot;window title&quot;
+</pre></td></tr></table>
+
+<a name="oss-1"></a>
+<h2 class="section"><a href="ffmpeg-devices.html#toc-oss-1">4.6 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.7 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-1"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Options-1">4.7.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-3"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Examples-3">4.7.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.8 sdl</a></h2>
+
+<p>SDL (Simple DirectMedia Layer) output device.
+</p>
+<p>This output device allows one 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-3"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Options-3">4.8.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.8.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-12"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Examples-12">4.8.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.9 sndio</a></h2>
+
+<p>sndio audio output device.
+</p>
+<a name="xv"></a>
+<h2 class="section"><a href="ffmpeg-devices.html#toc-xv">4.10 xv</a></h2>
+
+<p>XV (XVideo) output device.
+</p>
+<p>This output device allows one to show a video stream in a X Window System
+window.
+</p>
+<a name="Options-10"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Options-10">4.10.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-2"></a>
+<h3 class="subsection"><a href="ffmpeg-devices.html#toc-Examples-2">4.10.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>June 19, 2014</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies64/ffmpeg/doc/ffmpeg-filters.html b/dependencies64/ffmpeg/doc/ffmpeg-filters.html
new file mode 100644 (file)
index 0000000..1c16121
--- /dev/null
@@ -0,0 +1,11807 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on June 19, 2014 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-37" href="#Examples-37">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-32" href="#Examples-32">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-20" href="#Examples-20">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-64" href="#Examples-64">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-28" href="#Examples-28">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-38" href="#Examples-38">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-5" href="#Examples-5">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-45" href="#Examples-45">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-23" href="#Examples-23">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-65" href="#Examples-65">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>
+    <ul class="toc">
+      <li><a name="toc-Examples-14" href="#Examples-14">6.30.1 Examples</a></li>
+    </ul></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-35" href="#Examples-35">6.33.1 Examples</a></li>
+      <li><a name="toc-Commands" href="#Commands">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-3" href="#Examples-3">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-Commands-5" href="#Commands-5">6.40.1 Commands</a></li>
+      <li><a name="toc-Examples-55" href="#Examples-55">6.40.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-volumedetect" href="#volumedetect">6.41 volumedetect</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-17" href="#Examples-17">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-44" href="#Examples-44">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-9" href="#Examples-9">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-72" href="#Examples-72">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-74" href="#Examples-74">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-73" href="#Examples-73">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-15" href="#Examples-15">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-21" href="#Examples-21">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-12" href="#Examples-12">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-8" href="#Examples-8">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-1" href="#Examples-1">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-70" href="#Examples-70">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-dejudder" href="#dejudder">9.18 dejudder</a></li>
+    <li><a name="toc-delogo" href="#delogo">9.19 delogo</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-27" href="#Examples-27">9.19.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-deshake" href="#deshake">9.20 deshake</a></li>
+    <li><a name="toc-drawbox" href="#drawbox">9.21 drawbox</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-46" href="#Examples-46">9.21.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-drawgrid" href="#drawgrid">9.22 drawgrid</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-18" href="#Examples-18">9.22.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-drawtext-1" href="#drawtext-1">9.23 drawtext</a>
+    <ul class="toc">
+      <li><a name="toc-Syntax" href="#Syntax">9.23.1 Syntax</a></li>
+      <li><a name="toc-Text-expansion" href="#Text-expansion">9.23.2 Text expansion</a></li>
+      <li><a name="toc-Examples-34" href="#Examples-34">9.23.3 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-edgedetect" href="#edgedetect">9.24 edgedetect</a></li>
+    <li><a name="toc-extractplanes" href="#extractplanes">9.25 extractplanes</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-54" href="#Examples-54">9.25.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-elbg" href="#elbg">9.26 elbg</a></li>
+    <li><a name="toc-fade" href="#fade">9.27 fade</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-22" href="#Examples-22">9.27.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-field" href="#field">9.28 field</a></li>
+    <li><a name="toc-fieldmatch" href="#fieldmatch">9.29 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.29.1 p/c/n/u/b meaning</a>
+      <ul class="toc">
+        <li><a name="toc-p_002fc_002fn" href="#p_002fc_002fn">9.29.1.1 p/c/n</a></li>
+        <li><a name="toc-u_002fb" href="#u_002fb">9.29.1.2 u/b</a></li>
+      </ul></li>
+      <li><a name="toc-Examples-30" href="#Examples-30">9.29.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-fieldorder" href="#fieldorder">9.30 fieldorder</a></li>
+    <li><a name="toc-fifo" href="#fifo">9.31 fifo</a></li>
+    <li><a name="toc-format-1" href="#format-1">9.32 format</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-71" href="#Examples-71">9.32.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-fps-1" href="#fps-1">9.33 fps</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-31" href="#Examples-31">9.33.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-framepack" href="#framepack">9.34 framepack</a></li>
+    <li><a name="toc-framestep" href="#framestep">9.35 framestep</a></li>
+    <li><a name="toc-frei0r-1" href="#frei0r-1">9.36 frei0r</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-49" href="#Examples-49">9.36.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-geq" href="#geq">9.37 geq</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-29" href="#Examples-29">9.37.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-gradfun" href="#gradfun">9.38 gradfun</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-41" href="#Examples-41">9.38.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-haldclut-1" href="#haldclut-1">9.39 haldclut</a>
+    <ul class="toc">
+      <li><a name="toc-Workflow-examples" href="#Workflow-examples">9.39.1 Workflow examples</a>
+      <ul class="toc">
+        <li><a name="toc-Hald-CLUT-video-stream" href="#Hald-CLUT-video-stream">9.39.1.1 Hald CLUT video stream</a></li>
+        <li><a name="toc-Hald-CLUT-with-preview" href="#Hald-CLUT-with-preview">9.39.1.2 Hald CLUT with preview</a></li>
+      </ul>
+</li>
+    </ul></li>
+    <li><a name="toc-hflip" href="#hflip">9.40 hflip</a></li>
+    <li><a name="toc-histeq" href="#histeq">9.41 histeq</a></li>
+    <li><a name="toc-histogram" href="#histogram">9.42 histogram</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-52" href="#Examples-52">9.42.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-hqdn3d-1" href="#hqdn3d-1">9.43 hqdn3d</a></li>
+    <li><a name="toc-hue" href="#hue">9.44 hue</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-42" href="#Examples-42">9.44.1 Examples</a></li>
+      <li><a name="toc-Commands-3" href="#Commands-3">9.44.2 Commands</a></li>
+    </ul></li>
+    <li><a name="toc-idet" href="#idet">9.45 idet</a></li>
+    <li><a name="toc-il" href="#il">9.46 il</a></li>
+    <li><a name="toc-interlace" href="#interlace">9.47 interlace</a></li>
+    <li><a name="toc-kerndeint" href="#kerndeint">9.48 kerndeint</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-26" href="#Examples-26">9.48.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-lut3d-1" href="#lut3d-1">9.49 lut3d</a></li>
+    <li><a name="toc-lut_002c-lutrgb_002c-lutyuv" href="#lut_002c-lutrgb_002c-lutyuv">9.50 lut, lutrgb, lutyuv</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-4" href="#Examples-4">9.50.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mergeplanes" href="#mergeplanes">9.51 mergeplanes</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-56" href="#Examples-56">9.51.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mcdeint" href="#mcdeint">9.52 mcdeint</a></li>
+    <li><a name="toc-mp" href="#mp">9.53 mp</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-50" href="#Examples-50">9.53.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mpdecimate" href="#mpdecimate">9.54 mpdecimate</a></li>
+    <li><a name="toc-negate" href="#negate">9.55 negate</a></li>
+    <li><a name="toc-noformat" href="#noformat">9.56 noformat</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-25" href="#Examples-25">9.56.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-noise" href="#noise">9.57 noise</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-53" href="#Examples-53">9.57.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-null" href="#null">9.58 null</a></li>
+    <li><a name="toc-ocv" href="#ocv">9.59 ocv</a>
+    <ul class="toc">
+      <li><a name="toc-dilate-1" href="#dilate-1">9.59.1 dilate</a></li>
+      <li><a name="toc-erode" href="#erode">9.59.2 erode</a></li>
+      <li><a name="toc-smooth" href="#smooth">9.59.3 smooth</a></li>
+    </ul></li>
+    <li><a name="toc-overlay-1" href="#overlay-1">9.60 overlay</a>
+    <ul class="toc">
+      <li><a name="toc-Commands-2" href="#Commands-2">9.60.1 Commands</a></li>
+      <li><a name="toc-Examples-33" href="#Examples-33">9.60.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-owdenoise" href="#owdenoise">9.61 owdenoise</a></li>
+    <li><a name="toc-pad" href="#pad">9.62 pad</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-39" href="#Examples-39">9.62.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-perspective" href="#perspective">9.63 perspective</a></li>
+    <li><a name="toc-phase" href="#phase">9.64 phase</a></li>
+    <li><a name="toc-pixdesctest" href="#pixdesctest">9.65 pixdesctest</a></li>
+    <li><a name="toc-pp" href="#pp">9.66 pp</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-43" href="#Examples-43">9.66.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-psnr" href="#psnr">9.67 psnr</a></li>
+    <li><a name="toc-pullup-1" href="#pullup-1">9.68 pullup</a></li>
+    <li><a name="toc-removelogo" href="#removelogo">9.69 removelogo</a></li>
+    <li><a name="toc-rotate" href="#rotate">9.70 rotate</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-62" href="#Examples-62">9.70.1 Examples</a></li>
+      <li><a name="toc-Commands-4" href="#Commands-4">9.70.2 Commands</a></li>
+    </ul></li>
+    <li><a name="toc-sab" href="#sab">9.71 sab</a></li>
+    <li><a name="toc-scale-1" href="#scale-1">9.72 scale</a>
+    <ul class="toc">
+      <li><a name="toc-Options-1" href="#Options-1">9.72.1 Options</a></li>
+      <li><a name="toc-Examples-24" href="#Examples-24">9.72.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-separatefields" href="#separatefields">9.73 separatefields</a></li>
+    <li><a name="toc-setdar_002c-setsar" href="#setdar_002c-setsar">9.74 setdar, setsar</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-66" href="#Examples-66">9.74.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-setfield-1" href="#setfield-1">9.75 setfield</a></li>
+    <li><a name="toc-showinfo" href="#showinfo">9.76 showinfo</a></li>
+    <li><a name="toc-smartblur-1" href="#smartblur-1">9.77 smartblur</a></li>
+    <li><a name="toc-stereo3d" href="#stereo3d">9.78 stereo3d</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-16" href="#Examples-16">9.78.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-spp" href="#spp">9.79 spp</a></li>
+    <li><a name="toc-subtitles-1" href="#subtitles-1">9.80 subtitles</a></li>
+    <li><a name="toc-super2xsai" href="#super2xsai">9.81 super2xsai</a></li>
+    <li><a name="toc-swapuv" href="#swapuv">9.82 swapuv</a></li>
+    <li><a name="toc-telecine" href="#telecine">9.83 telecine</a></li>
+    <li><a name="toc-thumbnail" href="#thumbnail">9.84 thumbnail</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-51" href="#Examples-51">9.84.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-tile" href="#tile">9.85 tile</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-2" href="#Examples-2">9.85.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-tinterlace" href="#tinterlace">9.86 tinterlace</a></li>
+    <li><a name="toc-transpose" href="#transpose">9.87 transpose</a></li>
+    <li><a name="toc-trim" href="#trim">9.88 trim</a></li>
+    <li><a name="toc-unsharp" href="#unsharp">9.89 unsharp</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-19" href="#Examples-19">9.89.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-vidstabdetect-1" href="#vidstabdetect-1">9.90 vidstabdetect</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-59" href="#Examples-59">9.90.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-vidstabtransform-1" href="#vidstabtransform-1">9.91 vidstabtransform</a>
+    <ul class="toc">
+      <li><a name="toc-Options" href="#Options">9.91.1 Options</a></li>
+      <li><a name="toc-Examples-13" href="#Examples-13">9.91.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-vflip" href="#vflip">9.92 vflip</a></li>
+    <li><a name="toc-vignette" href="#vignette">9.93 vignette</a>
+    <ul class="toc">
+      <li><a name="toc-Expressions" href="#Expressions">9.93.1 Expressions</a></li>
+      <li><a name="toc-Examples-48" href="#Examples-48">9.93.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-w3fdif" href="#w3fdif">9.94 w3fdif</a></li>
+    <li><a name="toc-yadif-1" href="#yadif-1">9.95 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-36" href="#Examples-36">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-11" href="#Examples-11">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-1" href="#Commands-1">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-57" href="#Examples-57">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-10" href="#Examples-10">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-6" href="#Examples-6">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-60" href="#Examples-60">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-40" href="#Examples-40">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-7" href="#Examples-7">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" href="#Examples">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-67" href="#Examples-67">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-68" href="#Examples-68">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-47" href="#Examples-47">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-63" href="#Examples-63">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-61" href="#Examples-61">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-69" href="#Examples-69">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 one 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>Filtergraph description composition entails several levels of
+escaping. See <a href="ffmpeg-utils.html#quoting_005fand_005fescaping">(ffmpeg-utils)quoting_and_escaping</a> for more
+information about the employed escaping procedure.
+</p>
+<p>A first level escaping affects the content of each filter option
+value, which may contain the special character <code>:</code> used to
+separate values, or one of the escaping characters <code>\'</code>.
+</p>
+<p>A second level escaping affects the whole filter description, which
+may contain the escaping characters <code>\'</code> or the special
+characters <code>[],;</code> used by the filtergraph description.
+</p>
+<p>Finally, when you specify a filtergraph on a shell commandline, you
+need to perform a third level escaping for the shell special
+characters contained within it.
+</p>
+<p>For example, consider the following string to be embedded in
+the <a href="#drawtext">drawtext</a> filter description &lsquo;<samp>text</samp>&rsquo; value:
+</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>This string contains the <code>'</code> special escaping character, and the
+<code>:</code> special character, so it needs to be escaped in this way:
+</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
+description 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>(note that in addition to the <code>\'</code> escaping special characters,
+also <code>,</code> needs to be escaped).
+</p>
+<p>Finally an additional level of escaping is 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>
+
+<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-37"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-37">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-32"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-32">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-20"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-20">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-64"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-64">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-28"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-28">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-38"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-38">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-5"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-5">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-45"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-45">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-23"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-23">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. <var>attacks</var> refers to
+increase of volume and <var>decays</var> 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. A typical value for attack is 0.3 seconds and
+a typical value for decay is 0.8 seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>points</samp>&rsquo;</dt>
+<dd><p>Set list of points for the transfer function, specified in dB relative to the
+maximum possible signal amplitude. Each key points list must be defined using
+the following syntax: <code>x0/y0|x1/y1|x2/y2|....</code> or
+<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 the curve radius in dB for all joints. Defaults to 0.01.
+</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.
+This allows easy adjustment of the overall gain. Defaults to 0.
+</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. Defaults to 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>delay</samp>&rsquo;</dt>
+<dd><p>Set delay in seconds. The input audio is analyzed 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. Defaults to 0.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-65"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-65">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="Examples-14"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-14">6.30.1 Examples</a></h3>
+<ul>
+<li>
+Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
+<table><tr><td>&nbsp;</td><td><pre class="example">equalizer=f=1000:width_type=h:width=200:g=-10
+</pre></td></tr></table>
+
+</li><li>
+Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
+<table><tr><td>&nbsp;</td><td><pre class="example">equalizer=f=1000:width_type=q:width=1:g=2,equalizer=f=100:width_type=q:width=2:g=-5
+</pre></td></tr></table>
+</li></ul>
+
+<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-35"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-35">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"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Commands">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-3"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-3">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>Set audio volume expression.
+</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 &quot;1.0&quot;.
+</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>
+<dt> &lsquo;<samp>eval</samp>&rsquo;</dt>
+<dd><p>Set when the volume expression is evaluated.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>once</samp>&rsquo;</dt>
+<dd><p>only evaluate expression once during the filter initialization, or
+when the &lsquo;<samp>volume</samp>&rsquo; command is sent
+</p>
+</dd>
+<dt> &lsquo;<samp>frame</samp>&rsquo;</dt>
+<dd><p>evaluate expression for each incoming frame
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>once</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<p>The volume expression can contain the following parameters.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>frame number (starting at zero)
+</p></dd>
+<dt> &lsquo;<samp>nb_channels</samp>&rsquo;</dt>
+<dd><p>number of channels
+</p></dd>
+<dt> &lsquo;<samp>nb_consumed_samples</samp>&rsquo;</dt>
+<dd><p>number of samples consumed by the filter
+</p></dd>
+<dt> &lsquo;<samp>nb_samples</samp>&rsquo;</dt>
+<dd><p>number of samples in the current frame
+</p></dd>
+<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
+<dd><p>original frame position in the file
+</p></dd>
+<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
+<dd><p>frame PTS
+</p></dd>
+<dt> &lsquo;<samp>sample_rate</samp>&rsquo;</dt>
+<dd><p>sample rate
+</p></dd>
+<dt> &lsquo;<samp>startpts</samp>&rsquo;</dt>
+<dd><p>PTS at start of stream
+</p></dd>
+<dt> &lsquo;<samp>startt</samp>&rsquo;</dt>
+<dd><p>time at start of stream
+</p></dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>frame time
+</p></dd>
+<dt> &lsquo;<samp>tb</samp>&rsquo;</dt>
+<dd><p>timestamp timebase
+</p></dd>
+<dt> &lsquo;<samp>volume</samp>&rsquo;</dt>
+<dd><p>last set volume value
+</p></dd>
+</dl>
+
+<p>Note that when &lsquo;<samp>eval</samp>&rsquo; is set to &lsquo;<samp>once</samp>&rsquo; only the
+<var>sample_rate</var> and <var>tb</var> variables are available, all other
+variables will evaluate to NAN.
+</p>
+<a name="Commands-5"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Commands-5">6.40.1 Commands</a></h3>
+
+<p>This filter supports the following commands:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>volume</samp>&rsquo;</dt>
+<dd><p>Modify the volume 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="Examples-55"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-55">6.40.2 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><li>
+Fade volume after time 10 with an annihilation period of 5 seconds:
+<table><tr><td>&nbsp;</td><td><pre class="example">volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
+</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-17"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-17">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-44"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-44">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-9"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-9">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-72"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-72">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-74"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-74">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-73"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-73">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-15"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-15">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-21"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-21">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-12"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-12">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-8"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-8">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-1"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-1">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-70"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-70">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="dejudder"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-dejudder">9.18 dejudder</a></h2>
+
+<p>Remove judder produced by partially interlaced telecined content.
+</p>
+<p>Judder can be introduced, for instance, by <a href="#pullup">pullup</a> filter. If the original
+source was partially telecined content then the output of <code>pullup,dejudder</code>
+will have a variable frame rate. May change the recorded frame rate of the
+container. Aside from that change, this filter will not affect constant frame
+rate video.
+</p>
+<p>The option available in this filter is:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>cycle</samp>&rsquo;</dt>
+<dd><p>Specify the length of the window over which the judder repeats.
+</p>
+<p>Accepts any interger greater than 1. Useful values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>4</samp>&rsquo;</dt>
+<dd><p>If the original was telecined from 24 to 30 fps (Film to NTSC).
+</p>
+</dd>
+<dt> &lsquo;<samp>5</samp>&rsquo;</dt>
+<dd><p>If the original was telecined from 25 to 30 fps (PAL to NTSC).
+</p>
+</dd>
+<dt> &lsquo;<samp>20</samp>&rsquo;</dt>
+<dd><p>If a mixture of the two.
+</p></dd>
+</dl>
+
+<p>The default is &lsquo;<samp>4</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<a name="delogo"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-delogo">9.19 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-27"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-27">9.19.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.20 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.21 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-46"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-46">9.21.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.22 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-18"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-18">9.22.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.23 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.23.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>borderw</samp>&rsquo;</dt>
+<dd><p>Set the width of the border to be drawn around the text using <var>bordercolor</var>.
+The default value of <var>borderw</var> is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>bordercolor</samp>&rsquo;</dt>
+<dd><p>Set the color to be used for drawing border 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>bordercolor</var> is &quot;black&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;default&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.23.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-34"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-34">9.23.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.24 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 chosen 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.25 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.25.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.26 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.27 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-22"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-22">9.27.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.28 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.29 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.29.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.29.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.29.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-30"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-30">9.29.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.30 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.31 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.32 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-71"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-71">9.32.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.33 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-31"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-31">9.33.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="framepack"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-framepack">9.34 framepack</a></h2>
+
+<p>Pack two different video streams into a stereoscopic video, setting proper
+metadata on supported codecs. The two views should have the same size and
+framerate and processing will stop when the shorter video ends. Please note
+that you may conveniently adjust view properties with the <a href="#scale">scale</a> and
+<a href="#fps">fps</a> filters.
+</p>
+<p>This filter accepts the following named parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>format</samp>&rsquo;</dt>
+<dd><p>Desired packing format. Supported values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>sbs</samp>&rsquo;</dt>
+<dd><p>Views are next to each other (default).
+</p>
+</dd>
+<dt> &lsquo;<samp>tab</samp>&rsquo;</dt>
+<dd><p>Views are on top of each other.
+</p>
+</dd>
+<dt> &lsquo;<samp>lines</samp>&rsquo;</dt>
+<dd><p>Views are packed by line.
+</p>
+</dd>
+<dt> &lsquo;<samp>columns</samp>&rsquo;</dt>
+<dd><p>Views are eacked by column.
+</p>
+</dd>
+<dt> &lsquo;<samp>frameseq</samp>&rsquo;</dt>
+<dd><p>Views are temporally interleaved.
+</p>
+</dd>
+</dl>
+
+</dd>
+</dl>
+
+<p>Some examples follow:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example"># Convert left and right views into a frame sequential video.
+ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
+
+# Convert views into a side-by-side video with the same output resolution as the input.
+ffmpeg -i LEFT -i RIGHT -filter_complex [0:v]scale=w=iw/2[left],[1:v]scale=w=iw/2[right],[left][right]framepack=sbs OUTPUT
+</pre></td></tr></table>
+
+<a name="framestep"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-framestep">9.35 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.36 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-49"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-49">9.36.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.37 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-29"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-29">9.37.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.38 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-41"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-41">9.38.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.39 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.39.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.39.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.39.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.40 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.41 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.42 histogram</a></h2>
+
+<p>Compute and draw a color distribution histogram for the input video.
+</p>
+<p>The computed histogram is a representation of the color component
+distribution 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 displays the 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 the
+current frame. Below each graph a color component scale meter is shown.
+</p>
+</dd>
+<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
+<dd><p>Displays chroma values (U/V color placement) in a two dimensional
+graph (which is called a vectorscope). The brighter a pixel in the
+vectorscope, the more pixels of the input frame correspond to that pixel
+(i.e., 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. The graph can therefore be used to read 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 the amount of a specific color is increased (while leaving the other
+colors unchanged) the saturation increases, and the indicator moves 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, the graph on the left side
+represents color component value 0 and the right side represents value = 255.
+In column mode, the 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
+many values of the same luminance are distributed across input rows/columns.
+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 the 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 below each other.
+</p>
+<p>Using 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 graphs 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 perform by
+making level adjustments the three waveforms.
+</p>
+</dd>
+<dt> &lsquo;<samp>overlay</samp>&rsquo;</dt>
+<dd><p>Presents information 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 makes it easier to spot
+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-52"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-52">9.42.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.43 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.44 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-42"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-42">9.44.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="ffmpeg-filters.html#toc-Commands-3">9.44.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.45 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.46 il</a></h2>
+
+<p>Deinterleave or interleave fields.
+</p>
+<p>This filter allows one 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.47 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. A vertical lowpass filter
+is always applied in order to avoid twitter effects and reduce moiré patterns.
+</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>
+</dl>
+
+<a name="kerndeint"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-kerndeint">9.48 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-26"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-26">9.48.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.49 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.50 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-4"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-4">9.50.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.51 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-56"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-56">9.51.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.52 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.53 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-50"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-50">9.53.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.54 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.55 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.56 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-25"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-25">9.56.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.57 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-53"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-53">9.57.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.58 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.59 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.59.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.59.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.59.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.60 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>eof_action</samp>&rsquo;</dt>
+<dd><p>The action to take when EOF is encountered on the secondary input, accepts one
+of the following values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>repeat</samp>&rsquo;</dt>
+<dd><p>repeat the last frame (the default)
+</p></dd>
+<dt> &lsquo;<samp>endall</samp>&rsquo;</dt>
+<dd><p>end both streams
+</p></dd>
+<dt> &lsquo;<samp>pass</samp>&rsquo;</dt>
+<dd><p>pass through the main input
+</p></dd>
+</dl>
+
+</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>yuv422</samp>&rsquo;</dt>
+<dd><p>force YUV422 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-filters.html#toc-Commands-2">9.60.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-33"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-33">9.60.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>
+mask 10-20 seconds of a video by applying the delogo filter to a section
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
+-vf '[in]split[split_main][split_delogo];[split_delogo]trim=start=360:end=371,delogo=0:0:640:480[delogoed];[split_main][delogoed]overlay=eof_action=pass[out]'
+masked.avi
+</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.61 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.62 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-39"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-39">9.62.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.63 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.64 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.65 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.66 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-43"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-43">9.66.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.67 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>
+<p><a name="pullup"></a>
+</p><a name="pullup-1"></a>
+<h2 class="section"><a href="ffmpeg-filters.html#toc-pullup-1">9.68 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.69 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.70 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 height
+</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 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>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-62"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-62">9.70.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>
+Rotate the input by 45 degrees clockwise:
+<table><tr><td>&nbsp;</td><td><pre class="example">rotate=45*PI/180
+</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 chosen 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.70.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.71 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.72 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-1"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Options-1">9.72.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>If one of the values is -n with n &gt; 1, the scale filter will also use a value
+that maintains the aspect ratio of the input image, calculated from the other
+specified dimension. After that it will, however, make sure that the calculated
+dimension is divisible by n and adjust the value if necessary.
+</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 explicitly 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-24"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-24">9.72.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.73 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.74 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-66"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-66">9.74.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.75 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.76 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.77 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.78 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-16"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-16">9.78.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.79 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.80 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.81 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.82 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.83 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.84 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-51"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-51">9.84.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.85 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-2"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-2">9.85.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 accommodate 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.86 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.87 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.88 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.89 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-19"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-19">9.89.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.90 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 15.
+</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-59"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-59">9.90.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.91 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>
+<a name="Options"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Options">9.91.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>input</samp>&rsquo;</dt>
+<dd><p>Set path to the file used to read the transforms. Default value is
+&lsquo;<tt>transforms.trf</tt>&rsquo;).
+</p>
+</dd>
+<dt> &lsquo;<samp>smoothing</samp>&rsquo;</dt>
+<dd><p>Set the number of frames (value*2 + 1) used for lowpass filtering the
+camera movements. Default value is 10.
+</p>
+<p>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). 0 is a special case where a
+static camera is simulated.
+</p>
+</dd>
+<dt> &lsquo;<samp>optalgo</samp>&rsquo;</dt>
+<dd><p>Set the camera path optimization algorithm.
+</p>
+<p>Accepted values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>gauss</samp>&rsquo;</dt>
+<dd><p>gaussian kernel low-pass filter on camera motion (default)
+</p></dd>
+<dt> &lsquo;<samp>avg</samp>&rsquo;</dt>
+<dd><p>averaging on transformations
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>maxshift</samp>&rsquo;</dt>
+<dd><p>Set maximal number of pixels to translate frames. Default value is -1,
+meaning no limit.
+</p>
+</dd>
+<dt> &lsquo;<samp>maxangle</samp>&rsquo;</dt>
+<dd><p>Set maximal angle in radians (degree*PI/180) to rotate frames. Default
+value is -1, meaning no limit.
+</p>
+</dd>
+<dt> &lsquo;<samp>crop</samp>&rsquo;</dt>
+<dd><p>Specify how to deal with borders that may be visible due to movement
+compensation.
+</p>
+<p>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><p>Invert transforms if set to 1. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>relative</samp>&rsquo;</dt>
+<dd><p>Consider transforms as relative to previsou frame if set to 1,
+absolute if set to 0. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>zoom</samp>&rsquo;</dt>
+<dd><p>Set percentage to zoom. A positive value will result in a zoom-in
+effect, a negative value in a zoom-out effect. Default value is 0 (no
+zoom).
+</p>
+</dd>
+<dt> &lsquo;<samp>optzoom</samp>&rsquo;</dt>
+<dd><p>Set optimal zooming to avoid borders.
+</p>
+<p>Accepted values are:
+</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), see &lsquo;<samp>zoomspeed</samp>&rsquo;
+</p></dd>
+</dl>
+
+<p>Note that the value given at zoom is added to the one calculated here.
+</p>
+</dd>
+<dt> &lsquo;<samp>zoomspeed</samp>&rsquo;</dt>
+<dd><p>Set percent to zoom maximally each frame (enabled when
+&lsquo;<samp>optzoom</samp>&rsquo; is set to 2). Range is from 0 to 5, default value is
+0.25.
+</p>
+</dd>
+<dt> &lsquo;<samp>interpol</samp>&rsquo;</dt>
+<dd><p>Specify 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>Enable virtual tripod mode if set to 1, which is equivalent to
+<code>relative=0:smoothing=0</code>. Default value is 0.
+</p>
+<p>Use also <code>tripod</code> option of <a href="#vidstabdetect">vidstabdetect</a>.
+</p>
+</dd>
+<dt> &lsquo;<samp>debug</samp>&rsquo;</dt>
+<dd><p>Increase log verbosity if set to 1. Also the detected global motions
+are written to the temporary file &lsquo;<tt>global_motions.trf</tt>&rsquo;. Default
+value is 0.
+</p></dd>
+</dl>
+
+<a name="Examples-13"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-13">9.91.2 Examples</a></h3>
+
+<ul>
+<li>
+Use <code>ffmpeg</code> for a typical stabilization with default values:
+<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>
+
+<p>Note the use of the unsharp filter which is always recommended.
+</p>
+</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.92 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.93 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 one 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.93.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-48"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-48">9.93.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.94 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.95 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-36"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-36">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 one 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-11"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-11">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-1"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Commands-1">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-57"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-57">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-10"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-10">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>
+<dt> &lsquo;<samp>peak</samp>&rsquo;</dt>
+<dd><p>Set peak mode(s).
+</p>
+<p>Available modes can be cumulated (the option is a <code>flag</code> type). Possible
+values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>Disable any peak mode (default).
+</p></dd>
+<dt> &lsquo;<samp>sample</samp>&rsquo;</dt>
+<dd><p>Enable sample-peak mode.
+</p>
+<p>Simple peak mode looking for the higher sample value. It logs a message
+for sample-peak (identified by <code>SPK</code>).
+</p></dd>
+<dt> &lsquo;<samp>true</samp>&rsquo;</dt>
+<dd><p>Enable true-peak mode.
+</p>
+<p>If enabled, the peak lookup is done on an over-sampled version of the input
+stream for better peak accuracy. It logs a message for true-peak.
+(identified by <code>TPK</code>) and true-peak per frame (identified by <code>FTPK</code>).
+This mode requires a build with <code>libswresample</code>.
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Examples-6"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-6">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-60"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-60">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-40"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-40">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-7"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-7">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"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples">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-67"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-67">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-68"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-68">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-47"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-47">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-63"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-63">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-61"></a>
+<h3 class="subsection"><a href="ffmpeg-filters.html#toc-Examples-61">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 one 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="ffmpeg-filters.html#toc-Examples-69">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>June 19, 2014</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies64/ffmpeg/doc/ffmpeg-formats.html b/dependencies64/ffmpeg/doc/ffmpeg-formats.html
new file mode 100644 (file)
index 0000000..761ad76
--- /dev/null
@@ -0,0 +1,1993 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on June 19, 2014 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-6" href="#Options-6">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-6" href="#Examples-6">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>
+    <ul class="toc">
+      <li><a name="toc-Options-5" href="#Options-5">4.1.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-crc-1" href="#crc-1">4.2 crc</a>
+    <ul class="toc">
+      <li><a name="toc-Examples" href="#Examples">4.2.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-framecrc-1" href="#framecrc-1">4.3 framecrc</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-4" href="#Examples-4">4.3.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-framemd5-1" href="#framemd5-1">4.4 framemd5</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-1" href="#Examples-1">4.4.1 Examples</a></li>
+    </ul></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>
+    <ul class="toc">
+      <li><a name="toc-Options-3" href="#Options-3">4.6.1 Options</a></li>
+    </ul></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>
+    <ul class="toc">
+      <li><a name="toc-Examples-2" href="#Examples-2">4.8.1 Examples</a></li>
+      <li><a name="toc-Options-7" href="#Options-7">4.8.2 Options</a></li>
+    </ul></li>
+    <li><a name="toc-matroska" href="#matroska">4.9 matroska</a>
+    <ul class="toc">
+      <li><a name="toc-Metadata" href="#Metadata">4.9.1 Metadata</a></li>
+      <li><a name="toc-Options" href="#Options">4.9.2 Options</a></li>
+    </ul></li>
+    <li><a name="toc-md5-1" href="#md5-1">4.10 md5</a></li>
+    <li><a name="toc-mov_002c-mp4_002c-ismv" href="#mov_002c-mp4_002c-ismv">4.11 mov, mp4, ismv</a>
+    <ul class="toc">
+      <li><a name="toc-Options-2" href="#Options-2">4.11.1 Options</a></li>
+      <li><a name="toc-Example-1" href="#Example-1">4.11.2 Example</a></li>
+    </ul></li>
+    <li><a name="toc-mp3" href="#mp3">4.12 mp3</a></li>
+    <li><a name="toc-mpegts" href="#mpegts">4.13 mpegts</a>
+    <ul class="toc">
+      <li><a name="toc-Options-4" href="#Options-4">4.13.1 Options</a></li>
+      <li><a name="toc-Example" href="#Example">4.13.2 Example</a></li>
+    </ul></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-Options-1" href="#Options-1">4.16.1 Options</a></li>
+      <li><a name="toc-Examples-3" href="#Examples-3">4.16.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-tee" href="#tee">4.17 tee</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-5" href="#Examples-5">4.17.1 Examples</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Metadata-1" href="#Metadata-1">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>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>make_non_negative</samp>&rsquo;</dt>
+<dd><p>Shift timestamps to make them non-negative.
+Also note that this affects only leading negative timestamps, and not
+non-monotonic negative timestamps.
+</p></dd>
+<dt> &lsquo;<samp>make_zero</samp>&rsquo;</dt>
+<dd><p>Shift timestamps so that the first timestamp is 0.
+</p></dd>
+<dt> &lsquo;<samp>auto (default)</samp>&rsquo;</dt>
+<dd><p>Enables shifting when required by the target format.
+</p></dd>
+<dt> &lsquo;<samp>disabled</samp>&rsquo;</dt>
+<dd><p>Disables shifting of timestamp.
+</p></dd>
+</dl>
+
+<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>
+</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>
+<dt> &lsquo;<samp>output_ts_offset <var>offset</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set the output time offset.
+</p>
+<p><var>offset</var> must be a time duration specification,
+see <a href="ffmpeg-utils.html#time-duration-syntax">(ffmpeg-utils)time duration syntax</a>.
+</p>
+<p>The offset is added by the muxer to the output timestamps.
+</p>
+<p>Specifying a positive offset means that the corresponding streams are
+delayed bt the time duration specified in <var>offset</var>. Default value
+is <code>0</code> (meaning that no offset is applied).
+</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-6"></a>
+<h3 class="subsection"><a href="ffmpeg-formats.html#toc-Options-6">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-6"></a>
+<h3 class="subsection"><a href="ffmpeg-formats.html#toc-Examples-6">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 one 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>
+<a name="Options-5"></a>
+<h3 class="subsection"><a href="ffmpeg-formats.html#toc-Options-5">4.1.1 Options</a></h3>
+
+<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>See also the <a href="#framecrc">framecrc</a> muxer.
+</p>
+<a name="Examples"></a>
+<h3 class="subsection"><a href="ffmpeg-formats.html#toc-Examples">4.2.1 Examples</a></h3>
+
+<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><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>
+<a name="Examples-4"></a>
+<h3 class="subsection"><a href="ffmpeg-formats.html#toc-Examples-4">4.3.1 Examples</a></h3>
+
+<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>
+<a name="Examples-1"></a>
+<h3 class="subsection"><a href="ffmpeg-formats.html#toc-Examples-1">4.4.1 Examples</a></h3>
+
+<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 (HLS) 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>
+<p>For example, to convert an input file with <code>ffmpeg</code>:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i in.nut out.m3u8
+</pre></td></tr></table>
+
+<p>See also the <a href="#segment">segment</a> muxer, which provides a more generic and
+flexible implementation of a segmenter, and can be used to perform HLS
+segmentation.
+</p>
+<a name="Options-3"></a>
+<h3 class="subsection"><a href="ffmpeg-formats.html#toc-Options-3">4.6.1 Options</a></h3>
+
+<p>This muxer supports the following options:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>hls_time <var>seconds</var></samp>&rsquo;</dt>
+<dd><p>Set the segment length in seconds. Default value is 2.
+</p>
+</dd>
+<dt> &lsquo;<samp>hls_list_size <var>size</var></samp>&rsquo;</dt>
+<dd><p>Set the maximum number of playlist entries. If set to 0 the list file
+will contain all the segments. Default value is 5.
+</p>
+</dd>
+<dt> &lsquo;<samp>hls_wrap <var>wrap</var></samp>&rsquo;</dt>
+<dd><p>Set the number after which the segment filename number (the number
+specified in each segment file) wraps. If set to 0 the number will be
+never wrapped. Default value is 0.
+</p>
+<p>This option is useful to avoid to fill the disk with many segment
+files, and limits the maximum number of segment files written to disk
+to <var>wrap</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>start_number <var>number</var></samp>&rsquo;</dt>
+<dd><p>Start the playlist sequence number from <var>number</var>. Default value is
+0.
+</p>
+<p>Note that the playlist sequence number must be unique for each segment
+and it is not to be confused with the segment filename sequence number
+which can be cyclic, for example if the &lsquo;<samp>wrap</samp>&rsquo; option is
+specified.
+</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>
+<a name="Examples-2"></a>
+<h3 class="subsection"><a href="ffmpeg-formats.html#toc-Examples-2">4.8.1 Examples</a></h3>
+
+<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>
+
+<p>The &lsquo;<samp>strftime</samp>&rsquo; option allows you to expand the filename with
+date and time information. Check the documentation of
+the <code>strftime()</code> function for the syntax.
+</p>
+<p>For example to generate image files from the <code>strftime()</code>
+&quot;%Y-%m-%d_%H-%M-%S&quot; pattern, the following <code>ffmpeg</code> command
+can be used:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -f v4l2 -r 1 -i /dev/video0 -f image2 -strftime 1 &quot;%Y-%m-%d_%H-%M-%S.jpg&quot;
+</pre></td></tr></table>
+
+<a name="Options-7"></a>
+<h3 class="subsection"><a href="ffmpeg-formats.html#toc-Options-7">4.8.2 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>start_number</samp>&rsquo;</dt>
+<dd><p>Start the sequence from the specified number. Default value is 1. Must
+be a non-negative number.
+</p>
+</dd>
+<dt> &lsquo;<samp>update</samp>&rsquo;</dt>
+<dd><p>If set to 1, the filename will always be interpreted as just a
+filename, not a pattern, and the corresponding file will be continuously
+overwritten with new images. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>strftime</samp>&rsquo;</dt>
+<dd><p>If set to 1, expand the filename with date and time information from
+<code>strftime()</code>. Default value is 0.
+</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>
+<a name="Metadata"></a>
+<h3 class="subsection"><a href="ffmpeg-formats.html#toc-Metadata">4.9.1 Metadata</a></h3>
+
+<p>The recognized metadata settings in this muxer are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>title</samp>&rsquo;</dt>
+<dd><p>Set title name provided to a single track.
+</p>
+</dd>
+<dt> &lsquo;<samp>language</samp>&rsquo;</dt>
+<dd><p>Specify the language of the track in the Matroska languages form.
+</p>
+<p>The language can be either the 3 letters bibliographic ISO-639-2 (ISO
+639-2/B) form (like &quot;fre&quot; for French), or a language code mixed with a
+country code for specialities in languages (like &quot;fre-ca&quot; for Canadian
+French).
+</p>
+</dd>
+<dt> &lsquo;<samp>stereo_mode</samp>&rsquo;</dt>
+<dd><p>Set stereo 3D video layout of two views in a single video track.
+</p>
+<p>The following values are recognized:
+</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>
+
+<a name="Options"></a>
+<h3 class="subsection"><a href="ffmpeg-formats.html#toc-Options">4.9.2 Options</a></h3>
+
+<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_002c-mp4_002c-ismv"></a>
+<h2 class="section"><a href="ffmpeg-formats.html#toc-mov_002c-mp4_002c-ismv">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>
+<a name="Options-2"></a>
+<h3 class="subsection"><a href="ffmpeg-formats.html#toc-Options-2">4.11.1 Options</a></h3>
+
+<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>
+
+<a name="Example-1"></a>
+<h3 class="subsection"><a href="ffmpeg-formats.html#toc-Example-1">4.11.2 Example</a></h3>
+
+<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. Setting
+<code>id3v2_version</code> to 0 will disable the ID3v2 header completely. The legacy
+ID3v1 tag is not written by default, but may be enabled with the
+<code>write_id3v1</code> option.
+</p>
+<p>The muxer may also write a Xing frame at the beginning, which contains the
+number of frames in the file. It is useful for computing duration of VBR files.
+The Xing frame is written if the output stream is seekable and if the
+<code>write_xing</code> option is set to 1 (the default).
+</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>
+
+<p>Write a &quot;clean&quot; MP3 without any extra features:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i input.wav -write_xing 0 -id3v2_version 0 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 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>
+<a name="Options-4"></a>
+<h3 class="subsection"><a href="ffmpeg-formats.html#toc-Options-4">4.13.1 Options</a></h3>
+
+<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>
+
+<a name="Example"></a>
+<h3 class="subsection"><a href="ffmpeg-formats.html#toc-Example">4.13.2 Example</a></h3>
+
+<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>
+
+<p><a name="segment"></a>
+</p><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>This 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>See also the <a href="#hls">hls</a> muxer, which provides a more specific
+implementation for HLS segmentation.
+</p>
+<a name="Options-1"></a>
+<h3 class="subsection"><a href="ffmpeg-formats.html#toc-Options-1">4.16.1 Options</a></h3>
+
+<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 chosen
+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-3"></a>
+<h3 class="subsection"><a href="ffmpeg-formats.html#toc-Examples-3">4.16.2 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 <a href="ffmpeg-utils.html#quoting_005fand_005fescaping">(ffmpeg-utils)quoting_and_escaping</a>).
+</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.
+</p>
+<p>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>. <var>spec</var> must be a stream specifier (see <a href="#Format-stream-specifiers">Format stream specifiers</a>).  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>
+
+<a name="Examples-5"></a>
+<h3 class="subsection"><a href="ffmpeg-formats.html#toc-Examples-5">4.17.1 Examples</a></h3>
+
+<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><li>
+As below, but select only stream <code>a:1</code> for the audio output. Note
+that a second level escaping must be performed, as &quot;:&quot; is a special
+character used to separate options.
+<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:1\']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-1"></a>
+<h1 class="chapter"><a href="ffmpeg-formats.html#toc-Metadata-1">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>June 19, 2014</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies64/ffmpeg/doc/ffmpeg-protocols.html b/dependencies64/ffmpeg/doc/ffmpeg-protocols.html
new file mode 100644 (file)
index 0000000..6be426a
--- /dev/null
@@ -0,0 +1,1381 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on June 19, 2014 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>
+    <ul class="toc">
+      <li><a name="toc-Examples" href="#Examples">2.24.1 Examples</a></li>
+    </ul></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>
+    <ul class="toc">
+      <li><a name="toc-Examples-1" href="#Examples-1">2.30.1 Examples</a></li>
+    </ul></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 write to a file.
+</p>
+<p>A file URL can have the form:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">file:<var>filename</var>
+</pre></td></tr></table>
+
+<p>where <var>filename</var> is the path of the file to read.
+</p>
+<p>An URL that does not have a protocol prefix will be assumed to be a
+file URL. Depending on the build, an URL that looks like a Windows
+path with the drive letter at the beginning will also be assumed to be
+a file URL (usually not the case in builds for unix-like systems).
+</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>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>content_type</samp>&rsquo;</dt>
+<dd><p>Set a specific content type for the POST messages.
+</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>multiple_requests</samp>&rsquo;</dt>
+<dd><p>Use persistent connections if set to 1, default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>post_data</samp>&rsquo;</dt>
+<dd><p>Set custom HTTP post data.
+</p>
+</dd>
+<dt> &lsquo;<samp>user-agent</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>user_agent</samp>&rsquo;</dt>
+<dd><p>Override the User-Agent header. If not specified the protocol will use a
+string describing the libavformat build. (&quot;Lavf/&lt;version&gt;&quot;)
+</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>Export the 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 by 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. It should be
+polled in regular intervals by applications interested in mid-stream metadata
+updates.
+</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>
+<dt> &lsquo;<samp>offset</samp>&rsquo;</dt>
+<dd><p>Set initial byte offset.
+</p>
+</dd>
+<dt> &lsquo;<samp>end_offset</samp>&rsquo;</dt>
+<dd><p>Try to limit the request to bytes preceding this offset.
+</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>
+<dt> &lsquo;<samp>private_key</samp>&rsquo;</dt>
+<dd><p>Specify the path of the file containing private key to use during authorization.
+By default libssh searches for keys in the &lsquo;<tt>~/.ssh/</tt>&rsquo; directory.
+</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>Real-Time Streaming Protocol.
+</p>
+<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>Options can be 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>.
+</p>
+<p>The following options are supported.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>initial_pause</samp>&rsquo;</dt>
+<dd><p>Do not start playing the stream immediately if set to 1. Default value
+is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtsp_transport</samp>&rsquo;</dt>
+<dd><p>Set RTSP trasport protocols.
+</p>
+<p>It accepts the following values:
+</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 &lsquo;<samp>tcp</samp>&rsquo; and &lsquo;<samp>udp</samp>&rsquo; options are supported.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtsp_flags</samp>&rsquo;</dt>
+<dd><p>Set RTSP flags.
+</p>
+<p>The following values are accepted:
+</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>Default value is &lsquo;<samp>none</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>allowed_media_types</samp>&rsquo;</dt>
+<dd><p>Set media types to accept from the server.
+</p>
+<p>The following flags are accepted:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>video</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>audio</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>data</samp>&rsquo;</dt>
+</dl>
+
+<p>By default it accepts all media types.
+</p>
+</dd>
+<dt> &lsquo;<samp>min_port</samp>&rsquo;</dt>
+<dd><p>Set minimum local UDP port. Default value is 5000.
+</p>
+</dd>
+<dt> &lsquo;<samp>max_port</samp>&rsquo;</dt>
+<dd><p>Set maximum local UDP port. Default value is 65000.
+</p>
+</dd>
+<dt> &lsquo;<samp>timeout</samp>&rsquo;</dt>
+<dd><p>Set maximum timeout (in seconds) to wait for incoming connections.
+</p>
+<p>A value of -1 mean infinite (default). This option implies the
+&lsquo;<samp>rtsp_flags</samp>&rsquo; set to &lsquo;<samp>listen</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>reorder_queue_size</samp>&rsquo;</dt>
+<dd><p>Set number of packets to buffer for handling of reordered packets.
+</p>
+</dd>
+<dt> &lsquo;<samp>stimeout</samp>&rsquo;</dt>
+<dd><p>Set socket TCP I/O timeout in micro seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>user-agent</samp>&rsquo;</dt>
+<dd><p>Override User-Agent header. If not specified, it default to the
+libavformat identifier string.
+</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>
+<a name="Examples"></a>
+<h3 class="subsection"><a href="ffmpeg-protocols.html#toc-Examples">2.24.1 Examples</a></h3>
+
+<p>The following examples all make use of the <code>ffplay</code> and
+<code>ffmpeg</code> tools.
+</p>
+<ul>
+<li>
+Watch a stream over UDP, with a max reordering delay of 0.5 seconds:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -max_delay 500000 -rtsp_transport udp rtsp://server/video.mp4
+</pre></td></tr></table>
+
+</li><li>
+Watch a stream tunneled over HTTP:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -rtsp_transport http rtsp://server/video.mp4
+</pre></td></tr></table>
+
+</li><li>
+Send a stream in realtime to a RTSP server, for others to watch:
+<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>
+
+</li><li>
+Receive a stream in realtime:
+<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>
+</li></ul>
+
+<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>Transmission 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>
+
+<p><var>options</var> contains a list of &amp;-separated options of the form
+<var>key</var>=<var>val</var>.
+</p>
+<p>The list of supported options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>listen=<var>1|0</var></samp>&rsquo;</dt>
+<dd><p>Listen for an incoming connection. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>timeout=<var>microseconds</var></samp>&rsquo;</dt>
+<dd><p>Set raise error timeout, expressed in microseconds.
+</p>
+<p>This option is only relevant in read mode: if no data arrived in more
+than this time interval, raise error.
+</p>
+</dd>
+<dt> &lsquo;<samp>listen_timeout=<var>microseconds</var></samp>&rsquo;</dt>
+<dd><p>Set listen timeout, expressed in microseconds.
+</p></dd>
+</dl>
+
+<p>The following example shows how to setup a listening TCP connection
+with <code>ffmpeg</code>, which is then accessed with <code>ffplay</code>:
+</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>
+
+<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 an 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 one 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>Set raise error timeout, expressed in microseconds.
+</p>
+<p>This option is only relevant in read mode: if no data arrived in more
+than this time interval, raise error.
+</p></dd>
+</dl>
+
+<a name="Examples-1"></a>
+<h3 class="subsection"><a href="ffmpeg-protocols.html#toc-Examples-1">2.30.1 Examples</a></h3>
+
+<ul>
+<li>
+Use <code>ffmpeg</code> to stream over UDP to a remote endpoint:
+<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>
+
+</li><li>
+Use <code>ffmpeg</code> to stream in mpegts format over UDP using 188
+sized UDP packets, using a large input buffer:
+<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>
+
+</li><li>
+Use <code>ffmpeg</code> to receive over UDP from a remote endpoint:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i udp://[<var>multicast-address</var>]:<var>port</var> ...
+</pre></td></tr></table>
+</li></ul>
+
+<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>June 19, 2014</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies64/ffmpeg/doc/ffmpeg-resampler.html b/dependencies64/ffmpeg/doc/ffmpeg-resampler.html
new file mode 100644 (file)
index 0000000..c620b97
--- /dev/null
@@ -0,0 +1,359 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on June 19, 2014 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 one 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>June 19, 2014</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies64/ffmpeg/doc/ffmpeg-scaler.html b/dependencies64/ffmpeg/doc/ffmpeg-scaler.html
new file mode 100644 (file)
index 0000000..34e4ee6
--- /dev/null
@@ -0,0 +1,225 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on June 19, 2014 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 one 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>bicublin</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>June 19, 2014</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies64/ffmpeg/doc/ffmpeg-utils.html b/dependencies64/ffmpeg/doc/ffmpeg-utils.html
new file mode 100644 (file)
index 0000000..08840fc
--- /dev/null
@@ -0,0 +1,1477 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on June 19, 2014 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 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>
+</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>June 19, 2014</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies64/ffmpeg/doc/ffmpeg.html b/dependencies64/ffmpeg/doc/ffmpeg.html
new file mode 100644 (file)
index 0000000..95cbfb1
--- /dev/null
@@ -0,0 +1,1941 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on June 19, 2014 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" href="#Options">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" href="#Examples">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-See-Also" href="#See-Also">8. See Also</a></li>
+  <li><a name="toc-Authors" href="#Authors">9. Authors</a></li>
+</ul>
+</div>
+
+<a name="Synopsis"></a>
+<h1 class="chapter"><a href="ffmpeg.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.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.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
+| file  | ---------&gt; | packets      | -----+
+|_______|            |______________|      |
+                                           v
+                                       _________
+                                      |         |
+                                      | decoded |
+                                      | frames  |
+ ________             ______________  |_________|
+|        |           |              |      |
+| output | &lt;-------- | encoded data | &lt;----+
+| file   |   muxer   | packets      |   encoder
+|________|           |______________|
+
+
+</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"> _________               __________              ______________
+|         |  simple     |          |            |              |
+| decoded |  fltrgrph   | 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; | 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"></a>
+<h1 class="chapter"><a href="ffmpeg.html#toc-Options">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.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">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>-hide_banner</samp>&rsquo;</dt>
+<dd><p>Suppress printing banner.
+</p>
+<p>All FFmpeg tools will normally show a copyright notice, build options
+and library versions. This option can be used to suppress printing
+this information.
+</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">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.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.
+</p>
+<p><var>offset</var> must be a time duration specification,
+see <a href="ffmpeg-utils.html#time-duration-syntax">(ffmpeg-utils)time duration syntax</a>.
+</p>
+<p>The offset is added to the timestamps of the input files. Specifying
+a positive offset means that the corresponding streams are delayed by
+the time duration specified in <var>offset</var>.
+</p>
+</dd>
+<dt> &lsquo;<samp>-timestamp <var>date</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set the recording timestamp in the container.
+</p>
+<p><var>date</var> must be a time duration specification,
+see <a href="ffmpeg-utils.html#date-syntax">(ffmpeg-utils)date syntax</a>.
+</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.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>-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.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.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.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.html#toc-Subtitle-options_003a">5.9 Subtitle options:</a></h2>
+
+<dl compact="compact">
+<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.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.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>input/output,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">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.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"></a>
+<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">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.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.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="See-Also"></a>
+<h1 class="chapter"><a href="ffmpeg.html#toc-See-Also">8. See Also</a></h1>
+
+<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>
+
+<a name="Authors"></a>
+<h1 class="chapter"><a href="ffmpeg.html#toc-Authors">9. 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>June 19, 2014</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies64/ffmpeg/doc/ffplay-all.html b/dependencies64/ffmpeg/doc/ffplay-all.html
new file mode 100644 (file)
index 0000000..e3439af
--- /dev/null
@@ -0,0 +1,18956 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on June 19, 2014 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-10" href="#Options-10">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" href="#Syntax">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-10" href="#Examples-10">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-56" href="#Examples-56">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-4" href="#Options-4">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-ac3" href="#ac3">10.1 ac3</a>
+    <ul class="toc">
+      <li><a name="toc-AC_002d3-Decoder-Options" href="#AC_002d3-Decoder-Options">10.1.1 AC-3 Decoder Options</a></li>
+    </ul></li>
+    <li><a name="toc-ffwavesynth" href="#ffwavesynth">10.2 ffwavesynth</a></li>
+    <li><a name="toc-libcelt" href="#libcelt">10.3 libcelt</a></li>
+    <li><a name="toc-libgsm" href="#libgsm">10.4 libgsm</a></li>
+    <li><a name="toc-libilbc" href="#libilbc">10.5 libilbc</a>
+    <ul class="toc">
+      <li><a name="toc-Options-12" href="#Options-12">10.5.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libopencore_002damrnb" href="#libopencore_002damrnb">10.6 libopencore-amrnb</a></li>
+    <li><a name="toc-libopencore_002damrwb" href="#libopencore_002damrwb">10.7 libopencore-amrwb</a></li>
+    <li><a name="toc-libopus" href="#libopus">10.8 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" href="#Options">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-8" href="#Options-8">11.2.1 Options</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Bitstream-Filters" href="#Bitstream-Filters">12. Bitstream Filters</a>
+  <ul class="toc">
+    <li><a name="toc-aac_005fadtstoasc" href="#aac_005fadtstoasc">12.1 aac_adtstoasc</a></li>
+    <li><a name="toc-chomp" href="#chomp">12.2 chomp</a></li>
+    <li><a name="toc-dump_005fextra" href="#dump_005fextra">12.3 dump_extra</a></li>
+    <li><a name="toc-h264_005fmp4toannexb" href="#h264_005fmp4toannexb">12.4 h264_mp4toannexb</a></li>
+    <li><a name="toc-imx_005fdump_005fheader" href="#imx_005fdump_005fheader">12.5 imx_dump_header</a></li>
+    <li><a name="toc-mjpeg2jpeg" href="#mjpeg2jpeg">12.6 mjpeg2jpeg</a></li>
+    <li><a name="toc-mjpega_005fdump_005fheader" href="#mjpega_005fdump_005fheader">12.7 mjpega_dump_header</a></li>
+    <li><a name="toc-movsub" href="#movsub">12.8 movsub</a></li>
+    <li><a name="toc-mp3_005fheader_005fdecompress" href="#mp3_005fheader_005fdecompress">12.9 mp3_header_decompress</a></li>
+    <li><a name="toc-noise" href="#noise">12.10 noise</a></li>
+    <li><a name="toc-remove_005fextra" href="#remove_005fextra">12.11 remove_extra</a></li>
+  </ul></li>
+  <li><a name="toc-Format-Options" href="#Format-Options">13. Format Options</a>
+  <ul class="toc">
+    <li><a name="toc-Format-stream-specifiers-1" href="#Format-stream-specifiers-1">13.1 Format stream specifiers</a></li>
+  </ul></li>
+  <li><a name="toc-Demuxers" href="#Demuxers">14. Demuxers</a>
+  <ul class="toc">
+    <li><a name="toc-applehttp" href="#applehttp">14.1 applehttp</a></li>
+    <li><a name="toc-asf" href="#asf">14.2 asf</a></li>
+    <li><a name="toc-concat-1" href="#concat-1">14.3 concat</a>
+    <ul class="toc">
+      <li><a name="toc-Syntax-1" href="#Syntax-1">14.3.1 Syntax</a></li>
+      <li><a name="toc-Options-11" href="#Options-11">14.3.2 Options</a></li>
+    </ul></li>
+    <li><a name="toc-flv" href="#flv">14.4 flv</a></li>
+    <li><a name="toc-libgme" href="#libgme">14.5 libgme</a></li>
+    <li><a name="toc-libquvi" href="#libquvi">14.6 libquvi</a></li>
+    <li><a name="toc-image2" href="#image2">14.7 image2</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-53" href="#Examples-53">14.7.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mpegts" href="#mpegts">14.8 mpegts</a></li>
+    <li><a name="toc-rawvideo" href="#rawvideo">14.9 rawvideo</a></li>
+    <li><a name="toc-sbg" href="#sbg">14.10 sbg</a></li>
+    <li><a name="toc-tedcaptions" href="#tedcaptions">14.11 tedcaptions</a></li>
+  </ul></li>
+  <li><a name="toc-Metadata" href="#Metadata">15. Metadata</a></li>
+  <li><a name="toc-Protocols" href="#Protocols">16. Protocols</a>
+  <ul class="toc">
+    <li><a name="toc-bluray" href="#bluray">16.1 bluray</a></li>
+    <li><a name="toc-cache" href="#cache">16.2 cache</a></li>
+    <li><a name="toc-concat-3" href="#concat-3">16.3 concat</a></li>
+    <li><a name="toc-crypto" href="#crypto">16.4 crypto</a></li>
+    <li><a name="toc-data" href="#data">16.5 data</a></li>
+    <li><a name="toc-file" href="#file">16.6 file</a></li>
+    <li><a name="toc-ftp" href="#ftp">16.7 ftp</a></li>
+    <li><a name="toc-gopher" href="#gopher">16.8 gopher</a></li>
+    <li><a name="toc-hls" href="#hls">16.9 hls</a></li>
+    <li><a name="toc-http" href="#http">16.10 http</a>
+    <ul class="toc">
+      <li><a name="toc-HTTP-Cookies" href="#HTTP-Cookies">16.10.1 HTTP Cookies</a></li>
+    </ul></li>
+    <li><a name="toc-mmst" href="#mmst">16.11 mmst</a></li>
+    <li><a name="toc-mmsh" href="#mmsh">16.12 mmsh</a></li>
+    <li><a name="toc-md5" href="#md5">16.13 md5</a></li>
+    <li><a name="toc-pipe" href="#pipe">16.14 pipe</a></li>
+    <li><a name="toc-rtmp" href="#rtmp">16.15 rtmp</a></li>
+    <li><a name="toc-rtmpe" href="#rtmpe">16.16 rtmpe</a></li>
+    <li><a name="toc-rtmps" href="#rtmps">16.17 rtmps</a></li>
+    <li><a name="toc-rtmpt" href="#rtmpt">16.18 rtmpt</a></li>
+    <li><a name="toc-rtmpte" href="#rtmpte">16.19 rtmpte</a></li>
+    <li><a name="toc-rtmpts" href="#rtmpts">16.20 rtmpts</a></li>
+    <li><a name="toc-libssh" href="#libssh">16.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">16.22 librtmp rtmp, rtmpe, rtmps, rtmpt, rtmpte</a></li>
+    <li><a name="toc-rtp" href="#rtp">16.23 rtp</a></li>
+    <li><a name="toc-rtsp" href="#rtsp">16.24 rtsp</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-66" href="#Examples-66">16.24.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sap" href="#sap">16.25 sap</a>
+    <ul class="toc">
+      <li><a name="toc-Muxer" href="#Muxer">16.25.1 Muxer</a></li>
+      <li><a name="toc-Demuxer" href="#Demuxer">16.25.2 Demuxer</a></li>
+    </ul></li>
+    <li><a name="toc-sctp" href="#sctp">16.26 sctp</a></li>
+    <li><a name="toc-srtp" href="#srtp">16.27 srtp</a></li>
+    <li><a name="toc-tcp" href="#tcp">16.28 tcp</a></li>
+    <li><a name="toc-tls" href="#tls">16.29 tls</a></li>
+    <li><a name="toc-udp" href="#udp">16.30 udp</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-6" href="#Examples-6">16.30.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-unix" href="#unix">16.31 unix</a></li>
+  </ul></li>
+  <li><a name="toc-Device-Options" href="#Device-Options">17. Device Options</a></li>
+  <li><a name="toc-Input-Devices" href="#Input-Devices">18. Input Devices</a>
+  <ul class="toc">
+    <li><a name="toc-alsa" href="#alsa">18.1 alsa</a></li>
+    <li><a name="toc-bktr" href="#bktr">18.2 bktr</a></li>
+    <li><a name="toc-dshow" href="#dshow">18.3 dshow</a>
+    <ul class="toc">
+      <li><a name="toc-Options-9" href="#Options-9">18.3.1 Options</a></li>
+      <li><a name="toc-Examples-7" href="#Examples-7">18.3.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-dv1394" href="#dv1394">18.4 dv1394</a></li>
+    <li><a name="toc-fbdev" href="#fbdev">18.5 fbdev</a></li>
+    <li><a name="toc-iec61883" href="#iec61883">18.6 iec61883</a>
+    <ul class="toc">
+      <li><a name="toc-Options-7" href="#Options-7">18.6.1 Options</a></li>
+      <li><a name="toc-Examples-23" href="#Examples-23">18.6.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-jack" href="#jack">18.7 jack</a></li>
+    <li><a name="toc-lavfi" href="#lavfi">18.8 lavfi</a>
+    <ul class="toc">
+      <li><a name="toc-Options-14" href="#Options-14">18.8.1 Options</a></li>
+      <li><a name="toc-Examples-39" href="#Examples-39">18.8.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-libdc1394" href="#libdc1394">18.9 libdc1394</a></li>
+    <li><a name="toc-openal" href="#openal">18.10 openal</a>
+    <ul class="toc">
+      <li><a name="toc-Options-5" href="#Options-5">18.10.1 Options</a></li>
+      <li><a name="toc-Examples-14" href="#Examples-14">18.10.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-oss" href="#oss">18.11 oss</a></li>
+    <li><a name="toc-pulse" href="#pulse">18.12 pulse</a>
+    <ul class="toc">
+      <li><a name="toc-Options-1" href="#Options-1">18.12.1 Options</a></li>
+      <li><a name="toc-Examples-71" href="#Examples-71">18.12.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sndio" href="#sndio">18.13 sndio</a></li>
+    <li><a name="toc-video4linux2_002c-v4l2" href="#video4linux2_002c-v4l2">18.14 video4linux2, v4l2</a>
+    <ul class="toc">
+      <li><a name="toc-Options-3" href="#Options-3">18.14.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-vfwcap" href="#vfwcap">18.15 vfwcap</a></li>
+    <li><a name="toc-x11grab" href="#x11grab">18.16 x11grab</a>
+    <ul class="toc">
+      <li><a name="toc-Options-2" href="#Options-2">18.16.1 Options</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Resampler-Options" href="#Resampler-Options">19. Resampler Options</a></li>
+  <li><a name="toc-Scaler-Options" href="#Scaler-Options">20. Scaler Options</a></li>
+  <li><a name="toc-Filtering-Introduction" href="#Filtering-Introduction">21. Filtering Introduction</a></li>
+  <li><a name="toc-graph2dot" href="#graph2dot">22. graph2dot</a></li>
+  <li><a name="toc-Filtergraph-description" href="#Filtergraph-description">23. Filtergraph description</a>
+  <ul class="toc">
+    <li><a name="toc-Filtergraph-syntax-1" href="#Filtergraph-syntax-1">23.1 Filtergraph syntax</a></li>
+    <li><a name="toc-Notes-on-filtergraph-escaping" href="#Notes-on-filtergraph-escaping">23.2 Notes on filtergraph escaping</a></li>
+  </ul></li>
+  <li><a name="toc-Timeline-editing" href="#Timeline-editing">24. Timeline editing</a></li>
+  <li><a name="toc-Audio-Filters" href="#Audio-Filters">25. Audio Filters</a>
+  <ul class="toc">
+    <li><a name="toc-aconvert" href="#aconvert">25.1 aconvert</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-47" href="#Examples-47">25.1.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-adelay" href="#adelay">25.2 adelay</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-31" href="#Examples-31">25.2.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-aecho" href="#aecho">25.3 aecho</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-75" href="#Examples-75">25.3.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-aeval" href="#aeval">25.4 aeval</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-82" href="#Examples-82">25.4.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-afade" href="#afade">25.5 afade</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-33" href="#Examples-33">25.5.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-aformat-1" href="#aformat-1">25.6 aformat</a></li>
+    <li><a name="toc-allpass" href="#allpass">25.7 allpass</a></li>
+    <li><a name="toc-amerge" href="#amerge">25.8 amerge</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-67" href="#Examples-67">25.8.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-amix" href="#amix">25.9 amix</a></li>
+    <li><a name="toc-anull" href="#anull">25.10 anull</a></li>
+    <li><a name="toc-apad" href="#apad">25.11 apad</a></li>
+    <li><a name="toc-aphaser" href="#aphaser">25.12 aphaser</a></li>
+    <li><a name="toc-aresample-1" href="#aresample-1">25.13 aresample</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-38" href="#Examples-38">25.13.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-asetnsamples" href="#asetnsamples">25.14 asetnsamples</a></li>
+    <li><a name="toc-asetrate" href="#asetrate">25.15 asetrate</a></li>
+    <li><a name="toc-ashowinfo" href="#ashowinfo">25.16 ashowinfo</a></li>
+    <li><a name="toc-astats" href="#astats">25.17 astats</a></li>
+    <li><a name="toc-astreamsync" href="#astreamsync">25.18 astreamsync</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-41" href="#Examples-41">25.18.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-asyncts" href="#asyncts">25.19 asyncts</a></li>
+    <li><a name="toc-atempo" href="#atempo">25.20 atempo</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-81" href="#Examples-81">25.20.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-atrim" href="#atrim">25.21 atrim</a></li>
+    <li><a name="toc-bandpass" href="#bandpass">25.22 bandpass</a></li>
+    <li><a name="toc-bandreject" href="#bandreject">25.23 bandreject</a></li>
+    <li><a name="toc-bass" href="#bass">25.24 bass</a></li>
+    <li><a name="toc-biquad" href="#biquad">25.25 biquad</a></li>
+    <li><a name="toc-channelmap" href="#channelmap">25.26 channelmap</a></li>
+    <li><a name="toc-channelsplit" href="#channelsplit">25.27 channelsplit</a></li>
+    <li><a name="toc-compand" href="#compand">25.28 compand</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-21" href="#Examples-21">25.28.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-earwax" href="#earwax">25.29 earwax</a></li>
+    <li><a name="toc-equalizer" href="#equalizer">25.30 equalizer</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-70" href="#Examples-70">25.30.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-highpass" href="#highpass">25.31 highpass</a></li>
+    <li><a name="toc-join" href="#join">25.32 join</a></li>
+    <li><a name="toc-ladspa" href="#ladspa">25.33 ladspa</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-45" href="#Examples-45">25.33.1 Examples</a></li>
+      <li><a name="toc-Commands-2" href="#Commands-2">25.33.2 Commands</a></li>
+    </ul></li>
+    <li><a name="toc-lowpass" href="#lowpass">25.34 lowpass</a></li>
+    <li><a name="toc-pan" href="#pan">25.35 pan</a>
+    <ul class="toc">
+      <li><a name="toc-Mixing-examples" href="#Mixing-examples">25.35.1 Mixing examples</a></li>
+      <li><a name="toc-Remapping-examples" href="#Remapping-examples">25.35.2 Remapping examples</a></li>
+    </ul></li>
+    <li><a name="toc-replaygain" href="#replaygain">25.36 replaygain</a></li>
+    <li><a name="toc-resample" href="#resample">25.37 resample</a></li>
+    <li><a name="toc-silencedetect" href="#silencedetect">25.38 silencedetect</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-8" href="#Examples-8">25.38.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-treble" href="#treble">25.39 treble</a></li>
+    <li><a name="toc-volume" href="#volume">25.40 volume</a>
+    <ul class="toc">
+      <li><a name="toc-Commands-1" href="#Commands-1">25.40.1 Commands</a></li>
+      <li><a name="toc-Examples-22" href="#Examples-22">25.40.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-volumedetect" href="#volumedetect">25.41 volumedetect</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-74" href="#Examples-74">25.41.1 Examples</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Audio-Sources" href="#Audio-Sources">26. Audio Sources</a>
+  <ul class="toc">
+    <li><a name="toc-abuffer" href="#abuffer">26.1 abuffer</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-83" href="#Examples-83">26.1.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-aevalsrc" href="#aevalsrc">26.2 aevalsrc</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-55" href="#Examples-55">26.2.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-anullsrc" href="#anullsrc">26.3 anullsrc</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-40" href="#Examples-40">26.3.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-flite" href="#flite">26.4 flite</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-42" href="#Examples-42">26.4.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sine" href="#sine">26.5 sine</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-20" href="#Examples-20">26.5.1 Examples</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Audio-Sinks" href="#Audio-Sinks">27. Audio Sinks</a>
+  <ul class="toc">
+    <li><a name="toc-abuffersink" href="#abuffersink">27.1 abuffersink</a></li>
+    <li><a name="toc-anullsink" href="#anullsink">27.2 anullsink</a></li>
+  </ul></li>
+  <li><a name="toc-Video-Filters" href="#Video-Filters">28. Video Filters</a>
+  <ul class="toc">
+    <li><a name="toc-alphaextract" href="#alphaextract">28.1 alphaextract</a></li>
+    <li><a name="toc-alphamerge" href="#alphamerge">28.2 alphamerge</a></li>
+    <li><a name="toc-ass" href="#ass">28.3 ass</a></li>
+    <li><a name="toc-bbox" href="#bbox">28.4 bbox</a></li>
+    <li><a name="toc-blackdetect" href="#blackdetect">28.5 blackdetect</a></li>
+    <li><a name="toc-blackframe" href="#blackframe">28.6 blackframe</a></li>
+    <li><a name="toc-blend" href="#blend">28.7 blend</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-63" href="#Examples-63">28.7.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-boxblur" href="#boxblur">28.8 boxblur</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-36" href="#Examples-36">28.8.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-colorbalance" href="#colorbalance">28.9 colorbalance</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-78" href="#Examples-78">28.9.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-colorchannelmixer" href="#colorchannelmixer">28.10 colorchannelmixer</a>
+    <ul class="toc">
+      <li><a name="toc-Examples" href="#Examples">28.10.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-colormatrix" href="#colormatrix">28.11 colormatrix</a></li>
+    <li><a name="toc-copy" href="#copy">28.12 copy</a></li>
+    <li><a name="toc-crop" href="#crop">28.13 crop</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-73" href="#Examples-73">28.13.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-cropdetect" href="#cropdetect">28.14 cropdetect</a></li>
+    <li><a name="toc-curves-1" href="#curves-1">28.15 curves</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-61" href="#Examples-61">28.15.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-dctdnoiz" href="#dctdnoiz">28.16 dctdnoiz</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-25" href="#Examples-25">28.16.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-decimate-1" href="#decimate-1">28.17 decimate</a></li>
+    <li><a name="toc-dejudder" href="#dejudder">28.18 dejudder</a></li>
+    <li><a name="toc-delogo" href="#delogo">28.19 delogo</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-37" href="#Examples-37">28.19.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-deshake" href="#deshake">28.20 deshake</a></li>
+    <li><a name="toc-drawbox" href="#drawbox">28.21 drawbox</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-50" href="#Examples-50">28.21.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-drawgrid" href="#drawgrid">28.22 drawgrid</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-30" href="#Examples-30">28.22.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-drawtext-1" href="#drawtext-1">28.23 drawtext</a>
+    <ul class="toc">
+      <li><a name="toc-Syntax-2" href="#Syntax-2">28.23.1 Syntax</a></li>
+      <li><a name="toc-Text-expansion" href="#Text-expansion">28.23.2 Text expansion</a></li>
+      <li><a name="toc-Examples-62" href="#Examples-62">28.23.3 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-edgedetect" href="#edgedetect">28.24 edgedetect</a></li>
+    <li><a name="toc-extractplanes" href="#extractplanes">28.25 extractplanes</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-26" href="#Examples-26">28.25.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-elbg" href="#elbg">28.26 elbg</a></li>
+    <li><a name="toc-fade" href="#fade">28.27 fade</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-52" href="#Examples-52">28.27.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-field" href="#field">28.28 field</a></li>
+    <li><a name="toc-fieldmatch" href="#fieldmatch">28.29 fieldmatch</a>
+    <ul class="toc">
+      <li><a name="toc-p_002fc_002fn_002fu_002fb-meaning-1" href="#p_002fc_002fn_002fu_002fb-meaning-1">28.29.1 p/c/n/u/b meaning</a>
+      <ul class="toc">
+        <li><a name="toc-p_002fc_002fn" href="#p_002fc_002fn">28.29.1.1 p/c/n</a></li>
+        <li><a name="toc-u_002fb" href="#u_002fb">28.29.1.2 u/b</a></li>
+      </ul></li>
+      <li><a name="toc-Examples-16" href="#Examples-16">28.29.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-fieldorder" href="#fieldorder">28.30 fieldorder</a></li>
+    <li><a name="toc-fifo" href="#fifo">28.31 fifo</a></li>
+    <li><a name="toc-format-1" href="#format-1">28.32 format</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-57" href="#Examples-57">28.32.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-fps-1" href="#fps-1">28.33 fps</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-72" href="#Examples-72">28.33.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-framepack" href="#framepack">28.34 framepack</a></li>
+    <li><a name="toc-framestep" href="#framestep">28.35 framestep</a></li>
+    <li><a name="toc-frei0r-1" href="#frei0r-1">28.36 frei0r</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-49" href="#Examples-49">28.36.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-geq" href="#geq">28.37 geq</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-19" href="#Examples-19">28.37.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-gradfun" href="#gradfun">28.38 gradfun</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-24" href="#Examples-24">28.38.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-haldclut-1" href="#haldclut-1">28.39 haldclut</a>
+    <ul class="toc">
+      <li><a name="toc-Workflow-examples" href="#Workflow-examples">28.39.1 Workflow examples</a>
+      <ul class="toc">
+        <li><a name="toc-Hald-CLUT-video-stream" href="#Hald-CLUT-video-stream">28.39.1.1 Hald CLUT video stream</a></li>
+        <li><a name="toc-Hald-CLUT-with-preview" href="#Hald-CLUT-with-preview">28.39.1.2 Hald CLUT with preview</a></li>
+      </ul>
+</li>
+    </ul></li>
+    <li><a name="toc-hflip" href="#hflip">28.40 hflip</a></li>
+    <li><a name="toc-histeq" href="#histeq">28.41 histeq</a></li>
+    <li><a name="toc-histogram" href="#histogram">28.42 histogram</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-58" href="#Examples-58">28.42.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-hqdn3d-1" href="#hqdn3d-1">28.43 hqdn3d</a></li>
+    <li><a name="toc-hue" href="#hue">28.44 hue</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-59" href="#Examples-59">28.44.1 Examples</a></li>
+      <li><a name="toc-Commands-4" href="#Commands-4">28.44.2 Commands</a></li>
+    </ul></li>
+    <li><a name="toc-idet" href="#idet">28.45 idet</a></li>
+    <li><a name="toc-il" href="#il">28.46 il</a></li>
+    <li><a name="toc-interlace" href="#interlace">28.47 interlace</a></li>
+    <li><a name="toc-kerndeint" href="#kerndeint">28.48 kerndeint</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-13" href="#Examples-13">28.48.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-lut3d-1" href="#lut3d-1">28.49 lut3d</a></li>
+    <li><a name="toc-lut_002c-lutrgb_002c-lutyuv" href="#lut_002c-lutrgb_002c-lutyuv">28.50 lut, lutrgb, lutyuv</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-44" href="#Examples-44">28.50.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mergeplanes" href="#mergeplanes">28.51 mergeplanes</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-4" href="#Examples-4">28.51.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mcdeint" href="#mcdeint">28.52 mcdeint</a></li>
+    <li><a name="toc-mp" href="#mp">28.53 mp</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-84" href="#Examples-84">28.53.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mpdecimate" href="#mpdecimate">28.54 mpdecimate</a></li>
+    <li><a name="toc-negate" href="#negate">28.55 negate</a></li>
+    <li><a name="toc-noformat" href="#noformat">28.56 noformat</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-68" href="#Examples-68">28.56.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-noise-1" href="#noise-1">28.57 noise</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-80" href="#Examples-80">28.57.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-null" href="#null">28.58 null</a></li>
+    <li><a name="toc-ocv" href="#ocv">28.59 ocv</a>
+    <ul class="toc">
+      <li><a name="toc-dilate-1" href="#dilate-1">28.59.1 dilate</a></li>
+      <li><a name="toc-erode" href="#erode">28.59.2 erode</a></li>
+      <li><a name="toc-smooth" href="#smooth">28.59.3 smooth</a></li>
+    </ul></li>
+    <li><a name="toc-overlay-1" href="#overlay-1">28.60 overlay</a>
+    <ul class="toc">
+      <li><a name="toc-Commands-3" href="#Commands-3">28.60.1 Commands</a></li>
+      <li><a name="toc-Examples-5" href="#Examples-5">28.60.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-owdenoise" href="#owdenoise">28.61 owdenoise</a></li>
+    <li><a name="toc-pad" href="#pad">28.62 pad</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-17" href="#Examples-17">28.62.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-perspective" href="#perspective">28.63 perspective</a></li>
+    <li><a name="toc-phase" href="#phase">28.64 phase</a></li>
+    <li><a name="toc-pixdesctest" href="#pixdesctest">28.65 pixdesctest</a></li>
+    <li><a name="toc-pp" href="#pp">28.66 pp</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-48" href="#Examples-48">28.66.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-psnr" href="#psnr">28.67 psnr</a></li>
+    <li><a name="toc-pullup-1" href="#pullup-1">28.68 pullup</a></li>
+    <li><a name="toc-removelogo" href="#removelogo">28.69 removelogo</a></li>
+    <li><a name="toc-rotate" href="#rotate">28.70 rotate</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-65" href="#Examples-65">28.70.1 Examples</a></li>
+      <li><a name="toc-Commands" href="#Commands">28.70.2 Commands</a></li>
+    </ul></li>
+    <li><a name="toc-sab" href="#sab">28.71 sab</a></li>
+    <li><a name="toc-scale-1" href="#scale-1">28.72 scale</a>
+    <ul class="toc">
+      <li><a name="toc-Options-6" href="#Options-6">28.72.1 Options</a></li>
+      <li><a name="toc-Examples-18" href="#Examples-18">28.72.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-separatefields" href="#separatefields">28.73 separatefields</a></li>
+    <li><a name="toc-setdar_002c-setsar" href="#setdar_002c-setsar">28.74 setdar, setsar</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-76" href="#Examples-76">28.74.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-setfield-1" href="#setfield-1">28.75 setfield</a></li>
+    <li><a name="toc-showinfo" href="#showinfo">28.76 showinfo</a></li>
+    <li><a name="toc-smartblur-1" href="#smartblur-1">28.77 smartblur</a></li>
+    <li><a name="toc-stereo3d" href="#stereo3d">28.78 stereo3d</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-64" href="#Examples-64">28.78.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-spp" href="#spp">28.79 spp</a></li>
+    <li><a name="toc-subtitles-1" href="#subtitles-1">28.80 subtitles</a></li>
+    <li><a name="toc-super2xsai" href="#super2xsai">28.81 super2xsai</a></li>
+    <li><a name="toc-swapuv" href="#swapuv">28.82 swapuv</a></li>
+    <li><a name="toc-telecine" href="#telecine">28.83 telecine</a></li>
+    <li><a name="toc-thumbnail" href="#thumbnail">28.84 thumbnail</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-54" href="#Examples-54">28.84.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-tile" href="#tile">28.85 tile</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-51" href="#Examples-51">28.85.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-tinterlace" href="#tinterlace">28.86 tinterlace</a></li>
+    <li><a name="toc-transpose" href="#transpose">28.87 transpose</a></li>
+    <li><a name="toc-trim" href="#trim">28.88 trim</a></li>
+    <li><a name="toc-unsharp" href="#unsharp">28.89 unsharp</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-27" href="#Examples-27">28.89.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-vidstabdetect-1" href="#vidstabdetect-1">28.90 vidstabdetect</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-32" href="#Examples-32">28.90.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-vidstabtransform-1" href="#vidstabtransform-1">28.91 vidstabtransform</a>
+    <ul class="toc">
+      <li><a name="toc-Options-13" href="#Options-13">28.91.1 Options</a></li>
+      <li><a name="toc-Examples-29" href="#Examples-29">28.91.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-vflip" href="#vflip">28.92 vflip</a></li>
+    <li><a name="toc-vignette" href="#vignette">28.93 vignette</a>
+    <ul class="toc">
+      <li><a name="toc-Expressions" href="#Expressions">28.93.1 Expressions</a></li>
+      <li><a name="toc-Examples-15" href="#Examples-15">28.93.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-w3fdif" href="#w3fdif">28.94 w3fdif</a></li>
+    <li><a name="toc-yadif-1" href="#yadif-1">28.95 yadif</a></li>
+  </ul></li>
+  <li><a name="toc-Video-Sources" href="#Video-Sources">29. Video Sources</a>
+  <ul class="toc">
+    <li><a name="toc-buffer" href="#buffer">29.1 buffer</a></li>
+    <li><a name="toc-cellauto" href="#cellauto">29.2 cellauto</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-77" href="#Examples-77">29.2.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mandelbrot" href="#mandelbrot">29.3 mandelbrot</a></li>
+    <li><a name="toc-mptestsrc" href="#mptestsrc">29.4 mptestsrc</a></li>
+    <li><a name="toc-frei0r_005fsrc" href="#frei0r_005fsrc">29.5 frei0r_src</a></li>
+    <li><a name="toc-life" href="#life">29.6 life</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-69" href="#Examples-69">29.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">29.7 color, haldclutsrc, nullsrc, rgbtestsrc, smptebars, smptehdbars, testsrc</a>
+    <ul class="toc">
+      <li><a name="toc-Commands-5" href="#Commands-5">29.7.1 Commands</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Video-Sinks" href="#Video-Sinks">30. Video Sinks</a>
+  <ul class="toc">
+    <li><a name="toc-buffersink" href="#buffersink">30.1 buffersink</a></li>
+    <li><a name="toc-nullsink" href="#nullsink">30.2 nullsink</a></li>
+  </ul></li>
+  <li><a name="toc-Multimedia-Filters" href="#Multimedia-Filters">31. Multimedia Filters</a>
+  <ul class="toc">
+    <li><a name="toc-avectorscope" href="#avectorscope">31.1 avectorscope</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-2" href="#Examples-2">31.1.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-concat-2" href="#concat-2">31.2 concat</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-28" href="#Examples-28">31.2.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-ebur128" href="#ebur128">31.3 ebur128</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-34" href="#Examples-34">31.3.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-interleave_002c-ainterleave" href="#interleave_002c-ainterleave">31.4 interleave, ainterleave</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-79" href="#Examples-79">31.4.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-perms_002c-aperms" href="#perms_002c-aperms">31.5 perms, aperms</a></li>
+    <li><a name="toc-select_002c-aselect" href="#select_002c-aselect">31.6 select, aselect</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-35" href="#Examples-35">31.6.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sendcmd_002c-asendcmd" href="#sendcmd_002c-asendcmd">31.7 sendcmd, asendcmd</a>
+    <ul class="toc">
+      <li><a name="toc-Commands-syntax" href="#Commands-syntax">31.7.1 Commands syntax</a></li>
+      <li><a name="toc-Examples-60" href="#Examples-60">31.7.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-setpts_002c-asetpts" href="#setpts_002c-asetpts">31.8 setpts, asetpts</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-1" href="#Examples-1">31.8.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-settb_002c-asettb" href="#settb_002c-asettb">31.9 settb, asettb</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-43" href="#Examples-43">31.9.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-showspectrum" href="#showspectrum">31.10 showspectrum</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-46" href="#Examples-46">31.10.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-showwaves" href="#showwaves">31.11 showwaves</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-9" href="#Examples-9">31.11.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-split_002c-asplit" href="#split_002c-asplit">31.12 split, asplit</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-11" href="#Examples-11">31.12.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-zmq_002c-azmq" href="#zmq_002c-azmq">31.13 zmq, azmq</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-3" href="#Examples-3">31.13.1 Examples</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Multimedia-Sources" href="#Multimedia-Sources">32. Multimedia Sources</a>
+  <ul class="toc">
+    <li><a name="toc-amovie" href="#amovie">32.1 amovie</a></li>
+    <li><a name="toc-movie-1" href="#movie-1">32.2 movie</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-12" href="#Examples-12">32.2.1 Examples</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-See-Also" href="#See-Also">33. See Also</a></li>
+  <li><a name="toc-Authors" href="#Authors">34. 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-10"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Options-10">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>-hide_banner</samp>&rsquo;</dt>
+<dd><p>Suppress printing banner.
+</p>
+<p>All FFmpeg tools will normally show a copyright notice, build options
+and library versions. This option can be used to suppress printing
+this information.
+</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;s&gt;</dt>
+<dd><p>Step to the next frame.
+</p>
+<p>Pause if the stream is not already paused, step to the next video
+frame, and pause.
+</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 to the previous/next chapter.
+or if there are no chapters
+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"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Syntax">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-10"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-10">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-56"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-56">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 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>
+</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.
+Negative values behave identical to the corresponding positive ones, except
+that the score is normalized.
+Positive values exist primarly for compatibility reasons and are not so useful.
+</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>-decoders</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-4"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-4">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>
+
+<p>A description of some of the currently available audio decoders
+follows.
+</p>
+<a name="ac3"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-ac3">10.1 ac3</a></h2>
+
+<p>AC-3 audio decoder.
+</p>
+<p>This decoder implements part of ATSC A/52:2010 and ETSI TS 102 366, as well as
+the undocumented RealAudio 3 (a.k.a. dnet).
+</p>
+<a name="AC_002d3-Decoder-Options"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-AC_002d3-Decoder-Options">10.1.1 AC-3 Decoder Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-drc_scale <var>value</var></samp>&rsquo;</dt>
+<dd><p>Dynamic Range Scale Factor. The factor to apply to dynamic range values
+from the AC-3 stream. This factor is applied exponentially.
+There are 3 notable scale factor ranges:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>drc_scale == 0</samp>&rsquo;</dt>
+<dd><p>DRC disabled. Produces full range audio.
+</p></dd>
+<dt> &lsquo;<samp>0 &lt; drc_scale &lt;= 1</samp>&rsquo;</dt>
+<dd><p>DRC enabled.  Applies a fraction of the stream DRC value.
+Audio reproduction is between full range and full compression.
+</p></dd>
+<dt> &lsquo;<samp>drc_scale &gt; 1</samp>&rsquo;</dt>
+<dd><p>DRC enabled. Applies drc_scale asymmetrically.
+Loud sounds are fully compressed.  Soft sounds are enhanced.
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="ffwavesynth"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-ffwavesynth">10.2 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.3 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.4 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.5 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-12"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-12">10.5.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="ffplay-all.html#toc-libopencore_002damrnb">10.6 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.7 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.8 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"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options">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-8"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-8">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="Bitstream-Filters"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Bitstream-Filters">12. 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">12.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">12.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">12.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">12.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">12.5 imx_dump_header</a></h2>
+
+<a name="mjpeg2jpeg"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-mjpeg2jpeg">12.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">12.7 mjpega_dump_header</a></h2>
+
+<a name="movsub"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-movsub">12.8 movsub</a></h2>
+
+<a name="mp3_005fheader_005fdecompress"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-mp3_005fheader_005fdecompress">12.9 mp3_header_decompress</a></h2>
+
+<a name="noise"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-noise">12.10 noise</a></h2>
+
+<a name="remove_005fextra"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-remove_005fextra">12.11 remove_extra</a></h2>
+
+<a name="Format-Options"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Format-Options">13. 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>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>make_non_negative</samp>&rsquo;</dt>
+<dd><p>Shift timestamps to make them non-negative.
+Also note that this affects only leading negative timestamps, and not
+non-monotonic negative timestamps.
+</p></dd>
+<dt> &lsquo;<samp>make_zero</samp>&rsquo;</dt>
+<dd><p>Shift timestamps so that the first timestamp is 0.
+</p></dd>
+<dt> &lsquo;<samp>auto (default)</samp>&rsquo;</dt>
+<dd><p>Enables shifting when required by the target format.
+</p></dd>
+<dt> &lsquo;<samp>disabled</samp>&rsquo;</dt>
+<dd><p>Disables shifting of timestamp.
+</p></dd>
+</dl>
+
+<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>
+</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>
+<dt> &lsquo;<samp>output_ts_offset <var>offset</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set the output time offset.
+</p>
+<p><var>offset</var> must be a time duration specification,
+see <a href="ffmpeg-utils.html#time-duration-syntax">(ffmpeg-utils)time duration syntax</a>.
+</p>
+<p>The offset is added by the muxer to the output timestamps.
+</p>
+<p>Specifying a positive offset means that the corresponding streams are
+delayed bt the time duration specified in <var>offset</var>. Default value
+is <code>0</code> (meaning that no offset is applied).
+</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">13.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">14. 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">14.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">14.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="ffplay-all.html#toc-concat-1">14.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">14.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-11"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-11">14.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">14.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">14.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">14.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"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-image2">14.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-53"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-53">14.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="ffplay-all.html#toc-mpegts">14.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">14.9 rawvideo</a></h2>
+
+<p>Raw video demuxer.
+</p>
+<p>This demuxer allows one 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">14.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">14.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="Metadata"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Metadata">15. 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">16. 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">16.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">16.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-3"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-concat-3">16.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">16.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">16.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">16.6 file</a></h2>
+
+<p>File access protocol.
+</p>
+<p>Allow to read from or write to a file.
+</p>
+<p>A file URL can have the form:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">file:<var>filename</var>
+</pre></td></tr></table>
+
+<p>where <var>filename</var> is the path of the file to read.
+</p>
+<p>An URL that does not have a protocol prefix will be assumed to be a
+file URL. Depending on the build, an URL that looks like a Windows
+path with the drive letter at the beginning will also be assumed to be
+a file URL (usually not the case in builds for unix-like systems).
+</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>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">16.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">16.8 gopher</a></h2>
+
+<p>Gopher protocol.
+</p>
+<a name="hls"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-hls">16.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">16.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>content_type</samp>&rsquo;</dt>
+<dd><p>Set a specific content type for the POST messages.
+</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>multiple_requests</samp>&rsquo;</dt>
+<dd><p>Use persistent connections if set to 1, default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>post_data</samp>&rsquo;</dt>
+<dd><p>Set custom HTTP post data.
+</p>
+</dd>
+<dt> &lsquo;<samp>user-agent</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>user_agent</samp>&rsquo;</dt>
+<dd><p>Override the User-Agent header. If not specified the protocol will use a
+string describing the libavformat build. (&quot;Lavf/&lt;version&gt;&quot;)
+</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>Export the 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 by 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. It should be
+polled in regular intervals by applications interested in mid-stream metadata
+updates.
+</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>
+<dt> &lsquo;<samp>offset</samp>&rsquo;</dt>
+<dd><p>Set initial byte offset.
+</p>
+</dd>
+<dt> &lsquo;<samp>end_offset</samp>&rsquo;</dt>
+<dd><p>Try to limit the request to bytes preceding this offset.
+</p></dd>
+</dl>
+
+<a name="HTTP-Cookies"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-HTTP-Cookies">16.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">16.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">16.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="ffplay-all.html#toc-md5">16.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">16.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">16.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">16.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">16.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">16.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">16.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">16.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">16.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>
+<dt> &lsquo;<samp>private_key</samp>&rsquo;</dt>
+<dd><p>Specify the path of the file containing private key to use during authorization.
+By default libssh searches for keys in the &lsquo;<tt>~/.ssh/</tt>&rsquo; directory.
+</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">16.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">16.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">16.24 rtsp</a></h2>
+
+<p>Real-Time Streaming Protocol.
+</p>
+<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>Options can be 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>.
+</p>
+<p>The following options are supported.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>initial_pause</samp>&rsquo;</dt>
+<dd><p>Do not start playing the stream immediately if set to 1. Default value
+is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtsp_transport</samp>&rsquo;</dt>
+<dd><p>Set RTSP trasport protocols.
+</p>
+<p>It accepts the following values:
+</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 &lsquo;<samp>tcp</samp>&rsquo; and &lsquo;<samp>udp</samp>&rsquo; options are supported.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtsp_flags</samp>&rsquo;</dt>
+<dd><p>Set RTSP flags.
+</p>
+<p>The following values are accepted:
+</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>Default value is &lsquo;<samp>none</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>allowed_media_types</samp>&rsquo;</dt>
+<dd><p>Set media types to accept from the server.
+</p>
+<p>The following flags are accepted:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>video</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>audio</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>data</samp>&rsquo;</dt>
+</dl>
+
+<p>By default it accepts all media types.
+</p>
+</dd>
+<dt> &lsquo;<samp>min_port</samp>&rsquo;</dt>
+<dd><p>Set minimum local UDP port. Default value is 5000.
+</p>
+</dd>
+<dt> &lsquo;<samp>max_port</samp>&rsquo;</dt>
+<dd><p>Set maximum local UDP port. Default value is 65000.
+</p>
+</dd>
+<dt> &lsquo;<samp>timeout</samp>&rsquo;</dt>
+<dd><p>Set maximum timeout (in seconds) to wait for incoming connections.
+</p>
+<p>A value of -1 mean infinite (default). This option implies the
+&lsquo;<samp>rtsp_flags</samp>&rsquo; set to &lsquo;<samp>listen</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>reorder_queue_size</samp>&rsquo;</dt>
+<dd><p>Set number of packets to buffer for handling of reordered packets.
+</p>
+</dd>
+<dt> &lsquo;<samp>stimeout</samp>&rsquo;</dt>
+<dd><p>Set socket TCP I/O timeout in micro seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>user-agent</samp>&rsquo;</dt>
+<dd><p>Override User-Agent header. If not specified, it default to the
+libavformat identifier string.
+</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>
+<a name="Examples-66"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-66">16.24.1 Examples</a></h3>
+
+<p>The following examples all make use of the <code>ffplay</code> and
+<code>ffmpeg</code> tools.
+</p>
+<ul>
+<li>
+Watch a stream over UDP, with a max reordering delay of 0.5 seconds:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -max_delay 500000 -rtsp_transport udp rtsp://server/video.mp4
+</pre></td></tr></table>
+
+</li><li>
+Watch a stream tunneled over HTTP:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -rtsp_transport http rtsp://server/video.mp4
+</pre></td></tr></table>
+
+</li><li>
+Send a stream in realtime to a RTSP server, for others to watch:
+<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>
+
+</li><li>
+Receive a stream in realtime:
+<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>
+</li></ul>
+
+<a name="sap"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-sap">16.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">16.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">16.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">16.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">16.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">16.28 tcp</a></h2>
+
+<p>Transmission 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>
+
+<p><var>options</var> contains a list of &amp;-separated options of the form
+<var>key</var>=<var>val</var>.
+</p>
+<p>The list of supported options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>listen=<var>1|0</var></samp>&rsquo;</dt>
+<dd><p>Listen for an incoming connection. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>timeout=<var>microseconds</var></samp>&rsquo;</dt>
+<dd><p>Set raise error timeout, expressed in microseconds.
+</p>
+<p>This option is only relevant in read mode: if no data arrived in more
+than this time interval, raise error.
+</p>
+</dd>
+<dt> &lsquo;<samp>listen_timeout=<var>microseconds</var></samp>&rsquo;</dt>
+<dd><p>Set listen timeout, expressed in microseconds.
+</p></dd>
+</dl>
+
+<p>The following example shows how to setup a listening TCP connection
+with <code>ffmpeg</code>, which is then accessed with <code>ffplay</code>:
+</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>
+
+<a name="tls"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-tls">16.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">16.30 udp</a></h2>
+
+<p>User Datagram Protocol.
+</p>
+<p>The required syntax for an 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 one 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>Set raise error timeout, expressed in microseconds.
+</p>
+<p>This option is only relevant in read mode: if no data arrived in more
+than this time interval, raise error.
+</p></dd>
+</dl>
+
+<a name="Examples-6"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-6">16.30.1 Examples</a></h3>
+
+<ul>
+<li>
+Use <code>ffmpeg</code> to stream over UDP to a remote endpoint:
+<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>
+
+</li><li>
+Use <code>ffmpeg</code> to stream in mpegts format over UDP using 188
+sized UDP packets, using a large input buffer:
+<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>
+
+</li><li>
+Use <code>ffmpeg</code> to receive over UDP from a remote endpoint:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i udp://[<var>multicast-address</var>]:<var>port</var> ...
+</pre></td></tr></table>
+</li></ul>
+
+<a name="unix"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-unix">16.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">17. 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">18. 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="ffplay-all.html#toc-alsa">18.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">18.2 bktr</a></h2>
+
+<p>BSD video input device.
+</p>
+<a name="dshow"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-dshow">18.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-9"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-9">18.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-7"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-7">18.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">18.4 dv1394</a></h2>
+
+<p>Linux DV 1394 input device.
+</p>
+<a name="fbdev"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-fbdev">18.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">18.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-7"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-7">18.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-23"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-23">18.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">18.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">18.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="ffplay-all.html#toc-Options-14">18.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-39"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-39">18.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">18.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">18.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 one 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-5"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-5">18.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-14"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-14">18.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">18.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="ffplay-all.html#toc-pulse">18.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="ffplay-all.html#toc-Options-1">18.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-71"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-71">18.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="ffplay-all.html#toc-sndio">18.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">18.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-3"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-3">18.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 one 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">18.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">18.16 x11grab</a></h2>
+
+<p>X11 video input device.
+</p>
+<p>This device allows one 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-2"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-2">18.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="Resampler-Options"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Resampler-Options">19. 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">20. 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>bicublin</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">21. 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">22. 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">23. 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">23.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 one 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">23.2 Notes on filtergraph escaping</a></h2>
+
+<p>Filtergraph description composition entails several levels of
+escaping. See <a href="ffmpeg-utils.html#quoting_005fand_005fescaping">(ffmpeg-utils)quoting_and_escaping</a> for more
+information about the employed escaping procedure.
+</p>
+<p>A first level escaping affects the content of each filter option
+value, which may contain the special character <code>:</code> used to
+separate values, or one of the escaping characters <code>\'</code>.
+</p>
+<p>A second level escaping affects the whole filter description, which
+may contain the escaping characters <code>\'</code> or the special
+characters <code>[],;</code> used by the filtergraph description.
+</p>
+<p>Finally, when you specify a filtergraph on a shell commandline, you
+need to perform a third level escaping for the shell special
+characters contained within it.
+</p>
+<p>For example, consider the following string to be embedded in
+the <a href="#drawtext">drawtext</a> filter description &lsquo;<samp>text</samp>&rsquo; value:
+</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>This string contains the <code>'</code> special escaping character, and the
+<code>:</code> special character, so it needs to be escaped in this way:
+</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
+description 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>(note that in addition to the <code>\'</code> escaping special characters,
+also <code>,</code> needs to be escaped).
+</p>
+<p>Finally an additional level of escaping is 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>
+
+<a name="Timeline-editing"></a>
+<h1 class="chapter"><a href="ffplay-all.html#toc-Timeline-editing">24. 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">25. 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">25.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">25.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">25.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="ffplay-all.html#toc-Examples-31">25.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">25.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-75"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-75">25.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">25.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="ffplay-all.html#toc-Examples-82">25.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">25.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-33"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-33">25.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">25.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">25.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">25.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-67"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-67">25.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">25.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">25.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">25.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">25.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">25.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-38"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-38">25.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">25.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">25.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">25.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">25.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">25.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-41"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-41">25.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">25.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">25.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-81"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-81">25.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">25.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">25.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">25.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">25.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">25.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">25.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">25.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">25.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. <var>attacks</var> refers to
+increase of volume and <var>decays</var> 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. A typical value for attack is 0.3 seconds and
+a typical value for decay is 0.8 seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>points</samp>&rsquo;</dt>
+<dd><p>Set list of points for the transfer function, specified in dB relative to the
+maximum possible signal amplitude. Each key points list must be defined using
+the following syntax: <code>x0/y0|x1/y1|x2/y2|....</code> or
+<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 the curve radius in dB for all joints. Defaults to 0.01.
+</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.
+This allows easy adjustment of the overall gain. Defaults to 0.
+</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. Defaults to 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>delay</samp>&rsquo;</dt>
+<dd><p>Set delay in seconds. The input audio is analyzed 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. Defaults to 0.
+</p>
+</dd>
+</dl>
+
+<a name="Examples-21"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-21">25.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">25.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">25.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="Examples-70"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-70">25.30.1 Examples</a></h3>
+<ul>
+<li>
+Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
+<table><tr><td>&nbsp;</td><td><pre class="example">equalizer=f=1000:width_type=h:width=200:g=-10
+</pre></td></tr></table>
+
+</li><li>
+Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
+<table><tr><td>&nbsp;</td><td><pre class="example">equalizer=f=1000:width_type=q:width=1:g=2,equalizer=f=100:width_type=q:width=2:g=-5
+</pre></td></tr></table>
+</li></ul>
+
+<a name="highpass"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-highpass">25.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">25.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">25.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-45"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-45">25.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="ffplay-all.html#toc-Commands-2">25.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">25.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">25.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">25.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">25.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">25.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">25.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">25.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-8"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-8">25.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">25.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">25.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>Set audio volume expression.
+</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 &quot;1.0&quot;.
+</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>
+<dt> &lsquo;<samp>eval</samp>&rsquo;</dt>
+<dd><p>Set when the volume expression is evaluated.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>once</samp>&rsquo;</dt>
+<dd><p>only evaluate expression once during the filter initialization, or
+when the &lsquo;<samp>volume</samp>&rsquo; command is sent
+</p>
+</dd>
+<dt> &lsquo;<samp>frame</samp>&rsquo;</dt>
+<dd><p>evaluate expression for each incoming frame
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>once</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<p>The volume expression can contain the following parameters.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>frame number (starting at zero)
+</p></dd>
+<dt> &lsquo;<samp>nb_channels</samp>&rsquo;</dt>
+<dd><p>number of channels
+</p></dd>
+<dt> &lsquo;<samp>nb_consumed_samples</samp>&rsquo;</dt>
+<dd><p>number of samples consumed by the filter
+</p></dd>
+<dt> &lsquo;<samp>nb_samples</samp>&rsquo;</dt>
+<dd><p>number of samples in the current frame
+</p></dd>
+<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
+<dd><p>original frame position in the file
+</p></dd>
+<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
+<dd><p>frame PTS
+</p></dd>
+<dt> &lsquo;<samp>sample_rate</samp>&rsquo;</dt>
+<dd><p>sample rate
+</p></dd>
+<dt> &lsquo;<samp>startpts</samp>&rsquo;</dt>
+<dd><p>PTS at start of stream
+</p></dd>
+<dt> &lsquo;<samp>startt</samp>&rsquo;</dt>
+<dd><p>time at start of stream
+</p></dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>frame time
+</p></dd>
+<dt> &lsquo;<samp>tb</samp>&rsquo;</dt>
+<dd><p>timestamp timebase
+</p></dd>
+<dt> &lsquo;<samp>volume</samp>&rsquo;</dt>
+<dd><p>last set volume value
+</p></dd>
+</dl>
+
+<p>Note that when &lsquo;<samp>eval</samp>&rsquo; is set to &lsquo;<samp>once</samp>&rsquo; only the
+<var>sample_rate</var> and <var>tb</var> variables are available, all other
+variables will evaluate to NAN.
+</p>
+<a name="Commands-1"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Commands-1">25.40.1 Commands</a></h3>
+
+<p>This filter supports the following commands:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>volume</samp>&rsquo;</dt>
+<dd><p>Modify the volume 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="Examples-22"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-22">25.40.2 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><li>
+Fade volume after time 10 with an annihilation period of 5 seconds:
+<table><tr><td>&nbsp;</td><td><pre class="example">volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
+</pre></td></tr></table>
+</li></ul>
+
+<a name="volumedetect"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-volumedetect">25.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-74"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-74">25.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">26. 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">26.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-83"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-83">26.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">26.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="ffplay-all.html#toc-Examples-55">26.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">26.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-40"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-40">26.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">26.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-42"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-42">26.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">26.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-20"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-20">26.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">27. 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">27.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">27.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">28. 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">28.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">28.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">28.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">28.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">28.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">28.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">28.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-63"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-63">28.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">28.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-36"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-36">28.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">28.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-78"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-78">28.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">28.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"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples">28.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">28.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">28.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">28.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-73"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-73">28.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">28.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">28.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-61"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-61">28.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">28.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-25"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-25">28.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">28.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="dejudder"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-dejudder">28.18 dejudder</a></h2>
+
+<p>Remove judder produced by partially interlaced telecined content.
+</p>
+<p>Judder can be introduced, for instance, by <a href="#pullup">pullup</a> filter. If the original
+source was partially telecined content then the output of <code>pullup,dejudder</code>
+will have a variable frame rate. May change the recorded frame rate of the
+container. Aside from that change, this filter will not affect constant frame
+rate video.
+</p>
+<p>The option available in this filter is:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>cycle</samp>&rsquo;</dt>
+<dd><p>Specify the length of the window over which the judder repeats.
+</p>
+<p>Accepts any interger greater than 1. Useful values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>4</samp>&rsquo;</dt>
+<dd><p>If the original was telecined from 24 to 30 fps (Film to NTSC).
+</p>
+</dd>
+<dt> &lsquo;<samp>5</samp>&rsquo;</dt>
+<dd><p>If the original was telecined from 25 to 30 fps (PAL to NTSC).
+</p>
+</dd>
+<dt> &lsquo;<samp>20</samp>&rsquo;</dt>
+<dd><p>If a mixture of the two.
+</p></dd>
+</dl>
+
+<p>The default is &lsquo;<samp>4</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<a name="delogo"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-delogo">28.19 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-37"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-37">28.19.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">28.20 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">28.21 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-50"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-50">28.21.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">28.22 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-30"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-30">28.22.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">28.23 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-2"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Syntax-2">28.23.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>borderw</samp>&rsquo;</dt>
+<dd><p>Set the width of the border to be drawn around the text using <var>bordercolor</var>.
+The default value of <var>borderw</var> is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>bordercolor</samp>&rsquo;</dt>
+<dd><p>Set the color to be used for drawing border 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>bordercolor</var> is &quot;black&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;default&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">28.23.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-62"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-62">28.23.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">28.24 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 chosen 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">28.25 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-26"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-26">28.25.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">28.26 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">28.27 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-52"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-52">28.27.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">28.28 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">28.29 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">28.29.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">28.29.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">28.29.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-16"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-16">28.29.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">28.30 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">28.31 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">28.32 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">28.32.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">28.33 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="ffplay-all.html#toc-Examples-72">28.33.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="framepack"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-framepack">28.34 framepack</a></h2>
+
+<p>Pack two different video streams into a stereoscopic video, setting proper
+metadata on supported codecs. The two views should have the same size and
+framerate and processing will stop when the shorter video ends. Please note
+that you may conveniently adjust view properties with the <a href="#scale">scale</a> and
+<a href="#fps">fps</a> filters.
+</p>
+<p>This filter accepts the following named parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>format</samp>&rsquo;</dt>
+<dd><p>Desired packing format. Supported values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>sbs</samp>&rsquo;</dt>
+<dd><p>Views are next to each other (default).
+</p>
+</dd>
+<dt> &lsquo;<samp>tab</samp>&rsquo;</dt>
+<dd><p>Views are on top of each other.
+</p>
+</dd>
+<dt> &lsquo;<samp>lines</samp>&rsquo;</dt>
+<dd><p>Views are packed by line.
+</p>
+</dd>
+<dt> &lsquo;<samp>columns</samp>&rsquo;</dt>
+<dd><p>Views are eacked by column.
+</p>
+</dd>
+<dt> &lsquo;<samp>frameseq</samp>&rsquo;</dt>
+<dd><p>Views are temporally interleaved.
+</p>
+</dd>
+</dl>
+
+</dd>
+</dl>
+
+<p>Some examples follow:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example"># Convert left and right views into a frame sequential video.
+ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
+
+# Convert views into a side-by-side video with the same output resolution as the input.
+ffmpeg -i LEFT -i RIGHT -filter_complex [0:v]scale=w=iw/2[left],[1:v]scale=w=iw/2[right],[left][right]framepack=sbs OUTPUT
+</pre></td></tr></table>
+
+<a name="framestep"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-framestep">28.35 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">28.36 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-49"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-49">28.36.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">28.37 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-19"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-19">28.37.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">28.38 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-24"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-24">28.38.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">28.39 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">28.39.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">28.39.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">28.39.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">28.40 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">28.41 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">28.42 histogram</a></h2>
+
+<p>Compute and draw a color distribution histogram for the input video.
+</p>
+<p>The computed histogram is a representation of the color component
+distribution 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 displays the 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 the
+current frame. Below each graph a color component scale meter is shown.
+</p>
+</dd>
+<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
+<dd><p>Displays chroma values (U/V color placement) in a two dimensional
+graph (which is called a vectorscope). The brighter a pixel in the
+vectorscope, the more pixels of the input frame correspond to that pixel
+(i.e., 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. The graph can therefore be used to read 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 the amount of a specific color is increased (while leaving the other
+colors unchanged) the saturation increases, and the indicator moves 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, the graph on the left side
+represents color component value 0 and the right side represents value = 255.
+In column mode, the 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
+many values of the same luminance are distributed across input rows/columns.
+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 the 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 below each other.
+</p>
+<p>Using 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 graphs 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 perform by
+making level adjustments the three waveforms.
+</p>
+</dd>
+<dt> &lsquo;<samp>overlay</samp>&rsquo;</dt>
+<dd><p>Presents information 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 makes it easier to spot
+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-58"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-58">28.42.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">28.43 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">28.44 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-59"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-59">28.44.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-4"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Commands-4">28.44.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">28.45 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">28.46 il</a></h2>
+
+<p>Deinterleave or interleave fields.
+</p>
+<p>This filter allows one 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">28.47 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. A vertical lowpass filter
+is always applied in order to avoid twitter effects and reduce moiré patterns.
+</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>
+</dl>
+
+<a name="kerndeint"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-kerndeint">28.48 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-13"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-13">28.48.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">28.49 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">28.50 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-44"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-44">28.50.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">28.51 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-4"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-4">28.51.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">28.52 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">28.53 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-84"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-84">28.53.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">28.54 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">28.55 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">28.56 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-68"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-68">28.56.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="ffplay-all.html#toc-noise-1">28.57 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-80"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-80">28.57.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">28.58 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">28.59 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">28.59.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">28.59.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">28.59.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">28.60 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>eof_action</samp>&rsquo;</dt>
+<dd><p>The action to take when EOF is encountered on the secondary input, accepts one
+of the following values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>repeat</samp>&rsquo;</dt>
+<dd><p>repeat the last frame (the default)
+</p></dd>
+<dt> &lsquo;<samp>endall</samp>&rsquo;</dt>
+<dd><p>end both streams
+</p></dd>
+<dt> &lsquo;<samp>pass</samp>&rsquo;</dt>
+<dd><p>pass through the main input
+</p></dd>
+</dl>
+
+</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>yuv422</samp>&rsquo;</dt>
+<dd><p>force YUV422 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-3"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Commands-3">28.60.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-5"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-5">28.60.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>
+mask 10-20 seconds of a video by applying the delogo filter to a section
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
+-vf '[in]split[split_main][split_delogo];[split_delogo]trim=start=360:end=371,delogo=0:0:640:480[delogoed];[split_main][delogoed]overlay=eof_action=pass[out]'
+masked.avi
+</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">28.61 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">28.62 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-17"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-17">28.62.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">28.63 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">28.64 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">28.65 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">28.66 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-48"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-48">28.66.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">28.67 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>
+<p><a name="pullup"></a>
+</p><a name="pullup-1"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-pullup-1">28.68 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">28.69 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">28.70 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 height
+</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 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>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-65"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-65">28.70.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>
+Rotate the input by 45 degrees clockwise:
+<table><tr><td>&nbsp;</td><td><pre class="example">rotate=45*PI/180
+</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 chosen 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"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Commands">28.70.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">28.71 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">28.72 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-6"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-6">28.72.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>If one of the values is -n with n &gt; 1, the scale filter will also use a value
+that maintains the aspect ratio of the input image, calculated from the other
+specified dimension. After that it will, however, make sure that the calculated
+dimension is divisible by n and adjust the value if necessary.
+</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 explicitly 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-18"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-18">28.72.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">28.73 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">28.74 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-76"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-76">28.74.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">28.75 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">28.76 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">28.77 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">28.78 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-64"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-64">28.78.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">28.79 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">28.80 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">28.81 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">28.82 swapuv</a></h2>
+<p>Swap U &amp; V plane.
+</p>
+<a name="telecine"></a>
+<h2 class="section"><a href="ffplay-all.html#toc-telecine">28.83 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">28.84 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-54"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-54">28.84.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">28.85 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-51"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-51">28.85.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 accommodate 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">28.86 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">28.87 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">28.88 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">28.89 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-27"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-27">28.89.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">28.90 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 15.
+</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-32"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-32">28.90.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">28.91 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>
+<a name="Options-13"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Options-13">28.91.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>input</samp>&rsquo;</dt>
+<dd><p>Set path to the file used to read the transforms. Default value is
+&lsquo;<tt>transforms.trf</tt>&rsquo;).
+</p>
+</dd>
+<dt> &lsquo;<samp>smoothing</samp>&rsquo;</dt>
+<dd><p>Set the number of frames (value*2 + 1) used for lowpass filtering the
+camera movements. Default value is 10.
+</p>
+<p>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). 0 is a special case where a
+static camera is simulated.
+</p>
+</dd>
+<dt> &lsquo;<samp>optalgo</samp>&rsquo;</dt>
+<dd><p>Set the camera path optimization algorithm.
+</p>
+<p>Accepted values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>gauss</samp>&rsquo;</dt>
+<dd><p>gaussian kernel low-pass filter on camera motion (default)
+</p></dd>
+<dt> &lsquo;<samp>avg</samp>&rsquo;</dt>
+<dd><p>averaging on transformations
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>maxshift</samp>&rsquo;</dt>
+<dd><p>Set maximal number of pixels to translate frames. Default value is -1,
+meaning no limit.
+</p>
+</dd>
+<dt> &lsquo;<samp>maxangle</samp>&rsquo;</dt>
+<dd><p>Set maximal angle in radians (degree*PI/180) to rotate frames. Default
+value is -1, meaning no limit.
+</p>
+</dd>
+<dt> &lsquo;<samp>crop</samp>&rsquo;</dt>
+<dd><p>Specify how to deal with borders that may be visible due to movement
+compensation.
+</p>
+<p>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><p>Invert transforms if set to 1. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>relative</samp>&rsquo;</dt>
+<dd><p>Consider transforms as relative to previsou frame if set to 1,
+absolute if set to 0. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>zoom</samp>&rsquo;</dt>
+<dd><p>Set percentage to zoom. A positive value will result in a zoom-in
+effect, a negative value in a zoom-out effect. Default value is 0 (no
+zoom).
+</p>
+</dd>
+<dt> &lsquo;<samp>optzoom</samp>&rsquo;</dt>
+<dd><p>Set optimal zooming to avoid borders.
+</p>
+<p>Accepted values are:
+</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), see &lsquo;<samp>zoomspeed</samp>&rsquo;
+</p></dd>
+</dl>
+
+<p>Note that the value given at zoom is added to the one calculated here.
+</p>
+</dd>
+<dt> &lsquo;<samp>zoomspeed</samp>&rsquo;</dt>
+<dd><p>Set percent to zoom maximally each frame (enabled when
+&lsquo;<samp>optzoom</samp>&rsquo; is set to 2). Range is from 0 to 5, default value is
+0.25.
+</p>
+</dd>
+<dt> &lsquo;<samp>interpol</samp>&rsquo;</dt>
+<dd><p>Specify 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>Enable virtual tripod mode if set to 1, which is equivalent to
+<code>relative=0:smoothing=0</code>. Default value is 0.
+</p>
+<p>Use also <code>tripod</code> option of <a href="#vidstabdetect">vidstabdetect</a>.
+</p>
+</dd>
+<dt> &lsquo;<samp>debug</samp>&rsquo;</dt>
+<dd><p>Increase log verbosity if set to 1. Also the detected global motions
+are written to the temporary file &lsquo;<tt>global_motions.trf</tt>&rsquo;. Default
+value is 0.
+</p></dd>
+</dl>
+
+<a name="Examples-29"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-29">28.91.2 Examples</a></h3>
+
+<ul>
+<li>
+Use <code>ffmpeg</code> for a typical stabilization with default values:
+<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>
+
+<p>Note the use of the unsharp filter which is always recommended.
+</p>
+</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">28.92 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">28.93 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 one 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">28.93.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-15"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-15">28.93.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">28.94 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">28.95 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">29. 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">29.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">29.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="ffplay-all.html#toc-Examples-77">29.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">29.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">29.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">29.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">29.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 one 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-69"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-69">29.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">29.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-5"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Commands-5">29.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">30. 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">30.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">30.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">31. 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">31.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-2"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-2">31.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">31.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-28"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-28">31.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">31.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>
+<dt> &lsquo;<samp>peak</samp>&rsquo;</dt>
+<dd><p>Set peak mode(s).
+</p>
+<p>Available modes can be cumulated (the option is a <code>flag</code> type). Possible
+values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>Disable any peak mode (default).
+</p></dd>
+<dt> &lsquo;<samp>sample</samp>&rsquo;</dt>
+<dd><p>Enable sample-peak mode.
+</p>
+<p>Simple peak mode looking for the higher sample value. It logs a message
+for sample-peak (identified by <code>SPK</code>).
+</p></dd>
+<dt> &lsquo;<samp>true</samp>&rsquo;</dt>
+<dd><p>Enable true-peak mode.
+</p>
+<p>If enabled, the peak lookup is done on an over-sampled version of the input
+stream for better peak accuracy. It logs a message for true-peak.
+(identified by <code>TPK</code>) and true-peak per frame (identified by <code>FTPK</code>).
+This mode requires a build with <code>libswresample</code>.
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Examples-34"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-34">31.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">31.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-79"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-79">31.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">31.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">31.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-35"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-35">31.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">31.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">31.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-60"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-60">31.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">31.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-1"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-1">31.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">31.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-43"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-43">31.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">31.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-46"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-46">31.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">31.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-9"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-9">31.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">31.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-11"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-11">31.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">31.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="ffplay-all.html#toc-Examples-3">31.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">32. 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">32.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">32.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 one 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-12"></a>
+<h3 class="subsection"><a href="ffplay-all.html#toc-Examples-12">32.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">33. 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">34. 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>June 19, 2014</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies64/ffmpeg/doc/ffplay.html b/dependencies64/ffmpeg/doc/ffplay.html
new file mode 100644 (file)
index 0000000..c44c599
--- /dev/null
@@ -0,0 +1,688 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on June 19, 2014 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" href="#Options">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-See-Also" href="#See-Also">4. See Also</a></li>
+  <li><a name="toc-Authors" href="#Authors">5. Authors</a></li>
+</ul>
+</div>
+
+<a name="Synopsis"></a>
+<h1 class="chapter"><a href="ffplay.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.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"></a>
+<h1 class="chapter"><a href="ffplay.html#toc-Options">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.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.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>-hide_banner</samp>&rsquo;</dt>
+<dd><p>Suppress printing banner.
+</p>
+<p>All FFmpeg tools will normally show a copyright notice, build options
+and library versions. This option can be used to suppress printing
+this information.
+</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.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.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.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.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;s&gt;</dt>
+<dd><p>Step to the next frame.
+</p>
+<p>Pause if the stream is not already paused, step to the next video
+frame, and pause.
+</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 to the previous/next chapter.
+or if there are no chapters
+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="See-Also"></a>
+<h1 class="chapter"><a href="ffplay.html#toc-See-Also">4. See Also</a></h1>
+
+<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="Authors"></a>
+<h1 class="chapter"><a href="ffplay.html#toc-Authors">5. 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>June 19, 2014</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies64/ffmpeg/doc/ffprobe-all.html b/dependencies64/ffmpeg/doc/ffprobe-all.html
new file mode 100644 (file)
index 0000000..83de201
--- /dev/null
@@ -0,0 +1,19328 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on June 19, 2014 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-1" href="#Syntax-1">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-30" href="#Examples-30">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-12" href="#Examples-12">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-1" href="#Options-1">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-ac3" href="#ac3">12.1 ac3</a>
+    <ul class="toc">
+      <li><a name="toc-AC_002d3-Decoder-Options" href="#AC_002d3-Decoder-Options">12.1.1 AC-3 Decoder Options</a></li>
+    </ul></li>
+    <li><a name="toc-ffwavesynth" href="#ffwavesynth">12.2 ffwavesynth</a></li>
+    <li><a name="toc-libcelt" href="#libcelt">12.3 libcelt</a></li>
+    <li><a name="toc-libgsm" href="#libgsm">12.4 libgsm</a></li>
+    <li><a name="toc-libilbc" href="#libilbc">12.5 libilbc</a>
+    <ul class="toc">
+      <li><a name="toc-Options-11" href="#Options-11">12.5.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-libopencore_002damrnb" href="#libopencore_002damrnb">12.6 libopencore-amrnb</a></li>
+    <li><a name="toc-libopencore_002damrwb" href="#libopencore_002damrwb">12.7 libopencore-amrwb</a></li>
+    <li><a name="toc-libopus" href="#libopus">12.8 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-7" href="#Options-7">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-12" href="#Options-12">13.2.1 Options</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Bitstream-Filters" href="#Bitstream-Filters">14. Bitstream Filters</a>
+  <ul class="toc">
+    <li><a name="toc-aac_005fadtstoasc" href="#aac_005fadtstoasc">14.1 aac_adtstoasc</a></li>
+    <li><a name="toc-chomp" href="#chomp">14.2 chomp</a></li>
+    <li><a name="toc-dump_005fextra" href="#dump_005fextra">14.3 dump_extra</a></li>
+    <li><a name="toc-h264_005fmp4toannexb" href="#h264_005fmp4toannexb">14.4 h264_mp4toannexb</a></li>
+    <li><a name="toc-imx_005fdump_005fheader" href="#imx_005fdump_005fheader">14.5 imx_dump_header</a></li>
+    <li><a name="toc-mjpeg2jpeg" href="#mjpeg2jpeg">14.6 mjpeg2jpeg</a></li>
+    <li><a name="toc-mjpega_005fdump_005fheader" href="#mjpega_005fdump_005fheader">14.7 mjpega_dump_header</a></li>
+    <li><a name="toc-movsub" href="#movsub">14.8 movsub</a></li>
+    <li><a name="toc-mp3_005fheader_005fdecompress" href="#mp3_005fheader_005fdecompress">14.9 mp3_header_decompress</a></li>
+    <li><a name="toc-noise" href="#noise">14.10 noise</a></li>
+    <li><a name="toc-remove_005fextra" href="#remove_005fextra">14.11 remove_extra</a></li>
+  </ul></li>
+  <li><a name="toc-Format-Options" href="#Format-Options">15. Format Options</a>
+  <ul class="toc">
+    <li><a name="toc-Format-stream-specifiers-1" href="#Format-stream-specifiers-1">15.1 Format stream specifiers</a></li>
+  </ul></li>
+  <li><a name="toc-Demuxers" href="#Demuxers">16. Demuxers</a>
+  <ul class="toc">
+    <li><a name="toc-applehttp" href="#applehttp">16.1 applehttp</a></li>
+    <li><a name="toc-asf" href="#asf">16.2 asf</a></li>
+    <li><a name="toc-concat-2" href="#concat-2">16.3 concat</a>
+    <ul class="toc">
+      <li><a name="toc-Syntax-2" href="#Syntax-2">16.3.1 Syntax</a></li>
+      <li><a name="toc-Options-8" href="#Options-8">16.3.2 Options</a></li>
+    </ul></li>
+    <li><a name="toc-flv" href="#flv">16.4 flv</a></li>
+    <li><a name="toc-libgme" href="#libgme">16.5 libgme</a></li>
+    <li><a name="toc-libquvi" href="#libquvi">16.6 libquvi</a></li>
+    <li><a name="toc-image2" href="#image2">16.7 image2</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-76" href="#Examples-76">16.7.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mpegts" href="#mpegts">16.8 mpegts</a></li>
+    <li><a name="toc-rawvideo-1" href="#rawvideo-1">16.9 rawvideo</a></li>
+    <li><a name="toc-sbg" href="#sbg">16.10 sbg</a></li>
+    <li><a name="toc-tedcaptions" href="#tedcaptions">16.11 tedcaptions</a></li>
+  </ul></li>
+  <li><a name="toc-Metadata" href="#Metadata">17. Metadata</a></li>
+  <li><a name="toc-Protocols" href="#Protocols">18. Protocols</a>
+  <ul class="toc">
+    <li><a name="toc-bluray" href="#bluray">18.1 bluray</a></li>
+    <li><a name="toc-cache" href="#cache">18.2 cache</a></li>
+    <li><a name="toc-concat-1" href="#concat-1">18.3 concat</a></li>
+    <li><a name="toc-crypto" href="#crypto">18.4 crypto</a></li>
+    <li><a name="toc-data" href="#data">18.5 data</a></li>
+    <li><a name="toc-file" href="#file">18.6 file</a></li>
+    <li><a name="toc-ftp" href="#ftp">18.7 ftp</a></li>
+    <li><a name="toc-gopher" href="#gopher">18.8 gopher</a></li>
+    <li><a name="toc-hls" href="#hls">18.9 hls</a></li>
+    <li><a name="toc-http" href="#http">18.10 http</a>
+    <ul class="toc">
+      <li><a name="toc-HTTP-Cookies" href="#HTTP-Cookies">18.10.1 HTTP Cookies</a></li>
+    </ul></li>
+    <li><a name="toc-mmst" href="#mmst">18.11 mmst</a></li>
+    <li><a name="toc-mmsh" href="#mmsh">18.12 mmsh</a></li>
+    <li><a name="toc-md5" href="#md5">18.13 md5</a></li>
+    <li><a name="toc-pipe" href="#pipe">18.14 pipe</a></li>
+    <li><a name="toc-rtmp" href="#rtmp">18.15 rtmp</a></li>
+    <li><a name="toc-rtmpe" href="#rtmpe">18.16 rtmpe</a></li>
+    <li><a name="toc-rtmps" href="#rtmps">18.17 rtmps</a></li>
+    <li><a name="toc-rtmpt" href="#rtmpt">18.18 rtmpt</a></li>
+    <li><a name="toc-rtmpte" href="#rtmpte">18.19 rtmpte</a></li>
+    <li><a name="toc-rtmpts" href="#rtmpts">18.20 rtmpts</a></li>
+    <li><a name="toc-libssh" href="#libssh">18.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">18.22 librtmp rtmp, rtmpe, rtmps, rtmpt, rtmpte</a></li>
+    <li><a name="toc-rtp" href="#rtp">18.23 rtp</a></li>
+    <li><a name="toc-rtsp" href="#rtsp">18.24 rtsp</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-45" href="#Examples-45">18.24.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sap" href="#sap">18.25 sap</a>
+    <ul class="toc">
+      <li><a name="toc-Muxer" href="#Muxer">18.25.1 Muxer</a></li>
+      <li><a name="toc-Demuxer" href="#Demuxer">18.25.2 Demuxer</a></li>
+    </ul></li>
+    <li><a name="toc-sctp" href="#sctp">18.26 sctp</a></li>
+    <li><a name="toc-srtp" href="#srtp">18.27 srtp</a></li>
+    <li><a name="toc-tcp" href="#tcp">18.28 tcp</a></li>
+    <li><a name="toc-tls" href="#tls">18.29 tls</a></li>
+    <li><a name="toc-udp" href="#udp">18.30 udp</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-13" href="#Examples-13">18.30.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-unix" href="#unix">18.31 unix</a></li>
+  </ul></li>
+  <li><a name="toc-Device-Options" href="#Device-Options">19. Device Options</a></li>
+  <li><a name="toc-Input-Devices" href="#Input-Devices">20. Input Devices</a>
+  <ul class="toc">
+    <li><a name="toc-alsa" href="#alsa">20.1 alsa</a></li>
+    <li><a name="toc-bktr" href="#bktr">20.2 bktr</a></li>
+    <li><a name="toc-dshow" href="#dshow">20.3 dshow</a>
+    <ul class="toc">
+      <li><a name="toc-Options-9" href="#Options-9">20.3.1 Options</a></li>
+      <li><a name="toc-Examples-42" href="#Examples-42">20.3.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-dv1394" href="#dv1394">20.4 dv1394</a></li>
+    <li><a name="toc-fbdev" href="#fbdev">20.5 fbdev</a></li>
+    <li><a name="toc-iec61883" href="#iec61883">20.6 iec61883</a>
+    <ul class="toc">
+      <li><a name="toc-Options-13" href="#Options-13">20.6.1 Options</a></li>
+      <li><a name="toc-Examples-71" href="#Examples-71">20.6.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-jack" href="#jack">20.7 jack</a></li>
+    <li><a name="toc-lavfi" href="#lavfi">20.8 lavfi</a>
+    <ul class="toc">
+      <li><a name="toc-Options-5" href="#Options-5">20.8.1 Options</a></li>
+      <li><a name="toc-Examples-54" href="#Examples-54">20.8.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-libdc1394" href="#libdc1394">20.9 libdc1394</a></li>
+    <li><a name="toc-openal" href="#openal">20.10 openal</a>
+    <ul class="toc">
+      <li><a name="toc-Options-2" href="#Options-2">20.10.1 Options</a></li>
+      <li><a name="toc-Examples-19" href="#Examples-19">20.10.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-oss" href="#oss">20.11 oss</a></li>
+    <li><a name="toc-pulse" href="#pulse">20.12 pulse</a>
+    <ul class="toc">
+      <li><a name="toc-Options-4" href="#Options-4">20.12.1 Options</a></li>
+      <li><a name="toc-Examples-73" href="#Examples-73">20.12.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sndio" href="#sndio">20.13 sndio</a></li>
+    <li><a name="toc-video4linux2_002c-v4l2" href="#video4linux2_002c-v4l2">20.14 video4linux2, v4l2</a>
+    <ul class="toc">
+      <li><a name="toc-Options-14" href="#Options-14">20.14.1 Options</a></li>
+    </ul></li>
+    <li><a name="toc-vfwcap" href="#vfwcap">20.15 vfwcap</a></li>
+    <li><a name="toc-x11grab" href="#x11grab">20.16 x11grab</a>
+    <ul class="toc">
+      <li><a name="toc-Options" href="#Options">20.16.1 Options</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Resampler-Options" href="#Resampler-Options">21. Resampler Options</a></li>
+  <li><a name="toc-Scaler-Options" href="#Scaler-Options">22. Scaler Options</a></li>
+  <li><a name="toc-Filtering-Introduction" href="#Filtering-Introduction">23. Filtering Introduction</a></li>
+  <li><a name="toc-graph2dot" href="#graph2dot">24. graph2dot</a></li>
+  <li><a name="toc-Filtergraph-description" href="#Filtergraph-description">25. Filtergraph description</a>
+  <ul class="toc">
+    <li><a name="toc-Filtergraph-syntax-1" href="#Filtergraph-syntax-1">25.1 Filtergraph syntax</a></li>
+    <li><a name="toc-Notes-on-filtergraph-escaping" href="#Notes-on-filtergraph-escaping">25.2 Notes on filtergraph escaping</a></li>
+  </ul></li>
+  <li><a name="toc-Timeline-editing" href="#Timeline-editing">26. Timeline editing</a></li>
+  <li><a name="toc-Audio-Filters" href="#Audio-Filters">27. Audio Filters</a>
+  <ul class="toc">
+    <li><a name="toc-aconvert" href="#aconvert">27.1 aconvert</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-49" href="#Examples-49">27.1.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-adelay" href="#adelay">27.2 adelay</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-62" href="#Examples-62">27.2.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-aecho" href="#aecho">27.3 aecho</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-39" href="#Examples-39">27.3.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-aeval" href="#aeval">27.4 aeval</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-75" href="#Examples-75">27.4.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-afade" href="#afade">27.5 afade</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-47" href="#Examples-47">27.5.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-aformat-1" href="#aformat-1">27.6 aformat</a></li>
+    <li><a name="toc-allpass" href="#allpass">27.7 allpass</a></li>
+    <li><a name="toc-amerge" href="#amerge">27.8 amerge</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-35" href="#Examples-35">27.8.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-amix" href="#amix">27.9 amix</a></li>
+    <li><a name="toc-anull" href="#anull">27.10 anull</a></li>
+    <li><a name="toc-apad" href="#apad">27.11 apad</a></li>
+    <li><a name="toc-aphaser" href="#aphaser">27.12 aphaser</a></li>
+    <li><a name="toc-aresample-1" href="#aresample-1">27.13 aresample</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-28" href="#Examples-28">27.13.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-asetnsamples" href="#asetnsamples">27.14 asetnsamples</a></li>
+    <li><a name="toc-asetrate" href="#asetrate">27.15 asetrate</a></li>
+    <li><a name="toc-ashowinfo" href="#ashowinfo">27.16 ashowinfo</a></li>
+    <li><a name="toc-astats" href="#astats">27.17 astats</a></li>
+    <li><a name="toc-astreamsync" href="#astreamsync">27.18 astreamsync</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-57" href="#Examples-57">27.18.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-asyncts" href="#asyncts">27.19 asyncts</a></li>
+    <li><a name="toc-atempo" href="#atempo">27.20 atempo</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-84" href="#Examples-84">27.20.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-atrim" href="#atrim">27.21 atrim</a></li>
+    <li><a name="toc-bandpass" href="#bandpass">27.22 bandpass</a></li>
+    <li><a name="toc-bandreject" href="#bandreject">27.23 bandreject</a></li>
+    <li><a name="toc-bass" href="#bass">27.24 bass</a></li>
+    <li><a name="toc-biquad" href="#biquad">27.25 biquad</a></li>
+    <li><a name="toc-channelmap" href="#channelmap">27.26 channelmap</a></li>
+    <li><a name="toc-channelsplit" href="#channelsplit">27.27 channelsplit</a></li>
+    <li><a name="toc-compand" href="#compand">27.28 compand</a>
+    <ul class="toc">
+      <li><a name="toc-Examples" href="#Examples">27.28.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-earwax" href="#earwax">27.29 earwax</a></li>
+    <li><a name="toc-equalizer" href="#equalizer">27.30 equalizer</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-34" href="#Examples-34">27.30.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-highpass" href="#highpass">27.31 highpass</a></li>
+    <li><a name="toc-join" href="#join">27.32 join</a></li>
+    <li><a name="toc-ladspa" href="#ladspa">27.33 ladspa</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-8" href="#Examples-8">27.33.1 Examples</a></li>
+      <li><a name="toc-Commands-3" href="#Commands-3">27.33.2 Commands</a></li>
+    </ul></li>
+    <li><a name="toc-lowpass" href="#lowpass">27.34 lowpass</a></li>
+    <li><a name="toc-pan" href="#pan">27.35 pan</a>
+    <ul class="toc">
+      <li><a name="toc-Mixing-examples" href="#Mixing-examples">27.35.1 Mixing examples</a></li>
+      <li><a name="toc-Remapping-examples" href="#Remapping-examples">27.35.2 Remapping examples</a></li>
+    </ul></li>
+    <li><a name="toc-replaygain" href="#replaygain">27.36 replaygain</a></li>
+    <li><a name="toc-resample" href="#resample">27.37 resample</a></li>
+    <li><a name="toc-silencedetect" href="#silencedetect">27.38 silencedetect</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-18" href="#Examples-18">27.38.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-treble" href="#treble">27.39 treble</a></li>
+    <li><a name="toc-volume" href="#volume">27.40 volume</a>
+    <ul class="toc">
+      <li><a name="toc-Commands-4" href="#Commands-4">27.40.1 Commands</a></li>
+      <li><a name="toc-Examples-36" href="#Examples-36">27.40.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-volumedetect" href="#volumedetect">27.41 volumedetect</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-7" href="#Examples-7">27.41.1 Examples</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Audio-Sources" href="#Audio-Sources">28. Audio Sources</a>
+  <ul class="toc">
+    <li><a name="toc-abuffer" href="#abuffer">28.1 abuffer</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-23" href="#Examples-23">28.1.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-aevalsrc" href="#aevalsrc">28.2 aevalsrc</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-20" href="#Examples-20">28.2.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-anullsrc" href="#anullsrc">28.3 anullsrc</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-67" href="#Examples-67">28.3.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-flite" href="#flite">28.4 flite</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-27" href="#Examples-27">28.4.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sine" href="#sine">28.5 sine</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-80" href="#Examples-80">28.5.1 Examples</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Audio-Sinks" href="#Audio-Sinks">29. Audio Sinks</a>
+  <ul class="toc">
+    <li><a name="toc-abuffersink" href="#abuffersink">29.1 abuffersink</a></li>
+    <li><a name="toc-anullsink" href="#anullsink">29.2 anullsink</a></li>
+  </ul></li>
+  <li><a name="toc-Video-Filters" href="#Video-Filters">30. Video Filters</a>
+  <ul class="toc">
+    <li><a name="toc-alphaextract" href="#alphaextract">30.1 alphaextract</a></li>
+    <li><a name="toc-alphamerge" href="#alphamerge">30.2 alphamerge</a></li>
+    <li><a name="toc-ass" href="#ass">30.3 ass</a></li>
+    <li><a name="toc-bbox" href="#bbox">30.4 bbox</a></li>
+    <li><a name="toc-blackdetect" href="#blackdetect">30.5 blackdetect</a></li>
+    <li><a name="toc-blackframe" href="#blackframe">30.6 blackframe</a></li>
+    <li><a name="toc-blend" href="#blend">30.7 blend</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-52" href="#Examples-52">30.7.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-boxblur" href="#boxblur">30.8 boxblur</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-41" href="#Examples-41">30.8.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-colorbalance" href="#colorbalance">30.9 colorbalance</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-81" href="#Examples-81">30.9.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-colorchannelmixer" href="#colorchannelmixer">30.10 colorchannelmixer</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-5" href="#Examples-5">30.10.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-colormatrix" href="#colormatrix">30.11 colormatrix</a></li>
+    <li><a name="toc-copy" href="#copy">30.12 copy</a></li>
+    <li><a name="toc-crop" href="#crop">30.13 crop</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-60" href="#Examples-60">30.13.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-cropdetect" href="#cropdetect">30.14 cropdetect</a></li>
+    <li><a name="toc-curves-1" href="#curves-1">30.15 curves</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-51" href="#Examples-51">30.15.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-dctdnoiz" href="#dctdnoiz">30.16 dctdnoiz</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-10" href="#Examples-10">30.16.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-decimate-1" href="#decimate-1">30.17 decimate</a></li>
+    <li><a name="toc-dejudder" href="#dejudder">30.18 dejudder</a></li>
+    <li><a name="toc-delogo" href="#delogo">30.19 delogo</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-21" href="#Examples-21">30.19.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-deshake" href="#deshake">30.20 deshake</a></li>
+    <li><a name="toc-drawbox" href="#drawbox">30.21 drawbox</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-2" href="#Examples-2">30.21.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-drawgrid" href="#drawgrid">30.22 drawgrid</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-72" href="#Examples-72">30.22.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-drawtext-1" href="#drawtext-1">30.23 drawtext</a>
+    <ul class="toc">
+      <li><a name="toc-Syntax" href="#Syntax">30.23.1 Syntax</a></li>
+      <li><a name="toc-Text-expansion" href="#Text-expansion">30.23.2 Text expansion</a></li>
+      <li><a name="toc-Examples-40" href="#Examples-40">30.23.3 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-edgedetect" href="#edgedetect">30.24 edgedetect</a></li>
+    <li><a name="toc-extractplanes" href="#extractplanes">30.25 extractplanes</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-16" href="#Examples-16">30.25.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-elbg" href="#elbg">30.26 elbg</a></li>
+    <li><a name="toc-fade" href="#fade">30.27 fade</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-43" href="#Examples-43">30.27.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-field" href="#field">30.28 field</a></li>
+    <li><a name="toc-fieldmatch" href="#fieldmatch">30.29 fieldmatch</a>
+    <ul class="toc">
+      <li><a name="toc-p_002fc_002fn_002fu_002fb-meaning-1" href="#p_002fc_002fn_002fu_002fb-meaning-1">30.29.1 p/c/n/u/b meaning</a>
+      <ul class="toc">
+        <li><a name="toc-p_002fc_002fn" href="#p_002fc_002fn">30.29.1.1 p/c/n</a></li>
+        <li><a name="toc-u_002fb" href="#u_002fb">30.29.1.2 u/b</a></li>
+      </ul></li>
+      <li><a name="toc-Examples-66" href="#Examples-66">30.29.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-fieldorder" href="#fieldorder">30.30 fieldorder</a></li>
+    <li><a name="toc-fifo" href="#fifo">30.31 fifo</a></li>
+    <li><a name="toc-format-1" href="#format-1">30.32 format</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-59" href="#Examples-59">30.32.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-fps-1" href="#fps-1">30.33 fps</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-74" href="#Examples-74">30.33.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-framepack" href="#framepack">30.34 framepack</a></li>
+    <li><a name="toc-framestep" href="#framestep">30.35 framestep</a></li>
+    <li><a name="toc-frei0r-1" href="#frei0r-1">30.36 frei0r</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-68" href="#Examples-68">30.36.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-geq" href="#geq">30.37 geq</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-17" href="#Examples-17">30.37.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-gradfun" href="#gradfun">30.38 gradfun</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-33" href="#Examples-33">30.38.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-haldclut-1" href="#haldclut-1">30.39 haldclut</a>
+    <ul class="toc">
+      <li><a name="toc-Workflow-examples" href="#Workflow-examples">30.39.1 Workflow examples</a>
+      <ul class="toc">
+        <li><a name="toc-Hald-CLUT-video-stream" href="#Hald-CLUT-video-stream">30.39.1.1 Hald CLUT video stream</a></li>
+        <li><a name="toc-Hald-CLUT-with-preview" href="#Hald-CLUT-with-preview">30.39.1.2 Hald CLUT with preview</a></li>
+      </ul>
+</li>
+    </ul></li>
+    <li><a name="toc-hflip" href="#hflip">30.40 hflip</a></li>
+    <li><a name="toc-histeq" href="#histeq">30.41 histeq</a></li>
+    <li><a name="toc-histogram" href="#histogram">30.42 histogram</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-4" href="#Examples-4">30.42.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-hqdn3d-1" href="#hqdn3d-1">30.43 hqdn3d</a></li>
+    <li><a name="toc-hue" href="#hue">30.44 hue</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-22" href="#Examples-22">30.44.1 Examples</a></li>
+      <li><a name="toc-Commands-2" href="#Commands-2">30.44.2 Commands</a></li>
+    </ul></li>
+    <li><a name="toc-idet" href="#idet">30.45 idet</a></li>
+    <li><a name="toc-il" href="#il">30.46 il</a></li>
+    <li><a name="toc-interlace" href="#interlace">30.47 interlace</a></li>
+    <li><a name="toc-kerndeint" href="#kerndeint">30.48 kerndeint</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-29" href="#Examples-29">30.48.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-lut3d-1" href="#lut3d-1">30.49 lut3d</a></li>
+    <li><a name="toc-lut_002c-lutrgb_002c-lutyuv" href="#lut_002c-lutrgb_002c-lutyuv">30.50 lut, lutrgb, lutyuv</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-53" href="#Examples-53">30.50.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mergeplanes" href="#mergeplanes">30.51 mergeplanes</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-31" href="#Examples-31">30.51.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mcdeint" href="#mcdeint">30.52 mcdeint</a></li>
+    <li><a name="toc-mp" href="#mp">30.53 mp</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-38" href="#Examples-38">30.53.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mpdecimate" href="#mpdecimate">30.54 mpdecimate</a></li>
+    <li><a name="toc-negate" href="#negate">30.55 negate</a></li>
+    <li><a name="toc-noformat" href="#noformat">30.56 noformat</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-15" href="#Examples-15">30.56.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-noise-1" href="#noise-1">30.57 noise</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-69" href="#Examples-69">30.57.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-null" href="#null">30.58 null</a></li>
+    <li><a name="toc-ocv" href="#ocv">30.59 ocv</a>
+    <ul class="toc">
+      <li><a name="toc-dilate-1" href="#dilate-1">30.59.1 dilate</a></li>
+      <li><a name="toc-erode" href="#erode">30.59.2 erode</a></li>
+      <li><a name="toc-smooth" href="#smooth">30.59.3 smooth</a></li>
+    </ul></li>
+    <li><a name="toc-overlay-1" href="#overlay-1">30.60 overlay</a>
+    <ul class="toc">
+      <li><a name="toc-Commands" href="#Commands">30.60.1 Commands</a></li>
+      <li><a name="toc-Examples-63" href="#Examples-63">30.60.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-owdenoise" href="#owdenoise">30.61 owdenoise</a></li>
+    <li><a name="toc-pad" href="#pad">30.62 pad</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-25" href="#Examples-25">30.62.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-perspective" href="#perspective">30.63 perspective</a></li>
+    <li><a name="toc-phase" href="#phase">30.64 phase</a></li>
+    <li><a name="toc-pixdesctest" href="#pixdesctest">30.65 pixdesctest</a></li>
+    <li><a name="toc-pp" href="#pp">30.66 pp</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-50" href="#Examples-50">30.66.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-psnr" href="#psnr">30.67 psnr</a></li>
+    <li><a name="toc-pullup-1" href="#pullup-1">30.68 pullup</a></li>
+    <li><a name="toc-removelogo" href="#removelogo">30.69 removelogo</a></li>
+    <li><a name="toc-rotate" href="#rotate">30.70 rotate</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-77" href="#Examples-77">30.70.1 Examples</a></li>
+      <li><a name="toc-Commands-5" href="#Commands-5">30.70.2 Commands</a></li>
+    </ul></li>
+    <li><a name="toc-sab" href="#sab">30.71 sab</a></li>
+    <li><a name="toc-scale-1" href="#scale-1">30.72 scale</a>
+    <ul class="toc">
+      <li><a name="toc-Options-6" href="#Options-6">30.72.1 Options</a></li>
+      <li><a name="toc-Examples-83" href="#Examples-83">30.72.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-separatefields" href="#separatefields">30.73 separatefields</a></li>
+    <li><a name="toc-setdar_002c-setsar" href="#setdar_002c-setsar">30.74 setdar, setsar</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-44" href="#Examples-44">30.74.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-setfield-1" href="#setfield-1">30.75 setfield</a></li>
+    <li><a name="toc-showinfo" href="#showinfo">30.76 showinfo</a></li>
+    <li><a name="toc-smartblur-1" href="#smartblur-1">30.77 smartblur</a></li>
+    <li><a name="toc-stereo3d" href="#stereo3d">30.78 stereo3d</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-1" href="#Examples-1">30.78.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-spp" href="#spp">30.79 spp</a></li>
+    <li><a name="toc-subtitles-1" href="#subtitles-1">30.80 subtitles</a></li>
+    <li><a name="toc-super2xsai" href="#super2xsai">30.81 super2xsai</a></li>
+    <li><a name="toc-swapuv" href="#swapuv">30.82 swapuv</a></li>
+    <li><a name="toc-telecine" href="#telecine">30.83 telecine</a></li>
+    <li><a name="toc-thumbnail" href="#thumbnail">30.84 thumbnail</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-3" href="#Examples-3">30.84.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-tile" href="#tile">30.85 tile</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-55" href="#Examples-55">30.85.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-tinterlace" href="#tinterlace">30.86 tinterlace</a></li>
+    <li><a name="toc-transpose" href="#transpose">30.87 transpose</a></li>
+    <li><a name="toc-trim" href="#trim">30.88 trim</a></li>
+    <li><a name="toc-unsharp" href="#unsharp">30.89 unsharp</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-56" href="#Examples-56">30.89.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-vidstabdetect-1" href="#vidstabdetect-1">30.90 vidstabdetect</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-46" href="#Examples-46">30.90.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-vidstabtransform-1" href="#vidstabtransform-1">30.91 vidstabtransform</a>
+    <ul class="toc">
+      <li><a name="toc-Options-10" href="#Options-10">30.91.1 Options</a></li>
+      <li><a name="toc-Examples-24" href="#Examples-24">30.91.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-vflip" href="#vflip">30.92 vflip</a></li>
+    <li><a name="toc-vignette" href="#vignette">30.93 vignette</a>
+    <ul class="toc">
+      <li><a name="toc-Expressions" href="#Expressions">30.93.1 Expressions</a></li>
+      <li><a name="toc-Examples-65" href="#Examples-65">30.93.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-w3fdif" href="#w3fdif">30.94 w3fdif</a></li>
+    <li><a name="toc-yadif-1" href="#yadif-1">30.95 yadif</a></li>
+  </ul></li>
+  <li><a name="toc-Video-Sources" href="#Video-Sources">31. Video Sources</a>
+  <ul class="toc">
+    <li><a name="toc-buffer" href="#buffer">31.1 buffer</a></li>
+    <li><a name="toc-cellauto" href="#cellauto">31.2 cellauto</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-11" href="#Examples-11">31.2.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-mandelbrot" href="#mandelbrot">31.3 mandelbrot</a></li>
+    <li><a name="toc-mptestsrc" href="#mptestsrc">31.4 mptestsrc</a></li>
+    <li><a name="toc-frei0r_005fsrc" href="#frei0r_005fsrc">31.5 frei0r_src</a></li>
+    <li><a name="toc-life" href="#life">31.6 life</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-79" href="#Examples-79">31.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">31.7 color, haldclutsrc, nullsrc, rgbtestsrc, smptebars, smptehdbars, testsrc</a>
+    <ul class="toc">
+      <li><a name="toc-Commands-1" href="#Commands-1">31.7.1 Commands</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Video-Sinks" href="#Video-Sinks">32. Video Sinks</a>
+  <ul class="toc">
+    <li><a name="toc-buffersink" href="#buffersink">32.1 buffersink</a></li>
+    <li><a name="toc-nullsink" href="#nullsink">32.2 nullsink</a></li>
+  </ul></li>
+  <li><a name="toc-Multimedia-Filters" href="#Multimedia-Filters">33. Multimedia Filters</a>
+  <ul class="toc">
+    <li><a name="toc-avectorscope" href="#avectorscope">33.1 avectorscope</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-48" href="#Examples-48">33.1.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-concat-3" href="#concat-3">33.2 concat</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-82" href="#Examples-82">33.2.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-ebur128" href="#ebur128">33.3 ebur128</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-70" href="#Examples-70">33.3.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-interleave_002c-ainterleave" href="#interleave_002c-ainterleave">33.4 interleave, ainterleave</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-9" href="#Examples-9">33.4.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-perms_002c-aperms" href="#perms_002c-aperms">33.5 perms, aperms</a></li>
+    <li><a name="toc-select_002c-aselect" href="#select_002c-aselect">33.6 select, aselect</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-32" href="#Examples-32">33.6.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-sendcmd_002c-asendcmd" href="#sendcmd_002c-asendcmd">33.7 sendcmd, asendcmd</a>
+    <ul class="toc">
+      <li><a name="toc-Commands-syntax" href="#Commands-syntax">33.7.1 Commands syntax</a></li>
+      <li><a name="toc-Examples-37" href="#Examples-37">33.7.2 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-setpts_002c-asetpts" href="#setpts_002c-asetpts">33.8 setpts, asetpts</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-78" href="#Examples-78">33.8.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-settb_002c-asettb" href="#settb_002c-asettb">33.9 settb, asettb</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-26" href="#Examples-26">33.9.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-showspectrum" href="#showspectrum">33.10 showspectrum</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-14" href="#Examples-14">33.10.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-showwaves" href="#showwaves">33.11 showwaves</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-61" href="#Examples-61">33.11.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-split_002c-asplit" href="#split_002c-asplit">33.12 split, asplit</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-64" href="#Examples-64">33.12.1 Examples</a></li>
+    </ul></li>
+    <li><a name="toc-zmq_002c-azmq" href="#zmq_002c-azmq">33.13 zmq, azmq</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-58" href="#Examples-58">33.13.1 Examples</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-Multimedia-Sources" href="#Multimedia-Sources">34. Multimedia Sources</a>
+  <ul class="toc">
+    <li><a name="toc-amovie" href="#amovie">34.1 amovie</a></li>
+    <li><a name="toc-movie-1" href="#movie-1">34.2 movie</a>
+    <ul class="toc">
+      <li><a name="toc-Examples-6" href="#Examples-6">34.2.1 Examples</a></li>
+    </ul>
+</li>
+  </ul></li>
+  <li><a name="toc-See-Also" href="#See-Also">35. See Also</a></li>
+  <li><a name="toc-Authors" href="#Authors">36. 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>-hide_banner</samp>&rsquo;</dt>
+<dd><p>Suppress printing banner.
+</p>
+<p>All FFmpeg tools will normally show a copyright notice, build options
+and library versions. This option can be used to suppress printing
+this information.
+</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-1"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Syntax-1">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-30"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-30">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-12"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-12">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 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>
+</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.
+Negative values behave identical to the corresponding positive ones, except
+that the score is normalized.
+Positive values exist primarly for compatibility reasons and are not so useful.
+</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>-decoders</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-1"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-1">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>
+
+<p>A description of some of the currently available audio decoders
+follows.
+</p>
+<a name="ac3"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-ac3">12.1 ac3</a></h2>
+
+<p>AC-3 audio decoder.
+</p>
+<p>This decoder implements part of ATSC A/52:2010 and ETSI TS 102 366, as well as
+the undocumented RealAudio 3 (a.k.a. dnet).
+</p>
+<a name="AC_002d3-Decoder-Options"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-AC_002d3-Decoder-Options">12.1.1 AC-3 Decoder Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>-drc_scale <var>value</var></samp>&rsquo;</dt>
+<dd><p>Dynamic Range Scale Factor. The factor to apply to dynamic range values
+from the AC-3 stream. This factor is applied exponentially.
+There are 3 notable scale factor ranges:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>drc_scale == 0</samp>&rsquo;</dt>
+<dd><p>DRC disabled. Produces full range audio.
+</p></dd>
+<dt> &lsquo;<samp>0 &lt; drc_scale &lt;= 1</samp>&rsquo;</dt>
+<dd><p>DRC enabled.  Applies a fraction of the stream DRC value.
+Audio reproduction is between full range and full compression.
+</p></dd>
+<dt> &lsquo;<samp>drc_scale &gt; 1</samp>&rsquo;</dt>
+<dd><p>DRC enabled. Applies drc_scale asymmetrically.
+Loud sounds are fully compressed.  Soft sounds are enhanced.
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="ffwavesynth"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-ffwavesynth">12.2 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.3 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.4 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.5 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-11"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-11">12.5.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.6 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.7 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="ffprobe-all.html#toc-libopus">12.8 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-7"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-7">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-12"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-12">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="Bitstream-Filters"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Bitstream-Filters">14. 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">14.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">14.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">14.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">14.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">14.5 imx_dump_header</a></h2>
+
+<a name="mjpeg2jpeg"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-mjpeg2jpeg">14.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">14.7 mjpega_dump_header</a></h2>
+
+<a name="movsub"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-movsub">14.8 movsub</a></h2>
+
+<a name="mp3_005fheader_005fdecompress"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-mp3_005fheader_005fdecompress">14.9 mp3_header_decompress</a></h2>
+
+<a name="noise"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-noise">14.10 noise</a></h2>
+
+<a name="remove_005fextra"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-remove_005fextra">14.11 remove_extra</a></h2>
+
+<a name="Format-Options"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Format-Options">15. 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>Possible values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>make_non_negative</samp>&rsquo;</dt>
+<dd><p>Shift timestamps to make them non-negative.
+Also note that this affects only leading negative timestamps, and not
+non-monotonic negative timestamps.
+</p></dd>
+<dt> &lsquo;<samp>make_zero</samp>&rsquo;</dt>
+<dd><p>Shift timestamps so that the first timestamp is 0.
+</p></dd>
+<dt> &lsquo;<samp>auto (default)</samp>&rsquo;</dt>
+<dd><p>Enables shifting when required by the target format.
+</p></dd>
+<dt> &lsquo;<samp>disabled</samp>&rsquo;</dt>
+<dd><p>Disables shifting of timestamp.
+</p></dd>
+</dl>
+
+<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>
+</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>
+<dt> &lsquo;<samp>output_ts_offset <var>offset</var> (<em>output</em>)</samp>&rsquo;</dt>
+<dd><p>Set the output time offset.
+</p>
+<p><var>offset</var> must be a time duration specification,
+see <a href="ffmpeg-utils.html#time-duration-syntax">(ffmpeg-utils)time duration syntax</a>.
+</p>
+<p>The offset is added by the muxer to the output timestamps.
+</p>
+<p>Specifying a positive offset means that the corresponding streams are
+delayed bt the time duration specified in <var>offset</var>. Default value
+is <code>0</code> (meaning that no offset is applied).
+</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">15.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">16. 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">16.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">16.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">16.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">16.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-8"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-8">16.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">16.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">16.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">16.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"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-image2">16.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-76"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-76">16.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">16.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">16.9 rawvideo</a></h2>
+
+<p>Raw video demuxer.
+</p>
+<p>This demuxer allows one 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">16.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">16.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="Metadata"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Metadata">17. 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">18. 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">18.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">18.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">18.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">18.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">18.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">18.6 file</a></h2>
+
+<p>File access protocol.
+</p>
+<p>Allow to read from or write to a file.
+</p>
+<p>A file URL can have the form:
+</p><table><tr><td>&nbsp;</td><td><pre class="example">file:<var>filename</var>
+</pre></td></tr></table>
+
+<p>where <var>filename</var> is the path of the file to read.
+</p>
+<p>An URL that does not have a protocol prefix will be assumed to be a
+file URL. Depending on the build, an URL that looks like a Windows
+path with the drive letter at the beginning will also be assumed to be
+a file URL (usually not the case in builds for unix-like systems).
+</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>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">18.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">18.8 gopher</a></h2>
+
+<p>Gopher protocol.
+</p>
+<a name="hls"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-hls">18.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">18.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>content_type</samp>&rsquo;</dt>
+<dd><p>Set a specific content type for the POST messages.
+</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>multiple_requests</samp>&rsquo;</dt>
+<dd><p>Use persistent connections if set to 1, default is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>post_data</samp>&rsquo;</dt>
+<dd><p>Set custom HTTP post data.
+</p>
+</dd>
+<dt> &lsquo;<samp>user-agent</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>user_agent</samp>&rsquo;</dt>
+<dd><p>Override the User-Agent header. If not specified the protocol will use a
+string describing the libavformat build. (&quot;Lavf/&lt;version&gt;&quot;)
+</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>Export the 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 by 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. It should be
+polled in regular intervals by applications interested in mid-stream metadata
+updates.
+</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>
+<dt> &lsquo;<samp>offset</samp>&rsquo;</dt>
+<dd><p>Set initial byte offset.
+</p>
+</dd>
+<dt> &lsquo;<samp>end_offset</samp>&rsquo;</dt>
+<dd><p>Try to limit the request to bytes preceding this offset.
+</p></dd>
+</dl>
+
+<a name="HTTP-Cookies"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-HTTP-Cookies">18.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">18.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">18.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="ffprobe-all.html#toc-md5">18.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">18.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">18.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">18.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">18.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">18.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">18.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">18.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">18.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>
+<dt> &lsquo;<samp>private_key</samp>&rsquo;</dt>
+<dd><p>Specify the path of the file containing private key to use during authorization.
+By default libssh searches for keys in the &lsquo;<tt>~/.ssh/</tt>&rsquo; directory.
+</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">18.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">18.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">18.24 rtsp</a></h2>
+
+<p>Real-Time Streaming Protocol.
+</p>
+<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>Options can be 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>.
+</p>
+<p>The following options are supported.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>initial_pause</samp>&rsquo;</dt>
+<dd><p>Do not start playing the stream immediately if set to 1. Default value
+is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtsp_transport</samp>&rsquo;</dt>
+<dd><p>Set RTSP trasport protocols.
+</p>
+<p>It accepts the following values:
+</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 &lsquo;<samp>tcp</samp>&rsquo; and &lsquo;<samp>udp</samp>&rsquo; options are supported.
+</p>
+</dd>
+<dt> &lsquo;<samp>rtsp_flags</samp>&rsquo;</dt>
+<dd><p>Set RTSP flags.
+</p>
+<p>The following values are accepted:
+</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>Default value is &lsquo;<samp>none</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>allowed_media_types</samp>&rsquo;</dt>
+<dd><p>Set media types to accept from the server.
+</p>
+<p>The following flags are accepted:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>video</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>audio</samp>&rsquo;</dt>
+<dt> &lsquo;<samp>data</samp>&rsquo;</dt>
+</dl>
+
+<p>By default it accepts all media types.
+</p>
+</dd>
+<dt> &lsquo;<samp>min_port</samp>&rsquo;</dt>
+<dd><p>Set minimum local UDP port. Default value is 5000.
+</p>
+</dd>
+<dt> &lsquo;<samp>max_port</samp>&rsquo;</dt>
+<dd><p>Set maximum local UDP port. Default value is 65000.
+</p>
+</dd>
+<dt> &lsquo;<samp>timeout</samp>&rsquo;</dt>
+<dd><p>Set maximum timeout (in seconds) to wait for incoming connections.
+</p>
+<p>A value of -1 mean infinite (default). This option implies the
+&lsquo;<samp>rtsp_flags</samp>&rsquo; set to &lsquo;<samp>listen</samp>&rsquo;.
+</p>
+</dd>
+<dt> &lsquo;<samp>reorder_queue_size</samp>&rsquo;</dt>
+<dd><p>Set number of packets to buffer for handling of reordered packets.
+</p>
+</dd>
+<dt> &lsquo;<samp>stimeout</samp>&rsquo;</dt>
+<dd><p>Set socket TCP I/O timeout in micro seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>user-agent</samp>&rsquo;</dt>
+<dd><p>Override User-Agent header. If not specified, it default to the
+libavformat identifier string.
+</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>
+<a name="Examples-45"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-45">18.24.1 Examples</a></h3>
+
+<p>The following examples all make use of the <code>ffplay</code> and
+<code>ffmpeg</code> tools.
+</p>
+<ul>
+<li>
+Watch a stream over UDP, with a max reordering delay of 0.5 seconds:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -max_delay 500000 -rtsp_transport udp rtsp://server/video.mp4
+</pre></td></tr></table>
+
+</li><li>
+Watch a stream tunneled over HTTP:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffplay -rtsp_transport http rtsp://server/video.mp4
+</pre></td></tr></table>
+
+</li><li>
+Send a stream in realtime to a RTSP server, for others to watch:
+<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>
+
+</li><li>
+Receive a stream in realtime:
+<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>
+</li></ul>
+
+<a name="sap"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-sap">18.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">18.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">18.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">18.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">18.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">18.28 tcp</a></h2>
+
+<p>Transmission 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>
+
+<p><var>options</var> contains a list of &amp;-separated options of the form
+<var>key</var>=<var>val</var>.
+</p>
+<p>The list of supported options follows.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>listen=<var>1|0</var></samp>&rsquo;</dt>
+<dd><p>Listen for an incoming connection. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>timeout=<var>microseconds</var></samp>&rsquo;</dt>
+<dd><p>Set raise error timeout, expressed in microseconds.
+</p>
+<p>This option is only relevant in read mode: if no data arrived in more
+than this time interval, raise error.
+</p>
+</dd>
+<dt> &lsquo;<samp>listen_timeout=<var>microseconds</var></samp>&rsquo;</dt>
+<dd><p>Set listen timeout, expressed in microseconds.
+</p></dd>
+</dl>
+
+<p>The following example shows how to setup a listening TCP connection
+with <code>ffmpeg</code>, which is then accessed with <code>ffplay</code>:
+</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>
+
+<a name="tls"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-tls">18.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">18.30 udp</a></h2>
+
+<p>User Datagram Protocol.
+</p>
+<p>The required syntax for an 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 one 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>Set raise error timeout, expressed in microseconds.
+</p>
+<p>This option is only relevant in read mode: if no data arrived in more
+than this time interval, raise error.
+</p></dd>
+</dl>
+
+<a name="Examples-13"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-13">18.30.1 Examples</a></h3>
+
+<ul>
+<li>
+Use <code>ffmpeg</code> to stream over UDP to a remote endpoint:
+<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>
+
+</li><li>
+Use <code>ffmpeg</code> to stream in mpegts format over UDP using 188
+sized UDP packets, using a large input buffer:
+<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>
+
+</li><li>
+Use <code>ffmpeg</code> to receive over UDP from a remote endpoint:
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i udp://[<var>multicast-address</var>]:<var>port</var> ...
+</pre></td></tr></table>
+</li></ul>
+
+<a name="unix"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-unix">18.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">19. 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">20. 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">20.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">20.2 bktr</a></h2>
+
+<p>BSD video input device.
+</p>
+<a name="dshow"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-dshow">20.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-9"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-9">20.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">20.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">20.4 dv1394</a></h2>
+
+<p>Linux DV 1394 input device.
+</p>
+<a name="fbdev"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-fbdev">20.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">20.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-13"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-13">20.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-71"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-71">20.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">20.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">20.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-5"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-5">20.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-54"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-54">20.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">20.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">20.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 one 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-2"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-2">20.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-19"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-19">20.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="ffprobe-all.html#toc-oss">20.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="ffprobe-all.html#toc-pulse">20.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">20.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-73"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-73">20.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="ffprobe-all.html#toc-sndio">20.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">20.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-14"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-14">20.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 one 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">20.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">20.16 x11grab</a></h2>
+
+<p>X11 video input device.
+</p>
+<p>This device allows one 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"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options">20.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="Resampler-Options"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Resampler-Options">21. 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">22. 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>bicublin</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">23. 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">24. 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">25. 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">25.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 one 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">25.2 Notes on filtergraph escaping</a></h2>
+
+<p>Filtergraph description composition entails several levels of
+escaping. See <a href="ffmpeg-utils.html#quoting_005fand_005fescaping">(ffmpeg-utils)quoting_and_escaping</a> for more
+information about the employed escaping procedure.
+</p>
+<p>A first level escaping affects the content of each filter option
+value, which may contain the special character <code>:</code> used to
+separate values, or one of the escaping characters <code>\'</code>.
+</p>
+<p>A second level escaping affects the whole filter description, which
+may contain the escaping characters <code>\'</code> or the special
+characters <code>[],;</code> used by the filtergraph description.
+</p>
+<p>Finally, when you specify a filtergraph on a shell commandline, you
+need to perform a third level escaping for the shell special
+characters contained within it.
+</p>
+<p>For example, consider the following string to be embedded in
+the <a href="#drawtext">drawtext</a> filter description &lsquo;<samp>text</samp>&rsquo; value:
+</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>This string contains the <code>'</code> special escaping character, and the
+<code>:</code> special character, so it needs to be escaped in this way:
+</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
+description 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>(note that in addition to the <code>\'</code> escaping special characters,
+also <code>,</code> needs to be escaped).
+</p>
+<p>Finally an additional level of escaping is 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>
+
+<a name="Timeline-editing"></a>
+<h1 class="chapter"><a href="ffprobe-all.html#toc-Timeline-editing">26. 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">27. 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">27.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-49"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-49">27.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">27.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-62"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-62">27.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">27.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-39"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-39">27.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">27.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-75"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-75">27.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">27.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-47"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-47">27.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">27.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">27.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">27.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-35"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-35">27.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">27.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">27.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">27.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">27.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">27.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-28"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-28">27.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">27.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">27.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">27.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">27.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">27.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-57"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-57">27.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">27.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">27.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-84"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-84">27.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">27.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">27.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">27.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">27.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">27.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">27.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">27.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">27.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. <var>attacks</var> refers to
+increase of volume and <var>decays</var> 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. A typical value for attack is 0.3 seconds and
+a typical value for decay is 0.8 seconds.
+</p>
+</dd>
+<dt> &lsquo;<samp>points</samp>&rsquo;</dt>
+<dd><p>Set list of points for the transfer function, specified in dB relative to the
+maximum possible signal amplitude. Each key points list must be defined using
+the following syntax: <code>x0/y0|x1/y1|x2/y2|....</code> or
+<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 the curve radius in dB for all joints. Defaults to 0.01.
+</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.
+This allows easy adjustment of the overall gain. Defaults to 0.
+</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. Defaults to 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>delay</samp>&rsquo;</dt>
+<dd><p>Set delay in seconds. The input audio is analyzed 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. Defaults to 0.
+</p>
+</dd>
+</dl>
+
+<a name="Examples"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples">27.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">27.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">27.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="Examples-34"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-34">27.30.1 Examples</a></h3>
+<ul>
+<li>
+Attenuate 10 dB at 1000 Hz, with a bandwidth of 200 Hz:
+<table><tr><td>&nbsp;</td><td><pre class="example">equalizer=f=1000:width_type=h:width=200:g=-10
+</pre></td></tr></table>
+
+</li><li>
+Apply 2 dB gain at 1000 Hz with Q 1 and attenuate 5 dB at 100 Hz with Q 2:
+<table><tr><td>&nbsp;</td><td><pre class="example">equalizer=f=1000:width_type=q:width=1:g=2,equalizer=f=100:width_type=q:width=2:g=-5
+</pre></td></tr></table>
+</li></ul>
+
+<a name="highpass"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-highpass">27.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">27.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">27.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-8"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-8">27.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="ffprobe-all.html#toc-Commands-3">27.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">27.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">27.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">27.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">27.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">27.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">27.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">27.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-18"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-18">27.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">27.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">27.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>Set audio volume expression.
+</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 &quot;1.0&quot;.
+</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>
+<dt> &lsquo;<samp>eval</samp>&rsquo;</dt>
+<dd><p>Set when the volume expression is evaluated.
+</p>
+<p>It accepts the following values:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>once</samp>&rsquo;</dt>
+<dd><p>only evaluate expression once during the filter initialization, or
+when the &lsquo;<samp>volume</samp>&rsquo; command is sent
+</p>
+</dd>
+<dt> &lsquo;<samp>frame</samp>&rsquo;</dt>
+<dd><p>evaluate expression for each incoming frame
+</p></dd>
+</dl>
+
+<p>Default value is &lsquo;<samp>once</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<p>The volume expression can contain the following parameters.
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>n</samp>&rsquo;</dt>
+<dd><p>frame number (starting at zero)
+</p></dd>
+<dt> &lsquo;<samp>nb_channels</samp>&rsquo;</dt>
+<dd><p>number of channels
+</p></dd>
+<dt> &lsquo;<samp>nb_consumed_samples</samp>&rsquo;</dt>
+<dd><p>number of samples consumed by the filter
+</p></dd>
+<dt> &lsquo;<samp>nb_samples</samp>&rsquo;</dt>
+<dd><p>number of samples in the current frame
+</p></dd>
+<dt> &lsquo;<samp>pos</samp>&rsquo;</dt>
+<dd><p>original frame position in the file
+</p></dd>
+<dt> &lsquo;<samp>pts</samp>&rsquo;</dt>
+<dd><p>frame PTS
+</p></dd>
+<dt> &lsquo;<samp>sample_rate</samp>&rsquo;</dt>
+<dd><p>sample rate
+</p></dd>
+<dt> &lsquo;<samp>startpts</samp>&rsquo;</dt>
+<dd><p>PTS at start of stream
+</p></dd>
+<dt> &lsquo;<samp>startt</samp>&rsquo;</dt>
+<dd><p>time at start of stream
+</p></dd>
+<dt> &lsquo;<samp>t</samp>&rsquo;</dt>
+<dd><p>frame time
+</p></dd>
+<dt> &lsquo;<samp>tb</samp>&rsquo;</dt>
+<dd><p>timestamp timebase
+</p></dd>
+<dt> &lsquo;<samp>volume</samp>&rsquo;</dt>
+<dd><p>last set volume value
+</p></dd>
+</dl>
+
+<p>Note that when &lsquo;<samp>eval</samp>&rsquo; is set to &lsquo;<samp>once</samp>&rsquo; only the
+<var>sample_rate</var> and <var>tb</var> variables are available, all other
+variables will evaluate to NAN.
+</p>
+<a name="Commands-4"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Commands-4">27.40.1 Commands</a></h3>
+
+<p>This filter supports the following commands:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>volume</samp>&rsquo;</dt>
+<dd><p>Modify the volume 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="Examples-36"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-36">27.40.2 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><li>
+Fade volume after time 10 with an annihilation period of 5 seconds:
+<table><tr><td>&nbsp;</td><td><pre class="example">volume='if(lt(t,10),1,max(1-(t-10)/5,0))':eval=frame
+</pre></td></tr></table>
+</li></ul>
+
+<a name="volumedetect"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-volumedetect">27.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-7"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-7">27.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">28. 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">28.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-23"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-23">28.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">28.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-20"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-20">28.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">28.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-67"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-67">28.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">28.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-27"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-27">28.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">28.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-80"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-80">28.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">29. 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">29.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">29.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">30. 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">30.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">30.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">30.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">30.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">30.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">30.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">30.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-52"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-52">30.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">30.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-41"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-41">30.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">30.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-81"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-81">30.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">30.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-5"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-5">30.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">30.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">30.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">30.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-60"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-60">30.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">30.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">30.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-51"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-51">30.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">30.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-10"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-10">30.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">30.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="dejudder"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-dejudder">30.18 dejudder</a></h2>
+
+<p>Remove judder produced by partially interlaced telecined content.
+</p>
+<p>Judder can be introduced, for instance, by <a href="#pullup">pullup</a> filter. If the original
+source was partially telecined content then the output of <code>pullup,dejudder</code>
+will have a variable frame rate. May change the recorded frame rate of the
+container. Aside from that change, this filter will not affect constant frame
+rate video.
+</p>
+<p>The option available in this filter is:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>cycle</samp>&rsquo;</dt>
+<dd><p>Specify the length of the window over which the judder repeats.
+</p>
+<p>Accepts any interger greater than 1. Useful values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>4</samp>&rsquo;</dt>
+<dd><p>If the original was telecined from 24 to 30 fps (Film to NTSC).
+</p>
+</dd>
+<dt> &lsquo;<samp>5</samp>&rsquo;</dt>
+<dd><p>If the original was telecined from 25 to 30 fps (PAL to NTSC).
+</p>
+</dd>
+<dt> &lsquo;<samp>20</samp>&rsquo;</dt>
+<dd><p>If a mixture of the two.
+</p></dd>
+</dl>
+
+<p>The default is &lsquo;<samp>4</samp>&rsquo;.
+</p></dd>
+</dl>
+
+<a name="delogo"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-delogo">30.19 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-21"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-21">30.19.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">30.20 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">30.21 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-2"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-2">30.21.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">30.22 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-72"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-72">30.22.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">30.23 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="ffprobe-all.html#toc-Syntax">30.23.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>borderw</samp>&rsquo;</dt>
+<dd><p>Set the width of the border to be drawn around the text using <var>bordercolor</var>.
+The default value of <var>borderw</var> is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>bordercolor</samp>&rsquo;</dt>
+<dd><p>Set the color to be used for drawing border 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>bordercolor</var> is &quot;black&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;default&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">30.23.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-40"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-40">30.23.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">30.24 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 chosen 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">30.25 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-16"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-16">30.25.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">30.26 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">30.27 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-43"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-43">30.27.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">30.28 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">30.29 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">30.29.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">30.29.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">30.29.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-66"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-66">30.29.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">30.30 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">30.31 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">30.32 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-59"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-59">30.32.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">30.33 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-74"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-74">30.33.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="framepack"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-framepack">30.34 framepack</a></h2>
+
+<p>Pack two different video streams into a stereoscopic video, setting proper
+metadata on supported codecs. The two views should have the same size and
+framerate and processing will stop when the shorter video ends. Please note
+that you may conveniently adjust view properties with the <a href="#scale">scale</a> and
+<a href="#fps">fps</a> filters.
+</p>
+<p>This filter accepts the following named parameters:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>format</samp>&rsquo;</dt>
+<dd><p>Desired packing format. Supported values are:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>sbs</samp>&rsquo;</dt>
+<dd><p>Views are next to each other (default).
+</p>
+</dd>
+<dt> &lsquo;<samp>tab</samp>&rsquo;</dt>
+<dd><p>Views are on top of each other.
+</p>
+</dd>
+<dt> &lsquo;<samp>lines</samp>&rsquo;</dt>
+<dd><p>Views are packed by line.
+</p>
+</dd>
+<dt> &lsquo;<samp>columns</samp>&rsquo;</dt>
+<dd><p>Views are eacked by column.
+</p>
+</dd>
+<dt> &lsquo;<samp>frameseq</samp>&rsquo;</dt>
+<dd><p>Views are temporally interleaved.
+</p>
+</dd>
+</dl>
+
+</dd>
+</dl>
+
+<p>Some examples follow:
+</p>
+<table><tr><td>&nbsp;</td><td><pre class="example"># Convert left and right views into a frame sequential video.
+ffmpeg -i LEFT -i RIGHT -filter_complex framepack=frameseq OUTPUT
+
+# Convert views into a side-by-side video with the same output resolution as the input.
+ffmpeg -i LEFT -i RIGHT -filter_complex [0:v]scale=w=iw/2[left],[1:v]scale=w=iw/2[right],[left][right]framepack=sbs OUTPUT
+</pre></td></tr></table>
+
+<a name="framestep"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-framestep">30.35 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">30.36 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-68"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-68">30.36.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">30.37 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-17"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-17">30.37.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">30.38 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-33"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-33">30.38.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">30.39 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">30.39.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">30.39.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">30.39.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">30.40 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">30.41 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">30.42 histogram</a></h2>
+
+<p>Compute and draw a color distribution histogram for the input video.
+</p>
+<p>The computed histogram is a representation of the color component
+distribution 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 displays the 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 the
+current frame. Below each graph a color component scale meter is shown.
+</p>
+</dd>
+<dt> &lsquo;<samp>color</samp>&rsquo;</dt>
+<dd><p>Displays chroma values (U/V color placement) in a two dimensional
+graph (which is called a vectorscope). The brighter a pixel in the
+vectorscope, the more pixels of the input frame correspond to that pixel
+(i.e., 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. The graph can therefore be used to read 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 the amount of a specific color is increased (while leaving the other
+colors unchanged) the saturation increases, and the indicator moves 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, the graph on the left side
+represents color component value 0 and the right side represents value = 255.
+In column mode, the 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
+many values of the same luminance are distributed across input rows/columns.
+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 the 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 below each other.
+</p>
+<p>Using 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 graphs 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 perform by
+making level adjustments the three waveforms.
+</p>
+</dd>
+<dt> &lsquo;<samp>overlay</samp>&rsquo;</dt>
+<dd><p>Presents information 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 makes it easier to spot
+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-4"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-4">30.42.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">30.43 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">30.44 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-22"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-22">30.44.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-2"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Commands-2">30.44.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">30.45 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">30.46 il</a></h2>
+
+<p>Deinterleave or interleave fields.
+</p>
+<p>This filter allows one 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">30.47 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. A vertical lowpass filter
+is always applied in order to avoid twitter effects and reduce moiré patterns.
+</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>
+</dl>
+
+<a name="kerndeint"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-kerndeint">30.48 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="ffprobe-all.html#toc-Examples-29">30.48.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">30.49 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">30.50 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-53"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-53">30.50.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">30.51 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-31"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-31">30.51.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">30.52 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">30.53 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-38"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-38">30.53.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">30.54 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">30.55 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">30.56 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">30.56.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">30.57 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-69"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-69">30.57.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="ffprobe-all.html#toc-null">30.58 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">30.59 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">30.59.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">30.59.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">30.59.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">30.60 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>eof_action</samp>&rsquo;</dt>
+<dd><p>The action to take when EOF is encountered on the secondary input, accepts one
+of the following values:
+</p>
+<dl compact="compact">
+<dt> &lsquo;<samp>repeat</samp>&rsquo;</dt>
+<dd><p>repeat the last frame (the default)
+</p></dd>
+<dt> &lsquo;<samp>endall</samp>&rsquo;</dt>
+<dd><p>end both streams
+</p></dd>
+<dt> &lsquo;<samp>pass</samp>&rsquo;</dt>
+<dd><p>pass through the main input
+</p></dd>
+</dl>
+
+</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>yuv422</samp>&rsquo;</dt>
+<dd><p>force YUV422 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"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Commands">30.60.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-63"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-63">30.60.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>
+mask 10-20 seconds of a video by applying the delogo filter to a section
+<table><tr><td>&nbsp;</td><td><pre class="example">ffmpeg -i test.avi -codec:v:0 wmv2 -ar 11025 -b:v 9000k
+-vf '[in]split[split_main][split_delogo];[split_delogo]trim=start=360:end=371,delogo=0:0:640:480[delogoed];[split_main][delogoed]overlay=eof_action=pass[out]'
+masked.avi
+</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">30.61 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">30.62 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-25"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-25">30.62.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">30.63 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">30.64 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">30.65 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">30.66 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-50"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-50">30.66.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">30.67 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>
+<p><a name="pullup"></a>
+</p><a name="pullup-1"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-pullup-1">30.68 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">30.69 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">30.70 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 height
+</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 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>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-77"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-77">30.70.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>
+Rotate the input by 45 degrees clockwise:
+<table><tr><td>&nbsp;</td><td><pre class="example">rotate=45*PI/180
+</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 chosen 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-5"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Commands-5">30.70.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">30.71 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">30.72 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-6"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-6">30.72.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>If one of the values is -n with n &gt; 1, the scale filter will also use a value
+that maintains the aspect ratio of the input image, calculated from the other
+specified dimension. After that it will, however, make sure that the calculated
+dimension is divisible by n and adjust the value if necessary.
+</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 explicitly 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-83"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-83">30.72.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">30.73 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">30.74 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-44"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-44">30.74.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">30.75 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">30.76 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">30.77 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">30.78 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-1"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-1">30.78.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">30.79 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">30.80 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">30.81 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">30.82 swapuv</a></h2>
+<p>Swap U &amp; V plane.
+</p>
+<a name="telecine"></a>
+<h2 class="section"><a href="ffprobe-all.html#toc-telecine">30.83 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">30.84 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-3"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-3">30.84.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">30.85 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-55"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-55">30.85.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 accommodate 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">30.86 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">30.87 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">30.88 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">30.89 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-56"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-56">30.89.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">30.90 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 15.
+</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-46"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-46">30.90.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">30.91 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>
+<a name="Options-10"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Options-10">30.91.1 Options</a></h3>
+
+<dl compact="compact">
+<dt> &lsquo;<samp>input</samp>&rsquo;</dt>
+<dd><p>Set path to the file used to read the transforms. Default value is
+&lsquo;<tt>transforms.trf</tt>&rsquo;).
+</p>
+</dd>
+<dt> &lsquo;<samp>smoothing</samp>&rsquo;</dt>
+<dd><p>Set the number of frames (value*2 + 1) used for lowpass filtering the
+camera movements. Default value is 10.
+</p>
+<p>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). 0 is a special case where a
+static camera is simulated.
+</p>
+</dd>
+<dt> &lsquo;<samp>optalgo</samp>&rsquo;</dt>
+<dd><p>Set the camera path optimization algorithm.
+</p>
+<p>Accepted values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>gauss</samp>&rsquo;</dt>
+<dd><p>gaussian kernel low-pass filter on camera motion (default)
+</p></dd>
+<dt> &lsquo;<samp>avg</samp>&rsquo;</dt>
+<dd><p>averaging on transformations
+</p></dd>
+</dl>
+
+</dd>
+<dt> &lsquo;<samp>maxshift</samp>&rsquo;</dt>
+<dd><p>Set maximal number of pixels to translate frames. Default value is -1,
+meaning no limit.
+</p>
+</dd>
+<dt> &lsquo;<samp>maxangle</samp>&rsquo;</dt>
+<dd><p>Set maximal angle in radians (degree*PI/180) to rotate frames. Default
+value is -1, meaning no limit.
+</p>
+</dd>
+<dt> &lsquo;<samp>crop</samp>&rsquo;</dt>
+<dd><p>Specify how to deal with borders that may be visible due to movement
+compensation.
+</p>
+<p>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><p>Invert transforms if set to 1. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>relative</samp>&rsquo;</dt>
+<dd><p>Consider transforms as relative to previsou frame if set to 1,
+absolute if set to 0. Default value is 0.
+</p>
+</dd>
+<dt> &lsquo;<samp>zoom</samp>&rsquo;</dt>
+<dd><p>Set percentage to zoom. A positive value will result in a zoom-in
+effect, a negative value in a zoom-out effect. Default value is 0 (no
+zoom).
+</p>
+</dd>
+<dt> &lsquo;<samp>optzoom</samp>&rsquo;</dt>
+<dd><p>Set optimal zooming to avoid borders.
+</p>
+<p>Accepted values are:
+</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), see &lsquo;<samp>zoomspeed</samp>&rsquo;
+</p></dd>
+</dl>
+
+<p>Note that the value given at zoom is added to the one calculated here.
+</p>
+</dd>
+<dt> &lsquo;<samp>zoomspeed</samp>&rsquo;</dt>
+<dd><p>Set percent to zoom maximally each frame (enabled when
+&lsquo;<samp>optzoom</samp>&rsquo; is set to 2). Range is from 0 to 5, default value is
+0.25.
+</p>
+</dd>
+<dt> &lsquo;<samp>interpol</samp>&rsquo;</dt>
+<dd><p>Specify 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>Enable virtual tripod mode if set to 1, which is equivalent to
+<code>relative=0:smoothing=0</code>. Default value is 0.
+</p>
+<p>Use also <code>tripod</code> option of <a href="#vidstabdetect">vidstabdetect</a>.
+</p>
+</dd>
+<dt> &lsquo;<samp>debug</samp>&rsquo;</dt>
+<dd><p>Increase log verbosity if set to 1. Also the detected global motions
+are written to the temporary file &lsquo;<tt>global_motions.trf</tt>&rsquo;. Default
+value is 0.
+</p></dd>
+</dl>
+
+<a name="Examples-24"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-24">30.91.2 Examples</a></h3>
+
+<ul>
+<li>
+Use <code>ffmpeg</code> for a typical stabilization with default values:
+<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>
+
+<p>Note the use of the unsharp filter which is always recommended.
+</p>
+</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">30.92 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">30.93 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 one 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">30.93.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-65"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-65">30.93.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">30.94 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">30.95 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">31. 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">31.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">31.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-11"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-11">31.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">31.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">31.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">31.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">31.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 one 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-79"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-79">31.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">31.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-1"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Commands-1">31.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">32. 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">32.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">32.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">33. 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">33.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-48"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-48">33.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">33.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-82"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-82">33.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">33.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>
+<dt> &lsquo;<samp>peak</samp>&rsquo;</dt>
+<dd><p>Set peak mode(s).
+</p>
+<p>Available modes can be cumulated (the option is a <code>flag</code> type). Possible
+values are:
+</p><dl compact="compact">
+<dt> &lsquo;<samp>none</samp>&rsquo;</dt>
+<dd><p>Disable any peak mode (default).
+</p></dd>
+<dt> &lsquo;<samp>sample</samp>&rsquo;</dt>
+<dd><p>Enable sample-peak mode.
+</p>
+<p>Simple peak mode looking for the higher sample value. It logs a message
+for sample-peak (identified by <code>SPK</code>).
+</p></dd>
+<dt> &lsquo;<samp>true</samp>&rsquo;</dt>
+<dd><p>Enable true-peak mode.
+</p>
+<p>If enabled, the peak lookup is done on an over-sampled version of the input
+stream for better peak accuracy. It logs a message for true-peak.
+(identified by <code>TPK</code>) and true-peak per frame (identified by <code>FTPK</code>).
+This mode requires a build with <code>libswresample</code>.
+</p></dd>
+</dl>
+
+</dd>
+</dl>
+
+<a name="Examples-70"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-70">33.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">33.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-9"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-9">33.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">33.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">33.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-32"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-32">33.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">33.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">33.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-37"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-37">33.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">33.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-78"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-78">33.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">33.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-26"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-26">33.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">33.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-14"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-14">33.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">33.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="ffprobe-all.html#toc-Examples-61">33.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">33.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-64"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-64">33.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">33.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-58"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-58">33.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">34. 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">34.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">34.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 one 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-6"></a>
+<h3 class="subsection"><a href="ffprobe-all.html#toc-Examples-6">34.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">35. 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">36. 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>June 19, 2014</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies64/ffmpeg/doc/ffprobe.html b/dependencies64/ffmpeg/doc/ffprobe.html
new file mode 100644 (file)
index 0000000..3a3b8fc
--- /dev/null
@@ -0,0 +1,1060 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on June 19, 2014 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" href="#Options">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-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="Synopsis"></a>
+<h1 class="chapter"><a href="ffprobe.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.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"></a>
+<h1 class="chapter"><a href="ffprobe.html#toc-Options">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.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.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>-hide_banner</samp>&rsquo;</dt>
+<dd><p>Suppress printing banner.
+</p>
+<p>All FFmpeg tools will normally show a copyright notice, build options
+and library versions. This option can be used to suppress printing
+this information.
+</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.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.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.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.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.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.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.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.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.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.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="See-Also"></a>
+<h1 class="chapter"><a href="ffprobe.html#toc-See-Also">6. See Also</a></h1>
+
+<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>
+
+<a name="Authors"></a>
+<h1 class="chapter"><a href="ffprobe.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>June 19, 2014</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies64/ffmpeg/doc/general.html b/dependencies64/ffmpeg/doc/general.html
new file mode 100644 (file)
index 0000000..95e0985
--- /dev/null
@@ -0,0 +1,962 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on June 19, 2014 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 : General </title>
+
+<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">
+<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">General Documentation</h1>
+
+<a name="SEC_Contents"></a>
+<h1>Table of Contents</h1>
+<div class="contents">
+
+<ul class="toc">
+  <li><a name="toc-External-libraries" href="#External-libraries">1. External libraries</a>
+  <ul class="toc">
+    <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-x265" href="#x265">1.8 x265</a></li>
+    <li><a name="toc-libilbc" href="#libilbc">1.9 libilbc</a></li>
+    <li><a name="toc-libzvbi" href="#libzvbi">1.10 libzvbi</a></li>
+    <li><a name="toc-AviSynth" href="#AviSynth">1.11 AviSynth</a></li>
+  </ul></li>
+  <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>
+    <li><a name="toc-Video-Codecs" href="#Video-Codecs">2.3 Video Codecs</a></li>
+    <li><a name="toc-Audio-Codecs" href="#Audio-Codecs">2.4 Audio Codecs</a></li>
+    <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>
+    <li><a name="toc-Timecode" href="#Timecode">2.8 Timecode</a></li>
+  </ul>
+</li>
+</ul>
+</div>
+
+<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
+<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>
+<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 them.
+</p>
+<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>
+
+<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="x265"></a>
+<h2 class="section"><a href="general.html#toc-x265">1.8 x265</a></h2>
+
+<p>FFmpeg can make use of the x265 library for HEVC encoding.
+</p>
+<p>Go to <a href="http://x265.org/developers.html">http://x265.org/developers.html</a> and follow the instructions
+for installing the library. Then pass <code>--enable-libx265</code> to configure
+to enable it.
+</p>
+<div class="float ">
+<p>x265 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.9 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.10 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="AviSynth"></a>
+<h2 class="section"><a href="general.html#toc-AviSynth">1.11 AviSynth</a></h2>
+
+<p>FFmpeg can read AviSynth scripts as input. To enable support, pass
+<code>--enable-avisynth</code> to configure.  The correct headers are
+included in compat/avisynth/, which allows the user to enable support
+without needing to search for these headers themselves.
+</p>
+<p>For Windows, supported AviSynth variants are
+<a href="http://avisynth.nl">AviSynth 2.5 or 2.6</a> for 32-bit builds and
+<a href="http://avs-plus.net">AviSynth+ 0.1</a> for 32-bit and 64-bit builds.
+</p>
+<p>For Linux and OS X, the supported AviSynth variant is
+<a href="https://github.com/avxsynth/avxsynth">AvxSynth</a>.
+</p>
+<div class="float alert alert-info">
+<p>AviSynth and AvxSynth are loaded dynamically.  Distributors can build FFmpeg
+with <code>--enable-avisynth</code>, and the binaries will work regardless of the
+end user having AviSynth or AvxSynth installed - they&rsquo;ll only need to be
+installed to use AviSynth scripts (obviously).
+</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>
+<a name="File-Formats"></a>
+<h2 class="section"><a href="general.html#toc-File-Formats">2.1 File Formats</a></h2>
+
+<p>FFmpeg supports the following file formats through the <code>libavformat</code>
+library:
+</p>
+<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%">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%">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>
+<tr><td width="40%">CRYO APC</td><td width="10%"></td><td width="10%">X</td><td width="40%">Audio format used in some games by CRYO Interactive Entertainment.</td></tr>
+<tr><td width="40%">D-Cinema audio</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">Deluxe Paint Animation</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%">This format is used in Chronomaster game</td></tr>
+<tr><td width="40%">DV video</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">DXA</td><td width="10%"></td><td width="10%">X</td><td width="40%">This format is used in the non-Windows version of the Feeble Files
+         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>
+<tr><td width="40%">FLI/FLC/FLX animation</td><td width="10%"></td><td width="10%">X</td><td width="40%">.fli/.flc files</td></tr>
+<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%">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 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>
+<tr><td width="40%">MOV/QuickTime/MP4</td><td width="10%">X</td><td width="10%">X</td><td width="40%">3GP, 3GP2, PSP, iPod variants supported</td></tr>
+<tr><td width="40%">MP2</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">MP3</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">MPEG-1 System</td><td width="10%">X</td><td width="10%">X</td><td width="40%">muxed audio and video, VCD format supported</td></tr>
+<tr><td width="40%">MPEG-PS (program stream)</td><td width="10%">X</td><td width="10%">X</td><td width="40%">also known as <code>VOB</code> file, SVCD and DVD format supported</td></tr>
+<tr><td width="40%">MPEG-TS (transport stream)</td><td width="10%">X</td><td width="10%">X</td><td width="40%">also known as DVB Transport Stream</td></tr>
+<tr><td width="40%">MPEG-4</td><td width="10%">X</td><td width="10%">X</td><td width="40%">MPEG-4 is a variant of QuickTime.</td></tr>
+<tr><td width="40%">Mirillis FIC video</td><td width="10%"></td><td width="10%">X</td><td width="40%">No cursor rendering.</td></tr>
+<tr><td width="40%">MIME multipart JPEG</td><td width="10%">X</td><td width="10%"></td></tr>
+<tr><td width="40%">MSN TCP webcam</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used by MSN Messenger webcam streams.</td></tr>
+<tr><td width="40%">MTV</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">Musepack</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%">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>
+<tr><td width="40%">raw AC-3</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">raw Chinese AVS video</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">raw CRI ADX</td><td width="10%">X</td><td width="10%">X</td></tr>
+<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%">X</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>
+<tr><td width="40%">raw MPEG</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">raw MPEG-1</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">raw MPEG-2</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">raw MPEG-4</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">raw NULL</td><td width="10%">X</td><td width="10%"></td></tr>
+<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%">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>
+<tr><td width="40%">raw PCM signed 16 bit big-endian</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">raw PCM signed 16 bit little-endian</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">raw PCM signed 24 bit big-endian</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">raw PCM signed 24 bit little-endian</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">raw PCM signed 32 bit big-endian</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">raw PCM signed 32 bit little-endian</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">raw PCM unsigned 8 bit</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">raw PCM unsigned 16 bit big-endian</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">raw PCM unsigned 16 bit little-endian</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">raw PCM unsigned 24 bit big-endian</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">raw PCM unsigned 24 bit little-endian</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">raw PCM unsigned 32 bit big-endian</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">raw PCM unsigned 32 bit little-endian</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">raw PCM floating-point 32 bit big-endian</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">raw PCM floating-point 32 bit little-endian</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">raw PCM floating-point 64 bit big-endian</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">raw PCM floating-point 64 bit little-endian</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">RDT</td><td width="10%"></td><td width="10%">X</td></tr>
+<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%">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%">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>
+<tr><td width="40%">THP</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used on the Nintendo GameCube.</td></tr>
+<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%">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%">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>
+
+<p><code>X</code> means that encoding (resp. decoding) is supported.
+</p>
+<a name="Image-Formats"></a>
+<h2 class="section"><a href="general.html#toc-Image-Formats">2.2 Image Formats</a></h2>
+
+<p>FFmpeg can read and write images for each frame of a video sequence. The
+following image formats are supported:
+</p>
+<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></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>
+<tr><td width="40%">LJPEG</td><td width="10%">X</td><td width="10%"></td><td width="40%">Lossless JPEG</td></tr>
+<tr><td width="40%">PAM</td><td width="10%">X</td><td width="10%">X</td><td width="40%">PAM is a PNM extension with alpha support.</td></tr>
+<tr><td width="40%">PBM</td><td width="10%">X</td><td width="10%">X</td><td width="40%">Portable BitMap image</td></tr>
+<tr><td width="40%">PCX</td><td width="10%">X</td><td width="10%">X</td><td width="40%">PC Paintbrush</td></tr>
+<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></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%">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%">E</td><td width="10%">X</td><td width="40%">WebP image format, encoding supported through external library libwebp</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.
+</p>
+<p><code>E</code> means that support is provided through an external library.
+</p>
+<a name="Video-Codecs"></a>
+<h2 class="section"><a href="general.html#toc-Video-Codecs">2.3 Video Codecs</a></h2>
+
+<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%">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%">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%">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>
+<tr><td width="40%">ATI VCR1</td><td width="10%"></td><td width="10%">X</td><td width="40%">fourcc: VCR1</td></tr>
+<tr><td width="40%">ATI VCR2</td><td width="10%"></td><td width="10%">X</td><td width="40%">fourcc: VCR2</td></tr>
+<tr><td width="40%">Auravision Aura</td><td width="10%"></td><td width="10%">X</td></tr>
+<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%">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%">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>
+<tr><td width="40%">Electronic Arts TGV video</td><td width="10%"></td><td width="10%">X</td></tr>
+<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%">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%">HEVC</td><td width="10%">X</td><td width="10%">X</td><td width="40%">encoding supported through the external library libx265</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 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>
+<tr><td width="40%">MJPEG (Motion JPEG)</td><td width="10%">X</td><td width="10%">X</td></tr>
+<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-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</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>
+<tr><td width="40%">Nintendo Gamecube THP video</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">NuppelVideo/RTjpeg</td><td width="10%"></td><td width="10%">X</td><td width="40%">Video encoding used in NuppelVideo files.</td></tr>
+<tr><td width="40%">On2 VP3</td><td width="10%"></td><td width="10%">X</td><td width="40%">still experimental</td></tr>
+<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%">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%">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>
+<tr><td width="40%">RealVideo 3.0</td><td width="10%"></td><td width="10%">X</td><td width="40%">still far from ideal</td></tr>
+<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>
+<tr><td width="40%">Sony PlayStation MDEC (Motion DECoder)</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">Sorenson Vector Quantizer 1</td><td width="10%">X</td><td width="10%">X</td><td width="40%">fourcc: SVQ1</td></tr>
+<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%">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>
+<tr><td width="40%">Windows Media Video 7</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">Windows Media Video 8</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">Windows Media Video 9</td><td width="10%"></td><td width="10%">X</td><td width="40%">not completely working</td></tr>
+<tr><td width="40%">Wing Commander III / Xan</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in Wing Commander III .MVE files.</td></tr>
+<tr><td width="40%">Wing Commander IV / Xan</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in Wing Commander IV.</td></tr>
+<tr><td width="40%">Winnov WNV1</td><td width="10%"></td><td width="10%">X</td></tr>
+<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>
+
+<p><code>X</code> means that encoding (resp. decoding) is supported.
+</p>
+<p><code>E</code> means that support is provided through an external library.
+</p>
+<a name="Audio-Codecs"></a>
+<h2 class="section"><a href="general.html#toc-Audio-Codecs">2.4 Audio Codecs</a></h2>
+
+<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 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>
+<tr><td width="40%">ADPCM CDROM XA</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">ADPCM Creative Technology</td><td width="10%"></td><td width="10%">X</td><td width="40%">16 -&gt; 4, 8 -&gt; 4, 8 -&gt; 3, 8 -&gt; 2</td></tr>
+<tr><td width="40%">ADPCM Electronic Arts</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in various EA titles.</td></tr>
+<tr><td width="40%">ADPCM Electronic Arts Maxis CDROM XS</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in Sim City 3000.</td></tr>
+<tr><td width="40%">ADPCM Electronic Arts R1</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">ADPCM Electronic Arts R2</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">ADPCM Electronic Arts R3</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">ADPCM Electronic Arts XAS</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">ADPCM G.722</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">ADPCM G.726</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">ADPCM IMA AMV</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in AMV files</td></tr>
+<tr><td width="40%">ADPCM IMA Electronic Arts EACS</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">ADPCM IMA Electronic Arts SEAD</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">ADPCM IMA Funcom</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">ADPCM IMA QuickTime</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">ADPCM IMA Loki SDL MJPEG</td><td width="10%"></td><td width="10%">X</td></tr>
+<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 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>
+<tr><td width="40%">ADPCM Westwood Studios IMA</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in Westwood Studios games like Command and Conquer.</td></tr>
+<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%">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%">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</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 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>
+<tr><td width="40%">DPCM Xan</td><td width="10%"></td><td width="10%">X</td><td width="40%">Used in Origin&rsquo;s Wing Commander IV AVI files.</td></tr>
+<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></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><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 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>
+<tr><td width="40%">PCM 64-bit floating point little-endian</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">PCM D-Cinema audio signed 24-bit</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">PCM signed 8-bit</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">PCM signed 16-bit big-endian</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">PCM signed 16-bit little-endian</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">PCM signed 24-bit big-endian</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">PCM signed 24-bit little-endian</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">PCM signed 32-bit big-endian</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">PCM signed 32-bit little-endian</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">PCM signed 16/20/24-bit big-endian in MPEG-TS</td><td width="10%"></td><td width="10%">X</td></tr>
+<tr><td width="40%">PCM unsigned 8-bit</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">PCM unsigned 16-bit big-endian</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">PCM unsigned 16-bit little-endian</td><td width="10%">X</td><td width="10%">X</td></tr>
+<tr><td width="40%">PCM unsigned 24-bit big-endian</td><td width="10%">X</td><td width="10%">X</td></tr>
+<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%"></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%">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%">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%">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>
+
+<p><code>X</code> means that encoding (resp. decoding) is supported.
+</p>
+<p><code>E</code> means that support is provided through an external library.
+</p>
+<p><code>I</code> means that an integer-only version is available, too (ensures high
+performance on systems without hardware floating point support).
+</p>
+<a name="Subtitle-Formats"></a>
+<h2 class="section"><a href="general.html#toc-Subtitle-Formats">2.5 Subtitle Formats</a></h2>
+
+<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%">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%">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%">file</td><td width="10%">X</td></tr>
+<tr><td width="40%">FTP</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%">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%">SFTP</td><td width="10%">E</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>
+
+<table>
+<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%">X</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%">OpenGL</td><td width="10%"></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%">PulseAudio</td><td width="10%">X</td><td width="10%">X</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>
+
+<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>
+
+<footer class="footer pagination-right">
+<span class="label label-info">This document was generated by <em>Kyle Schwarz</em> on <em>June 19, 2014</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies64/ffmpeg/doc/git-howto.html b/dependencies64/ffmpeg/doc/git-howto.html
new file mode 100644 (file)
index 0000000..22414bb
--- /dev/null
@@ -0,0 +1,459 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on June 19, 2014 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 one 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>June 19, 2014</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies64/ffmpeg/doc/libavcodec.html b/dependencies64/ffmpeg/doc/libavcodec.html
new file mode 100644 (file)
index 0000000..4aa6727
--- /dev/null
@@ -0,0 +1,78 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on June 19, 2014 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>June 19, 2014</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies64/ffmpeg/doc/libavdevice.html b/dependencies64/ffmpeg/doc/libavdevice.html
new file mode 100644 (file)
index 0000000..38e27c3
--- /dev/null
@@ -0,0 +1,75 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on June 19, 2014 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>June 19, 2014</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies64/ffmpeg/doc/libavfilter.html b/dependencies64/ffmpeg/doc/libavfilter.html
new file mode 100644 (file)
index 0000000..58a5de3
--- /dev/null
@@ -0,0 +1,74 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on June 19, 2014 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 : Libavfilter </title>
+
+<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">
+<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">Libavfilter 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="libavfilter.html#toc-Description">1. Description</a></h1>
+
+<p>The libavfilter library provides a generic audio/video filtering
+framework containing several filters, sources and sinks.
+</p>
+
+<a name="See-Also"></a>
+<h1 class="chapter"><a href="libavfilter.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-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>
+
+<a name="Authors"></a>
+<h1 class="chapter"><a href="libavfilter.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>June 19, 2014</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies64/ffmpeg/doc/libavformat.html b/dependencies64/ffmpeg/doc/libavformat.html
new file mode 100644 (file)
index 0000000..170f29f
--- /dev/null
@@ -0,0 +1,78 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on June 19, 2014 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>June 19, 2014</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies64/ffmpeg/doc/libavutil.html b/dependencies64/ffmpeg/doc/libavutil.html
new file mode 100644 (file)
index 0000000..4eb3864
--- /dev/null
@@ -0,0 +1,97 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on June 19, 2014 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>June 19, 2014</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies64/ffmpeg/doc/libswresample.html b/dependencies64/ffmpeg/doc/libswresample.html
new file mode 100644 (file)
index 0000000..2ef5a2e
--- /dev/null
@@ -0,0 +1,100 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on June 19, 2014 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>June 19, 2014</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies64/ffmpeg/doc/libswscale.html b/dependencies64/ffmpeg/doc/libswscale.html
new file mode 100644 (file)
index 0000000..8e7684c
--- /dev/null
@@ -0,0 +1,93 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on June 19, 2014 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>June 19, 2014</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies64/ffmpeg/doc/nut.html b/dependencies64/ffmpeg/doc/nut.html
new file mode 100644 (file)
index 0000000..bf71d28
--- /dev/null
@@ -0,0 +1,183 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on June 19, 2014 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>June 19, 2014</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
diff --git a/dependencies64/ffmpeg/doc/platform.html b/dependencies64/ffmpeg/doc/platform.html
new file mode 100644 (file)
index 0000000..ba7c511
--- /dev/null
@@ -0,0 +1,422 @@
+<!DOCTYPE html>
+<html>
+<!-- Created on June 19, 2014 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="https://github.com/FFmpeg/gas-preprocessor">https://github.com/FFmpeg/gas-preprocessor</a> or
+<a href="http://github.com/yuvi/gas-preprocessor">http://github.com/yuvi/gas-preprocessor</a> to build the optimized
+assembler functions. Put the Perl script 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>June 19, 2014</em> using <a href="http://www.nongnu.org/texi2html/"><em>texi2html 1.82</em></a>.</span></footer></div></div></body>
index 17c48ddde1d0f4d4546df415ca94befc0d8b0f26..5df717caefff5d5cb6d10d7bc0951a774760f643 100644 (file)
 #include "libavutil/pixfmt.h"
 #include "libavutil/rational.h"
 
-#include "libavcodec/version.h"
+#include "version.h"
+
+#if FF_API_FAST_MALLOC
+// to provide fast_*alloc
+#include "libavutil/mem.h"
+#endif
+
 /**
  * @defgroup libavc Encoding/Decoding Library
  * @{
@@ -104,7 +110,9 @@ enum AVCodecID {
     /* video codecs */
     AV_CODEC_ID_MPEG1VIDEO,
     AV_CODEC_ID_MPEG2VIDEO, ///< preferred ID for MPEG-1/2 video decoding
+#if FF_API_XVMC
     AV_CODEC_ID_MPEG2VIDEO_XVMC,
+#endif /* FF_API_XVMC */
     AV_CODEC_ID_H261,
     AV_CODEC_ID_H263,
     AV_CODEC_ID_RV10,
@@ -274,6 +282,10 @@ enum AVCodecID {
     AV_CODEC_ID_AIC,
     AV_CODEC_ID_ESCAPE130_DEPRECATED,
     AV_CODEC_ID_G2M_DEPRECATED,
+    AV_CODEC_ID_WEBP_DEPRECATED,
+    AV_CODEC_ID_HNM4_VIDEO,
+    AV_CODEC_ID_HEVC_DEPRECATED,
+    AV_CODEC_ID_FIC,
 
     AV_CODEC_ID_BRENDER_PIX= MKBETAG('B','P','I','X'),
     AV_CODEC_ID_Y41P       = MKBETAG('Y','4','1','P'),
@@ -300,6 +312,8 @@ enum AVCodecID {
     AV_CODEC_ID_SNOW       = MKBETAG('S','N','O','W'),
     AV_CODEC_ID_WEBP       = MKBETAG('W','E','B','P'),
     AV_CODEC_ID_SMVJPEG    = MKBETAG('S','M','V','J'),
+    AV_CODEC_ID_HEVC       = MKBETAG('H','2','6','5'),
+#define AV_CODEC_ID_H265 AV_CODEC_ID_HEVC
 
     /* various PCM "codecs" */
     AV_CODEC_ID_FIRST_AUDIO = 0x10000,     ///< A dummy id pointing at the start of audio codecs
@@ -331,6 +345,8 @@ enum AVCodecID {
     AV_CODEC_ID_PCM_LXF,
     AV_CODEC_ID_S302M,
     AV_CODEC_ID_PCM_S8_PLANAR,
+    AV_CODEC_ID_PCM_S24LE_PLANAR_DEPRECATED,
+    AV_CODEC_ID_PCM_S32LE_PLANAR_DEPRECATED,
     AV_CODEC_ID_PCM_S24LE_PLANAR = MKBETAG(24,'P','S','P'),
     AV_CODEC_ID_PCM_S32LE_PLANAR = MKBETAG(32,'P','S','P'),
     AV_CODEC_ID_PCM_S16BE_PLANAR = MKBETAG('P','S','P',16),
@@ -371,6 +387,7 @@ enum AVCodecID {
     AV_CODEC_ID_ADPCM_IMA_OKI = MKBETAG('O','K','I',' '),
     AV_CODEC_ID_ADPCM_DTK  = MKBETAG('D','T','K',' '),
     AV_CODEC_ID_ADPCM_IMA_RAD = MKBETAG('R','A','D',' '),
+    AV_CODEC_ID_ADPCM_G726LE = MKBETAG('6','2','7','G'),
 
     /* AMR */
     AV_CODEC_ID_AMR_NB = 0x12000,
@@ -419,7 +436,9 @@ enum AVCodecID {
     AV_CODEC_ID_MLP,
     AV_CODEC_ID_GSM_MS, /* as found in WAV */
     AV_CODEC_ID_ATRAC3,
+#if FF_API_VOXWARE
     AV_CODEC_ID_VOXWARE,
+#endif
     AV_CODEC_ID_APE,
     AV_CODEC_ID_NELLYMOSER,
     AV_CODEC_ID_MUSEPACK8,
@@ -451,6 +470,7 @@ enum AVCodecID {
     AV_CODEC_ID_OPUS_DEPRECATED,
     AV_CODEC_ID_COMFORT_NOISE,
     AV_CODEC_ID_TAK_DEPRECATED,
+    AV_CODEC_ID_METASOUND,
     AV_CODEC_ID_FFWAVESYNTH = MKBETAG('F','F','W','S'),
     AV_CODEC_ID_SONIC       = MKBETAG('S','O','N','C'),
     AV_CODEC_ID_SONIC_LS    = MKBETAG('S','O','N','L'),
@@ -494,6 +514,7 @@ enum AVCodecID {
     AV_CODEC_ID_OTF        = MKBETAG( 0 ,'O','T','F'),
     AV_CODEC_ID_SMPTE_KLV  = MKBETAG('K','L','V','A'),
     AV_CODEC_ID_DVD_NAV    = MKBETAG('D','N','A','V'),
+    AV_CODEC_ID_TIMED_ID3  = MKBETAG('T','I','D','3'),
 
 
     AV_CODEC_ID_PROBE = 0x19000, ///< codec_id is not known (like AV_CODEC_ID_NONE) but lavf should attempt to identify it
@@ -616,16 +637,26 @@ enum AVColorPrimaries{
     AVCOL_PRI_SMPTE170M   = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC
     AVCOL_PRI_SMPTE240M   = 7, ///< functionally identical to above
     AVCOL_PRI_FILM        = 8,
+    AVCOL_PRI_BT2020      = 9, ///< ITU-R BT2020
     AVCOL_PRI_NB             , ///< Not part of ABI
 };
 
 enum AVColorTransferCharacteristic{
-    AVCOL_TRC_BT709       = 1, ///< also ITU-R BT1361
-    AVCOL_TRC_UNSPECIFIED = 2,
-    AVCOL_TRC_GAMMA22     = 4, ///< also ITU-R BT470M / ITU-R BT1700 625 PAL & SECAM
-    AVCOL_TRC_GAMMA28     = 5, ///< also ITU-R BT470BG
-    AVCOL_TRC_SMPTE240M   = 7,
-    AVCOL_TRC_NB             , ///< Not part of ABI
+    AVCOL_TRC_BT709        =  1, ///< also ITU-R BT1361
+    AVCOL_TRC_UNSPECIFIED  =  2,
+    AVCOL_TRC_GAMMA22      =  4, ///< also ITU-R BT470M / ITU-R BT1700 625 PAL & SECAM
+    AVCOL_TRC_GAMMA28      =  5, ///< also ITU-R BT470BG
+    AVCOL_TRC_SMPTE170M    =  6, ///< also ITU-R BT601-6 525 or 625 / ITU-R BT1358 525 or 625 / ITU-R BT1700 NTSC
+    AVCOL_TRC_SMPTE240M    =  7,
+    AVCOL_TRC_LINEAR       =  8, ///< "Linear transfer characteristics"
+    AVCOL_TRC_LOG          =  9, ///< "Logarithmic transfer characteristic (100:1 range)"
+    AVCOL_TRC_LOG_SQRT     = 10, ///< "Logarithmic transfer characteristic (100 * Sqrt( 10 ) : 1 range)"
+    AVCOL_TRC_IEC61966_2_4 = 11, ///< IEC 61966-2-4
+    AVCOL_TRC_BT1361_ECG   = 12, ///< ITU-R BT1361 Extended Colour Gamut
+    AVCOL_TRC_IEC61966_2_1 = 13, ///< IEC 61966-2-1 (sRGB or sYCC)
+    AVCOL_TRC_BT2020_10    = 14, ///< ITU-R BT2020 for 10 bit system
+    AVCOL_TRC_BT2020_12    = 15, ///< ITU-R BT2020 for 12 bit system
+    AVCOL_TRC_NB               , ///< Not part of ABI
 };
 
 /**
@@ -667,7 +698,12 @@ typedef struct RcOverride{
     float quality_factor;
 } RcOverride;
 
+#if FF_API_MAX_BFRAMES
+/**
+ * @deprecated there is no libavcodec-wide limit on the number of B-frames
+ */
 #define FF_MAX_B_FRAMES 16
+#endif
 
 /* encoding support
    These flags can be passed in AVCodecContext.flags before initialization.
@@ -681,6 +717,7 @@ typedef struct RcOverride{
 #define CODEC_FLAG_UNALIGNED 0x0001
 #define CODEC_FLAG_QSCALE 0x0002  ///< Use fixed qscale.
 #define CODEC_FLAG_4MV    0x0004  ///< 4 MV per MB allowed / advanced prediction for H.263.
+#define CODEC_FLAG_OUTPUT_CORRUPT 0x0008 ///< Output even those frames that might be corrupted
 #define CODEC_FLAG_QPEL   0x0010  ///< Use qpel MC.
 #define CODEC_FLAG_GMC    0x0020  ///< Use GMC.
 #define CODEC_FLAG_MV0    0x0040  ///< Always try a MB with MV=<0,0>.
@@ -693,7 +730,13 @@ typedef struct RcOverride{
 #define CODEC_FLAG_PASS1           0x0200   ///< Use internal 2pass ratecontrol in first pass mode.
 #define CODEC_FLAG_PASS2           0x0400   ///< Use internal 2pass ratecontrol in second pass mode.
 #define CODEC_FLAG_GRAY            0x2000   ///< Only decode/encode grayscale.
-#define CODEC_FLAG_EMU_EDGE        0x4000   ///< Don't draw edges.
+#if FF_API_EMU_EDGE
+/**
+ * @deprecated edges are not used/required anymore. I.e. this flag is now always
+ * set.
+ */
+#define CODEC_FLAG_EMU_EDGE        0x4000
+#endif
 #define CODEC_FLAG_PSNR            0x8000   ///< error[?] variables will be set during encoding.
 #define CODEC_FLAG_TRUNCATED       0x00010000 /** Input bitstream might be truncated at a random
                                                   location instead of only at frame boundaries. */
@@ -731,8 +774,16 @@ typedef struct RcOverride{
  */
 #define CODEC_CAP_DR1             0x0002
 #define CODEC_CAP_TRUNCATED       0x0008
-/* Codec can export data for HW decoding (XvMC). */
+#if FF_API_XVMC
+/* Codec can export data for HW decoding. This flag indicates that
+ * the codec would call get_format() with list that might contain HW accelerated
+ * pixel formats (XvMC, VDPAU, VAAPI, etc). The application can pick any of them
+ * including raw image format.
+ * The application can use the passed context to determine bitstream version,
+ * chroma format, resolution etc.
+ */
 #define CODEC_CAP_HWACCEL         0x0010
+#endif /* FF_API_XVMC */
 /**
  * Encoder or decoder requires flushing with NULL input at the end in order to
  * give the complete and correct output.
@@ -762,10 +813,12 @@ typedef struct RcOverride{
  * This can be used to prevent truncation of the last audio samples.
  */
 #define CODEC_CAP_SMALL_LAST_FRAME 0x0040
+#if FF_API_CAP_VDPAU
 /**
  * Codec can export data for HW decoding (VDPAU).
  */
 #define CODEC_CAP_HWACCEL_VDPAU    0x0080
+#endif
 /**
  * Codec can output multiple frames per AVPacket
  * Normally demuxers return one frame at a time, demuxers which do not do
@@ -787,12 +840,12 @@ typedef struct RcOverride{
  * Codec should fill in channel configuration and samplerate instead of container
  */
 #define CODEC_CAP_CHANNEL_CONF     0x0400
-
+#if FF_API_NEG_LINESIZES
 /**
- * Codec is able to deal with negative linesizes
+ * @deprecated no codecs use this capability
  */
 #define CODEC_CAP_NEG_LINESIZES    0x0800
-
+#endif
 /**
  * Codec supports frame-level multithreading.
  */
@@ -822,6 +875,7 @@ typedef struct RcOverride{
  */
 #define CODEC_CAP_LOSSLESS         0x80000000
 
+#if FF_API_MB_TYPE
 //The following defines may change, don't expect compatibility if you use them.
 #define MB_TYPE_INTRA4x4   0x0001
 #define MB_TYPE_INTRA16x16 0x0002 //FIXME H.264-specific
@@ -845,6 +899,7 @@ typedef struct RcOverride{
 #define MB_TYPE_QUANT      0x00010000
 #define MB_TYPE_CBP        0x00020000
 //Note bits 24-31 are reserved for codec specific use (h264 ref0, mpeg1 0mv, ...)
+#endif
 
 /**
  * Pan Scan area.
@@ -875,10 +930,12 @@ typedef struct AVPanScan{
     int16_t position[3][2];
 }AVPanScan;
 
+#if FF_API_QSCALE_TYPE
 #define FF_QSCALE_TYPE_MPEG1 0
 #define FF_QSCALE_TYPE_MPEG2 1
 #define FF_QSCALE_TYPE_H264  2
 #define FF_QSCALE_TYPE_VP56  3
+#endif
 
 #if FF_API_GET_BUFFER
 #define FF_BUFFER_TYPE_INTERNAL 1
@@ -1001,6 +1058,13 @@ enum AVPacketSideDataType {
      * follow the timestamp specifier of a WebVTT cue.
      */
     AV_PKT_DATA_WEBVTT_SETTINGS,
+
+    /**
+     * A list of zero terminated key/value strings. There is no end marker for
+     * the list, so it is required to rely on the side data size to stop. This
+     * side data includes updated metadata which appeared in the stream.
+     */
+    AV_PKT_DATA_METADATA_UPDATE,
 };
 
 /**
@@ -1311,7 +1375,9 @@ typedef struct AVCodecContext {
      */
     int coded_width, coded_height;
 
+#if FF_API_ASPECT_EXTENDED
 #define FF_ASPECT_EXTENDED 15
+#endif
 
     /**
      * the number of pictures in a group of pictures, or 0 for intra_only
@@ -1638,12 +1704,15 @@ typedef struct AVCodecContext {
 #define SLICE_FLAG_ALLOW_FIELD    0x0002 ///< allow draw_horiz_band() with field slices (MPEG2 field pics)
 #define SLICE_FLAG_ALLOW_PLANE    0x0004 ///< allow draw_horiz_band() with 1 component at a time (SVQ1)
 
+#if FF_API_XVMC
     /**
      * XVideo Motion Acceleration
      * - encoding: forbidden
      * - decoding: set by decoder
+     * @deprecated XvMC doesn't need it anymore.
      */
-    int xvmc_acceleration;
+    attribute_deprecated int xvmc_acceleration;
+#endif /* FF_API_XVMC */
 
     /**
      * macroblock decision mode
@@ -2090,12 +2159,11 @@ typedef struct AVCodecContext {
      * If AV_GET_BUFFER_FLAG_REF is set in flags then the frame may be reused
      * (read and/or written to if it is writable) later by libavcodec.
      *
-     * If CODEC_FLAG_EMU_EDGE is not set in s->flags, the buffer must contain an
-     * edge of the size returned by avcodec_get_edge_width() on all sides.
-     *
      * avcodec_align_dimensions2() should be used to find the required width and
      * height, as they normally need to be rounded up to the next multiple of 16.
      *
+     * Some decoders do not support linesizes changing between frames.
+     *
      * If frame multithreading is used and thread_safe_callbacks is set,
      * this callback may be called from a different thread, but not from more
      * than one at once. Does not need to be reentrant.
@@ -2378,12 +2446,16 @@ typedef struct AVCodecContext {
      */
     int workaround_bugs;
 #define FF_BUG_AUTODETECT       1  ///< autodetection
+#if FF_API_OLD_MSMPEG4
 #define FF_BUG_OLD_MSMPEG4      2
+#endif
 #define FF_BUG_XVID_ILACE       4
 #define FF_BUG_UMP4             8
 #define FF_BUG_NO_PADDING       16
 #define FF_BUG_AMV              32
+#if FF_API_AC_VLC
 #define FF_BUG_AC_VLC           0  ///< Will be removed, libavcodec can now handle these non-compliant files by default.
+#endif
 #define FF_BUG_QPEL_CHROMA      64
 #define FF_BUG_STD_QPEL         128
 #define FF_BUG_QPEL_CHROMA2     256
@@ -2433,7 +2505,12 @@ typedef struct AVCodecContext {
 #define FF_DEBUG_BITSTREAM   4
 #define FF_DEBUG_MB_TYPE     8
 #define FF_DEBUG_QP          16
+#if FF_API_DEBUG_MV
+/**
+ * @deprecated this option does nothing
+ */
 #define FF_DEBUG_MV          32
+#endif
 #define FF_DEBUG_DCT_COEFF   0x00000040
 #define FF_DEBUG_SKIP        0x00000080
 #define FF_DEBUG_STARTCODE   0x00000100
@@ -2441,13 +2518,17 @@ typedef struct AVCodecContext {
 #define FF_DEBUG_ER          0x00000400
 #define FF_DEBUG_MMCO        0x00000800
 #define FF_DEBUG_BUGS        0x00001000
-#define FF_DEBUG_VIS_QP      0x00002000
-#define FF_DEBUG_VIS_MB_TYPE 0x00004000
+#if FF_API_DEBUG_MV
+#define FF_DEBUG_VIS_QP      0x00002000 ///< only access through AVOptions from outside libavcodec
+#define FF_DEBUG_VIS_MB_TYPE 0x00004000 ///< only access through AVOptions from outside libavcodec
+#endif
 #define FF_DEBUG_BUFFERS     0x00008000
 #define FF_DEBUG_THREADS     0x00010000
 
+#if FF_API_DEBUG_MV
     /**
      * debug
+     * Code outside libavcodec should access this field using AVOptions
      * - encoding: Set by user.
      * - decoding: Set by user.
      */
@@ -2455,6 +2536,7 @@ typedef struct AVCodecContext {
 #define FF_DEBUG_VIS_MV_P_FOR  0x00000001 //visualize forward predicted MVs of P frames
 #define FF_DEBUG_VIS_MV_B_FOR  0x00000002 //visualize forward predicted MVs of B frames
 #define FF_DEBUG_VIS_MV_B_BACK 0x00000004 //visualize backward predicted MVs of B frames
+#endif
 
     /**
      * Error recognition; may misdetect some more or less valid parts as errors.
@@ -2462,14 +2544,21 @@ typedef struct AVCodecContext {
      * - decoding: Set by user.
      */
     int err_recognition;
+
+/**
+ * Verify checksums embedded in the bitstream (could be of either encoded or
+ * decoded data, depending on the codec) and print an error message on mismatch.
+ * If AV_EF_EXPLODE is also set, a mismatching checksum will result in the
+ * decoder returning an error.
+ */
 #define AV_EF_CRCCHECK  (1<<0)
-#define AV_EF_BITSTREAM (1<<1)
-#define AV_EF_BUFFER    (1<<2)
-#define AV_EF_EXPLODE   (1<<3)
+#define AV_EF_BITSTREAM (1<<1)          ///< detect bitstream specification deviations
+#define AV_EF_BUFFER    (1<<2)          ///< detect improper bitstream length
+#define AV_EF_EXPLODE   (1<<3)          ///< abort decoding on minor error detection
 
-#define AV_EF_CAREFUL    (1<<16)
-#define AV_EF_COMPLIANT  (1<<17)
-#define AV_EF_AGGRESSIVE (1<<18)
+#define AV_EF_CAREFUL    (1<<16)        ///< consider things that violate the spec, are fast to calculate and have not been seen in the wild as errors
+#define AV_EF_COMPLIANT  (1<<17)        ///< consider all spec non compliancies as errors
+#define AV_EF_AGGRESSIVE (1<<18)        ///< consider things that a sane encoder should not do as an error
 
 
     /**
@@ -2541,7 +2630,9 @@ typedef struct AVCodecContext {
 #define FF_IDCT_SIMPLEVIS     18
 #define FF_IDCT_FAAN          20
 #define FF_IDCT_SIMPLENEON    22
+#if FF_API_ARCH_ALPHA
 #define FF_IDCT_SIMPLEALPHA   23
+#endif
 
     /**
      * bits per sample/pixel from the demuxer (needed for huffyuv).
@@ -2571,7 +2662,7 @@ typedef struct AVCodecContext {
     /**
      * the picture in the bitstream
      * - encoding: Set by libavcodec.
-     * - decoding: Set by libavcodec.
+     * - decoding: unused
      */
     AVFrame *coded_frame;
 
@@ -2643,13 +2734,13 @@ typedef struct AVCodecContext {
      */
     int (*execute2)(struct AVCodecContext *c, int (*func)(struct AVCodecContext *c2, void *arg, int jobnr, int threadnr), void *arg2, int *ret, int count);
 
+#if FF_API_THREAD_OPAQUE
     /**
-     * thread opaque
-     * Can be used by execute() to store some per AVCodecContext stuff.
-     * - encoding: set by execute()
-     * - decoding: set by execute()
+     * @deprecated this field should not be used from outside of lavc
      */
+    attribute_deprecated
     void *thread_opaque;
+#endif
 
     /**
      * noise vs. sse weight for the nsse comparsion function
@@ -2736,6 +2827,11 @@ typedef struct AVCodecContext {
 #define FF_PROFILE_JPEG2000_DCINEMA_2K              3
 #define FF_PROFILE_JPEG2000_DCINEMA_4K              4
 
+
+#define FF_PROFILE_HEVC_MAIN                        1
+#define FF_PROFILE_HEVC_MAIN_10                     2
+#define FF_PROFILE_HEVC_MAIN_STILL_PICTURE          3
+
     /**
      * level
      * - encoding: Set by user.
@@ -2776,21 +2872,22 @@ typedef struct AVCodecContext {
     uint8_t *subtitle_header;
     int subtitle_header_size;
 
+#if FF_API_ERROR_RATE
     /**
-     * Simulates errors in the bitstream to test error concealment.
-     * - encoding: Set by user.
-     * - decoding: unused
+     * @deprecated use the 'error_rate' private AVOption of the mpegvideo
+     * encoders
      */
+    attribute_deprecated
     int error_rate;
+#endif
 
+#if FF_API_CODEC_PKT
     /**
-     * Current packet as passed into the decoder, to avoid having
-     * to pass the packet into every function. Currently only valid
-     * inside lavc and get/release_buffer callbacks.
-     * - decoding: set by avcodec_decode_*, read by get_buffer() for setting pkt_pts
-     * - encoding: unused
+     * @deprecated this field is not supposed to be accessed from outside lavc
      */
+    attribute_deprecated
     AVPacket *pkt;
+#endif
 
     /**
      * VBV delay coded in the last frame (in periods of a 27 MHz clock).
@@ -2857,6 +2954,48 @@ typedef struct AVCodecContext {
 #define FF_SUB_CHARENC_MODE_AUTOMATIC    0  ///< libavcodec will select the mode itself
 #define FF_SUB_CHARENC_MODE_PRE_DECODER  1  ///< the AVPacket data needs to be recoded to UTF-8 before being fed to the decoder, requires iconv
 
+    /**
+     * Skip processing alpha if supported by codec.
+     * Note that if the format uses pre-multiplied alpha (common with VP6,
+     * and recommended due to better video quality/compression)
+     * the image will look as if alpha-blended onto a black background.
+     * However for formats that do not use pre-multiplied alpha
+     * there might be serious artefacts (though e.g. libswscale currently
+     * assumes pre-multiplied alpha anyway).
+     * Code outside libavcodec should access this field using AVOptions
+     *
+     * - decoding: set by user
+     * - encoding: unused
+     */
+    int skip_alpha;
+
+    /**
+     * Number of samples to skip after a discontinuity
+     * - decoding: unused
+     * - encoding: set by libavcodec
+     */
+    int seek_preroll;
+
+#if !FF_API_DEBUG_MV
+    /**
+     * debug motion vectors
+     * Code outside libavcodec should access this field using AVOptions
+     * - encoding: Set by user.
+     * - decoding: Set by user.
+     */
+    int debug_mv;
+#define FF_DEBUG_VIS_MV_P_FOR  0x00000001 //visualize forward predicted MVs of P frames
+#define FF_DEBUG_VIS_MV_B_FOR  0x00000002 //visualize forward predicted MVs of B frames
+#define FF_DEBUG_VIS_MV_B_BACK 0x00000004 //visualize backward predicted MVs of B frames
+#endif
+
+    /**
+     * custom intra quantization matrix
+     * Code outside libavcodec should access this field using av_codec_g/set_chroma_intra_matrix()
+     * - encoding: Set by user, can be NULL.
+     * - decoding: unused.
+     */
+    uint16_t *chroma_intra_matrix;
 } AVCodecContext;
 
 AVRational av_codec_get_pkt_timebase         (const AVCodecContext *avctx);
@@ -2868,6 +3007,12 @@ void                     av_codec_set_codec_descriptor(AVCodecContext *avctx, co
 int  av_codec_get_lowres(const AVCodecContext *avctx);
 void av_codec_set_lowres(AVCodecContext *avctx, int val);
 
+int  av_codec_get_seek_preroll(const AVCodecContext *avctx);
+void av_codec_set_seek_preroll(AVCodecContext *avctx, int val);
+
+uint16_t *av_codec_get_chroma_intra_matrix(const AVCodecContext *avctx);
+void av_codec_set_chroma_intra_matrix(AVCodecContext *avctx, uint16_t *val);
+
 /**
  * AVProfile.
  */
@@ -2908,7 +3053,9 @@ typedef struct AVCodec {
     const int *supported_samplerates;       ///< array of supported audio samplerates, or NULL if unknown, array is terminated by 0
     const enum AVSampleFormat *sample_fmts; ///< array of supported sample formats, or NULL if unknown, array is terminated by -1
     const uint64_t *channel_layouts;         ///< array of support channel layouts, or NULL if unknown. array is terminated by 0
-    uint8_t max_lowres;                     ///< maximum value for lowres supported by the decoder
+#if FF_API_LOWRES
+    uint8_t max_lowres;                     ///< maximum value for lowres supported by the decoder, no direct access, use av_codec_get_max_lowres()
+#endif
     const AVClass *priv_class;              ///< AVClass for the private context
     const AVProfile *profiles;              ///< array of recognized profiles, or NULL if unknown, array is terminated by {FF_PROFILE_UNKNOWN}
 
@@ -2975,6 +3122,10 @@ typedef struct AVCodec {
     void (*flush)(AVCodecContext *);
 } AVCodec;
 
+int av_codec_get_max_lowres(const AVCodec *codec);
+
+struct MpegEncContext;
+
 /**
  * AVHWAccel.
  */
@@ -3036,6 +3187,7 @@ typedef struct AVHWAccel {
      *
      * Meaningful slice information (codec specific) is guaranteed to
      * be parsed at this point. This function is mandatory.
+     * The only exception is XvMC, that works on MB level.
      *
      * @param avctx the codec context
      * @param buf the slice data buffer base
@@ -3063,6 +3215,17 @@ typedef struct AVHWAccel {
      * AVCodecContext.release_buffer().
      */
     int priv_data_size;
+
+    /**
+     * Called for every Macroblock in a slice.
+     *
+     * XvMC uses it to replace the ff_MPV_decode_mb().
+     * Instead of decoding to raw picture, MB parameters are
+     * stored in an array provided by the video driver.
+     *
+     * @param s the mpeg context
+     */
+    void (*decode_mb)(struct MpegEncContext *s);
 } AVHWAccel;
 
 /**
@@ -3186,40 +3349,6 @@ void avcodec_register(AVCodec *codec);
  */
 void avcodec_register_all(void);
 
-
-#if FF_API_ALLOC_CONTEXT
-/**
- * Allocate an AVCodecContext and set its fields to default values.  The
- * resulting struct can be deallocated by simply calling av_free().
- *
- * @return An AVCodecContext filled with default values or NULL on failure.
- * @see avcodec_get_context_defaults
- *
- * @deprecated use avcodec_alloc_context3()
- */
-attribute_deprecated
-AVCodecContext *avcodec_alloc_context(void);
-
-/** THIS FUNCTION IS NOT YET PART OF THE PUBLIC API!
- *  we WILL change its arguments and name a few times! */
-attribute_deprecated
-AVCodecContext *avcodec_alloc_context2(enum AVMediaType);
-
-/**
- * Set the fields of the given AVCodecContext to default values.
- *
- * @param s The AVCodecContext of which the fields should be set to default values.
- * @deprecated use avcodec_get_context_defaults3
- */
-attribute_deprecated
-void avcodec_get_context_defaults(AVCodecContext *s);
-
-/** THIS FUNCTION IS NOT YET PART OF THE PUBLIC API!
- *  we WILL change its arguments and name a few times! */
-attribute_deprecated
-void avcodec_get_context_defaults2(AVCodecContext *s, enum AVMediaType);
-#endif
-
 /**
  * Allocate an AVCodecContext and set its fields to default values.  The
  * resulting struct can be deallocated by calling avcodec_close() on it followed
@@ -3279,26 +3408,27 @@ const AVClass *avcodec_get_subtitle_rect_class(void);
  * can use this AVCodecContext to decode/encode video/audio data.
  *
  * @param dest target codec context, should be initialized with
- *             avcodec_alloc_context3(), but otherwise uninitialized
+ *             avcodec_alloc_context3(NULL), but otherwise uninitialized
  * @param src source codec context
  * @return AVERROR() on error (e.g. memory allocation error), 0 on success
  */
 int avcodec_copy_context(AVCodecContext *dest, const AVCodecContext *src);
 
+#if FF_API_AVFRAME_LAVC
 /**
- * Allocate an AVFrame and set its fields to default values.  The resulting
- * struct must be freed using avcodec_free_frame().
- *
- * @return An AVFrame filled with default values or NULL on failure.
- * @see avcodec_get_frame_defaults
+ * @deprecated use av_frame_alloc()
  */
+attribute_deprecated
 AVFrame *avcodec_alloc_frame(void);
 
 /**
  * Set the fields of the given AVFrame to default values.
  *
  * @param frame The AVFrame of which the fields should be set to default values.
+ *
+ * @deprecated use av_frame_unref()
  */
+attribute_deprecated
 void avcodec_get_frame_defaults(AVFrame *frame);
 
 /**
@@ -3310,41 +3440,11 @@ void avcodec_get_frame_defaults(AVFrame *frame);
  * @warning this function does NOT free the data buffers themselves
  * (it does not know how, since they might have been allocated with
  *  a custom get_buffer()).
- */
-void avcodec_free_frame(AVFrame **frame);
-
-#if FF_API_AVCODEC_OPEN
-/**
- * Initialize the AVCodecContext to use the given AVCodec. Prior to using this
- * function the context has to be allocated.
- *
- * The functions avcodec_find_decoder_by_name(), avcodec_find_encoder_by_name(),
- * avcodec_find_decoder() and avcodec_find_encoder() provide an easy way for
- * retrieving a codec.
- *
- * @warning This function is not thread safe!
- *
- * @code
- * avcodec_register_all();
- * codec = avcodec_find_decoder(AV_CODEC_ID_H264);
- * if (!codec)
- *     exit(1);
  *
- * context = avcodec_alloc_context3(codec);
- *
- * if (avcodec_open(context, codec) < 0)
- *     exit(1);
- * @endcode
- *
- * @param avctx The context which will be set up to use the given codec.
- * @param codec The codec to use within the context.
- * @return zero on success, a negative value on error
- * @see avcodec_alloc_context3, avcodec_find_decoder, avcodec_find_encoder, avcodec_close
- *
- * @deprecated use avcodec_open2
+ * @deprecated use av_frame_free()
  */
 attribute_deprecated
-int avcodec_open(AVCodecContext *avctx, AVCodec *codec);
+void avcodec_free_frame(AVFrame **frame);
 #endif
 
 /**
@@ -3536,6 +3636,84 @@ int av_packet_merge_side_data(AVPacket *pkt);
 
 int av_packet_split_side_data(AVPacket *pkt);
 
+/**
+ * Pack a dictionary for use in side_data.
+ *
+ * @param dict The dictionary to pack.
+ * @param size pointer to store the size of the returned data
+ * @return pointer to data if successful, NULL otherwise
+ */
+uint8_t *av_packet_pack_dictionary(AVDictionary *dict, int *size);
+/**
+ * Unpack a dictionary from side_data.
+ *
+ * @param data data from side_data
+ * @param size size of the data
+ * @param dict the metadata storage dictionary
+ * @return 0 on success, < 0 on failure
+ */
+int av_packet_unpack_dictionary(const uint8_t *data, int size, AVDictionary **dict);
+
+
+/**
+ * Convenience function to free all the side data stored.
+ * All the other fields stay untouched.
+ *
+ * @param pkt packet
+ */
+void av_packet_free_side_data(AVPacket *pkt);
+
+/**
+ * Setup a new reference to the data described by a given packet
+ *
+ * If src is reference-counted, setup dst as a new reference to the
+ * buffer in src. Otherwise allocate a new buffer in dst and copy the
+ * data from src into it.
+ *
+ * All the other fields are copied from src.
+ *
+ * @see av_packet_unref
+ *
+ * @param dst Destination packet
+ * @param src Source packet
+ *
+ * @return 0 on success, a negative AVERROR on error.
+ */
+int av_packet_ref(AVPacket *dst, AVPacket *src);
+
+/**
+ * Wipe the packet.
+ *
+ * Unreference the buffer referenced by the packet and reset the
+ * remaining packet fields to their default values.
+ *
+ * @param pkt The packet to be unreferenced.
+ */
+void av_packet_unref(AVPacket *pkt);
+
+/**
+ * Move every field in src to dst and reset src.
+ *
+ * @see av_packet_unref
+ *
+ * @param src Source packet, will be reset
+ * @param dst Destination packet
+ */
+void av_packet_move_ref(AVPacket *dst, AVPacket *src);
+
+/**
+ * Copy only "properties" fields from src to dst.
+ *
+ * Properties for the purpose of this function are all the fields
+ * beside those related to the packet data (buf, data, size)
+ *
+ * @param dst Destination packet
+ * @param src Source packet
+ *
+ * @return 0 on success AVERROR on failure.
+ *
+ */
+int av_packet_copy_props(AVPacket *dst, const AVPacket *src);
 
 /**
  * @}
@@ -3575,14 +3753,20 @@ attribute_deprecated int avcodec_default_reget_buffer(AVCodecContext *s, AVFrame
  */
 int avcodec_default_get_buffer2(AVCodecContext *s, AVFrame *frame, int flags);
 
+#if FF_API_EMU_EDGE
 /**
  * Return the amount of padding in pixels which the get_buffer callback must
  * provide around the edge of the image for codecs which do not have the
  * CODEC_FLAG_EMU_EDGE flag.
  *
  * @return Required padding in pixels.
+ *
+ * @deprecated CODEC_FLAG_EMU_EDGE is deprecated, so this function is no longer
+ * needed
  */
+attribute_deprecated
 unsigned avcodec_get_edge_width(void);
+#endif
 
 /**
  * Modify width and height values so that they will result in a memory
@@ -3590,8 +3774,6 @@ unsigned avcodec_get_edge_width(void);
  * padding.
  *
  * May only be used if a codec with CODEC_CAP_DR1 has been opened.
- * If CODEC_FLAG_EMU_EDGE is not set, the dimensions must have been increased
- * according to avcodec_get_edge_width() before.
  */
 void avcodec_align_dimensions(AVCodecContext *s, int *width, int *height);
 
@@ -3601,8 +3783,6 @@ void avcodec_align_dimensions(AVCodecContext *s, int *width, int *height);
  * line sizes are a multiple of the respective linesize_align[i].
  *
  * May only be used if a codec with CODEC_CAP_DR1 has been opened.
- * If CODEC_FLAG_EMU_EDGE is not set, the dimensions must have been increased
- * according to avcodec_get_edge_width() before.
  */
 void avcodec_align_dimensions2(AVCodecContext *s, int *width, int *height,
                                int linesize_align[AV_NUM_DATA_POINTERS]);
@@ -3693,19 +3873,25 @@ attribute_deprecated int avcodec_decode_audio3(AVCodecContext *avctx, int16_t *s
  * Decode the audio frame of size avpkt->size from avpkt->data into frame.
  *
  * Some decoders may support multiple frames in a single AVPacket. Such
- * decoders would then just decode the first frame. In this case,
- * avcodec_decode_audio4 has to be called again with an AVPacket containing
- * the remaining data in order to decode the second frame, etc...
- * Even if no frames are returned, the packet needs to be fed to the decoder
- * with remaining data until it is completely consumed or an error occurs.
+ * decoders would then just decode the first frame and the return value would be
+ * less than the packet size. In this case, avcodec_decode_audio4 has to be
+ * called again with an AVPacket containing the remaining data in order to
+ * decode the second frame, etc...  Even if no frames are returned, the packet
+ * needs to be fed to the decoder with remaining data until it is completely
+ * consumed or an error occurs.
+ *
+ * Some decoders (those marked with CODEC_CAP_DELAY) have a delay between input
+ * and output. This means that for some packets they will not immediately
+ * produce decoded output and need to be flushed at the end of decoding to get
+ * all the decoded data. Flushing is done by calling this function with packets
+ * with avpkt->data set to NULL and avpkt->size set to 0 until it stops
+ * returning samples. It is safe to flush even those decoders that are not
+ * marked with CODEC_CAP_DELAY, then no samples will be returned.
  *
  * @warning The input buffer, avpkt->data must be FF_INPUT_BUFFER_PADDING_SIZE
  *          larger than the actual read bytes because some optimized bitstream
  *          readers read 32 or 64 bits at once and could read over the end.
  *
- * @note You might have to align the input buffer. The alignment requirements
- *       depend on the CPU and the decoder.
- *
  * @param      avctx the codec context
  * @param[out] frame The AVFrame in which to store decoded audio samples.
  *                   The decoder will allocate a buffer for the decoded frame by
@@ -3717,10 +3903,13 @@ attribute_deprecated int avcodec_decode_audio3(AVCodecContext *avctx, int16_t *s
  *                   to the frame if av_frame_is_writable() returns 1.
  *                   When AVCodecContext.refcounted_frames is set to 0, the returned
  *                   reference belongs to the decoder and is valid only until the
- *                   next call to this function or until closing the decoder.
- *                   The caller may not write to it.
+ *                   next call to this function or until closing or flushing the
+ *                   decoder. The caller may not write to it.
  * @param[out] got_frame_ptr Zero if no frame could be decoded, otherwise it is
- *                           non-zero.
+ *                           non-zero. Note that this field being set to zero
+ *                           does not mean that an error has occurred. For
+ *                           decoders with CODEC_CAP_DELAY set, no given decode
+ *                           call is guaranteed to produce a frame.
  * @param[in]  avpkt The input AVPacket containing the input buffer.
  *                   At least avpkt->data and avpkt->size should be set. Some
  *                   decoders might also require additional fields to be set.
@@ -3743,13 +3932,6 @@ int avcodec_decode_audio4(AVCodecContext *avctx, AVFrame *frame,
  * @warning The end of the input buffer buf should be set to 0 to ensure that
  * no overreading happens for damaged MPEG streams.
  *
- * @note You might have to align the input buffer avpkt->data.
- * The alignment requirements depend on the CPU: on some CPUs it isn't
- * necessary at all, on others it won't work at all if not aligned and on others
- * it will work but it will have an impact on performance.
- *
- * In practice, avpkt->data should have 4 byte alignment at minimum.
- *
  * @note Codecs which have the CODEC_CAP_DELAY capability set have a delay
  * between input and output, these need to be fed with avpkt->data=NULL,
  * avpkt->size=0 at the end to return the remaining frames.
@@ -3766,10 +3948,10 @@ int avcodec_decode_audio4(AVCodecContext *avctx, AVFrame *frame,
  *             to the frame if av_frame_is_writable() returns 1.
  *             When AVCodecContext.refcounted_frames is set to 0, the returned
  *             reference belongs to the decoder and is valid only until the
- *             next call to this function or until closing the decoder. The
- *             caller may not write to it.
+ *             next call to this function or until closing or flushing the
+ *             decoder. The caller may not write to it.
  *
- * @param[in] avpkt The input AVpacket containing the input buffer.
+ * @param[in] avpkt The input AVPacket containing the input buffer.
  *            You can create such packet with av_init_packet() and by then setting
  *            data and size, some decoders might in addition need other fields like
  *            flags&AV_PKT_FLAG_KEY. All decoders are designed to use the least
@@ -3792,6 +3974,14 @@ int avcodec_decode_video2(AVCodecContext *avctx, AVFrame *picture,
  * and reusing a get_buffer written for video codecs would probably perform badly
  * due to a potentially very different allocation pattern.
  *
+ * Some decoders (those marked with CODEC_CAP_DELAY) have a delay between input
+ * and output. This means that for some packets they will not immediately
+ * produce decoded output and need to be flushed at the end of decoding to get
+ * all the decoded data. Flushing is done by calling this function with packets
+ * with avpkt->data set to NULL and avpkt->size set to 0 until it stops
+ * returning subtitles. It is safe to flush even those decoders that are not
+ * marked with CODEC_CAP_DELAY, then no subtitles will be returned.
+ *
  * @param avctx the codec context
  * @param[out] sub The AVSubtitle in which the decoded subtitle will be stored, must be
                    freed with avsubtitle_free if *got_sub_ptr is set.
@@ -3960,6 +4150,14 @@ typedef struct AVCodecParserContext {
      * AV_PICTURE_STRUCTURE_TOP_FIELD.
      */
     enum AVPictureStructure picture_structure;
+
+    /**
+     * Picture number incremented in presentation or output order.
+     * This field may be reinitialized at the first picture of a new sequence.
+     *
+     * For example, this corresponds to H.264 PicOrderCnt.
+     */
+    int output_picture_number;
 } AVCodecParserContext;
 
 typedef struct AVCodecParser {
@@ -4494,7 +4692,7 @@ int avcodec_get_pix_fmt_loss(enum AVPixelFormat dst_pix_fmt, enum AVPixelFormat
  * @param[out] loss_ptr Combination of flags informing you what kind of losses will occur.
  * @return The best pixel format to convert to or -1 if none was found.
  */
-enum AVPixelFormat avcodec_find_best_pix_fmt_of_list(enum AVPixelFormat *pix_fmt_list,
+enum AVPixelFormat avcodec_find_best_pix_fmt_of_list(const enum AVPixelFormat *pix_fmt_list,
                                             enum AVPixelFormat src_pix_fmt,
                                             int has_alpha, int *loss_ptr);
 
@@ -4533,7 +4731,7 @@ enum AVPixelFormat avcodec_find_best_pix_fmt_of_2(enum AVPixelFormat dst_pix_fmt
 
 attribute_deprecated
 #if AV_HAVE_INCOMPATIBLE_LIBAV_ABI
-enum AVPixelFormat avcodec_find_best_pix_fmt2(enum AVPixelFormat *pix_fmt_list,
+enum AVPixelFormat avcodec_find_best_pix_fmt2(const enum AVPixelFormat *pix_fmt_list,
                                               enum AVPixelFormat src_pix_fmt,
                                               int has_alpha, int *loss_ptr);
 #else
@@ -4548,12 +4746,20 @@ enum AVPixelFormat avcodec_default_get_format(struct AVCodecContext *s, const en
  * @}
  */
 
+#if FF_API_SET_DIMENSIONS
+/**
+ * @deprecated this function is not supposed to be used from outside of lavc
+ */
+attribute_deprecated
 void avcodec_set_dimensions(AVCodecContext *s, int width, int height);
+#endif
 
 /**
  * Put a string representing the codec tag codec_tag in buf.
  *
+ * @param buf       buffer to place codec tag in
  * @param buf_size size in bytes of buf
+ * @param codec_tag codec tag to assign
  * @return the length of the string that would have been generated if
  * enough space had been available, excluding the trailing null
  */
@@ -4602,7 +4808,13 @@ int avcodec_fill_audio_frame(AVFrame *frame, int nb_channels,
                              int buf_size, int align);
 
 /**
- * Flush buffers, should be called when seeking or when switching to a different stream.
+ * Reset the internal decoder state / flush internal buffers. Should be called
+ * e.g. when seeking or when switching to a different stream.
+ *
+ * @note when refcounted frames are not used (i.e. avctx->refcounted_frames is 0),
+ * this invalidates the frames previously returned from the decoder. When
+ * refcounted frames are used, the decoder just releases any references it might
+ * keep internally, but the caller's reference remains valid.
  */
 void avcodec_flush_buffers(AVCodecContext *avctx);
 
@@ -4738,30 +4950,9 @@ AVBitStreamFilter *av_bitstream_filter_next(AVBitStreamFilter *f);
 
 /* memory */
 
-/**
- * Reallocate the given block if it is not large enough, otherwise do nothing.
- *
- * @see av_realloc
- */
-void *av_fast_realloc(void *ptr, unsigned int *size, size_t min_size);
-
-/**
- * Allocate a buffer, reusing the given one if large enough.
- *
- * Contrary to av_fast_realloc the current buffer contents might not be
- * preserved and on error the old buffer is freed, thus no special
- * handling to avoid memleaks is necessary.
- *
- * @param ptr pointer to pointer to already allocated buffer, overwritten with pointer to new buffer
- * @param size size of the buffer *ptr points to
- * @param min_size minimum size of *ptr buffer after returning, *ptr will be NULL and
- *                 *size 0 if an error occurred.
- */
-void av_fast_malloc(void *ptr, unsigned int *size, size_t min_size);
-
 /**
  * Same behaviour av_fast_malloc but the buffer has additional
- * FF_INPUT_BUFFER_PADDING_SIZE at the end which will will always be 0.
+ * FF_INPUT_BUFFER_PADDING_SIZE at the end which will always be 0.
  *
  * In addition the whole buffer will initially and after resizes
  * be 0-initialized so that no uninitialized data will ever appear.
index 2d20a45f8725d278fdaaa4935778372cb890bf85..0c0f9b8d8dae13c14a8cd91a1c4234b07821e916 100644 (file)
@@ -99,9 +99,11 @@ enum DCTTransformType {
 
 /**
  * Set up DCT.
+ *
  * @param nbits           size of the input array:
  *                        (1 << nbits)     for DCT-II, DCT-III and DST-I
  *                        (1 << nbits) + 1 for DCT-I
+ * @param type            the type of transform
  *
  * @note the first element of the input of DST-I is ignored
  */
index d8a8f746d9adbbab9eb36d5a16364f349a04137b..b956264f387aef53c092b6435de0cc79a612e66b 100644 (file)
@@ -34,7 +34,9 @@
     /* video codecs */
     CODEC_ID_MPEG1VIDEO,
     CODEC_ID_MPEG2VIDEO, ///< preferred ID for MPEG-1/2 video decoding
+#if FF_API_XVMC
     CODEC_ID_MPEG2VIDEO_XVMC,
+#endif
     CODEC_ID_H261,
     CODEC_ID_H263,
     CODEC_ID_RV10,
index b3d6399a655bb29e4293e192dbe041a9b7f5b1b9..2f68188c9c31ee7e7fecde4c2cab64ebd0914639 100644 (file)
 
 #include "libavcodec/version.h"
 
+// extra flags not defined in VDADecoder.h
+enum {
+    kVDADecodeInfo_Asynchronous = 1UL << 0,
+    kVDADecodeInfo_FrameDropped = 1UL << 1
+};
+
 /**
  * @defgroup lavc_codec_hwaccel_vda VDA
  * @ingroup lavc_codec_hwaccel
index 37d212cd862db33ea7a6057fcb9aea46b5fba724..e25cc42d7ec505d5e8877621c6c0b64c373a8fb3 100644 (file)
 #include <vdpau/vdpau.h>
 #include <vdpau/vdpau_x11.h>
 #include "libavutil/avconfig.h"
+#include "libavutil/attributes.h"
 
+#include "avcodec.h"
+#include "version.h"
+
+#if FF_API_BUFS_VDPAU
 union AVVDPAUPictureInfo {
     VdpPictureInfoH264        h264;
     VdpPictureInfoMPEG1Or2    mpeg;
     VdpPictureInfoVC1          vc1;
     VdpPictureInfoMPEG4Part2 mpeg4;
 };
+#endif
+
+struct AVCodecContext;
+struct AVFrame;
+
+typedef int (*AVVDPAU_Render2)(struct AVCodecContext *, struct AVFrame *,
+                               const VdpPictureInfo *, uint32_t,
+                               const VdpBitstreamBuffer *);
 
 /**
  * This structure is used to share data between the libavcodec library and
  * the client video application.
- * The user shall zero-allocate the structure and make it available as
+ * The user shall allocate the structure via the av_alloc_vdpau_hwaccel
+ * function and make it available as
  * AVCodecContext.hwaccel_context. Members can be set by the user once
  * during initialization or through each AVCodecContext.get_buffer()
  * function call. In any case, they must be valid prior to calling
  * decoding functions.
+ *
+ * The size of this structure is not a part of the public ABI and must not
+ * be used outside of libavcodec. Use av_vdpau_alloc_context() to allocate an
+ * AVVDPAUContext.
  */
 typedef struct AVVDPAUContext {
     /**
@@ -84,11 +102,13 @@ typedef struct AVVDPAUContext {
      */
     VdpDecoderRender *render;
 
+#if FF_API_BUFS_VDPAU
     /**
      * VDPAU picture information
      *
      * Set by libavcodec.
      */
+    attribute_deprecated
     union AVVDPAUPictureInfo info;
 
     /**
@@ -96,6 +116,7 @@ typedef struct AVVDPAUContext {
      *
      * Set by libavcodec.
      */
+    attribute_deprecated
     int bitstream_buffers_allocated;
 
     /**
@@ -103,6 +124,7 @@ typedef struct AVVDPAUContext {
      *
      * Set by libavcodec.
      */
+    attribute_deprecated
     int bitstream_buffers_used;
 
    /**
@@ -111,10 +133,43 @@ typedef struct AVVDPAUContext {
      *
      * Set by libavcodec.
      */
+    attribute_deprecated
     VdpBitstreamBuffer *bitstream_buffers;
+#endif
+    AVVDPAU_Render2 render2;
 } AVVDPAUContext;
 
+/**
+ * @brief allocation function for AVVDPAUContext
+ *
+ * Allows extending the struct without breaking API/ABI
+ */
+AVVDPAUContext *av_alloc_vdpaucontext(void);
+
+AVVDPAU_Render2 av_vdpau_hwaccel_get_render2(const AVVDPAUContext *);
+void av_vdpau_hwaccel_set_render2(AVVDPAUContext *, AVVDPAU_Render2);
 
+/**
+ * Allocate an AVVDPAUContext.
+ *
+ * @return Newly-allocated AVVDPAUContext or NULL on failure.
+ */
+AVVDPAUContext *av_vdpau_alloc_context(void);
+
+/**
+ * Get a decoder profile that should be used for initializing a VDPAU decoder.
+ * Should be called from the AVCodecContext.get_format() callback.
+ *
+ * @param avctx the codec context being used for decoding the stream
+ * @param profile a pointer into which the result will be written on success.
+ *                The contents of profile are undefined if this function returns
+ *                an error.
+ *
+ * @return 0 on success (non-negative), a negative AVERROR on failure.
+ */
+int av_vdpau_get_profile(AVCodecContext *avctx, VdpDecoderProfile *profile);
+
+#if FF_API_CAP_VDPAU
 /** @brief The videoSurface is used for rendering. */
 #define FF_VDPAU_STATE_USED_FOR_RENDER 1
 
@@ -153,6 +208,7 @@ struct vdpau_render_state {
     union AVVDPAUPictureInfo info;
 #endif
 };
+#endif
 
 /* @}*/
 
index 06777bf3a0c05d6a7b2bd1e7b908ff67f12c85ac..61a7968524549a99111b29602bca2fc46ce47a73 100644 (file)
  * Libavcodec version macros.
  */
 
-#include "libavutil/avutil.h"
+#include "libavutil/version.h"
 
 #define LIBAVCODEC_VERSION_MAJOR 55
-#define LIBAVCODEC_VERSION_MINOR  19
-#define LIBAVCODEC_VERSION_MICRO 100
+#define LIBAVCODEC_VERSION_MINOR  52
+#define LIBAVCODEC_VERSION_MICRO 102
 
 #define LIBAVCODEC_VERSION_INT  AV_VERSION_INT(LIBAVCODEC_VERSION_MAJOR, \
                                                LIBAVCODEC_VERSION_MINOR, \
 #ifndef FF_API_REQUEST_CHANNELS
 #define FF_API_REQUEST_CHANNELS (LIBAVCODEC_VERSION_MAJOR < 56)
 #endif
-#ifndef FF_API_ALLOC_CONTEXT
-#define FF_API_ALLOC_CONTEXT    (LIBAVCODEC_VERSION_MAJOR < 55)
-#endif
-#ifndef FF_API_AVCODEC_OPEN
-#define FF_API_AVCODEC_OPEN     (LIBAVCODEC_VERSION_MAJOR < 55)
-#endif
 #ifndef FF_API_OLD_DECODE_AUDIO
 #define FF_API_OLD_DECODE_AUDIO (LIBAVCODEC_VERSION_MAJOR < 56)
 #endif
-#ifndef FF_API_OLD_TIMECODE
-#define FF_API_OLD_TIMECODE (LIBAVCODEC_VERSION_MAJOR < 55)
-#endif
-
 #ifndef FF_API_OLD_ENCODE_AUDIO
 #define FF_API_OLD_ENCODE_AUDIO (LIBAVCODEC_VERSION_MAJOR < 56)
 #endif
 #ifndef FF_API_CODEC_ID
 #define FF_API_CODEC_ID          (LIBAVCODEC_VERSION_MAJOR < 56)
 #endif
+#ifndef FF_API_AUDIO_CONVERT
+#define FF_API_AUDIO_CONVERT     (LIBAVCODEC_VERSION_MAJOR < 56)
+#endif
 #ifndef FF_API_AVCODEC_RESAMPLE
-#define FF_API_AVCODEC_RESAMPLE  (LIBAVCODEC_VERSION_MAJOR < 56)
+#define FF_API_AVCODEC_RESAMPLE  FF_API_AUDIO_CONVERT
 #endif
 #ifndef FF_API_DEINTERLACE
 #define FF_API_DEINTERLACE       (LIBAVCODEC_VERSION_MAJOR < 56)
 #ifndef FF_API_LOWRES
 #define FF_API_LOWRES            (LIBAVCODEC_VERSION_MAJOR < 56)
 #endif
+#ifndef FF_API_CAP_VDPAU
+#define FF_API_CAP_VDPAU         (LIBAVCODEC_VERSION_MAJOR < 56)
+#endif
+#ifndef FF_API_BUFS_VDPAU
+#define FF_API_BUFS_VDPAU        (LIBAVCODEC_VERSION_MAJOR < 56)
+#endif
+#ifndef FF_API_VOXWARE
+#define FF_API_VOXWARE           (LIBAVCODEC_VERSION_MAJOR < 56)
+#endif
+#ifndef FF_API_SET_DIMENSIONS
+#define FF_API_SET_DIMENSIONS    (LIBAVCODEC_VERSION_MAJOR < 56)
+#endif
+#ifndef FF_API_DEBUG_MV
+#define FF_API_DEBUG_MV          (LIBAVCODEC_VERSION_MAJOR < 56)
+#endif
+#ifndef FF_API_AC_VLC
+#define FF_API_AC_VLC            (LIBAVCODEC_VERSION_MAJOR < 56)
+#endif
+#ifndef FF_API_OLD_MSMPEG4
+#define FF_API_OLD_MSMPEG4       (LIBAVCODEC_VERSION_MAJOR < 56)
+#endif
+#ifndef FF_API_ASPECT_EXTENDED
+#define FF_API_ASPECT_EXTENDED   (LIBAVCODEC_VERSION_MAJOR < 56)
+#endif
+#ifndef FF_API_THREAD_OPAQUE
+#define FF_API_THREAD_OPAQUE     (LIBAVCODEC_VERSION_MAJOR < 56)
+#endif
+#ifndef FF_API_CODEC_PKT
+#define FF_API_CODEC_PKT         (LIBAVCODEC_VERSION_MAJOR < 56)
+#endif
+#ifndef FF_API_ARCH_ALPHA
+#define FF_API_ARCH_ALPHA        (LIBAVCODEC_VERSION_MAJOR < 56)
+#endif
+#ifndef FF_API_XVMC
+#define FF_API_XVMC              (LIBAVCODEC_VERSION_MAJOR < 56)
+#endif
+#ifndef FF_API_ERROR_RATE
+#define FF_API_ERROR_RATE        (LIBAVCODEC_VERSION_MAJOR < 56)
+#endif
+#ifndef FF_API_QSCALE_TYPE
+#define FF_API_QSCALE_TYPE       (LIBAVCODEC_VERSION_MAJOR < 56)
+#endif
+#ifndef FF_API_MB_TYPE
+#define FF_API_MB_TYPE           (LIBAVCODEC_VERSION_MAJOR < 56)
+#endif
+#ifndef FF_API_MAX_BFRAMES
+#define FF_API_MAX_BFRAMES       (LIBAVCODEC_VERSION_MAJOR < 56)
+#endif
+#ifndef FF_API_FAST_MALLOC
+#define FF_API_FAST_MALLOC       (LIBAVCODEC_VERSION_MAJOR < 56)
+#endif
+#ifndef FF_API_NEG_LINESIZES
+#define FF_API_NEG_LINESIZES     (LIBAVCODEC_VERSION_MAJOR < 56)
+#endif
+#ifndef FF_API_EMU_EDGE
+#define FF_API_EMU_EDGE          (LIBAVCODEC_VERSION_MAJOR < 56)
+#endif
 
 #endif /* AVCODEC_VERSION_H */
index b2bf518d0cf7ea8eb404d091a1863ceb15ab83c1..c2e187cc16e0ee3e08bde97aefbb391e804803ed 100644 (file)
@@ -29,6 +29,8 @@
 
 #include <X11/extensions/XvMC.h>
 
+#include "libavutil/attributes.h"
+#include "version.h"
 #include "avcodec.h"
 
 /**
@@ -41,7 +43,7 @@
 #define AV_XVMC_ID                    0x1DC711C0  /**< special value to ensure that regular pixel routines haven't corrupted the struct
                                                        the number is 1337 speak for the letters IDCT MCo (motion compensation) */
 
-struct xvmc_pix_fmt {
+attribute_deprecated struct xvmc_pix_fmt {
     /** The field contains the special constant value AV_XVMC_ID.
         It is used as a test that the application correctly uses the API,
         and that there is no corruption caused by pixel routines.
index 93a044f27078bd06c9a7dae7f8c380d96530a014..28344ca161f18b9cdb620a9a048c0e2ad8d27a03 100644 (file)
@@ -66,4 +66,168 @@ const char *avdevice_license(void);
  */
 void avdevice_register_all(void);
 
+typedef struct AVDeviceRect {
+    int x;      /**< x coordinate of top left corner */
+    int y;      /**< y coordinate of top left corner */
+    int width;  /**< width */
+    int height; /**< height */
+} AVDeviceRect;
+
+/**
+ * Message types used by avdevice_app_to_dev_control_message().
+ */
+enum AVAppToDevMessageType {
+    /**
+     * Dummy message.
+     */
+    AV_APP_TO_DEV_NONE = MKBETAG('N','O','N','E'),
+
+    /**
+     * Window size change message.
+     *
+     * Message is sent to the device every time the application changes the size
+     * of the window device renders to.
+     * Message should also be sent right after window is created.
+     *
+     * data: AVDeviceRect: new window size.
+     */
+    AV_APP_TO_DEV_WINDOW_SIZE = MKBETAG('G','E','O','M'),
+
+    /**
+     * Repaint request message.
+     *
+     * Message is sent to the device when window have to be rapainted.
+     *
+     * data: AVDeviceRect: area required to be repainted.
+     *       NULL: whole area is required to be repainted.
+     */
+    AV_APP_TO_DEV_WINDOW_REPAINT = MKBETAG('R','E','P','A')
+};
+
+/**
+ * Message types used by avdevice_dev_to_app_control_message().
+ */
+enum AVDevToAppMessageType {
+    /**
+     * Dummy message.
+     */
+    AV_DEV_TO_APP_NONE = MKBETAG('N','O','N','E'),
+
+    /**
+     * Create window buffer message.
+     *
+     * Device requests to create a window buffer. Exact meaning is device-
+     * and application-dependent. Message is sent before rendering first
+     * frame and all one-shot initializations should be done here.
+     * Application is allowed to ignore preferred window buffer size.
+     *
+     * @note: Application is obligated to inform about window buffer size
+     *        with AV_APP_TO_DEV_WINDOW_SIZE message.
+     *
+     * data: AVDeviceRect: preferred size of the window buffer.
+     *       NULL: no preferred size of the window buffer.
+     */
+    AV_DEV_TO_APP_CREATE_WINDOW_BUFFER = MKBETAG('B','C','R','E'),
+
+    /**
+     * Prepare window buffer message.
+     *
+     * Device requests to prepare a window buffer for rendering.
+     * Exact meaning is device- and application-dependent.
+     * Message is sent before rendering of each frame.
+     *
+     * data: NULL.
+     */
+    AV_DEV_TO_APP_PREPARE_WINDOW_BUFFER = MKBETAG('B','P','R','E'),
+
+    /**
+     * Display window buffer message.
+     *
+     * Device requests to display a window buffer.
+     * Message is sent when new frame is ready to be displyed.
+     * Usually buffers need to be swapped in handler of this message.
+     *
+     * data: NULL.
+     */
+    AV_DEV_TO_APP_DISPLAY_WINDOW_BUFFER = MKBETAG('B','D','I','S'),
+
+    /**
+     * Destroy window buffer message.
+     *
+     * Device requests to destroy a window buffer.
+     * Message is sent when device is about to be destroyed and window
+     * buffer is not required anymore.
+     *
+     * data: NULL.
+     */
+    AV_DEV_TO_APP_DESTROY_WINDOW_BUFFER = MKBETAG('B','D','E','S')
+};
+
+/**
+ * Send control message from application to device.
+ *
+ * @param s         device context.
+ * @param type      message type.
+ * @param data      message data. Exact type depends on message type.
+ * @param data_size size of message data.
+ * @return >= 0 on success, negative on error.
+ *         AVERROR(ENOSYS) when device doesn't implement handler of the message.
+ */
+int avdevice_app_to_dev_control_message(struct AVFormatContext *s,
+                                        enum AVAppToDevMessageType type,
+                                        void *data, size_t data_size);
+
+/**
+ * Send control message from device to application.
+ *
+ * @param s         device context.
+ * @param type      message type.
+ * @param data      message data. Can be NULL.
+ * @param data_size size of message data.
+ * @return >= 0 on success, negative on error.
+ *         AVERROR(ENOSYS) when application doesn't implement handler of the message.
+ */
+int avdevice_dev_to_app_control_message(struct AVFormatContext *s,
+                                        enum AVDevToAppMessageType type,
+                                        void *data, size_t data_size);
+
+/**
+ * Structure describes basic parameters of the device.
+ */
+typedef struct AVDeviceInfo {
+    char *device_name;                   /**< device name, format depends on device */
+    char *device_description;            /**< human friendly name */
+} AVDeviceInfo;
+
+/**
+ * List of devices.
+ */
+typedef struct AVDeviceInfoList {
+    AVDeviceInfo **devices;              /**< list of autodetected devices */
+    int nb_devices;                      /**< number of autodetected devices */
+    int default_device;                  /**< index of default device or -1 if no default */
+} AVDeviceInfoList;
+
+/**
+ * List devices.
+ *
+ * Returns available device names and their parameters.
+ *
+ * @note: Some devices may accept system-dependent device names that cannot be
+ *        autodetected. The list returned by this function cannot be assumed to
+ *        be always completed.
+ *
+ * @param s                device context.
+ * @param[out] device_list list of autodetected devices.
+ * @return count of autodetected devices, negative on error.
+ */
+int avdevice_list_devices(struct AVFormatContext *s, AVDeviceInfoList **device_list);
+
+/**
+ * Convinient function to free result of avdevice_list_devices().
+ *
+ * @param devices device list to be freed.
+ */
+void avdevice_free_list_devices(AVDeviceInfoList **device_list);
+
 #endif /* AVDEVICE_AVDEVICE_H */
index 1e18f51d4ae4ba4b9eb0a4af1e8095c0120103d0..85b3b376621a02e9850cacc56ce54be5bf194812 100644 (file)
  * Libavdevice version macros
  */
 
-#include "libavutil/avutil.h"
+#include "libavutil/version.h"
 
 #define LIBAVDEVICE_VERSION_MAJOR  55
-#define LIBAVDEVICE_VERSION_MINOR   3
+#define LIBAVDEVICE_VERSION_MINOR  10
 #define LIBAVDEVICE_VERSION_MICRO 100
 
 #define LIBAVDEVICE_VERSION_INT AV_VERSION_INT(LIBAVDEVICE_VERSION_MAJOR, \
index ae55df78813be638e8343d7017b738f51d67aa49..8bbdad267fb7cb177ee70dba58698dd040aaa74c 100644 (file)
@@ -72,7 +72,7 @@ AVFilterBufferRef *avfilter_get_buffer_ref_from_frame(enum AVMediaType type,
  *
  * @param frame an already allocated AVFrame
  * @param samplesref an audio buffer reference
- * @return 0 in case of success, a negative AVERROR code in case of
+ * @return >= 0 in case of success, a negative AVERROR code in case of
  * failure
  * @deprecated Use avfilter_copy_buf_props() instead.
  */
@@ -85,7 +85,7 @@ int avfilter_fill_frame_from_audio_buffer_ref(AVFrame *frame,
  *
  * @param frame an already allocated AVFrame
  * @param picref a video buffer reference
- * @return 0 in case of success, a negative AVERROR code in case of
+ * @return >= 0 in case of success, a negative AVERROR code in case of
  * failure
  * @deprecated Use avfilter_copy_buf_props() instead.
  */
@@ -98,7 +98,7 @@ int avfilter_fill_frame_from_video_buffer_ref(AVFrame *frame,
  *
  * @param frame an already allocated AVFrame
  * @param ref a video or audio buffer reference
- * @return 0 in case of success, a negative AVERROR code in case of
+ * @return >= 0 in case of success, a negative AVERROR code in case of
  * failure
  * @deprecated Use avfilter_copy_buf_props() instead.
  */
index 6de0f66ae0ef0383b92ef1635ce60049aca74839..ef7e8cadcf35540ccb4d8124e42a83761827476d 100644 (file)
@@ -385,6 +385,12 @@ struct AVFilterPad {
      */
     int needs_fifo;
 
+    /**
+     * The filter expects writable frames from its input link,
+     * duplicating data buffers if needed.
+     *
+     * input pads only.
+     */
     int needs_writable;
 };
 #endif
@@ -991,6 +997,9 @@ int avfilter_register(AVFilter *filter);
  * @return     the filter definition, if any matching one is registered.
  *             NULL if none found.
  */
+#if !FF_API_NOCONST_GET_NAME
+const
+#endif
 AVFilter *avfilter_get_by_name(const char *name);
 
 /**
@@ -1126,6 +1135,35 @@ const AVClass *avfilter_get_class(void);
 
 typedef struct AVFilterGraphInternal AVFilterGraphInternal;
 
+/**
+ * A function pointer passed to the @ref AVFilterGraph.execute callback to be
+ * executed multiple times, possibly in parallel.
+ *
+ * @param ctx the filter context the job belongs to
+ * @param arg an opaque parameter passed through from @ref
+ *            AVFilterGraph.execute
+ * @param jobnr the index of the job being executed
+ * @param nb_jobs the total number of jobs
+ *
+ * @return 0 on success, a negative AVERROR on error
+ */
+typedef int (avfilter_action_func)(AVFilterContext *ctx, void *arg, int jobnr, int nb_jobs);
+
+/**
+ * A function executing multiple jobs, possibly in parallel.
+ *
+ * @param ctx the filter context to which the jobs belong
+ * @param func the function to be called multiple times
+ * @param arg the argument to be passed to func
+ * @param ret a nb_jobs-sized array to be filled with return values from each
+ *            invocation of func
+ * @param nb_jobs the number of jobs to execute
+ *
+ * @return 0 on success, a negative AVERROR on error
+ */
+typedef int (avfilter_execute_func)(AVFilterContext *ctx, avfilter_action_func *func,
+                                    void *arg, int *ret, int nb_jobs);
+
 typedef struct AVFilterGraph {
     const AVClass *av_class;
 #if FF_API_FOO_COUNT
@@ -1169,6 +1207,27 @@ typedef struct AVFilterGraph {
      */
     AVFilterGraphInternal *internal;
 
+    /**
+     * Opaque user data. May be set by the caller to an arbitrary value, e.g. to
+     * be used from callbacks like @ref AVFilterGraph.execute.
+     * Libavfilter will not touch this field in any way.
+     */
+    void *opaque;
+
+    /**
+     * This callback may be set by the caller immediately after allocating the
+     * graph and before adding any filters to it, to provide a custom
+     * multithreading implementation.
+     *
+     * If set, filters with slice threading capability will call this callback
+     * to execute multiple jobs in parallel.
+     *
+     * If this field is left unset, libavfilter will use its internal
+     * implementation, which may or may not be multithreaded depending on the
+     * platform and build options.
+     */
+    avfilter_execute_func *execute;
+
     char *aresample_swr_opts; ///< swr options to use for the auto-inserted aresample filters, Access ONLY through AVOptions
 
     /**
@@ -1242,7 +1301,7 @@ int avfilter_graph_add_filter(AVFilterGraph *graphctx, AVFilterContext *filter);
  * @return a negative AVERROR error code in case of failure, a non
  * negative value otherwise
  */
-int avfilter_graph_create_filter(AVFilterContext **filt_ctx, AVFilter *filt,
+int avfilter_graph_create_filter(AVFilterContext **filt_ctx, const AVFilter *filt,
                                  const char *name, const char *args, void *opaque,
                                  AVFilterGraph *graph_ctx);
 
@@ -1266,7 +1325,7 @@ enum {
  *
  * @param graphctx the filter graph
  * @param log_ctx context used for logging
- * @return 0 in case of success, a negative AVERROR code otherwise
+ * @return >= 0 in case of success, a negative AVERROR code otherwise
  */
 int avfilter_graph_config(AVFilterGraph *graphctx, void *log_ctx);
 
index ce96d08b361812911a6068497a6f94780632fc84..24cd2feac7ba9a712a2c87872f69a81519e1296e 100644 (file)
 
 /**
  * @file
+ * @ingroup lavfi_buffersink
  * memory buffer sink API for audio and video
  */
 
 #include "avfilter.h"
 
+/**
+ * @defgroup lavfi_buffersink Buffer sink API
+ * @ingroup lavfi
+ * @{
+ */
+
 #if FF_API_AVFILTERBUFFER
 /**
  * Get an audio/video buffer data from buffer_sink and put it in bufref.
@@ -162,8 +169,12 @@ AVRational av_buffersink_get_frame_rate(AVFilterContext *ctx);
  * @param frame pointer to an allocated frame that will be filled with data.
  *              The data must be freed using av_frame_unref() / av_frame_free()
  *
- * @return >= 0 in case of success, a negative AVERROR code in case of
- *         failure.
+ * @return
+ *         - >= 0 if a frame was successfully returned.
+ *         - AVERROR(EAGAIN) if no frames are available at this point; more
+ *           input frames must be added to the filtergraph to get more output.
+ *         - AVERROR_EOF if there will be no more output frames on this sink.
+ *         - A different negative AVERROR code in other failure cases.
  */
 int av_buffersink_get_frame(AVFilterContext *ctx, AVFrame *frame);
 
@@ -178,9 +189,16 @@ int av_buffersink_get_frame(AVFilterContext *ctx, AVFrame *frame);
  *              frame will contain exactly nb_samples audio samples, except at
  *              the end of stream, when it can contain less than nb_samples.
  *
+ * @return The return codes have the same meaning as for
+ *         av_buffersink_get_samples().
+ *
  * @warning do not mix this function with av_buffersink_get_frame(). Use only one or
  * the other with a single sink, not both.
  */
 int av_buffersink_get_samples(AVFilterContext *ctx, AVFrame *frame, int nb_samples);
 
+/**
+ * @}
+ */
+
 #endif /* AVFILTER_BUFFERSINK_H */
index 66361b3dab7098d1d0c88fb98528057645a81b97..5d124337b5aaef20ee858e850b2284b0bbf06354 100644 (file)
@@ -1,19 +1,19 @@
 /*
  *
- * This file is part of Libav.
+ * This file is part of FFmpeg.
  *
- * Libav is free software; you can redistribute it and/or
+ * 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.
  *
- * Libav is distributed in the hope that it will be useful,
+ * 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 Libav; if not, write to the Free Software
+ * License along with FFmpeg; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
 
 /**
  * @file
+ * @ingroup lavfi_buffersrc
  * Memory buffer source API.
  */
 
 #include "libavcodec/avcodec.h"
 #include "avfilter.h"
 
+/**
+ * @defgroup lavfi_buffersrc Buffer source API
+ * @ingroup lavfi
+ * @{
+ */
+
 enum {
 
     /**
@@ -79,8 +86,9 @@ unsigned av_buffersrc_get_nb_failed_requests(AVFilterContext *buffer_src);
 
 #if FF_API_AVFILTERBUFFER
 /**
- * Add a buffer to the filtergraph s.
+ * Add a buffer to a filtergraph.
  *
+ * @param ctx an instance of the buffersrc filter
  * @param buf buffer containing frame data to be passed down the filtergraph.
  * This function will take ownership of buf, the user must not free it.
  * A NULL buf signals EOF -- i.e. no more frames will be sent to this filter.
@@ -88,13 +96,13 @@ unsigned av_buffersrc_get_nb_failed_requests(AVFilterContext *buffer_src);
  * @deprecated use av_buffersrc_write_frame() or av_buffersrc_add_frame()
  */
 attribute_deprecated
-int av_buffersrc_buffer(AVFilterContext *s, AVFilterBufferRef *buf);
+int av_buffersrc_buffer(AVFilterContext *ctx, AVFilterBufferRef *buf);
 #endif
 
 /**
  * Add a frame to the buffer source.
  *
- * @param s an instance of the buffersrc filter.
+ * @param ctx   an instance of the buffersrc filter
  * @param frame frame to be added. If the frame is reference counted, this
  * function will make a new reference to it. Otherwise the frame data will be
  * copied.
@@ -104,12 +112,12 @@ int av_buffersrc_buffer(AVFilterContext *s, AVFilterBufferRef *buf);
  * This function is equivalent to av_buffersrc_add_frame_flags() with the
  * AV_BUFFERSRC_FLAG_KEEP_REF flag.
  */
-int av_buffersrc_write_frame(AVFilterContext *s, const AVFrame *frame);
+int av_buffersrc_write_frame(AVFilterContext *ctx, const AVFrame *frame);
 
 /**
  * Add a frame to the buffer source.
  *
- * @param s an instance of the buffersrc filter.
+ * @param ctx   an instance of the buffersrc filter
  * @param frame frame to be added. If the frame is reference counted, this
  * function will take ownership of the reference(s) and reset the frame.
  * Otherwise the frame data will be copied. If this function returns an error,
@@ -145,4 +153,8 @@ int av_buffersrc_add_frame_flags(AVFilterContext *buffer_src,
                                  AVFrame *frame, int flags);
 
 
+/**
+ * @}
+ */
+
 #endif /* AVFILTER_BUFFERSRC_H */
index 190ea2fdba4f42182132af90731ee25d2d465e3f..a33ab490d04eedacc25d391adde33e57b97fdf58 100644 (file)
  * Libavfilter version macros
  */
 
-#include "libavutil/avutil.h"
+#include "libavutil/version.h"
 
-#define LIBAVFILTER_VERSION_MAJOR  3
-#define LIBAVFILTER_VERSION_MINOR  82
+#define LIBAVFILTER_VERSION_MAJOR   4
+#define LIBAVFILTER_VERSION_MINOR   2
 #define LIBAVFILTER_VERSION_MICRO 100
 
 #define LIBAVFILTER_VERSION_INT AV_VERSION_INT(LIBAVFILTER_VERSION_MAJOR, \
  */
 
 #ifndef FF_API_AVFILTERPAD_PUBLIC
-#define FF_API_AVFILTERPAD_PUBLIC           (LIBAVFILTER_VERSION_MAJOR < 4)
+#define FF_API_AVFILTERPAD_PUBLIC           (LIBAVFILTER_VERSION_MAJOR < 5)
 #endif
 #ifndef FF_API_FOO_COUNT
-#define FF_API_FOO_COUNT                    (LIBAVFILTER_VERSION_MAJOR < 4)
+#define FF_API_FOO_COUNT                    (LIBAVFILTER_VERSION_MAJOR < 5)
 #endif
 #ifndef FF_API_FILL_FRAME
-#define FF_API_FILL_FRAME                   (LIBAVFILTER_VERSION_MAJOR < 4)
+#define FF_API_FILL_FRAME                   (LIBAVFILTER_VERSION_MAJOR < 5)
 #endif
 #ifndef FF_API_BUFFERSRC_BUFFER
-#define FF_API_BUFFERSRC_BUFFER             (LIBAVFILTER_VERSION_MAJOR < 4)
+#define FF_API_BUFFERSRC_BUFFER             (LIBAVFILTER_VERSION_MAJOR < 5)
 #endif
 #ifndef FF_API_AVFILTERBUFFER
-#define FF_API_AVFILTERBUFFER               (LIBAVFILTER_VERSION_MAJOR < 4)
+#define FF_API_AVFILTERBUFFER               (LIBAVFILTER_VERSION_MAJOR < 5)
 #endif
 #ifndef FF_API_OLD_FILTER_OPTS
-#define FF_API_OLD_FILTER_OPTS              (LIBAVFILTER_VERSION_MAJOR < 4)
+#define FF_API_OLD_FILTER_OPTS              (LIBAVFILTER_VERSION_MAJOR < 5)
 #endif
 #ifndef FF_API_ACONVERT_FILTER
-#define FF_API_ACONVERT_FILTER              (LIBAVFILTER_VERSION_MAJOR < 4)
+#define FF_API_ACONVERT_FILTER              (LIBAVFILTER_VERSION_MAJOR < 5)
 #endif
 #ifndef FF_API_AVFILTER_OPEN
-#define FF_API_AVFILTER_OPEN                (LIBAVFILTER_VERSION_MAJOR < 4)
+#define FF_API_AVFILTER_OPEN                (LIBAVFILTER_VERSION_MAJOR < 5)
 #endif
 #ifndef FF_API_AVFILTER_INIT_FILTER
-#define FF_API_AVFILTER_INIT_FILTER         (LIBAVFILTER_VERSION_MAJOR < 4)
+#define FF_API_AVFILTER_INIT_FILTER         (LIBAVFILTER_VERSION_MAJOR < 5)
 #endif
 #ifndef FF_API_OLD_FILTER_REGISTER
-#define FF_API_OLD_FILTER_REGISTER          (LIBAVFILTER_VERSION_MAJOR < 4)
+#define FF_API_OLD_FILTER_REGISTER          (LIBAVFILTER_VERSION_MAJOR < 5)
 #endif
 #ifndef FF_API_OLD_GRAPH_PARSE
-#define FF_API_OLD_GRAPH_PARSE              (LIBAVFILTER_VERSION_MAJOR < 4)
+#define FF_API_OLD_GRAPH_PARSE              (LIBAVFILTER_VERSION_MAJOR < 5)
+#endif
+#ifndef FF_API_DRAWTEXT_OLD_TIMELINE
+#define FF_API_DRAWTEXT_OLD_TIMELINE        (LIBAVFILTER_VERSION_MAJOR < 5)
+#endif
+#ifndef FF_API_NOCONST_GET_NAME
+#define FF_API_NOCONST_GET_NAME             (LIBAVFILTER_VERSION_MAJOR < 5)
+#endif
+#ifndef FF_API_INTERLACE_LOWPASS_SET
+#define FF_API_INTERLACE_LOWPASS_SET        (LIBAVFILTER_VERSION_MAJOR < 5)
 #endif
 
 #endif /* AVFILTER_VERSION_H */
index d5f8a2986906561592cb05e56bb0cd684263979f..7839c0adc5b4a281f9e42d84a5204a2a99f9c8ca 100644 (file)
  *
  * @defgroup lavf_encoding Muxing
  * @{
+ * Muxers take encoded data in the form of @ref AVPacket "AVPackets" and write
+ * it into files or other output bytestreams in the specified container format.
+ *
+ * The main API functions for muxing are avformat_write_header() for writing the
+ * file header, av_write_frame() / av_interleaved_write_frame() for writing the
+ * packets and av_write_trailer() for finalizing the file.
+ *
+ * At the beginning of the muxing process, the caller must first call
+ * avformat_alloc_context() to create a muxing context. The caller then sets up
+ * the muxer by filling the various fields in this context:
+ *
+ * - The @ref AVFormatContext.oformat "oformat" field must be set to select the
+ *   muxer that will be used.
+ * - Unless the format is of the AVFMT_NOFILE type, the @ref AVFormatContext.pb
+ *   "pb" field must be set to an opened IO context, either returned from
+ *   avio_open2() or a custom one.
+ * - Unless the format is of the AVFMT_NOSTREAMS type, at least one stream must
+ *   be created with the avformat_new_stream() function. The caller should fill
+ *   the @ref AVStream.codec "stream codec context" information, such as the
+ *   codec @ref AVCodecContext.codec_type "type", @ref AVCodecContext.codec_id
+ *   "id" and other parameters (e.g. width / height, the pixel or sample format,
+ *   etc.) as known. The @ref AVCodecContext.time_base "codec timebase" should
+ *   be set to the timebase that the caller desires to use for this stream (note
+ *   that the timebase actually used by the muxer can be different, as will be
+ *   described later).
+ * - The caller may fill in additional information, such as @ref
+ *   AVFormatContext.metadata "global" or @ref AVStream.metadata "per-stream"
+ *   metadata, @ref AVFormatContext.chapters "chapters", @ref
+ *   AVFormatContext.programs "programs", etc. as described in the
+ *   AVFormatContext documentation. Whether such information will actually be
+ *   stored in the output depends on what the container format and the muxer
+ *   support.
+ *
+ * When the muxing context is fully set up, the caller must call
+ * avformat_write_header() to initialize the muxer internals and write the file
+ * header. Whether anything actually is written to the IO context at this step
+ * depends on the muxer, but this function must always be called. Any muxer
+ * private options must be passed in the options parameter to this function.
+ *
+ * The data is then sent to the muxer by repeatedly calling av_write_frame() or
+ * av_interleaved_write_frame() (consult those functions' documentation for
+ * discussion on the difference between them; only one of them may be used with
+ * a single muxing context, they should not be mixed). Do note that the timing
+ * information on the packets sent to the muxer must be in the corresponding
+ * AVStream's timebase. That timebase is set by the muxer (in the
+ * avformat_write_header() step) and may be different from the timebase the
+ * caller set on the codec context.
+ *
+ * Once all the data has been written, the caller must call av_write_trailer()
+ * to flush any buffered packets and finalize the output file, then close the IO
+ * context (if any) and finally free the muxing context with
+ * avformat_free_context().
  * @}
  *
  * @defgroup lavf_io I/O Read/Write
 
 struct AVFormatContext;
 
+struct AVDeviceInfoList;
 
 /**
  * @defgroup metadata_api Public Metadata API
@@ -290,6 +343,7 @@ struct AVFormatContext;
  * Allocate and read the payload of a packet and initialize its
  * fields with default values.
  *
+ * @param s    associated IO context
  * @param pkt packet
  * @param size desired payload size
  * @return >0 (read size) if OK, AVERROR_xxx otherwise
@@ -305,6 +359,7 @@ int av_get_packet(AVIOContext *s, AVPacket *pkt, int size);
  * when there is no reasonable way to know (an upper bound of)
  * the final size.
  *
+ * @param s    associated IO context
  * @param pkt packet
  * @param size amount of data to read
  * @return >0 (read size) if OK, AVERROR_xxx otherwise, previous data
@@ -338,6 +393,8 @@ typedef struct AVProbeData {
 } AVProbeData;
 
 #define AVPROBE_SCORE_RETRY (AVPROBE_SCORE_MAX/4)
+#define AVPROBE_SCORE_STREAM_RETRY (AVPROBE_SCORE_MAX/4-1)
+
 #define AVPROBE_SCORE_EXTENSION  50 ///< score for file extension
 #define AVPROBE_SCORE_MAX       100 ///< maximum score
 
@@ -453,6 +510,27 @@ typedef struct AVOutputFormat {
 
     void (*get_output_timestamp)(struct AVFormatContext *s, int stream,
                                  int64_t *dts, int64_t *wall);
+    /**
+     * Allows sending messages from application to device.
+     */
+    int (*control_message)(struct AVFormatContext *s, int type,
+                           void *data, size_t data_size);
+
+    /**
+     * Write an uncoded AVFrame.
+     *
+     * See av_write_uncoded_frame() for details.
+     *
+     * The library will free *frame afterwards, but the muxer can prevent it
+     * by setting the pointer to NULL.
+     */
+    int (*write_uncoded_frame)(struct AVFormatContext *, int stream_index,
+                               AVFrame **frame, unsigned flags);
+    /**
+     * Returns device list with it properties.
+     * @see avdevice_list_devices() for more details.
+     */
+    int (*get_device_list)(struct AVFormatContext *s, struct AVDeviceInfoList *device_list);
 } AVOutputFormat;
 /**
  * @}
@@ -581,6 +659,12 @@ typedef struct AVInputFormat {
      * Active streams are all streams that have AVStream.discard < AVDISCARD_ALL.
      */
     int (*read_seek2)(struct AVFormatContext *s, int stream_index, int64_t min_ts, int64_t ts, int64_t max_ts, int flags);
+
+    /**
+     * Returns device list with it properties.
+     * @see avdevice_list_devices() for more details.
+     */
+    int (*get_device_list)(struct AVFormatContext *s, struct AVDeviceInfoList *device_list);
 } AVInputFormat;
 /**
  * @}
@@ -756,9 +840,16 @@ typedef struct AVStream {
         int64_t last_dts;
         int64_t duration_gcd;
         int duration_count;
+        int64_t rfps_duration_sum;
         double (*duration_error)[2][MAX_STD_TIMEBASES];
         int64_t codec_info_duration;
         int64_t codec_info_duration_fields;
+
+        /**
+         * 0  -> decoder has not been searched for yet.
+         * >0 -> decoder found
+         * <0 -> decoder with codec_id == -found_decoder has not been found
+         */
         int found_decoder;
 
         int64_t last_duration;
@@ -775,6 +866,11 @@ typedef struct AVStream {
 
     int pts_wrap_bits; /**< number of bits in pts (used for wrapping control) */
 
+#if FF_API_REFERENCE_DTS
+    /* a hack to keep ABI compatibility for ffmpeg and other applications, which accesses parser even
+     * though it should not */
+    int64_t do_not_use;
+#endif
     // Timestamp generation support:
     /**
      * Timestamp corresponding to the last dts sync point.
@@ -783,7 +879,6 @@ typedef struct AVStream {
      * a DTS is received from the underlying container. Otherwise set to
      * AV_NOPTS_VALUE by default.
      */
-    int64_t reference_dts;
     int64_t first_dts;
     int64_t cur_dts;
     int64_t last_IP_pts;
@@ -888,6 +983,24 @@ typedef struct AVStream {
      */
     int pts_wrap_behavior;
 
+    /**
+     * Internal data to prevent doing update_initial_durations() twice
+     */
+    int update_initial_durations_done;
+
+    /**
+     * Internal data to generate dts from pts
+     */
+    int64_t pts_reorder_error[MAX_REORDER_DELAY+1];
+    uint8_t pts_reorder_error_count[MAX_REORDER_DELAY+1];
+
+    /**
+     * Internal data to analyze DTS and detect faulty mpeg streams
+     */
+    int64_t last_dts_for_order_check;
+    uint8_t dts_ordered;
+    uint8_t dts_misordered;
+
 } AVStream;
 
 AVRational av_stream_get_r_frame_rate(const AVStream *s);
@@ -938,6 +1051,13 @@ typedef struct AVChapter {
 } AVChapter;
 
 
+/**
+ * Callback used by devices to communicate with application.
+ */
+typedef int (*av_format_control_message)(struct AVFormatContext *s, int type,
+                                         void *data, size_t data_size);
+
+
 /**
  * The duration of a video can be estimated through various ways, and this enum can be used
  * to know how the duration was estimated.
@@ -948,6 +1068,8 @@ enum AVDurationEstimationMethod {
     AVFMT_DURATION_FROM_BITRATE ///< Duration estimated from bitrate (less accurate)
 };
 
+typedef struct AVFormatInternal AVFormatInternal;
+
 /**
  * Format I/O context.
  * New fields can be added to the end with minor version bumps.
@@ -958,32 +1080,41 @@ enum AVDurationEstimationMethod {
  */
 typedef struct AVFormatContext {
     /**
-     * A class for logging and AVOptions. Set by avformat_alloc_context().
+     * A class for logging and @ref avoptions. Set by avformat_alloc_context().
      * Exports (de)muxer private options if they exist.
      */
     const AVClass *av_class;
 
     /**
-     * Can only be iformat or oformat, not both at the same time.
+     * The input container format.
      *
-     * decoding: set by avformat_open_input().
-     * encoding: set by the user.
+     * Demuxing only, set by avformat_open_input().
      */
     struct AVInputFormat *iformat;
+
+    /**
+     * The output container format.
+     *
+     * Muxing only, must be set by the caller before avformat_write_header().
+     */
     struct AVOutputFormat *oformat;
 
     /**
      * Format private data. This is an AVOptions-enabled struct
      * if and only if iformat/oformat.priv_class is not NULL.
+     *
+     * - muxing: set by avformat_write_header()
+     * - demuxing: set by avformat_open_input()
      */
     void *priv_data;
 
     /**
      * I/O context.
      *
-     * decoding: either set by the user before avformat_open_input() (then
-     * the user must close it manually) or set by avformat_open_input().
-     * encoding: set by the user.
+     * - demuxing: either set by the user before avformat_open_input() (then
+     *             the user must close it manually) or set by avformat_open_input().
+     * - muxing: set by the user before avformat_write_header(). The caller must
+     *           take care of closing / freeing the IO context.
      *
      * Do NOT set this field if AVFMT_NOFILE flag is set in
      * iformat/oformat.flags. In such a case, the (de)muxer will handle
@@ -994,37 +1125,54 @@ typedef struct AVFormatContext {
     /* stream info */
     int ctx_flags; /**< Format-specific flags, see AVFMTCTX_xx */
 
+    /**
+     * Number of elements in AVFormatContext.streams.
+     *
+     * Set by avformat_new_stream(), must not be modified by any other code.
+     */
+    unsigned int nb_streams;
     /**
      * A list of all streams in the file. New streams are created with
      * avformat_new_stream().
      *
-     * decoding: streams are created by libavformat in avformat_open_input().
-     * If AVFMTCTX_NOHEADER is set in ctx_flags, then new streams may also
-     * appear in av_read_frame().
-     * encoding: streams are created by the user before avformat_write_header().
+     * - demuxing: streams are created by libavformat in avformat_open_input().
+     *             If AVFMTCTX_NOHEADER is set in ctx_flags, then new streams may also
+     *             appear in av_read_frame().
+     * - muxing: streams are created by the user before avformat_write_header().
+     *
+     * Freed by libavformat in avformat_free_context().
      */
-    unsigned int nb_streams;
     AVStream **streams;
 
-    char filename[1024]; /**< input or output filename */
+    /**
+     * input or output filename
+     *
+     * - demuxing: set by avformat_open_input()
+     * - muxing: may be set by the caller before avformat_write_header()
+     */
+    char filename[1024];
 
     /**
-     * Decoding: position of the first frame of the component, in
+     * Position of the first frame of the component, in
      * AV_TIME_BASE fractional seconds. NEVER set this value directly:
      * It is deduced from the AVStream values.
+     *
+     * Demuxing only, set by libavformat.
      */
     int64_t start_time;
 
     /**
-     * Decoding: duration of the stream, in AV_TIME_BASE fractional
+     * Duration of the stream, in AV_TIME_BASE fractional
      * seconds. Only set this value if you know none of the individual stream
      * durations and also do not set any of them. This is deduced from the
      * AVStream values if not set.
+     *
+     * Demuxing only, set by libavformat.
      */
     int64_t duration;
 
     /**
-     * Decoding: total stream bitrate in bit/s, 0 if not
+     * Total stream bitrate in bit/s, 0 if not
      * available. Never set it directly if the file_size and the
      * duration are known as FFmpeg can compute it automatically.
      */
@@ -1043,19 +1191,23 @@ typedef struct AVFormatContext {
 #define AVFMT_FLAG_NOBUFFER     0x0040 ///< Do not buffer frames when possible
 #define AVFMT_FLAG_CUSTOM_IO    0x0080 ///< The caller has supplied a custom AVIOContext, don't avio_close() it.
 #define AVFMT_FLAG_DISCARD_CORRUPT  0x0100 ///< Discard frames marked corrupted
+#define AVFMT_FLAG_FLUSH_PACKETS    0x0200 ///< Flush the AVIOContext every packet.
 #define AVFMT_FLAG_MP4A_LATM    0x8000 ///< Enable RTP MP4A-LATM payload
 #define AVFMT_FLAG_SORT_DTS    0x10000 ///< try to interleave outputted packets by dts (using this flag can slow demuxing down)
 #define AVFMT_FLAG_PRIV_OPT    0x20000 ///< Enable use of private options by delaying codec open (this could be made default once all code is converted)
 #define AVFMT_FLAG_KEEP_SIDE_DATA 0x40000 ///< Don't merge side data but keep it separate.
 
     /**
-     * decoding: size of data to probe; encoding: unused.
+     * Maximum size of the data read from input for determining
+     * the input container format.
+     * Demuxing only, set by the caller before avformat_open_input().
      */
     unsigned int probesize;
 
     /**
-     * decoding: maximum time (in AV_TIME_BASE units) during which the input should
-     * be analyzed in avformat_find_stream_info().
+     * Maximum duration (in AV_TIME_BASE units) of the data read
+     * from input in avformat_find_stream_info().
+     * Demuxing only, set by the caller before avformat_find_stream_info().
      */
     int max_analyze_duration;
 
@@ -1090,8 +1242,8 @@ typedef struct AVFormatContext {
      * accurate seeking (depends on demuxer).
      * Demuxers for which a full in-memory index is mandatory will ignore
      * this.
-     * muxing  : unused
-     * demuxing: set by user
+     * - muxing: unused
+     * demuxing: set by user
      */
     unsigned int max_index_size;
 
@@ -1101,38 +1253,57 @@ typedef struct AVFormatContext {
      */
     unsigned int max_picture_buffer;
 
+    /**
+     * Number of chapters in AVChapter array.
+     * When muxing, chapters are normally written in the file header,
+     * so nb_chapters should normally be initialized before write_header
+     * is called. Some muxers (e.g. mov and mkv) can also write chapters
+     * in the trailer.  To write chapters in the trailer, nb_chapters
+     * must be zero when write_header is called and non-zero when
+     * write_trailer is called.
+     * - muxing: set by user
+     * - demuxing: set by libavformat
+     */
     unsigned int nb_chapters;
     AVChapter **chapters;
 
+    /**
+     * Metadata that applies to the whole file.
+     *
+     * - demuxing: set by libavformat in avformat_open_input()
+     * - muxing: may be set by the caller before avformat_write_header()
+     *
+     * Freed by libavformat in avformat_free_context().
+     */
     AVDictionary *metadata;
 
     /**
      * Start time of the stream in real world time, in microseconds
-     * since the unix epoch (00:00 1st January 1970). That is, pts=0
-     * in the stream was captured at this real world time.
-     * - encoding: Set by user.
-     * - decoding: Unused.
+     * since the Unix epoch (00:00 1st January 1970). That is, pts=0 in the
+     * stream was captured at this real world time.
+     * Muxing only, set by the caller before avformat_write_header().
      */
     int64_t start_time_realtime;
 
     /**
-     * decoding: number of frames used to probe fps
+     * The number of frames used for determining the framerate in
+     * avformat_find_stream_info().
+     * Demuxing only, set by the caller before avformat_find_stream_info().
      */
     int fps_probe_size;
 
     /**
      * Error recognition; higher values will detect more errors but may
      * misdetect some more or less valid parts as errors.
-     * - encoding: unused
-     * - decoding: Set by user.
+     * Demuxing only, set by the caller before avformat_open_input().
      */
     int error_recognition;
 
     /**
      * Custom interrupt callbacks for the I/O layer.
      *
-     * decoding: set by the user before avformat_open_input().
-     * encoding: set by the user before avformat_write_header()
+     * demuxing: set by the user before avformat_open_input().
+     * muxing: set by the user before avformat_write_header()
      * (mainly useful for AVFMT_NOFILE formats). The callback
      * should also be passed to avio_open2() if it's used to
      * open the file.
@@ -1145,6 +1316,24 @@ typedef struct AVFormatContext {
     int debug;
 #define FF_FDEBUG_TS        0x0001
 
+    /**
+     * Maximum buffering duration for interleaving.
+     *
+     * To ensure all the streams are interleaved correctly,
+     * av_interleaved_write_frame() will wait until it has at least one packet
+     * for each stream before actually writing any packets to the output file.
+     * When some streams are "sparse" (i.e. there are large gaps between
+     * successive packets), this can result in excessive buffering.
+     *
+     * This field specifies the maximum difference between the timestamps of the
+     * first and the last packet in the muxing queue, above which libavformat
+     * will output a packet regardless of whether it has queued a packet for all
+     * the streams.
+     *
+     * Muxing only, set by the caller before avformat_write_header().
+     */
+    int64_t max_interleave_delta;
+
     /**
      * Transport stream id.
      * This will be moved into demuxer private options. Thus no API/ABI compatibility
@@ -1219,14 +1408,14 @@ typedef struct AVFormatContext {
     /**
      * Correct single timestamp overflows
      * - encoding: unused
-     * - decoding: Set by user via AVOPtions (NO direct access)
+     * - decoding: Set by user via AVOptions (NO direct access)
      */
     unsigned int correct_ts_overflow;
 
     /**
      * Force seeking to any (also non key) frames.
      * - encoding: unused
-     * - decoding: Set by user via AVOPtions (NO direct access)
+     * - decoding: Set by user via AVOptions (NO direct access)
      */
     int seek2any;
 
@@ -1237,6 +1426,15 @@ typedef struct AVFormatContext {
      */
     int flush_packets;
 
+    /**
+     * format probing score.
+     * The maximal score is AVPROBE_SCORE_MAX, its set when the demuxer probes
+     * the format.
+     * - encoding: unused
+     * - decoding: set by avformat, read by user via av_format_get_probe_score() (NO direct access)
+     */
+    int probe_score;
+
     /*****************************************************************
      * All fields below this line are not part of the public API. They
      * may not be used outside of libavformat and can be changed and
@@ -1287,6 +1485,12 @@ typedef struct AVFormatContext {
      */
     AVRational offset_timebase;
 
+    /**
+     * An opaque field for libavformat internal usage.
+     * Must not be accessed in any way by callers.
+     */
+    AVFormatInternal *internal;
+
     /**
      * IO repositioned flag.
      * This is set by avformat when the underlaying IO context read pointer
@@ -1294,8 +1498,71 @@ typedef struct AVFormatContext {
      * Demuxers can use the flag to detect such changes.
      */
     int io_repositioned;
+
+    /**
+     * Forced video codec.
+     * This allows forcing a specific decoder, even when there are multiple with
+     * the same codec_id.
+     * Demuxing: Set by user via av_format_set_video_codec (NO direct access).
+     */
+    AVCodec *video_codec;
+
+    /**
+     * Forced audio codec.
+     * This allows forcing a specific decoder, even when there are multiple with
+     * the same codec_id.
+     * Demuxing: Set by user via av_format_set_audio_codec (NO direct access).
+     */
+    AVCodec *audio_codec;
+
+    /**
+     * Forced subtitle codec.
+     * This allows forcing a specific decoder, even when there are multiple with
+     * the same codec_id.
+     * Demuxing: Set by user via av_format_set_subtitle_codec (NO direct access).
+     */
+    AVCodec *subtitle_codec;
+
+    /**
+     * Number of bytes to be written as padding in a metadata header.
+     * Demuxing: Unused.
+     * Muxing: Set by user via av_format_set_metadata_header_padding.
+     */
+    int metadata_header_padding;
+
+    /**
+     * User data.
+     * This is a place for some private data of the user.
+     * Mostly usable with control_message_cb or any future callbacks in device's context.
+     */
+    void *opaque;
+
+    /**
+     * Callback used by devices to communicate with application.
+     */
+    av_format_control_message control_message_cb;
+
+    /**
+     * Output timestamp offset, in microseconds.
+     * Muxing: set by user via AVOptions (NO direct access)
+     */
+    int64_t output_ts_offset;
 } AVFormatContext;
 
+int av_format_get_probe_score(const AVFormatContext *s);
+AVCodec * av_format_get_video_codec(const AVFormatContext *s);
+void      av_format_set_video_codec(AVFormatContext *s, AVCodec *c);
+AVCodec * av_format_get_audio_codec(const AVFormatContext *s);
+void      av_format_set_audio_codec(AVFormatContext *s, AVCodec *c);
+AVCodec * av_format_get_subtitle_codec(const AVFormatContext *s);
+void      av_format_set_subtitle_codec(AVFormatContext *s, AVCodec *c);
+int       av_format_get_metadata_header_padding(const AVFormatContext *s);
+void      av_format_set_metadata_header_padding(AVFormatContext *s, int c);
+void *    av_format_get_opaque(const AVFormatContext *s);
+void      av_format_set_opaque(AVFormatContext *s, void *opaque);
+av_format_control_message av_format_get_control_message_cb(const AVFormatContext *s);
+void      av_format_set_control_message_cb(AVFormatContext *s, av_format_control_message callback);
+
 /**
  * Returns the method used to set ctx->duration.
  *
@@ -1408,6 +1675,7 @@ const AVClass *avformat_get_class(void);
  * User is required to call avcodec_close() and avformat_free_context() to
  * clean up the allocation by avformat_new_stream().
  *
+ * @param s media file handle
  * @param c If non-NULL, the AVCodecContext corresponding to the new stream
  * will be initialized to use this codec. This is needed for e.g. codec-specific
  * defaults to be set, so codec should be provided if it is known.
@@ -1423,12 +1691,6 @@ AVProgram *av_new_program(AVFormatContext *s, int id);
  */
 
 
-#if FF_API_PKT_DUMP
-attribute_deprecated void av_pkt_dump(FILE *f, AVPacket *pkt, int dump_payload);
-attribute_deprecated void av_pkt_dump_log(void *avcl, int level, AVPacket *pkt,
-                                          int dump_payload);
-#endif
-
 #if FF_API_ALLOC_OUTPUT_CONTEXT
 /**
  * @deprecated deprecated in favor of avformat_alloc_output_context2()
@@ -1471,6 +1733,7 @@ AVInputFormat *av_find_input_format(const char *short_name);
 /**
  * Guess the file format.
  *
+ * @param pd        data to be probed
  * @param is_opened Whether the file is already opened; determines whether
  *                  demuxers with or without AVFMT_NOFILE are probed.
  */
@@ -1479,6 +1742,7 @@ AVInputFormat *av_probe_input_format(AVProbeData *pd, int is_opened);
 /**
  * Guess the file format.
  *
+ * @param pd        data to be probed
  * @param is_opened Whether the file is already opened; determines whether
  *                  demuxers with or without AVFMT_NOFILE are probed.
  * @param score_max A probe score larger that this is required to accept a
@@ -1510,16 +1774,24 @@ AVInputFormat *av_probe_input_format3(AVProbeData *pd, int is_opened, int *score
  * @param logctx the log context
  * @param offset the offset within the bytestream to probe from
  * @param max_probe_size the maximum probe buffer size (zero for default)
- * @return 0 in case of success, a negative value corresponding to an
+ * @return the score in case of success, a negative value corresponding to an
+ *         the maximal score is AVPROBE_SCORE_MAX
  * AVERROR code otherwise
  */
+int av_probe_input_buffer2(AVIOContext *pb, AVInputFormat **fmt,
+                           const char *filename, void *logctx,
+                           unsigned int offset, unsigned int max_probe_size);
+
+/**
+ * Like av_probe_input_buffer2() but returns 0 on success
+ */
 int av_probe_input_buffer(AVIOContext *pb, AVInputFormat **fmt,
                           const char *filename, void *logctx,
                           unsigned int offset, unsigned int max_probe_size);
 
 /**
  * Open an input stream and read the header. The codecs are not opened.
- * The stream must be closed with av_close_input_file().
+ * The stream must be closed with avformat_close_input().
  *
  * @param ps Pointer to user-supplied AVFormatContext (allocated by avformat_alloc_context).
  *           May be a pointer to NULL, in which case an AVFormatContext is allocated by this
@@ -1654,8 +1926,8 @@ int av_read_packet(AVFormatContext *s, AVPacket *pkt);
  * information possible for decoding.
  *
  * If pkt->buf is NULL, then the packet is valid until the next
- * av_read_frame() or until av_close_input_file(). Otherwise the packet is valid
- * indefinitely. In both cases the packet must be freed with
+ * av_read_frame() or until avformat_close_input(). Otherwise the packet
+ * is valid indefinitely. In both cases the packet must be freed with
  * av_free_packet when it is no longer needed. For video, the packet contains
  * exactly one frame. For audio, it contains an integer number of frames if each
  * frame has a known fixed size (e.g. PCM or ADPCM data). If the audio frames
@@ -1674,6 +1946,8 @@ int av_read_frame(AVFormatContext *s, AVPacket *pkt);
 /**
  * Seek to the keyframe at timestamp.
  * 'timestamp' in 'stream_index'.
+ *
+ * @param s media file handle
  * @param stream_index If stream_index is (-1), a default
  * stream is selected, and timestamp is automatically converted
  * from AV_TIME_BASE units to the stream specific time_base.
@@ -1701,6 +1975,7 @@ int av_seek_frame(AVFormatContext *s, int stream_index, int64_t timestamp,
  * keyframes (this may not be supported by all demuxers).
  * If flags contain AVSEEK_FLAG_BACKWARD, it is ignored.
  *
+ * @param s media file handle
  * @param stream_index index of the stream which is used as time base reference
  * @param min_ts smallest acceptable timestamp
  * @param ts target timestamp
@@ -1800,49 +2075,108 @@ int avformat_write_header(AVFormatContext *s, AVDictionary **options);
 /**
  * Write a packet to an output media file.
  *
- * The packet shall contain one audio or video frame.
- * The packet must be correctly interleaved according to the container
- * specification, if not then av_interleaved_write_frame must be used.
+ * This function passes the packet directly to the muxer, without any buffering
+ * or reordering. The caller is responsible for correctly interleaving the
+ * packets if the format requires it. Callers that want libavformat to handle
+ * the interleaving should call av_interleaved_write_frame() instead of this
+ * function.
  *
  * @param s media file handle
- * @param pkt The packet, which contains the stream_index, buf/buf_size,
- *            dts/pts, ...
- *            This can be NULL (at any time, not just at the end), in
- *            order to immediately flush data buffered within the muxer,
- *            for muxers that buffer up data internally before writing it
- *            to the output.
+ * @param pkt The packet containing the data to be written. Note that unlike
+ *            av_interleaved_write_frame(), this function does not take
+ *            ownership of the packet passed to it (though some muxers may make
+ *            an internal reference to the input packet).
+ *            <br>
+ *            This parameter can be NULL (at any time, not just at the end), in
+ *            order to immediately flush data buffered within the muxer, for
+ *            muxers that buffer up data internally before writing it to the
+ *            output.
+ *            <br>
+ *            Packet's @ref AVPacket.stream_index "stream_index" field must be
+ *            set to the index of the corresponding stream in @ref
+ *            AVFormatContext.streams "s->streams". It is very strongly
+ *            recommended that timing information (@ref AVPacket.pts "pts", @ref
+ *            AVPacket.dts "dts", @ref AVPacket.duration "duration") is set to
+ *            correct values.
  * @return < 0 on error, = 0 if OK, 1 if flushed and there is no more data to flush
+ *
+ * @see av_interleaved_write_frame()
  */
 int av_write_frame(AVFormatContext *s, AVPacket *pkt);
 
 /**
  * Write a packet to an output media file ensuring correct interleaving.
  *
- * The packet must contain one audio or video frame.
- * If the packets are already correctly interleaved, the application should
- * call av_write_frame() instead as it is slightly faster. It is also important
- * to keep in mind that completely non-interleaved input will need huge amounts
- * of memory to interleave with this, so it is preferable to interleave at the
- * demuxer level.
+ * This function will buffer the packets internally as needed to make sure the
+ * packets in the output file are properly interleaved in the order of
+ * increasing dts. Callers doing their own interleaving should call
+ * av_write_frame() instead of this function.
  *
  * @param s media file handle
- * @param pkt The packet containing the data to be written. pkt->buf must be set
- * to a valid AVBufferRef describing the packet data. Libavformat takes
- * ownership of this reference and will unref it when it sees fit. The caller
- * must not access the data through this reference after this function returns.
- * This can be NULL (at any time, not just at the end), to flush the
- * interleaving queues.
- * Packet's @ref AVPacket.stream_index "stream_index" field must be set to the
- * index of the corresponding stream in @ref AVFormatContext.streams
- * "s.streams".
- * It is very strongly recommended that timing information (@ref AVPacket.pts
- * "pts", @ref AVPacket.dts "dts" @ref AVPacket.duration "duration") is set to
- * correct values.
- *
- * @return 0 on success, a negative AVERROR on error.
+ * @param pkt The packet containing the data to be written.
+ *            <br>
+ *            If the packet is reference-counted, this function will take
+ *            ownership of this reference and unreference it later when it sees
+ *            fit.
+ *            The caller must not access the data through this reference after
+ *            this function returns. If the packet is not reference-counted,
+ *            libavformat will make a copy.
+ *            <br>
+ *            This parameter can be NULL (at any time, not just at the end), to
+ *            flush the interleaving queues.
+ *            <br>
+ *            Packet's @ref AVPacket.stream_index "stream_index" field must be
+ *            set to the index of the corresponding stream in @ref
+ *            AVFormatContext.streams "s->streams". It is very strongly
+ *            recommended that timing information (@ref AVPacket.pts "pts", @ref
+ *            AVPacket.dts "dts", @ref AVPacket.duration "duration") is set to
+ *            correct values.
+ *
+ * @return 0 on success, a negative AVERROR on error. Libavformat will always
+ *         take care of freeing the packet, even if this function fails.
+ *
+ * @see av_write_frame(), AVFormatContext.max_interleave_delta
  */
 int av_interleaved_write_frame(AVFormatContext *s, AVPacket *pkt);
 
+/**
+ * Write a uncoded frame to an output media file.
+ *
+ * The frame must be correctly interleaved according to the container
+ * specification; if not, then av_interleaved_write_frame() must be used.
+ *
+ * See av_interleaved_write_frame() for details.
+ */
+int av_write_uncoded_frame(AVFormatContext *s, int stream_index,
+                           AVFrame *frame);
+
+/**
+ * Write a uncoded frame to an output media file.
+ *
+ * If the muxer supports it, this function allows to write an AVFrame
+ * structure directly, without encoding it into a packet.
+ * It is mostly useful for devices and similar special muxers that use raw
+ * video or PCM data and will not serialize it into a byte stream.
+ *
+ * To test whether it is possible to use it with a given muxer and stream,
+ * use av_write_uncoded_frame_query().
+ *
+ * The caller gives up ownership of the frame and must not access it
+ * afterwards.
+ *
+ * @return  >=0 for success, a negative code on error
+ */
+int av_interleaved_write_uncoded_frame(AVFormatContext *s, int stream_index,
+                                       AVFrame *frame);
+
+/**
+ * Test whether a muxer supports uncoded frame.
+ *
+ * @return  >=0 if an uncoded frame can be written to that muxer and stream,
+ *          <0 if not
+ */
+int av_write_uncoded_frame_query(AVFormatContext *s, int stream_index);
+
 /**
  * Write the stream trailer to an output media file and free the
  * file private data.
@@ -1966,6 +2300,7 @@ void av_pkt_dump_log2(void *avcl, int level, AVPacket *pkt, int dump_payload,
  *
  * @param tags list of supported codec_id-codec_tag pairs, as stored
  * in AVInputFormat.codec_tag and AVOutputFormat.codec_tag
+ * @param tag  codec tag to match to a codec ID
  */
 enum AVCodecID av_codec_get_id(const struct AVCodecTag * const *tags, unsigned int tag);
 
@@ -1975,6 +2310,7 @@ enum AVCodecID av_codec_get_id(const struct AVCodecTag * const *tags, unsigned i
  *
  * @param tags list of supported codec_id-codec_tag pairs, as stored
  * in AVInputFormat.codec_tag and AVOutputFormat.codec_tag
+ * @param id   codec ID to match to a codec tag
  */
 unsigned int av_codec_get_tag(const struct AVCodecTag * const *tags, enum AVCodecID id);
 
@@ -1994,6 +2330,9 @@ int av_find_default_stream_index(AVFormatContext *s);
 
 /**
  * Get the index for a specific timestamp.
+ *
+ * @param st        stream that the timestamp belongs to
+ * @param timestamp timestamp to retrieve the index for
  * @param flags if AVSEEK_FLAG_BACKWARD then the returned index will correspond
  *                 to the timestamp which is <= the requested one, if backward
  *                 is 0, then it will be >=
@@ -2090,6 +2429,7 @@ int av_sdp_create(AVFormatContext *ac[], int n_files, char *buf, int size);
  * Return a positive value if the given filename has one of the given
  * extensions, 0 otherwise.
  *
+ * @param filename   file name to check against the given extensions
  * @param extensions a comma-separated list of filename extensions
  */
 int av_match_ext(const char *filename, const char *extensions);
@@ -2097,6 +2437,8 @@ int av_match_ext(const char *filename, const char *extensions);
 /**
  * Test if the given container can store a codec.
  *
+ * @param ofmt           container to check for compatibility
+ * @param codec_id       codec to potentially store in container
  * @param std_compliance standards compliance level, one of FF_COMPLIANCE_*
  *
  * @return 1 if codec with ID codec_id can be stored in ofmt, 0 if it cannot.
@@ -2124,6 +2466,14 @@ const struct AVCodecTag *avformat_get_riff_video_tags(void);
  * @return the table mapping RIFF FourCCs for audio to AVCodecID.
  */
 const struct AVCodecTag *avformat_get_riff_audio_tags(void);
+/**
+ * @return the table mapping MOV FourCCs for video to libavcodec AVCodecID.
+ */
+const struct AVCodecTag *avformat_get_mov_video_tags(void);
+/**
+ * @return the table mapping MOV FourCCs for audio to AVCodecID.
+ */
+const struct AVCodecTag *avformat_get_mov_audio_tags(void);
 
 /**
  * @}
index 5bdbc62836cac49a827fc7d797151979c65432a1..defd6172bc631bace5ae2c5dff24c15a8378febb 100644 (file)
@@ -150,6 +150,15 @@ typedef struct AVIOContext {
 
 /* unbuffered I/O */
 
+/**
+ * Return the name of the protocol that will handle the passed URL.
+ *
+ * NULL is returned if no protocol could be found for the given URL.
+ *
+ * @return Name of the protocol or NULL.
+ */
+const char *avio_find_protocol_name(const char *url);
+
 /**
  * Return AVIO_FLAG_* access flags corresponding to the access permissions
  * of the resource in url, or a negative value corresponding to an
@@ -366,9 +375,10 @@ int avio_get_str16be(AVIOContext *pb, int maxlen, char *buf, int buflen);
  *
  * @param s Used to return the pointer to the created AVIOContext.
  * In case of failure the pointed to value is set to NULL.
+ * @param url resource to access
  * @param flags flags which control how the resource indicated by url
  * is to be opened
- * @return 0 in case of success, a negative value corresponding to an
+ * @return >= 0 in case of success, a negative value corresponding to an
  * AVERROR code in case of failure
  */
 int avio_open(AVIOContext **s, const char *url, int flags);
@@ -381,13 +391,14 @@ int avio_open(AVIOContext **s, const char *url, int flags);
  *
  * @param s Used to return the pointer to the created AVIOContext.
  * In case of failure the pointed to value is set to NULL.
+ * @param url resource to access
  * @param flags flags which control how the resource indicated by url
  * is to be opened
  * @param int_cb an interrupt callback to be used at the protocols level
  * @param options  A dictionary filled with protocol-private options. On return
  * this parameter will be destroyed and replaced with a dict containing options
  * that were not found. May be NULL.
- * @return 0 in case of success, a negative value corresponding to an
+ * @return >= 0 in case of success, a negative value corresponding to an
  * AVERROR code in case of failure
  */
 int avio_open2(AVIOContext **s, const char *url, int flags,
@@ -454,6 +465,8 @@ const char *avio_enum_protocols(void **opaque, int output);
 /**
  * Pause and resume playing - only meaningful if using a network streaming
  * protocol (e.g. MMS).
+ *
+ * @param h     IO context from which to call the read_pause function pointer
  * @param pause 1 for pause, 0 for resume
  */
 int     avio_pause(AVIOContext *h, int pause);
@@ -461,6 +474,8 @@ int     avio_pause(AVIOContext *h, int pause);
 /**
  * Seek to a given timestamp relative to some component stream.
  * Only meaningful if using a network streaming protocol (e.g. MMS.).
+ *
+ * @param h IO context from which to call the seek function pointers
  * @param stream_index The stream index that the timestamp is relative to.
  *        If stream_index is (-1) the timestamp should be in AV_TIME_BASE
  *        units from the beginning of the presentation.
index ed1c1966eccc92bf6a38c0d46db788e1891f9c7b..9f0695c86da686c72a35b1ec7ea85491da05dd70 100644 (file)
  * Libavformat version macros
  */
 
-#include "libavutil/avutil.h"
+#include "libavutil/version.h"
 
 #define LIBAVFORMAT_VERSION_MAJOR 55
-#define LIBAVFORMAT_VERSION_MINOR 12
-#define LIBAVFORMAT_VERSION_MICRO 102
+#define LIBAVFORMAT_VERSION_MINOR 33
+#define LIBAVFORMAT_VERSION_MICRO 100
 
 #define LIBAVFORMAT_VERSION_INT AV_VERSION_INT(LIBAVFORMAT_VERSION_MAJOR, \
                                                LIBAVFORMAT_VERSION_MINOR, \
  * dropped at a future version bump. The defines themselves are not part of
  * the public API and may change, break or disappear at any time.
  */
-
-#ifndef FF_API_OLD_AVIO
-#define FF_API_OLD_AVIO                (LIBAVFORMAT_VERSION_MAJOR < 55)
-#endif
-#ifndef FF_API_PKT_DUMP
-#define FF_API_PKT_DUMP                (LIBAVFORMAT_VERSION_MAJOR < 54)
+#ifndef FF_API_REFERENCE_DTS
+#define FF_API_REFERENCE_DTS            (LIBAVFORMAT_VERSION_MAJOR < 56)
 #endif
+
 #ifndef FF_API_ALLOC_OUTPUT_CONTEXT
 #define FF_API_ALLOC_OUTPUT_CONTEXT    (LIBAVFORMAT_VERSION_MAJOR < 56)
 #endif
index 8c08d2b8826a9cb28dc6e64d8e859cb4240662aa..0dc69ec0a8fcd1d83815716007b8106ab35997b8 100644 (file)
@@ -25,6 +25,9 @@
 #include "attributes.h"
 
 /**
+ * @file
+ * Public header for libavutil Adler32 hasher
+ *
  * @defgroup lavu_adler32 Adler32
  * @ingroup lavu_crypto
  * @{
index 64b46f68f0b3fcec7a976bedafa8e53c0bec69d5..7d3f4a91cfd0d1af677e550be7fd09b434457675 100644 (file)
@@ -52,6 +52,8 @@
 
 #if AV_GCC_VERSION_AT_LEAST(3,1)
 #    define av_noinline __attribute__((noinline))
+#elif defined(_MSC_VER)
+#    define av_noinline __declspec(noinline)
 #else
 #    define av_noinline
 #endif
 #    define av_pure
 #endif
 
-#ifndef av_restrict
-#define av_restrict restrict
-#endif
-
 #if AV_GCC_VERSION_AT_LEAST(2,6)
 #    define av_const __attribute__((const))
 #else
@@ -78,7 +76,7 @@
 #    define av_cold
 #endif
 
-#if AV_GCC_VERSION_AT_LEAST(4,1)
+#if AV_GCC_VERSION_AT_LEAST(4,1) && !defined(__llvm__)
 #    define av_flatten __attribute__((flatten))
 #else
 #    define av_flatten
@@ -86,6 +84,8 @@
 
 #if AV_GCC_VERSION_AT_LEAST(3,1)
 #    define attribute_deprecated __attribute__((deprecated))
+#elif defined(_MSC_VER)
+#    define attribute_deprecated __declspec(deprecated)
 #else
 #    define attribute_deprecated
 #endif
         _Pragma("GCC diagnostic ignored \"-Wdeprecated-declarations\"") \
         code \
         _Pragma("GCC diagnostic pop")
+#elif defined(_MSC_VER)
+#    define AV_NOWARN_DEPRECATED(code) \
+        __pragma(warning(push)) \
+        __pragma(warning(disable : 4996)) \
+        code; \
+        __pragma(warning(pop))
 #else
 #    define AV_NOWARN_DEPRECATED(code) code
 #endif
index 55a538e78fc3c2249551d9254073f197eed78808..903b8f1cdf5310d15cec65cea97fa3fa25acdcef 100644 (file)
@@ -2,20 +2,20 @@
  * Audio FIFO
  * Copyright (c) 2012 Justin Ruggles <justin.ruggles@gmail.com>
  *
- * This file is part of Libav.
+ * This file is part of FFmpeg.
  *
- * Libav is free software; you can redistribute it and/or
+ * 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.
  *
- * Libav is distributed in the hope that it will be useful,
+ * 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 Libav; if not, write to the Free Software
+ * License along with FFmpeg; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
index 438ef799ebeae59f091abf5d12706191bd7c9689..de2f71d12b62609ff5b7864bb592766801b20f30 100644 (file)
@@ -22,6 +22,7 @@
 #define AVUTIL_AVSTRING_H
 
 #include <stddef.h>
+#include <stdint.h>
 #include "attributes.h"
 
 /**
@@ -130,6 +131,20 @@ size_t av_strlcat(char *dst, const char *src, size_t size);
  */
 size_t av_strlcatf(char *dst, size_t size, const char *fmt, ...) av_printf_format(3, 4);
 
+/**
+ * Get the count of continuous non zero chars starting from the beginning.
+ *
+ * @param len maximum number of characters to check in the string, that
+ *            is the maximum value which is returned by the function
+ */
+static inline size_t av_strnlen(const char *s, size_t len)
+{
+    size_t i;
+    for (i = 0; i < len && s[i]; i++)
+        ;
+    return i;
+}
+
 /**
  * Print arguments following specified format into a large enough auto
  * allocated buffer. It is similar to GNU asprintf().
@@ -295,6 +310,45 @@ enum AVEscapeMode {
 int av_escape(char **dst, const char *src, const char *special_chars,
               enum AVEscapeMode mode, int flags);
 
+#define AV_UTF8_FLAG_ACCEPT_INVALID_BIG_CODES          1 ///< accept codepoints over 0x10FFFF
+#define AV_UTF8_FLAG_ACCEPT_NON_CHARACTERS             2 ///< accept non-characters - 0xFFFE and 0xFFFF
+#define AV_UTF8_FLAG_ACCEPT_SURROGATES                 4 ///< accept UTF-16 surrogates codes
+#define AV_UTF8_FLAG_EXCLUDE_XML_INVALID_CONTROL_CODES 8 ///< exclude control codes not accepted by XML
+
+#define AV_UTF8_FLAG_ACCEPT_ALL \
+    AV_UTF8_FLAG_ACCEPT_INVALID_BIG_CODES|AV_UTF8_FLAG_ACCEPT_NON_CHARACTERS|AV_UTF8_FLAG_ACCEPT_SURROGATES
+
+/**
+ * Read and decode a single UTF-8 code point (character) from the
+ * buffer in *buf, and update *buf to point to the next byte to
+ * decode.
+ *
+ * In case of an invalid byte sequence, the pointer will be updated to
+ * the next byte after the invalid sequence and the function will
+ * return an error code.
+ *
+ * Depending on the specified flags, the function will also fail in
+ * case the decoded code point does not belong to a valid range.
+ *
+ * @note For speed-relevant code a carefully implemented use of
+ * GET_UTF8() may be preferred.
+ *
+ * @param codep   pointer used to return the parsed code in case of success.
+ *                The value in *codep is set even in case the range check fails.
+ * @param bufp    pointer to the address the first byte of the sequence
+ *                to decode, updated by the function to point to the
+ *                byte next after the decoded sequence
+ * @param buf_end pointer to the end of the buffer, points to the next
+ *                byte past the last in the buffer. This is used to
+ *                avoid buffer overreads (in case of an unfinished
+ *                UTF-8 sequence towards the end of the buffer).
+ * @param flags   a collection of AV_UTF8_FLAG_* flags
+ * @return >= 0 in case a sequence was successfully read, a negative
+ * value in case of invalid sequence
+ */
+int av_utf8_decode(int32_t *codep, const uint8_t **bufp, const uint8_t *buf_end,
+                   unsigned int flags);
+
 /**
  * @}
  */
index 4986f4f9ef695da4ab526dcf8c87ab98b82fe480..d6566c116362f72a757a0333db2dea1023ff5bb8 100644 (file)
@@ -41,7 +41,7 @@
  * @li @ref lavu "libavutil" common utility library
  * @li @ref lswr "libswresample" audio resampling, format conversion and mixing
  * @li @ref lpp  "libpostproc" post processing library
- * @li @ref lsws "libswscale" color conversion and scaling library
+ * @li @ref libsws "libswscale" color conversion and scaling library
  *
  * @section ffmpeg_versioning Versioning and compatibility
  *
  *
  * @}
  *
+ * @defgroup lavu_log Logging Facility
+ *
+ * @{
+ *
+ * @}
+ *
  * @defgroup lavu_misc Other
  *
  * @{
  * @{
  *
  * @}
+ *
+ * @defgroup preproc_misc Preprocessor String Macros
+ *
+ * @{
+ *
+ * @}
  */
 
 
@@ -271,9 +283,9 @@ char av_get_picture_type_char(enum AVPictureType pict_type);
 #include "common.h"
 #include "error.h"
 #include "version.h"
+#include "macros.h"
 #include "mathematics.h"
 #include "rational.h"
-#include "intfloat_readwrite.h"
 #include "log.h"
 #include "pixfmt.h"
 
@@ -306,6 +318,13 @@ unsigned av_int_list_length_for_size(unsigned elsize,
 #define av_int_list_length(list, term) \
     av_int_list_length_for_size(sizeof(*(list)), list, term)
 
+/**
+ * Open a file using a UTF-8 filename.
+ * The API of this function matches POSIX fopen(), errors are returned through
+ * errno.
+ */
+FILE *av_fopen_utf8(const char *path, const char *mode);
+
 /**
  * @}
  * @}
index dc86f1241551f874651b0bbfdf295696d2960696..839ec1ec0d782b21a8f9c5f6bb49fa83f44322b1 100644 (file)
@@ -21,6 +21,8 @@
 #ifndef AVUTIL_BPRINT_H
 #define AVUTIL_BPRINT_H
 
+#include <stdarg.h>
+
 #include "attributes.h"
 #include "avstring.h"
 
@@ -121,11 +123,25 @@ void av_bprint_init_for_buffer(AVBPrint *buf, char *buffer, unsigned size);
  */
 void av_bprintf(AVBPrint *buf, const char *fmt, ...) av_printf_format(2, 3);
 
+/**
+ * Append a formatted string to a print buffer.
+ */
+void av_vbprintf(AVBPrint *buf, const char *fmt, va_list vl_arg);
+
 /**
  * Append char c n times to a print buffer.
  */
 void av_bprint_chars(AVBPrint *buf, char c, unsigned n);
 
+/**
+ * Append data to a print buffer.
+ *
+ * param buf  bprint buffer to use
+ * param data pointer to data
+ * param size size of data
+ */
+void av_bprint_append_data(AVBPrint *buf, const char *data, unsigned size);
+
 struct tm;
 /**
  * Append a formatted date and time to a print buffer.
index 06f654816d80a303eb694c78c944703b2750a5af..f38e1dec83dc89babdd6a6f0bd6532441445699f 100644 (file)
@@ -34,7 +34,9 @@
 
 #include "config.h"
 
-#if   ARCH_ARM
+#if   ARCH_AARCH64
+#   include "aarch64/bswap.h"
+#elif ARCH_ARM
 #   include "arm/bswap.h"
 #elif ARCH_AVR32
 #   include "avr32/bswap.h"
index 2906098313a29e09e08e53b9a2188eab472c18e3..bc6befd8e386e7e088f22a154bfebafc52fcea90 100644 (file)
@@ -114,6 +114,10 @@ enum AVMatrixEncoding {
     AV_MATRIX_ENCODING_NONE,
     AV_MATRIX_ENCODING_DOLBY,
     AV_MATRIX_ENCODING_DPLII,
+    AV_MATRIX_ENCODING_DPLIIX,
+    AV_MATRIX_ENCODING_DPLIIZ,
+    AV_MATRIX_ENCODING_DOLBYEX,
+    AV_MATRIX_ENCODING_DOLBYHEADPHONE,
     AV_MATRIX_ENCODING_NB
 };
 
@@ -136,7 +140,12 @@ enum AVMatrixEncoding {
  * - a channel layout mask, in hexadecimal starting with "0x" (see the
  *   AV_CH_* macros).
  *
- * Example: "stereo+FC" = "2+FC" = "2c+1c" = "0x7"
+ * @warning Starting from the next major bump the trailing character
+ * 'c' 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 "c").
+ *
+ * Example: "stereo+FC" = "2c+FC" = "2c+1c" = "0x7"
  */
 uint64_t av_get_channel_layout(const char *name);
 
index c7c32fd36353893e598fd6f391240923190993e4..c82a3a624081355f64d811f452994de49c814b11 100644 (file)
 #ifndef AVUTIL_COMMON_H
 #define AVUTIL_COMMON_H
 
+#if defined(__cplusplus) && !defined(__STDC_CONSTANT_MACROS) && !defined(UINT64_C)
+#error missing -D__STDC_CONSTANT_MACROS / #define __STDC_CONSTANT_MACROS
+#endif
+
 #include <errno.h>
 #include <inttypes.h>
 #include <limits.h>
 #include <math.h>
+#include <stdint.h>
 #include <stdio.h>
 #include <stdlib.h>
 #include <string.h>
@@ -175,7 +180,7 @@ static av_always_inline av_const int16_t av_clip_int16_c(int a)
  */
 static av_always_inline av_const int32_t av_clipl_int32_c(int64_t a)
 {
-    if ((a+0x80000000u) & ~UINT64_C(0xFFFFFFFF)) return (a>>63) ^ 0x7FFFFFFF;
+    if ((a+0x80000000u) & ~UINT64_C(0xFFFFFFFF)) return (int32_t)((a>>63) ^ 0x7FFFFFFF);
     else                                         return (int32_t)a;
 }
 
@@ -279,7 +284,7 @@ static av_always_inline av_const int av_popcount_c(uint32_t x)
  */
 static av_always_inline av_const int av_popcount64_c(uint64_t x)
 {
-    return av_popcount((uint32_t)x) + av_popcount(x >> 32);
+    return av_popcount((uint32_t)x) + av_popcount((uint32_t)(x >> 32));
 }
 
 #define MKTAG(a,b,c,d) ((a) | ((b) << 8) | ((c) << 16) | ((unsigned)(d) << 24))
@@ -295,6 +300,11 @@ static av_always_inline av_const int av_popcount64_c(uint64_t x)
  *                 input, this could be *ptr++.
  * @param ERROR    Expression to be evaluated on invalid input,
  *                 typically a goto statement.
+ *
+ * @warning ERROR should not contain a loop control statement which
+ * could interact with the internal while loop, and should force an
+ * exit from the macro code (e.g. through a goto or a return) in order
+ * to prevent undefined results.
  */
 #define GET_UTF8(val, GET_BYTE, ERROR)\
     val= GET_BYTE;\
index df8ef8728a942ce4cc509da300267a2181723432..0ad400fefb822dab62b0ef9a8d7c765dfe40b568 100644 (file)
 #define AV_CPU_FLAG_SSE          0x0008 ///< SSE functions
 #define AV_CPU_FLAG_SSE2         0x0010 ///< PIV SSE2 functions
 #define AV_CPU_FLAG_SSE2SLOW 0x40000000 ///< SSE2 supported, but usually not faster
+                                        ///< than regular MMX/SSE (e.g. Core1)
 #define AV_CPU_FLAG_3DNOWEXT     0x0020 ///< AMD 3DNowExt
 #define AV_CPU_FLAG_SSE3         0x0040 ///< Prescott SSE3 functions
 #define AV_CPU_FLAG_SSE3SLOW 0x20000000 ///< SSE3 supported, but usually not faster
+                                        ///< than regular MMX/SSE (e.g. Core1)
 #define AV_CPU_FLAG_SSSE3        0x0080 ///< Conroe SSSE3 functions
 #define AV_CPU_FLAG_ATOM     0x10000000 ///< Atom processor, some SSSE3 instructions are slower
 #define AV_CPU_FLAG_SSE4         0x0100 ///< Penryn SSE4.1 functions
 // #else
 // #define AV_CPU_FLAG_CMOV         0x1000 ///< supports cmov instruction
 // #endif
+#define AV_CPU_FLAG_AVX2         0x8000 ///< AVX2 functions: requires OS support even if YMM registers aren't used
+#define AV_CPU_FLAG_FMA3        0x10000 ///< Haswell FMA3 functions
+#define AV_CPU_FLAG_BMI1        0x20000 ///< Bit Manipulation Instruction Set 1
+#define AV_CPU_FLAG_BMI2        0x40000 ///< Bit Manipulation Instruction Set 2
 
 #define AV_CPU_FLAG_ALTIVEC      0x0001 ///< standard
 
@@ -105,9 +111,4 @@ int av_parse_cpu_caps(unsigned *flags, const char *s);
  */
 int av_cpu_count(void);
 
-/* The following CPU-specific functions shall not be called directly. */
-int ff_get_cpu_flags_arm(void);
-int ff_get_cpu_flags_ppc(void);
-int ff_get_cpu_flags_x86(void);
-
 #endif /* AVUTIL_CPU_H */
index 38f03a407f3b269891a716bdafa5543f89a70087..c23a2d12cb5dd27979501b1d00d61740f1714c01 100644 (file)
  * entries and finally av_dict_free() to free the dictionary
  * and all its contents.
  *
@code
* AVDictionary *d = NULL;                // "create" an empty dictionary
- * av_dict_set(&d, "foo", "bar", 0);      // add an entry
- *
- * char *k = av_strdup("key");            // if your strings are already allocated,
- * char *v = av_strdup("value");          // you can avoid copying them like this
- * av_dict_set(&d, k, v, AV_DICT_DONT_STRDUP_KEY | AV_DICT_DONT_STRDUP_VAL);
- *
* AVDictionaryEntry *t = NULL;
- * while (t = av_dict_get(d, "", t, AV_DICT_IGNORE_SUFFIX)) {
- *     <....>                             // iterate over all entries in d
- * }
- *
* av_dict_free(&d);
@endcode
+ @code
  AVDictionary *d = NULL;           // "create" an empty dictionary
+   AVDictionaryEntry *t = NULL;
+
+   av_dict_set(&d, "foo", "bar", 0); // add an entry
+
+   char *k = av_strdup("key");       // if your strings are already allocated,
+   char *v = av_strdup("value");     // you can avoid copying them like this
  av_dict_set(&d, k, v, AV_DICT_DONT_STRDUP_KEY | AV_DICT_DONT_STRDUP_VAL);
+
+   while (t = av_dict_get(d, "", t, AV_DICT_IGNORE_SUFFIX)) {
+       <....>                             // iterate over all entries in d
+   }
  av_dict_free(&d);
+ @endcode
  *
  */
 
-#define AV_DICT_MATCH_CASE      1
-#define AV_DICT_IGNORE_SUFFIX   2
+#define AV_DICT_MATCH_CASE      1   /**< Only get an entry with exact-case key match. Only relevant in av_dict_get(). */
+#define AV_DICT_IGNORE_SUFFIX   2   /**< Return first entry in a dictionary whose first part corresponds to the search key,
+                                         ignoring the suffix of the found key string. Only relevant in av_dict_get(). */
 #define AV_DICT_DONT_STRDUP_KEY 4   /**< Take ownership of a key that's been
-                                         allocated with av_malloc() and children. */
+                                         allocated with av_malloc() or another memory allocation function. */
 #define AV_DICT_DONT_STRDUP_VAL 8   /**< Take ownership of a value that's been
-                                         allocated with av_malloc() and chilren. */
+                                         allocated with av_malloc() or another memory allocation function. */
 #define AV_DICT_DONT_OVERWRITE 16   ///< Don't overwrite existing entries.
 #define AV_DICT_APPEND         32   /**< If the entry already exists, append to it.  Note that no
                                       delimiter is added, the strings are simply concatenated. */
@@ -84,10 +85,17 @@ typedef struct AVDictionary AVDictionary;
 /**
  * Get a dictionary entry with matching key.
  *
+ * The returned entry key or value must not be changed, or it will
+ * cause undefined behavior.
+ *
+ * To iterate through all the dictionary entries, you can set the matching key
+ * to the null string "" and set the AV_DICT_IGNORE_SUFFIX flag.
+ *
  * @param prev Set to the previous matching element to find the next.
  *             If set to NULL the first matching element is returned.
- * @param flags Allows case as well as suffix-insensitive comparisons.
- * @return Found entry or NULL, changing key or value leads to undefined behavior.
+ * @param key matching key
+ * @param flags a collection of AV_DICT_* flags controlling how the entry is retrieved
+ * @return found entry or NULL in case no matching entry was found in the dictionary
  */
 AVDictionaryEntry *
 av_dict_get(AVDictionary *m, const char *key, const AVDictionaryEntry *prev, int flags);
@@ -113,7 +121,10 @@ int av_dict_count(const AVDictionary *m);
 int av_dict_set(AVDictionary **pm, const char *key, const char *value, int flags);
 
 /**
- * Parse the key/value pairs list and add to a dictionary.
+ * Parse the key/value pairs list and add the parsed entries to a dictionary.
+ *
+ * In case of failure, all the successfully set entries are stored in
+ * *pm. You may need to manually free the created dictionary.
  *
  * @param key_val_sep  a 0-terminated list of characters used to separate
  *                     key from value
diff --git a/dependencies64/ffmpeg/include/libavutil/downmix_info.h b/dependencies64/ffmpeg/include/libavutil/downmix_info.h
new file mode 100644 (file)
index 0000000..c369891
--- /dev/null
@@ -0,0 +1,114 @@
+/*
+ * Copyright (c) 2014 Tim Walker <tdskywalker@gmail.com>
+ *
+ * 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
+ */
+
+#ifndef AVUTIL_DOWNMIX_INFO_H
+#define AVUTIL_DOWNMIX_INFO_H
+
+#include "frame.h"
+
+/**
+ * @file
+ * audio downmix medatata
+ */
+
+/**
+ * @addtogroup lavu_audio
+ * @{
+ */
+
+/**
+ * @defgroup downmix_info Audio downmix metadata
+ * @{
+ */
+
+/**
+ * Possible downmix types.
+ */
+enum AVDownmixType {
+    AV_DOWNMIX_TYPE_UNKNOWN, /**< Not indicated. */
+    AV_DOWNMIX_TYPE_LORO,    /**< Lo/Ro 2-channel downmix (Stereo). */
+    AV_DOWNMIX_TYPE_LTRT,    /**< Lt/Rt 2-channel downmix, Dolby Surround compatible. */
+    AV_DOWNMIX_TYPE_DPLII,   /**< Lt/Rt 2-channel downmix, Dolby Pro Logic II compatible. */
+    AV_DOWNMIX_TYPE_NB       /**< Number of downmix types. Not part of ABI. */
+};
+
+/**
+ * This structure describes optional metadata relevant to a downmix procedure.
+ *
+ * All fields are set by the decoder to the value indicated in the audio
+ * bitstream (if present), or to a "sane" default otherwise.
+ */
+typedef struct AVDownmixInfo {
+    /**
+     * Type of downmix preferred by the mastering engineer.
+     */
+    enum AVDownmixType preferred_downmix_type;
+
+    /**
+     * Absolute scale factor representing the nominal level of the center
+     * channel during a regular downmix.
+     */
+    double center_mix_level;
+
+    /**
+     * Absolute scale factor representing the nominal level of the center
+     * channel during an Lt/Rt compatible downmix.
+     */
+    double center_mix_level_ltrt;
+
+    /**
+     * Absolute scale factor representing the nominal level of the surround
+     * channels during a regular downmix.
+     */
+    double surround_mix_level;
+
+    /**
+     * Absolute scale factor representing the nominal level of the surround
+     * channels during an Lt/Rt compatible downmix.
+     */
+    double surround_mix_level_ltrt;
+
+    /**
+     * Absolute scale factor representing the level at which the LFE data is
+     * mixed into L/R channels during downmixing.
+     */
+    double lfe_mix_level;
+} AVDownmixInfo;
+
+/**
+ * Get a frame's AV_FRAME_DATA_DOWNMIX_INFO side data for editing.
+ *
+ * The side data is created and added to the frame if it's absent.
+ *
+ * @param frame the frame for which the side data is to be obtained.
+ *
+ * @return the AVDownmixInfo structure to be edited by the caller.
+ */
+AVDownmixInfo *av_downmix_info_update_side_data(AVFrame *frame);
+
+/**
+ * @}
+ */
+
+/**
+ * @}
+ */
+
+#endif /* AVUTIL_DOWNMIX_INFO_H */
index a1d1fe345c14e3ba3b0734cd602f464db0bbec2b..6159b0fe58bbda361adae737896b932cd0c2a360 100644 (file)
@@ -45,7 +45,7 @@ typedef struct AVExpr AVExpr;
  * @param funcs2 NULL terminated array of function pointers for functions which take 2 arguments
  * @param opaque a pointer which will be passed to all functions from funcs1 and funcs2
  * @param log_ctx parent logging context
- * @return 0 in case of success, a negative value corresponding to an
+ * @return >= 0 in case of success, a negative value corresponding to an
  * AVERROR code otherwise
  */
 int av_expr_parse_and_eval(double *res, const char *s,
@@ -68,7 +68,7 @@ int av_expr_parse_and_eval(double *res, const char *s,
  * @param func2_names NULL terminated array of zero terminated strings of funcs2 identifiers
  * @param funcs2 NULL terminated array of function pointers for functions which take 2 arguments
  * @param log_ctx parent logging context
- * @return 0 in case of success, a negative value corresponding to an
+ * @return >= 0 in case of success, a negative value corresponding to an
  * AVERROR code otherwise
  */
 int av_expr_parse(AVExpr **expr, const char *s,
diff --git a/dependencies64/ffmpeg/include/libavutil/ffversion.h b/dependencies64/ffmpeg/include/libavutil/ffversion.h
new file mode 100644 (file)
index 0000000..58a0219
--- /dev/null
@@ -0,0 +1,4 @@
+#ifndef AVUTIL_FFVERSION_H
+#define AVUTIL_FFVERSION_H
+#define FFMPEG_VERSION "2.2.3"
+#endif /* AVUTIL_FFVERSION_H */
index 8cb3000aaab061d89a10b1be2c49c2d27744516a..9fedba8635f152e446f01beeb632fd703f1411f9 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
+/**
+ * @file
+ * @ingroup lavu_frame
+ * reference-counted frame API
+ */
+
 #ifndef AVUTIL_FRAME_H
 #define AVUTIL_FRAME_H
 
 #include <stdint.h>
 
-#include "libavcodec/version.h"
-
 #include "avutil.h"
 #include "buffer.h"
 #include "dict.h"
 #include "rational.h"
 #include "samplefmt.h"
+#include "version.h"
+
 
 enum AVColorSpace{
-    AVCOL_SPC_RGB         = 0,
-    AVCOL_SPC_BT709       = 1, ///< also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / SMPTE RP177 Annex B
-    AVCOL_SPC_UNSPECIFIED = 2,
-    AVCOL_SPC_FCC         = 4,
-    AVCOL_SPC_BT470BG     = 5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601
-    AVCOL_SPC_SMPTE170M   = 6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC / functionally identical to above
-    AVCOL_SPC_SMPTE240M   = 7,
-    AVCOL_SPC_YCOCG       = 8, ///< Used by Dirac / VC-2 and H.264 FRext, see ITU-T SG16
-    AVCOL_SPC_NB             , ///< Not part of ABI
+    AVCOL_SPC_RGB         =  0,
+    AVCOL_SPC_BT709       =  1, ///< also ITU-R BT1361 / IEC 61966-2-4 xvYCC709 / SMPTE RP177 Annex B
+    AVCOL_SPC_UNSPECIFIED =  2,
+    AVCOL_SPC_FCC         =  4,
+    AVCOL_SPC_BT470BG     =  5, ///< also ITU-R BT601-6 625 / ITU-R BT1358 625 / ITU-R BT1700 625 PAL & SECAM / IEC 61966-2-4 xvYCC601
+    AVCOL_SPC_SMPTE170M   =  6, ///< also ITU-R BT601-6 525 / ITU-R BT1358 525 / ITU-R BT1700 NTSC / functionally identical to above
+    AVCOL_SPC_SMPTE240M   =  7,
+    AVCOL_SPC_YCOCG       =  8, ///< Used by Dirac / VC-2 and H.264 FRext, see ITU-T SG16
+    AVCOL_SPC_BT2020_NCL  =  9, ///< ITU-R BT2020 non-constant luminance system
+    AVCOL_SPC_BT2020_CL   = 10, ///< ITU-R BT2020 constant luminance system
+    AVCOL_SPC_NB              , ///< Not part of ABI
 };
 #define AVCOL_SPC_YCGCO AVCOL_SPC_YCOCG
 
@@ -50,11 +58,40 @@ enum AVColorRange{
     AVCOL_RANGE_NB             , ///< Not part of ABI
 };
 
+
+/**
+ * @defgroup lavu_frame AVFrame
+ * @ingroup lavu_data
+ *
+ * @{
+ * AVFrame is an abstraction for reference-counted raw multimedia data.
+ */
+
 enum AVFrameSideDataType {
     /**
      * The data is the AVPanScan struct defined in libavcodec.
      */
     AV_FRAME_DATA_PANSCAN,
+    /**
+     * ATSC A53 Part 4 Closed Captions.
+     * A53 CC bitstream is stored as uint8_t in AVFrameSideData.data.
+     * The number of bytes of CC data is AVFrameSideData.size.
+     */
+    AV_FRAME_DATA_A53_CC,
+    /**
+     * Stereoscopic 3d metadata.
+     * The data is the AVStereo3D struct defined in libavutil/stereo3d.h.
+     */
+    AV_FRAME_DATA_STEREO3D,
+    /**
+     * The data is the AVMatrixEncoding enum defined in libavutil/channel_layout.h.
+     */
+    AV_FRAME_DATA_MATRIXENCODING,
+    /**
+     * Metadata relevant to a downmix procedure.
+     * The data is the AVDownmixInfo struct defined in libavutil/downmix_info.h.
+     */
+    AV_FRAME_DATA_DOWNMIX_INFO,
 };
 
 typedef struct AVFrameSideData {
@@ -117,6 +154,9 @@ typedef struct AVFrame {
      * preference, this is 16 or 32 for modern desktop CPUs.
      * Some code requires such alignment other code can be slower without
      * correct alignment, for yet other it makes no difference.
+     *
+     * @note The linesize may be larger than the size of usable data -- there
+     * may be extra padding present for performance reasons.
      */
     int linesize[AV_NUM_DATA_POINTERS];
 
@@ -383,6 +423,26 @@ typedef struct AVFrame {
     AVFrameSideData **side_data;
     int            nb_side_data;
 
+/**
+ * @defgroup lavu_frame_flags AV_FRAME_FLAGS
+ * Flags describing additional frame properties.
+ *
+ * @{
+ */
+
+/**
+ * The frame data may be corrupted, e.g. due to decoding errors.
+ */
+#define AV_FRAME_FLAG_CORRUPT       (1 << 0)
+/**
+ * @}
+ */
+
+    /**
+     * Frame flags, a combination of @ref lavu_frame_flags
+     */
+    int flags;
+
     /**
      * frame timestamp estimated using various heuristics, in stream time base
      * Code outside libavcodec should access this field using:
@@ -508,6 +568,12 @@ void    av_frame_set_colorspace(AVFrame *frame, enum AVColorSpace val);
 enum AVColorRange av_frame_get_color_range(const AVFrame *frame);
 void    av_frame_set_color_range(AVFrame *frame, enum AVColorRange val);
 
+/**
+ * Get the name of a colorspace.
+ * @return a static string identifying the colorspace; can be NULL.
+ */
+const char *av_get_colorspace_name(enum AVColorSpace val);
+
 /**
  * Allocate an AVFrame and set its fields to default values.  The resulting
  * struct must be freed using av_frame_free().
@@ -530,7 +596,7 @@ AVFrame *av_frame_alloc(void);
 void av_frame_free(AVFrame **frame);
 
 /**
- * Setup a new reference to the data described by an given frame.
+ * Set up a new reference to the data described by the source frame.
  *
  * Copy frame properties from src to dst and create a new reference for each
  * AVBufferRef from src.
@@ -540,7 +606,7 @@ void av_frame_free(AVFrame **frame);
  *
  * @return 0 on success, a negative AVERROR on error
  */
-int av_frame_ref(AVFrame *dst, AVFrame *src);
+int av_frame_ref(AVFrame *dst, const AVFrame *src);
 
 /**
  * Create a new frame that references the same data as src.
@@ -549,7 +615,7 @@ int av_frame_ref(AVFrame *dst, AVFrame *src);
  *
  * @return newly created AVFrame on success, NULL on error.
  */
-AVFrame *av_frame_clone(AVFrame *src);
+AVFrame *av_frame_clone(const AVFrame *src);
 
 /**
  * Unreference all the buffers referenced by frame and reset the frame fields.
@@ -607,6 +673,19 @@ int av_frame_is_writable(AVFrame *frame);
  */
 int av_frame_make_writable(AVFrame *frame);
 
+/**
+ * Copy the frame data from src to dst.
+ *
+ * This function does not allocate anything, dst must be already initialized and
+ * allocated with the same parameters as src.
+ *
+ * This function only copies the frame data (i.e. the contents of the data /
+ * extended data arrays), not any other properties.
+ *
+ * @return >= 0 on success, a negative AVERROR on error.
+ */
+int av_frame_copy(AVFrame *dst, const AVFrame *src);
+
 /**
  * Copy only "metadata" fields from src to dst.
  *
@@ -644,7 +723,11 @@ AVFrameSideData *av_frame_new_side_data(AVFrame *frame,
  * @return a pointer to the side data of a given type on success, NULL if there
  * is no side data with such type in this frame.
  */
-AVFrameSideData *av_frame_get_side_data(AVFrame *frame,
+AVFrameSideData *av_frame_get_side_data(const AVFrame *frame,
                                         enum AVFrameSideDataType type);
 
+/**
+ * @}
+ */
+
 #endif /* AVUTIL_FRAME_H */
index 38d26ad87e12076e51cf79f7394a70b9e987a457..fe3d7ec4a5b6f5f616c103aef5a5cf7ec01f8242 100644 (file)
@@ -1,20 +1,20 @@
 /*
  * Copyright (c) 2011 Mans Rullgard
  *
- * This file is part of Libav.
+ * This file is part of FFmpeg.
  *
- * Libav is free software; you can redistribute it and/or
+ * 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.
  *
- * Libav is distributed in the hope that it will be useful,
+ * 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 Libav; if not, write to the Free Software
+ * License along with FFmpeg; if not, write to the Free Software
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
  */
 
index 9709f4dae434dae02412fbf5618da99d3919520a..1d79e3e8af38f3b3e84766ac72b105f719052659 100644 (file)
 #define AVUTIL_INTFLOAT_READWRITE_H
 
 #include <stdint.h>
+
 #include "attributes.h"
+#include "version.h"
 
+#if FF_API_INTFLOAT
 /* IEEE 80 bits extended float */
 typedef struct AVExtFloat  {
     uint8_t exponent[2];
@@ -36,5 +39,6 @@ attribute_deprecated double av_ext2dbl(const AVExtFloat ext) av_const;
 attribute_deprecated int64_t av_dbl2int(double d) av_const;
 attribute_deprecated int32_t av_flt2int(float d) av_const;
 attribute_deprecated AVExtFloat av_dbl2ext(double d) av_const;
+#endif /* FF_API_INTFLOAT */
 
 #endif /* AVUTIL_INTFLOAT_READWRITE_H */
index 7ea95fa503a535944be4e2cef5a5a282c33ec552..5fb476f948b765a9ea03e2ee93604c641098570c 100644 (file)
@@ -125,8 +125,19 @@ typedef struct AVClass {
     int (*query_ranges)(struct AVOptionRanges **, void *obj, const char *key, int flags);
 } AVClass;
 
-/* av_log API */
+/**
+ * @addtogroup lavu_log
+ *
+ * @{
+ *
+ * @defgroup lavu_log_constants Logging Constants
+ *
+ * @{
+ */
 
+/**
+ * Print no output.
+ */
 #define AV_LOG_QUIET    -8
 
 /**
@@ -153,7 +164,14 @@ typedef struct AVClass {
  */
 #define AV_LOG_WARNING  24
 
+/**
+ * Standard information.
+ */
 #define AV_LOG_INFO     32
+
+/**
+ * Detailed information.
+ */
 #define AV_LOG_VERBOSE  40
 
 /**
@@ -163,27 +181,97 @@ typedef struct AVClass {
 
 #define AV_LOG_MAX_OFFSET (AV_LOG_DEBUG - AV_LOG_QUIET)
 
+/**
+ * @}
+ */
+
 /**
  * Send the specified message to the log if the level is less than or equal
  * to the current av_log_level. By default, all logging messages are sent to
- * stderr. This behavior can be altered by setting a different av_vlog callback
+ * stderr. This behavior can be altered by setting a different logging callback
  * function.
+ * @see av_log_set_callback
  *
  * @param avcl A pointer to an arbitrary struct of which the first field is a
- * pointer to an AVClass struct.
- * @param level The importance level of the message, lower values signifying
- * higher importance.
+ *        pointer to an AVClass struct.
+ * @param level The importance level of the message expressed using a @ref
+ *        lavu_log_constants "Logging Constant".
  * @param fmt The format string (printf-compatible) that specifies how
- * subsequent arguments are converted to output.
- * @see av_vlog
+ *        subsequent arguments are converted to output.
  */
 void av_log(void *avcl, int level, const char *fmt, ...) av_printf_format(3, 4);
 
-void av_vlog(void *avcl, int level, const char *fmt, va_list);
+
+/**
+ * Send the specified message to the log if the level is less than or equal
+ * to the current av_log_level. By default, all logging messages are sent to
+ * stderr. This behavior can be altered by setting a different logging callback
+ * function.
+ * @see av_log_set_callback
+ *
+ * @param avcl A pointer to an arbitrary struct of which the first field is a
+ *        pointer to an AVClass struct.
+ * @param level The importance level of the message expressed using a @ref
+ *        lavu_log_constants "Logging Constant".
+ * @param fmt The format string (printf-compatible) that specifies how
+ *        subsequent arguments are converted to output.
+ * @param vl The arguments referenced by the format string.
+ */
+void av_vlog(void *avcl, int level, const char *fmt, va_list vl);
+
+/**
+ * Get the current log level
+ *
+ * @see lavu_log_constants
+ *
+ * @return Current log level
+ */
 int av_log_get_level(void);
-void av_log_set_level(int);
-void av_log_set_callback(void (*)(void*, int, const char*, va_list));
-void av_log_default_callback(void* ptr, int level, const char* fmt, va_list vl);
+
+/**
+ * Set the log level
+ *
+ * @see lavu_log_constants
+ *
+ * @param level Logging level
+ */
+void av_log_set_level(int level);
+
+/**
+ * Set the logging callback
+ *
+ * @note The callback must be thread safe, even if the application does not use
+ *       threads itself as some codecs are multithreaded.
+ *
+ * @see av_log_default_callback
+ *
+ * @param callback A logging function with a compatible signature.
+ */
+void av_log_set_callback(void (*callback)(void*, int, const char*, va_list));
+
+/**
+ * Default logging callback
+ *
+ * It prints the message to stderr, optionally colorizing it.
+ *
+ * @param avcl A pointer to an arbitrary struct of which the first field is a
+ *        pointer to an AVClass struct.
+ * @param level The importance level of the message expressed using a @ref
+ *        lavu_log_constants "Logging Constant".
+ * @param fmt The format string (printf-compatible) that specifies how
+ *        subsequent arguments are converted to output.
+ * @param vl The arguments referenced by the format string.
+ */
+void av_log_default_callback(void *avcl, int level, const char *fmt,
+                             va_list vl);
+
+/**
+ * Return the context name
+ *
+ * @param  ctx The AVClass context
+ *
+ * @return The AVClass class_name
+ */
 const char* av_default_item_name(void* ctx);
 AVClassCategory av_default_get_category(void *ptr);
 
@@ -219,4 +307,8 @@ void av_log_format_line(void *ptr, int level, const char *fmt, va_list vl,
 #define AV_LOG_SKIP_REPEATED 1
 void av_log_set_flags(int arg);
 
+/**
+ * @}
+ */
+
 #endif /* AVUTIL_LOG_H */
diff --git a/dependencies64/ffmpeg/include/libavutil/macros.h b/dependencies64/ffmpeg/include/libavutil/macros.h
new file mode 100644 (file)
index 0000000..4465323
--- /dev/null
@@ -0,0 +1,48 @@
+/*
+ * 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
+ * @ingroup lavu
+ * Utility Preprocessor macros
+ */
+
+#ifndef AVUTIL_MACROS_H
+#define AVUTIL_MACROS_H
+
+/**
+ * @addtogroup preproc_misc Preprocessor String Macros
+ *
+ * String manipulation macros
+ *
+ * @{
+ */
+
+#define AV_STRINGIFY(s)         AV_TOSTRING(s)
+#define AV_TOSTRING(s) #s
+
+#define AV_GLUE(a, b) a ## b
+#define AV_JOIN(a, b) AV_GLUE(a, b)
+
+/**
+ * @}
+ */
+
+#define AV_PRAGMA(s) _Pragma(#s)
+
+#endif /* AVUTIL_MACROS_H */
index 71f0392218d71fdbf6fc630681949a5ecaaf9298..88739e80b8fcb6416345d96b8c9e6aa6e49861d9 100644 (file)
@@ -45,6 +45,9 @@
 #ifndef M_PI
 #define M_PI           3.14159265358979323846  /* pi */
 #endif
+#ifndef M_PI_2
+#define M_PI_2         1.57079632679489661923  /* pi/2 */
+#endif
 #ifndef M_SQRT1_2
 #define M_SQRT1_2      0.70710678118654752440  /* 1/sqrt(2) */
 #endif
@@ -133,14 +136,28 @@ int64_t av_compare_mod(uint64_t a, uint64_t b, uint64_t mod);
  * Rescale a timestamp while preserving known durations.
  *
  * @param in_ts Input timestamp
- * @param in_tb Input timesbase
+ * @param in_tb Input timebase
  * @param fs_tb Duration and *last timebase
  * @param duration duration till the next call
- * @param out_tb Output timesbase
+ * @param out_tb Output timebase
  */
 int64_t av_rescale_delta(AVRational in_tb, int64_t in_ts,  AVRational fs_tb, int duration, int64_t *last, AVRational out_tb);
 
 /**
+ * Add a value to a timestamp.
+ *
+ * This function gurantees that when the same value is repeatly added that
+ * no accumulation of rounding errors occurs.
+ *
+ * @param ts Input timestamp
+ * @param ts_tb Input timestamp timebase
+ * @param inc value to add to ts
+ * @param inc_tb inc timebase
+ */
+int64_t av_add_stable(AVRational ts_tb, int64_t ts, AVRational inc_tb, int64_t inc);
+
+
+    /**
  * @}
  */
 
index fb23a690948ad833c5bc3fc3fc19515695751b10..703ce819364e1a0128ed4ca4999a6aa3f3e71e8d 100644 (file)
@@ -83,8 +83,7 @@
 void *av_malloc(size_t size) av_malloc_attrib av_alloc_size(1);
 
 /**
- * Helper function to allocate a block of size * nmemb bytes with
- * using av_malloc()
+ * Allocate a block of size * nmemb bytes with av_malloc().
  * @param nmemb Number of elements
  * @param size Size of the single element
  * @return Pointer to the allocated block, NULL if the block cannot
@@ -93,7 +92,7 @@ void *av_malloc(size_t size) av_malloc_attrib av_alloc_size(1);
  */
 av_alloc_size(1, 2) static inline void *av_malloc_array(size_t nmemb, size_t size)
 {
-    if (size <= 0 || nmemb >= INT_MAX / size)
+    if (!size || nmemb >= INT_MAX / size)
         return NULL;
     return av_malloc(nmemb * size);
 }
@@ -103,11 +102,17 @@ av_alloc_size(1, 2) static inline void *av_malloc_array(size_t nmemb, size_t siz
  * If ptr is NULL and size > 0, allocate a new block. If
  * size is zero, free the memory block pointed to by ptr.
  * @param ptr Pointer to a memory block already allocated with
- * av_malloc(z)() or av_realloc() or NULL.
- * @param size Size in bytes for the memory block to be allocated or
+ * av_realloc() or NULL.
+ * @param size Size in bytes of the memory block to be allocated or
  * reallocated.
- * @return Pointer to a newly reallocated block or NULL if the block
+ * @return Pointer to a newly-reallocated block or NULL if the block
  * cannot be reallocated or the function is used to free the memory block.
+ * @warning Pointers originating from the av_malloc() family of functions must
+ *          not be passed to av_realloc(). The former can be implemented using
+ *          memalign() (or other functions), and there is no guarantee that
+ *          pointers from such functions can be passed to realloc() at all.
+ *          The situation is undefined according to POSIX and may crash with
+ *          some libc implementations.
  * @see av_fast_realloc()
  */
 void *av_realloc(void *ptr, size_t size) av_alloc_size(2);
@@ -122,29 +127,60 @@ void *av_realloc(void *ptr, size_t size) av_alloc_size(2);
  */
 void *av_realloc_f(void *ptr, size_t nelem, size_t elsize);
 
+/**
+ * Allocate or reallocate a block of memory.
+ * If *ptr is NULL and size > 0, allocate a new block. If
+ * size is zero, free the memory block pointed to by ptr.
+ * @param   ptr Pointer to a pointer to a memory block already allocated
+ *          with av_realloc(), or pointer to a pointer to NULL.
+ *          The pointer is updated on success, or freed on failure.
+ * @param   size Size in bytes for the memory block to be allocated or
+ *          reallocated
+ * @return  Zero on success, an AVERROR error code on failure.
+ * @warning Pointers originating from the av_malloc() family of functions must
+ *          not be passed to av_reallocp(). The former can be implemented using
+ *          memalign() (or other functions), and there is no guarantee that
+ *          pointers from such functions can be passed to realloc() at all.
+ *          The situation is undefined according to POSIX and may crash with
+ *          some libc implementations.
+ */
+int av_reallocp(void *ptr, size_t size);
+
 /**
  * Allocate or reallocate an array.
  * If ptr is NULL and nmemb > 0, allocate a new block. If
  * nmemb is zero, free the memory block pointed to by ptr.
  * @param ptr Pointer to a memory block already allocated with
- * av_malloc(z)() or av_realloc() or NULL.
+ * av_realloc() or NULL.
  * @param nmemb Number of elements
  * @param size Size of the single element
- * @return Pointer to a newly reallocated block or NULL if the block
+ * @return Pointer to a newly-reallocated block or NULL if the block
  * cannot be reallocated or the function is used to free the memory block.
+ * @warning Pointers originating from the av_malloc() family of functions must
+ *          not be passed to av_realloc(). The former can be implemented using
+ *          memalign() (or other functions), and there is no guarantee that
+ *          pointers from such functions can be passed to realloc() at all.
+ *          The situation is undefined according to POSIX and may crash with
+ *          some libc implementations.
  */
 av_alloc_size(2, 3) void *av_realloc_array(void *ptr, size_t nmemb, size_t size);
 
 /**
- * Allocate or reallocate an array.
+ * Allocate or reallocate an array through a pointer to a pointer.
  * If *ptr is NULL and nmemb > 0, allocate a new block. If
  * nmemb is zero, free the memory block pointed to by ptr.
  * @param ptr Pointer to a pointer to a memory block already allocated
- * with av_malloc(z)() or av_realloc(), or pointer to a pointer to NULL.
+ * with av_realloc(), or pointer to a pointer to NULL.
  * The pointer is updated on success, or freed on failure.
  * @param nmemb Number of elements
  * @param size Size of the single element
  * @return Zero on success, an AVERROR error code on failure.
+ * @warning Pointers originating from the av_malloc() family of functions must
+ *          not be passed to av_realloc(). The former can be implemented using
+ *          memalign() (or other functions), and there is no guarantee that
+ *          pointers from such functions can be passed to realloc() at all.
+ *          The situation is undefined according to POSIX and may crash with
+ *          some libc implementations.
  */
 av_alloc_size(2, 3) int av_reallocp_array(void *ptr, size_t nmemb, size_t size);
 
@@ -181,8 +217,7 @@ void *av_mallocz(size_t size) av_malloc_attrib av_alloc_size(1);
 void *av_calloc(size_t nmemb, size_t size) av_malloc_attrib;
 
 /**
- * Helper function to allocate a block of size * nmemb bytes with
- * using av_mallocz()
+ * Allocate a block of size * nmemb bytes with av_mallocz().
  * @param nmemb Number of elements
  * @param size Size of the single element
  * @return Pointer to the allocated block, NULL if the block cannot
@@ -192,7 +227,7 @@ void *av_calloc(size_t nmemb, size_t size) av_malloc_attrib;
  */
 av_alloc_size(1, 2) static inline void *av_mallocz_array(size_t nmemb, size_t size)
 {
-    if (size <= 0 || nmemb >= INT_MAX / size)
+    if (!size || nmemb >= INT_MAX / size)
         return NULL;
     return av_mallocz(nmemb * size);
 }
@@ -200,7 +235,7 @@ av_alloc_size(1, 2) static inline void *av_mallocz_array(size_t nmemb, size_t si
 /**
  * Duplicate the string s.
  * @param s string to be duplicated
- * @return Pointer to a newly allocated string containing a
+ * @return Pointer to a newly-allocated string containing a
  * copy of s or NULL if the string cannot be allocated.
  */
 char *av_strdup(const char *s) av_malloc_attrib;
@@ -290,7 +325,7 @@ static inline int av_size_mult(size_t a, size_t b, size_t *r)
 void av_max_alloc(size_t max);
 
 /**
- * @brief deliberately overlapping memcpy implementation
+ * deliberately overlapping memcpy implementation
  * @param dst destination buffer
  * @param back how many bytes back we start (the initial size of the overlapping window), must be > 0
  * @param cnt number of bytes to copy, must be >= 0
@@ -300,6 +335,27 @@ void av_max_alloc(size_t max);
  */
 void av_memcpy_backptr(uint8_t *dst, int back, int cnt);
 
+/**
+ * Reallocate the given block if it is not large enough, otherwise do nothing.
+ *
+ * @see av_realloc
+ */
+void *av_fast_realloc(void *ptr, unsigned int *size, size_t min_size);
+
+/**
+ * Allocate a buffer, reusing the given one if large enough.
+ *
+ * Contrary to av_fast_realloc the current buffer contents might not be
+ * preserved and on error the old buffer is freed, thus no special
+ * handling to avoid memleaks is necessary.
+ *
+ * @param ptr pointer to pointer to already allocated buffer, overwritten with pointer to new buffer
+ * @param size size of the buffer *ptr points to
+ * @param min_size minimum size of *ptr buffer after returning, *ptr will be NULL and
+ *                 *size 0 if an error occurred.
+ */
+void av_fast_malloc(void *ptr, unsigned int *size, size_t min_size);
+
 /**
  * @}
  */
index 57b699220fcb44e4f75be07bed880bba0dd486ce..cd1ed7c19fdf96539366b93fb10bfb9851d22763 100644 (file)
     PIX_FMT_YUVJ420P,  ///< planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV420P and setting color_range
     PIX_FMT_YUVJ422P,  ///< planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV422P and setting color_range
     PIX_FMT_YUVJ444P,  ///< planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV444P and setting color_range
+#if FF_API_XVMC
     PIX_FMT_XVMC_MPEG2_MC,///< XVideo Motion Acceleration via common packet passing
     PIX_FMT_XVMC_MPEG2_IDCT,
+#endif /* FF_API_XVMC */
     PIX_FMT_UYVY422,   ///< packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1
     PIX_FMT_UYYVYY411, ///< packed YUV 4:1:1, 12bpp, Cb Y0 Y1 Cr Y2 Y3
     PIX_FMT_BGR8,      ///< packed RGB 3:3:2,  8bpp, (msb)2B 3G 3R(lsb)
     PIX_FMT_YUV440P,   ///< planar YUV 4:4:0 (1 Cr & Cb sample per 1x2 Y samples)
     PIX_FMT_YUVJ440P,  ///< planar YUV 4:4:0 full scale (JPEG), deprecated in favor of PIX_FMT_YUV440P and setting color_range
     PIX_FMT_YUVA420P,  ///< planar YUV 4:2:0, 20bpp, (1 Cr & Cb sample per 2x2 Y & A samples)
+#if FF_API_VDPAU
     PIX_FMT_VDPAU_H264,///< H.264 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
     PIX_FMT_VDPAU_MPEG1,///< MPEG-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
     PIX_FMT_VDPAU_MPEG2,///< MPEG-2 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
     PIX_FMT_VDPAU_WMV3,///< WMV3 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
     PIX_FMT_VDPAU_VC1, ///< VC-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
+#endif
     PIX_FMT_RGB48BE,   ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as big-endian
     PIX_FMT_RGB48LE,   ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as little-endian
 
@@ -95,7 +99,9 @@
     PIX_FMT_YUV422P16BE,  ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
     PIX_FMT_YUV444P16LE,  ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
     PIX_FMT_YUV444P16BE,  ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
+#if FF_API_VDPAU
     PIX_FMT_VDPAU_MPEG4,  ///< MPEG4 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
+#endif
     PIX_FMT_DXVA2_VLD,    ///< HW decoding through DXVA2, Picture.data[3] contains a LPDIRECT3DSURFACE9 pointer
 
     PIX_FMT_RGB444LE,  ///< packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), little-endian, most significant bits to 0
index 2344aa7b4da23a176c80bee9d3700669d3e71755..cd1b18e4c0b6ea716acc46f6be8e4547aa184780 100644 (file)
@@ -64,7 +64,7 @@
  *     int      bin_len;
  * } test_struct;
  *
- * static const AVOption options[] = {
+ * static const AVOption test_options[] = {
  *   { "test_int", "This is a test option of int type.", offsetof(test_struct, int_opt),
  *     AV_OPT_TYPE_INT, { .i64 = -1 }, INT_MIN, INT_MAX },
  *   { "test_str", "This is a test option of string type.", offsetof(test_struct, str_opt),
@@ -77,7 +77,7 @@
  * static const AVClass test_class = {
  *     .class_name = "test class",
  *     .item_name  = av_default_item_name,
- *     .option     = options,
+ *     .option     = test_options,
  *     .version    = LIBAVUTIL_VERSION_INT,
  * };
  * @endcode
  *
  * @subsection avoptions_implement_named_constants Named constants
  *      It is possible to create named constants for options. Simply set the unit
- *      field of the option the constants should apply to to a string and
+ *      field of the option the constants should apply to a string and
  *      create the constants themselves as options of type AV_OPT_TYPE_CONST
  *      with their unit field set to the same string.
  *      Their default_val field should contain the value of the named
@@ -233,6 +233,7 @@ enum AVOptionType{
     AV_OPT_TYPE_VIDEO_RATE = MKBETAG('V','R','A','T'), ///< offset must point to AVRational
     AV_OPT_TYPE_DURATION   = MKBETAG('D','U','R',' '),
     AV_OPT_TYPE_COLOR      = MKBETAG('C','O','L','R'),
+    AV_OPT_TYPE_CHANNEL_LAYOUT = MKBETAG('C','H','L','A'),
 #if FF_API_OLD_AVOPTIONS
     FF_OPT_TYPE_FLAGS = 0,
     FF_OPT_TYPE_INT,
@@ -281,10 +282,21 @@ typedef struct AVOption {
     int flags;
 #define AV_OPT_FLAG_ENCODING_PARAM  1   ///< a generic parameter which can be set by the user for muxing or encoding
 #define AV_OPT_FLAG_DECODING_PARAM  2   ///< a generic parameter which can be set by the user for demuxing or decoding
+#if FF_API_OPT_TYPE_METADATA
 #define AV_OPT_FLAG_METADATA        4   ///< some data extracted or inserted into the file like title, comment, ...
+#endif
 #define AV_OPT_FLAG_AUDIO_PARAM     8
 #define AV_OPT_FLAG_VIDEO_PARAM     16
 #define AV_OPT_FLAG_SUBTITLE_PARAM  32
+/**
+ * The option is inteded for exporting values to the caller.
+ */
+#define AV_OPT_FLAG_EXPORT          64
+/**
+ * The option may not be set through the AVOptions API, only read.
+ * This flag only makes sense when AV_OPT_FLAG_EXPORT is also set.
+ */
+#define AV_OPT_FLAG_READONLY        128
 #define AV_OPT_FLAG_FILTERING_PARAM (1<<16) ///< a generic parameter which can be set by the user for filtering
 //FIXME think about enc-audio, ... style flags
 
@@ -319,7 +331,7 @@ typedef struct AVOptionRanges {
 /**
  * Look for an option in obj. Look only for the options which
  * have the flags set as specified in mask and flags (that is,
- * for which it is the case that opt->flags & mask == flags).
+ * for which it is the case that (opt->flags & mask) == flags).
  *
  * @param[in] obj a pointer to a struct whose first element is a
  * pointer to an AVClass
@@ -657,6 +669,7 @@ int av_opt_set_image_size(void *obj, const char *name, int w, int h, int search_
 int av_opt_set_pixel_fmt (void *obj, const char *name, enum AVPixelFormat fmt, int search_flags);
 int av_opt_set_sample_fmt(void *obj, const char *name, enum AVSampleFormat fmt, int search_flags);
 int av_opt_set_video_rate(void *obj, const char *name, AVRational val, int search_flags);
+int av_opt_set_channel_layout(void *obj, const char *name, int64_t ch_layout, int search_flags);
 
 /**
  * Set a binary option to an integer list.
@@ -687,10 +700,10 @@ int av_opt_set_video_rate(void *obj, const char *name, AVRational val, int searc
  * @param[in] search_flags flags passed to av_opt_find2. I.e. if AV_OPT_SEARCH_CHILDREN
  * is passed here, then the option may be found in a child of obj.
  * @param[out] out_val value of the option will be written here
- * @return 0 on success, a negative error code otherwise
+ * @return >=0 on success, a negative error code otherwise
  */
 /**
- * @note the returned string will av_malloc()ed and must be av_free()ed by the caller
+ * @note the returned string will be av_malloc()ed and must be av_free()ed by the caller
  */
 int av_opt_get       (void *obj, const char *name, int search_flags, uint8_t   **out_val);
 int av_opt_get_int   (void *obj, const char *name, int search_flags, int64_t    *out_val);
@@ -700,6 +713,7 @@ int av_opt_get_image_size(void *obj, const char *name, int search_flags, int *w_
 int av_opt_get_pixel_fmt (void *obj, const char *name, int search_flags, enum AVPixelFormat *out_fmt);
 int av_opt_get_sample_fmt(void *obj, const char *name, int search_flags, enum AVSampleFormat *out_fmt);
 int av_opt_get_video_rate(void *obj, const char *name, int search_flags, AVRational *out_val);
+int av_opt_get_channel_layout(void *obj, const char *name, int search_flags, int64_t *ch_layout);
 /**
  * @}
  */
index 3eb35fc050199630ecedb83946993b38434aea8e..c80f0de3deeb7996788436421dbf833d3fa999d4 100644 (file)
@@ -98,6 +98,19 @@ int av_parse_video_rate(AVRational *rate, const char *str);
 int av_parse_color(uint8_t *rgba_color, const char *color_string, int slen,
                    void *log_ctx);
 
+/**
+ * Get the name of a color from the internal table of hard-coded named
+ * colors.
+ *
+ * This function is meant to enumerate the color names recognized by
+ * av_parse_color().
+ *
+ * @param color_idx index of the requested color, starting from 0
+ * @param rgbp      if not NULL, will point to a 3-elements array with the color value in RGB
+ * @return the color name string or NULL if color_idx is not in the array
+ */
+const char *av_get_known_color_name(int color_idx, const uint8_t **rgb);
+
 /**
  * Parse timestr and return in *time a corresponding number of
  * microseconds.
@@ -127,7 +140,7 @@ int av_parse_color(uint8_t *rgba_color, const char *color_string, int slen,
  * @endcode
  * @param duration flag which tells how to interpret timestr, if not
  * zero timestr is interpreted as a duration, otherwise as a date
- * @return 0 in case of success, a negative value corresponding to an
+ * @return >= 0 in case of success, a negative value corresponding to an
  * AVERROR code otherwise
  */
 int av_parse_time(int64_t *timeval, const char *timestr, int duration);
index b7b96b7cec2a3b97aaa19267d45070aba59b4133..e88bf9b92ac9f08fa4d7e5b6cfb0c95efc29ca72 100644 (file)
@@ -125,7 +125,7 @@ typedef struct AVPixFmtDescriptor{
 
 #if FF_API_PIX_FMT
 /**
- * @deprecate use the AV_PIX_FMT_FLAG_* flags
+ * @deprecated use the AV_PIX_FMT_FLAG_* flags
  */
 #define PIX_FMT_BE        AV_PIX_FMT_FLAG_BE
 #define PIX_FMT_PAL       AV_PIX_FMT_FLAG_PAL
@@ -203,7 +203,7 @@ const char *av_get_pix_fmt_name(enum AVPixelFormat pix_fmt);
 
 /**
  * Print in buf the string corresponding to the pixel format with
- * number pix_fmt, or an header if pix_fmt is negative.
+ * number pix_fmt, or a header if pix_fmt is negative.
  *
  * @param buf the buffer where to write the string
  * @param buf_size the size of buf
index 6d1045e3b565e5449a01c4f45465a8ef19b879cd..9418c4a2b9844c8e53ea3bc9be4503d5e96a823a 100644 (file)
@@ -28,7 +28,7 @@
  */
 
 #include "libavutil/avconfig.h"
-#include "libavutil/version.h"
+#include "version.h"
 
 #define AVPALETTE_SIZE 1024
 #define AVPALETTE_COUNT 256
@@ -59,8 +59,8 @@
  * allocating the picture.
  *
  * @note
- * Make sure that all newly added big-endian formats have pix_fmt & 1 == 1
- * and that all newly added little-endian formats have pix_fmt & 1 == 0.
+ * Make sure that all newly added big-endian formats have (pix_fmt & 1) == 1
+ * and that all newly added little-endian formats have (pix_fmt & 1) == 0.
  * This allows simpler detection of big vs little-endian.
  */
 enum AVPixelFormat {
@@ -80,8 +80,11 @@ enum AVPixelFormat {
     AV_PIX_FMT_YUVJ420P,  ///< planar YUV 4:2:0, 12bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV420P and setting color_range
     AV_PIX_FMT_YUVJ422P,  ///< planar YUV 4:2:2, 16bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV422P and setting color_range
     AV_PIX_FMT_YUVJ444P,  ///< planar YUV 4:4:4, 24bpp, full scale (JPEG), deprecated in favor of PIX_FMT_YUV444P and setting color_range
+#if FF_API_XVMC
     AV_PIX_FMT_XVMC_MPEG2_MC,///< XVideo Motion Acceleration via common packet passing
     AV_PIX_FMT_XVMC_MPEG2_IDCT,
+#define AV_PIX_FMT_XVMC AV_PIX_FMT_XVMC_MPEG2_IDCT
+#endif /* FF_API_XVMC */
     AV_PIX_FMT_UYVY422,   ///< packed YUV 4:2:2, 16bpp, Cb Y0 Cr Y1
     AV_PIX_FMT_UYYVYY411, ///< packed YUV 4:1:1, 12bpp, Cb Y0 Y1 Cr Y2 Y3
     AV_PIX_FMT_BGR8,      ///< packed RGB 3:3:2,  8bpp, (msb)2B 3G 3R(lsb)
@@ -103,11 +106,13 @@ enum AVPixelFormat {
     AV_PIX_FMT_YUV440P,   ///< planar YUV 4:4:0 (1 Cr & Cb sample per 1x2 Y samples)
     AV_PIX_FMT_YUVJ440P,  ///< planar YUV 4:4:0 full scale (JPEG), deprecated in favor of PIX_FMT_YUV440P and setting color_range
     AV_PIX_FMT_YUVA420P,  ///< planar YUV 4:2:0, 20bpp, (1 Cr & Cb sample per 2x2 Y & A samples)
+#if FF_API_VDPAU
     AV_PIX_FMT_VDPAU_H264,///< H.264 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
     AV_PIX_FMT_VDPAU_MPEG1,///< MPEG-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
     AV_PIX_FMT_VDPAU_MPEG2,///< MPEG-2 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
     AV_PIX_FMT_VDPAU_WMV3,///< WMV3 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
     AV_PIX_FMT_VDPAU_VC1, ///< VC-1 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
+#endif
     AV_PIX_FMT_RGB48BE,   ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as big-endian
     AV_PIX_FMT_RGB48LE,   ///< packed RGB 16:16:16, 48bpp, 16R, 16G, 16B, the 2-byte value for each R/G/B component is stored as little-endian
 
@@ -131,7 +136,9 @@ enum AVPixelFormat {
     AV_PIX_FMT_YUV422P16BE,  ///< planar YUV 4:2:2, 32bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
     AV_PIX_FMT_YUV444P16LE,  ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), little-endian
     AV_PIX_FMT_YUV444P16BE,  ///< planar YUV 4:4:4, 48bpp, (1 Cr & Cb sample per 1x1 Y samples), big-endian
+#if FF_API_VDPAU
     AV_PIX_FMT_VDPAU_MPEG4,  ///< MPEG4 HW decoding with VDPAU, data[0] contains a vdpau_render_state struct which contains the bitstream of the slices as well as various fields extracted from headers
+#endif
     AV_PIX_FMT_DXVA2_VLD,    ///< HW decoding through DXVA2, Picture.data[3] contains a LPDIRECT3DSURFACE9 pointer
 
     AV_PIX_FMT_RGB444LE,  ///< packed RGB 4:4:4, 16bpp, (msb)4A 4R 4G 4B(lsb), little-endian, most significant bits to 0
@@ -142,9 +149,11 @@ enum AVPixelFormat {
     AV_PIX_FMT_BGR48BE,   ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as big-endian
     AV_PIX_FMT_BGR48LE,   ///< packed RGB 16:16:16, 48bpp, 16B, 16G, 16R, the 2-byte value for each R/G/B component is stored as little-endian
 
-    //the following 10 formats have the disadvantage of needing 1 format for each bit depth, thus
-    //If you want to support multiple bit depths, then using AV_PIX_FMT_YUV420P16* with the bpp stored separately
-    //is better
+    /**
+     * The following 12 formats have the disadvantage of needing 1 format for each bit depth.
+     * Notice that each 9/10 bits sample is stored in 16 bits with extra padding.
+     * If you want to support multiple bit depths, then using AV_PIX_FMT_YUV420P16* with the bpp stored separately is better.
+     */
     AV_PIX_FMT_YUV420P9BE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
     AV_PIX_FMT_YUV420P9LE, ///< planar YUV 4:2:0, 13.5bpp, (1 Cr & Cb sample per 2x2 Y samples), little-endian
     AV_PIX_FMT_YUV420P10BE,///< planar YUV 4:2:0, 15bpp, (1 Cr & Cb sample per 2x2 Y samples), big-endian
@@ -204,6 +213,9 @@ enum AVPixelFormat {
 
     AV_PIX_FMT_XYZ12LE,      ///< packed XYZ 4:4:4, 36 bpp, (msb) 12X, 12Y, 12Z (lsb), the 2-byte value for each X/Y/Z is stored as little-endian, the 4 lower bits are set to 0
     AV_PIX_FMT_XYZ12BE,      ///< packed XYZ 4:4:4, 36 bpp, (msb) 12X, 12Y, 12Z (lsb), the 2-byte value for each X/Y/Z is stored as big-endian, the 4 lower bits are set to 0
+    AV_PIX_FMT_NV16,         ///< interleaved chroma YUV 4:2:2, 16bpp, (1 Cr & Cb sample per 2x1 Y samples)
+    AV_PIX_FMT_NV20LE,       ///< interleaved chroma YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), little-endian
+    AV_PIX_FMT_NV20BE,       ///< interleaved chroma YUV 4:2:2, 20bpp, (1 Cr & Cb sample per 2x1 Y samples), big-endian
 
 #ifndef AV_PIX_FMT_ABI_GIT_MASTER
     AV_PIX_FMT_RGBA64BE=0x123,  ///< packed RGBA 16:16:16:16, 64bpp, 16R, 16G, 16B, 16A, the 2-byte value for each R/G/B/A component is stored as big-endian
@@ -238,6 +250,23 @@ enum AVPixelFormat {
     AV_PIX_FMT_GBRAP16BE,   ///< planar GBRA 4:4:4:4 64bpp, big-endian
     AV_PIX_FMT_GBRAP16LE,   ///< planar GBRA 4:4:4:4 64bpp, little-endian
     AV_PIX_FMT_YUVJ411P,    ///< planar YUV 4:1:1, 12bpp, (1 Cr & Cb sample per 4x1 Y samples) full scale (JPEG), deprecated in favor of PIX_FMT_YUV411P and setting color_range
+
+    AV_PIX_FMT_BAYER_BGGR8,    ///< bayer, BGBG..(odd line), GRGR..(even line), 8-bit samples */
+    AV_PIX_FMT_BAYER_RGGB8,    ///< bayer, RGRG..(odd line), GBGB..(even line), 8-bit samples */
+    AV_PIX_FMT_BAYER_GBRG8,    ///< bayer, GBGB..(odd line), RGRG..(even line), 8-bit samples */
+    AV_PIX_FMT_BAYER_GRBG8,    ///< bayer, GRGR..(odd line), BGBG..(even line), 8-bit samples */
+    AV_PIX_FMT_BAYER_BGGR16LE, ///< bayer, BGBG..(odd line), GRGR..(even line), 16-bit samples, little-endian */
+    AV_PIX_FMT_BAYER_BGGR16BE, ///< bayer, BGBG..(odd line), GRGR..(even line), 16-bit samples, big-endian */
+    AV_PIX_FMT_BAYER_RGGB16LE, ///< bayer, RGRG..(odd line), GBGB..(even line), 16-bit samples, little-endian */
+    AV_PIX_FMT_BAYER_RGGB16BE, ///< bayer, RGRG..(odd line), GBGB..(even line), 16-bit samples, big-endian */
+    AV_PIX_FMT_BAYER_GBRG16LE, ///< bayer, GBGB..(odd line), RGRG..(even line), 16-bit samples, little-endian */
+    AV_PIX_FMT_BAYER_GBRG16BE, ///< bayer, GBGB..(odd line), RGRG..(even line), 16-bit samples, big-endian */
+    AV_PIX_FMT_BAYER_GRBG16LE, ///< bayer, GRGR..(odd line), BGBG..(even line), 16-bit samples, little-endian */
+    AV_PIX_FMT_BAYER_GRBG16BE, ///< bayer, GRGR..(odd line), BGBG..(even line), 16-bit samples, big-endian */
+#if !FF_API_XVMC
+    AV_PIX_FMT_XVMC,///< XVideo Motion Acceleration via common packet passing
+#endif /* !FF_API_XVMC */
+
     AV_PIX_FMT_NB,        ///< number of pixel formats, DO NOT USE THIS if you want to link with shared libav* because the number of formats might differ between versions
 
 #if FF_API_PIX_FMT
@@ -300,6 +329,13 @@ enum AVPixelFormat {
 #define AV_PIX_FMT_GBRP12    AV_PIX_FMT_NE(GBRP12BE,    GBRP12LE)
 #define AV_PIX_FMT_GBRP14    AV_PIX_FMT_NE(GBRP14BE,    GBRP14LE)
 #define AV_PIX_FMT_GBRP16    AV_PIX_FMT_NE(GBRP16BE,    GBRP16LE)
+#define AV_PIX_FMT_GBRAP16   AV_PIX_FMT_NE(GBRAP16BE,   GBRAP16LE)
+
+#define AV_PIX_FMT_BAYER_BGGR16 AV_PIX_FMT_NE(BAYER_BGGR16BE,    BAYER_BGGR16LE)
+#define AV_PIX_FMT_BAYER_RGGB16 AV_PIX_FMT_NE(BAYER_RGGB16BE,    BAYER_RGGB16LE)
+#define AV_PIX_FMT_BAYER_GBRG16 AV_PIX_FMT_NE(BAYER_GBRG16BE,    BAYER_GBRG16LE)
+#define AV_PIX_FMT_BAYER_GRBG16 AV_PIX_FMT_NE(BAYER_GRBG16BE,    BAYER_GRBG16LE)
+
 
 #define AV_PIX_FMT_YUVA420P9  AV_PIX_FMT_NE(YUVA420P9BE , YUVA420P9LE)
 #define AV_PIX_FMT_YUVA422P9  AV_PIX_FMT_NE(YUVA422P9BE , YUVA422P9LE)
@@ -312,6 +348,7 @@ enum AVPixelFormat {
 #define AV_PIX_FMT_YUVA444P16 AV_PIX_FMT_NE(YUVA444P16BE, YUVA444P16LE)
 
 #define AV_PIX_FMT_XYZ12      AV_PIX_FMT_NE(XYZ12BE, XYZ12LE)
+#define AV_PIX_FMT_NV20       AV_PIX_FMT_NE(NV20BE,  NV20LE)
 
 #if FF_API_PIX_FMT
 #define PixelFormat AVPixelFormat
index 417e29e5779fff362386781c7236db0f265854c5..7439701db23667fff7faa6a844fe4640a50dd731 100644 (file)
@@ -45,6 +45,17 @@ typedef struct AVRational{
     int den; ///< denominator
 } AVRational;
 
+/**
+ * Create a rational.
+ * Useful for compilers that do not support compound literals.
+ * @note  The return value is not reduced.
+ */
+static inline AVRational av_make_q(int num, int den)
+{
+    AVRational r = { num, den };
+    return r;
+}
+
 /**
  * Compare two rationals.
  * @param a first rational
@@ -55,7 +66,7 @@ typedef struct AVRational{
 static inline int av_cmp_q(AVRational a, AVRational b){
     const int64_t tmp= a.num * (int64_t)b.den - b.num * (int64_t)a.den;
 
-    if(tmp) return ((tmp ^ a.den ^ b.den)>>63)|1;
+    if(tmp) return (int)((tmp ^ a.den ^ b.den)>>63)|1;
     else if(b.den && a.den) return 0;
     else if(a.num && b.num) return (a.num>>31) - (b.num>>31);
     else                    return INT_MIN;
diff --git a/dependencies64/ffmpeg/include/libavutil/stereo3d.h b/dependencies64/ffmpeg/include/libavutil/stereo3d.h
new file mode 100644 (file)
index 0000000..8829da9
--- /dev/null
@@ -0,0 +1,147 @@
+/*
+ * Copyright (c) 2013 Vittorio Giovara <vittorio.giovara@gmail.com>
+ *
+ * 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
+ */
+
+#include <stdint.h>
+
+#include "frame.h"
+
+/**
+ * List of possible 3D Types
+ */
+enum AVStereo3DType {
+    /**
+     * Video is not stereoscopic (and metadata has to be there).
+     */
+    AV_STEREO3D_2D,
+
+    /**
+     * Views are next to each other.
+     *
+     *    LLLLRRRR
+     *    LLLLRRRR
+     *    LLLLRRRR
+     *    ...
+     */
+    AV_STEREO3D_SIDEBYSIDE,
+
+    /**
+     * Views are on top of each other.
+     *
+     *    LLLLLLLL
+     *    LLLLLLLL
+     *    RRRRRRRR
+     *    RRRRRRRR
+     */
+    AV_STEREO3D_TOPBOTTOM,
+
+    /**
+     * Views are alternated temporally.
+     *
+     *     frame0   frame1   frame2   ...
+     *    LLLLLLLL RRRRRRRR LLLLLLLL
+     *    LLLLLLLL RRRRRRRR LLLLLLLL
+     *    LLLLLLLL RRRRRRRR LLLLLLLL
+     *    ...      ...      ...
+     */
+    AV_STEREO3D_FRAMESEQUENCE,
+
+    /**
+     * Views are packed in a checkerboard-like structure per pixel.
+     *
+     *    LRLRLRLR
+     *    RLRLRLRL
+     *    LRLRLRLR
+     *    ...
+     */
+    AV_STEREO3D_CHECKERBOARD,
+
+    /**
+     * Views are next to each other, but when upscaling
+     * apply a checkerboard pattern.
+     *
+     *     LLLLRRRR          L L L L    R R R R
+     *     LLLLRRRR    =>     L L L L  R R R R
+     *     LLLLRRRR          L L L L    R R R R
+     *     LLLLRRRR           L L L L  R R R R
+     */
+    AV_STEREO3D_SIDEBYSIDE_QUINCUNX,
+
+    /**
+     * Views are packed per line, as if interlaced.
+     *
+     *    LLLLLLLL
+     *    RRRRRRRR
+     *    LLLLLLLL
+     *    ...
+     */
+    AV_STEREO3D_LINES,
+
+    /**
+     * Views are packed per column.
+     *
+     *    LRLRLRLR
+     *    LRLRLRLR
+     *    LRLRLRLR
+     *    ...
+     */
+    AV_STEREO3D_COLUMNS,
+};
+
+
+/**
+ * Inverted views, Right/Bottom represents the left view.
+ */
+#define AV_STEREO3D_FLAG_INVERT     (1 << 0)
+
+/**
+ * Stereo 3D type: this structure describes how two videos are packed
+ * within a single video surface, with additional information as needed.
+ *
+ * @note The struct must be allocated with av_stereo3d_alloc() and
+ *       its size is not a part of the public ABI.
+ */
+typedef struct AVStereo3D {
+    /**
+     * How views are packed within the video.
+     */
+    enum AVStereo3DType type;
+
+    /**
+     * Additional information about the frame packing.
+     */
+    int flags;
+} AVStereo3D;
+
+/**
+ * Allocate an AVStereo3D structure and set its fields to default values.
+ * The resulting struct can be freed using av_freep().
+ *
+ * @return An AVStereo3D filled with default values or NULL on failure.
+ */
+AVStereo3D *av_stereo3d_alloc(void);
+
+/**
+ * Allocate a complete AVFrameSideData and add it to the frame.
+ *
+ * @param frame The frame which side data is added to.
+ *
+ * @return The AVStereo3D structure to be filled by caller.
+ */
+AVStereo3D *av_stereo3d_create_side_data(AVFrame *frame);
index f63a08c579c2716473d6d4860d09c67cc2e34d23..f010a7ee38f008564f9bdff314cd0e7790e1b796 100644 (file)
 
 #include "common.h"
 
+#if defined(__cplusplus) && !defined(__STDC_FORMAT_MACROS) && !defined(PRId64)
+#error missing -D__STDC_FORMAT_MACROS / #define __STDC_FORMAT_MACROS
+#endif
+
 #define AV_TS_MAX_STRING_SIZE 32
 
 /**
index dafbeffca0bdb559cb877df63b33b13c570eb9fd..7f093cd583c93f6d5f1c27d4c476c0722652c19d 100644 (file)
 #ifndef AVUTIL_VERSION_H
 #define AVUTIL_VERSION_H
 
-/**
- * @defgroup preproc_misc Preprocessor String Macros
- *
- * String manipulation macros
- *
- * @{
- */
-
-#define AV_STRINGIFY(s)         AV_TOSTRING(s)
-#define AV_TOSTRING(s) #s
-
-#define AV_GLUE(a, b) a ## b
-#define AV_JOIN(a, b) AV_GLUE(a, b)
-
-#define AV_PRAGMA(s) _Pragma(#s)
-
-/**
- * @}
- */
+#include "macros.h"
 
 /**
  * @defgroup version_utils Library Version Macros
@@ -58,7 +40,6 @@
  * @}
  */
 
-
 /**
  * @file
  * @ingroup lavu
@@ -75,7 +56,7 @@
  */
 
 #define LIBAVUTIL_VERSION_MAJOR  52
-#define LIBAVUTIL_VERSION_MINOR  40
+#define LIBAVUTIL_VERSION_MINOR  66
 #define LIBAVUTIL_VERSION_MICRO 100
 
 #define LIBAVUTIL_VERSION_INT   AV_VERSION_INT(LIBAVUTIL_VERSION_MAJOR, \
  */
 
 #ifndef FF_API_GET_BITS_PER_SAMPLE_FMT
-#define FF_API_GET_BITS_PER_SAMPLE_FMT (LIBAVUTIL_VERSION_MAJOR < 53)
+#define FF_API_GET_BITS_PER_SAMPLE_FMT (LIBAVUTIL_VERSION_MAJOR < 54)
 #endif
 #ifndef FF_API_FIND_OPT
-#define FF_API_FIND_OPT                 (LIBAVUTIL_VERSION_MAJOR < 53)
+#define FF_API_FIND_OPT                 (LIBAVUTIL_VERSION_MAJOR < 54)
 #endif
 #ifndef FF_API_OLD_AVOPTIONS
-#define FF_API_OLD_AVOPTIONS            (LIBAVUTIL_VERSION_MAJOR < 53)
+#define FF_API_OLD_AVOPTIONS            (LIBAVUTIL_VERSION_MAJOR < 54)
 #endif
 #ifndef FF_API_PIX_FMT
-#define FF_API_PIX_FMT                  (LIBAVUTIL_VERSION_MAJOR < 53)
+#define FF_API_PIX_FMT                  (LIBAVUTIL_VERSION_MAJOR < 54)
 #endif
 #ifndef FF_API_CONTEXT_SIZE
-#define FF_API_CONTEXT_SIZE             (LIBAVUTIL_VERSION_MAJOR < 53)
+#define FF_API_CONTEXT_SIZE             (LIBAVUTIL_VERSION_MAJOR < 54)
 #endif
 #ifndef FF_API_PIX_FMT_DESC
-#define FF_API_PIX_FMT_DESC             (LIBAVUTIL_VERSION_MAJOR < 53)
+#define FF_API_PIX_FMT_DESC             (LIBAVUTIL_VERSION_MAJOR < 54)
 #endif
 #ifndef FF_API_AV_REVERSE
-#define FF_API_AV_REVERSE               (LIBAVUTIL_VERSION_MAJOR < 53)
+#define FF_API_AV_REVERSE               (LIBAVUTIL_VERSION_MAJOR < 54)
 #endif
 #ifndef FF_API_AUDIOCONVERT
-#define FF_API_AUDIOCONVERT             (LIBAVUTIL_VERSION_MAJOR < 53)
+#define FF_API_AUDIOCONVERT             (LIBAVUTIL_VERSION_MAJOR < 54)
 #endif
 #ifndef FF_API_CPU_FLAG_MMX2
-#define FF_API_CPU_FLAG_MMX2            (LIBAVUTIL_VERSION_MAJOR < 53)
+#define FF_API_CPU_FLAG_MMX2            (LIBAVUTIL_VERSION_MAJOR < 54)
 #endif
 #ifndef FF_API_SAMPLES_UTILS_RETURN_ZERO
-#define FF_API_SAMPLES_UTILS_RETURN_ZERO (LIBAVUTIL_VERSION_MAJOR < 53)
+#define FF_API_SAMPLES_UTILS_RETURN_ZERO (LIBAVUTIL_VERSION_MAJOR < 54)
 #endif
 #ifndef FF_API_LLS_PRIVATE
-#define FF_API_LLS_PRIVATE              (LIBAVUTIL_VERSION_MAJOR < 53)
+#define FF_API_LLS_PRIVATE              (LIBAVUTIL_VERSION_MAJOR < 54)
+#endif
+#ifndef FF_API_LLS1
+#define FF_API_LLS1                     (LIBAVUTIL_VERSION_MAJOR < 54)
 #endif
 #ifndef FF_API_AVFRAME_LAVC
-#define FF_API_AVFRAME_LAVC             (LIBAVUTIL_VERSION_MAJOR < 53)
+#define FF_API_AVFRAME_LAVC             (LIBAVUTIL_VERSION_MAJOR < 54)
+#endif
+#ifndef FF_API_VDPAU
+#define FF_API_VDPAU                    (LIBAVUTIL_VERSION_MAJOR < 54)
+#endif
+#ifndef FF_API_GET_CHANNEL_LAYOUT_COMPAT
+#define FF_API_GET_CHANNEL_LAYOUT_COMPAT (LIBAVUTIL_VERSION_MAJOR < 54)
+#endif
+#ifndef FF_API_OLD_OPENCL
+#define FF_API_OLD_OPENCL               (LIBAVUTIL_VERSION_MAJOR < 54)
+#endif
+#ifndef FF_API_XVMC
+#define FF_API_XVMC                     (LIBAVUTIL_VERSION_MAJOR < 54)
+#endif
+#ifndef FF_API_INTFLOAT
+#define FF_API_INTFLOAT                 (LIBAVUTIL_VERSION_MAJOR < 54)
+#endif
+#ifndef FF_API_OPT_TYPE_METADATA
+#define FF_API_OPT_TYPE_METADATA        (LIBAVUTIL_VERSION_MAJOR < 54)
 #endif
 
 /**
index 0899c92bc8acd43cfeeba9bd66ce456279495ab8..6f1e71e345dccd1cd96e28915c6ad9aa1baa27ee 100644 (file)
@@ -25,6 +25,8 @@
 #include <stdint.h>
 
 /**
+ * @file
+ * @brief Public header for libavutil XTEA algorithm
  * @defgroup lavu_xtea XTEA
  * @ingroup lavu_crypto
  * @{
index 95e8a5a09310bfebe5d09697a5fba7a9cbb79f32..4ba008e728ca80eb939ff02be0116d577f6c5d7b 100644 (file)
@@ -44,8 +44,8 @@
  * matrix):
  * @code
  * SwrContext *swr = swr_alloc();
- * av_opt_set_int(swr, "in_channel_layout",  AV_CH_LAYOUT_5POINT1, 0);
- * av_opt_set_int(swr, "out_channel_layout", AV_CH_LAYOUT_STEREO,  0);
+ * av_opt_set_channel_layout(swr, "in_channel_layout",  AV_CH_LAYOUT_5POINT1, 0);
+ * av_opt_set_channel_layout(swr, "out_channel_layout", AV_CH_LAYOUT_STEREO,  0);
  * av_opt_set_int(swr, "in_sample_rate",     48000,                0);
  * av_opt_set_int(swr, "out_sample_rate",    44100,                0);
  * av_opt_set_sample_fmt(swr, "in_sample_fmt",  AV_SAMPLE_FMT_FLTP, 0);
@@ -84,8 +84,8 @@
  *                                      input, in_samples);
  *     handle_output(output, out_samples);
  *     av_freep(&output);
- *  }
- *  @endcode
+ * }
+ * @endcode
  *
  * When the conversion is finished, the conversion
  * context and everything associated with it must be freed with swr_free().
@@ -165,6 +165,13 @@ struct SwrContext *swr_alloc(void);
  */
 int swr_init(struct SwrContext *s);
 
+/**
+ * Check whether an swr context has been initialized or not.
+ *
+ * @return positive if it has been initialized, 0 if not initialized
+ */
+int swr_is_initialized(struct SwrContext *s);
+
 /**
  * Allocate SwrContext if needed and set/reset common parameters.
  *
index 8272b763b9d135dacb1f276f396858f535d30e55..3a9287519c61b8ca46918d0e6d0523e320fe8e79 100644 (file)
@@ -29,8 +29,8 @@
 #include "libavutil/avutil.h"
 
 #define LIBSWRESAMPLE_VERSION_MAJOR 0
-#define LIBSWRESAMPLE_VERSION_MINOR 17
-#define LIBSWRESAMPLE_VERSION_MICRO 103
+#define LIBSWRESAMPLE_VERSION_MINOR 18
+#define LIBSWRESAMPLE_VERSION_MICRO 100
 
 #define LIBSWRESAMPLE_VERSION_INT  AV_VERSION_INT(LIBSWRESAMPLE_VERSION_MAJOR, \
                                                   LIBSWRESAMPLE_VERSION_MINOR, \
index 42702b7aa200009fcc9fdd0ac64cc77add242a8d..25c8b5e981a81b32d7ac33b67636c7d37dd7daf2 100644 (file)
 
 /**
  * @file
- * @ingroup lsws
+ * @ingroup libsws
  * external API header
  */
 
-/**
- * @defgroup lsws Libswscale
- * @{
- */
-
 #include <stdint.h>
 
 #include "libavutil/avutil.h"
@@ -40,6 +35,9 @@
 #include "version.h"
 
 /**
+ * @defgroup libsws Color conversion and scaling
+ * @{
+ *
  * Return the LIBSWSCALE_VERSION_INT constant.
  */
 unsigned swscale_version(void);
index 1c4520926a1e788390998464810a3a1568d15008..6f82d3d059cf895aaccb619c904c1e23edae4c60 100644 (file)
  * swscale version macros
  */
 
-#include "libavutil/avutil.h"
+#include "libavutil/version.h"
 
 #define LIBSWSCALE_VERSION_MAJOR 2
-#define LIBSWSCALE_VERSION_MINOR 4
-#define LIBSWSCALE_VERSION_MICRO 100
+#define LIBSWSCALE_VERSION_MINOR 5
+#define LIBSWSCALE_VERSION_MICRO 102
 
 #define LIBSWSCALE_VERSION_INT  AV_VERSION_INT(LIBSWSCALE_VERSION_MAJOR, \
                                                LIBSWSCALE_VERSION_MINOR, \
diff --git a/dependencies64/ffmpeg/lib/avcodec-55.def b/dependencies64/ffmpeg/lib/avcodec-55.def
new file mode 100644 (file)
index 0000000..4faa82a
--- /dev/null
@@ -0,0 +1,290 @@
+EXPORTS
+    audio_resample
+    audio_resample_close
+    av_audio_convert
+    av_audio_convert_alloc
+    av_audio_convert_free
+    av_audio_resample_init
+    av_bitstream_filter_close
+    av_bitstream_filter_filter
+    av_bitstream_filter_init
+    av_bitstream_filter_next
+    av_codec_get_chroma_intra_matrix
+    av_codec_get_codec_descriptor
+    av_codec_get_lowres
+    av_codec_get_max_lowres
+    av_codec_get_pkt_timebase
+    av_codec_get_seek_preroll
+    av_codec_is_decoder
+    av_codec_is_encoder
+    av_codec_next
+    av_codec_set_chroma_intra_matrix
+    av_codec_set_codec_descriptor
+    av_codec_set_lowres
+    av_codec_set_pkt_timebase
+    av_codec_set_seek_preroll
+    av_copy_packet
+    av_copy_packet_side_data
+    av_dct_calc
+    av_dct_end
+    av_dct_init
+    av_destruct_packet
+    av_dup_packet
+    av_fast_malloc@LIBAVCODEC_55
+    av_fast_padded_malloc
+    av_fast_padded_mallocz
+    av_fast_realloc@LIBAVCODEC_55
+    av_fft_calc
+    av_fft_end
+    av_fft_init
+    av_fft_permute
+    av_free_packet
+    av_get_audio_frame_duration
+    av_get_bits_per_sample
+    av_get_codec_tag_string
+    av_get_exact_bits_per_sample
+    av_get_pcm_codec
+    av_get_profile_name
+    av_grow_packet
+    av_hwaccel_next
+    av_imdct_calc
+    av_imdct_half
+    av_init_packet
+    av_lockmgr_register
+    av_log_ask_for_sample
+    av_log_missing_feature
+    av_mdct_calc
+    av_mdct_end
+    av_mdct_init
+    av_new_packet
+    av_packet_copy_props
+    av_packet_free_side_data
+    av_packet_from_data
+    av_packet_get_side_data
+    av_packet_merge_side_data
+    av_packet_move_ref
+    av_packet_new_side_data
+    av_packet_pack_dictionary
+    av_packet_ref
+    av_packet_shrink_side_data
+    av_packet_split_side_data
+    av_packet_unpack_dictionary
+    av_packet_unref
+    av_parser_change
+    av_parser_close
+    av_parser_init
+    av_parser_next
+    av_parser_parse2
+    av_picture_copy
+    av_picture_crop
+    av_picture_pad
+    av_rdft_calc
+    av_rdft_end
+    av_rdft_init
+    av_register_bitstream_filter
+    av_register_codec_parser
+    av_register_hwaccel
+    av_resample
+    av_resample_close
+    av_resample_compensate
+    av_resample_init
+    av_shrink_packet
+    av_xiphlacing
+    available_bits
+    avcodec_align_dimensions
+    avcodec_align_dimensions2
+    avcodec_alloc_context3
+    avcodec_alloc_frame
+    avcodec_chroma_pos_to_enum
+    avcodec_close
+    avcodec_configuration
+    avcodec_copy_context
+    avcodec_decode_audio3
+    avcodec_decode_audio4
+    avcodec_decode_subtitle2
+    avcodec_decode_video2
+    avcodec_default_execute
+    avcodec_default_execute2
+    avcodec_default_get_buffer
+    avcodec_default_get_buffer2
+    avcodec_default_get_format
+    avcodec_default_reget_buffer
+    avcodec_default_release_buffer
+    avcodec_descriptor_get
+    avcodec_descriptor_get_by_name
+    avcodec_descriptor_next
+    avcodec_encode_audio
+    avcodec_encode_audio2
+    avcodec_encode_subtitle
+    avcodec_encode_video
+    avcodec_encode_video2
+    avcodec_enum_to_chroma_pos
+    avcodec_fill_audio_frame
+    avcodec_find_best_pix_fmt2
+    avcodec_find_best_pix_fmt_of_2
+    avcodec_find_best_pix_fmt_of_list
+    avcodec_find_decoder
+    avcodec_find_decoder_by_name
+    avcodec_find_encoder
+    avcodec_find_encoder_by_name
+    avcodec_flush_buffers
+    avcodec_free_frame
+    avcodec_get_chroma_sub_sample
+    avcodec_get_class
+    avcodec_get_context_defaults3
+    avcodec_get_edge_width
+    avcodec_get_frame_class
+    avcodec_get_frame_defaults
+    avcodec_get_name
+    avcodec_get_pix_fmt_loss
+    avcodec_get_subtitle_rect_class
+    avcodec_get_type
+    avcodec_is_open
+    avcodec_license
+    avcodec_open2
+    avcodec_pix_fmt_to_codec_tag
+    avcodec_register
+    avcodec_register_all
+    avcodec_set_dimensions
+    avcodec_string
+    avcodec_version
+    aver_isf_history
+    avpicture_alloc
+    avpicture_deinterlace
+    avpicture_fill
+    avpicture_free
+    avpicture_get_size
+    avpicture_layout
+    avpriv_aac_parse_header
+    avpriv_ac3_channel_layout_tab DATA
+    avpriv_ac3_parse_header
+    avpriv_ac3_parse_header2
+    avpriv_adx_decode_header
+    avpriv_align_put_bits
+    avpriv_bprint_to_extradata
+    avpriv_color_frame
+    avpriv_copy_bits
+    avpriv_copy_pce_data
+    avpriv_dca_sample_rates DATA
+    avpriv_dirac_parse_sequence_header
+    avpriv_dnxhd_get_frame_size
+    avpriv_do_elbg
+    avpriv_dsputil_init
+    avpriv_dv_codec_profile
+    avpriv_dv_frame_profile
+    avpriv_dv_frame_profile2
+    avpriv_find_pix_fmt
+    avpriv_find_start_code
+    avpriv_flac_is_extradata_valid
+    avpriv_flac_parse_block_header
+    avpriv_flac_parse_streaminfo
+    avpriv_h264_has_num_reorder_frames
+    avpriv_init_elbg
+    avpriv_lock_avformat
+    avpriv_mjpeg_bits_ac_chrominance DATA
+    avpriv_mjpeg_bits_ac_luminance DATA
+    avpriv_mjpeg_bits_dc_chrominance DATA
+    avpriv_mjpeg_bits_dc_luminance DATA
+    avpriv_mjpeg_val_ac_chrominance DATA
+    avpriv_mjpeg_val_ac_luminance DATA
+    avpriv_mjpeg_val_dc DATA
+    avpriv_mpa_bitrate_tab DATA
+    avpriv_mpa_decode_header
+    avpriv_mpa_decode_header2
+    avpriv_mpa_freq_tab DATA
+    avpriv_mpeg4audio_get_config
+    avpriv_mpeg4audio_sample_rates DATA
+    avpriv_mpegaudio_decode_header
+    avpriv_put_string
+    avpriv_split_xiph_headers
+    avpriv_tak_parse_streaminfo
+    avpriv_toupper4
+    avpriv_unlock_avformat
+    avpriv_vorbis_parse_extradata
+    avpriv_vorbis_parse_frame
+    avpriv_vorbis_parse_frame_flags
+    avpriv_vorbis_parse_reset
+    avsubtitle_free
+    dsputil_init
+    ff_aanscales DATA
+    ff_dct32_fixed
+    ff_dct32_float
+    ff_dct32_float_avx DATA
+    ff_dct32_float_sse DATA
+    ff_dct32_float_sse2 DATA
+    ff_dct_common_init
+    ff_dct_encode_init
+    ff_dct_encode_init_x86
+    ff_dct_end
+    ff_dct_init
+    ff_dct_init_x86
+    ff_dct_quantize_c
+    ff_dnxhd_cid_table DATA
+    ff_dnxhd_get_cid_table
+    ff_dsputil_init
+    ff_faandct
+    ff_faandct248
+    ff_faanidct
+    ff_faanidct_add
+    ff_faanidct_put
+    ff_fdct248_islow_10
+    ff_fdct248_islow_8
+    ff_fdct_ifast
+    ff_fdct_ifast248
+    ff_fdct_mmx
+    ff_fdct_mmxext
+    ff_fdct_sse2
+    ff_fft_calc_avx DATA
+    ff_fft_calc_sse DATA
+    ff_fft_end
+    ff_fft_end_fixed
+    ff_fft_end_fixed_32
+    ff_fft_init
+    ff_fft_init_fixed
+    ff_fft_init_fixed_32
+    ff_fft_init_x86
+    ff_fft_lut_init
+    ff_fft_permute_sse DATA
+    ff_idct_xvid_mmx
+    ff_idct_xvid_mmx_add
+    ff_idct_xvid_mmx_put
+    ff_idct_xvid_mmxext
+    ff_idct_xvid_mmxext_add
+    ff_idct_xvid_mmxext_put
+    ff_idct_xvid_sse2
+    ff_idct_xvid_sse2_add
+    ff_idct_xvid_sse2_put
+    ff_jpeg_fdct_islow_10
+    ff_jpeg_fdct_islow_8
+    ff_mdct_calc_c
+    ff_mdct_calc_c_fixed
+    ff_mdct_calc_c_fixed_32
+    ff_mdct_calcw_c
+    ff_mdct_end
+    ff_mdct_end_fixed
+    ff_mdct_end_fixed_32
+    ff_mdct_init
+    ff_mdct_init_fixed
+    ff_mdct_init_fixed_32
+    ff_mdct_win_fixed DATA
+    ff_mdct_win_float DATA
+    ff_prores_idct_put_10_sse2 DATA
+    ff_raw_pix_fmt_tags DATA
+    ff_rdft_end
+    ff_rdft_init
+    ff_simple_idct248_put
+    ff_simple_idct44_add
+    ff_simple_idct48_add
+    ff_simple_idct84_add
+    ff_simple_idct_10
+    ff_simple_idct_12
+    ff_simple_idct_8
+    ff_simple_idct_add_10
+    ff_simple_idct_add_12
+    ff_simple_idct_add_8
+    ff_simple_idct_add_mmx
+    ff_simple_idct_mmx
+    ff_simple_idct_put_10
+    ff_simple_idct_put_12
+    ff_simple_idct_put_8
+    ff_simple_idct_put_mmx
index 7087f20f4832bb22856e176cba59be755c43413c..7aa08b85abab17c89ea0d29a2a57923b1b16d8b7 100644 (file)
Binary files a/dependencies64/ffmpeg/lib/avcodec.lib and b/dependencies64/ffmpeg/lib/avcodec.lib differ
diff --git a/dependencies64/ffmpeg/lib/avdevice-55.def b/dependencies64/ffmpeg/lib/avdevice-55.def
new file mode 100644 (file)
index 0000000..1a0e8e4
--- /dev/null
@@ -0,0 +1,9 @@
+EXPORTS
+    avdevice_app_to_dev_control_message
+    avdevice_configuration
+    avdevice_dev_to_app_control_message
+    avdevice_free_list_devices
+    avdevice_license
+    avdevice_list_devices
+    avdevice_register_all
+    avdevice_version
index 4c67a0f776690954cb395fbd5db36019b6c80f33..d326e82f0ef16094d014e0ec9a2401130de6b6e5 100644 (file)
Binary files a/dependencies64/ffmpeg/lib/avdevice.lib and b/dependencies64/ffmpeg/lib/avdevice.lib differ
diff --git a/dependencies64/ffmpeg/lib/avfilter-4.def b/dependencies64/ffmpeg/lib/avfilter-4.def
new file mode 100644 (file)
index 0000000..50bade1
--- /dev/null
@@ -0,0 +1,85 @@
+EXPORTS
+    av_2_vs_pixel_format
+    av_abuffersink_params_alloc
+    av_buffersink_get_buffer_ref
+    av_buffersink_get_frame
+    av_buffersink_get_frame_flags
+    av_buffersink_get_frame_rate
+    av_buffersink_get_samples
+    av_buffersink_params_alloc
+    av_buffersink_poll_frame
+    av_buffersink_read
+    av_buffersink_read_samples
+    av_buffersink_set_frame_size
+    av_buffersrc_add_frame
+    av_buffersrc_add_frame_flags
+    av_buffersrc_add_ref
+    av_buffersrc_buffer
+    av_buffersrc_get_nb_failed_requests
+    av_buffersrc_write_frame
+    av_filter_next
+    avfilter_add_matrix
+    avfilter_all_channel_layouts DATA
+    avfilter_config_links
+    avfilter_configuration
+    avfilter_copy_buf_props
+    avfilter_copy_buffer_ref_props
+    avfilter_copy_frame_props
+    avfilter_fill_frame_from_audio_buffer_ref
+    avfilter_fill_frame_from_buffer_ref
+    avfilter_fill_frame_from_video_buffer_ref
+    avfilter_free
+    avfilter_get_audio_buffer_ref_from_arrays
+    avfilter_get_audio_buffer_ref_from_arrays_channels
+    avfilter_get_audio_buffer_ref_from_frame
+    avfilter_get_buffer_ref_from_frame
+    avfilter_get_by_name
+    avfilter_get_class
+    avfilter_get_matrix
+    avfilter_get_video_buffer_ref_from_arrays
+    avfilter_get_video_buffer_ref_from_frame
+    avfilter_graph_add_filter
+    avfilter_graph_alloc
+    avfilter_graph_alloc_filter
+    avfilter_graph_config
+    avfilter_graph_create_filter
+    avfilter_graph_dump
+    avfilter_graph_free
+    avfilter_graph_get_filter
+    avfilter_graph_parse
+    avfilter_graph_parse2
+    avfilter_graph_parse_ptr
+    avfilter_graph_queue_command
+    avfilter_graph_request_oldest
+    avfilter_graph_send_command
+    avfilter_graph_set_auto_convert
+    avfilter_init_dict
+    avfilter_init_filter
+    avfilter_init_str
+    avfilter_inout_alloc
+    avfilter_inout_free
+    avfilter_insert_filter
+    avfilter_license
+    avfilter_link
+    avfilter_link_free
+    avfilter_link_get_channels
+    avfilter_link_set_closed
+    avfilter_make_format64_list
+    avfilter_mul_matrix
+    avfilter_next
+    avfilter_open
+    avfilter_pad_count
+    avfilter_pad_get_name
+    avfilter_pad_get_type
+    avfilter_process_command
+    avfilter_ref_buffer
+    avfilter_ref_get_channels
+    avfilter_register
+    avfilter_register_all
+    avfilter_sub_matrix
+    avfilter_transform
+    avfilter_uninit
+    avfilter_unref_buffer
+    avfilter_unref_bufferp
+    avfilter_version
+    ff_default_query_formats
index 6bd9ec4e524ef81b3ca023a8d31be65281d9c1ed..4bbf8f898f452b952b7ce36d0ed653e807dbfb0c 100644 (file)
Binary files a/dependencies64/ffmpeg/lib/avfilter.lib and b/dependencies64/ffmpeg/lib/avfilter.lib differ
diff --git a/dependencies64/ffmpeg/lib/avformat-55.def b/dependencies64/ffmpeg/lib/avformat-55.def
new file mode 100644 (file)
index 0000000..6cc2bec
--- /dev/null
@@ -0,0 +1,163 @@
+EXPORTS
+    av_add_index_entry
+    av_append_packet
+    av_close_input_file
+    av_codec_get_id
+    av_codec_get_tag
+    av_codec_get_tag2
+    av_convert_lang_to
+    av_demuxer_open
+    av_dump_format
+    av_filename_number_test
+    av_find_best_stream
+    av_find_default_stream_index
+    av_find_input_format
+    av_find_program_from_stream
+    av_find_stream_info
+    av_fmt_ctx_get_duration_estimation_method
+    av_format_get_audio_codec
+    av_format_get_control_message_cb
+    av_format_get_metadata_header_padding
+    av_format_get_opaque
+    av_format_get_probe_score
+    av_format_get_subtitle_codec
+    av_format_get_video_codec
+    av_format_set_audio_codec
+    av_format_set_control_message_cb
+    av_format_set_metadata_header_padding
+    av_format_set_opaque
+    av_format_set_subtitle_codec
+    av_format_set_video_codec
+    av_get_frame_filename
+    av_get_output_timestamp
+    av_get_packet
+    av_guess_codec
+    av_guess_format
+    av_guess_frame_rate
+    av_guess_sample_aspect_ratio
+    av_hex_dump
+    av_hex_dump_log
+    av_iformat_next
+    av_index_search_timestamp
+    av_interleaved_write_frame
+    av_interleaved_write_uncoded_frame
+    av_match_ext
+    av_new_program
+    av_new_stream
+    av_oformat_next
+    av_pkt_dump2
+    av_pkt_dump_log2
+    av_probe_input_buffer
+    av_probe_input_buffer2
+    av_probe_input_format
+    av_probe_input_format2
+    av_probe_input_format3
+    av_read_frame
+    av_read_packet
+    av_read_pause
+    av_read_play
+    av_register_all
+    av_register_input_format
+    av_register_output_format
+    av_sdp_create
+    av_seek_frame
+    av_set_pts_info
+    av_stream_get_r_frame_rate
+    av_stream_set_r_frame_rate
+    av_url_split
+    av_write_frame
+    av_write_trailer
+    av_write_uncoded_frame
+    av_write_uncoded_frame_query
+    avformat_alloc_context
+    avformat_alloc_output_context
+    avformat_alloc_output_context2
+    avformat_close_input
+    avformat_configuration
+    avformat_find_stream_info
+    avformat_free_context
+    avformat_get_class
+    avformat_get_mov_audio_tags
+    avformat_get_mov_video_tags
+    avformat_get_riff_audio_tags
+    avformat_get_riff_video_tags
+    avformat_license
+    avformat_match_stream_specifier
+    avformat_network_deinit
+    avformat_network_init
+    avformat_new_stream
+    avformat_open_input
+    avformat_query_codec
+    avformat_queue_attached_pictures
+    avformat_seek_file
+    avformat_version
+    avformat_write_header
+    avio_alloc_context
+    avio_check
+    avio_close
+    avio_close_dyn_buf
+    avio_closep
+    avio_enum_protocols
+    avio_find_protocol_name
+    avio_flush
+    avio_get_str
+    avio_get_str16be
+    avio_get_str16le
+    avio_open
+    avio_open2
+    avio_open_dyn_buf
+    avio_pause
+    avio_printf
+    avio_put_str
+    avio_put_str16le
+    avio_r8
+    avio_rb16
+    avio_rb24
+    avio_rb32
+    avio_rb64
+    avio_read
+    avio_rl16
+    avio_rl24
+    avio_rl32
+    avio_rl64
+    avio_seek
+    avio_seek_time
+    avio_size
+    avio_skip
+    avio_w8
+    avio_wb16
+    avio_wb24
+    avio_wb32
+    avio_wb64
+    avio_wl16
+    avio_wl24
+    avio_wl32
+    avio_wl64
+    avio_write
+    avpriv_dv_get_packet
+    avpriv_dv_init_demux
+    avpriv_dv_produce_packet
+    avpriv_new_chapter
+    avpriv_set_pts_info
+    ff_codec_get_id
+    ff_inet_aton
+    ff_mpegts_parse_close
+    ff_mpegts_parse_open
+    ff_mpegts_parse_packet
+    ff_rtp_get_local_rtcp_port
+    ff_rtp_get_local_rtp_port
+    ff_rtsp_parse_line
+    ff_socket_nonblock
+    ffio_open_dyn_packet_buf
+    ffio_set_buf_size
+    ffurl_close
+    ffurl_open
+    ffurl_protocol_next
+    ffurl_read_complete
+    ffurl_seek
+    ffurl_size
+    ffurl_write
+    get_codec_guid
+    get_crc_table
+    get_extension
+    url_feof
index 66e43149ab75d8900cba927bb09780a51774228e..0c47516aad71d8ab61a576f4dc3e0274af0058cc 100644 (file)
Binary files a/dependencies64/ffmpeg/lib/avformat.lib and b/dependencies64/ffmpeg/lib/avformat.lib differ
diff --git a/dependencies64/ffmpeg/lib/avutil-52.def b/dependencies64/ffmpeg/lib/avutil-52.def
new file mode 100644 (file)
index 0000000..8c917a1
--- /dev/null
@@ -0,0 +1,427 @@
+EXPORTS
+    av_add_q
+    av_add_stable
+    av_adler32_update
+    av_aes_alloc
+    av_aes_crypt
+    av_aes_init
+    av_aes_size DATA
+    av_asprintf
+    av_audio_fifo_alloc
+    av_audio_fifo_drain
+    av_audio_fifo_free
+    av_audio_fifo_read
+    av_audio_fifo_realloc
+    av_audio_fifo_reset
+    av_audio_fifo_size
+    av_audio_fifo_space
+    av_audio_fifo_write
+    av_base64_decode
+    av_base64_encode
+    av_basename
+    av_blowfish_crypt
+    av_blowfish_crypt_ecb
+    av_blowfish_init
+    av_bmg_get
+    av_bprint_append_data
+    av_bprint_channel_layout
+    av_bprint_chars
+    av_bprint_clear
+    av_bprint_escape
+    av_bprint_finalize
+    av_bprint_get_buffer
+    av_bprint_init
+    av_bprint_init_for_buffer
+    av_bprint_strftime
+    av_bprintf
+    av_buffer_alloc
+    av_buffer_allocz
+    av_buffer_create
+    av_buffer_default_free
+    av_buffer_get_opaque
+    av_buffer_get_ref_count
+    av_buffer_is_writable
+    av_buffer_make_writable
+    av_buffer_pool_get
+    av_buffer_pool_init
+    av_buffer_pool_uninit
+    av_buffer_realloc
+    av_buffer_ref
+    av_buffer_unref
+    av_calloc
+    av_channel_layout_extract_channel
+    av_compare_mod
+    av_compare_ts
+    av_cpu_count
+    av_crc
+    av_crc_get_table
+    av_crc_init
+    av_ctz
+    av_d2q
+    av_d2str
+    av_dbl2ext
+    av_dbl2int
+    av_default_get_category
+    av_default_item_name
+    av_des_crypt
+    av_des_init
+    av_des_mac
+    av_dict_copy
+    av_dict_count
+    av_dict_free
+    av_dict_get
+    av_dict_parse_string
+    av_dict_set
+    av_dirname
+    av_div_q
+    av_downmix_info_update_side_data
+    av_dynarray2_add
+    av_dynarray_add
+    av_escape
+    av_evaluate_lls
+    av_expr_eval
+    av_expr_free
+    av_expr_parse
+    av_expr_parse_and_eval
+    av_ext2dbl
+    av_fast_malloc
+    av_fast_realloc
+    av_fifo_alloc
+    av_fifo_drain
+    av_fifo_free
+    av_fifo_generic_read
+    av_fifo_generic_write
+    av_fifo_grow
+    av_fifo_realloc2
+    av_fifo_reset
+    av_fifo_size
+    av_fifo_space
+    av_file_map
+    av_file_unmap
+    av_find_info_tag
+    av_find_nearest_q_idx
+    av_find_opt
+    av_flt2int
+    av_fopen_utf8
+    av_force_cpu_flags
+    av_frame_alloc
+    av_frame_clone
+    av_frame_copy
+    av_frame_copy_props
+    av_frame_free
+    av_frame_get_best_effort_timestamp
+    av_frame_get_buffer
+    av_frame_get_channel_layout
+    av_frame_get_channels
+    av_frame_get_color_range
+    av_frame_get_colorspace
+    av_frame_get_decode_error_flags
+    av_frame_get_metadata
+    av_frame_get_pkt_duration
+    av_frame_get_pkt_pos
+    av_frame_get_pkt_size
+    av_frame_get_plane_buffer
+    av_frame_get_qp_table
+    av_frame_get_sample_rate
+    av_frame_get_side_data
+    av_frame_is_writable
+    av_frame_make_writable
+    av_frame_move_ref
+    av_frame_new_side_data
+    av_frame_ref
+    av_frame_set_best_effort_timestamp
+    av_frame_set_channel_layout
+    av_frame_set_channels
+    av_frame_set_color_range
+    av_frame_set_colorspace
+    av_frame_set_decode_error_flags
+    av_frame_set_metadata
+    av_frame_set_pkt_duration
+    av_frame_set_pkt_pos
+    av_frame_set_pkt_size
+    av_frame_set_qp_table
+    av_frame_set_sample_rate
+    av_frame_unref
+    av_free
+    av_freep
+    av_gcd
+    av_get_alt_sample_fmt
+    av_get_bits_per_pixel
+    av_get_bits_per_sample_fmt
+    av_get_bytes_per_sample
+    av_get_channel_description
+    av_get_channel_layout
+    av_get_channel_layout_channel_index
+    av_get_channel_layout_nb_channels
+    av_get_channel_layout_string
+    av_get_channel_name
+    av_get_colorspace_name
+    av_get_cpu_flags
+    av_get_default_channel_layout
+    av_get_double
+    av_get_int
+    av_get_known_color_name
+    av_get_media_type_string
+    av_get_packed_sample_fmt
+    av_get_padded_bits_per_pixel
+    av_get_picture_type_char
+    av_get_pix_fmt
+    av_get_pix_fmt_name
+    av_get_pix_fmt_string
+    av_get_planar_sample_fmt
+    av_get_q
+    av_get_random_seed
+    av_get_sample_fmt
+    av_get_sample_fmt_name
+    av_get_sample_fmt_string
+    av_get_standard_channel_layout
+    av_get_string
+    av_get_token
+    av_gettime
+    av_hash_alloc
+    av_hash_final
+    av_hash_freep
+    av_hash_get_name
+    av_hash_get_size
+    av_hash_init
+    av_hash_names
+    av_hash_update
+    av_hmac_alloc
+    av_hmac_calc
+    av_hmac_final
+    av_hmac_free
+    av_hmac_init
+    av_hmac_update
+    av_image_alloc
+    av_image_check_size
+    av_image_copy
+    av_image_copy_plane
+    av_image_copy_to_buffer
+    av_image_fill_arrays
+    av_image_fill_linesizes
+    av_image_fill_max_pixsteps
+    av_image_fill_pointers
+    av_image_get_buffer_size
+    av_image_get_linesize
+    av_init_lls
+    av_int2dbl
+    av_int2flt
+    av_int_list_length_for_size
+    av_isdigit
+    av_isgraph
+    av_isspace
+    av_isxdigit
+    av_lfg_init
+    av_log
+    av_log2
+    av_log2_16bit
+    av_log_default_callback
+    av_log_format_line
+    av_log_get_level
+    av_log_set_callback
+    av_log_set_flags
+    av_log_set_level
+    av_lzo1x_decode
+    av_malloc
+    av_mallocz
+    av_max_alloc
+    av_md5_alloc
+    av_md5_final
+    av_md5_init
+    av_md5_size DATA
+    av_md5_sum
+    av_md5_update
+    av_memcpy_backptr
+    av_memdup
+    av_mul_q
+    av_murmur3_alloc
+    av_murmur3_final
+    av_murmur3_init
+    av_murmur3_init_seeded
+    av_murmur3_update
+    av_nearer_q
+    av_next_option
+    av_opt_child_class_next
+    av_opt_child_next
+    av_opt_eval_double
+    av_opt_eval_flags
+    av_opt_eval_float
+    av_opt_eval_int
+    av_opt_eval_int64
+    av_opt_eval_q
+    av_opt_find
+    av_opt_find2
+    av_opt_flag_is_set
+    av_opt_free
+    av_opt_freep_ranges
+    av_opt_get
+    av_opt_get_channel_layout
+    av_opt_get_double
+    av_opt_get_image_size
+    av_opt_get_int
+    av_opt_get_key_value
+    av_opt_get_pixel_fmt
+    av_opt_get_q
+    av_opt_get_sample_fmt
+    av_opt_get_video_rate
+    av_opt_next
+    av_opt_ptr
+    av_opt_query_ranges
+    av_opt_query_ranges_default
+    av_opt_set
+    av_opt_set_bin
+    av_opt_set_channel_layout
+    av_opt_set_defaults
+    av_opt_set_defaults2
+    av_opt_set_dict
+    av_opt_set_double
+    av_opt_set_from_string
+    av_opt_set_image_size
+    av_opt_set_int
+    av_opt_set_pixel_fmt
+    av_opt_set_q
+    av_opt_set_sample_fmt
+    av_opt_set_video_rate
+    av_opt_show2
+    av_parse_color
+    av_parse_cpu_caps
+    av_parse_cpu_flags
+    av_parse_ratio
+    av_parse_time
+    av_parse_video_rate
+    av_parse_video_size
+    av_pix_fmt_count_planes
+    av_pix_fmt_desc_get
+    av_pix_fmt_desc_get_id
+    av_pix_fmt_desc_next
+    av_pix_fmt_descriptors DATA
+    av_pix_fmt_get_chroma_sub_sample
+    av_pix_fmt_swap_endianness
+    av_rc4_crypt
+    av_rc4_init
+    av_read_image_line
+    av_realloc
+    av_realloc_array
+    av_realloc_f
+    av_reallocp
+    av_reallocp_array
+    av_reduce
+    av_rescale
+    av_rescale_delta
+    av_rescale_q
+    av_rescale_q_rnd
+    av_rescale_rnd
+    av_reverse DATA
+    av_ripemd_alloc
+    av_ripemd_final
+    av_ripemd_init
+    av_ripemd_size DATA
+    av_ripemd_update
+    av_sample_fmt_is_planar
+    av_samples_alloc
+    av_samples_alloc_array_and_samples
+    av_samples_copy
+    av_samples_fill_arrays
+    av_samples_get_buffer_size
+    av_samples_set_silence
+    av_set_cpu_flags_mask
+    av_set_double
+    av_set_int
+    av_set_options_string
+    av_set_q
+    av_set_string3
+    av_sha512_alloc
+    av_sha512_final
+    av_sha512_init
+    av_sha512_size DATA
+    av_sha512_update
+    av_sha_alloc
+    av_sha_final
+    av_sha_init
+    av_sha_size DATA
+    av_sha_update
+    av_small_strptime
+    av_solve_lls
+    av_stereo3d_alloc
+    av_stereo3d_create_side_data
+    av_strcasecmp
+    av_strdup
+    av_strerror
+    av_stristart
+    av_stristr
+    av_strlcat
+    av_strlcatf
+    av_strlcpy
+    av_strncasecmp
+    av_strnstr
+    av_strstart
+    av_strtod
+    av_strtok
+    av_sub_q
+    av_tempfile
+    av_timecode_adjust_ntsc_framenum2
+    av_timecode_check_frame_rate
+    av_timecode_get_smpte_from_framenum
+    av_timecode_init
+    av_timecode_init_from_string
+    av_timecode_make_mpeg_tc_string
+    av_timecode_make_smpte_tc_string
+    av_timecode_make_string
+    av_timegm
+    av_tree_destroy
+    av_tree_enumerate
+    av_tree_find
+    av_tree_insert
+    av_tree_node_alloc
+    av_tree_node_size DATA
+    av_update_lls
+    av_usleep
+    av_utf8_decode
+    av_vbprintf
+    av_vlog
+    av_write_image_line
+    av_xtea_crypt
+    av_xtea_init
+    avpriv_cga_font DATA
+    avpriv_emms_yasm DATA
+    avpriv_evaluate_lls
+    avpriv_float_dsp_init
+    avpriv_frame_get_metadatap
+    avpriv_init_lls
+    avpriv_init_lls2
+    avpriv_open
+    avpriv_report_missing_feature
+    avpriv_request_sample
+    avpriv_scalarproduct_float_c
+    avpriv_set_systematic_pal2
+    avpriv_solve_lls
+    avpriv_solve_lls2
+    avpriv_update_lls
+    avpriv_vga16_font DATA
+    avutil_configuration
+    avutil_license
+    avutil_version
+    ff_butterflies_float_sse DATA
+    ff_check_pixfmt_descriptors
+    ff_cpu_cpuid DATA
+    ff_cpu_xgetbv DATA
+    ff_evaluate_lls_sse2 DATA
+    ff_float_dsp_init_x86
+    ff_get_channel_layout
+    ff_get_cpu_flags_x86
+    ff_init_lls_x86
+    ff_log2_tab DATA
+    ff_scalarproduct_float_sse DATA
+    ff_update_lls_avx DATA
+    ff_update_lls_sse2 DATA
+    ff_vector_dmul_scalar_avx DATA
+    ff_vector_dmul_scalar_sse2 DATA
+    ff_vector_fmac_scalar_avx DATA
+    ff_vector_fmac_scalar_sse DATA
+    ff_vector_fmul_add_avx DATA
+    ff_vector_fmul_add_sse DATA
+    ff_vector_fmul_avx DATA
+    ff_vector_fmul_reverse_avx DATA
+    ff_vector_fmul_reverse_sse DATA
+    ff_vector_fmul_scalar_sse DATA
+    ff_vector_fmul_sse DATA
index ce000d44bd5e4eae62cd390c4cfa78a023bcc9cf..d0840d65b93c33defb0aaa8381133b16903a122f 100644 (file)
Binary files a/dependencies64/ffmpeg/lib/avutil.lib and b/dependencies64/ffmpeg/lib/avutil.lib differ
diff --git a/dependencies64/ffmpeg/lib/libavcodec.dll.a b/dependencies64/ffmpeg/lib/libavcodec.dll.a
new file mode 100644 (file)
index 0000000..e895e37
Binary files /dev/null and b/dependencies64/ffmpeg/lib/libavcodec.dll.a differ
diff --git a/dependencies64/ffmpeg/lib/libavdevice.dll.a b/dependencies64/ffmpeg/lib/libavdevice.dll.a
new file mode 100644 (file)
index 0000000..0cc541d
Binary files /dev/null and b/dependencies64/ffmpeg/lib/libavdevice.dll.a differ
diff --git a/dependencies64/ffmpeg/lib/libavfilter.dll.a b/dependencies64/ffmpeg/lib/libavfilter.dll.a
new file mode 100644 (file)
index 0000000..85ecdf4
Binary files /dev/null and b/dependencies64/ffmpeg/lib/libavfilter.dll.a differ
diff --git a/dependencies64/ffmpeg/lib/libavformat.dll.a b/dependencies64/ffmpeg/lib/libavformat.dll.a
new file mode 100644 (file)
index 0000000..5f8417a
Binary files /dev/null and b/dependencies64/ffmpeg/lib/libavformat.dll.a differ
diff --git a/dependencies64/ffmpeg/lib/libavutil.dll.a b/dependencies64/ffmpeg/lib/libavutil.dll.a
new file mode 100644 (file)
index 0000000..93e4952
Binary files /dev/null and b/dependencies64/ffmpeg/lib/libavutil.dll.a differ
diff --git a/dependencies64/ffmpeg/lib/libpostproc.dll.a b/dependencies64/ffmpeg/lib/libpostproc.dll.a
new file mode 100644 (file)
index 0000000..a013c5d
Binary files /dev/null and b/dependencies64/ffmpeg/lib/libpostproc.dll.a differ
diff --git a/dependencies64/ffmpeg/lib/libswresample.dll.a b/dependencies64/ffmpeg/lib/libswresample.dll.a
new file mode 100644 (file)
index 0000000..3c34dfd
Binary files /dev/null and b/dependencies64/ffmpeg/lib/libswresample.dll.a differ
diff --git a/dependencies64/ffmpeg/lib/libswscale.dll.a b/dependencies64/ffmpeg/lib/libswscale.dll.a
new file mode 100644 (file)
index 0000000..982350f
Binary files /dev/null and b/dependencies64/ffmpeg/lib/libswscale.dll.a differ
diff --git a/dependencies64/ffmpeg/lib/postproc-52.def b/dependencies64/ffmpeg/lib/postproc-52.def
new file mode 100644 (file)
index 0000000..4d8bbb4
--- /dev/null
@@ -0,0 +1,10 @@
+EXPORTS
+    postproc_configuration
+    postproc_license
+    postproc_version
+    pp_free_context
+    pp_free_mode
+    pp_get_context
+    pp_get_mode_by_name_and_quality
+    pp_help DATA
+    pp_postprocess
index 63a5417ae4a6ef2128408fd12e592d464aa4cf58..c76189000c50b6373b1ab537b75c82115ec3e34c 100644 (file)
Binary files a/dependencies64/ffmpeg/lib/postproc.lib and b/dependencies64/ffmpeg/lib/postproc.lib differ
diff --git a/dependencies64/ffmpeg/lib/swresample-0.def b/dependencies64/ffmpeg/lib/swresample-0.def
new file mode 100644 (file)
index 0000000..6c337fc
--- /dev/null
@@ -0,0 +1,106 @@
+EXPORTS
+    ff_float_to_int16_a_sse2 DATA
+    ff_float_to_int16_u_sse2 DATA
+    ff_float_to_int32_a_sse2 DATA
+    ff_float_to_int32_u_sse2 DATA
+    ff_int16_to_float_a_sse2 DATA
+    ff_int16_to_float_u_sse2 DATA
+    ff_int16_to_int32_a_mmx DATA
+    ff_int16_to_int32_a_sse2 DATA
+    ff_int16_to_int32_u_mmx DATA
+    ff_int16_to_int32_u_sse2 DATA
+    ff_int32_to_float_a_avx DATA
+    ff_int32_to_float_a_sse2 DATA
+    ff_int32_to_float_u_avx DATA
+    ff_int32_to_float_u_sse2 DATA
+    ff_int32_to_int16_a_mmx DATA
+    ff_int32_to_int16_a_sse2 DATA
+    ff_int32_to_int16_u_mmx DATA
+    ff_int32_to_int16_u_sse2 DATA
+    ff_log2_tab DATA
+    ff_mix_1_1_a_float_avx DATA
+    ff_mix_1_1_a_float_sse DATA
+    ff_mix_1_1_a_int16_mmx DATA
+    ff_mix_1_1_a_int16_sse2 DATA
+    ff_mix_1_1_u_float_avx DATA
+    ff_mix_1_1_u_float_sse DATA
+    ff_mix_1_1_u_int16_mmx DATA
+    ff_mix_1_1_u_int16_sse2 DATA
+    ff_mix_2_1_a_float_avx DATA
+    ff_mix_2_1_a_float_sse DATA
+    ff_mix_2_1_a_int16_mmx DATA
+    ff_mix_2_1_a_int16_sse2 DATA
+    ff_mix_2_1_u_float_avx DATA
+    ff_mix_2_1_u_float_sse DATA
+    ff_mix_2_1_u_int16_mmx DATA
+    ff_mix_2_1_u_int16_sse2 DATA
+    ff_pack_2ch_float_to_int16_a_sse2 DATA
+    ff_pack_2ch_float_to_int16_u_sse2 DATA
+    ff_pack_2ch_float_to_int32_a_sse2 DATA
+    ff_pack_2ch_float_to_int32_u_sse2 DATA
+    ff_pack_2ch_int16_to_float_a_sse2 DATA
+    ff_pack_2ch_int16_to_float_u_sse2 DATA
+    ff_pack_2ch_int16_to_int16_a_sse2 DATA
+    ff_pack_2ch_int16_to_int16_u_sse2 DATA
+    ff_pack_2ch_int16_to_int32_a_sse2 DATA
+    ff_pack_2ch_int16_to_int32_u_sse2 DATA
+    ff_pack_2ch_int32_to_float_a_sse2 DATA
+    ff_pack_2ch_int32_to_float_u_sse2 DATA
+    ff_pack_2ch_int32_to_int16_a_sse2 DATA
+    ff_pack_2ch_int32_to_int16_u_sse2 DATA
+    ff_pack_2ch_int32_to_int32_a_sse2 DATA
+    ff_pack_2ch_int32_to_int32_u_sse2 DATA
+    ff_pack_6ch_float_to_float_a_avx DATA
+    ff_pack_6ch_float_to_float_a_mmx DATA
+    ff_pack_6ch_float_to_float_a_sse4 DATA
+    ff_pack_6ch_float_to_float_u_avx DATA
+    ff_pack_6ch_float_to_float_u_mmx DATA
+    ff_pack_6ch_float_to_float_u_sse4 DATA
+    ff_pack_6ch_float_to_int32_a_avx DATA
+    ff_pack_6ch_float_to_int32_a_sse4 DATA
+    ff_pack_6ch_float_to_int32_u_avx DATA
+    ff_pack_6ch_float_to_int32_u_sse4 DATA
+    ff_pack_6ch_int32_to_float_a_avx DATA
+    ff_pack_6ch_int32_to_float_a_sse4 DATA
+    ff_pack_6ch_int32_to_float_u_avx DATA
+    ff_pack_6ch_int32_to_float_u_sse4 DATA
+    ff_resample_int16_rounder DATA
+    ff_unpack_2ch_float_to_int16_a_sse2 DATA
+    ff_unpack_2ch_float_to_int16_u_sse2 DATA
+    ff_unpack_2ch_float_to_int32_a_sse2 DATA
+    ff_unpack_2ch_float_to_int32_u_sse2 DATA
+    ff_unpack_2ch_int16_to_float_a_sse2 DATA
+    ff_unpack_2ch_int16_to_float_a_ssse3 DATA
+    ff_unpack_2ch_int16_to_float_u_sse2 DATA
+    ff_unpack_2ch_int16_to_float_u_ssse3 DATA
+    ff_unpack_2ch_int16_to_int16_a_sse2 DATA
+    ff_unpack_2ch_int16_to_int16_a_ssse3 DATA
+    ff_unpack_2ch_int16_to_int16_u_sse2 DATA
+    ff_unpack_2ch_int16_to_int16_u_ssse3 DATA
+    ff_unpack_2ch_int16_to_int32_a_sse2 DATA
+    ff_unpack_2ch_int16_to_int32_a_ssse3 DATA
+    ff_unpack_2ch_int16_to_int32_u_sse2 DATA
+    ff_unpack_2ch_int16_to_int32_u_ssse3 DATA
+    ff_unpack_2ch_int32_to_float_a_sse2 DATA
+    ff_unpack_2ch_int32_to_float_u_sse2 DATA
+    ff_unpack_2ch_int32_to_int16_a_sse2 DATA
+    ff_unpack_2ch_int32_to_int16_u_sse2 DATA
+    ff_unpack_2ch_int32_to_int32_a_sse2 DATA
+    ff_unpack_2ch_int32_to_int32_u_sse2 DATA
+    swr_alloc
+    swr_alloc_set_opts
+    swr_convert
+    swr_drop_output
+    swr_free
+    swr_get_class
+    swr_get_delay
+    swr_init
+    swr_inject_silence
+    swr_is_initialized
+    swr_next_pts
+    swr_set_channel_mapping
+    swr_set_compensation
+    swr_set_matrix
+    swresample_configuration
+    swresample_license
+    swresample_version
index 42f4f2e27b8a09ee878d9587e0e85d155dbcc812..b4a6f0b61fb4e1b06d1e911b2f01a2aa8e143a7b 100644 (file)
Binary files a/dependencies64/ffmpeg/lib/swresample.lib and b/dependencies64/ffmpeg/lib/swresample.lib differ
diff --git a/dependencies64/ffmpeg/lib/swscale-2.def b/dependencies64/ffmpeg/lib/swscale-2.def
new file mode 100644 (file)
index 0000000..d828ee3
--- /dev/null
@@ -0,0 +1,37 @@
+EXPORTS
+    sws_addVec
+    sws_allocVec
+    sws_alloc_context
+    sws_cloneVec
+    sws_context_class DATA
+    sws_convVec
+    sws_convertPalette8ToPacked24
+    sws_convertPalette8ToPacked32
+    sws_format_name
+    sws_freeContext
+    sws_freeFilter
+    sws_freeVec
+    sws_getCachedContext
+    sws_getCoefficients
+    sws_getColorspaceDetails
+    sws_getConstVec
+    sws_getContext
+    sws_getDefaultFilter
+    sws_getGaussianVec
+    sws_getIdentityVec
+    sws_get_class
+    sws_init_context
+    sws_isSupportedEndiannessConversion
+    sws_isSupportedInput
+    sws_isSupportedOutput
+    sws_normalizeVec
+    sws_printVec2
+    sws_rgb2rgb_init
+    sws_scale
+    sws_scaleVec
+    sws_setColorspaceDetails
+    sws_shiftVec
+    sws_subVec
+    swscale_configuration
+    swscale_license
+    swscale_version
index 0bf1751bb2091218b957e54bba870491be4fee5d..97eadb07019505326e55f28d474add7527fe4326 100644 (file)
Binary files a/dependencies64/ffmpeg/lib/swscale.lib and b/dependencies64/ffmpeg/lib/swscale.lib differ
diff --git a/dependencies64/ffmpeg/licenses/bzip2.txt b/dependencies64/ffmpeg/licenses/bzip2.txt
new file mode 100644 (file)
index 0000000..cc61417
--- /dev/null
@@ -0,0 +1,42 @@
+
+--------------------------------------------------------------------------
+
+This program, "bzip2", the associated library "libbzip2", and all
+documentation, are copyright (C) 1996-2010 Julian R Seward.  All
+rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+
+1. Redistributions of source code must retain the above copyright
+   notice, this list of conditions and the following disclaimer.
+
+2. The origin of this software must not be misrepresented; you must 
+   not claim that you wrote the original software.  If you use this 
+   software in a product, an acknowledgment in the product 
+   documentation would be appreciated but is not required.
+
+3. Altered source versions must be plainly marked as such, and must
+   not be misrepresented as being the original software.
+
+4. The name of the author may not be used to endorse or promote 
+   products derived from this software without specific prior written 
+   permission.
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
+
+Julian Seward, jseward@bzip.org
+bzip2/libbzip2 version 1.0.6 of 6 September 2010
+
+--------------------------------------------------------------------------
diff --git a/dependencies64/ffmpeg/licenses/fontconfig.txt b/dependencies64/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.
+
diff --git a/dependencies64/ffmpeg/licenses/freetype.txt b/dependencies64/ffmpeg/licenses/freetype.txt
new file mode 100644 (file)
index 0000000..bbaba33
--- /dev/null
@@ -0,0 +1,169 @@
+                    The FreeType Project LICENSE
+                    ----------------------------
+
+                            2006-Jan-27
+
+                    Copyright 1996-2002, 2006 by
+          David Turner, Robert Wilhelm, and Werner Lemberg
+
+
+
+Introduction
+============
+
+  The FreeType  Project is distributed in  several archive packages;
+  some of them may contain, in addition to the FreeType font engine,
+  various tools and  contributions which rely on, or  relate to, the
+  FreeType Project.
+
+  This  license applies  to all  files found  in such  packages, and
+  which do not  fall under their own explicit  license.  The license
+  affects  thus  the  FreeType   font  engine,  the  test  programs,
+  documentation and makefiles, at the very least.
+
+  This  license   was  inspired  by  the  BSD,   Artistic,  and  IJG
+  (Independent JPEG  Group) licenses, which  all encourage inclusion
+  and  use of  free  software in  commercial  and freeware  products
+  alike.  As a consequence, its main points are that:
+
+    o We don't promise that this software works. However, we will be
+      interested in any kind of bug reports. (`as is' distribution)
+
+    o You can  use this software for whatever you  want, in parts or
+      full form, without having to pay us. (`royalty-free' usage)
+
+    o You may not pretend that  you wrote this software.  If you use
+      it, or  only parts of it,  in a program,  you must acknowledge
+      somewhere  in  your  documentation  that  you  have  used  the
+      FreeType code. (`credits')
+
+  We  specifically  permit  and  encourage  the  inclusion  of  this
+  software, with  or without modifications,  in commercial products.
+  We  disclaim  all warranties  covering  The  FreeType Project  and
+  assume no liability related to The FreeType Project.
+
+
+  Finally,  many  people  asked  us  for  a  preferred  form  for  a
+  credit/disclaimer to use in compliance with this license.  We thus
+  encourage you to use the following text:
+
+   """
+    Portions of this software are copyright Â© <year> The FreeType
+    Project (www.freetype.org).  All rights reserved.
+   """
+
+  Please replace <year> with the value from the FreeType version you
+  actually use.
+
+
+Legal Terms
+===========
+
+0. Definitions
+--------------
+
+  Throughout this license,  the terms `package', `FreeType Project',
+  and  `FreeType  archive' refer  to  the  set  of files  originally
+  distributed  by the  authors  (David Turner,  Robert Wilhelm,  and
+  Werner Lemberg) as the `FreeType Project', be they named as alpha,
+  beta or final release.
+
+  `You' refers to  the licensee, or person using  the project, where
+  `using' is a generic term including compiling the project's source
+  code as  well as linking it  to form a  `program' or `executable'.
+  This  program is  referred to  as  `a program  using the  FreeType
+  engine'.
+
+  This  license applies  to all  files distributed  in  the original
+  FreeType  Project,   including  all  source   code,  binaries  and
+  documentation,  unless  otherwise  stated   in  the  file  in  its
+  original, unmodified form as  distributed in the original archive.
+  If you are  unsure whether or not a particular  file is covered by
+  this license, you must contact us to verify this.
+
+  The FreeType  Project is copyright (C) 1996-2000  by David Turner,
+  Robert Wilhelm, and Werner Lemberg.  All rights reserved except as
+  specified below.
+
+1. No Warranty
+--------------
+
+  THE FREETYPE PROJECT  IS PROVIDED `AS IS' WITHOUT  WARRANTY OF ANY
+  KIND, EITHER  EXPRESS OR IMPLIED,  INCLUDING, BUT NOT  LIMITED TO,
+  WARRANTIES  OF  MERCHANTABILITY   AND  FITNESS  FOR  A  PARTICULAR
+  PURPOSE.  IN NO EVENT WILL ANY OF THE AUTHORS OR COPYRIGHT HOLDERS
+  BE LIABLE  FOR ANY DAMAGES CAUSED  BY THE USE OR  THE INABILITY TO
+  USE, OF THE FREETYPE PROJECT.
+
+2. Redistribution
+-----------------
+
+  This  license  grants  a  worldwide, royalty-free,  perpetual  and
+  irrevocable right  and license to use,  execute, perform, compile,
+  display,  copy,   create  derivative  works   of,  distribute  and
+  sublicense the  FreeType Project (in  both source and  object code
+  forms)  and  derivative works  thereof  for  any  purpose; and  to
+  authorize others  to exercise  some or all  of the  rights granted
+  herein, subject to the following conditions:
+
+    o Redistribution of  source code  must retain this  license file
+      (`FTL.TXT') unaltered; any  additions, deletions or changes to
+      the original  files must be clearly  indicated in accompanying
+      documentation.   The  copyright   notices  of  the  unaltered,
+      original  files must  be  preserved in  all  copies of  source
+      files.
+
+    o Redistribution in binary form must provide a  disclaimer  that
+      states  that  the software is based in part of the work of the
+      FreeType Team,  in  the  distribution  documentation.  We also
+      encourage you to put an URL to the FreeType web page  in  your
+      documentation, though this isn't mandatory.
+
+  These conditions  apply to any  software derived from or  based on
+  the FreeType Project,  not just the unmodified files.   If you use
+  our work, you  must acknowledge us.  However, no  fee need be paid
+  to us.
+
+3. Advertising
+--------------
+
+  Neither the  FreeType authors and  contributors nor you  shall use
+  the name of the  other for commercial, advertising, or promotional
+  purposes without specific prior written permission.
+
+  We suggest,  but do not require, that  you use one or  more of the
+  following phrases to refer  to this software in your documentation
+  or advertising  materials: `FreeType Project',  `FreeType Engine',
+  `FreeType library', or `FreeType Distribution'.
+
+  As  you have  not signed  this license,  you are  not  required to
+  accept  it.   However,  as  the FreeType  Project  is  copyrighted
+  material, only  this license, or  another one contracted  with the
+  authors, grants you  the right to use, distribute,  and modify it.
+  Therefore,  by  using,  distributing,  or modifying  the  FreeType
+  Project, you indicate that you understand and accept all the terms
+  of this license.
+
+4. Contacts
+-----------
+
+  There are two mailing lists related to FreeType:
+
+    o freetype@nongnu.org
+
+      Discusses general use and applications of FreeType, as well as
+      future and  wanted additions to the  library and distribution.
+      If  you are looking  for support,  start in  this list  if you
+      haven't found anything to help you in the documentation.
+
+    o freetype-devel@nongnu.org
+
+      Discusses bugs,  as well  as engine internals,  design issues,
+      specific licenses, porting, etc.
+
+  Our home page can be found at
+
+    http://www.freetype.org
+
+
+--- end of FTL.TXT ---
diff --git a/dependencies64/ffmpeg/licenses/frei0r.txt b/dependencies64/ffmpeg/licenses/frei0r.txt
new file mode 100644 (file)
index 0000000..623b625
--- /dev/null
@@ -0,0 +1,340 @@
+                   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 Library 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.
+\f
+                   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.)
+\f
+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.
+\f
+  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.
+\f
+  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
+\f
+           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 Library General
+Public License instead of this License.
diff --git a/dependencies64/ffmpeg/licenses/gme.txt b/dependencies64/ffmpeg/licenses/gme.txt
new file mode 100644 (file)
index 0000000..5ab7695
--- /dev/null
@@ -0,0 +1,504 @@
+                 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.
+\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., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  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/dependencies64/ffmpeg/licenses/gnutls.txt b/dependencies64/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>.
diff --git a/dependencies64/ffmpeg/licenses/lame.txt b/dependencies64/ffmpeg/licenses/lame.txt
new file mode 100644 (file)
index 0000000..f503049
--- /dev/null
@@ -0,0 +1,481 @@
+                 GNU LIBRARY GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1991 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 library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                           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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+\f
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+\f
+                 GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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 Library General Public
+    License as published by the Free Software Foundation; either
+    version 2 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
+    Library General Public License for more details.
+
+    You should have received a copy of the GNU Library 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/dependencies64/ffmpeg/licenses/libass.txt b/dependencies64/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/dependencies64/ffmpeg/licenses/libbluray.txt b/dependencies64/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/dependencies64/ffmpeg/licenses/libcaca.txt b/dependencies64/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/dependencies64/ffmpeg/licenses/libgsm.txt b/dependencies64/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/dependencies64/ffmpeg/licenses/libiconv.txt b/dependencies64/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/dependencies64/ffmpeg/licenses/libilbc.txt b/dependencies64/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/dependencies64/ffmpeg/licenses/libmodplug.txt b/dependencies64/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/dependencies64/ffmpeg/licenses/libtheora.txt b/dependencies64/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/dependencies64/ffmpeg/licenses/libvorbis.txt b/dependencies64/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.
diff --git a/dependencies64/ffmpeg/licenses/libvpx.txt b/dependencies64/ffmpeg/licenses/libvpx.txt
new file mode 100644 (file)
index 0000000..1ce4434
--- /dev/null
@@ -0,0 +1,31 @@
+Copyright (c) 2010, The WebM 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 WebM Project, 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/dependencies64/ffmpeg/licenses/libwebp.txt b/dependencies64/ffmpeg/licenses/libwebp.txt
new file mode 100644 (file)
index 0000000..7a6f995
--- /dev/null
@@ -0,0 +1,30 @@
+Copyright (c) 2010, Google Inc. 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/dependencies64/ffmpeg/licenses/opencore-amr.txt b/dependencies64/ffmpeg/licenses/opencore-amr.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/dependencies64/ffmpeg/licenses/openjpeg.txt b/dependencies64/ffmpeg/licenses/openjpeg.txt
new file mode 100644 (file)
index 0000000..f578e33
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2002-2012, Communications and Remote Sensing Laboratory, Universite catholique de Louvain (UCL), Belgium
+ * Copyright (c) 2002-2012, Professor Benoit Macq
+ * Copyright (c) 2003-2012, Antonin Descampe
+ * Copyright (c) 2003-2009, Francois-Olivier Devaux
+ * Copyright (c) 2005, Herve Drolon, FreeImage Team
+ * Copyright (c) 2002-2003, Yannick Verschueren
+ * Copyright (c) 2001-2003, David Janssens
+ * Copyright (c) 2011-2012, Centre National d'Etudes Spatiales (CNES), France 
+ * Copyright (c) 2012, CS Systemes d'Information, France
+ *
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
+ * 1. Redistributions of source code must retain the above copyright
+ *    notice, this list of conditions and the following disclaimer.
+ * 2. 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.
+ *
+ * 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.
+ */
diff --git a/dependencies64/ffmpeg/licenses/opus.txt b/dependencies64/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/dependencies64/ffmpeg/licenses/rtmpdump.txt b/dependencies64/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.
diff --git a/dependencies64/ffmpeg/licenses/schroedinger.txt b/dependencies64/ffmpeg/licenses/schroedinger.txt
new file mode 100644 (file)
index 0000000..8a68a0d
--- /dev/null
@@ -0,0 +1,467 @@
+                 GNU LIBRARY GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1991 Free Software Foundation, Inc.
+                    675 Mass Ave, Cambridge, MA 02139, 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 library GPL.  It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+                           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 Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it.  You can use it for
+your libraries, 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 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 a program 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.
+
+  Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+  Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library.  If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+\f
+  Finally, any free program is threatened constantly by software
+patents.  We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software.  To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+  Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs.  This
+license, the GNU Library General Public License, applies to certain
+designated libraries.  This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+  The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it.  Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program.  However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+  Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries.  We
+concluded that weaker conditions might promote sharing better.
+
+  However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves.  This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them.  (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.)  The hope is that this
+will lead to faster development of free libraries.
+
+  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, while the latter only
+works together with the library.
+
+  Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+\f
+                 GNU LIBRARY GENERAL PUBLIC LICENSE
+   TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+  0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+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 compile 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) 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.
+
+    c) 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.
+
+    d) 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 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.
+
+  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 to
+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 Library 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
+
+     Appendix: 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 Library General Public
+    License as published by the Free Software Foundation; either
+    version 2 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
+    Library General Public License for more details.
+
+    You should have received a copy of the GNU Library General Public
+    License along with this library; if not, write to the Free
+    Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
diff --git a/dependencies64/ffmpeg/licenses/soxr.txt b/dependencies64/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.
diff --git a/dependencies64/ffmpeg/licenses/speex.txt b/dependencies64/ffmpeg/licenses/speex.txt
new file mode 100644 (file)
index 0000000..de6fbe2
--- /dev/null
@@ -0,0 +1,35 @@
+Copyright 2002-2008    Xiph.org Foundation
+Copyright 2002-2008    Jean-Marc Valin
+Copyright 2005-2007    Analog Devices Inc.
+Copyright 2005-2008    Commonwealth Scientific and Industrial Research 
+                        Organisation (CSIRO)
+Copyright 1993, 2002, 2006 David Rowe
+Copyright 2003                 EpicGames
+Copyright 1992-1994    Jutta Degener, Carsten Bormann
+
+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/dependencies64/ffmpeg/licenses/twolame.txt b/dependencies64/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/dependencies64/ffmpeg/licenses/vid.stab.txt b/dependencies64/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/dependencies64/ffmpeg/licenses/vo-aacenc.txt b/dependencies64/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/dependencies64/ffmpeg/licenses/vo-amrwbenc.txt b/dependencies64/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/dependencies64/ffmpeg/licenses/wavpack.txt b/dependencies64/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.
diff --git a/dependencies64/ffmpeg/licenses/x264.txt b/dependencies64/ffmpeg/licenses/x264.txt
new file mode 100644 (file)
index 0000000..d60c31a
--- /dev/null
@@ -0,0 +1,340 @@
+                   GNU GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1989, 1991 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.
+
+                           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 Library 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.
+\f
+                   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.)
+\f
+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.
+\f
+  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.
+\f
+  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
+\f
+           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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  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 Library General
+Public License instead of this License.
diff --git a/dependencies64/ffmpeg/licenses/x265.txt b/dependencies64/ffmpeg/licenses/x265.txt
new file mode 100644 (file)
index 0000000..18c946f
--- /dev/null
@@ -0,0 +1,343 @@
+                   GNU GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1989, 1991 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.
+
+                           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 Library 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.
+\f
+                   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.)
+\f
+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.
+\f
+  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.
+\f
+  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
+\f
+           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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  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 Library General
+Public License instead of this License.
+
+This program is also available under a commercial proprietary license.
+For more information, contact us at licensing@multicorewareinc.com.
diff --git a/dependencies64/ffmpeg/licenses/xavs.txt b/dependencies64/ffmpeg/licenses/xavs.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/dependencies64/ffmpeg/licenses/xvid.txt b/dependencies64/ffmpeg/licenses/xvid.txt
new file mode 100644 (file)
index 0000000..14db8fc
--- /dev/null
@@ -0,0 +1,340 @@
+                   GNU GENERAL PUBLIC LICENSE
+                      Version 2, June 1991
+
+ Copyright (C) 1989, 1991 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.
+
+                           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 Library 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.
+\f
+                   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.)
+\f
+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.
+\f
+  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.
+\f
+  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
+\f
+           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., 59 Temple Place, Suite 330, Boston, MA  02111-1307  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 Library General
+Public License instead of this License.
diff --git a/dependencies64/ffmpeg/licenses/zlib.txt b/dependencies64/ffmpeg/licenses/zlib.txt
new file mode 100644 (file)
index 0000000..efa9848
--- /dev/null
@@ -0,0 +1,26 @@
+/* zlib.h -- interface of the 'zlib' general purpose compression library
+  version 1.2.7, May 2nd, 2012
+
+  Copyright (C) 1995-2012 Jean-loup Gailly and Mark Adler
+
+  This software is provided 'as-is', without any express or implied
+  warranty.  In no event will the authors be held liable for any damages
+  arising from the use of this software.
+
+  Permission is granted to anyone to use this software for any purpose,
+  including commercial applications, and to alter it and redistribute it
+  freely, subject to the following restrictions:
+
+  1. The origin of this software must not be misrepresented; you must not
+     claim that you wrote the original software. If you use this software
+     in a product, an acknowledgment in the product documentation would be
+     appreciated but is not required.
+  2. Altered source versions must be plainly marked as such, and must not be
+     misrepresented as being the original software.
+  3. This notice may not be removed or altered from any source distribution.
+
+  Jean-loup Gailly        Mark Adler
+  jloup@gzip.org          madler@alumni.caltech.edu
+
+*/
+
diff --git a/dependencies64/ffmpeg/presets/ffprobe.xsd b/dependencies64/ffmpeg/presets/ffprobe.xsd
new file mode 100644 (file)
index 0000000..1bc1fb5
--- /dev/null
@@ -0,0 +1,260 @@
+<?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="best_effort_timestamp"      type="xsd:long" />
+      <xsd:attribute name="best_effort_timestamp_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/dependencies64/ffmpeg/presets/libvpx-1080p.ffpreset b/dependencies64/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/dependencies64/ffmpeg/presets/libvpx-1080p50_60.ffpreset b/dependencies64/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/dependencies64/ffmpeg/presets/libvpx-360p.ffpreset b/dependencies64/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/dependencies64/ffmpeg/presets/libvpx-720p.ffpreset b/dependencies64/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/dependencies64/ffmpeg/presets/libvpx-720p50_60.ffpreset b/dependencies64/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/dependencies64/ffmpeg/presets/libx264-ipod320.ffpreset b/dependencies64/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/dependencies64/ffmpeg/presets/libx264-ipod640.ffpreset b/dependencies64/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
index 78088c4d184e50d9fdee2a5719683efc359d2e14..d38bb3f619d0891e88ed65678fe63597caca32ef 100644 (file)
@@ -209,7 +209,7 @@ copy "$(ProjectDir)casparcg_auto_restart.bat" "$(OutDir)"
       <ForcedIncludeFiles>common/compiler/vs/disable_silly_warnings.h</ForcedIncludeFiles>\r
     </ClCompile>\r
     <Link>\r
-      <OptimizeReferences>true</OptimizeReferences>\r
+      <OptimizeReferences>false</OptimizeReferences>\r
       <AdditionalDependencies>alibcof64.lib;freetype250.lib;sfml-system.lib;sfml-window.lib;sfml-graphics.lib;Winmm.lib;Ws2_32.lib;avformat.lib;avcodec.lib;avutil.lib;avfilter.lib;swscale.lib;swresample.lib;tbb.lib;OpenGL32.lib;glew32.lib;openal32.lib;freeimage.lib</AdditionalDependencies>\r
       <AdditionalLibraryDirectories>%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>\r
       <GenerateDebugInformation>true</GenerateDebugInformation>\r