\input texinfo @c -*- texinfo -*-

@settitle General Documentation
@titlepage
@center @titlefont{General Documentation}
@end titlepage

@top

@contents

@chapter external libraries

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 @file{./configure}.

@section OpenCORE AMR

FFmpeg can make use of the OpenCORE libraries for AMR-NB
decoding/encoding and AMR-WB decoding.

Go to @url{http://sourceforge.net/projects/opencore-amr/} and follow the instructions for
installing the libraries. Then pass @code{--enable-libopencore-amrnb} and/or
@code{--enable-libopencore-amrwb} to configure to enable the libraries.

Note that OpenCORE is under the Apache License 2.0 (see
@url{http://www.apache.org/licenses/LICENSE-2.0} for details), which is
incompatible with the LGPL version 2.1 and GPL version 2. You have to
upgrade FFmpeg's license to LGPL version 3 (or if you have enabled
GPL components, GPL version 3) to use it.


@chapter Supported File Formats and Codecs

You can use the @code{-formats} and @code{-codecs} options to have an exhaustive list.

@section File Formats

FFmpeg supports the following file formats through the @code{libavformat}
library:

@multitable @columnfractions .4 .1 .1 .4
@item Name @tab Encoding @tab Decoding @tab Comments
@item 4xm                       @tab   @tab X
    @tab 4X Technologies format, used in some games.
@item 8088flex TMV              @tab   @tab X
@item Adobe Filmstrip           @tab X @tab X
@item Audio IFF (AIFF)          @tab X @tab X
@item American Laser Games MM   @tab   @tab X
    @tab Multimedia format used in games like Mad Dog McCree.
@item 3GPP AMR                  @tab X @tab X
@item Apple HTTP Live Streaming @tab   @tab X
@item ASF                       @tab X @tab X
@item AVI                       @tab X @tab X
@item AVISynth                  @tab   @tab X
@item AVS                       @tab   @tab X
    @tab Multimedia format used by the Creature Shock game.
@item Beam Software SIFF        @tab   @tab X
    @tab Audio and video format used in some games by Beam Software.
@item Bethesda Softworks VID    @tab   @tab X
    @tab Used in some games from Bethesda Softworks.
@item Bink                      @tab   @tab X
    @tab Multimedia format used by many games.
@item Bitmap Brothers JV        @tab   @tab X
    @tab Used in Z and Z95 games.
@item Brute Force & Ignorance   @tab   @tab X
    @tab Used in the game Flash Traffic: City of Angels.
@item Interplay C93             @tab   @tab X
    @tab Used in the game Cyberia from Interplay.
@item Delphine Software International CIN @tab   @tab X
    @tab Multimedia format used by Delphine Software games.
@item CD+G                      @tab   @tab X
    @tab Video format used by CD+G karaoke disks
@item Core Audio Format         @tab X @tab X
    @tab Apple Core Audio Format
@item CRC testing format        @tab X @tab
@item Creative Voice            @tab X @tab X
    @tab Created for the Sound Blaster Pro.
@item CRYO APC                  @tab   @tab X
    @tab Audio format used in some games by CRYO Interactive Entertainment.
@item D-Cinema audio            @tab X @tab X
@item Deluxe Paint Animation    @tab   @tab X
@item DFA                       @tab   @tab X
    @tab This format is used in Chronomaster game
@item DV video                  @tab X @tab X
@item DXA                       @tab   @tab X
    @tab This format is used in the non-Windows version of the Feeble Files
         game and different game cutscenes repacked for use with ScummVM.
@item Electronic Arts cdata  @tab    @tab X
@item Electronic Arts Multimedia  @tab    @tab X
    @tab Used in various EA games; files have extensions like WVE and UV2.
@item FFM (FFserver live feed)  @tab X @tab X
@item Flash (SWF)               @tab X @tab X
@item Flash 9 (AVM2)            @tab X @tab X
    @tab Only embedded audio is decoded.
@item FLI/FLC/FLX animation     @tab   @tab X
    @tab .fli/.flc files
@item Flash Video (FLV)         @tab X @tab X
    @tab Macromedia Flash video files
@item framecrc testing format   @tab X @tab
@item FunCom ISS                @tab   @tab X
    @tab Audio format used in various games from FunCom like The Longest Journey.
@item GIF Animation             @tab X @tab
@item GXF                       @tab X @tab X
    @tab General eXchange Format SMPTE 360M, used by Thomson Grass Valley
         playout servers.
@item id Quake II CIN video     @tab   @tab X
@item id RoQ                    @tab X @tab X
    @tab Used in Quake III, Jedi Knight 2, other computer games.
@item IEC61937 encapsulation @tab X @tab X
@item IFF                       @tab   @tab X
    @tab Interchange File Format
@item Interplay MVE             @tab   @tab X
    @tab Format used in various Interplay computer games.
@item IV8                       @tab   @tab X
    @tab A format generated by IndigoVision 8000 video server.
@item IVF (On2)                 @tab X @tab X
    @tab A format used by libvpx
@item LMLM4                     @tab   @tab X
    @tab Used by Linux Media Labs MPEG-4 PCI boards
@item LXF                       @tab   @tab X
    @tab VR native stream format, used by Leitch/Harris' video servers.
@item Matroska                  @tab X @tab X
@item Matroska audio            @tab X @tab
@item FFmpeg metadata           @tab X @tab X
    @tab Metadata in text format.
@item MAXIS XA                  @tab   @tab X
    @tab Used in Sim City 3000; file extension .xa.
@item MD Studio                 @tab   @tab X
@item Mobotix .mxg              @tab   @tab X
@item Monkey's Audio            @tab   @tab X
@item Motion Pixels MVI         @tab   @tab X
@item MOV/QuickTime/MP4         @tab X @tab X
    @tab 3GP, 3GP2, PSP, iPod variants supported
@item MP2                       @tab X @tab X
@item MP3                       @tab X @tab X
@item MPEG-1 System             @tab X @tab X
    @tab muxed audio and video, VCD format supported
@item MPEG-PS (program stream)  @tab X @tab X
    @tab also known as @code{VOB} file, SVCD and DVD format supported
@item MPEG-TS (transport stream) @tab X @tab X
    @tab also known as DVB Transport Stream
@item MPEG-4                    @tab X @tab X
    @tab MPEG-4 is a variant of QuickTime.
@item MIME multipart JPEG       @tab X @tab
@item MSN TCP webcam            @tab   @tab X
    @tab Used by MSN Messenger webcam streams.
@item MTV                       @tab   @tab X
@item Musepack                  @tab   @tab X
@item Musepack SV8              @tab   @tab X
@item Material eXchange Format (MXF) @tab X @tab X
    @tab SMPTE 377M, used by D-Cinema, broadcast industry.
@item Material eXchange Format (MXF), D-10 Mapping @tab X @tab X
    @tab SMPTE 386M, D-10/IMX Mapping.
@item NC camera feed            @tab   @tab X
    @tab NC (AVIP NC4600) camera streams
@item NTT TwinVQ (VQF)          @tab   @tab X
    @tab Nippon Telegraph and Telephone Corporation TwinVQ.
@item Nullsoft Streaming Video  @tab   @tab X
@item NuppelVideo               @tab   @tab X
@item NUT                       @tab X @tab X
    @tab NUT Open Container Format
@item Ogg                       @tab X @tab X
@item Playstation Portable PMP  @tab   @tab X
@item TechnoTrend PVA           @tab   @tab X
    @tab Used by TechnoTrend DVB PCI boards.
@item QCP                       @tab   @tab X
@item raw ADTS (AAC)            @tab X @tab X
@item raw AC-3                  @tab X @tab X
@item raw Chinese AVS video     @tab X @tab X
@item raw CRI ADX               @tab X @tab X
@item raw Dirac                 @tab X @tab X
@item raw DNxHD                 @tab X @tab X
@item raw DTS                   @tab X @tab X
@item raw E-AC-3                @tab X @tab X
@item raw FLAC                  @tab X @tab X
@item raw GSM                   @tab   @tab X
@item raw H.261                 @tab X @tab X
@item raw H.263                 @tab X @tab X
@item raw H.264                 @tab X @tab X
@item raw Ingenient MJPEG       @tab   @tab X
@item raw MJPEG                 @tab X @tab X
@item raw MLP                   @tab   @tab X
@item raw MPEG                  @tab   @tab X
@item raw MPEG-1                @tab   @tab X
@item raw MPEG-2                @tab   @tab X
@item raw MPEG-4                @tab X @tab X
@item raw NULL                  @tab X @tab
@item raw video                 @tab X @tab X
@item raw id RoQ                @tab X @tab
@item raw Shorten               @tab   @tab X
@item raw TrueHD                @tab X @tab X
@item raw VC-1                  @tab   @tab X
@item raw PCM A-law             @tab X @tab X
@item raw PCM mu-law            @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
@item raw PCM signed 24 bit big-endian  @tab X @tab X
@item raw PCM signed 24 bit little-endian  @tab X @tab X
@item raw PCM signed 32 bit big-endian  @tab X @tab X
@item raw PCM signed 32 bit little-endian  @tab X @tab X
@item raw PCM unsigned 8 bit    @tab X @tab X
@item raw PCM unsigned 16 bit big-endian  @tab X @tab X
@item raw PCM unsigned 16 bit little-endian  @tab X @tab X
@item raw PCM unsigned 24 bit big-endian  @tab X @tab X
@item raw PCM unsigned 24 bit little-endian  @tab X @tab X
@item raw PCM unsigned 32 bit big-endian  @tab X @tab X
@item raw PCM unsigned 32 bit little-endian  @tab X @tab X
@item raw PCM floating-point 32 bit big-endian  @tab X @tab X
@item raw PCM floating-point 32 bit little-endian  @tab X @tab X
@item raw PCM floating-point 64 bit big-endian  @tab X @tab X
@item raw PCM floating-point 64 bit little-endian  @tab X @tab X
@item RDT                       @tab   @tab X
@item REDCODE R3D               @tab   @tab X
    @tab File format used by RED Digital cameras, contains JPEG 2000 frames and PCM audio.
@item RealMedia                 @tab X @tab X
@item Redirector                @tab   @tab X
@item Renderware TeXture Dictionary @tab   @tab X
@item RL2                       @tab   @tab X
    @tab Audio and video format used in some games by Entertainment Software Partners.
@item RPL/ARMovie               @tab   @tab X
@item Lego Mindstorms RSO       @tab X @tab X
@item RTMP                      @tab X @tab X
    @tab Output is performed by publishing stream to RTMP server
@item RTP                       @tab X @tab X
@item RTSP                      @tab X @tab X
@item SAP                       @tab X @tab X
@item SDP                       @tab   @tab X
@item Sega FILM/CPK             @tab   @tab X
    @tab Used in many Sega Saturn console games.
@item Sierra SOL                @tab   @tab X
    @tab .sol files used in Sierra Online games.
@item Sierra VMD                @tab   @tab X
    @tab Used in Sierra CD-ROM games.
@item Smacker                   @tab   @tab X
    @tab Multimedia format used by many games.
@item Sony OpenMG (OMA)         @tab   @tab X
    @tab Audio format used in Sony Sonic Stage and Sony Vegas.
@item Sony PlayStation STR      @tab   @tab X
@item Sony Wave64 (W64)         @tab   @tab X
@item SoX native format         @tab X @tab X
@item SUN AU format             @tab X @tab X
@item Text files                @tab   @tab X
@item THP                       @tab   @tab X
    @tab Used on the Nintendo GameCube.
@item Tiertex Limited SEQ       @tab   @tab X
    @tab Tiertex .seq files used in the DOS CD-ROM version of the game Flashback.
@item True Audio                @tab   @tab X
@item VC-1 test bitstream       @tab X @tab X
@item WAV                       @tab X @tab X
@item WavPack                   @tab   @tab X
@item WebM                      @tab X @tab X
@item Windows Televison (WTV)   @tab   @tab X
@item Wing Commander III movie  @tab   @tab X
    @tab Multimedia format used in Origin's Wing Commander III computer game.
@item Westwood Studios audio    @tab   @tab X
    @tab Multimedia format used in Westwood Studios games.
@item Westwood Studios VQA      @tab   @tab X
    @tab Multimedia format used in Westwood Studios games.
@item xWMA                      @tab   @tab X
    @tab Microsoft audio container used by XAudio 2.
@item YUV4MPEG pipe             @tab X @tab X
@item Psygnosis YOP             @tab   @tab X
@end multitable

@code{X} means that encoding (resp. decoding) is supported.

@section Image Formats

FFmpeg can read and write images for each frame of a video sequence. The
following image formats are supported:

@multitable @columnfractions .4 .1 .1 .4
@item Name @tab Encoding @tab Decoding @tab Comments
@item .Y.U.V       @tab X @tab X
    @tab one raw file per component
@item animated GIF @tab X @tab X
    @tab Only uncompressed GIFs are generated.
@item BMP          @tab X @tab X
    @tab Microsoft BMP image
@item DPX          @tab X @tab X
    @tab Digital Picture Exchange
@item JPEG         @tab X @tab X
    @tab Progressive JPEG is not supported.
@item JPEG 2000    @tab X @tab X
@item JPEG-LS      @tab X @tab X
@item LJPEG        @tab X @tab
    @tab Lossless JPEG
@item PAM          @tab X @tab X
    @tab PAM is a PNM extension with alpha support.
@item PBM          @tab X @tab X
    @tab Portable BitMap image
@item PCX          @tab X @tab X
    @tab PC Paintbrush
@item PGM          @tab X @tab X
    @tab Portable GrayMap image
@item PGMYUV       @tab X @tab X
    @tab PGM with U and V components in YUV 4:2:0
@item PIC          @tab @tab X
    @tab Pictor/PC Paint
@item PNG          @tab X @tab X
    @tab 2/4 bpp not supported yet
@item PPM          @tab X @tab X
    @tab Portable PixelMap image
@item PTX          @tab   @tab X
    @tab V.Flash PTX format
@item SGI          @tab X @tab X
    @tab SGI RGB image format
@item Sun Rasterfile  @tab   @tab X
    @tab Sun RAS image format
@item TIFF         @tab X @tab X
    @tab YUV, JPEG and some extension is not supported yet.
@item Truevision Targa  @tab X @tab X
    @tab Targa (.TGA) image format
@end multitable

@code{X} means that encoding (resp. decoding) is supported.

@code{E} means that support is provided through an external library.

@section Video Codecs

@multitable @columnfractions .4 .1 .1 .4
@item Name @tab Encoding @tab Decoding @tab Comments
@item 4X Movie               @tab     @tab  X
    @tab Used in certain computer games.
@item 8088flex TMV           @tab     @tab  X
@item 8SVX exponential       @tab     @tab  X
@item 8SVX fibonacci         @tab     @tab  X
@item A64 multicolor         @tab  X  @tab
    @tab Creates video suitable to be played on a commodore 64 (multicolor mode).
@item American Laser Games MM  @tab    @tab X
    @tab Used in games like Mad Dog McCree.
@item AMV Video              @tab     @tab  X
    @tab Used in Chinese MP3 players.
@item ANSI/ASCII art         @tab     @tab  X
@item Apple MJPEG-B          @tab     @tab  X
@item Apple QuickDraw        @tab     @tab  X
    @tab fourcc: qdrw
@item Asus v1                @tab  X  @tab  X
    @tab fourcc: ASV1
@item Asus v2                @tab  X  @tab  X
    @tab fourcc: ASV2
@item ATI VCR1               @tab     @tab  X
    @tab fourcc: VCR1
@item ATI VCR2               @tab     @tab  X
    @tab fourcc: VCR2
@item Auravision Aura        @tab     @tab  X
@item Auravision Aura 2      @tab     @tab  X
@item Autodesk Animator Flic video  @tab     @tab  X
@item Autodesk RLE           @tab     @tab  X
    @tab fourcc: AASC
@item AVS (Audio Video Standard) video  @tab     @tab  X
    @tab Video encoding used by the Creature Shock game.
@item Beam Software VB       @tab     @tab  X
@item Bethesda VID video     @tab     @tab  X
    @tab Used in some games from Bethesda Softworks.
@item Bink Video             @tab     @tab  X
@item Bitmap Brothers JV video  @tab   @tab X
@item Brute Force & Ignorance   @tab   @tab X
    @tab Used in the game Flash Traffic: City of Angels.
@item C93 video              @tab     @tab  X
    @tab Codec used in Cyberia game.
@item CamStudio              @tab     @tab  X
    @tab fourcc: CSCD
@item CD+G                   @tab     @tab  X
    @tab Video codec for CD+G karaoke disks
@item Chinese AVS video      @tab  E  @tab  X
    @tab AVS1-P2, JiZhun profile, encoding through external library libxavs
@item Delphine Software International CIN video  @tab     @tab  X
    @tab Codec used in Delphine Software International games.
@item Cinepak                @tab     @tab  X
@item Cirrus Logic AccuPak   @tab     @tab  X
    @tab fourcc: CLJR
@item Creative YUV (CYUV)    @tab     @tab  X
@item DFA                    @tab     @tab  X
    @tab Codec used in Chronomaster game.
@item Dirac                  @tab  E  @tab  E
    @tab supported through external libdirac/libschroedinger libraries
@item Deluxe Paint Animation @tab     @tab  X
@item DNxHD                  @tab   X @tab  X
    @tab aka SMPTE VC3
@item Duck TrueMotion 1.0   @tab     @tab  X
    @tab fourcc: DUCK
@item Duck TrueMotion 2.0    @tab     @tab  X
    @tab fourcc: TM20
@item DV (Digital Video)     @tab  X  @tab  X
@item Feeble Files/ScummVM DXA  @tab     @tab  X
    @tab Codec originally used in Feeble Files game.
@item Electronic Arts CMV video  @tab     @tab  X
    @tab Used in NHL 95 game.
@item Electronic Arts Madcow video  @tab     @tab  X
@item Electronic Arts TGV video  @tab     @tab  X
@item Electronic Arts TGQ video  @tab     @tab  X
@item Electronic Arts TQI video  @tab     @tab  X
@item Escape 124             @tab     @tab  X
@item FFmpeg video codec #1  @tab  X  @tab  X
    @tab experimental lossless codec (fourcc: FFV1)
@item Flash Screen Video v1  @tab  X  @tab  X
    @tab fourcc: FSV1
@item Flash Screen Video v2  @tab  X
@item Flash Video (FLV)      @tab  X  @tab  X
    @tab Sorenson H.263 used in Flash
@item Fraps                  @tab     @tab  X
@item H.261                  @tab  X  @tab  X
@item H.263 / H.263-1996     @tab  X  @tab  X
@item H.263+ / H.263-1998 / H.263 version 2  @tab  X  @tab  X
@item H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10  @tab  E  @tab  X
    @tab encoding supported through external library libx264
@item H.264 / AVC / MPEG-4 AVC / MPEG-4 part 10 (VDPAU acceleration)  @tab  E  @tab  X
@item HuffYUV                @tab  X  @tab  X
@item HuffYUV FFmpeg variant @tab  X  @tab  X
@item IBM Ultimotion         @tab     @tab  X
    @tab fourcc: ULTI
@item id Cinematic video     @tab     @tab  X
    @tab Used in Quake II.
@item id RoQ video           @tab  X  @tab  X
    @tab Used in Quake III, Jedi Knight 2, other computer games.
@item IFF ILBM               @tab     @tab  X
    @tab IFF interlaved bitmap
@item IFF ByteRun1           @tab     @tab  X
    @tab IFF run length encoded bitmap
@item Intel H.263            @tab     @tab  X
@item Intel Indeo 2          @tab     @tab  X
@item Intel Indeo 3          @tab     @tab  X
@item Intel Indeo 5          @tab     @tab  X
@item Interplay C93          @tab     @tab  X
    @tab Used in the game Cyberia from Interplay.
@item Interplay MVE video    @tab     @tab  X
    @tab Used in Interplay .MVE files.
@item Karl Morton's video codec  @tab     @tab  X
    @tab Codec used in Worms games.
@item Kega Game Video (KGV1) @tab      @tab  X
    @tab Kega emulator screen capture codec.
@item Lagarith               @tab     @tab  X
@item LCL (LossLess Codec Library) MSZH  @tab     @tab  X
@item LCL (LossLess Codec Library) ZLIB  @tab  E  @tab  E
@item LOCO                   @tab     @tab  X
@item lossless MJPEG         @tab  X  @tab  X
@item Microsoft RLE          @tab     @tab  X
@item Microsoft Video 1      @tab     @tab  X
@item Mimic                  @tab     @tab  X
    @tab Used in MSN Messenger Webcam streams.
@item Miro VideoXL           @tab     @tab  X
    @tab fourcc: VIXL
@item MJPEG (Motion JPEG)    @tab  X  @tab  X
@item Mobotix MxPEG video    @tab     @tab  X
@item Motion Pixels video    @tab     @tab  X
@item MPEG-1 video           @tab  X  @tab  X
@item MPEG-1/2 video XvMC (X-Video Motion Compensation)  @tab     @tab  X
@item MPEG-1/2 video (VDPAU acceleration)  @tab     @tab  X
@item MPEG-2 video           @tab  X  @tab  X
@item MPEG-4 part 2          @tab  X  @tab  X
    @ libxvidcore can be used alternatively for encoding.
@item MPEG-4 part 2 Microsoft variant version 1  @tab     @tab  X
@item MPEG-4 part 2 Microsoft variant version 2  @tab  X  @tab  X
@item MPEG-4 part 2 Microsoft variant version 3  @tab  X  @tab  X
@item Nintendo Gamecube THP video  @tab     @tab  X
@item NuppelVideo/RTjpeg     @tab     @tab  X
    @tab Video encoding used in NuppelVideo files.
@item On2 VP3                @tab     @tab  X
    @tab still experimental
@item On2 VP5                @tab     @tab  X
    @tab fourcc: VP50
@item On2 VP6                @tab     @tab  X
    @tab fourcc: VP60,VP61,VP62
@item VP8                    @tab  E  @tab  X
    @tab fourcc: VP80, encoding supported through external library libvpx
@item planar RGB             @tab     @tab  X
    @tab fourcc: 8BPS
@item Q-team QPEG            @tab     @tab  X
    @tab fourccs: QPEG, Q1.0, Q1.1
@item QuickTime 8BPS video   @tab     @tab  X
@item QuickTime Animation (RLE) video  @tab  X  @tab  X
    @tab fourcc: 'rle '
@item QuickTime Graphics (SMC)  @tab     @tab  X
    @tab fourcc: 'smc '
@item QuickTime video (RPZA) @tab     @tab  X
    @tab fourcc: rpza
@item R10K AJA Kona 10-bit RGB Codec     @tab     @tab  X
@item R210 Quicktime Uncompressed RGB 10-bit     @tab     @tab  X
@item Raw Video              @tab  X  @tab  X
@item RealVideo 1.0          @tab  X  @tab  X
@item RealVideo 2.0          @tab  X  @tab  X
@item RealVideo 3.0          @tab     @tab  X
    @tab still far from ideal
@item RealVideo 4.0          @tab     @tab  X
@item Renderware TXD (TeXture Dictionary)  @tab     @tab  X
    @tab Texture dictionaries used by the Renderware Engine.
@item RL2 video              @tab     @tab  X
    @tab used in some games by Entertainment Software Partners
@item Sierra VMD video       @tab     @tab  X
    @tab Used in Sierra VMD files.
@item Smacker video          @tab     @tab  X
    @tab Video encoding used in Smacker.
@item SMPTE VC-1             @tab     @tab  X
@item Snow                   @tab  X  @tab  X
    @tab experimental wavelet codec (fourcc: SNOW)
@item Sony PlayStation MDEC (Motion DECoder)  @tab     @tab  X
@item Sorenson Vector Quantizer 1  @tab  X  @tab  X
    @tab fourcc: SVQ1
@item Sorenson Vector Quantizer 3  @tab     @tab  X
    @tab fourcc: SVQ3
@item Sunplus JPEG (SP5X)    @tab     @tab  X
    @tab fourcc: SP5X
@item TechSmith Screen Capture Codec  @tab     @tab  X
    @tab fourcc: TSCC
@item Theora                 @tab  E  @tab  X
    @tab encoding supported through external library libtheora
@item Tiertex Limited SEQ video  @tab     @tab  X
    @tab Codec used in DOS CD-ROM FlashBack game.
@item V210 Quicktime Uncompressed 4:2:2 10-bit     @tab  X  @tab  X
@item VMware Screen Codec / VMware Video  @tab     @tab  X
    @tab Codec used in videos captured by VMware.
@item Westwood Studios VQA (Vector Quantized Animation) video  @tab     @tab  X
@item Windows Media Video 7  @tab  X  @tab  X
@item Windows Media Video 8  @tab  X  @tab  X
@item Windows Media Video 9  @tab     @tab  X
    @tab not completely working
@item Wing Commander III / Xan  @tab     @tab  X
    @tab Used in Wing Commander III .MVE files.
@item Wing Commander IV / Xan  @tab     @tab  X
    @tab Used in Wing Commander IV.
@item Winnov WNV1            @tab     @tab  X
@item WMV7                   @tab  X  @tab  X
@item YAMAHA SMAF            @tab  X  @tab  X
@item Psygnosis YOP Video    @tab     @tab  X
@item ZLIB                   @tab  X  @tab  X
    @tab part of LCL, encoder experimental
@item Zip Motion Blocks Video  @tab   X @tab  X
    @tab Encoder works only in PAL8.
@end multitable

@code{X} means that encoding (resp. decoding) is supported.

@code{E} means that support is provided through an external library.

@section Audio Codecs

@multitable @columnfractions .4 .1 .1 .4
@item Name @tab Encoding @tab Decoding @tab Comments
@item 8SVX audio             @tab     @tab  X
@item AAC+                   @tab  E  @tab  X
    @tab encoding supported through external library libaacplus
@item AAC                    @tab  E  @tab  X
    @tab encoding supported through external library libfaac and libvo-aacenc
@item AC-3                   @tab IX  @tab  X
@item ADPCM 4X Movie         @tab     @tab  X
@item ADPCM CDROM XA         @tab     @tab  X
@item ADPCM Creative Technology @tab     @tab  X
    @tab 16 -> 4, 8 -> 4, 8 -> 3, 8 -> 2
@item ADPCM Electronic Arts  @tab     @tab  X
    @tab Used in various EA titles.
@item ADPCM Electronic Arts Maxis CDROM XS  @tab     @tab  X
    @tab Used in Sim City 3000.
@item ADPCM Electronic Arts R1  @tab     @tab  X
@item ADPCM Electronic Arts R2  @tab     @tab  X
@item ADPCM Electronic Arts R3  @tab     @tab  X
@item ADPCM Electronic Arts XAS @tab     @tab  X
@item ADPCM G.722            @tab  X  @tab  X
@item ADPCM G.726            @tab  X  @tab  X
@item ADPCM IMA AMV          @tab     @tab  X
    @tab Used in AMV files
@item ADPCM IMA Electronic Arts EACS  @tab     @tab  X
@item ADPCM IMA Electronic Arts SEAD  @tab     @tab  X
@item ADPCM IMA Funcom       @tab     @tab  X
@item ADPCM IMA QuickTime    @tab  X  @tab  X
@item ADPCM IMA Loki SDL MJPEG  @tab     @tab  X
@item ADPCM IMA WAV          @tab  X  @tab  X
@item ADPCM IMA Westwood     @tab     @tab  X
@item ADPCM ISS IMA          @tab     @tab  X
    @tab Used in FunCom games.
@item ADPCM IMA Duck DK3     @tab     @tab  X
    @tab Used in some Sega Saturn console games.
@item ADPCM IMA Duck DK4     @tab     @tab  X
    @tab Used in some Sega Saturn console games.
@item ADPCM Microsoft        @tab  X  @tab  X
@item ADPCM MS IMA           @tab  X  @tab  X
@item ADPCM Nintendo Gamecube THP  @tab     @tab  X
@item ADPCM QT IMA           @tab  X  @tab  X
@item ADPCM SEGA CRI ADX     @tab  X  @tab  X
    @tab Used in Sega Dreamcast games.
@item ADPCM Shockwave Flash  @tab  X  @tab  X
@item ADPCM SMJPEG IMA       @tab     @tab  X
    @tab Used in certain Loki game ports.
@item ADPCM Sound Blaster Pro 2-bit  @tab     @tab  X
@item ADPCM Sound Blaster Pro 2.6-bit  @tab     @tab  X
@item ADPCM Sound Blaster Pro 4-bit  @tab     @tab  X
@item ADPCM Westwood Studios IMA @tab     @tab  X
    @tab Used in Westwood Studios games like Command and Conquer.
@item ADPCM Yamaha           @tab  X  @tab  X
@item AMR-NB                 @tab  E  @tab  X
    @tab encoding supported through external library libopencore-amrnb
@item AMR-WB                 @tab  E  @tab  X
    @tab encoding supported through external library libvo-amrwbenc
@item Apple lossless audio   @tab  X  @tab  X
    @tab QuickTime fourcc 'alac'
@item Atrac 1                @tab     @tab  X
@item Atrac 3                @tab     @tab  X
@item Bink Audio             @tab     @tab  X
    @tab Used in Bink and Smacker files in many games.
@item CELT (Opus)            @tab     @tab  E
    @tab decoding supported through external library libcelt
@item Delphine Software International CIN audio  @tab     @tab  X
    @tab Codec used in Delphine Software International games.
@item COOK                   @tab     @tab  X
    @tab All versions except 5.1 are supported.
@item DCA (DTS Coherent Acoustics)  @tab  X  @tab  X
@item DPCM id RoQ            @tab  X  @tab  X
    @tab Used in Quake III, Jedi Knight 2, other computer games.
@item DPCM Interplay         @tab     @tab  X
    @tab Used in various Interplay computer games.
@item DPCM Sierra Online     @tab     @tab  X
    @tab Used in Sierra Online game audio files.
@item DPCM Sol               @tab     @tab  X
@item DPCM Xan               @tab     @tab  X
    @tab Used in Origin's Wing Commander IV AVI files.
@item DSP Group TrueSpeech   @tab     @tab  X
@item DV audio               @tab     @tab  X
@item Enhanced AC-3          @tab  X  @tab  X
@item FLAC (Free Lossless Audio Codec)  @tab  X  @tab  IX
@item GSM                    @tab  E  @tab  X
    @tab encoding supported through external library libgsm
@item GSM Microsoft variant  @tab  E  @tab  X
    @tab encoding supported through external library libgsm
@item IMC (Intel Music Coder)  @tab     @tab  X
@item MACE (Macintosh Audio Compression/Expansion) 3:1  @tab     @tab  X
@item MACE (Macintosh Audio Compression/Expansion) 6:1  @tab     @tab  X
@item MLP (Meridian Lossless Packing)  @tab     @tab  X
    @tab Used in DVD-Audio discs.
@item Monkey's Audio         @tab     @tab  X
    @tab Only versions 3.97-3.99 are supported.
@item MP1 (MPEG audio layer 1)  @tab     @tab IX
@item MP2 (MPEG audio layer 2)  @tab IX  @tab IX
@item MP3 (MPEG audio layer 3)  @tab  E  @tab IX
    @tab encoding supported through external library LAME, ADU MP3 and MP3onMP4 also supported
@item MPEG-4 Audio Lossless Coding (ALS)  @tab     @tab  X
@item Musepack SV7           @tab     @tab  X
@item Musepack SV8           @tab     @tab  X
@item Nellymoser Asao        @tab  X  @tab  X
@item PCM A-law              @tab  X  @tab  X
@item PCM mu-law             @tab  X  @tab  X
@item PCM 16-bit little-endian planar  @tab     @tab  X
@item PCM 32-bit floating point big-endian  @tab  X  @tab  X
@item PCM 32-bit floating point little-endian  @tab  X  @tab  X
@item PCM 64-bit floating point big-endian  @tab  X  @tab  X
@item PCM 64-bit floating point little-endian  @tab  X  @tab  X
@item PCM D-Cinema audio signed 24-bit   @tab  X  @tab  X
@item PCM signed 8-bit       @tab  X  @tab  X
@item PCM signed 16-bit big-endian  @tab  X  @tab  X
@item PCM signed 16-bit little-endian  @tab  X  @tab  X
@item PCM signed 24-bit big-endian  @tab  X  @tab  X
@item PCM signed 24-bit little-endian  @tab  X  @tab  X
@item PCM signed 32-bit big-endian  @tab  X  @tab  X
@item PCM signed 32-bit little-endian  @tab  X  @tab  X
@item PCM signed 16/20/24-bit big-endian in MPEG-TS  @tab     @tab  X
@item PCM unsigned 8-bit     @tab  X  @tab  X
@item PCM unsigned 16-bit big-endian  @tab  X  @tab  X
@item PCM unsigned 16-bit little-endian  @tab  X  @tab  X
@item PCM unsigned 24-bit big-endian  @tab  X  @tab  X
@item PCM unsigned 24-bit little-endian  @tab  X  @tab  X
@item PCM unsigned 32-bit big-endian  @tab  X  @tab  X
@item PCM unsigned 32-bit little-endian  @tab  X  @tab  X
@item PCM Zork               @tab  X  @tab  X
@item QCELP / PureVoice      @tab     @tab  X
@item QDesign Music Codec 2  @tab     @tab  X
    @tab There are still some distortions.
@item RealAudio 1.0 (14.4K)  @tab  X  @tab  X
    @tab Real 14400 bit/s codec
@item RealAudio 2.0 (28.8K)  @tab     @tab  X
    @tab Real 28800 bit/s codec
@item RealAudio 3.0 (dnet)   @tab IX  @tab  X
    @tab Real low bitrate AC-3 codec
@item RealAudio SIPR / ACELP.NET @tab     @tab  X
@item Shorten                @tab     @tab  X
@item Sierra VMD audio       @tab     @tab  X
    @tab Used in Sierra VMD files.
@item Smacker audio          @tab     @tab  X
@item SMPTE 302M AES3 audio  @tab     @tab  X
@item Sonic                  @tab  X  @tab  X
    @tab experimental codec
@item Sonic lossless         @tab  X  @tab  X
    @tab experimental codec
@item Speex                  @tab     @tab  E
    @tab supported through external library libspeex
@item True Audio (TTA)       @tab     @tab  X
@item TrueHD                 @tab     @tab  X
    @tab Used in HD-DVD and Blu-Ray discs.
@item TwinVQ (VQF flavor)    @tab     @tab  X
@item Vorbis                 @tab  E  @tab  X
    @tab A native but very primitive encoder exists.
@item WavPack                @tab     @tab  X
@item Westwood Audio (SND1)  @tab     @tab  X
@item Windows Media Audio 1  @tab  X  @tab  X
@item Windows Media Audio 2  @tab  X  @tab  X
@item Windows Media Audio Pro @tab    @tab  X
@item Windows Media Audio Voice @tab  @tab  X
@end multitable

@code{X} means that encoding (resp. decoding) is supported.

@code{E} means that support is provided through an external library.

@code{I} means that an integer-only version is available, too (ensures high
performance on systems without hardware floating point support).

@section Subtitle Formats

@multitable @columnfractions .4 .1 .1 .1 .1
@item Name @tab Muxing @tab Demuxing @tab Encoding @tab Decoding
@item SSA/ASS      @tab X @tab X @tab X @tab X
@item DVB          @tab X @tab X @tab X @tab X
@item DVD          @tab X @tab X @tab X @tab X
@item MicroDVD     @tab X @tab X @tab   @tab
@item PGS          @tab   @tab   @tab   @tab X
@item SubRip (SRT) @tab X @tab X @tab X @tab X
@item XSUB         @tab   @tab   @tab X @tab X
@end multitable

@code{X} means that the feature is supported.

@section Network Protocols

@multitable @columnfractions .4 .1
@item Name         @tab Support
@item Apple HTTP Live Streaming @tab X
@item file         @tab X
@item Gopher       @tab X
@item HTTP         @tab X
@item MMS          @tab X
@item pipe         @tab X
@item RTP          @tab X
@item TCP          @tab X
@item UDP          @tab X
@end multitable

@code{X} means that the protocol is supported.


@section Input/Output Devices

@multitable @columnfractions .4 .1 .1
@item Name              @tab Input  @tab Output
@item ALSA              @tab X      @tab X
@item BKTR              @tab X      @tab
@item DV1394            @tab X      @tab
@item JACK              @tab X      @tab
@item LIBDC1394         @tab X      @tab
@item OSS               @tab X      @tab X
@item Video4Linux       @tab X      @tab
@item Video4Linux2      @tab X      @tab
@item VfW capture       @tab X      @tab
@item X11 grabbing      @tab X      @tab
@end multitable

@code{X} means that input/output is supported.


@chapter Platform Specific information

@section DOS

Using a cross-compiler is preferred for various reasons.

@section OS/2

For information about compiling FFmpeg on OS/2 see
@url{http://www.edm2.com/index.php/FFmpeg}.

@section Unix-like

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:

@example
$(gcc -print-prog-name=as) --version
@end example

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}
to configure.

@subsection BSD

BSD make will not build FFmpeg, you need to install and use GNU Make
(@file{gmake}).

@subsection (Open)Solaris

GNU Make is required to build FFmpeg, so you have to invoke (@file{gmake}),
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}
or @code{--extra-libs=/usr/lib/64/values-xpg6.o} 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:

@example
bash ./configure
@end example

@subsection Darwin (MacOS X, iPhone)

MacOS X on PowerPC or ARM (iPhone) requires a preprocessor from
@url{http://github.com/yuvi/gas-preprocessor} to build the optimized
assembler functions. Just download the Perl script and put it somewhere
in your PATH, FFmpeg's configure will pick it up automatically.

@section Windows

To get help and instructions for building FFmpeg under Windows, check out
the FFmpeg Windows Help Forum at
@url{http://ffmpeg.arrozcru.org/}.

@subsection Native Windows compilation

FFmpeg can be built to run natively on Windows using the MinGW tools. Install
the latest versions of MSYS and MinGW from @url{http://www.mingw.org/}.
You can find detailed installation
instructions in the download section and the FAQ.

FFmpeg does not build out-of-the-box with the packages the automated MinGW
installer provides. It also requires coreutils to be installed and many other
packages updated to the latest version. The minimum version for some packages
are listed below:

@itemize
@item bash 3.1
@item msys-make 3.81-2 (note: not mingw32-make)
@item w32api 3.13
@item mingw-runtime 3.15
@end itemize

FFmpeg automatically passes @code{-fno-common} to the compiler to work around
a GCC bug (see @url{http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37216}).

Notes:

@itemize

@item Building natively using MSYS can be sped up by disabling implicit rules
in the Makefile by calling @code{make -r} instead of plain @code{make}. This
speed up is close to non-existent for normal one-off builds and is only
noticeable when running make for a second time (for example in
@code{make install}).

@item In order to compile FFplay, you must have the MinGW development library
of SDL. Get it from @url{http://www.libsdl.org}.
Edit the @file{bin/sdl-config} script so that it points to the correct prefix
where SDL was installed. Verify that @file{sdl-config} can be launched from
the MSYS command line.

@item By using @code{./configure --enable-shared} when configuring FFmpeg,
you can build libavutil, libavcodec and libavformat as DLLs.

@end itemize

@subsection Microsoft Visual C++ compatibility

As stated in the FAQ, FFmpeg will not compile under MSVC++. However, if you
want to use the libav* libraries in your own applications, you can still
compile those applications using MSVC++. But the libav* libraries you link
to @emph{must} be built with MinGW. However, you will not be able to debug
inside the libav* libraries, since MSVC++ does not recognize the debug
symbols generated by GCC.
We strongly recommend you to move over from MSVC++ to MinGW tools.

This description of how to use the FFmpeg libraries with MSVC++ is based on
Microsoft Visual C++ 2005 Express Edition. If you have a different version,
you might have to modify the procedures slightly.

@subsubsection Using static libraries

Assuming you have just built and installed FFmpeg in @file{/usr/local}.

@enumerate

@item Create a new console application ("File / New / Project") and then
select "Win32 Console Application". On the appropriate page of the
Application Wizard, uncheck the "Precompiled headers" option.

@item Write the source code for your application, or, for testing, just
copy the code from an existing sample application into the source file
that MSVC++ has already created for you. For example, you can copy
@file{libavformat/output-example.c} from the FFmpeg distribution.

@item Open the "Project / Properties" dialog box. In the "Configuration"
combo box, select "All Configurations" so that the changes you make will
affect both debug and release builds. In the tree view on the left hand
side, select "C/C++ / General", then edit the "Additional Include
Directories" setting to contain the path where the FFmpeg includes were
installed (i.e. @file{c:\msys\1.0\local\include}).
Do not add MinGW's include directory here, or the include files will
conflict with MSVC's.

@item Still in the "Project / Properties" dialog box, select
"Linker / General" from the tree view and edit the
"Additional Library Directories" setting to contain the @file{lib}
directory where FFmpeg was installed (i.e. @file{c:\msys\1.0\local\lib}),
the directory where MinGW libs are installed (i.e. @file{c:\mingw\lib}),
and the directory where MinGW's GCC libs are installed
(i.e. @file{C:\mingw\lib\gcc\mingw32\4.2.1-sjlj}). Then select
"Linker / Input" from the tree view, and add the files @file{libavformat.a},
@file{libavcodec.a}, @file{libavutil.a}, @file{libmingwex.a},
@file{libgcc.a}, and any other libraries you used (i.e. @file{libz.a})
to the end of "Additional Dependencies".

@item Now, select "C/C++ / Code Generation" from the tree view. Select
"Debug" in the "Configuration" combo box. Make sure that "Runtime
Library" is set to "Multi-threaded Debug DLL". Then, select "Release" in
the "Configuration" combo box and make sure that "Runtime Library" is
set to "Multi-threaded DLL".

@item Click "OK" to close the "Project / Properties" dialog box.

@item MSVC++ lacks some C99 header files that are fundamental for FFmpeg.
Get msinttypes from @url{http://code.google.com/p/msinttypes/downloads/list}
and install it in MSVC++'s include directory
(i.e. @file{C:\Program Files\Microsoft Visual Studio 8\VC\include}).

@item MSVC++ also does not understand the @code{inline} keyword used by
FFmpeg, so you must add this line before @code{#include}ing libav*:
@example
#define inline _inline
@end example

@item Build your application, everything should work.

@end enumerate

@subsubsection Using shared libraries

This is how to create DLL and LIB files that are compatible with MSVC++:

@enumerate

@item Add a call to @file{vcvars32.bat} (which sets up the environment
variables for the Visual C++ tools) as the first line of @file{msys.bat}.
The standard location for @file{vcvars32.bat} is
@file{C:\Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat},
and the standard location for @file{msys.bat} is @file{C:\msys\1.0\msys.bat}.
If this corresponds to your setup, add the following line as the first line
of @file{msys.bat}:

@example
call "C:\Program Files\Microsoft Visual Studio 8\VC\bin\vcvars32.bat"
@end example

Alternatively, you may start the @file{Visual Studio 2005 Command Prompt},
and run @file{c:\msys\1.0\msys.bat} from there.

@item Within the MSYS shell, run @code{lib.exe}. If you get a help message
from @file{Microsoft (R) Library Manager}, this means your environment
variables are set up correctly, the @file{Microsoft (R) Library Manager}
is on the path and will be used by FFmpeg to create
MSVC++-compatible import libraries.

@item Build FFmpeg with

@example
./configure --enable-shared
make
make install
@end example

Your install path (@file{/usr/local/} by default) should now have the
necessary DLL and LIB files under the @file{bin} directory.

@end enumerate

To use those files with MSVC++, do the same as you would do with
the static libraries, as described above. But in Step 4,
you should only need to add the directory where the LIB files are installed
(i.e. @file{c:\msys\usr\local\bin}). This is not a typo, the LIB files are
installed in the @file{bin} directory. And instead of adding the static
libraries (@file{libxxx.a} files) you should add the MSVC import libraries
(@file{avcodec.lib}, @file{avformat.lib}, and
@file{avutil.lib}). Note that you should not use the GCC import
libraries (@file{libxxx.dll.a} files), as these will give you undefined
reference errors. There should be no need for @file{libmingwex.a},
@file{libgcc.a}, and @file{wsock32.lib}, nor any other external library
statically linked into the DLLs. The @file{bin} directory contains a bunch
of DLL files, but the ones that are actually used to run your application
are the ones with a major version number in their filenames
(i.e. @file{avcodec-51.dll}).

FFmpeg headers do not declare global data for Windows DLLs through the usual
dllexport/dllimport interface. Such data will be exported properly while
building, but to use them in your MSVC++ code you will have to edit the
appropriate headers and mark the data as dllimport. For example, in
libavutil/pixdesc.h you should have:
@example
extern __declspec(dllimport) const AVPixFmtDescriptor av_pix_fmt_descriptors[];
@end example

Note that using import libraries created by dlltool requires
the linker optimization option to be set to
"References: Keep Unreferenced Data (@code{/OPT:NOREF})", otherwise
the resulting binaries will fail during runtime. This isn't
required when using import libraries generated by lib.exe.
This issue is reported upstream at
@url{http://sourceware.org/bugzilla/show_bug.cgi?id=12633}.

@subsection Cross compilation for Windows with Linux

You must use the MinGW cross compilation tools available at
@url{http://www.mingw.org/}.

Then configure FFmpeg with the following options:
@example
./configure --target-os=mingw32 --cross-prefix=i386-mingw32msvc-
@end example
(you can change the cross-prefix according to the prefix chosen for the
MinGW tools).

Then you can easily test FFmpeg with Wine
(@url{http://www.winehq.com/}).

@subsection Compilation under Cygwin

Please use Cygwin 1.7.x as the obsolete 1.5.x Cygwin versions lack
llrint() in its C library.

Install your Cygwin with all the "Base" packages, plus the
following "Devel" ones:
@example
binutils, gcc4-core, make, git, mingw-runtime, texi2html
@end example

And the following "Utils" one:
@example
diffutils
@end example

Then run

@example
./configure
@end example

to make a static build.

The current @code{gcc4-core} package is buggy and needs this flag to build
shared libraries:

@example
./configure --enable-shared --disable-static --extra-cflags=-fno-reorder-functions
@end example

If you want to build FFmpeg with additional libraries, download Cygwin
"Devel" packages for Ogg and Vorbis from any Cygwin packages repository:
@example
libogg-devel, libvorbis-devel
@end example

These library packages are only available from Cygwin Ports
(@url{http://sourceware.org/cygwinports/}) :

@example
yasm, libSDL-devel, libdirac-devel, libfaac-devel, libaacplus-devel, libgsm-devel,
libmp3lame-devel, libschroedinger1.0-devel, speex-devel, libtheora-devel,
libxvidcore-devel
@end example

The recommendation for libnut and x264 is to build them from source by
yourself, as they evolve too quickly for Cygwin Ports to be up to date.

Cygwin 1.7.x has IPv6 support. You can add IPv6 to Cygwin 1.5.x by means
of the @code{libgetaddrinfo-devel} package, available at Cygwin Ports.

@subsection Crosscompilation for Windows under Cygwin

With Cygwin you can create Windows binaries that do not need the cygwin1.dll.

Just install your Cygwin as explained before, plus these additional
"Devel" packages:
@example
gcc-mingw-core, mingw-runtime, mingw-zlib
@end example

and add some special flags to your configure invocation.

For a static build run
@example
./configure --target-os=mingw32 --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin
@end example

and for a build with shared libraries
@example
./configure --target-os=mingw32 --enable-shared --disable-static --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin
@end example

@bye
