]> git.sesse.net Git - ffmpeg/blobdiff - doc/ffmpeg-doc.texi
update docs to reflect AVImageFormat removing
[ffmpeg] / doc / ffmpeg-doc.texi
index 8489a8382a67f75c6d31fa58f01edb8731116a77..8910dc679aa75a17199ed40fb87f242f55af8c44 100644 (file)
@@ -109,7 +109,7 @@ stream, in the order of the definition of output streams.
 * You can transcode decrypted VOBs
 
 @example
-ffmpeg -i snatch_1.vob -f avi -vcodec mpeg4 -b 800 -g 300 -bf 2 -acodec mp3 -ab 128 snatch.avi
+ffmpeg -i snatch_1.vob -f avi -vcodec mpeg4 -b 800k -g 300 -bf 2 -acodec mp3 -ab 128 snatch.avi
 @end example
 
 This is a typical DVD ripping example; the input is a VOB file, the
@@ -139,7 +139,7 @@ ffmpeg [[infile options][@option{-i} @var{infile}]]... @{[outfile options] @var{
 If no input file is given, audio/video grabbing is done.
 
 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
+file. For example, if you give the @option{-b 64k} option, it sets the video
 bitrate of the next file. The format option may be needed for raw input
 files.
 
@@ -190,6 +190,12 @@ Set the copyright.
 @item -comment string
 Set the comment.
 
+@item -track number
+Set the track.
+
+@item -year number
+Set the year.
+
 @item -target type
 Specify target file type ("vcd", "svcd", "dvd", "dv", "pal-vcd",
 "ntsc-svcd", ... ). All the format options (bitrate, codecs,
@@ -206,9 +212,6 @@ they do not conflict with the standard, as in:
 ffmpeg -i myfile.avi -target vcd -bf 2 /tmp/vcd.mpg
 @end example
 
-@item -hq
-Activate high quality settings.
-
 @item -itsoffset offset
 Set the input time offset in seconds.
 @code{[-]hh:mm:ss[.xxx]} syntax is also supported.
@@ -223,7 +226,7 @@ streams are delayed by 'offset' seconds.
 
 @table @option
 @item -b bitrate
-Set the video bitrate in kbit/s (default = 200 kb/s).
+Set the video bitrate in bit/s (default = 200 kb/s).
 @item -r fps
 Set frame rate (default = 25).
 @item -s size
@@ -266,13 +269,13 @@ blue (default = 000000 (black)).
 @item -vn
 Disable video recording.
 @item -bt tolerance
-Set video bitrate tolerance (in kbit/s).
+Set video bitrate tolerance (in bit/s).
 @item -maxrate bitrate
-Set max video bitrate tolerance (in kbit/s).
+Set max video bitrate tolerance (in bit/s).
 @item -minrate bitrate
-Set min video bitrate tolerance (in kbit/s).
+Set min video bitrate tolerance (in bit/s).
 @item -bufsize size
-Set rate control buffer size (in kbit).
+Set rate control buffer size (in bits).
 @item -vcodec codec
 Force video codec to @var{codec}. Use the @code{copy} special value to
 tell that the raw codec data must be copied as is.
@@ -298,17 +301,32 @@ Set the group of pictures size.
 @item -intra
 Use only intra frames.
 @item -qscale q
-Use fixed video quantiser scale (VBR).
+Use fixed video quantizer scale (VBR).
 @item -qmin q
-minimum video quantiser scale (VBR)
+minimum video quantizer scale (VBR)
 @item -qmax q
-maximum video quantiser scale (VBR)
+maximum video quantizer scale (VBR)
 @item -qdiff q
-maximum difference between the quantiser scales (VBR)
+maximum difference between the quantizer scales (VBR)
 @item -qblur blur
-video quantiser scale blur (VBR)
+video quantizer scale blur (VBR)
 @item -qcomp compression
-video quantiser scale compression (VBR)
+video quantizer scale compression (VBR)
+
+@item -lmin lambda
+minimum video lagrange factor (VBR)
+@item -lmax lambda
+max video lagrange factor (VBR)
+@item -mblmin lambda
+minimum macroblock quantizer scale (VBR)
+@item -mblmax lambda
+maximum macroblock quantizer scale (VBR)
+
+These four options (lmin, lmax, mblmin, mblmax) use 'lambda' units,
+but you may use the QP2LAMBDA constant to easily convert from 'q' units:
+@example
+ffmpeg -i src.ext -lmax 21*QP2LAMBDA dst.ext
+@end example
 
 @item -rc_init_cplx complexity
 initial complexity for single pass encoding
@@ -435,7 +453,7 @@ Enable Unlimited Motion Vector (h263+)
 
 @item -deinterlace
 Deinterlace pictures.
-@item -interlace
+@item -ilme
 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.
@@ -464,6 +482,18 @@ Disable audio recording.
 @item -acodec codec
 Force audio codec to @var{codec}. Use the @code{copy} special value to
 specify that the raw codec data must be copied as is.
+@item -newaudio
+Add a new audio track to the output file. If you want to specify parameters,
+do so before @code{-newaudio} (@code{-acodec}, @code{-ab}, etc..).
+
+Mapping will be done automatically, if the number of output streams is equal to
+the number of input streams, else it will pick the first one that matches. You
+can override the mapping using @code{-map} as usual.
+
+Example:
+@example
+ffmpeg -i file.mpg -vcodec copy -acodec ac3 -ab 384 test.mpg -acodec mp2 -ab 192 -newaudio
+@end example
 @end table
 
 @section Audio/Video grab options
@@ -484,8 +514,10 @@ Set audio device (e.g. @file{/dev/dsp}).
 @section Advanced options
 
 @table @option
-@item -map file:stream
-Set input stream mapping.
+@item -map input stream id[:input stream id]
+Set stream mapping from input streams to output streams.
+Just enumerate the input streams in the order you want them in the output.
+[input stream id] sets the (input) stream to sync against.
 @item -debug
 Print specific debug info.
 @item -benchmark
@@ -504,6 +536,16 @@ streams. This option is used for automatic FFserver testing.
 @item -loop_output number_of_times
 Repeatedly loop output for formats that support looping such as animated GIF
 (0 will loop the output infinitely).
+@item -vsync parameter
+Video sync method. Video will be stretched/squeezed to match the timestamps,
+it is done by duplicating and dropping frames. With -map you can select from
+which stream the timestamps should be taken. You can leave either video or
+audio unchanged and sync the remaining stream(s) to the unchanged one.
+@item -async samples_per_second
+Audio sync method. "Stretches/squeezes" the audio stream to match the timestamps,
+the parameter is the maximum samples per second by which the audio is changed.
+-async 1 is a special case where only the start of the audio stream is corrected
+without any later correction.
 @end table
 
 @node FFmpeg formula evaluator
@@ -603,7 +645,7 @@ the Linux player does not seem to be very fast, so it can miss
 frames. An example is:
 
 @example
-ffmpeg -g 3 -r 3 -t 10 -b 50 -s qcif -f rv10 /tmp/b.rm
+ffmpeg -g 3 -r 3 -t 10 -b 50k -s qcif -f rv10 /tmp/b.rm
 @end example
 
 @item  The parameter 'q' which is displayed while encoding is the current
@@ -704,7 +746,14 @@ library:
 @tab Multimedia format used by the Creature Shock game.
 @item Smacker @tab    @tab X
 @tab Multimedia format used by many games.
-@item GXF @tab    @tab X
+@item GXF @tab  X @tab X
+@tab General eXchange Format SMPTE 360M, used by Thomson Grass Valley playout servers.
+@item CIN @tab    @tab X
+@tab Multimedia format used by Delphine Software games.
+@item MXF @tab    @tab X
+@tab Material eXchange Format SMPTE 377M, used by D-Cinema, broadcast industry.
+@item SEQ @tab    @tab X
+@tab Tiertex .seq files used in the DOS CDROM version of the game Flashback.
 @end multitable
 
 @code{X} means that encoding (resp. decoding) is supported.
@@ -723,6 +772,8 @@ following image formats are 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.
+@item Targa        @tab   @tab X @tab Targa (.TGA) image format.
+@item TIFF         @tab   @tab X @tab Only 24 bit/pixel images are supported.
 @item SGI          @tab X @tab X @tab SGI RGB image format
 @end multitable
 
@@ -734,10 +785,10 @@ following image formats are supported:
 @item Supported Codec @tab Encoding @tab Decoding @tab Comments
 @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
+@item MPEG-4                 @tab  X  @tab  X
 @item MSMPEG4 V1             @tab  X  @tab  X
 @item MSMPEG4 V2             @tab  X  @tab  X
-@item MSMPEG4 V3             @tab  X  @tab  X @tab also known as DivX3
+@item MSMPEG4 V3             @tab  X  @tab  X
 @item WMV7                   @tab  X  @tab  X
 @item WMV8                   @tab  X  @tab  X @tab not completely working
 @item H.261                  @tab  X  @tab  X
@@ -760,6 +811,8 @@ following image formats are supported:
 @item Sorenson Video 1       @tab  X  @tab  X @tab fourcc: SVQ1
 @item Sorenson Video 3       @tab     @tab  X @tab fourcc: SVQ3
 @item On2 VP3                @tab     @tab  X @tab still experimental
+@item On2 VP5                @tab     @tab  X @tab fourcc: VP50
+@item On2 VP6                @tab     @tab  X @tab fourcc: VP62
 @item Theora                 @tab     @tab  X @tab still experimental
 @item Intel Indeo 3          @tab     @tab  X
 @item FLV                    @tab  X  @tab  X @tab Sorenson H.263 used in Flash
@@ -803,14 +856,13 @@ following image formats are supported:
 @item Smacker Video          @tab     @tab  X @tab Video encoding used in Smacker.
 @item RTjpeg                 @tab     @tab  X @tab Video encoding used in NuppelVideo files.
 @item KMVC                   @tab     @tab  X @tab Codec used in Worms games.
+@item VMware Video           @tab     @tab  X @tab Codec used in videos captured by VMware.
+@item Cin Video              @tab     @tab  X @tab Codec used in Delphine Software games.
+@item Tiertex Seq Video      @tab     @tab  X @tab Codec used in DOS CDROM FlashBack game.
 @end multitable
 
 @code{X} means that encoding (resp. decoding) is supported.
 
-See @url{http://mplayerhq.hu/~michael/codec-features.html} to
-get a precise comparison of the FFmpeg MPEG-4 codec compared to
-other implementations.
-
 @section Audio Codecs
 
 @multitable @columnfractions .4 .1 .1 .1 .7
@@ -879,6 +931,10 @@ other implementations.
 @item DSP Group TrueSpeech   @tab      @tab X
 @item True Audio (TTA)       @tab      @tab X
 @item Smacker Audio          @tab      @tab X
+@item WavPack Audio          @tab      @tab X
+@item Cin Audio              @tab      @tab X
+@tab Codec used in Delphine Software games.
+@item Intel Music Coder      @tab      @tab X
 @end multitable
 
 @code{X} means that encoding (resp. decoding) is supported.
@@ -1084,6 +1140,60 @@ MinGW tools).
 Then you can easily test FFmpeg with Wine
 (@url{http://www.winehq.com/}).
 
+@subsection Compilation under Cygwin
+
+Cygwin works very much like Unix.
+
+Just install your Cygwin with all the "Base" packages, plus the
+following "Devel" ones:
+@example
+binutils, gcc-core, make, subversion
+@end example
+
+Do not install binutils-20060709-1 (they are buggy on shared builds);
+use binutils-20050610-1 instead.
+
+Then run
+
+@example
+./configure --enable-static --disable-shared
+@end example
+
+to make a static build or
+
+@example
+./configure --enable-shared --disable-static
+@end example
+
+to build shared libraries.
+
+If you want to build FFmpeg with additional libraries, download Cygwin
+"Devel" packages for Ogg and Vorbis from any Cygwin packages repository
+and/or SDL, xvid, faac, faad2 packages from Cygwin Ports,
+(@url{http://cygwinports.dotsrc.org/}).
+
+@subsection Crosscompilation for Windows under Cygwin
+
+With Cygwin you can create Windows binaries that don't need the cygwin1.dll.
+
+Just install your Cygwin as explained before, plus these additional
+"Devel" packages:
+@example
+gcc-mingw-core, mingw-runtime, mingw-zlib
+@end example
+
+and add some special flags to your configure invocation.
+
+For a static build run
+@example
+./configure --enable-mingw32 --enable-memalign-hack --enable-static --disable-shared --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin
+@end example
+
+and for a build with shared libraries
+@example
+./configure --enable-mingw32 --enable-memalign-hack --enable-shared --disable-static --extra-cflags=-mno-cygwin --extra-libs=-mno-cygwin
+@end example
+
 @section Mac OS X
 
 @section BeOS
@@ -1109,7 +1219,7 @@ valid results, then crashes.
 @chapter Developers Guide
 
 @section API
-@itemize
+@itemize @bullet
 @item libavcodec is the library containing the codecs (both encoding and
 decoding). Look at @file{libavcodec/apiexample.c} to see how to use it.
 
@@ -1214,7 +1324,6 @@ int myfunc(int my_parameter)
 fprintf and printf are forbidden in libavformat and libavcodec,
 please use av_log() instead.
 
-@node Development Policy
 @section Development Policy
 
 @enumerate
@@ -1271,11 +1380,11 @@ please use av_log() instead.
    answer to ffmpeg-devel (or wherever you got the patch from) saying that
    you applied the patch.
 @item
-   Do NOT commit to code actively maintained by others without permission. Send
-   a patch to ffmpeg-devel instead. If noone awnsers within a reasonable time
-   (12h for build failure and security fixes, 3 days for all other small changes
-    1 week for big patches) then commit your patch if you think its ok
-    also note, the maintainer can simply ask for more time to review!
+    Do NOT commit to code actively maintained by others without permission.
+    Send a patch to ffmpeg-devel instead. If noone answers within a reasonable
+    timeframe (12h for build failures and security fixes, 3 days small changes,
+    1 week for big patches) then commit your patch if you think it's OK.
+    Also note, the maintainer can simply ask for more time to review!
 @item
     Subscribe to the ffmpeg-cvslog mailing list. The diffs of all commits
     are sent there and reviewed by all the other developers. Bugs and possible
@@ -1294,9 +1403,9 @@ please use av_log() instead.
     parts (libavutil, libavcodec, libavformat) you are changing. You need
     to change the version integer and the version string.
     Incrementing the first component means no backward compatibility to
-    previous versions (e.g. removal of a function).
+    previous versions (e.g. removal of a function from the public API).
     Incrementing the second component means backward compatible change
-    (e.g. addition of a function).
+    (e.g. addition of a function to the public API).
     Incrementing the third component means a noteworthy binary compatible
     change (e.g. encoder bug fix that matters for the decoder).
 @item
@@ -1311,10 +1420,6 @@ 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
-  You CANNOT do that. Post a request for such a change to the mailing list
-  Do NOT remove & readd a file - it will kill the changelog!!!!
-
 @section Submitting patches
 
 First, (@pxref{Coding Rules}) above if you didn't yet.