library:
@multitable @columnfractions .4 .1 .1 .4
-@item Supported File Format @tab Encoding @tab Decoding @tab Comments
+@item Name @tab Encoding @tab Decoding @tab Comments
@item 4xm @tab @tab X
@tab 4X Technologies format, used in some games.
@item ADTS AAC audio @tab X @tab X
@item MAXIS EA XA @tab @tab X
@tab Used in Sim City 3000; file extension .xa.
@item Monkey's Audio @tab @tab X
+@item Motion Pixels MVI @tab @tab X
@item MOV/QuickTime @tab X @tab X
@item MPEG audio @tab X @tab X
@item MPEG-1 systems @tab X @tab X
@tab MPEG-4 is a variant of QuickTime.
@item MSN TCP webcam @tab @tab X
@tab Used by MSN Messenger webcam streams.
-@item MXF @tab @tab X
+@item MXF @tab X @tab X
@tab Material eXchange Format SMPTE 377M, used by D-Cinema, broadcast industry.
@item Nullsoft Video @tab @tab X
@item NUT @tab X @tab X
@item raw MJPEG @tab X @tab X
@item raw MPEG video @tab X @tab X
@item raw MPEG-4 video @tab X @tab X
-@item raw PCM 8/16 bits, mu-law/A-law @tab X @tab X
+@item raw PCM 8/16/32 bits, 32/64-bit floating point, mu-law/A-law @tab X @tab X
@item raw Shorten audio @tab @tab X
@item RealMedia @tab X @tab X
@item RL2 @tab @tab X
following image formats are supported:
@multitable @columnfractions .4 .1 .1 .4
-@item Supported Image Format @tab Encoding @tab Decoding @tab Comments
+@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 JPEG @tab X @tab X @tab Progressive JPEG is not supported.
@section Video Codecs
@multitable @columnfractions .4 .1 .1 .4
-@item Supported Codec @tab Encoding @tab Decoding @tab Comments
+@item Name @tab Encoding @tab Decoding @tab Comments
@item 4X Video @tab @tab X
@tab Used in certain computer games.
@item American Laser Games Video @tab @tab X
@tab Codec originally used in Feeble Files game.
@item Electronic Arts CMV @tab @tab X
@tab Used in NHL 95 game.
+@item Electronic Arts TGV @tab @tab X
@item FFmpeg Video 1 @tab X @tab X
@tab experimental lossless codec (fourcc: FFV1)
@item Flash Screen Video @tab X @tab X
@item Miro VideoXL @tab @tab X
@tab fourcc: VIXL
@item MJPEG @tab X @tab X
+@item Motion Pixels Video @tab @tab X
@item MPEG-1 @tab X @tab X
@item MPEG-2 @tab X @tab X
@item MPEG-4 @tab X @tab X
@section Audio Codecs
@multitable @columnfractions .4 .1 .1 .1 .7
-@item Supported Codec @tab Encoding @tab Decoding @tab Comments
+@item Name @tab Encoding @tab Decoding @tab Comments
@item 4X IMA ADPCM @tab @tab X
@item 8SVX audio @tab @tab X
@item AAC @tab X @tab X
- @tab Supported through the external library libfaac/libfaad.
+ @tab Encoding is supported through the external library libfaac.
@item AC-3 @tab IX @tab IX
- @tab liba52 can be used alternatively for decoding.
@item AMR-NB @tab X @tab X
@tab Supported through an external library.
@item AMR-WB @tab X @tab X
@tab Supported through an external library.
@item AMV IMA ADPCM @tab @tab X
@tab Used in AMV files
-@item Apple lossless audio @tab @tab X
+@item Apple lossless audio @tab X @tab X
@tab QuickTime fourcc 'alac'
@item Apple MACE 3 @tab @tab X
@item Apple MACE 6 @tab @tab X
@item DV audio @tab @tab X
@item Electronic Arts ADPCM @tab @tab X
@tab Used in various EA titles.
-@item Sonic @tab X @tab X
- @tab experimental codec
-@item Sonic lossless @tab X @tab X
- @tab experimental codec
-@item FLAC lossless audio @tab X @tab X
+@item Enhanced AC-3 @tab @tab X
+@item FLAC lossless audio @tab IX @tab X
@item G.726 ADPCM @tab X @tab X
@item id RoQ DPCM @tab X @tab X
@tab Used in Quake III, Jedi Knight 2, other computer games.
@item MS IMA ADPCM @tab X @tab X
@item Musepack @tab @tab X
@tab SV7 and SV8 are supported.
-@item Nellymoser ASAO @tab @tab X
+@item Nellymoser ASAO @tab X @tab X
@item Qdesign QDM2 @tab @tab X
@tab There are still some distortions.
@item QT IMA ADPCM @tab X @tab X
@tab Real 14400 bit/s codec
@item RA288 @tab @tab X
@tab Real 28800 bit/s codec
-@item RADnet @tab X @tab IX
- @tab real low bitrate AC-3 codec
+@item RADnet @tab IX @tab IX
+ @tab Real low bitrate AC-3 codec
@item Real COOK @tab @tab X
@tab All versions except 5.1 are supported.
@item Shorten @tab @tab X
@item Smacker audio @tab @tab X
@item SMJPEG IMA ADPCM @tab @tab X
@tab Used in certain Loki game ports.
+@item Sonic @tab X @tab X
+ @tab experimental codec
+@item Sonic lossless @tab X @tab X
+ @tab experimental codec
@item THP ADPCM @tab @tab X
@tab Used on the Nintendo GameCube.
@item True Audio (TTA) @tab @tab X
To get help and instructions for building FFmpeg under Windows, check out
the FFmpeg Windows Help Forum at
-@url{http://arrozcru.no-ip.org/ffmpeg/}.
+@url{http://ffmpeg.arrozcru.org/}.
@subsection Native Windows compilation
FFmpeg can be built to run natively on Windows using the MinGW tools. Install
-the current versions of MSYS and MinGW from @url{http://www.mingw.org/}. Also
-install the coreutils package, and update to the latest MSYS make (note: not
-mingw32-make). You can find detailed installation
+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.12
+@item mingw-runtime 3.15
+@end itemize
+
Within the MSYS shell, configure and make with:
@example
@itemize
-@item Use at least bash 3.1. Older versions are known to fail on the
-configure script.
-
@item In order to compile vhooks, you must have a POSIX-compliant libdl in
your MinGW system. Get dlfcn-win32 from
@url{http://code.google.com/p/dlfcn-win32}.
@item
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 and the version string.
+ 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).
+ (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).
-@item
- If you add a new codec, remember to update the changelog, add it to
- the supported codecs table in the documentation and bump the second
- component of the @file{libavcodec} version number appropriately. If
- it has a fourcc, add it to @file{libavformat/riff.c}, even if it
- is only a decoder.
@item
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
Also please if you send several patches, send each patch as a separate mail,
do not attach several unrelated patches to the same mail.
+@section New codecs or formats checklist
+
+@enumerate
+@item
+ Did you use av_cold for codec initialization and close functions?
+@item
+ Did you add a long_name under NULL_IF_CONFIG_SMALL to the AVCodec or
+ AVInputFormat/AVOutputFormat struct?
+@item
+ Did you bump the minor version number in @file{avcodec.h} or
+ @file{avformat.h}?
+@item
+ Did you register it in @file{allcodecs.c} or @file{allformats.c}?
+@item
+ Did you add the CodecID to @file{avcodec.h}?
+@item
+ If it has a fourcc, did you add it to @file{libavformat/riff.c},
+ even if it is only a decoder?
+@item
+ Did you add a rule to compile the appropriate files in the Makefile?
+ Remember to do this even if you're just adding a format to a file that is
+ already being compiled by some other rule, like a raw demuxer.
+@item
+ Did you add an entry to the table of supported formats or codecs in the
+ documentation?
+@item
+ Did you add an entry in the Changelog?
+@item
+ If it depends on a parser or a library, did you add that dependency in
+ configure?
+@item
+ Did you "svn add" the appropriate files before commiting?
+@end enumerate
+
@section patch submission checklist
@enumerate