@example
@c man begin SYNOPSIS
-ffmpeg [[options][@option{-i} @var{input_file}]]... @{[options] @var{output_file}@}...
+ffmpeg [[infile options][@option{-i} @var{infile}]]... @{[outfile options] @var{outfile}@}...
@c man end
@end example
@c man begin DESCRIPTION
set the comment
@item -target type
-specify target file type ("vcd", "svcd" or "dvd"). All the format
+specify target file type ("vcd", "svcd", "dvd", "pal-vcd", "ntsc-svcd", ... ). All the format
options (bitrate, codecs, buffer sizes) are automatically set by this
option. You can just type:
ffmpeg -i myfile.avi -target vcd /tmp/vcd.mpg
@end example
+Nevertheless you can specify additional options as long as you know they do not compromise the
+standard, as in:
+
+@example
+ffmpeg -i myfile.avi -target vcd -bf 2 /tmp/vcd.mpg
+@end example
+
@item -hq
activate high quality settings
@section Audio Options
@table @option
-@item -ab bitrate
-set audio bitrate (in kbit/s)
@item -ar freq
set the audio sampling freq (default = 44100 Hz)
@item -ab bitrate
@tab .fli/.flc files
@item Sierra VMD @tab @tab X
@tab used in Sierra CD-ROM games
+@item Sierra Online @tab @tab X
+@tab .sol files used in Sierra Online games
@item Matroska @tab @tab X
@end multitable
@item Sunplus MJPEG @tab @tab X @tab fourcc: SP5X
@item DV @tab X @tab X
@item Huff YUV @tab X @tab X
-@item FFmpeg Video 1 @tab X @tab X @tab Lossless codec (fourcc: FFV1)
+@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)
@item Asus v1 @tab X @tab X @tab fourcc: ASV1
@item Asus v2 @tab X @tab X @tab fourcc: ASV2
@item Creative YUV @tab @tab X @tab fourcc: CYUV
@item Apple Animation @tab @tab X @tab fourcc: 'rle '
@item Apple Graphics @tab @tab X @tab fourcc: 'smc '
@item Apple Video @tab @tab X @tab fourcc: rpza
+@item Apple QuickDraw @tab @tab X @tab fourcc: qdrw
@item Cinepak @tab @tab X
@item Microsoft RLE @tab @tab X
@item Microsoft Video-1 @tab @tab X
@item VMD Video @tab @tab X @tab used in Sierra VMD files
@item MSZH @tab @tab X @tab Part of LCL
@item ZLIB @tab X @tab X @tab Part of LCL, encoder experimental
+@item TechSmith Camtasia @tab @tab X @tab fourcc: TSCC
+@item IBM Ultimotion @tab @tab X @tab fourcc: ULTI
@end multitable
@code{X} means that the encoding (resp. decoding) is supported.
@item MPEG audio layer 2 @tab IX @tab IX
@item MPEG audio layer 1/3 @tab IX @tab IX
@tab MP3 encoding is supported through the external library LAME
-@item AC3 @tab IX @tab X
+@item AC3 @tab IX @tab IX
@tab liba52 is used internally for decoding
@item Vorbis @tab X @tab X
@tab supported through the external library libvorbis
@tab Real 14400 bit/s codec
@item RA288 @tab @tab X
@tab Real 28800 bit/s codec
+@item RADnet @tab X @tab IX
+@tab Real lowbitrate AC3 codec, liba52 is used for decoding
@item AMR-NB @tab X @tab X
@tab supported through an external library
@item AMR-WB @tab X @tab X
@tab used in various Interplay computer games
@item Xan DPCM @tab @tab X
@tab used in Origin's Wing Commander IV AVI files
+@item Sierra Online DPCM @tab @tab X
+@tab used in Sierra Online game audio files
@item Apple MACE 3 @tab @tab X
@item Apple MACE 6 @tab @tab X
@item FLAC @tab @tab X
+@item FFmpeg Sonic @tab X @tab X
+@tab Experimental lossy/lossless codec
@end multitable
@code{X} means that the encoding (resp. decoding) is supported.
@emph{any patch you make must be published}. The best way to proceed is
to send your patches to the ffmpeg mailing list.
+@node Coding Rules
@section Coding Rules
ffmpeg is programmed in the ISO C90 language with a few additional
Main priority in ffmpeg is simplicity and small code size (=less
bugs).
-Comments: for functions visible from other modules, use the JavaDoc
-format (see examples in @file{libav/utils.c}) so that a documentation
-can be generated automatically.
+Comments: use the JavaDoc/Doxygen
+format (see examples below) so that a documentation
+can be generated automatically. All non trivial functions should have a comment
+above it explaining what the function does, even if its just one sentance.
+All Structures and their member variables should be documented too.
+@example
+/**
+ * @file mpeg.c
+ * mpeg codec.
+ * @author ...
+ */
+
+/**
+ * Summary sentance.
+ * more text ...
+ * ...
+ */
+typedef struct Foobar{
+ int var1; /**< var1 description */
+ int var2; ///< var2 description
+ /** var3 description */
+ int var3;
+} Foobar;
+
+/**
+ * Summary sentance.
+ * more text ...
+ * ...
+ * @param my_parameter description of my_parameter
+ * @return return value description
+ */
+int myfunc(int my_parameter)
+...
+@end example
fprintf and printf are forbidden in libavformat and libavcodec,
please use av_log() instead.
@section Submitting patches
+First, (@pxref{Coding Rules}) above if you didn't yet.
+
When you submit your patch, try to send a unified diff (diff '-up'
option). I cannot read other diffs :-)
'replaces lrint by lrintf') , and why (for example '*bsd isnt c99 compliant
and has no lrint()')
+We reply to all patches submitted and either apply or reject with some
+explanation why, but sometimes we are quite busy so it can take a week or 2
+
@section Regression tests
Before submitting a patch (or committing with CVS), you should at least