@section AMD AMF/VCE
-FFmpeg can use the AMD Advanced Media Framework library under Windows
-for accelerated H.264 and HEVC encoding on hardware with Video Coding Engine (VCE).
+FFmpeg can use the AMD Advanced Media Framework library
+for accelerated H.264 and HEVC(only windows) encoding on hardware with Video Coding Engine (VCE).
-To enable support you must obtain the AMF framework header files from
+To enable support you must obtain the AMF framework header files(version 1.4.9+) from
@url{https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git}.
Create an @code{AMF/} directory in the system include path.
Copy the contents of @code{AMF/amf/public/include/} into that directory.
Then configure FFmpeg with @code{--enable-amf}.
+Initialization of amf encoder occurs in this order:
+1) trying to initialize through dx11(only windows)
+2) trying to initialize through dx9(only windows)
+3) trying to initialize through vulkan
+
+To use h.264(AMD VCE) encoder on linux amdgru-pro version 19.20+ and amf-amdgpu-pro
+package(amdgru-pro contains, but does not install automatically) are required.
+
+This driver can be installed using amdgpu-pro-install script in official amd driver archive.
+
@section AviSynth
FFmpeg can read AviSynth scripts as input. To enable support, pass
For Windows, supported AviSynth variants are
@url{http://avisynth.nl, AviSynth 2.6 RC1 or higher} for 32-bit builds and
-@url{http://avs-plus.net, AviSynth+ r1718 or higher} for 32-bit and 64-bit builds.
+@url{http://avisynth.nl/index.php/AviSynth+, AviSynth+ r1718 or higher} for 32-bit and 64-bit builds.
For Linux and OS X, the supported AviSynth variant is
@url{https://github.com/avxsynth/avxsynth, AvxSynth}.
@float NOTE
-There is currently a regression in AviSynth+'s @code{capi.h} header as of
-October 2016, which interferes with the ability for builds of FFmpeg to use
-MSVC-built binaries of AviSynth. Until this is resolved, you can make sure
-a known good version is installed by checking out a version from before
-the regression occurred:
-
-@code{git clone -b MT git://github.com/AviSynth/AviSynthPlus.git @*
-cd AviSynthPlus @*
-git checkout -b oldheader b4f292b4dbfad149697fb65c6a037bb3810813f9 @*
-make install PREFIX=/install/prefix}
+In 2016, AviSynth+ added support for building with GCC. However, due to
+the eccentricities of Windows' calling conventions, 32-bit GCC builds
+of AviSynth+ are not compatible with typical 32-bit builds of FFmpeg.
+
+By default, FFmpeg assumes compatibility with 32-bit MSVC builds of
+AviSynth+ since that is the most widely-used and entrenched build
+configuration. Users can override this and enable support for 32-bit
+GCC builds of AviSynth+ by passing @code{-DAVSC_WIN32_GCC32} to
+@code{--extra-cflags} when configuring FFmpeg.
+
+64-bit builds of FFmpeg are not affected, and can use either MSVC or
+GCC builds of AviSynth+ without any special flags.
@end float
@float NOTE
To make sense of them the mode in use needs to be specified as a format option:
@code{ffmpeg -f codec2raw -mode 1300 -i input.raw output.wav}.
+@section dav1d
+
+FFmpeg can make use of the dav1d library for AV1 video decoding.
+
+Go to @url{https://code.videolan.org/videolan/dav1d} and follow the instructions for
+installing the library. Then pass @code{--enable-libdav1d} to configure to enable it.
+
@section davs2
FFmpeg can make use of the davs2 library for AVS2-P2/IEEE1857.4 video decoding.
instructions. To enable using OpenJPEG in FFmpeg, pass @code{--enable-libopenjpeg} to
@file{./configure}.
+@section rav1e
+
+FFmpeg can make use of rav1e (Rust AV1 Encoder) via its C bindings to encode videos.
+Go to @url{https://github.com/xiph/rav1e/} and follow the instructions to build
+the C library. To enable using rav1e in FFmpeg, pass @code{--enable-librav1e}
+to @file{./configure}.
+
@section TwoLAME
FFmpeg can make use of the TwoLAME library for MP2 encoding.
instructions for installing the library.
Then pass @code{--enable-libtwolame} to configure to enable it.
+@section VapourSynth
+
+FFmpeg can read VapourSynth scripts as input. To enable support, pass
+@code{--enable-vapoursynth} to configure. Vapoursynth is detected via
+@code{pkg-config}. Versions 42 or greater supported.
+See @url{http://www.vapoursynth.com/}.
+
+Due to security concerns, Vapoursynth scripts will not
+be autodetected so the input format has to be forced. For ff* CLI tools,
+add @code{-f vapoursynth} before the input @code{-i yourscript.vpy}.
+
@section WavPack
FFmpeg can make use of the libwavpack library for WavPack encoding.
@item IEC61937 encapsulation @tab X @tab X
@item IFF @tab @tab X
@tab Interchange File Format
+@item IFV @tab @tab X
+ @tab A format used by some old CCTV DVRs.
@item iLBC @tab X @tab X
@item Interplay MVE @tab @tab X
@tab Format used in various Interplay computer games.
@item Psygnosis YOP @tab @tab X
@end multitable
-@code{X} means that encoding (resp. decoding) is supported.
+@code{X} means that the feature in that column (encoding / decoding) is supported.
@section Image Formats
@tab X Window Dump image format
@end multitable
-@code{X} means that encoding (resp. decoding) is supported.
+@code{X} means that the feature in that column (encoding / decoding) is supported.
@code{E} means that support is provided through an external library.
@item Autodesk RLE @tab @tab X
@tab fourcc: AASC
@item AV1 @tab E @tab E
- @tab Supported through external libraries libaom and libdav1d
+ @tab Supported through external libraries libaom, libdav1d and librav1e
@item Avid 1:1 10-bit RGB Packer @tab X @tab X
@tab fourcc: AVrp
@item AVS (Audio Video Standard) video @tab @tab X
@tab Video encoding used by the Creature Shock game.
+@item AVS2-P2/IEEE1857.4 @tab E @tab E
+ @tab Supported through external libraries libxavs2 and libdavs2
@item AYUV @tab X @tab X
@tab Microsoft uncompressed packed 4:4:4:4
@item Beam Software VB @tab @tab X
@tab Video encoding used in NuppelVideo files.
@item On2 VP3 @tab @tab X
@tab still experimental
+@item On2 VP4 @tab @tab X
+ @tab fourcc: VP40
@item On2 VP5 @tab @tab X
@tab fourcc: VP50
@item On2 VP6 @tab @tab X
@tab Encoder works only in PAL8.
@end multitable
-@code{X} means that encoding (resp. decoding) is supported.
+@code{X} means that the feature in that column (encoding / decoding) is supported.
@code{E} means that support is provided through an external library.
@item AAC+ @tab E @tab IX
@tab encoding supported through external library libfdk-aac
@item AC-3 @tab IX @tab IX
+@item ACELP.KELVIN @tab @tab X
@item ADPCM 4X Movie @tab @tab X
@item APDCM Yamaha AICA @tab @tab X
@item ADPCM CDROM XA @tab @tab X
@item DPCM Sol @tab @tab X
@item DPCM Xan @tab @tab X
@tab Used in Origin's Wing Commander IV AVI files.
-@item DSD (Direct Stream Digitial), least significant bit first @tab @tab X
-@item DSD (Direct Stream Digitial), most significant bit first @tab @tab X
-@item DSD (Direct Stream Digitial), least significant bit first, planar @tab @tab X
-@item DSD (Direct Stream Digitial), most significant bit first, planar @tab @tab X
+@item DSD (Direct Stream Digital), least significant bit first @tab @tab X
+@item DSD (Direct Stream Digital), most significant bit first @tab @tab X
+@item DSD (Direct Stream Digital), least significant bit first, planar @tab @tab X
+@item DSD (Direct Stream Digital), most significant bit first, planar @tab @tab X
@item DSP Group TrueSpeech @tab @tab X
@item DST (Direct Stream Transfer) @tab @tab X
@item DV audio @tab @tab X
@item Xbox Media Audio 2 @tab @tab X
@end multitable
-@code{X} means that encoding (resp. decoding) is supported.
+@code{X} means that the feature in that column (encoding / decoding) is supported.
@code{E} means that support is provided through an external library.
@item TCP @tab X
@item TLS @tab X
@item UDP @tab X
+@item ZMQ @tab E
@end multitable
@code{X} means that the protocol is supported.