add APIChanges entry for fe9a3fb
[ffmpeg.git] / doc / developer.texi
index 597ba7d..b9e246f 100644 (file)
@@ -2,11 +2,12 @@
 
 @settitle Developer Documentation
 @titlepage
-@sp 7
 @center @titlefont{Developer Documentation}
-@sp 3
 @end titlepage
 
+@top
+
+@contents
 
 @chapter Developers Guide
 
@@ -33,7 +34,7 @@ You can use libavcodec or libavformat in your commercial program, but
 @emph{any patch you make must be published}. The best way to proceed is
 to send your patches to the FFmpeg mailing list.
 
-@node Coding Rules
+@anchor{Coding Rules}
 @section Coding Rules
 
 FFmpeg is programmed in the ISO C90 language with a few additional
@@ -149,9 +150,9 @@ should also be avoided if they don't make the code easier to understand.
    Also if you have doubts about splitting or not splitting, do not hesitate to
    ask/discuss it on the developer mailing list.
 @item
-   Do not change behavior of the program (renaming options etc) without
-   first discussing it on the ffmpeg-devel mailing list. Do not remove
-   functionality from the code. Just improve!
+   Do not change behavior of the programs (renaming options etc) or public
+   API or ABI without first discussing it on the ffmpeg-devel mailing list.
+   Do not remove functionality from the code. Just improve!
 
    Note: Redundant code can be removed.
 @item
@@ -252,6 +253,9 @@ keeping it as a logical unit that contains an individual change, even
 if it spans multiple files. This makes reviewing your patches much easier
 for us and greatly increases your chances of getting your patch applied.
 
+Use the patcheck tool of FFmpeg to check your patch.
+The tool is located in the tools directory.
+
 Run the regression tests before submitting a patch so that you can
 verify that there are no big problems.
 
@@ -267,6 +271,16 @@ and has no lrint()')
 Also please if you send several patches, send each patch as a separate mail,
 do not attach several unrelated patches to the same mail.
 
+Your patch will be reviewed on the mailing list. You will likely be asked
+to make some changes and are expected to send in an improved version that
+incorporates the requests from the review. This process may go through
+several iterations. Once your patch is deemed good enough, some developer
+will pick it up and commit it to the official FFmpeg tree.
+
+Give us a few days to react. But if some time passes without reaction,
+send a reminder by email. Your patch should eventually be dealt with.
+
+
 @section New codecs or formats checklist
 
 @enumerate
@@ -276,8 +290,8 @@ do not attach several unrelated patches to the same mail.
     Did you add a long_name under NULL_IF_CONFIG_SMALL to the AVCodec or
     AVInputFormat/AVOutputFormat struct?
 @item
-    Did you bump the minor version number in @file{avcodec.h} or
-    @file{avformat.h}?
+    Did you bump the minor version number (and reset the micro version
+    number) in @file{avcodec.h} or @file{avformat.h}?
 @item
     Did you register it in @file{allcodecs.c} or @file{allformats.c}?
 @item
@@ -290,8 +304,8 @@ do not attach several unrelated patches to the same mail.
     Remember to do this even if you're just adding a format to a file that is
     already being compiled by some other rule, like a raw demuxer.
 @item
-    Did you add an entry to the table of supported formats or codecs in the
-    documentation?
+    Did you add an entry to the table of supported formats or codecs in
+    @file{doc/general.texi}?
 @item
     Did you add an entry in the Changelog?
 @item
@@ -401,13 +415,18 @@ The regression tests build a synthetic video stream and a synthetic
 audio stream. These are then encoded and decoded with all codecs or
 formats. The CRC (or MD5) of each generated file is recorded in a
 result file. A 'diff' is launched to compare the reference results and
-the result file.
+the result file. The output is checked immediately after each test
+has run.
 
 The regression tests then go on to test the FFserver code with a
 limited set of streams. It is important that this step runs correctly
 as well.
 
-Run 'make test' to test all the codecs and formats.
+Run 'make test' to test all the codecs and formats. Commands like
+'make regtest-mpeg2' can be used to run a single test. By default,
+make will abort if any test fails. To run all tests regardless,
+use make -k. To get a more verbose output, use 'make V=1 test' or
+'make V=2 test'.
 
 Run 'make fulltest' to test all the codecs, formats and FFserver.