]> git.sesse.net Git - ffmpeg/blobdiff - doc/general.texi
doc/general: update table AV1 entry for librav1e
[ffmpeg] / doc / general.texi
index 06f7a78d8a103ca21bc63125b50ba4f54ff555cc..4bd4b4f6b9a50d9e87abf59b2f4e933b7de24ecb 100644 (file)
@@ -17,7 +17,104 @@ for more formats. None of them are used by default, their use has to be
 explicitly requested by passing the appropriate flags to
 @command{./configure}.
 
-@section libdavs2
+@section Alliance for Open Media (AOM)
+
+FFmpeg can make use of the AOM library for AV1 decoding and encoding.
+
+Go to @url{http://aomedia.org/} and follow the instructions for
+installing the library. Then pass @code{--enable-libaom} to configure to
+enable it.
+
+@section AMD AMF/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(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
+@code{--enable-avisynth} 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.
+
+For Windows, supported AviSynth variants are
+@url{http://avisynth.nl, AviSynth 2.6 RC1 or higher} for 32-bit builds and
+@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
+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
+AviSynth and AvxSynth are loaded dynamically.  Distributors can build FFmpeg
+with @code{--enable-avisynth}, and the binaries will work regardless of the
+end user having AviSynth or AvxSynth installed - they'll only need to be
+installed to use AviSynth scripts (obviously).
+@end float
+
+@section Chromaprint
+
+FFmpeg can make use of the Chromaprint library for generating audio fingerprints.
+Pass @code{--enable-chromaprint} to configure to
+enable it. See @url{https://acoustid.org/chromaprint}.
+
+@section codec2
+
+FFmpeg can make use of the codec2 library for codec2 decoding and encoding.
+There is currently no native decoder, so libcodec2 must be used for decoding.
+
+Go to @url{http://freedv.org/}, download "Codec 2 source archive".
+Build and install using CMake. Debian users can install the libcodec2-dev package instead.
+Once libcodec2 is installed you can pass @code{--enable-libcodec2} to configure to enable it.
+
+The easiest way to use codec2 is with .c2 files, since they contain the mode information required for decoding.
+To encode such a file, use a .c2 file extension and give the libcodec2 encoder the -mode option:
+@code{ffmpeg -i input.wav -mode 700C output.c2}.
+Playback is as simple as @code{ffplay output.c2}.
+For a list of supported modes, run @code{ffmpeg -h encoder=libcodec2}.
+Raw codec2 files are also supported.
+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.
 
@@ -31,21 +128,63 @@ libdavs2 is under the GNU Public License Version 2 or later
 details), you must upgrade FFmpeg's license to GPL in order to use it.
 @end float
 
-@section Alliance for Open Media libaom
+@section Game Music Emu
 
-FFmpeg can make use of the libaom library for AV1 decoding.
+FFmpeg can make use of the Game Music Emu library to read audio from supported video game
+music file formats. Pass @code{--enable-libgme} to configure to
+enable it. See @url{https://bitbucket.org/mpyne/game-music-emu/overview}.
 
-Go to @url{http://aomedia.org/} and follow the instructions for
-installing the library. Then pass @code{--enable-libaom} to configure to
+@section Intel QuickSync Video
+
+FFmpeg can use Intel QuickSync Video (QSV) for accelerated decoding and encoding
+of multiple codecs. To use QSV, FFmpeg must be linked against the @code{libmfx}
+dispatcher, which loads the actual decoding libraries.
+
+The dispatcher is open source and can be downloaded from
+@url{https://github.com/lu-zero/mfx_dispatch.git}. FFmpeg needs to be configured
+with the @code{--enable-libmfx} option and @code{pkg-config} needs to be able to
+locate the dispatcher's @code{.pc} files.
+
+@section Kvazaar
+
+FFmpeg can make use of the Kvazaar library for HEVC encoding.
+
+Go to @url{https://github.com/ultravideo/kvazaar} and follow the
+instructions for installing the library. Then pass
+@code{--enable-libkvazaar} to configure to enable it.
+
+@section LAME
+
+FFmpeg can make use of the LAME library for MP3 encoding.
+
+Go to @url{http://lame.sourceforge.net/} and follow the
+instructions for installing the library.
+Then pass @code{--enable-libmp3lame} to configure to enable it.
+
+@section libilbc
+
+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 decoding and encoding.
+
+Go to @url{https://github.com/TimothyGu/libilbc} and follow the instructions for
+installing the library. Then pass @code{--enable-libilbc} to configure to
 enable it.
 
-@section OpenJPEG
+@section libvpx
 
-FFmpeg can use the OpenJPEG libraries for encoding/decoding J2K videos.  Go to
-@url{http://www.openjpeg.org/} to get the libraries and follow the installation
-instructions.  To enable using OpenJPEG in FFmpeg, pass @code{--enable-libopenjpeg} to
-@file{./configure}.
+FFmpeg can make use of the libvpx library for VP8/VP9 decoding and encoding.
+
+Go to @url{http://www.webmproject.org/} and follow the instructions for
+installing the library. Then pass @code{--enable-libvpx} to configure to
+enable it.
 
+@section ModPlug
+
+FFmpeg can make use of this library, originating in Modplug-XMMS, to read from MOD-like music files.
+See @url{https://github.com/Konstanty/libmodplug}. Pass @code{--enable-libmodplug} to configure to
+enable it.
 
 @section OpenCORE, VisualOn, and Fraunhofer libraries
 
@@ -92,13 +231,34 @@ Go to @url{http://sourceforge.net/projects/opencore-amr/} and follow the
 instructions for installing the library.
 Then pass @code{--enable-libfdk-aac} to configure to enable it.
 
-@section LAME
+@section OpenH264
 
-FFmpeg can make use of the LAME library for MP3 encoding.
+FFmpeg can make use of the OpenH264 library for H.264 decoding and encoding.
 
-Go to @url{http://lame.sourceforge.net/} and follow the
-instructions for installing the library.
-Then pass @code{--enable-libmp3lame} to configure to enable it.
+Go to @url{http://www.openh264.org/} and follow the instructions for
+installing the library. Then pass @code{--enable-libopenh264} to configure to
+enable it.
+
+For decoding, this library is much more limited than the built-in decoder
+in libavcodec; currently, this library lacks support for decoding B-frames
+and some other main/high profile features. (It currently only supports
+constrained baseline profile and CABAC.) Using it is mostly useful for
+testing and for taking advantage of Cisco's patent portfolio license
+(@url{http://www.openh264.org/BINARY_LICENSE.txt}).
+
+@section OpenJPEG
+
+FFmpeg can use the OpenJPEG libraries for decoding/encoding J2K videos.  Go to
+@url{http://www.openjpeg.org/} to get the libraries and follow the installation
+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
 
@@ -108,33 +268,18 @@ Go to @url{http://www.twolame.org/} and follow the
 instructions for installing the library.
 Then pass @code{--enable-libtwolame} to configure to enable it.
 
-@section libcodec2 / codec2 general
+@section VapourSynth
 
-FFmpeg can make use of libcodec2 for codec2 encoding and decoding.
-There is currently no native decoder, so libcodec2 must be used for decoding.
+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/}.
 
-Go to @url{http://freedv.org/}, download "Codec 2 source archive".
-Build and install using CMake. Debian users can install the libcodec2-dev package instead.
-Once libcodec2 is installed you can pass @code{--enable-libcodec2} to configure to enable it.
-
-The easiest way to use codec2 is with .c2 files, since they contain the mode information required for decoding.
-To encode such a file, use a .c2 file extension and give the libcodec2 encoder the -mode option:
-@code{ffmpeg -i input.wav -mode 700C output.c2}.
-Playback is as simple as @code{ffplay output.c2}.
-For a list of supported modes, run @code{ffmpeg -h encoder=libcodec2}.
-Raw codec2 files are also supported.
-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}.
+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 libvpx
-
-FFmpeg can make use of the libvpx library for VP8/VP9 encoding.
-
-Go to @url{http://www.webmproject.org/} and follow the instructions for
-installing the library. Then pass @code{--enable-libvpx} to configure to
-enable it.
-
-@section libwavpack
+@section WavPack
 
 FFmpeg can make use of the libwavpack library for WavPack encoding.
 
@@ -142,29 +287,6 @@ Go to @url{http://www.wavpack.com/} and follow the instructions for
 installing the library. Then pass @code{--enable-libwavpack} to configure to
 enable it.
 
-@section libxavs
-
-FFmpeg can make use of the libxavs library for Xavs encoding.
-
-Go to @url{http://xavs.sf.net/} and follow the instructions for
-installing the library. Then pass @code{--enable-libxavs} to configure to
-enable it.
-
-@section OpenH264
-
-FFmpeg can make use of the OpenH264 library for H.264 encoding and decoding.
-
-Go to @url{http://www.openh264.org/} and follow the instructions for
-installing the library. Then pass @code{--enable-libopenh264} to configure to
-enable it.
-
-For decoding, this library is much more limited than the built-in decoder
-in libavcodec; currently, this library lacks support for decoding B-frames
-and some other main/high profile features. (It currently only supports
-constrained baseline profile and CABAC.) Using it is mostly useful for
-testing and for taking advantage of Cisco's patent portfolio license
-(@url{http://www.openh264.org/BINARY_LICENSE.txt}).
-
 @section x264
 
 FFmpeg can make use of the x264 library for H.264 encoding.
@@ -193,91 +315,36 @@ x265 is under the GNU Public License Version 2 or later
 details), you must upgrade FFmpeg's license to GPL in order to use it.
 @end float
 
-@section kvazaar
-
-FFmpeg can make use of the kvazaar library for HEVC encoding.
-
-Go to @url{https://github.com/ultravideo/kvazaar} and follow the
-instructions for installing the library. Then pass
-@code{--enable-libkvazaar} to configure to enable it.
-
-@section libilbc
+@section xavs
 
-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.
+FFmpeg can make use of the xavs library for AVS encoding.
 
-Go to @url{https://github.com/TimothyGu/libilbc} and follow the instructions for
-installing the library. Then pass @code{--enable-libilbc} to configure to
+Go to @url{http://xavs.sf.net/} and follow the instructions for
+installing the library. Then pass @code{--enable-libxavs} to configure to
 enable it.
 
-@section libzvbi
+@section xavs2
 
-libzvbi is a VBI decoding library which can be used by FFmpeg to decode DVB
-teletext pages and DVB teletext subtitles.
+FFmpeg can make use of the xavs2 library for AVS2-P2/IEEE1857.4 video encoding.
 
-Go to @url{http://sourceforge.net/projects/zapping/} and follow the instructions for
-installing the library. Then pass @code{--enable-libzvbi} to configure to
+Go to @url{https://github.com/pkuvcl/xavs2} and follow the instructions for
+installing the library. Then pass @code{--enable-libxavs2} to configure to
 enable it.
 
-@section AviSynth
-
-FFmpeg can read AviSynth scripts as input. To enable support, pass
-@code{--enable-avisynth} 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.
-
-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.
-
-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}
-@end float
-
-@float NOTE
-AviSynth and AvxSynth are loaded dynamically.  Distributors can build FFmpeg
-with @code{--enable-avisynth}, and the binaries will work regardless of the
-end user having AviSynth or AvxSynth installed - they'll only need to be
-installed to use AviSynth scripts (obviously).
+libxavs2 is under the GNU Public License Version 2 or later
+(see @url{http://www.gnu.org/licenses/old-licenses/gpl-2.0.html} for
+details), you must upgrade FFmpeg's license to GPL in order to use it.
 @end float
 
-@section Intel QuickSync Video
-
-FFmpeg can use Intel QuickSync Video (QSV) for accelerated encoding and decoding
-of multiple codecs. To use QSV, FFmpeg must be linked against the @code{libmfx}
-dispatcher, which loads the actual decoding libraries.
-
-The dispatcher is open source and can be downloaded from
-@url{https://github.com/lu-zero/mfx_dispatch.git}. FFmpeg needs to be configured
-with the @code{--enable-libmfx} option and @code{pkg-config} needs to be able to
-locate the dispatcher's @code{.pc} files.
-
-@section AMD VCE
-
-FFmpeg can use the AMD Advanced Media Framework library for accelerated H.264
-and HEVC encoding on VCE enabled hardware under Windows.
-
-To enable support you must obtain the AMF framework header files from
-@url{https://github.com/GPUOpen-LibrariesAndSDKs/AMF.git}.
+@section ZVBI
 
-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}.
+ZVBI is a VBI decoding library which can be used by FFmpeg to decode DVB
+teletext pages and DVB teletext subtitles.
 
+Go to @url{http://sourceforge.net/projects/zapping/} and follow the instructions for
+installing the library. Then pass @code{--enable-libzvbi} to configure to
+enable it.
 
 @chapter Supported File Formats, Codecs or Features
 
@@ -418,6 +485,8 @@ library:
 @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.
@@ -531,6 +600,7 @@ library:
 @item raw VC-1                  @tab X @tab X
 @item raw PCM A-law             @tab X @tab X
 @item raw PCM mu-law            @tab X @tab X
+@item raw PCM Archimedes VIDC   @tab X @tab X
 @item raw PCM signed 8 bit      @tab X @tab X
 @item raw PCM signed 16 bit big-endian  @tab X @tab X
 @item raw PCM signed 16 bit little-endian  @tab X @tab X
@@ -574,6 +644,7 @@ library:
 @item SAP                       @tab X @tab X
 @item SBG                       @tab   @tab X
 @item SDP                       @tab   @tab X
+@item SER                       @tab   @tab X
 @item Sega FILM/CPK             @tab X @tab X
     @tab Used in many Sega Saturn console games.
 @item Silicon Graphics Movie    @tab   @tab X
@@ -634,7 +705,7 @@ library:
 @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
 
@@ -704,7 +775,7 @@ following image formats are supported:
     @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.
 
@@ -742,12 +813,14 @@ following image formats are supported:
 @item Autodesk Animator Flic video  @tab     @tab  X
 @item Autodesk RLE           @tab     @tab  X
     @tab fourcc: AASC
-@item AV1                    @tab     @tab  E
-    @tab Supported through external library libaom
+@item AV1                    @tab  E  @tab  E
+    @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
@@ -892,6 +965,8 @@ following image formats are supported:
     @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
@@ -986,7 +1061,7 @@ following image formats are supported:
     @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.
 
@@ -1001,6 +1076,7 @@ following image formats are supported:
 @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
@@ -1092,10 +1168,10 @@ following image formats are supported:
 @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
@@ -1132,6 +1208,7 @@ following image formats are supported:
     @tab encoding supported through external library libopus
 @item PCM A-law              @tab  X  @tab  X
 @item PCM mu-law             @tab  X  @tab  X
+@item PCM Archimedes VIDC    @tab  X  @tab  X
 @item PCM signed 8-bit planar  @tab  X  @tab  X
 @item PCM signed 16-bit big-endian planar  @tab  X  @tab  X
 @item PCM signed 16-bit little-endian planar  @tab  X  @tab  X
@@ -1204,7 +1281,7 @@ following image formats are supported:
 @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.
 
@@ -1272,6 +1349,7 @@ performance on systems without hardware floating point support).
 @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.