| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | \input texinfo @c -*- texinfo -*- | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @settitle General Documentation | 
					
						
							|  |  |  | @titlepage | 
					
						
							|  |  |  | @sp 7 | 
					
						
							|  |  |  | @center @titlefont{General Documentation} | 
					
						
							|  |  |  | @sp 3 | 
					
						
							|  |  |  | @end titlepage | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @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 AMR | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-01-04 15:14:14 +00:00
										 |  |  | AMR comes in two different flavors, wideband and narrowband. FFmpeg can make | 
					
						
							|  |  |  | use of the AMR wideband (floating-point mode) and the AMR narrowband | 
					
						
							|  |  |  | (floating-point mode) reference decoders and encoders. | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | Go to @url{http://www.penguin.cz/~utx/amr} and follow the instructions for | 
					
						
							|  |  |  | installing the libraries. Then pass @code{--enable-libamr-nb} and/or | 
					
						
							|  |  |  | @code{--enable-libamr-wb} to configure to enable the libraries. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-01-04 15:20:52 +00:00
										 |  |  | Note that libamr is copyrighted without any sort of license grant. This means | 
					
						
							|  |  |  | that you can use it if you legally obtained it but you are not allowed to | 
					
						
							|  |  |  | redistribute it in any way. @strong{Any FFmpeg binaries with libamr support | 
					
						
							|  |  |  | you create are non-free and unredistributable!} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | @chapter Supported File Formats and Codecs | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | You can use the @code{-formats} option 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 | 
					
						
							| 
									
										
										
										
											2008-09-26 19:58:27 +00:00
										 |  |  | @item Name @tab Encoding @tab Decoding @tab Comments | 
					
						
							| 
									
										
										
										
											2008-07-10 16:33:10 +00:00
										 |  |  | @item 4xm                       @tab   @tab X | 
					
						
							| 
									
										
										
										
											2008-07-08 14:34:15 +00:00
										 |  |  |     @tab 4X Technologies format, used in some games. | 
					
						
							| 
									
										
										
										
											2009-02-12 17:52:05 +00:00
										 |  |  | @item Audio IFF (AIFF)          @tab X @tab X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:33:10 +00:00
										 |  |  | @item American Laser Games MM   @tab   @tab X | 
					
						
							|  |  |  |     @tab Multimedia format used in games like Mad Dog McCree. | 
					
						
							| 
									
										
										
										
											2009-02-12 17:52:05 +00:00
										 |  |  | @item 3GPP AMR                  @tab X @tab X | 
					
						
							| 
									
										
										
										
											2008-07-08 14:34:15 +00:00
										 |  |  | @item ASF                       @tab X @tab X | 
					
						
							|  |  |  | @item AVI                       @tab X @tab X | 
					
						
							| 
									
										
										
										
											2009-02-12 17:52:05 +00:00
										 |  |  | @item AVISynth                  @tab   @tab X | 
					
						
							| 
									
										
										
										
											2008-07-08 14:34:15 +00:00
										 |  |  | @item AVS                       @tab   @tab X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Multimedia format used by the Creature Shock game. | 
					
						
							| 
									
										
										
										
											2009-02-12 17:49:10 +00:00
										 |  |  | @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 | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used in some games from Bethesda Softworks. | 
					
						
							| 
									
										
										
										
											2009-02-12 17:49:10 +00:00
										 |  |  | @item Brute Force & Ignorance   @tab   @tab X | 
					
						
							|  |  |  |     @tab Used in the game Flash Traffic: City of Angels. | 
					
						
							|  |  |  | @item Interplay C93             @tab   @tab X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used in the game Cyberia from Interplay. | 
					
						
							| 
									
										
										
										
											2009-02-12 17:49:10 +00:00
										 |  |  | @item Delphine Software International CIN @tab   @tab X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Multimedia format used by Delphine Software games. | 
					
						
							| 
									
										
										
										
											2009-02-12 17:52:05 +00:00
										 |  |  | @item CRC testing format        @tab X @tab | 
					
						
							| 
									
										
										
										
											2009-02-12 17:49:10 +00:00
										 |  |  | @item Creative Voice            @tab X @tab X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Created for the Sound Blaster Pro. | 
					
						
							| 
									
										
										
										
											2008-07-10 16:33:10 +00:00
										 |  |  | @item CRYO APC                  @tab   @tab X | 
					
						
							|  |  |  |     @tab Audio format used in some games by CRYO Interactive Entertainment. | 
					
						
							| 
									
										
										
										
											2009-02-12 17:52:05 +00:00
										 |  |  | @item D-Cinema audio            @tab X @tab X | 
					
						
							| 
									
										
										
										
											2009-02-12 17:49:10 +00:00
										 |  |  | @item DV video                  @tab X @tab X | 
					
						
							| 
									
										
										
										
											2008-07-08 14:34:15 +00:00
										 |  |  | @item DXA                       @tab   @tab X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab This format is used in the non-Windows version of the Feeble Files | 
					
						
							|  |  |  |          game and different game cutscenes repacked for use with ScummVM. | 
					
						
							| 
									
										
										
										
											2009-02-12 17:52:05 +00:00
										 |  |  | @item Electronic Arts cdata  @tab    @tab X | 
					
						
							| 
									
										
										
										
											2008-07-08 14:34:15 +00:00
										 |  |  | @item Electronic Arts Multimedia  @tab    @tab X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used in various EA games; files have extensions like WVE and UV2. | 
					
						
							| 
									
										
										
										
											2009-02-12 17:52:05 +00:00
										 |  |  | @item FFM (FFserver live feed)  @tab X @tab X | 
					
						
							|  |  |  | @item Flash (SWF)               @tab X @tab X | 
					
						
							| 
									
										
										
										
											2009-02-12 17:49:10 +00:00
										 |  |  | @item Flash 9 (AVM2)            @tab X @tab X | 
					
						
							|  |  |  |     @tab Only embedded audio is decoded. | 
					
						
							|  |  |  | @item FLI/FLC/FLX animation     @tab   @tab X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab .fli/.flc files | 
					
						
							| 
									
										
										
										
											2008-07-08 14:34:15 +00:00
										 |  |  | @item FLV                       @tab X @tab X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Macromedia Flash video files | 
					
						
							| 
									
										
										
										
											2009-02-12 17:52:05 +00:00
										 |  |  | @item framecrc testing format   @tab X @tab | 
					
						
							| 
									
										
										
										
											2009-01-17 20:08:43 +00:00
										 |  |  | @item FunCom ISS                @tab   @tab X | 
					
						
							|  |  |  |     @tab Audio format used in various games from FunCom like The Longest Journey. | 
					
						
							| 
									
										
										
										
											2009-02-12 17:52:05 +00:00
										 |  |  | @item GIF Animation             @tab X @tab | 
					
						
							| 
									
										
										
										
											2008-07-08 14:34:15 +00:00
										 |  |  | @item GXF                       @tab X @tab X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab General eXchange Format SMPTE 360M, used by Thomson Grass Valley | 
					
						
							| 
									
										
										
										
											2008-07-10 16:33:10 +00:00
										 |  |  |          playout servers. | 
					
						
							| 
									
										
										
										
											2008-07-08 15:05:59 +00:00
										 |  |  | @item id Cinematic              @tab   @tab X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used in Quake II. | 
					
						
							| 
									
										
										
										
											2008-07-08 15:05:59 +00:00
										 |  |  | @item id RoQ                    @tab X @tab X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used in Quake III, Jedi Knight 2, other computer games. | 
					
						
							| 
									
										
										
										
											2008-07-08 14:34:15 +00:00
										 |  |  | @item IFF                       @tab   @tab X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Interchange File Format | 
					
						
							| 
									
										
										
										
											2008-07-08 14:34:15 +00:00
										 |  |  | @item Interplay MVE             @tab   @tab X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Format used in various Interplay computer games. | 
					
						
							| 
									
										
										
										
											2008-07-08 14:34:15 +00:00
										 |  |  | @item LMLM4                     @tab   @tab X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used by Linux Media Labs MPEG-4 PCI boards | 
					
						
							| 
									
										
										
										
											2008-07-10 16:33:10 +00:00
										 |  |  | @item Matroska                  @tab X @tab X | 
					
						
							| 
									
										
										
										
											2009-02-12 17:52:05 +00:00
										 |  |  | @item Matroska audio            @tab X @tab | 
					
						
							| 
									
										
										
										
											2009-02-12 17:49:10 +00:00
										 |  |  | @item MAXIS XA                  @tab   @tab X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used in Sim City 3000; file extension .xa. | 
					
						
							| 
									
										
										
										
											2008-07-10 16:33:10 +00:00
										 |  |  | @item Monkey's Audio            @tab   @tab X | 
					
						
							| 
									
										
										
										
											2008-07-10 18:01:21 +00:00
										 |  |  | @item Motion Pixels MVI         @tab   @tab X | 
					
						
							| 
									
										
										
										
											2009-02-12 17:49:10 +00:00
										 |  |  | @item MOV/QuickTime/MP4         @tab X @tab X | 
					
						
							|  |  |  |     @tab 3GP, 3GP2, PSP, iPod variants supported | 
					
						
							| 
									
										
										
										
											2009-02-12 17:52:05 +00:00
										 |  |  | @item MP2                       @tab X @tab | 
					
						
							|  |  |  | @item MP3                       @tab X @tab | 
					
						
							| 
									
										
										
										
											2008-07-08 14:34:15 +00:00
										 |  |  | @item MPEG audio                @tab X @tab X | 
					
						
							| 
									
										
										
										
											2009-02-12 17:49:10 +00:00
										 |  |  | @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 | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab also known as DVB Transport Stream | 
					
						
							| 
									
										
										
										
											2008-07-08 14:34:15 +00:00
										 |  |  | @item MPEG-4                    @tab X @tab X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab MPEG-4 is a variant of QuickTime. | 
					
						
							| 
									
										
										
										
											2009-02-12 17:52:05 +00:00
										 |  |  | @item MIME multipart JPEG       @tab X @tab | 
					
						
							| 
									
										
										
										
											2008-07-08 15:01:44 +00:00
										 |  |  | @item MSN TCP webcam            @tab   @tab X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used by MSN Messenger webcam streams. | 
					
						
							| 
									
										
										
										
											2009-02-12 17:52:05 +00:00
										 |  |  | @item MTV                       @tab   @tab X | 
					
						
							|  |  |  | @item Musepack                  @tab   @tab X | 
					
						
							|  |  |  | @item Musepack SV8              @tab   @tab X | 
					
						
							| 
									
										
										
										
											2009-02-12 17:49:10 +00:00
										 |  |  | @item Material eXchange Format (MXF) @tab X @tab X | 
					
						
							|  |  |  |     @tab SMPTE 377M, used by D-Cinema, broadcast industry. | 
					
						
							|  |  |  | @item NC camera feed            @tab   @tab X | 
					
						
							|  |  |  |     @tab NC (AVIP NC4600) camera streams | 
					
						
							|  |  |  | @item Nullsoft Streaming Video  @tab   @tab X | 
					
						
							| 
									
										
										
										
											2009-02-12 17:52:05 +00:00
										 |  |  | @item NuppelVideo               @tab   @tab X | 
					
						
							| 
									
										
										
										
											2008-07-08 14:34:15 +00:00
										 |  |  | @item NUT                       @tab X @tab X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab NUT Open Container Format | 
					
						
							| 
									
										
										
										
											2009-02-12 17:52:05 +00:00
										 |  |  | @item Ogg                       @tab X @tab X | 
					
						
							| 
									
										
										
										
											2009-02-12 17:49:10 +00:00
										 |  |  | @item TechnoTrend PVA           @tab   @tab X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used by TechnoTrend DVB PCI boards. | 
					
						
							| 
									
										
										
										
											2009-02-12 22:52:03 +00:00
										 |  |  | @item raw ADTS (AAC)            @tab X @tab X | 
					
						
							| 
									
										
										
										
											2008-07-08 15:05:59 +00:00
										 |  |  | @item raw AC-3                  @tab X @tab X | 
					
						
							| 
									
										
										
										
											2009-02-12 22:52:03 +00:00
										 |  |  | @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 | 
					
						
							| 
									
										
										
										
											2008-07-08 15:05:59 +00:00
										 |  |  | @item raw MJPEG                 @tab X @tab X | 
					
						
							| 
									
										
										
										
											2009-02-12 22:52:03 +00:00
										 |  |  | @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 vido                  @tab X @tab X | 
					
						
							|  |  |  | @item raw id RoQ                @tab X @tab | 
					
						
							|  |  |  | @item raw Shorten               @tab   @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 | 
					
						
							| 
									
										
										
										
											2009-02-12 17:52:05 +00:00
										 |  |  | @item RDT                       @tab   @tab X | 
					
						
							| 
									
										
										
										
											2009-02-12 17:49:10 +00:00
										 |  |  | @item REDCODE R3D               @tab   @tab X | 
					
						
							| 
									
										
										
										
											2009-01-20 07:42:14 +00:00
										 |  |  |     @tab File format used by RED Digital cameras, contains JPEG 2000 frames and PCM audio. | 
					
						
							| 
									
										
										
										
											2008-07-10 16:33:10 +00:00
										 |  |  | @item RealMedia                 @tab X @tab X | 
					
						
							| 
									
										
										
										
											2009-02-12 17:52:05 +00:00
										 |  |  | @item Redirector                @tab   @tab X | 
					
						
							| 
									
										
										
										
											2009-02-12 17:49:10 +00:00
										 |  |  | @item Renderware TeXture Dictionary @tab   @tab X | 
					
						
							| 
									
										
										
										
											2008-07-08 14:34:15 +00:00
										 |  |  | @item RL2                       @tab   @tab X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Audio and video format used in some games by Entertainment Software Partners. | 
					
						
							| 
									
										
										
										
											2009-02-12 17:52:05 +00:00
										 |  |  | @item RPL/ARMovie               @tab   @tab X | 
					
						
							|  |  |  | @item RTP                       @tab   @tab X | 
					
						
							|  |  |  | @item RTSP                      @tab   @tab X | 
					
						
							|  |  |  | @item SDP                       @tab   @tab X | 
					
						
							| 
									
										
										
										
											2008-07-08 14:34:15 +00:00
										 |  |  | @item Sega FILM/CPK             @tab   @tab X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used in many Sega Saturn console games. | 
					
						
							| 
									
										
										
										
											2009-02-12 17:49:10 +00:00
										 |  |  | @item Sierra SOL                @tab   @tab X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab .sol files used in Sierra Online games. | 
					
						
							| 
									
										
										
										
											2008-07-08 14:34:15 +00:00
										 |  |  | @item Sierra VMD                @tab   @tab X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used in Sierra CD-ROM games. | 
					
						
							| 
									
										
										
										
											2008-07-08 14:34:15 +00:00
										 |  |  | @item Smacker                   @tab   @tab X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Multimedia format used by many games. | 
					
						
							| 
									
										
										
										
											2009-02-12 17:49:10 +00:00
										 |  |  | @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 | 
					
						
							| 
									
										
										
										
											2008-07-10 16:33:10 +00:00
										 |  |  | @item SUN AU format             @tab X @tab X | 
					
						
							| 
									
										
										
										
											2008-07-08 14:34:15 +00:00
										 |  |  | @item THP                       @tab   @tab X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used on the Nintendo GameCube. | 
					
						
							| 
									
										
										
										
											2009-02-12 17:49:10 +00:00
										 |  |  | @item Tiertex Limited SEQ       @tab   @tab X | 
					
						
							|  |  |  |     @tab Tiertex .seq files used in the DOS CD-ROM version of the game Flashback. | 
					
						
							| 
									
										
										
										
											2009-02-12 17:52:05 +00:00
										 |  |  | @item True Audio                @tab   @tab X | 
					
						
							|  |  |  | @item VC-1 test bitstream       @tab X @tab X | 
					
						
							| 
									
										
										
										
											2008-07-08 14:34:15 +00:00
										 |  |  | @item WAV                       @tab X @tab X | 
					
						
							| 
									
										
										
										
											2009-02-12 17:52:05 +00:00
										 |  |  | @item WavPack                   @tab   @tab X | 
					
						
							| 
									
										
										
										
											2009-02-12 17:49:10 +00:00
										 |  |  | @item Wing Commander III movie  @tab   @tab X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Multimedia format used in Origin's Wing Commander III computer game. | 
					
						
							| 
									
										
										
										
											2009-02-12 17:49:10 +00:00
										 |  |  | @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. | 
					
						
							| 
									
										
										
										
											2009-02-12 17:52:05 +00:00
										 |  |  | @item YUV4MPEG pipe             @tab X @tab X | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | @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 | 
					
						
							| 
									
										
										
										
											2008-09-26 19:58:27 +00:00
										 |  |  | @item Name @tab Encoding @tab Decoding @tab Comments | 
					
						
							| 
									
										
										
										
											2008-07-10 16:33:10 +00:00
										 |  |  | @item .Y.U.V       @tab X @tab X @tab one raw file per component | 
					
						
							| 
									
										
										
										
											2008-07-08 14:08:45 +00:00
										 |  |  | @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. | 
					
						
							| 
									
										
										
										
											2009-02-06 11:49:31 +00:00
										 |  |  | @item JPEG 2000    @tab   @tab E @tab decoding supported through external library libopenjpeg | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | @item PAM          @tab X @tab X @tab PAM is a PNM extension with alpha support. | 
					
						
							| 
									
										
										
										
											2008-07-08 14:08:45 +00:00
										 |  |  | @item PCX          @tab   @tab X @tab PC Paintbrush | 
					
						
							|  |  |  | @item PGM, PPM     @tab X @tab X | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | @item PGMYUV       @tab X @tab X @tab PGM with U and V components in YUV 4:2:0 | 
					
						
							| 
									
										
										
										
											2008-07-08 13:52:48 +00:00
										 |  |  | @item PNG          @tab X @tab X @tab 2/4 bpp not supported yet | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | @item PTX          @tab   @tab X @tab V.Flash PTX format | 
					
						
							| 
									
										
										
										
											2008-03-18 23:50:55 +00:00
										 |  |  | @item RAS          @tab   @tab X @tab Sun Rasterfile | 
					
						
							| 
									
										
										
										
											2008-07-08 14:08:45 +00:00
										 |  |  | @item SGI          @tab X @tab X @tab SGI RGB image format | 
					
						
							|  |  |  | @item Targa        @tab   @tab X @tab Targa (.TGA) image format | 
					
						
							| 
									
										
										
										
											2008-07-10 16:33:10 +00:00
										 |  |  | @item TIFF         @tab X @tab X @tab YUV, JPEG and some extension is not supported yet. | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | @end multitable | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @code{X} means that encoding (resp. decoding) is supported. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-06 11:49:31 +00:00
										 |  |  | @code{E} means that support is provided through an external library. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | @section Video Codecs | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @multitable @columnfractions .4 .1 .1 .4 | 
					
						
							| 
									
										
										
										
											2008-09-26 19:58:27 +00:00
										 |  |  | @item Name @tab Encoding @tab Decoding @tab Comments | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item 4X Video               @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used in certain computer games. | 
					
						
							| 
									
										
										
										
											2009-02-12 17:49:10 +00:00
										 |  |  | @item American Laser Games MM  @tab    @tab X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used in games like Mad Dog McCree. | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item AMV                    @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used in Chinese MP3 players. | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item Apple Animation        @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab fourcc: 'rle ' | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item Apple Graphics         @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab fourcc: 'smc ' | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item Apple MJPEG-B          @tab     @tab  X | 
					
						
							|  |  |  | @item Apple QuickDraw        @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab fourcc: qdrw | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item Apple Video            @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab fourcc: rpza | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item Asus v1                @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab fourcc: ASV1 | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item Asus v2                @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab fourcc: ASV2 | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item ATI VCR1               @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab fourcc: VCR1 | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item ATI VCR2               @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab fourcc: VCR2 | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item Autodesk RLE           @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab fourcc: AASC | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item AVID DNxHD             @tab   X @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab aka SMPTE VC3 | 
					
						
							| 
									
										
										
										
											2008-07-08 15:01:44 +00:00
										 |  |  | @item AVS video              @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Video encoding used by the Creature Shock game. | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item Bethsoft VID           @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used in some games from Bethesda Softworks. | 
					
						
							| 
									
										
										
										
											2008-07-08 15:01:44 +00:00
										 |  |  | @item C93 video              @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Codec used in Cyberia game. | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item CamStudio              @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab fourcc: CSCD | 
					
						
							| 
									
										
										
										
											2008-07-08 15:01:44 +00:00
										 |  |  | @item Cin video              @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Codec used in Delphine Software games. | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item Cinepak                @tab     @tab  X | 
					
						
							|  |  |  | @item Cirrus Logic AccuPak   @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab fourcc: CLJR | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item Creative YUV           @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab fourcc: CYUV | 
					
						
							| 
									
										
										
										
											2008-10-25 08:51:46 +00:00
										 |  |  | @item Dirac                  @tab  E  @tab  E | 
					
						
							| 
									
										
										
										
											2008-10-25 08:41:00 +00:00
										 |  |  |     @tab supported through external libdirac/libschroedinger libraries | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item Duck TrueMotion v1     @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab fourcc: DUCK | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item Duck TrueMotion v2     @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab fourcc: TM20 | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item DV                     @tab  X  @tab  X | 
					
						
							|  |  |  | @item DXA Video              @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Codec originally used in Feeble Files game. | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item Electronic Arts CMV    @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used in NHL 95 game. | 
					
						
							| 
									
										
										
										
											2008-08-06 08:33:25 +00:00
										 |  |  | @item Electronic Arts TGV    @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-11-08 00:29:22 +00:00
										 |  |  | @item Electronic Arts TGQ    @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2009-02-05 08:58:35 +00:00
										 |  |  | @item Electronic Arts TQI    @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item FFmpeg Video 1         @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab experimental lossless codec (fourcc: FFV1) | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item Flash Screen Video     @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab fourcc: FSV1 | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item FLIC video             @tab     @tab  X | 
					
						
							|  |  |  | @item FLV                    @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Sorenson H.263 used in Flash | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item Fraps FPS1             @tab     @tab  X | 
					
						
							|  |  |  | @item H.261                  @tab  X  @tab  X | 
					
						
							|  |  |  | @item H.263(+)               @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab also known as RealVideo 1.0 | 
					
						
							| 
									
										
										
										
											2008-10-25 08:51:46 +00:00
										 |  |  | @item H.264                  @tab  E  @tab  X | 
					
						
							| 
									
										
										
										
											2008-10-25 08:41:00 +00:00
										 |  |  |     @tab encoding supported through external library libx264 | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item HuffYUV                @tab  X  @tab  X | 
					
						
							|  |  |  | @item IBM Ultimotion         @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab fourcc: ULTI | 
					
						
							| 
									
										
										
										
											2008-07-08 15:01:44 +00:00
										 |  |  | @item id Cinematic video     @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used in Quake II. | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item id RoQ                 @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used in Quake III, Jedi Knight 2, other computer games. | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item Intel Indeo 3          @tab     @tab  X | 
					
						
							|  |  |  | @item Interplay Video        @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used in Interplay .MVE files. | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item JPEG-LS                @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab fourcc: MJLS, lossless and near-lossless is supported. | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item KMVC                   @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Codec used in Worms games. | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @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 | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used in MSN Messenger Webcam streams. | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item Miro VideoXL           @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab fourcc: VIXL | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item MJPEG                  @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 18:01:21 +00:00
										 |  |  | @item Motion Pixels Video    @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-08 15:01:44 +00:00
										 |  |  | @item MPEG-1                 @tab  X  @tab  X | 
					
						
							|  |  |  | @item MPEG-2                 @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | @item MPEG-4                 @tab  X  @tab  X | 
					
						
							|  |  |  | @item MSMPEG4 V1             @tab  X  @tab  X | 
					
						
							|  |  |  | @item MSMPEG4 V2             @tab  X  @tab  X | 
					
						
							|  |  |  | @item MSMPEG4 V3             @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item MSZH                   @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Part of LCL | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item On2 VP3                @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab still experimental | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item On2 VP5                @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab fourcc: VP50 | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item On2 VP6                @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab fourcc: VP60,VP61,VP62 | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item planar RGB             @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab fourcc: 8BPS | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item QPEG                   @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab fourccs: QPEG, Q1.0, Q1.1 | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | @item RealVideo 1.0          @tab  X  @tab  X | 
					
						
							|  |  |  | @item RealVideo 2.0          @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2008-12-20 18:06:01 +00:00
										 |  |  | @item RealVideo 3.0          @tab     @tab  X | 
					
						
							|  |  |  |     @tab still far from ideal | 
					
						
							| 
									
										
										
										
											2008-12-01 06:40:36 +00:00
										 |  |  | @item RealVideo 4.0          @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item Renderware TXD         @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Texture dictionaries used by the Renderware Engine. | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item RTjpeg                 @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Video encoding used in NuppelVideo files. | 
					
						
							| 
									
										
										
										
											2008-07-08 15:01:44 +00:00
										 |  |  | @item Smacker video          @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Video encoding used in Smacker. | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item Snow                   @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab experimental wavelet codec (fourcc: SNOW) | 
					
						
							| 
									
										
										
										
											2008-06-06 07:51:36 +00:00
										 |  |  | @item Sony PlayStation MDEC  @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item Sorenson Video 1       @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab fourcc: SVQ1 | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item Sorenson Video 3       @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab fourcc: SVQ3 | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item Sunplus MJPEG          @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab fourcc: SP5X | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item TechSmith Camtasia     @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab fourcc: TSCC | 
					
						
							| 
									
										
										
										
											2008-10-25 08:51:46 +00:00
										 |  |  | @item Theora                 @tab  E  @tab  X | 
					
						
							| 
									
										
										
										
											2008-10-25 08:41:00 +00:00
										 |  |  |     @tab encoding supported through external library libtheora | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item THP                    @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used on the Nintendo GameCube. | 
					
						
							| 
									
										
										
										
											2008-07-08 15:01:44 +00:00
										 |  |  | @item Tiertex Seq video      @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Codec used in DOS CD-ROM FlashBack game. | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item VC-1                   @tab     @tab  X | 
					
						
							|  |  |  | @item VMD Video              @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used in Sierra VMD files. | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item VMware Video           @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Codec used in videos captured by VMware. | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | @item Westwood VQA           @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item Winnov WNV1            @tab     @tab  X | 
					
						
							|  |  |  | @item WMV7                   @tab  X  @tab  X | 
					
						
							|  |  |  | @item WMV8                   @tab  X  @tab  X | 
					
						
							|  |  |  | @item WMV9                   @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab not completely working | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item Xan/WC3                @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used in Wing Commander III .MVE files. | 
					
						
							| 
									
										
										
										
											2009-02-12 17:52:05 +00:00
										 |  |  | @item YAMAHA SMAF            @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item ZLIB                   @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab part of LCL, encoder experimental | 
					
						
							| 
									
										
										
										
											2008-07-08 14:41:12 +00:00
										 |  |  | @item ZMBV                   @tab   X @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Encoder works only in PAL8. | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | @end multitable | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @code{X} means that encoding (resp. decoding) is supported. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-10-25 08:51:46 +00:00
										 |  |  | @code{E} means that support is provided through an external library. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | @section Audio Codecs | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-10-27 14:16:42 +00:00
										 |  |  | @multitable @columnfractions .4 .1 .1 .4 | 
					
						
							| 
									
										
										
										
											2008-09-26 19:58:27 +00:00
										 |  |  | @item Name @tab Encoding @tab Decoding @tab Comments | 
					
						
							| 
									
										
										
										
											2008-07-08 14:47:22 +00:00
										 |  |  | @item 4X IMA ADPCM           @tab     @tab  X | 
					
						
							|  |  |  | @item 8SVX audio             @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-10-25 08:51:46 +00:00
										 |  |  | @item AAC                    @tab  E  @tab  X | 
					
						
							| 
									
										
										
										
											2008-10-25 08:41:00 +00:00
										 |  |  |     @tab encoding supported through external library libfaac | 
					
						
							| 
									
										
										
										
											2008-07-08 14:47:22 +00:00
										 |  |  | @item AC-3                   @tab IX  @tab IX | 
					
						
							| 
									
										
										
										
											2008-10-25 08:51:46 +00:00
										 |  |  | @item AMR-NB                 @tab  E  @tab  E | 
					
						
							| 
									
										
										
										
											2008-10-25 08:41:00 +00:00
										 |  |  |     @tab supported through external library libamrnb | 
					
						
							| 
									
										
										
										
											2008-10-25 08:51:46 +00:00
										 |  |  | @item AMR-WB                 @tab  E  @tab  E | 
					
						
							| 
									
										
										
										
											2008-10-25 08:41:00 +00:00
										 |  |  |     @tab supported through external library libamrwb | 
					
						
							| 
									
										
										
										
											2008-07-08 14:47:22 +00:00
										 |  |  | @item AMV IMA ADPCM          @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used in AMV files | 
					
						
							| 
									
										
										
										
											2008-08-19 19:25:00 +00:00
										 |  |  | @item Apple lossless audio   @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab QuickTime fourcc 'alac' | 
					
						
							| 
									
										
										
										
											2008-07-08 14:47:22 +00:00
										 |  |  | @item Apple MACE 3           @tab     @tab  X | 
					
						
							|  |  |  | @item Apple MACE 6           @tab     @tab  X | 
					
						
							|  |  |  | @item ATRAC 3                @tab     @tab  X | 
					
						
							|  |  |  | @item CD-ROM XA ADPCM        @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-08 15:01:44 +00:00
										 |  |  | @item Cin audio              @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Codec used in Delphine Software International games. | 
					
						
							| 
									
										
										
										
											2008-07-08 14:47:22 +00:00
										 |  |  | @item Creative ADPCM         @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab 16 -> 4, 8 -> 4, 8 -> 3, 8 -> 2 | 
					
						
							| 
									
										
										
										
											2008-07-08 14:47:22 +00:00
										 |  |  | @item CRI ADX ADPCM          @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used in Sega Dreamcast games. | 
					
						
							| 
									
										
										
										
											2008-07-08 14:47:22 +00:00
										 |  |  | @item DSP Group TrueSpeech   @tab     @tab  X | 
					
						
							|  |  |  | @item DTS Coherent Audio     @tab     @tab  X | 
					
						
							|  |  |  | @item Duck DK3 IMA ADPCM     @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used in some Sega Saturn console games. | 
					
						
							| 
									
										
										
										
											2008-07-08 14:47:22 +00:00
										 |  |  | @item Duck DK4 IMA ADPCM     @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used in some Sega Saturn console games. | 
					
						
							| 
									
										
										
										
											2008-07-08 14:47:22 +00:00
										 |  |  | @item DV audio               @tab     @tab  X | 
					
						
							|  |  |  | @item Electronic Arts ADPCM  @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used in various EA titles. | 
					
						
							| 
									
										
										
										
											2008-08-31 19:57:45 +00:00
										 |  |  | @item Enhanced AC-3          @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-08-31 20:11:25 +00:00
										 |  |  | @item FLAC lossless audio    @tab IX  @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-08 14:47:22 +00:00
										 |  |  | @item G.726  ADPCM           @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2008-10-25 08:51:46 +00:00
										 |  |  | @item GSM                    @tab  E  @tab  E | 
					
						
							| 
									
										
										
										
											2008-10-25 08:44:31 +00:00
										 |  |  |     @tab supported through external library libgsm | 
					
						
							| 
									
										
										
										
											2008-10-25 08:51:46 +00:00
										 |  |  | @item GSM_MS                 @tab  E  @tab  E | 
					
						
							| 
									
										
										
										
											2008-10-25 08:44:31 +00:00
										 |  |  |     @tab supported through external library libgsm | 
					
						
							| 
									
										
										
										
											2008-07-08 14:47:22 +00:00
										 |  |  | @item id RoQ DPCM            @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used in Quake III, Jedi Knight 2, other computer games. | 
					
						
							| 
									
										
										
										
											2008-07-08 14:47:22 +00:00
										 |  |  | @item Intel Music Coder      @tab     @tab  X | 
					
						
							|  |  |  | @item Interplay MVE DPCM     @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used in various Interplay computer games. | 
					
						
							| 
									
										
										
										
											2009-01-17 20:08:43 +00:00
										 |  |  | @item ISS IMA ADPCM          @tab     @tab  X | 
					
						
							|  |  |  |     @tab Used in FunCom games. | 
					
						
							| 
									
										
										
										
											2008-07-08 14:47:22 +00:00
										 |  |  | @item MAXIS EA ADPCM         @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used in Sim City 3000. | 
					
						
							| 
									
										
										
										
											2008-07-08 14:47:22 +00:00
										 |  |  | @item Microsoft ADPCM        @tab  X  @tab  X | 
					
						
							|  |  |  | @item MLP/TrueHD             @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used in DVD-Audio and Blu-Ray discs. | 
					
						
							| 
									
										
										
										
											2008-07-08 14:47:22 +00:00
										 |  |  | @item Monkey's Audio         @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Only versions 3.97-3.99 are supported. | 
					
						
							| 
									
										
										
										
											2008-10-25 08:53:10 +00:00
										 |  |  | @item MPEG audio layer 3     @tab  E  @tab IX | 
					
						
							|  |  |  |     @tab encoding supported through external library LAME | 
					
						
							| 
									
										
										
										
											2008-07-08 14:47:22 +00:00
										 |  |  | @item MPEG audio layer 2     @tab IX  @tab IX | 
					
						
							|  |  |  | @item MS IMA ADPCM           @tab  X  @tab  X | 
					
						
							|  |  |  | @item Musepack               @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab SV7 and SV8 are supported. | 
					
						
							| 
									
										
										
										
											2008-09-01 11:19:26 +00:00
										 |  |  | @item Nellymoser ASAO        @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2008-12-02 16:48:05 +00:00
										 |  |  | @item QCELP / PureVoice      @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-08 14:47:22 +00:00
										 |  |  | @item Qdesign QDM2           @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab There are still some distortions. | 
					
						
							| 
									
										
										
										
											2008-07-08 14:47:22 +00:00
										 |  |  | @item QT IMA ADPCM           @tab  X  @tab  X | 
					
						
							|  |  |  | @item RA144                  @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Real 14400 bit/s codec | 
					
						
							| 
									
										
										
										
											2008-07-08 14:47:22 +00:00
										 |  |  | @item RA288                  @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Real 28800 bit/s codec | 
					
						
							| 
									
										
										
										
											2008-08-31 19:59:27 +00:00
										 |  |  | @item RADnet                 @tab IX  @tab IX | 
					
						
							| 
									
										
										
										
											2008-08-31 19:59:52 +00:00
										 |  |  |     @tab Real low bitrate AC-3 codec | 
					
						
							| 
									
										
										
										
											2008-07-08 14:47:22 +00:00
										 |  |  | @item Real COOK              @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab All versions except 5.1 are supported. | 
					
						
							| 
									
										
										
										
											2008-07-08 15:01:44 +00:00
										 |  |  | @item Shorten                @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-08 14:47:22 +00:00
										 |  |  | @item Sierra Online DPCM     @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used in Sierra Online game audio files. | 
					
						
							| 
									
										
										
										
											2008-07-08 15:01:44 +00:00
										 |  |  | @item Smacker audio          @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-08 14:47:22 +00:00
										 |  |  | @item SMJPEG IMA ADPCM       @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used in certain Loki game ports. | 
					
						
							| 
									
										
										
										
											2008-09-01 13:32:30 +00:00
										 |  |  | @item Sonic                  @tab  X  @tab  X | 
					
						
							|  |  |  |     @tab experimental codec | 
					
						
							|  |  |  | @item Sonic lossless         @tab  X  @tab  X | 
					
						
							|  |  |  |     @tab experimental codec | 
					
						
							| 
									
										
										
										
											2008-10-25 08:51:46 +00:00
										 |  |  | @item Speex                  @tab     @tab  E | 
					
						
							| 
									
										
										
										
											2008-10-25 08:41:00 +00:00
										 |  |  |     @tab supported through external library libspeex | 
					
						
							| 
									
										
										
										
											2008-07-08 14:47:22 +00:00
										 |  |  | @item THP ADPCM              @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used on the Nintendo GameCube. | 
					
						
							| 
									
										
										
										
											2008-07-08 14:47:22 +00:00
										 |  |  | @item True Audio (TTA)       @tab     @tab  X | 
					
						
							|  |  |  | @item Vorbis                 @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-08 15:01:44 +00:00
										 |  |  | @item WavPack                @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-08 14:47:22 +00:00
										 |  |  | @item Westwood Studios IMA ADPCM @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used in Westwood Studios games like Command and Conquer. | 
					
						
							| 
									
										
										
										
											2008-07-08 15:01:44 +00:00
										 |  |  | @item WMA v1/v2              @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-08 14:47:22 +00:00
										 |  |  | @item Xan DPCM               @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2008-07-10 16:31:11 +00:00
										 |  |  |     @tab Used in Origin's Wing Commander IV AVI files. | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | @end multitable | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @code{X} means that encoding (resp. decoding) is supported. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-10-25 08:51:46 +00:00
										 |  |  | @code{E} means that support is provided through an external library. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | @code{I} means that an integer-only version is available, too (ensures high | 
					
						
							|  |  |  | performance on systems without hardware floating point support). | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-10-25 09:08:09 +00:00
										 |  |  | @section Subtitle Formats | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-10-27 14:16:42 +00:00
										 |  |  | @multitable @columnfractions .4 .1 .1 .1 .1 .1 | 
					
						
							| 
									
										
										
										
											2009-02-08 22:24:04 +00:00
										 |  |  | @item Name @tab Muxing @tab Demuxing @tab Encoding @tab Decoding | 
					
						
							| 
									
										
										
										
											2009-02-12 17:49:10 +00:00
										 |  |  | @item SSA/ASS      @tab X @tab X | 
					
						
							| 
									
										
										
										
											2009-02-08 22:24:04 +00:00
										 |  |  | @item DVB          @tab X @tab X @tab X @tab X | 
					
						
							|  |  |  | @item DVD          @tab X @tab X @tab X @tab X | 
					
						
							|  |  |  | @item XSUB         @tab   @tab   @tab   @tab X | 
					
						
							| 
									
										
										
										
											2008-10-25 09:08:09 +00:00
										 |  |  | @end multitable | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @code{X} means that the feature is supported. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | @chapter Platform Specific information | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @section BSD | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | BSD make will not build FFmpeg, you need to install and use GNU Make | 
					
						
							|  |  |  | (@file{gmake}). | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @section Windows | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-11-04 01:42:18 +00:00
										 |  |  | To get help and instructions for building FFmpeg under Windows, check out | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | the FFmpeg Windows Help Forum at | 
					
						
							| 
									
										
										
										
											2008-09-13 18:50:53 +00:00
										 |  |  | @url{http://ffmpeg.arrozcru.org/}. | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | @subsection Native Windows compilation | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-10-24 03:26:10 +00:00
										 |  |  | FFmpeg can be built to run natively on Windows using the MinGW tools. Install | 
					
						
							| 
									
										
										
										
											2008-10-02 17:39:30 +00:00
										 |  |  | the latest versions of MSYS and MinGW from @url{http://www.mingw.org/}. | 
					
						
							|  |  |  | You can find detailed installation | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | instructions in the download section and the FAQ. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-10-02 17:39:30 +00:00
										 |  |  | 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) | 
					
						
							| 
									
										
										
										
											2008-12-07 12:14:44 +00:00
										 |  |  | @item w32api 3.13 | 
					
						
							| 
									
										
										
										
											2008-10-02 17:39:30 +00:00
										 |  |  | @item mingw-runtime 3.15 | 
					
						
							|  |  |  | @end itemize | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-10-23 14:39:02 +00:00
										 |  |  | You will also need to pass @code{-fno-common} to the compiler to work around | 
					
						
							|  |  |  | a GCC bug (see @url{http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37216}). | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-10-24 03:26:10 +00:00
										 |  |  | Within the MSYS shell, configure and make with: | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-10-24 03:26:10 +00:00
										 |  |  | @example | 
					
						
							| 
									
										
										
										
											2008-10-23 14:39:02 +00:00
										 |  |  | ./configure --enable-memalign-hack --extra-cflags=-fno-common | 
					
						
							| 
									
										
										
										
											2007-10-24 03:26:10 +00:00
										 |  |  | make | 
					
						
							|  |  |  | make install | 
					
						
							|  |  |  | @end example | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-10-24 03:26:10 +00:00
										 |  |  | This will install @file{ffmpeg.exe} along with many other development files | 
					
						
							|  |  |  | to @file{/usr/local}. You may specify another install path using the | 
					
						
							|  |  |  | @code{--prefix} option in @file{configure}. | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-10-24 03:26:10 +00:00
										 |  |  | Notes: | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-10-24 03:26:10 +00:00
										 |  |  | @itemize | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-10-24 03:26:10 +00:00
										 |  |  | @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}. | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-10-24 03:26:10 +00:00
										 |  |  | @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. | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | @item By using @code{./configure --enable-shared} when configuring FFmpeg, | 
					
						
							| 
									
										
										
										
											2007-10-24 03:26:10 +00:00
										 |  |  | you can build libavutil, libavcodec and libavformat as DLLs. | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | @end itemize | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-10-24 03:26:10 +00:00
										 |  |  | @subsection Microsoft Visual C++ compatibility | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-10-24 03:26:10 +00:00
										 |  |  | 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. | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-10-24 03:26:10 +00:00
										 |  |  | 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. | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-10-24 03:26:10 +00:00
										 |  |  | @subsubsection Using static libraries | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-10-24 03:26:10 +00:00
										 |  |  | Assuming you have just built and installed FFmpeg in @file{/usr/local}. | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | @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 | 
					
						
							| 
									
										
										
										
											2007-10-24 03:26:10 +00:00
										 |  |  | that MSVC++ has already created for you. For example, you can copy | 
					
						
							|  |  |  | @file{output_example.c} from the FFmpeg distribution. | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | @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 | 
					
						
							| 
									
										
										
										
											2007-10-24 03:26:10 +00:00
										 |  |  | Directories" setting to contain the path where the FFmpeg includes were | 
					
						
							|  |  |  | installed (i.e. @file{c:\msys\1.0\local\include}). | 
					
						
							| 
									
										
										
										
											2008-06-06 21:41:09 +00:00
										 |  |  | Do not add MinGW's include directory here, or the include files will | 
					
						
							|  |  |  | conflict with MSVC's. | 
					
						
							| 
									
										
										
										
											2007-10-24 03:26:10 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | @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". | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | @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". | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-10-24 03:26:10 +00:00
										 |  |  | @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 --enable-memalign-hack | 
					
						
							|  |  |  | 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. | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | @end enumerate | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-10-24 03:26:10 +00:00
										 |  |  | 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 @file{libxx.a} | 
					
						
							|  |  |  | files, you should add @file{avcodec.lib}, @file{avformat.lib}, and | 
					
						
							|  |  |  | @file{avutil.lib}. 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}). | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | @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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 08:53:37 +00:00
										 |  |  | The main issue with the 1.5.x Cygwin versions is that newlib, its C library, | 
					
						
							|  |  |  | does not contain llrint().  You need to upgrade to the unstable 1.7.x versions, | 
					
						
							|  |  |  | or leverage the implementation in MinGW (as explained below). | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | Just install your Cygwin with all the "Base" packages, plus the | 
					
						
							|  |  |  | following "Devel" ones: | 
					
						
							|  |  |  | @example | 
					
						
							| 
									
										
										
										
											2008-12-22 23:30:33 +00:00
										 |  |  | binutils, gcc-core, make, subversion, mingw-runtime, diffutils | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | @end example | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 09:09:21 +00:00
										 |  |  | The experimental gcc4 package is still buggy, hence please | 
					
						
							|  |  |  | use the official gcc 3.4.4 or a 4.2.x compiled from source by yourself. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-12-23 08:53:37 +00:00
										 |  |  | Install the current binutils-20080624-2 as they work fine (the old | 
					
						
							|  |  |  | binutils-20060709-1 proved buggy on shared builds). | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-10-30 20:07:31 +00:00
										 |  |  | Then create a small library that just contains llrint(): | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @example | 
					
						
							|  |  |  | ar x /usr/lib/mingw/libmingwex.a llrint.o | 
					
						
							|  |  |  | ar cq /usr/local/lib/libllrint.a llrint.o | 
					
						
							|  |  |  | @end example | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | Then run | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @example | 
					
						
							| 
									
										
										
										
											2007-10-30 20:07:31 +00:00
										 |  |  | ./configure --enable-static --disable-shared  --extra-ldflags='-L /usr/local/lib' --extra-libs='-l llrint' | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | @end example | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | to make a static build or | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @example | 
					
						
							| 
									
										
										
										
											2007-10-30 20:07:31 +00:00
										 |  |  | ./configure --enable-shared --disable-static  --extra-ldflags='-L /usr/local/lib' --extra-libs='-l llrint' | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | @end example | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | to build shared libraries. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | If you want to build FFmpeg with additional libraries, download Cygwin | 
					
						
							| 
									
										
										
										
											2008-12-23 10:29:32 +00:00
										 |  |  | "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 | 
					
						
							| 
									
										
										
										
											2008-12-23 20:44:06 +00:00
										 |  |  | (@url{http://sourceware.org/cygwinports/}) : | 
					
						
							| 
									
										
										
										
											2008-12-23 10:29:32 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | @example | 
					
						
							|  |  |  | yasm, libSDL-devel, libdirac-devel, libfaac-devel, libfaad-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. | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-02-01 21:46:08 +00:00
										 |  |  | 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. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | @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 --enable-memalign-hack --enable-static --disable-shared --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin | 
					
						
							|  |  |  | @end example | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | and for a build with shared libraries | 
					
						
							|  |  |  | @example | 
					
						
							|  |  |  | ./configure --target-os=mingw32 --enable-memalign-hack --enable-shared --disable-static --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin | 
					
						
							|  |  |  | @end example | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @section BeOS | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-09-05 12:24:39 +00:00
										 |  |  | BeOS support is broken in mysterious ways. | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-12-07 08:03:05 +00:00
										 |  |  | @section OS/2 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | For information about compiling FFmpeg on OS/2 see | 
					
						
							|  |  |  | @url{http://www.edm2.com/index.php/FFmpeg}. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | @chapter Developers Guide | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @section API | 
					
						
							|  |  |  | @itemize @bullet | 
					
						
							|  |  |  | @item libavcodec is the library containing the codecs (both encoding and | 
					
						
							|  |  |  | decoding). Look at @file{libavcodec/apiexample.c} to see how to use it. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @item libavformat is the library containing the file format handling (mux and | 
					
						
							|  |  |  | demux code for several formats). Look at @file{ffplay.c} to use it in a | 
					
						
							|  |  |  | player. See @file{output_example.c} to use it to generate audio or video | 
					
						
							|  |  |  | streams. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @end itemize | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @section Integrating libavcodec or libavformat in your program | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | You can integrate all the source code of the libraries to link them | 
					
						
							|  |  |  | statically to avoid any version problem. All you need is to provide a | 
					
						
							|  |  |  | 'config.mak' and a 'config.h' in the parent directory. See the defines | 
					
						
							|  |  |  | generated by ./configure to understand what is needed. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | You can use libavcodec or libavformat in your commercial program, but | 
					
						
							|  |  |  | @emph{any patch you make must be published}. The best way to proceed is | 
					
						
							|  |  |  | to send your patches to the FFmpeg mailing list. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @node Coding Rules | 
					
						
							|  |  |  | @section Coding Rules | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | FFmpeg is programmed in the ISO C90 language with a few additional | 
					
						
							|  |  |  | features from ISO C99, namely: | 
					
						
							|  |  |  | @itemize @bullet | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  | the @samp{inline} keyword; | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  | @samp{//} comments; | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  | designated struct initializers (@samp{struct s x = @{ .i = 17 @};}) | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  | compound literals (@samp{x = (struct s) @{ 17, 23 @};}) | 
					
						
							|  |  |  | @end itemize | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | All code must compile with GCC 2.95 and GCC 3.3. Currently, FFmpeg also | 
					
						
							|  |  |  | compiles with several other compilers, such as the Compaq ccc compiler | 
					
						
							|  |  |  | or Sun Studio 9, and we would like to keep it that way unless it would | 
					
						
							|  |  |  | be exceedingly involved. To ensure compatibility, please do not use any | 
					
						
							|  |  |  | additional C99 features or GCC extensions. Especially watch out for: | 
					
						
							|  |  |  | @itemize @bullet | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  | mixing statements and declarations; | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  | @samp{long long} (use @samp{int64_t} instead); | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  | @samp{__attribute__} not protected by @samp{#ifdef __GNUC__} or similar; | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  | GCC statement expressions (@samp{(x = (@{ int y = 4; y; @})}). | 
					
						
							|  |  |  | @end itemize | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Indent size is 4. | 
					
						
							|  |  |  | The presentation is the one specified by 'indent -i4 -kr -nut'. | 
					
						
							|  |  |  | The TAB character is forbidden outside of Makefiles as is any | 
					
						
							|  |  |  | form of trailing whitespace. Commits containing either will be | 
					
						
							|  |  |  | rejected by the Subversion repository. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The main priority in FFmpeg is simplicity and small code size in order to | 
					
						
							|  |  |  | minimize the bug count. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Comments: 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. | 
					
						
							|  |  |  | @example | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * @@file mpeg.c | 
					
						
							|  |  |  |  * MPEG codec. | 
					
						
							|  |  |  |  * @@author ... | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Summary sentence. | 
					
						
							|  |  |  |  * more text ... | 
					
						
							|  |  |  |  * ... | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | typedef struct Foobar@{ | 
					
						
							|  |  |  |     int var1; /**< var1 description */ | 
					
						
							|  |  |  |     int var2; ///< 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) | 
					
						
							|  |  |  | ... | 
					
						
							|  |  |  | @end example | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | fprintf and printf are forbidden in libavformat and libavcodec, | 
					
						
							|  |  |  | please use av_log() instead. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Casts should be used only when necessary. Unneeded parentheses | 
					
						
							|  |  |  | should also be avoided if they don't make the code easier to understand. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @section Development Policy | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @enumerate | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |    Contributions should be licensed under the LGPL 2.1, including an | 
					
						
							|  |  |  |    "or any later version" clause, or the MIT license.  GPL 2 including | 
					
						
							|  |  |  |    an "or any later version" clause is also acceptable, but LGPL is | 
					
						
							|  |  |  |    preferred. | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |    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' | 
					
						
							|  |  |  |    work. | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |    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. | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |    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. | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |    Do not change behavior of the program (renaming options etc) without | 
					
						
							|  |  |  |    first discussing it on the ffmpeg-devel mailing list. Do not remove | 
					
						
							|  |  |  |    functionality from the code. Just improve! | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Note: Redundant code can be removed. | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |    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. | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |    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. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    NOTE: If you had to put if()@{ .. @} over a large (> 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 | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |    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 "fixed!" or "Changed it." are unacceptable. | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |    If you apply a patch by someone else, include the name and email address in | 
					
						
							|  |  |  |    the log message. Since the ffmpeg-cvslog mailing list is publicly | 
					
						
							|  |  |  |    archived you should add some SPAM protection to the email address. Send an | 
					
						
							|  |  |  |    answer to ffmpeg-devel (or wherever you got the patch from) saying that | 
					
						
							|  |  |  |    you applied the patch. | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |    When applying patches that have been discussed (at length) on the mailing | 
					
						
							|  |  |  |    list, reference the thread in the log message. | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |     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! | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |     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. | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |     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. | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |     Try to keep important discussions and requests (also) on the public | 
					
						
							|  |  |  |     developer mailing list, so that all developers can benefit from them. | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |     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. | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |     Remember to check if you need to bump versions for the specific libav | 
					
						
							|  |  |  |     parts (libavutil, libavcodec, libavformat) you are changing. You need | 
					
						
							| 
									
										
										
										
											2008-07-29 21:45:23 +00:00
										 |  |  |     to change the version integer. | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  |     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 | 
					
						
							| 
									
										
										
										
											2008-07-29 21:45:23 +00:00
										 |  |  |     (e.g. addition of a function to the public API or extension of an | 
					
						
							|  |  |  |     existing data structure). | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  |     Incrementing the third component means a noteworthy binary compatible | 
					
						
							|  |  |  |     change (e.g. encoder bug fix that matters for the decoder). | 
					
						
							|  |  |  | @item | 
					
						
							| 
									
										
										
										
											2008-02-04 13:10:14 +00:00
										 |  |  |     Compiler warnings indicate potential bugs or code with bad style. If a type of | 
					
						
							| 
									
										
										
										
											2008-02-04 12:16:14 +00:00
										 |  |  |     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. | 
					
						
							| 
									
										
										
										
											2008-02-04 13:12:15 +00:00
										 |  |  |     If it is a bug, the bug has to be fixed. If it is not, the code should | 
					
						
							| 
									
										
										
										
											2008-02-04 12:16:14 +00:00
										 |  |  |     be changed to not generate a warning unless that causes a slowdown | 
					
						
							|  |  |  |     or obfuscates the code. | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | @item | 
					
						
							|  |  |  |     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. | 
					
						
							|  |  |  | @end enumerate | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | We think our rules are not too hard. If you have comments, contact us. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Note, these rules are mostly borrowed from the MPlayer project. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @section Submitting patches | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | First, (@pxref{Coding Rules}) above if you did not yet. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | When you submit your patch, try to send a unified diff (diff '-up' | 
					
						
							|  |  |  | option). We cannot read other diffs :-) | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Run the regression tests before submitting a patch so that you can | 
					
						
							|  |  |  | verify that there are no big problems. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Patches should be posted as base64 encoded attachments (or any other | 
					
						
							|  |  |  | encoding which ensures that the patch will not be trashed during | 
					
						
							|  |  |  | transmission) to the ffmpeg-devel mailing list, see | 
					
						
							|  |  |  | @url{http://lists.mplayerhq.hu/mailman/listinfo/ffmpeg-devel} | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | It also helps quite a bit if you tell us what the patch does (for example | 
					
						
							|  |  |  | 'replaces lrint by lrintf'), and why (for example '*BSD isn't C99 compliant | 
					
						
							|  |  |  | and has no lrint()') | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Also please if you send several patches, send each patch as a separate mail, | 
					
						
							|  |  |  | do not attach several unrelated patches to the same mail. | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2008-07-11 00:59:27 +00:00
										 |  |  | @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 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | @section patch submission checklist | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @enumerate | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |     Do the regression tests pass with the patch applied? | 
					
						
							| 
									
										
										
										
											2008-10-29 06:48:59 +00:00
										 |  |  | @item | 
					
						
							|  |  |  |     Does @code{make checkheaders} pass with the patch applied? | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | @item | 
					
						
							|  |  |  |     Is the patch a unified diff? | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |     Is the patch against latest FFmpeg SVN? | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |     Are you subscribed to ffmpeg-dev? | 
					
						
							|  |  |  |     (the list is subscribers only due to spam) | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |     Have you checked that the changes are minimal, so that the same cannot be | 
					
						
							|  |  |  |     achieved with a smaller patch and/or simpler final code? | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |     If the change is to speed critical code, did you benchmark it? | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |     If you did any benchmarks, did you provide them in the mail? | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |     Have you checked that the patch does not introduce buffer overflows or | 
					
						
							|  |  |  |     other security issues? | 
					
						
							| 
									
										
										
										
											2008-04-02 18:58:41 +00:00
										 |  |  | @item | 
					
						
							| 
									
										
										
										
											2008-10-30 10:05:57 +00:00
										 |  |  |     Did you test your decoder or demuxer against damaged data? If no, see | 
					
						
							|  |  |  |     tools/trasher and the noise bitstream filter. Your decoder or demuxer | 
					
						
							|  |  |  |     should not crash or end in a (near) infinite loop when fed damaged data. | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | @item | 
					
						
							|  |  |  |     Is the patch created from the root of the source tree, so it can be | 
					
						
							|  |  |  |     applied with @code{patch -p0}? | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |     Does the patch not mix functional and cosmetic changes? | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |     Did you add tabs or trailing whitespace to the code? Both are forbidden. | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |     Is the patch attached to the email you send? | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |     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. | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |     If the patch fixes a bug, did you provide a verbose analysis of the bug? | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |     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 >100k to mails but rather provide a | 
					
						
							| 
									
										
										
										
											2008-12-25 15:49:50 +00:00
										 |  |  |     URL, you can upload to ftp://upload.ffmpeg.org | 
					
						
							| 
									
										
										
										
											2007-08-28 06:22:57 +00:00
										 |  |  | @item | 
					
						
							|  |  |  |     Did you provide a verbose summary about what the patch does change? | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |     Did you provide a verbose explanation why it changes things like it does? | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |     Did you provide a verbose summary of the user visible advantages and | 
					
						
							|  |  |  |     disadvantages if the patch is applied? | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |     Did you provide an example so we can verify the new feature added by the | 
					
						
							|  |  |  |     patch easily? | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |     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. | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |     You should maintain alphabetical order in alphabetically ordered lists as | 
					
						
							|  |  |  |     long as doing so does not break API/ABI compatibility. | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |     Lines with similar content should be aligned vertically when doing so | 
					
						
							|  |  |  |     improves readability. | 
					
						
							|  |  |  | @item | 
					
						
							|  |  |  |     Did you provide a suggestion for a clear commit log message? | 
					
						
							|  |  |  | @end enumerate | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @section Patch review process | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | All patches posted to ffmpeg-devel will be reviewed, unless they contain a | 
					
						
							|  |  |  | clear note that the patch is not for SVN. | 
					
						
							|  |  |  | 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. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | We will review all submitted patches, but sometimes we are quite busy so | 
					
						
							|  |  |  | especially for large patches this can take several weeks. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 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. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @section Regression tests | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Before submitting a patch (or committing to the repository), you should at least | 
					
						
							|  |  |  | test that you did not break anything. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The regression tests build a synthetic video stream and a synthetic | 
					
						
							|  |  |  | audio stream. These are then encoded and decoded with all codecs or | 
					
						
							|  |  |  | formats. The CRC (or MD5) of each generated file is recorded in a | 
					
						
							|  |  |  | result file. A 'diff' is launched to compare the reference results and | 
					
						
							|  |  |  | the result file. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The regression tests then go on to test the FFserver code with a | 
					
						
							|  |  |  | limited set of streams. It is important that this step runs correctly | 
					
						
							|  |  |  | as well. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Run 'make test' to test all the codecs and formats. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Run 'make fulltest' to test all the codecs, formats and FFserver. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | [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]. | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | @bye |