| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | \input texinfo @c -*- texinfo -*- | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @settitle FFmpeg Documentation | 
					
						
							|  |  |  |  | @titlepage | 
					
						
							|  |  |  |  | @sp 7 | 
					
						
							|  |  |  |  | @center @titlefont{FFmpeg Documentation} | 
					
						
							|  |  |  |  | @sp 3 | 
					
						
							|  |  |  |  | @end titlepage | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @chapter Introduction | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | FFmpeg is a very fast video and audio converter. It can also grab from | 
					
						
							|  |  |  |  | a live audio/video source. | 
					
						
							|  |  |  |  |    | 
					
						
							|  |  |  |  | The command line interface is designed to be intuitive, in the sense | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | that FFmpeg tries to figure out all parameters that can possibly be | 
					
						
							|  |  |  |  | derived automatically. You usually only have to specify the target | 
					
						
							|  |  |  |  | bitrate you want. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | FFmpeg can also convert from any sample rate to any other, and resize | 
					
						
							|  |  |  |  | video on the fly with a high quality polyphase filter. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @chapter Quick Start | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | @c man begin EXAMPLES | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @section Video and Audio grabbing | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | FFmpeg can use a video4linux compatible video source and any Open Sound | 
					
						
							|  |  |  |  | System audio source: | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @example | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | ffmpeg /tmp/out.mpg  | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @end example | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | Note that you must activate the right video source and channel before | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | launching FFmpeg with any TV viewer such as xawtv | 
					
						
							|  |  |  |  | (@url{http://bytesex.org/xawtv/}) by Gerd Knorr. You also | 
					
						
							|  |  |  |  | have to set the audio recording levels correctly with a | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | standard mixer. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-12-22 21:17:59 +00:00
										 |  |  |  | @section Video and Audio file format conversion | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | * FFmpeg can use any supported file format and protocol as input: | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | Examples: | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | * You can use YUV files as input: | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @example | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | ffmpeg -i /tmp/test%d.Y /tmp/out.mpg  | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @end example | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | It will use the files:  | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @example | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | /tmp/test0.Y, /tmp/test0.U, /tmp/test0.V, | 
					
						
							|  |  |  |  | /tmp/test1.Y, /tmp/test1.U, /tmp/test1.V, etc... | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @end example | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | The Y files use twice the resolution of the U and V files. They are | 
					
						
							|  |  |  |  | raw files, without header. They can be generated by all decent video | 
					
						
							|  |  |  |  | decoders. You must specify the size of the image with the @option{-s} option | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | if FFmpeg cannot guess it. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | * You can input from a raw YUV420P file: | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @example | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | ffmpeg -i /tmp/test.yuv /tmp/out.avi | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @end example | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | test.yuv is a file containing raw YUV planar data. Each frame is composed | 
					
						
							|  |  |  |  | of the Y plane followed by the U and V planes at half vertical and | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | horizontal resolution. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | * You can output to a raw YUV420P file: | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @example | 
					
						
							| 
									
										
										
										
											2005-09-06 08:51:46 +00:00
										 |  |  |  | ffmpeg -i mydivx.avi hugefile.yuv | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @end example | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | * You can set several input files and output files: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @example | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | ffmpeg -i /tmp/a.wav -s 640x480 -i /tmp/a.yuv /tmp/a.mpg | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @end example | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Converts the audio file a.wav and the raw YUV video file a.yuv | 
					
						
							|  |  |  |  | to MPEG file a.mpg. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-12-22 21:17:59 +00:00
										 |  |  |  | * You can also do audio and video conversions at the same time: | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @example | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | ffmpeg -i /tmp/a.wav -ar 22050 /tmp/a.mp2 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @end example | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Converts a.wav to MPEG audio at 22050Hz sample rate. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | * You can encode to several formats at the same time and define a | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | mapping from input stream to output streams: | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @example | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | ffmpeg -i /tmp/a.wav -ab 64 /tmp/a.mp2 -ab 128 /tmp/b.mp2 -map 0:0 -map 0:0 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @end example | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Converts a.wav to a.mp2 at 64 kbits and to b.mp2 at 128 kbits. '-map | 
					
						
							|  |  |  |  | file:index' specifies which input stream is used for each output | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | stream, in the order of the definition of output streams. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | * You can transcode decrypted VOBs | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @example | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | ffmpeg -i snatch_1.vob -f avi -vcodec mpeg4 -b 800 -g 300 -bf 2 -acodec mp3 -ab 128 snatch.avi | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @end example | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | This is a typical DVD ripping example; the input is a VOB file, the | 
					
						
							|  |  |  |  | output an AVI file with MPEG-4 video and MP3 audio. Note that in this | 
					
						
							|  |  |  |  | command we use B-frames so the MPEG-4 stream is DivX5 compatible, and | 
					
						
							|  |  |  |  | GOP size is 300 which means one intra frame every 10 seconds for 29.97fps | 
					
						
							|  |  |  |  | input video. Furthermore, the audio stream is MP3-encoded so you need | 
					
						
							|  |  |  |  | to enable LAME support by passing @code{--enable-mp3lame} to configure. | 
					
						
							|  |  |  |  | The mapping is particularly useful for DVD transcoding | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | to get the desired audio language. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | NOTE: To see the supported input formats, use @code{ffmpeg -formats}. | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | @c man end | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @chapter Invocation | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @section Syntax | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | The generic syntax is: | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @example  | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | @c man begin SYNOPSIS | 
					
						
							| 
									
										
										
										
											2004-07-14 02:39:55 +00:00
										 |  |  |  | ffmpeg [[infile options][@option{-i} @var{infile}]]... @{[outfile options] @var{outfile}@}... | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | @c man end | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @end example | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | @c man begin DESCRIPTION | 
					
						
							|  |  |  |  | If no input file is given, audio/video grabbing is done. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | As a general rule, options are applied to the next specified | 
					
						
							|  |  |  |  | file. For example, if you give the @option{-b 64} option, it sets the video | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | bitrate of the next file. The format option may be needed for raw input | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | files. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | By default, FFmpeg tries to convert as losslessly as possible: It | 
					
						
							|  |  |  |  | uses the same audio and video parameters for the outputs as the one | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | specified for the inputs. | 
					
						
							|  |  |  |  | @c man end | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | @c man begin OPTIONS | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @section Main options | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | @table @option | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item -L | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Show license. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item -h | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Show help. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | @item -formats | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Show available formats, codecs, protocols, ... | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item -f fmt               | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Force format. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item -i filename          | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | input filename | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @item -y                   | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Overwrite output files. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @item -t duration          | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set the recording time in seconds. | 
					
						
							|  |  |  |  | @code{hh:mm:ss[.xxx]} syntax is also supported. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-03-08 19:13:23 +00:00
										 |  |  |  | @item -ss position | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Seek to given time position in seconds. | 
					
						
							|  |  |  |  | @code{hh:mm:ss[.xxx]} syntax is also supported. | 
					
						
							| 
									
										
										
										
											2004-03-08 19:13:23 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item -title string        | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set the title. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @item -author string       | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set the author. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @item -copyright string    | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set the copyright. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @item -comment string      | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set the comment. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-12-10 19:17:15 +00:00
										 |  |  |  | @item -target type | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Specify target file type ("vcd", "svcd", "dvd", "dv", "pal-vcd", | 
					
						
							|  |  |  |  | "ntsc-svcd", ... ). All the format options (bitrate, codecs, | 
					
						
							|  |  |  |  | buffer sizes) are then set automatically. You can just type: | 
					
						
							| 
									
										
										
										
											2003-12-10 19:17:15 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @example | 
					
						
							|  |  |  |  | ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg | 
					
						
							|  |  |  |  | @end example | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Nevertheless you can specify additional options as long as you know | 
					
						
							|  |  |  |  | they do not conflict with the standard, as in: | 
					
						
							| 
									
										
										
										
											2004-10-07 03:20:27 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @example | 
					
						
							|  |  |  |  | ffmpeg -i myfile.avi -target vcd -bf 2 /tmp/vcd.mpg | 
					
						
							|  |  |  |  | @end example | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-12-10 19:17:15 +00:00
										 |  |  |  | @item -hq | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Activate high quality settings. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-06-24 18:39:24 +00:00
										 |  |  |  | @item -itsoffset offset | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set the input time offset in seconds. | 
					
						
							|  |  |  |  | @code{[-]hh:mm:ss[.xxx]} syntax is also supported. | 
					
						
							|  |  |  |  | This option affects all the input files that follow it. | 
					
						
							|  |  |  |  | The offset is added to the timestamps of the input files. | 
					
						
							|  |  |  |  | Specifying a positive offset means that the corresponding | 
					
						
							|  |  |  |  | streams are delayed by 'offset' seconds. | 
					
						
							| 
									
										
										
										
											2004-06-24 18:39:24 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @end table | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @section Video Options | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | @table @option | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item -b bitrate | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set the video bitrate in kbit/s (default = 200 kb/s). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -r fps            | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set frame rate (default = 25). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -s size              | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set frame size. The format is @samp{wxh} (default = 160x128). | 
					
						
							|  |  |  |  | The following abbreviations are recognized: | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | @table @samp | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item sqcif | 
					
						
							|  |  |  |  | 128x96 | 
					
						
							|  |  |  |  | @item qcif | 
					
						
							|  |  |  |  | 176x144 | 
					
						
							|  |  |  |  | @item cif | 
					
						
							|  |  |  |  | 352x288 | 
					
						
							|  |  |  |  | @item 4cif | 
					
						
							|  |  |  |  | 704x576 | 
					
						
							|  |  |  |  | @end table | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @item -aspect aspect | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set aspect ratio (4:3, 16:9 or 1.3333, 1.7777). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -croptop size | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set top crop band size (in pixels). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -cropbottom size | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set bottom crop band size (in pixels). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -cropleft size | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set left crop band size (in pixels). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -cropright size | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set right crop band size (in pixels). | 
					
						
							| 
									
										
										
										
											2004-04-08 18:54:40 +00:00
										 |  |  |  | @item -padtop size | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set top pad band size (in pixels). | 
					
						
							| 
									
										
										
										
											2004-04-08 18:54:40 +00:00
										 |  |  |  | @item -padbottom size | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set bottom pad band size (in pixels). | 
					
						
							| 
									
										
										
										
											2004-04-08 18:54:40 +00:00
										 |  |  |  | @item -padleft size | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set left pad band size (in pixels). | 
					
						
							| 
									
										
										
										
											2004-04-08 18:54:40 +00:00
										 |  |  |  | @item -padright size | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set right pad band size (in pixels). | 
					
						
							| 
									
										
										
										
											2004-07-10 15:58:11 +00:00
										 |  |  |  | @item -padcolor (hex color) | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set color of padded bands. The value for padcolor is expressed | 
					
						
							|  |  |  |  | as a six digit hexadecimal number where the first two digits | 
					
						
							|  |  |  |  | represent red, the middle two digits green and last two digits | 
					
						
							|  |  |  |  | blue (default = 000000 (black)). | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item -vn | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Disable video recording. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item -bt tolerance        | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set video bitrate tolerance (in kbit/s). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -maxrate bitrate | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set max video bitrate tolerance (in kbit/s). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -minrate bitrate | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set min video bitrate tolerance (in kbit/s). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -bufsize size | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set rate control buffer size (in kbit). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -vcodec codec        | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Force video codec to @var{codec}. Use the @code{copy} special value to | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | tell that the raw codec data must be copied as is. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -sameq | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Use same video quality as source (implies VBR). | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @item -pass n   | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Select the pass number (1 or 2). It is useful to do two pass | 
					
						
							|  |  |  |  | encoding. The statistics of the video are recorded in the first | 
					
						
							|  |  |  |  | pass and the video is generated at the exact requested bitrate | 
					
						
							|  |  |  |  | in the second pass. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @item -passlogfile file    | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set two pass logfile name to @var{file}. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @end table | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @section Advanced Video Options | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | @table @option | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item -g gop_size          | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set the group of pictures size. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item -intra               | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Use only intra frames. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item -qscale q            | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Use fixed video quantiser scale (VBR). | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item -qmin q              | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | minimum video quantiser scale (VBR) | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item -qmax q              | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | maximum video quantiser scale (VBR) | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item -qdiff q             | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | maximum difference between the quantiser scales (VBR) | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item -qblur blur          | 
					
						
							|  |  |  |  | video quantiser scale blur (VBR) | 
					
						
							|  |  |  |  | @item -qcomp compression   | 
					
						
							|  |  |  |  | video quantiser scale compression (VBR) | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @item -rc_init_cplx complexity | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | initial complexity for single pass encoding | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -b_qfactor factor | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | qp factor between P- and B-frames | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -i_qfactor factor | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | qp factor between P- and I-frames | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -b_qoffset offset | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | qp offset between P- and B-frames | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -i_qoffset offset | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | qp offset between P- and I-frames | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -rc_eq equation | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set rate control equation (@pxref{FFmpeg formula | 
					
						
							|  |  |  |  | evaluator}) (default = @code{tex^qComp}). | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | @item -rc_override override | 
					
						
							|  |  |  |  | rate control override for specific intervals | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -me method | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set motion estimation method to @var{method}. | 
					
						
							|  |  |  |  | Available methods are (from lowest to best quality): | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @table @samp | 
					
						
							|  |  |  |  | @item zero | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | Try just the (0, 0) vector. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item phods | 
					
						
							|  |  |  |  | @item log | 
					
						
							|  |  |  |  | @item x1 | 
					
						
							|  |  |  |  | @item epzs | 
					
						
							|  |  |  |  | (default method) | 
					
						
							|  |  |  |  | @item full | 
					
						
							|  |  |  |  | exhaustive search (slow and marginally better than epzs) | 
					
						
							|  |  |  |  | @end table | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @item -dct_algo algo | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set DCT algorithm to @var{algo}. Available values are: | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @table @samp | 
					
						
							|  |  |  |  | @item 0 | 
					
						
							|  |  |  |  | FF_DCT_AUTO (default) | 
					
						
							|  |  |  |  | @item 1 | 
					
						
							|  |  |  |  | FF_DCT_FASTINT | 
					
						
							|  |  |  |  | @item 2 | 
					
						
							|  |  |  |  | FF_DCT_INT | 
					
						
							|  |  |  |  | @item 3 | 
					
						
							|  |  |  |  | FF_DCT_MMX | 
					
						
							|  |  |  |  | @item 4 | 
					
						
							|  |  |  |  | FF_DCT_MLIB | 
					
						
							|  |  |  |  | @item 5 | 
					
						
							|  |  |  |  | FF_DCT_ALTIVEC | 
					
						
							|  |  |  |  | @end table | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @item -idct_algo algo | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set IDCT algorithm to @var{algo}. Available values are: | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @table @samp | 
					
						
							|  |  |  |  | @item 0 | 
					
						
							|  |  |  |  | FF_IDCT_AUTO (default) | 
					
						
							|  |  |  |  | @item 1 | 
					
						
							|  |  |  |  | FF_IDCT_INT           | 
					
						
							|  |  |  |  | @item 2 | 
					
						
							|  |  |  |  | FF_IDCT_SIMPLE        | 
					
						
							|  |  |  |  | @item 3 | 
					
						
							|  |  |  |  | FF_IDCT_SIMPLEMMX     | 
					
						
							|  |  |  |  | @item 4 | 
					
						
							|  |  |  |  | FF_IDCT_LIBMPEG2MMX   | 
					
						
							|  |  |  |  | @item 5 | 
					
						
							|  |  |  |  | FF_IDCT_PS2           | 
					
						
							|  |  |  |  | @item 6 | 
					
						
							|  |  |  |  | FF_IDCT_MLIB          | 
					
						
							|  |  |  |  | @item 7 | 
					
						
							|  |  |  |  | FF_IDCT_ARM           | 
					
						
							|  |  |  |  | @item 8 | 
					
						
							|  |  |  |  | FF_IDCT_ALTIVEC       | 
					
						
							|  |  |  |  | @item 9 | 
					
						
							|  |  |  |  | FF_IDCT_SH4           | 
					
						
							|  |  |  |  | @item 10 | 
					
						
							|  |  |  |  | FF_IDCT_SIMPLEARM     | 
					
						
							|  |  |  |  | @end table | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @item -er n | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set error resilience to @var{n}. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @table @samp | 
					
						
							|  |  |  |  | @item 1  | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | FF_ER_CAREFULL (default) | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item 2 | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | FF_ER_COMPLIANT | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item 3 | 
					
						
							|  |  |  |  | FF_ER_AGGRESSIVE | 
					
						
							|  |  |  |  | @item 4 | 
					
						
							|  |  |  |  | FF_ER_VERY_AGGRESSIVE | 
					
						
							|  |  |  |  | @end table | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | @item -ec bit_mask | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set error concealment to @var{bit_mask}. @var{bit_mask} is a bit mask of | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | the following values: | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @table @samp | 
					
						
							|  |  |  |  | @item 1 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | FF_EC_GUESS_MVS (default = enabled) | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item 2 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | FF_EC_DEBLOCK (default = enabled) | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @end table | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @item -bf frames | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Use 'frames' B-frames (supported for MPEG-1, MPEG-2 and MPEG-4). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -mbd mode | 
					
						
							|  |  |  |  | macroblock decision | 
					
						
							|  |  |  |  | @table @samp | 
					
						
							|  |  |  |  | @item 0 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | FF_MB_DECISION_SIMPLE: Use mb_cmp (cannot change it yet in FFmpeg). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item 1 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | FF_MB_DECISION_BITS: Choose the one which needs the fewest bits. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item 2 | 
					
						
							| 
									
										
										
										
											2005-07-26 16:41:34 +00:00
										 |  |  |  | FF_MB_DECISION_RD: rate distortion | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @end table | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @item -4mv | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Use four motion vector by macroblock (MPEG-4 only). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -part | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Use data partitioning (MPEG-4 only). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -bug param | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Work around encoder bugs that are not auto-detected. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -strict strictness | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | How strictly to follow the standards. | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | @item -aic | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Enable Advanced intra coding (h263+). | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | @item -umv | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Enable Unlimited Motion Vector (h263+) | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @item -deinterlace | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Deinterlace pictures. | 
					
						
							| 
									
										
										
										
											2003-12-10 19:17:15 +00:00
										 |  |  |  | @item -interlace | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Force interlacing support in encoder (MPEG-2 and MPEG-4 only). | 
					
						
							|  |  |  |  | Use this option if your input file is interlaced and you want | 
					
						
							|  |  |  |  | to keep the interlaced format for minimum losses. | 
					
						
							|  |  |  |  | The alternative is to deinterlace the input stream with | 
					
						
							|  |  |  |  | @option{-deinterlace}, but deinterlacing introduces losses. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -psnr | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Calculate PSNR of compressed frames. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -vstats | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Dump video coding statistics to @file{vstats_HHMMSS.log}. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -vhook module | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Insert video processing @var{module}. @var{module} contains the module | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | name and its parameters separated by spaces. | 
					
						
							|  |  |  |  | @end table | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @section Audio Options | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @table @option | 
					
						
							|  |  |  |  | @item -ar freq     | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set the audio sampling frequency (default = 44100 Hz). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -ab bitrate  | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set the audio bitrate in kbit/s (default = 64). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -ac channels | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set the number of audio channels (default = 1). | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | @item -an | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Disable audio recording. | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | @item -acodec codec | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Force audio codec to @var{codec}. Use the @code{copy} special value to | 
					
						
							|  |  |  |  | specify that the raw codec data must be copied as is. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @end table | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @section Audio/Video grab options | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @table @option | 
					
						
							|  |  |  |  | @item -vd device | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | sEt video grab device (e.g. @file{/dev/video0}). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -vc channel | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set video grab channel (DV1394 only). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -tvstd standard | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set television standard (NTSC, PAL (SECAM)). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -dv1394 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set DV1394 grab. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -ad device | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set audio device (e.g. @file{/dev/dsp}). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @end table | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @section Advanced options | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @table @option | 
					
						
							|  |  |  |  | @item -map file:stream     | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set input stream mapping. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -debug | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Print specific debug info. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item -benchmark           | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Add timings for benchmarking. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item -hex                 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Dump each input packet. | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -bitexact | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Only use bit exact algorithms (for codec testing). | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | @item -ps size | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Set packet size in bits. | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | @item -re | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Read input at native frame rate. Mainly used to simulate a grab device. | 
					
						
							| 
									
										
										
										
											2003-08-24 21:34:12 +00:00
										 |  |  |  | @item -loop | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Loop over the input stream. Currently it works only for image | 
					
						
							|  |  |  |  | streams. This option is used for automatic FFserver testing. | 
					
						
							| 
									
										
										
										
											2005-06-18 01:52:24 +00:00
										 |  |  |  | @item -loop_output number_of_times | 
					
						
							| 
									
										
										
										
											2005-07-26 16:41:34 +00:00
										 |  |  |  | Repeatedly loop output for formats that support looping such as animated GIF | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | (0 will loop the output infinitely). | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @end table | 
					
						
							| 
									
										
										
										
											2003-08-24 15:22:26 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @node FFmpeg formula evaluator | 
					
						
							|  |  |  |  | @section FFmpeg formula evaluator | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | When evaluating a rate control string, FFmpeg uses an internal formula | 
					
						
							|  |  |  |  | evaluator.  | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | The following binary operators are available: @code{+}, @code{-}, | 
					
						
							|  |  |  |  | @code{*}, @code{/}, @code{^}. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | The following unary operators are available: @code{+}, @code{-}, | 
					
						
							|  |  |  |  | @code{(...)}. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | The following functions are available: | 
					
						
							|  |  |  |  | @table @var | 
					
						
							|  |  |  |  | @item sinh(x) | 
					
						
							|  |  |  |  | @item cosh(x) | 
					
						
							|  |  |  |  | @item tanh(x) | 
					
						
							|  |  |  |  | @item sin(x) | 
					
						
							|  |  |  |  | @item cos(x) | 
					
						
							|  |  |  |  | @item tan(x) | 
					
						
							|  |  |  |  | @item exp(x) | 
					
						
							|  |  |  |  | @item log(x) | 
					
						
							|  |  |  |  | @item squish(x) | 
					
						
							|  |  |  |  | @item gauss(x) | 
					
						
							|  |  |  |  | @item abs(x) | 
					
						
							|  |  |  |  | @item max(x, y) | 
					
						
							|  |  |  |  | @item min(x, y) | 
					
						
							|  |  |  |  | @item gt(x, y) | 
					
						
							|  |  |  |  | @item lt(x, y) | 
					
						
							|  |  |  |  | @item eq(x, y) | 
					
						
							|  |  |  |  | @item bits2qp(bits) | 
					
						
							|  |  |  |  | @item qp2bits(qp) | 
					
						
							|  |  |  |  | @end table | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | The following constants are available: | 
					
						
							|  |  |  |  | @table @var | 
					
						
							|  |  |  |  | @item PI | 
					
						
							|  |  |  |  | @item E | 
					
						
							|  |  |  |  | @item iTex | 
					
						
							|  |  |  |  | @item pTex | 
					
						
							|  |  |  |  | @item tex | 
					
						
							|  |  |  |  | @item mv | 
					
						
							|  |  |  |  | @item fCode | 
					
						
							|  |  |  |  | @item iCount | 
					
						
							|  |  |  |  | @item mcVar | 
					
						
							|  |  |  |  | @item var | 
					
						
							|  |  |  |  | @item isI | 
					
						
							|  |  |  |  | @item isP | 
					
						
							|  |  |  |  | @item isB | 
					
						
							|  |  |  |  | @item avgQP | 
					
						
							|  |  |  |  | @item qComp | 
					
						
							|  |  |  |  | @item avgIITex | 
					
						
							|  |  |  |  | @item avgPITex | 
					
						
							|  |  |  |  | @item avgPPTex | 
					
						
							|  |  |  |  | @item avgBPTex | 
					
						
							|  |  |  |  | @item avgTex | 
					
						
							|  |  |  |  | @end table | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | @c man end | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @ignore | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @setfilename ffmpeg | 
					
						
							|  |  |  |  | @settitle FFmpeg video converter | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @c man begin SEEALSO | 
					
						
							| 
									
										
										
										
											2005-07-26 16:41:34 +00:00
										 |  |  |  | ffserver(1), ffplay(1) and the HTML documentation of @file{ffmpeg}. | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | @c man end | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @c man begin AUTHOR | 
					
						
							|  |  |  |  | Fabrice Bellard | 
					
						
							|  |  |  |  | @c man end | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @end ignore | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @section Protocols | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | The filename can be @file{-} to read from standard input or to write | 
					
						
							|  |  |  |  | to standard output. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | FFmpeg also handles many protocols specified with an URL syntax. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Use 'ffmpeg -formats' to see a list of the supported protocols. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | The protocol @code{http:} is currently used only to communicate with | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | FFserver (see the FFserver documentation). When FFmpeg will be a | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | video player it will also be used for streaming :-) | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @chapter Tips | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @itemize | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @item For streaming at very low bitrate application, use a low frame rate | 
					
						
							|  |  |  |  | and a small GOP size. This is especially true for RealVideo where | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | the Linux player does not seem to be very fast, so it can miss | 
					
						
							|  |  |  |  | frames. An example is: | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @example | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | ffmpeg -g 3 -r 3 -t 10 -b 50 -s qcif -f rv10 /tmp/b.rm | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @end example | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @item  The parameter 'q' which is displayed while encoding is the current | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | quantizer. The value 1 indicates that a very good quality could | 
					
						
							|  |  |  |  | be achieved. The value 31 indicates the worst quality. If q=31 appears | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | too often, it means that the encoder cannot compress enough to meet | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | your bitrate. You must either increase the bitrate, decrease the | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | frame rate or decrease the frame size. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @item If your computer is not fast enough, you can speed up the | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | compression at the expense of the compression ratio. You can use | 
					
						
							|  |  |  |  | '-me zero' to speed up motion estimation, and '-intra' to disable | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | motion estimation completely (you have only I-frames, which means it | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | is about as good as JPEG compression). | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @item To have very low audio bitrates, reduce the sampling frequency | 
					
						
							| 
									
										
										
										
											2005-07-26 16:41:34 +00:00
										 |  |  |  | (down to 22050 kHz for MPEG audio, 22050 or 11025 for AC3). | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @item To have a constant quality (but a variable bitrate), use the option | 
					
						
							| 
									
										
										
										
											2003-08-24 11:16:29 +00:00
										 |  |  |  | '-qscale n' when 'n' is between 1 (excellent quality) and 31 (worst | 
					
						
							|  |  |  |  | quality). | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @item When converting video files, you can use the '-sameq' option which | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | uses the same quality factor in the encoder as in the decoder. | 
					
						
							|  |  |  |  | It allows almost lossless encoding. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @end itemize | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @chapter Supported File Formats and Codecs | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | You can use the @code{-formats} option to have an exhaustive list. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @section File Formats | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-12-22 21:17:59 +00:00
										 |  |  |  | FFmpeg supports the following file formats through the @code{libavformat} | 
					
						
							| 
									
										
										
										
											2002-11-19 20:28:29 +00:00
										 |  |  |  | library: | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-21 23:59:06 +00:00
										 |  |  |  | @multitable @columnfractions .4 .1 .1 .4 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item Supported File Format @tab Encoding @tab Decoding @tab Comments | 
					
						
							|  |  |  |  | @item MPEG audio @tab X @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @item MPEG-1 systems @tab X  @tab  X | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @tab muxed audio and video | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @item MPEG-2 PS @tab X  @tab  X | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @tab also known as @code{VOB} file | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @item MPEG-2 TS @tab    @tab  X | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @tab also known as DVB Transport Stream | 
					
						
							|  |  |  |  | @item ASF@tab X @tab X  | 
					
						
							|  |  |  |  | @item AVI@tab X @tab X  | 
					
						
							|  |  |  |  | @item WAV@tab X @tab X  | 
					
						
							|  |  |  |  | @item Macromedia Flash@tab X @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @tab Only embedded audio is decoded. | 
					
						
							| 
									
										
										
										
											2003-08-24 11:35:02 +00:00
										 |  |  |  | @item FLV              @tab  X @tab X | 
					
						
							|  |  |  |  | @tab Macromedia Flash video files | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item Real Audio and Video @tab X @tab X  | 
					
						
							|  |  |  |  | @item Raw AC3 @tab X  @tab  X  | 
					
						
							|  |  |  |  | @item Raw MJPEG @tab X  @tab  X  | 
					
						
							|  |  |  |  | @item Raw MPEG video @tab X  @tab  X  | 
					
						
							|  |  |  |  | @item Raw PCM8/16 bits, mulaw/Alaw@tab X  @tab  X  | 
					
						
							| 
									
										
										
										
											2003-11-14 05:42:14 +00:00
										 |  |  |  | @item Raw CRI ADX audio @tab X  @tab  X  | 
					
						
							| 
									
										
										
										
											2005-02-26 14:30:04 +00:00
										 |  |  |  | @item Raw Shorten audio @tab    @tab  X  | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item SUN AU format @tab X  @tab  X  | 
					
						
							| 
									
										
										
										
											2003-10-02 14:29:24 +00:00
										 |  |  |  | @item NUT @tab X @tab X @tab NUT Open Container Format | 
					
						
							| 
									
										
										
										
											2005-07-26 16:41:34 +00:00
										 |  |  |  | @item QuickTime        @tab X @tab  X  | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @item MPEG-4           @tab X @tab  X | 
					
						
							|  |  |  |  | @tab MPEG-4 is a variant of QuickTime. | 
					
						
							| 
									
										
										
										
											2002-11-19 20:28:29 +00:00
										 |  |  |  | @item Raw MPEG4 video  @tab  X @tab  X  | 
					
						
							| 
									
										
										
										
											2003-10-01 23:34:46 +00:00
										 |  |  |  | @item DV               @tab  X @tab  X | 
					
						
							| 
									
										
										
										
											2003-05-29 23:39:42 +00:00
										 |  |  |  | @item 4xm              @tab    @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @tab 4X Technologies format, used in some games. | 
					
						
							| 
									
										
										
										
											2003-09-02 04:47:34 +00:00
										 |  |  |  | @item Playstation STR  @tab    @tab X | 
					
						
							|  |  |  |  | @item Id RoQ           @tab    @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @tab Used in Quake III, Jedi Knight 2, other computer games. | 
					
						
							| 
									
										
										
										
											2003-09-02 04:47:34 +00:00
										 |  |  |  | @item Interplay MVE    @tab    @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @tab Format used in various Interplay computer games. | 
					
						
							| 
									
										
										
										
											2003-09-08 04:28:36 +00:00
										 |  |  |  | @item WC3 Movie        @tab    @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @tab Multimedia format used in Origin's Wing Commander III computer game. | 
					
						
							| 
									
										
										
										
											2003-10-01 04:39:38 +00:00
										 |  |  |  | @item Sega FILM/CPK    @tab    @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @tab Used in many Sega Saturn console games. | 
					
						
							| 
									
										
										
										
											2003-10-01 04:39:38 +00:00
										 |  |  |  | @item Westwood Studios VQA/AUD  @tab    @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @tab Multimedia formats used in Westwood Studios games. | 
					
						
							| 
									
										
										
										
											2003-10-03 05:43:03 +00:00
										 |  |  |  | @item Id Cinematic (.cin) @tab    @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @tab Used in Quake II. | 
					
						
							| 
									
										
										
										
											2003-11-14 05:42:14 +00:00
										 |  |  |  | @item FLIC format      @tab    @tab X | 
					
						
							|  |  |  |  | @tab .fli/.flc files | 
					
						
							| 
									
										
										
										
											2004-01-02 04:50:08 +00:00
										 |  |  |  | @item Sierra VMD       @tab    @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @tab Used in Sierra CD-ROM games. | 
					
						
							| 
									
										
										
										
											2004-09-28 03:09:49 +00:00
										 |  |  |  | @item Sierra Online    @tab    @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @tab .sol files used in Sierra Online games. | 
					
						
							| 
									
										
										
										
											2004-03-13 16:35:32 +00:00
										 |  |  |  | @item Matroska         @tab    @tab X | 
					
						
							| 
									
										
										
										
											2004-10-16 19:33:57 +00:00
										 |  |  |  | @item Electronic Arts Multimedia    @tab    @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @tab Used in various EA games; files have extensions like WVE and UV2. | 
					
						
							| 
									
										
										
										
											2004-11-20 23:40:22 +00:00
										 |  |  |  | @item Nullsoft Video (NSV) format @tab    @tab X | 
					
						
							|  |  |  |  | @end multitable | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @code{X} means that encoding (resp. decoding) is supported. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-11-19 20:28:29 +00:00
										 |  |  |  | @section Image Formats | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | FFmpeg can read and write images for each frame of a video sequence. The | 
					
						
							|  |  |  |  | following image formats are supported: | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-21 23:59:06 +00:00
										 |  |  |  | @multitable @columnfractions .4 .1 .1 .4 | 
					
						
							| 
									
										
										
										
											2002-11-19 20:28:29 +00:00
										 |  |  |  | @item Supported Image Format @tab Encoding @tab Decoding @tab Comments | 
					
						
							|  |  |  |  | @item PGM, PPM     @tab X @tab X  | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @item PAM          @tab X @tab X @tab PAM is a PNM extension with alpha support. | 
					
						
							| 
									
										
										
										
											2003-08-24 11:35:02 +00:00
										 |  |  |  | @item PGMYUV       @tab X @tab X @tab PGM with U and V components in YUV 4:2:0 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @item JPEG         @tab X @tab X @tab Progressive JPEG is not supported. | 
					
						
							|  |  |  |  | @item .Y.U.V       @tab X @tab X @tab one raw file per component | 
					
						
							|  |  |  |  | @item animated GIF @tab X @tab X @tab Only uncompressed GIFs are generated. | 
					
						
							|  |  |  |  | @item PNG          @tab X @tab X @tab 2 bit and 4 bit/pixel not supported yet. | 
					
						
							| 
									
										
										
										
											2004-03-13 17:30:37 +00:00
										 |  |  |  | @item SGI          @tab X @tab X @tab SGI RGB image format | 
					
						
							| 
									
										
										
										
											2002-11-19 20:28:29 +00:00
										 |  |  |  | @end multitable | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @code{X} means that encoding (resp. decoding) is supported. | 
					
						
							| 
									
										
										
										
											2002-11-19 20:28:29 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @section Video Codecs | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-21 23:59:06 +00:00
										 |  |  |  | @multitable @columnfractions .4 .1 .1 .4 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item Supported Codec @tab Encoding @tab Decoding @tab Comments | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @item MPEG-1 video           @tab  X  @tab  X | 
					
						
							|  |  |  |  | @item MPEG-2 video           @tab  X  @tab  X | 
					
						
							|  |  |  |  | @item MPEG-4                 @tab  X  @tab  X @tab also known as DivX4/5 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item MSMPEG4 V1             @tab  X  @tab  X | 
					
						
							|  |  |  |  | @item MSMPEG4 V2             @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @item MSMPEG4 V3             @tab  X  @tab  X @tab also known as DivX3 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item WMV7                   @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @item WMV8                   @tab  X  @tab  X @tab not completely working | 
					
						
							| 
									
										
										
										
											2004-10-28 19:40:57 +00:00
										 |  |  |  | @item H.261                  @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @item H.263(+)               @tab  X  @tab  X @tab also known as RealVideo 1.0 | 
					
						
							| 
									
										
										
										
											2004-10-28 19:40:57 +00:00
										 |  |  |  | @item H.264                  @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @item MJPEG                  @tab  X  @tab  X  | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @item lossless MJPEG         @tab  X  @tab  X | 
					
						
							| 
									
										
										
										
											2003-10-12 21:16:31 +00:00
										 |  |  |  | @item Apple MJPEG-B          @tab     @tab  X | 
					
						
							|  |  |  |  | @item Sunplus MJPEG          @tab     @tab  X @tab fourcc: SP5X | 
					
						
							| 
									
										
										
										
											2003-10-01 23:34:46 +00:00
										 |  |  |  | @item DV                     @tab  X  @tab  X  | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @item HuffYUV                @tab  X  @tab  X | 
					
						
							|  |  |  |  | @item FFmpeg Video 1         @tab  X  @tab  X @tab experimental lossless codec (fourcc: FFV1) | 
					
						
							|  |  |  |  | @item FFmpeg Snow            @tab  X  @tab  X @tab experimental wavelet codec (fourcc: SNOW) | 
					
						
							| 
									
										
										
										
											2003-05-29 23:39:42 +00:00
										 |  |  |  | @item Asus v1                @tab  X  @tab  X @tab fourcc: ASV1 | 
					
						
							| 
									
										
										
										
											2003-09-02 04:47:34 +00:00
										 |  |  |  | @item Asus v2                @tab  X  @tab  X @tab fourcc: ASV2 | 
					
						
							| 
									
										
										
										
											2003-05-29 23:39:42 +00:00
										 |  |  |  | @item Creative YUV           @tab     @tab  X @tab fourcc: CYUV | 
					
						
							| 
									
										
										
										
											2004-05-13 12:51:54 +00:00
										 |  |  |  | @item Sorenson Video 1       @tab  X  @tab  X @tab fourcc: SVQ1 | 
					
						
							| 
									
										
										
										
											2003-05-29 23:39:42 +00:00
										 |  |  |  | @item Sorenson Video 3       @tab     @tab  X @tab fourcc: SVQ3 | 
					
						
							|  |  |  |  | @item On2 VP3                @tab     @tab  X @tab still experimental | 
					
						
							| 
									
										
										
										
											2003-10-12 21:16:31 +00:00
										 |  |  |  | @item Theora                 @tab     @tab  X @tab still experimental | 
					
						
							| 
									
										
										
										
											2005-02-27 23:43:24 +00:00
										 |  |  |  | @item Intel Indeo 3          @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2004-10-19 14:17:32 +00:00
										 |  |  |  | @item FLV                    @tab  X  @tab  X @tab Sorenson H.263 used in Flash | 
					
						
							| 
									
										
										
										
											2003-09-02 04:47:34 +00:00
										 |  |  |  | @item ATI VCR1               @tab     @tab  X @tab fourcc: VCR1 | 
					
						
							| 
									
										
										
										
											2003-10-02 14:29:24 +00:00
										 |  |  |  | @item ATI VCR2               @tab     @tab  X @tab fourcc: VCR2 | 
					
						
							| 
									
										
										
										
											2003-09-02 04:47:34 +00:00
										 |  |  |  | @item Cirrus Logic AccuPak   @tab     @tab  X @tab fourcc: CLJR | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @item 4X Video               @tab     @tab  X @tab Used in certain computer games. | 
					
						
							| 
									
										
										
										
											2003-09-02 04:47:34 +00:00
										 |  |  |  | @item Sony Playstation MDEC  @tab     @tab  X  | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @item Id RoQ                 @tab     @tab  X @tab Used in Quake III, Jedi Knight 2, other computer games. | 
					
						
							|  |  |  |  | @item Xan/WC3                @tab     @tab  X @tab Used in Wing Commander III .MVE files. | 
					
						
							|  |  |  |  | @item Interplay Video        @tab     @tab  X @tab Used in Interplay .MVE files. | 
					
						
							| 
									
										
										
										
											2004-02-05 05:22:44 +00:00
										 |  |  |  | @item Apple Animation        @tab     @tab  X @tab fourcc: 'rle ' | 
					
						
							| 
									
										
										
										
											2003-11-14 05:42:14 +00:00
										 |  |  |  | @item Apple Graphics         @tab     @tab  X @tab fourcc: 'smc ' | 
					
						
							| 
									
										
										
										
											2003-10-01 04:39:38 +00:00
										 |  |  |  | @item Apple Video            @tab     @tab  X @tab fourcc: rpza | 
					
						
							| 
									
										
										
										
											2004-09-28 03:09:49 +00:00
										 |  |  |  | @item Apple QuickDraw        @tab     @tab  X @tab fourcc: qdrw | 
					
						
							| 
									
										
										
										
											2003-10-01 04:39:38 +00:00
										 |  |  |  | @item Cinepak                @tab     @tab  X | 
					
						
							|  |  |  |  | @item Microsoft RLE          @tab     @tab  X | 
					
						
							|  |  |  |  | @item Microsoft Video-1      @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2003-10-03 05:43:03 +00:00
										 |  |  |  | @item Westwood VQA           @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @item Id Cinematic Video     @tab     @tab  X @tab Used in Quake II. | 
					
						
							| 
									
										
										
										
											2003-11-07 22:39:18 +00:00
										 |  |  |  | @item Planar RGB             @tab     @tab  X @tab fourcc: 8BPS | 
					
						
							| 
									
										
										
										
											2003-11-14 05:42:14 +00:00
										 |  |  |  | @item FLIC video             @tab     @tab  X | 
					
						
							| 
									
										
										
										
											2003-12-03 04:22:15 +00:00
										 |  |  |  | @item Duck TrueMotion v1     @tab     @tab  X @tab fourcc: DUCK | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @item VMD Video              @tab     @tab  X @tab Used in Sierra VMD files. | 
					
						
							| 
									
										
										
										
											2004-01-12 22:14:45 +00:00
										 |  |  |  | @item MSZH                   @tab     @tab  X @tab Part of LCL | 
					
						
							|  |  |  |  | @item ZLIB                   @tab  X  @tab  X @tab Part of LCL, encoder experimental | 
					
						
							| 
									
										
										
										
											2004-08-14 15:08:09 +00:00
										 |  |  |  | @item TechSmith Camtasia     @tab     @tab  X @tab fourcc: TSCC | 
					
						
							| 
									
										
										
										
											2004-09-16 03:31:41 +00:00
										 |  |  |  | @item IBM Ultimotion         @tab     @tab  X @tab fourcc: ULTI | 
					
						
							| 
									
										
										
										
											2004-10-27 04:30:48 +00:00
										 |  |  |  | @item Miro VideoXL           @tab     @tab  X @tab fourcc: VIXL | 
					
						
							| 
									
										
										
										
											2004-11-17 03:45:53 +00:00
										 |  |  |  | @item QPEG                   @tab     @tab  X @tab fourccs: QPEG, Q1.0, Q1.1 | 
					
						
							| 
									
										
										
										
											2005-03-01 02:24:58 +00:00
										 |  |  |  | @item LOCO                   @tab     @tab  X @tab  | 
					
						
							| 
									
										
										
										
											2005-03-26 20:32:55 +00:00
										 |  |  |  | @item Winnov WNV1            @tab     @tab  X @tab  | 
					
						
							| 
									
										
										
										
											2005-04-03 05:02:08 +00:00
										 |  |  |  | @item Autodesk Animator Studio Codec  @tab     @tab  X @tab fourcc: AASC | 
					
						
							| 
									
										
										
										
											2005-05-17 22:47:34 +00:00
										 |  |  |  | @item Fraps FPS1             @tab     @tab  X @tab  | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @end multitable | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @code{X} means that encoding (resp. decoding) is supported. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | See @url{http://www.mplayerhq.hu/~michael/codec-features.html} to | 
					
						
							|  |  |  |  | get a precise comparison of the FFmpeg MPEG-4 codec compared to | 
					
						
							|  |  |  |  | other implementations. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:07:56 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @section Audio Codecs | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @multitable @columnfractions .4 .1 .1 .1 .7 | 
					
						
							|  |  |  |  | @item Supported Codec @tab Encoding @tab Decoding @tab Comments | 
					
						
							|  |  |  |  | @item MPEG audio layer 2     @tab  IX  @tab  IX  | 
					
						
							|  |  |  |  | @item MPEG audio layer 1/3   @tab IX   @tab  IX | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @tab MP3 encoding is supported through the external library LAME. | 
					
						
							| 
									
										
										
										
											2004-07-11 21:07:49 +00:00
										 |  |  |  | @item AC3                    @tab  IX  @tab  IX | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @tab liba52 is used internally for decoding. | 
					
						
							| 
									
										
										
										
											2002-12-21 20:43:40 +00:00
										 |  |  |  | @item Vorbis                 @tab  X   @tab  X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @tab Supported through the external library libvorbis. | 
					
						
							| 
									
										
										
										
											2002-11-19 20:09:45 +00:00
										 |  |  |  | @item WMA V1/V2              @tab      @tab X | 
					
						
							| 
									
										
										
										
											2004-07-01 00:45:16 +00:00
										 |  |  |  | @item AAC                    @tab X    @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @tab Supported through the external library libfaac/libfaad. | 
					
						
							| 
									
										
										
										
											2004-02-14 15:11:20 +00:00
										 |  |  |  | @item Microsoft ADPCM        @tab X    @tab X | 
					
						
							| 
									
										
										
										
											2003-09-02 04:47:34 +00:00
										 |  |  |  | @item MS IMA ADPCM           @tab X    @tab X | 
					
						
							|  |  |  |  | @item QT IMA ADPCM           @tab      @tab X | 
					
						
							|  |  |  |  | @item 4X IMA ADPCM           @tab      @tab X | 
					
						
							| 
									
										
										
										
											2004-02-07 08:24:24 +00:00
										 |  |  |  | @item G.726  ADPCM           @tab X    @tab X | 
					
						
							| 
									
										
										
										
											2003-09-08 04:28:36 +00:00
										 |  |  |  | @item Duck DK3 IMA ADPCM     @tab      @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @tab Used in some Sega Saturn console games. | 
					
						
							| 
									
										
										
										
											2003-09-08 04:28:36 +00:00
										 |  |  |  | @item Duck DK4 IMA ADPCM     @tab      @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @tab Used in some Sega Saturn console games. | 
					
						
							| 
									
										
										
										
											2003-10-01 04:39:38 +00:00
										 |  |  |  | @item Westwood Studios IMA ADPCM @tab      @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @tab Used in Westwood Studios games like Command and Conquer. | 
					
						
							| 
									
										
										
										
											2004-02-03 04:27:17 +00:00
										 |  |  |  | @item SMJPEG IMA ADPCM       @tab      @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @tab Used in certain Loki game ports. | 
					
						
							| 
									
										
										
										
											2003-11-14 05:42:14 +00:00
										 |  |  |  | @item CD-ROM XA ADPCM        @tab      @tab X | 
					
						
							|  |  |  |  | @item CRI ADX ADPCM          @tab X    @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @tab Used in Sega Dreamcast games. | 
					
						
							| 
									
										
										
										
											2004-02-03 04:27:17 +00:00
										 |  |  |  | @item Electronic Arts ADPCM  @tab      @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @tab Used in various EA titles. | 
					
						
							| 
									
										
										
										
											2004-10-12 12:47:49 +00:00
										 |  |  |  | @item Creative ADPCM         @tab      @tab X | 
					
						
							| 
									
										
										
										
											2003-08-24 11:35:02 +00:00
										 |  |  |  | @item RA144                  @tab      @tab X | 
					
						
							|  |  |  |  | @tab Real 14400 bit/s codec | 
					
						
							|  |  |  |  | @item RA288                  @tab      @tab X | 
					
						
							|  |  |  |  | @tab Real 28800 bit/s codec | 
					
						
							| 
									
										
										
										
											2004-07-11 21:07:49 +00:00
										 |  |  |  | @item RADnet                 @tab X    @tab IX | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @tab Real low bitrate AC3 codec, liba52 is used for decoding. | 
					
						
							| 
									
										
										
										
											2003-08-24 11:35:02 +00:00
										 |  |  |  | @item AMR-NB                 @tab X    @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @tab Supported through an external library. | 
					
						
							| 
									
										
										
										
											2003-09-28 20:34:11 +00:00
										 |  |  |  | @item AMR-WB                 @tab X    @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @tab Supported through an external library. | 
					
						
							| 
									
										
										
										
											2003-08-24 11:35:02 +00:00
										 |  |  |  | @item DV audio               @tab      @tab X | 
					
						
							| 
									
										
										
										
											2003-09-02 04:47:34 +00:00
										 |  |  |  | @item Id RoQ DPCM            @tab      @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @tab Used in Quake III, Jedi Knight 2, other computer games. | 
					
						
							| 
									
										
										
										
											2003-09-02 04:47:34 +00:00
										 |  |  |  | @item Interplay MVE DPCM     @tab      @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @tab Used in various Interplay computer games. | 
					
						
							| 
									
										
										
										
											2003-09-08 04:28:36 +00:00
										 |  |  |  | @item Xan DPCM               @tab      @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @tab Used in Origin's Wing Commander IV AVI files. | 
					
						
							| 
									
										
										
										
											2004-09-28 03:09:49 +00:00
										 |  |  |  | @item Sierra Online DPCM     @tab      @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @tab Used in Sierra Online game audio files. | 
					
						
							| 
									
										
										
										
											2003-10-12 21:16:31 +00:00
										 |  |  |  | @item Apple MACE 3           @tab      @tab X | 
					
						
							|  |  |  |  | @item Apple MACE 6           @tab      @tab X | 
					
						
							| 
									
										
										
										
											2005-02-26 14:30:04 +00:00
										 |  |  |  | @item FLAC lossless audio    @tab      @tab X | 
					
						
							|  |  |  |  | @item Shorten lossless audio @tab      @tab X | 
					
						
							| 
									
										
										
										
											2005-03-06 07:00:24 +00:00
										 |  |  |  | @item Apple lossless audio   @tab      @tab X | 
					
						
							|  |  |  |  | @tab QuickTime fourcc 'alac' | 
					
						
							| 
									
										
										
										
											2004-08-21 19:59:40 +00:00
										 |  |  |  | @item FFmpeg Sonic           @tab X    @tab X | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @tab experimental lossy/lossless codec | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @end multitable | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @code{X} means that encoding (resp. decoding) is supported. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @code{I} means that an integer-only version is available, too (ensures high | 
					
						
							|  |  |  |  | performance on systems without hardware floating point support). | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-11-19 19:16:26 +00:00
										 |  |  |  | @chapter Platform Specific information | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @section Linux | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | FFmpeg should be compiled with at least GCC 2.95.3. GCC 3.2 is the | 
					
						
							|  |  |  |  | preferred compiler now for FFmpeg. All future optimizations will depend on | 
					
						
							| 
									
										
										
										
											2002-11-19 19:16:26 +00:00
										 |  |  |  | features only found in GCC 3.2. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @section BSD | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @section Windows | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 14:25:37 +00:00
										 |  |  |  | @subsection Native Windows compilation | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @itemize | 
					
						
							|  |  |  |  | @item Install the current versions of MSYS and MinGW from | 
					
						
							|  |  |  |  | @url{http://www.mingw.org/}. You can find detailed installation | 
					
						
							|  |  |  |  | instructions in the download section and the FAQ. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @item If you want to test the FFplay, also download | 
					
						
							| 
									
										
										
										
											2003-09-11 22:52:23 +00:00
										 |  |  |  | the MinGW development library of SDL 1.2.x | 
					
						
							|  |  |  |  | (@file{SDL-devel-1.2.x-mingw32.tar.gz}) from | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @url{http://www.libsdl.org}. Unpack it in a temporary directory, and | 
					
						
							| 
									
										
										
										
											2003-09-11 22:52:23 +00:00
										 |  |  |  | unpack the archive @file{i386-mingw32msvc.tar.gz} in the MinGW tool | 
					
						
							| 
									
										
										
										
											2003-09-16 20:28:18 +00:00
										 |  |  |  | directory. Edit the @file{sdl-config} script so that it gives the | 
					
						
							|  |  |  |  | correct SDL directory when invoked. | 
					
						
							| 
									
										
										
										
											2003-09-11 22:52:23 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @item Extract the current version of FFmpeg (the latest release version or | 
					
						
							|  |  |  |  | the current CVS snapshot, whichever is recommended). | 
					
						
							| 
									
										
										
										
											2003-08-24 14:25:37 +00:00
										 |  |  |  |   | 
					
						
							|  |  |  |  | @item Start the MSYS shell (file @file{msys.bat}). | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @item Change to the FFmpeg directory and follow | 
					
						
							|  |  |  |  |  the instructions of how to compile FFmpeg (file | 
					
						
							| 
									
										
										
										
											2003-09-11 22:52:23 +00:00
										 |  |  |  | @file{INSTALL}). Usually, launching @file{./configure} and @file{make} | 
					
						
							|  |  |  |  | suffices. If you have problems using SDL, verify that | 
					
						
							|  |  |  |  | @file{sdl-config} can be launched from the MSYS command line. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @item You can install FFmpeg in @file{Program Files/FFmpeg} by typing | 
					
						
							|  |  |  |  | @file{make install}. Don't forget to copy @file{SDL.dll} to the place | 
					
						
							|  |  |  |  | you launch @file{ffplay} from. | 
					
						
							| 
									
										
										
										
											2003-09-11 22:52:23 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-08-24 14:25:37 +00:00
										 |  |  |  | @end itemize | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-09-16 20:28:18 +00:00
										 |  |  |  | Notes:  | 
					
						
							|  |  |  |  | @itemize | 
					
						
							| 
									
										
										
										
											2003-09-11 22:52:23 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-09-16 20:28:18 +00:00
										 |  |  |  | @item The target @file{make wininstaller} can be used to create a | 
					
						
							|  |  |  |  | Nullsoft based Windows installer for FFmpeg and FFplay. @file{SDL.dll} | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | must be copied to the FFmpeg directory in order to build the | 
					
						
							| 
									
										
										
										
											2003-09-16 20:28:18 +00:00
										 |  |  |  | installer. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @item By using @code{./configure --enable-shared} when configuring FFmpeg, | 
					
						
							| 
									
										
										
										
											2003-09-16 20:28:18 +00:00
										 |  |  |  | you can build @file{avcodec.dll} and @file{avformat.dll}. With | 
					
						
							|  |  |  |  | @code{make install} you install the FFmpeg DLLs and the associated | 
					
						
							|  |  |  |  | headers in @file{Program Files/FFmpeg}.  | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @item Visual C++ compatibility: If you used @code{./configure --enable-shared} | 
					
						
							|  |  |  |  | when configuring FFmpeg, FFmpeg tries to use the Microsoft Visual | 
					
						
							| 
									
										
										
										
											2003-09-16 20:28:18 +00:00
										 |  |  |  | C++ @code{lib} tool to build @code{avcodec.lib} and | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @code{avformat.lib}. With these libraries you can link your Visual C++ | 
					
						
							| 
									
										
										
										
											2003-09-16 20:28:18 +00:00
										 |  |  |  | code directly with the FFmpeg DLLs. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @end itemize | 
					
						
							| 
									
										
										
										
											2003-08-24 14:25:37 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @subsection Cross compilation for Windows with Linux | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | You must use the MinGW cross compilation tools available at | 
					
						
							|  |  |  |  | @url{http://www.mingw.org/}. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Then configure FFmpeg with the following options: | 
					
						
							| 
									
										
										
										
											2003-08-24 14:25:37 +00:00
										 |  |  |  | @example | 
					
						
							|  |  |  |  | ./configure --enable-mingw32 --cross-prefix=i386-mingw32msvc- | 
					
						
							|  |  |  |  | @end example | 
					
						
							| 
									
										
										
										
											2005-07-26 16:41:34 +00:00
										 |  |  |  | (you can change the cross-prefix according to the prefix chosen for the | 
					
						
							| 
									
										
										
										
											2003-08-24 14:25:37 +00:00
										 |  |  |  | MinGW tools). | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Then you can easily test FFmpeg with Wine | 
					
						
							| 
									
										
										
										
											2003-08-24 14:25:37 +00:00
										 |  |  |  | (@url{http://www.winehq.com/}). | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-07-26 16:41:34 +00:00
										 |  |  |  | @section Mac OS X | 
					
						
							| 
									
										
										
										
											2002-11-19 19:16:26 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @section BeOS | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | The configure script should guess the configuration itself. | 
					
						
							|  |  |  |  | Networking support is currently not finished. | 
					
						
							|  |  |  |  | errno issues fixed by Andrew Bachmann. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | Old stuff: | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | Fran<EFBFBD>ois Revol - revol at free dot fr - April 2002 | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | The configure script should guess the configuration itself,  | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | however I still didn't test building on the net_server version of BeOS. | 
					
						
							| 
									
										
										
										
											2002-11-19 19:16:26 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | FFserver is broken (needs poll() implementation). | 
					
						
							| 
									
										
										
										
											2002-11-19 19:16:26 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | There are still issues with errno codes, which are negative in BeOS, and | 
					
						
							|  |  |  |  | that FFmpeg negates when returning. This ends up turning errors into  | 
					
						
							| 
									
										
										
										
											2002-11-19 19:16:26 +00:00
										 |  |  |  | valid results, then crashes. | 
					
						
							|  |  |  |  | (To be fixed) | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-12-21 20:43:40 +00:00
										 |  |  |  | @chapter Developers Guide | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | @section API | 
					
						
							|  |  |  |  | @itemize | 
					
						
							|  |  |  |  | @item libavcodec is the library containing the codecs (both encoding and | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | decoding). Look at @file{libavcodec/apiexample.c} to see how to use it. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | @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 | 
					
						
							| 
									
										
										
										
											2003-07-22 13:08:52 +00:00
										 |  |  |  | player. See @file{output_example.c} to use it to generate audio or video | 
					
						
							|  |  |  |  | streams. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @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 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | to send your patches to the FFmpeg mailing list. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-07-14 13:07:23 +00:00
										 |  |  |  | @node Coding Rules | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @section Coding Rules | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | FFmpeg is programmed in the ISO C90 language with a few additional | 
					
						
							| 
									
										
										
										
											2004-03-23 07:17:14 +00:00
										 |  |  |  | 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 | 
					
						
							| 
									
										
										
										
											2004-12-23 21:33:53 +00:00
										 |  |  |  | compound literals (@samp{x = (struct s) @{ 17, 23 @};}) | 
					
						
							| 
									
										
										
										
											2004-03-23 07:17:14 +00:00
										 |  |  |  | @end itemize | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | These features are supported by all compilers we care about, so we won't | 
					
						
							|  |  |  |  | accept patches to remove their use unless they absolutely don't impair | 
					
						
							|  |  |  |  | clarity and performance. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | All code must compile with GCC 2.95 and GCC 3.3. Currently, FFmpeg also | 
					
						
							| 
									
										
										
										
											2004-03-23 07:17:14 +00:00
										 |  |  |  | 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 don't use any | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | additional C99 features or GCC extensions. Especially watch out for: | 
					
						
							| 
									
										
										
										
											2004-03-23 07:17:14 +00:00
										 |  |  |  | @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 | 
					
						
							| 
									
										
										
										
											2005-07-26 16:41:34 +00:00
										 |  |  |  | GCC statement expressions (@samp{(x = (@{ int y = 4; y; @})}). | 
					
						
							| 
									
										
										
										
											2004-03-23 07:17:14 +00:00
										 |  |  |  | @end itemize | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-03-23 07:17:14 +00:00
										 |  |  |  | Indent size is 4. The TAB character should not be used. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | The presentation is the one specified by 'indent -i4 -kr'. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Main priority in FFmpeg is simplicity and small code size (=less | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | bugs). | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | 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's just one sentence. | 
					
						
							|  |  |  |  | All structures and their member variables should be documented, too. | 
					
						
							| 
									
										
										
										
											2004-07-15 12:54:38 +00:00
										 |  |  |  | @example | 
					
						
							|  |  |  |  | /** | 
					
						
							| 
									
										
										
										
											2005-08-16 18:08:29 +00:00
										 |  |  |  |  * @@file mpeg.c | 
					
						
							|  |  |  |  |  * MPEG codec. | 
					
						
							|  |  |  |  |  * @@author ... | 
					
						
							|  |  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2004-07-15 12:54:38 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | /** | 
					
						
							| 
									
										
										
										
											2005-08-16 18:08:29 +00:00
										 |  |  |  |  * Summary sentence. | 
					
						
							|  |  |  |  |  * more text ... | 
					
						
							|  |  |  |  |  * ... | 
					
						
							|  |  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2004-12-23 21:33:53 +00:00
										 |  |  |  | typedef struct Foobar@{ | 
					
						
							| 
									
										
										
										
											2005-08-16 18:08:29 +00:00
										 |  |  |  |     int var1; /**< var1 description */ | 
					
						
							|  |  |  |  |     int var2; ///< var2 description | 
					
						
							|  |  |  |  |     /** var3 description */ | 
					
						
							|  |  |  |  |     int var3; | 
					
						
							| 
									
										
										
										
											2004-12-23 21:33:53 +00:00
										 |  |  |  | @} Foobar; | 
					
						
							| 
									
										
										
										
											2004-07-15 12:54:38 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | /** | 
					
						
							| 
									
										
										
										
											2005-08-16 18:08:29 +00:00
										 |  |  |  |  * Summary sentence. | 
					
						
							|  |  |  |  |  * more text ... | 
					
						
							|  |  |  |  |  * ... | 
					
						
							|  |  |  |  |  * @@param my_parameter description of my_parameter | 
					
						
							|  |  |  |  |  * @@return return value description | 
					
						
							|  |  |  |  |  */ | 
					
						
							| 
									
										
										
										
											2004-07-15 12:54:38 +00:00
										 |  |  |  | int myfunc(int my_parameter) | 
					
						
							|  |  |  |  | ... | 
					
						
							|  |  |  |  | @end example | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-03-13 21:16:18 +00:00
										 |  |  |  | fprintf and printf are forbidden in libavformat and libavcodec,  | 
					
						
							|  |  |  |  | please use av_log() instead. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  |  | @node CVS Policy | 
					
						
							|  |  |  |  | @section CVS Policy | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @enumerate | 
					
						
							|  |  |  |  | @item  | 
					
						
							|  |  |  |  |    You must not commit code which breaks FFmpeg! (Meaning unfinished but | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  |    enabled code which breaks compilation or compiles but does not work or | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  |  |    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 don't have to over-test things. If it works for you, and you think it | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  |    should work for others, then commit. If your code has problems | 
					
						
							|  |  |  |  |    (portability, triggers compiler bugs, unusual environment etc) they will be | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  |  |    reported and eventually fixed. | 
					
						
							|  |  |  |  | @item  | 
					
						
							|  |  |  |  |    Do not commit unrelated changes together, split them into self-contained | 
					
						
							|  |  |  |  |    pieces. | 
					
						
							|  |  |  |  | @item | 
					
						
							|  |  |  |  |    Do not change behavior of the program (renaming options etc) without | 
					
						
							| 
									
										
										
										
											2005-07-26 16:41:34 +00:00
										 |  |  |  |    first discussing it on the ffmpeg-devel mailing list. Do not remove | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  |  |    functionality from the code. Just improve! | 
					
						
							|  |  |  |  |     | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  |    Note: Redundant code can be removed. | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  |  | @item | 
					
						
							|  |  |  |  |    Do not commit changes to the build system (Makefiles, configure script) | 
					
						
							| 
									
										
										
										
											2005-07-26 16:41:34 +00:00
										 |  |  |  |    which change behavior, defaults etc, without asking first. The same | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  |  |    applies to compiler warning fixes, trivial looking fixes and to code | 
					
						
							|  |  |  |  |    maintained by other developers. We usually have a reason for doing things | 
					
						
							| 
									
										
										
										
											2005-07-26 16:41:34 +00:00
										 |  |  |  |    the way we do. Send your changes as patches to the ffmpeg-devel mailing | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  |  |    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 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  |    prefer if the indentation throughout FFmpeg was consistent (Many projects | 
					
						
							|  |  |  |  |    force a given indentation style - we don't.). If you really need to make | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  |  |    indentation changes (try to avoid this), separate them strictly from real | 
					
						
							|  |  |  |  |    changes. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-12-23 21:33:53 +00:00
										 |  |  |  |    NOTE: If you had to put if()@{ .. @} over a large (> 5 lines) chunk of code, | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  |  |    then either do NOT change the indentation of the inner part within (don't  | 
					
						
							| 
									
										
										
										
											2005-07-26 16:41:34 +00:00
										 |  |  |  |    move it to the right)! or do so in a separate commit | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  |  | @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 CVS log message. Since the ffmpeg-cvslog mailing list is publicly | 
					
						
							| 
									
										
										
										
											2005-07-26 16:41:34 +00:00
										 |  |  |  |    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 | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  |  |    you applied the patch. | 
					
						
							|  |  |  |  | @item | 
					
						
							|  |  |  |  |    Do NOT commit to code actively maintained by others without permission. Send | 
					
						
							| 
									
										
										
										
											2005-07-26 16:41:34 +00:00
										 |  |  |  |    a patch to ffmpeg-devel instead. | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  |  | @item | 
					
						
							|  |  |  |  |     Subscribe to the ffmpeg-cvslog mailing list. The diffs of all CVS 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 | 
					
						
							| 
									
										
										
										
											2005-07-26 16:41:34 +00:00
										 |  |  |  |     unsure how best to do this, send a patch to ffmpeg-devel, the documentation | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  |  |     maintainer(s) will review and commit your stuff. | 
					
						
							|  |  |  |  | @item | 
					
						
							|  |  |  |  |     Revert a commit ONLY in case of a big blunder like committing something not | 
					
						
							|  |  |  |  |     intended to be committed or committing a wrong file, the wrong version of a | 
					
						
							| 
									
										
										
										
											2005-07-26 16:41:34 +00:00
										 |  |  |  |     patch, CVS policy violation or broken code and you are going to recommit the | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  |  |     right thing immediately. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  |     Never revert changes made a long time ago or buggy code. Fix it in the | 
					
						
							|  |  |  |  |     normal way instead. | 
					
						
							| 
									
										
										
										
											2005-01-12 01:20:18 +00:00
										 |  |  |  | @item | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  |     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. | 
					
						
							| 
									
										
										
										
											2004-12-23 21:33:53 +00:00
										 |  |  |  | @end enumerate | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | We think our rules are not too hard. If you have comments, contact us. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | Note, these rules are mostly borrowed from the MPlayer project. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @subsection Renaming/moving files or content of files | 
					
						
							| 
									
										
										
										
											2005-07-26 16:41:34 +00:00
										 |  |  |  |   You CANNOT do that. Post a request for such a change to the mailing list | 
					
						
							| 
									
										
										
										
											2004-11-21 14:30:50 +00:00
										 |  |  |  |   Do NOT remove & readd a file - it will kill the changelog!!!! | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @section Submitting patches | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-07-14 13:07:23 +00:00
										 |  |  |  | First, (@pxref{Coding Rules}) above if you didn't yet. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-10-25 00:35:25 +00:00
										 |  |  |  | When you submit your patch, try to send a unified diff (diff '-up' | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | option). I cannot read other diffs :-) | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-07-16 19:48:45 +00:00
										 |  |  |  | Also please do not submit patches which contain several unrelated changes. | 
					
						
							|  |  |  |  | Split them into individual self-contained patches; this makes reviewing  | 
					
						
							| 
									
										
										
										
											2005-07-16 08:28:38 +00:00
										 |  |  |  | them much easier. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | Run the regression tests before submitting a patch so that you can | 
					
						
							| 
									
										
										
										
											2002-12-22 21:17:59 +00:00
										 |  |  |  | verify that there are no big problems. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							|  |  |  |  | Patches should be posted as base64 encoded attachments (or any other | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | encoding which ensures that the patch won't be trashed during | 
					
						
							| 
									
										
										
										
											2005-07-26 16:41:34 +00:00
										 |  |  |  | transmission) to the ffmpeg-devel mailing list, see  | 
					
						
							| 
									
										
										
										
											2005-04-11 16:24:58 +00:00
										 |  |  |  | @url{http://www1.mplayerhq.hu/mailman/listinfo/ffmpeg-devel} | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2003-12-27 15:21:17 +00:00
										 |  |  |  | It also helps quite a bit if you tell us what the patch does (for example | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | 'replaces lrint by lrintf'), and why (for example '*BSD isn't C99 compliant | 
					
						
							| 
									
										
										
										
											2003-12-27 15:21:17 +00:00
										 |  |  |  | and has no lrint()') | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | We reply to all submitted patches and either apply or reject with some | 
					
						
							|  |  |  |  | explanation why, but sometimes we are quite busy so it can take a week or two. | 
					
						
							| 
									
										
										
										
											2004-09-08 10:22:01 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | @section Regression tests | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Before submitting a patch (or committing to CVS), you should at least | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | test that you did not break anything. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | The regression tests build a synthetic video stream and a synthetic | 
					
						
							|  |  |  |  | audio stream. These are then encoded and decoded with all codecs or | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | formats. The CRC (or MD5) of each generated file is recorded in a | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | result file. A 'diff' is launched to compare the reference results and | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | the result file. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | The regression tests then go on to test the FFserver code with a | 
					
						
							| 
									
										
										
										
											2002-12-22 21:17:59 +00:00
										 |  |  |  | limited set of streams. It is important that this step runs correctly | 
					
						
							|  |  |  |  | as well. | 
					
						
							|  |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2004-03-13 21:16:18 +00:00
										 |  |  |  | Run 'make test' to test all the codecs and formats. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | Run 'make fulltest' to test all the codecs, formats and FFserver. | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2005-08-05 01:06:04 +00:00
										 |  |  |  | [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 | 
					
						
							| 
									
										
										
										
											2002-10-27 22:00:34 +00:00
										 |  |  |  | accordingly]. | 
					
						
							|  |  |  |  | 
 | 
					
						
							|  |  |  |  | @bye |