replace FFmpeg with Libav in doc/

unless it stands for ffmpeg the program or is historic
oldabi
Janne Grunau 14 years ago committed by Janne Grunau
parent a03be6e1ba
commit f8a45fa1b1
  1. 2
      doc/bitstream_filters.texi
  2. 2
      doc/build_system.txt
  3. 4
      doc/demuxers.texi
  4. 20
      doc/developer.texi
  5. 4
      doc/encoders.texi
  6. 2
      doc/eval.texi
  7. 56
      doc/faq.texi
  8. 6
      doc/ffmpeg.texi
  9. 8
      doc/ffplay.texi
  10. 4
      doc/ffprobe.texi
  11. 4
      doc/ffserver.texi
  12. 2
      doc/fftools-common-opts.texi
  13. 10
      doc/filters.texi
  14. 58
      doc/general.texi
  15. 10
      doc/git-howto.txt
  16. 6
      doc/indevs.texi
  17. 10
      doc/issue_tracker.txt
  18. 6
      doc/libavfilter.texi
  19. 4
      doc/metadata.texi
  20. 4
      doc/multithreading.txt
  21. 4
      doc/muxers.texi
  22. 4
      doc/optimization.txt
  23. 4
      doc/outdevs.texi
  24. 4
      doc/protocols.texi
  25. 6
      doc/soc.txt

@ -1,7 +1,7 @@
@chapter Bitstream Filters @chapter Bitstream Filters
@c man begin BITSTREAM FILTERS @c man begin BITSTREAM FILTERS
When you configure your FFmpeg build, all the supported bitstream When you configure your Libav build, all the supported bitstream
filters are enabled by default. You can list all available ones using filters are enabled by default. You can list all available ones using
the configure option @code{--list-bsfs}. the configure option @code{--list-bsfs}.

@ -1,4 +1,4 @@
FFmpeg currently uses a custom build system, this text attempts to document Libav currently uses a custom build system, this text attempts to document
some of its obscure features and options. some of its obscure features and options.
Options to make: Options to make:

@ -1,10 +1,10 @@
@chapter Demuxers @chapter Demuxers
@c man begin DEMUXERS @c man begin DEMUXERS
Demuxers are configured elements in FFmpeg which allow to read the Demuxers are configured elements in Libav which allow to read the
multimedia streams from a particular type of file. multimedia streams from a particular type of file.
When you configure your FFmpeg build, all the supported demuxers When you configure your Libav build, all the supported demuxers
are enabled by default. You can list all available ones using the are enabled by default. You can list all available ones using the
configure option "--list-demuxers". configure option "--list-demuxers".

@ -32,12 +32,12 @@ generated by ./configure to understand what is needed.
You can use libavcodec or libavformat in your commercial program, but 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 @emph{any patch you make must be published}. The best way to proceed is
to send your patches to the FFmpeg mailing list. to send your patches to the Libav mailing list.
@anchor{Coding Rules} @anchor{Coding Rules}
@section Coding Rules @section Coding Rules
FFmpeg is programmed in the ISO C90 language with a few additional Libav is programmed in the ISO C90 language with a few additional
features from ISO C99, namely: features from ISO C99, namely:
@itemize @bullet @itemize @bullet
@item @item
@ -54,7 +54,7 @@ These features are supported by all compilers we care about, so we will not
accept patches to remove their use unless they absolutely do not impair accept patches to remove their use unless they absolutely do not impair
clarity and performance. clarity and performance.
All code must compile with GCC 2.95 and GCC 3.3. Currently, FFmpeg also All code must compile with GCC 2.95 and GCC 3.3. Currently, Libav also
compiles with several other compilers, such as the Compaq ccc compiler 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 or Sun Studio 9, and we would like to keep it that way unless it would
be exceedingly involved. To ensure compatibility, please do not use any be exceedingly involved. To ensure compatibility, please do not use any
@ -76,7 +76,7 @@ The TAB character is forbidden outside of Makefiles as is any
form of trailing whitespace. Commits containing either will be form of trailing whitespace. Commits containing either will be
rejected by the Subversion repository. rejected by the Subversion repository.
The main priority in FFmpeg is simplicity and small code size in order to The main priority in Libav is simplicity and small code size in order to
minimize the bug count. minimize the bug count.
Comments: Use the JavaDoc/Doxygen Comments: Use the JavaDoc/Doxygen
@ -129,7 +129,7 @@ should also be avoided if they don't make the code easier to understand.
an "or any later version" clause is also acceptable, but LGPL is an "or any later version" clause is also acceptable, but LGPL is
preferred. preferred.
@item @item
You must not commit code which breaks FFmpeg! (Meaning unfinished but You must not commit code which breaks Libav! (Meaning unfinished but
enabled code which breaks compilation or compiles but does not work or enabled code which breaks compilation or compiles but does not work or
breaks the regression tests) breaks the regression tests)
You can commit unfinished stuff (for testing etc), but it must be disabled You can commit unfinished stuff (for testing etc), but it must be disabled
@ -168,7 +168,7 @@ should also be avoided if they don't make the code easier to understand.
with functional changes, such commits will be rejected and removed. Every with functional changes, such commits will be rejected and removed. Every
developer has his own indentation style, you should not change it. Of course 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 if you (re)write something, you can use your own style, even though we would
prefer if the indentation throughout FFmpeg was consistent (Many projects prefer if the indentation throughout Libav was consistent (Many projects
force a given indentation style - we do not.). If you really need to make force a given indentation style - we do not.). If you really need to make
indentation changes (try to avoid this), separate them strictly from real indentation changes (try to avoid this), separate them strictly from real
changes. changes.
@ -253,7 +253,7 @@ keeping it as a logical unit that contains an individual change, even
if it spans multiple files. This makes reviewing your patches much easier if it spans multiple files. This makes reviewing your patches much easier
for us and greatly increases your chances of getting your patch applied. for us and greatly increases your chances of getting your patch applied.
Use the patcheck tool of FFmpeg to check your patch. Use the patcheck tool of Libav to check your patch.
The tool is located in the tools directory. The tool is located in the tools directory.
Run the regression tests before submitting a patch so that you can Run the regression tests before submitting a patch so that you can
@ -275,7 +275,7 @@ 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 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 incorporates the requests from the review. This process may go through
several iterations. Once your patch is deemed good enough, some developer several iterations. Once your patch is deemed good enough, some developer
will pick it up and commit it to the official FFmpeg tree. will pick it up and commit it to the official Libav tree.
Give us a few days to react. But if some time passes without reaction, 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. send a reminder by email. Your patch should eventually be dealt with.
@ -325,7 +325,7 @@ send a reminder by email. Your patch should eventually be dealt with.
@item @item
Is the patch a unified diff? Is the patch a unified diff?
@item @item
Is the patch against latest FFmpeg git master branch? Is the patch against latest Libav git master branch?
@item @item
Are you subscribed to ffmpeg-dev? Are you subscribed to ffmpeg-dev?
(the list is subscribers only due to spam) (the list is subscribers only due to spam)
@ -374,7 +374,7 @@ send a reminder by email. Your patch should eventually be dealt with.
patch easily? patch easily?
@item @item
If you added a new file, did you insert a license header? It should be If you added a new file, did you insert a license header? It should be
taken from FFmpeg, not randomly copied and pasted from somewhere else. taken from Libav, not randomly copied and pasted from somewhere else.
@item @item
You should maintain alphabetical order in alphabetically ordered lists as You should maintain alphabetical order in alphabetically ordered lists as
long as doing so does not break API/ABI compatibility. long as doing so does not break API/ABI compatibility.

@ -1,10 +1,10 @@
@chapter Encoders @chapter Encoders
@c man begin ENCODERS @c man begin ENCODERS
Encoders are configured elements in FFmpeg which allow the encoding of Encoders are configured elements in Libav which allow the encoding of
multimedia streams. multimedia streams.
When you configure your FFmpeg build, all the supported native encoders When you configure your Libav build, all the supported native encoders
are enabled by default. Encoders requiring an external library must be enabled are enabled by default. Encoders requiring an external library must be enabled
manually via the corresponding @code{--enable-lib} option. You can list all manually via the corresponding @code{--enable-lib} option. You can list all
available encoders using the configure option @code{--list-encoders}. available encoders using the configure option @code{--list-encoders}.

@ -1,7 +1,7 @@
@chapter Expression Evaluation @chapter Expression Evaluation
@c man begin EXPRESSION EVALUATION @c man begin EXPRESSION EVALUATION
When evaluating an arithemetic expression, FFmpeg uses an internal When evaluating an arithemetic expression, Libav uses an internal
formula evaluator, implemented through the @file{libavutil/eval.h} formula evaluator, implemented through the @file{libavutil/eval.h}
interface. interface.

@ -1,8 +1,8 @@
\input texinfo @c -*- texinfo -*- \input texinfo @c -*- texinfo -*-
@settitle FFmpeg FAQ @settitle Libav FAQ
@titlepage @titlepage
@center @titlefont{FFmpeg FAQ} @center @titlefont{Libav FAQ}
@end titlepage @end titlepage
@top @top
@ -11,33 +11,33 @@
@chapter General Questions @chapter General Questions
@section When will the next FFmpeg version be released? / Why are FFmpeg releases so few and far between? @section When will the next Libav version be released? / Why are Libav releases so few and far between?
Like most open source projects FFmpeg suffers from a certain lack of Like most open source projects Libav suffers from a certain lack of
manpower. For this reason the developers have to prioritize the work manpower. For this reason the developers have to prioritize the work
they do and putting out releases is not at the top of the list, fixing they do and putting out releases is not at the top of the list, fixing
bugs and reviewing patches takes precedence. Please don't complain or bugs and reviewing patches takes precedence. Please don't complain or
request more timely and/or frequent releases unless you are willing to request more timely and/or frequent releases unless you are willing to
help out creating them. help out creating them.
@section I have a problem with an old version of FFmpeg; where should I report it? @section I have a problem with an old version of Libav; where should I report it?
Nowhere. We do not support old FFmpeg versions in any way, we simply lack Nowhere. We do not support old Libav versions in any way, we simply lack
the time, motivation and manpower to do so. If you have a problem with an the time, motivation and manpower to do so. If you have a problem with an
old version of FFmpeg, upgrade to the latest Subversion snapshot. If you old version of Libav, upgrade to the latest Subversion snapshot. If you
still experience the problem, then you can report it according to the still experience the problem, then you can report it according to the
guidelines in @url{http://libav.org/bugreports.html}. guidelines in @url{http://libav.org/bugreports.html}.
@section Why doesn't FFmpeg support feature [xyz]? @section Why doesn't Libav support feature [xyz]?
Because no one has taken on that task yet. FFmpeg development is Because no one has taken on that task yet. Libav development is
driven by the tasks that are important to the individual developers. driven by the tasks that are important to the individual developers.
If there is a feature that is important to you, the best way to get If there is a feature that is important to you, the best way to get
it implemented is to undertake the task yourself or sponsor a developer. it implemented is to undertake the task yourself or sponsor a developer.
@section FFmpeg does not support codec XXX. Can you include a Windows DLL loader to support it? @section Libav does not support codec XXX. Can you include a Windows DLL loader to support it?
No. Windows DLLs are not portable, bloated and often slow. No. Windows DLLs are not portable, bloated and often slow.
Moreover FFmpeg strives to support all codecs natively. Moreover Libav strives to support all codecs natively.
A DLL loader is not conducive to that goal. A DLL loader is not conducive to that goal.
@section My bug report/mail to libav-devel/user has not received any replies. @section My bug report/mail to libav-devel/user has not received any replies.
@ -55,10 +55,10 @@ libav* from another application.
@item You speak about a video having problems on playback but @item You speak about a video having problems on playback but
not what you use to play it. not what you use to play it.
@item We have no faint clue what you are talking about besides @item We have no faint clue what you are talking about besides
that it is related to FFmpeg. that it is related to Libav.
@end itemize @end itemize
@section Is there a forum for FFmpeg? I do not like mailing lists. @section Is there a forum for Libav? I do not like mailing lists.
You may view our mailing lists with a more forum-alike look here: You may view our mailing lists with a more forum-alike look here:
@url{http://dir.gmane.org/gmane.comp.video.ffmpeg.user}, @url{http://dir.gmane.org/gmane.comp.video.ffmpeg.user},
@ -272,7 +272,7 @@ material, and try '-top 0/1' if the result looks really messed-up.
@section How can I read DirectShow files? @section How can I read DirectShow files?
If you have built FFmpeg with @code{./configure --enable-avisynth} If you have built Libav with @code{./configure --enable-avisynth}
(only possible on MinGW/Cygwin platforms), (only possible on MinGW/Cygwin platforms),
then you may use any file that DirectShow can read as input. then you may use any file that DirectShow can read as input.
@ -368,11 +368,11 @@ examining all of the vbv_delay values and making complicated computations."
@chapter Development @chapter Development
@section Are there examples illustrating how to use the FFmpeg libraries, particularly libavcodec and libavformat? @section Are there examples illustrating how to use the Libav libraries, particularly libavcodec and libavformat?
Yes. Read the Developers Guide of the FFmpeg documentation. Alternatively, Yes. Read the Developers Guide of the Libav documentation. Alternatively,
examine the source code for one of the many open source projects that examine the source code for one of the many open source projects that
already incorporate FFmpeg at (@url{projects.html}). already incorporate Libav at (@url{projects.html}).
@section Can you support my C compiler XXX? @section Can you support my C compiler XXX?
@ -383,14 +383,14 @@ with @code{#ifdef}s related to the compiler.
@section Is Microsoft Visual C++ supported? @section Is Microsoft Visual C++ supported?
No. Microsoft Visual C++ is not compliant to the C99 standard and does No. Microsoft Visual C++ is not compliant to the C99 standard and does
not - among other things - support the inline assembly used in FFmpeg. not - among other things - support the inline assembly used in Libav.
If you wish to use MSVC++ for your If you wish to use MSVC++ for your
project then you can link the MSVC++ code with libav* as long as project then you can link the MSVC++ code with libav* as long as
you compile the latter with a working C compiler. For more information, see you compile the latter with a working C compiler. For more information, see
the @emph{Microsoft Visual C++ compatibility} section in the FFmpeg the @emph{Microsoft Visual C++ compatibility} section in the Libav
documentation. documentation.
There have been efforts to make FFmpeg compatible with MSVC++ in the There have been efforts to make Libav compatible with MSVC++ in the
past. However, they have all been rejected as too intrusive, especially past. However, they have all been rejected as too intrusive, especially
since MinGW does the job adequately. None of the core developers since MinGW does the job adequately. None of the core developers
work with MSVC++ and thus this item is low priority. Should you find work with MSVC++ and thus this item is low priority. Should you find
@ -398,13 +398,13 @@ the silver bullet that solves this problem, feel free to shoot it at us.
We strongly recommend you to move over from MSVC++ to MinGW tools. We strongly recommend you to move over from MSVC++ to MinGW tools.
@section Can I use FFmpeg or libavcodec under Windows? @section Can I use Libav or libavcodec under Windows?
Yes, but the Cygwin or MinGW tools @emph{must} be used to compile FFmpeg. Yes, but the Cygwin or MinGW tools @emph{must} be used to compile Libav.
Read the @emph{Windows} section in the FFmpeg documentation to find more Read the @emph{Windows} section in the Libav documentation to find more
information. information.
To get help and instructions for building FFmpeg under Windows, check out To get help and instructions for building Libav under Windows, check out
the FFmpeg Windows Help Forum at the FFmpeg Windows Help Forum at
@url{http://ffmpeg.arrozcru.org/}. @url{http://ffmpeg.arrozcru.org/}.
@ -414,7 +414,7 @@ No. These tools are too bloated and they complicate the build.
@section Why not rewrite ffmpeg in object-oriented C++? @section Why not rewrite ffmpeg in object-oriented C++?
FFmpeg is already organized in a highly modular manner and does not need to Libav is already organized in a highly modular manner and does not need to
be rewritten in a formal object language. Further, many of the developers be rewritten in a formal object language. Further, many of the developers
favor straight C; it works for them. For more arguments on this matter, favor straight C; it works for them. For more arguments on this matter,
read "Programming Religion" at (@url{http://www.tux.org/lkml/#s15}). read "Programming Religion" at (@url{http://www.tux.org/lkml/#s15}).
@ -441,16 +441,16 @@ the compilation failure then you are probably not qualified for this.
@section I'm using libavcodec from within my C++ application but the linker complains about missing symbols which seem to be available. @section I'm using libavcodec from within my C++ application but the linker complains about missing symbols which seem to be available.
FFmpeg is a pure C project, so to use the libraries within your C++ application Libav is a pure C project, so to use the libraries within your C++ application
you need to explicitly state that you are using a C library. You can do this by you need to explicitly state that you are using a C library. You can do this by
encompassing your FFmpeg includes using @code{extern "C"}. encompassing your Libav includes using @code{extern "C"}.
See @url{http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html#faq-32.3} See @url{http://www.parashift.com/c++-faq-lite/mixing-c-and-cpp.html#faq-32.3}
@section I have a file in memory / a API different from *open/*read/ libc how do I use it with libavformat? @section I have a file in memory / a API different from *open/*read/ libc how do I use it with libavformat?
You have to implement a URLProtocol, see @file{libavformat/file.c} in You have to implement a URLProtocol, see @file{libavformat/file.c} in
FFmpeg and @file{libmpdemux/demux_lavf.c} in MPlayer sources. Libav and @file{libmpdemux/demux_lavf.c} in MPlayer sources.
@section I get "No compatible shell script interpreter found." in MSys. @section I get "No compatible shell script interpreter found." in MSys.

@ -735,7 +735,7 @@ A preset file contains a sequence of @var{option}=@var{value} pairs,
one for each line, specifying a sequence of options which would be one for each line, specifying a sequence of options which would be
awkward to specify on the command line. Lines starting with the hash awkward to specify on the command line. Lines starting with the hash
('#') character are ignored and are used to provide comments. Check ('#') character are ignored and are used to provide comments. Check
the @file{ffpresets} directory in the FFmpeg source tree for examples. the @file{ffpresets} directory in the Libav source tree for examples.
Preset files are specified with the @code{vpre}, @code{apre}, Preset files are specified with the @code{vpre}, @code{apre},
@code{spre}, and @code{fpre} options. The @code{fpre} option takes the @code{spre}, and @code{fpre} options. The @code{fpre} option takes the
@ -997,11 +997,11 @@ file to which you want to add them.
@settitle FFmpeg video converter @settitle FFmpeg video converter
@c man begin SEEALSO @c man begin SEEALSO
ffplay(1), ffprobe(1), ffserver(1) and the FFmpeg HTML documentation ffplay(1), ffprobe(1), ffserver(1) and the Libav HTML documentation
@c man end @c man end
@c man begin AUTHORS @c man begin AUTHORS
The FFmpeg developers The Libav developers
@c man end @c man end
@end ignore @end ignore

@ -20,9 +20,9 @@ ffplay [options] @file{input_file}
@chapter Description @chapter Description
@c man begin DESCRIPTION @c man begin DESCRIPTION
FFplay is a very simple and portable media player using the FFmpeg FFplay is a very simple and portable media player using the Libav
libraries and the SDL library. It is mostly used as a testbed for the libraries and the SDL library. It is mostly used as a testbed for the
various FFmpeg APIs. various Libav APIs.
@c man end @c man end
@chapter Options @chapter Options
@ -169,11 +169,11 @@ Seek to percentage in file corresponding to fraction of width.
@settitle FFplay media player @settitle FFplay media player
@c man begin SEEALSO @c man begin SEEALSO
ffmpeg(1), ffprobe(1), ffserver(1) and the FFmpeg HTML documentation ffmpeg(1), ffprobe(1), ffserver(1) and the Libav HTML documentation
@c man end @c man end
@c man begin AUTHORS @c man begin AUTHORS
The FFmpeg developers The Libav developers
@c man end @c man end
@end ignore @end ignore

@ -122,11 +122,11 @@ with name "STREAM".
@settitle FFprobe media prober @settitle FFprobe media prober
@c man begin SEEALSO @c man begin SEEALSO
ffmpeg(1), ffplay(1), ffserver(1) and the FFmpeg HTML documentation ffmpeg(1), ffplay(1), ffserver(1) and the Libav HTML documentation
@c man end @c man end
@c man begin AUTHORS @c man begin AUTHORS
The FFmpeg developers The Libav developers
@c man end @c man end
@end ignore @end ignore

@ -266,11 +266,11 @@ rather than as a daemon.
@c man begin SEEALSO @c man begin SEEALSO
ffmpeg(1), ffplay(1), ffprobe(1), the @file{ffmpeg/doc/ffserver.conf} ffmpeg(1), ffplay(1), ffprobe(1), the @file{ffmpeg/doc/ffserver.conf}
example and the FFmpeg HTML documentation example and the Libav HTML documentation
@c man end @c man end
@c man begin AUTHORS @c man begin AUTHORS
The FFmpeg developers The Libav developers
@c man end @c man end
@end ignore @end ignore

@ -88,6 +88,6 @@ can be disabled setting the environment variable
@env{FFMPEG_FORCE_NOCOLOR} or @env{NO_COLOR}, or can be forced setting @env{FFMPEG_FORCE_NOCOLOR} or @env{NO_COLOR}, or can be forced setting
the environment variable @env{FFMPEG_FORCE_COLOR}. the environment variable @env{FFMPEG_FORCE_COLOR}.
The use of the environment variable @env{NO_COLOR} is deprecated and The use of the environment variable @env{NO_COLOR} is deprecated and
will be dropped in a following FFmpeg version. will be dropped in a following Libav version.
@end table @end table

@ -92,7 +92,7 @@ Follows a BNF description for the filtergraph syntax:
@chapter Audio Filters @chapter Audio Filters
@c man begin AUDIO FILTERS @c man begin AUDIO FILTERS
When you configure your FFmpeg build, you can disable any of the When you configure your Libav build, you can disable any of the
existing filters using --disable-filters. existing filters using --disable-filters.
The configure output will show the audio filters included in your The configure output will show the audio filters included in your
build. build.
@ -155,7 +155,7 @@ tools.
@chapter Video Filters @chapter Video Filters
@c man begin VIDEO FILTERS @c man begin VIDEO FILTERS
When you configure your FFmpeg build, you can disable any of the When you configure your Libav build, you can disable any of the
existing filters using --disable-filters. existing filters using --disable-filters.
The configure output will show the video filters included in your The configure output will show the video filters included in your
build. build.
@ -386,7 +386,7 @@ format=yuv420p:yuv444p:yuv410p
Apply a frei0r effect to the input video. Apply a frei0r effect to the input video.
To enable compilation of this filter you need to install the frei0r To enable compilation of this filter you need to install the frei0r
header and configure FFmpeg with --enable-frei0r. header and configure Libav with --enable-frei0r.
The filter supports the syntax: The filter supports the syntax:
@example @example
@ -524,7 +524,7 @@ Pass the video source unchanged to the output.
Apply video transform using libopencv. Apply video transform using libopencv.
To enable this filter install libopencv library and headers and To enable this filter install libopencv library and headers and
configure FFmpeg with --enable-libopencv. configure Libav with --enable-libopencv.
The filter takes the parameters: @var{filter_name}@{:=@}@var{filter_params}. The filter takes the parameters: @var{filter_name}@{:=@}@var{filter_params}.
@ -1164,7 +1164,7 @@ timebase. The expression can contain the constants "PI", "E", "PHI",
Provide a frei0r source. Provide a frei0r source.
To enable compilation of this filter you need to install the frei0r To enable compilation of this filter you need to install the frei0r
header and configure FFmpeg with --enable-frei0r. header and configure Libav with --enable-frei0r.
The source supports the syntax: The source supports the syntax:
@example @example

@ -11,13 +11,13 @@
@chapter external libraries @chapter external libraries
FFmpeg can be hooked up with a number of external libraries to add support Libav can be hooked up with a number of external libraries to add support
for more formats. None of them are used by default, their use has to be for more formats. None of them are used by default, their use has to be
explicitly requested by passing the appropriate flags to @file{./configure}. explicitly requested by passing the appropriate flags to @file{./configure}.
@section OpenCORE AMR @section OpenCORE AMR
FFmpeg can make use of the OpenCORE libraries for AMR-NB Libav can make use of the OpenCORE libraries for AMR-NB
decoding/encoding and AMR-WB decoding. decoding/encoding and AMR-WB decoding.
Go to @url{http://sourceforge.net/projects/opencore-amr/} and follow the instructions for Go to @url{http://sourceforge.net/projects/opencore-amr/} and follow the instructions for
@ -27,7 +27,7 @@ installing the libraries. Then pass @code{--enable-libopencore-amrnb} and/or
Note that OpenCORE is under the Apache License 2.0 (see Note that OpenCORE is under the Apache License 2.0 (see
@url{http://www.apache.org/licenses/LICENSE-2.0} for details), which is @url{http://www.apache.org/licenses/LICENSE-2.0} for details), which is
incompatible with the LGPL version 2.1 and GPL version 2. You have to incompatible with the LGPL version 2.1 and GPL version 2. You have to
upgrade FFmpeg's license to LGPL version 3 (or if you have enabled upgrade Libav's license to LGPL version 3 (or if you have enabled
GPL components, GPL version 3) to use it. GPL components, GPL version 3) to use it.
@ -37,7 +37,7 @@ You can use the @code{-formats} and @code{-codecs} options to have an exhaustive
@section File Formats @section File Formats
FFmpeg supports the following file formats through the @code{libavformat} Libav supports the following file formats through the @code{libavformat}
library: library:
@multitable @columnfractions .4 .1 .1 .4 @multitable @columnfractions .4 .1 .1 .4
@ -751,18 +751,18 @@ Using a cross-compiler is preferred for various reasons.
@subsection DJGPP @subsection DJGPP
FFmpeg cannot be compiled because of broken system headers, add Libav cannot be compiled because of broken system headers, add
@code{--extra-cflags=-U__STRICT_ANSI__} to the configure options as a @code{--extra-cflags=-U__STRICT_ANSI__} to the configure options as a
workaround. workaround.
@section OS/2 @section OS/2
For information about compiling FFmpeg on OS/2 see For information about compiling Libav on OS/2 see
@url{http://www.edm2.com/index.php/FFmpeg}. @url{http://www.edm2.com/index.php/FFmpeg}.
@section Unix-like @section Unix-like
Some parts of FFmpeg cannot be built with version 2.15 of the GNU Some parts of Libav cannot be built with version 2.15 of the GNU
assembler which is still provided by a few AMD64 distributions. To assembler which is still provided by a few AMD64 distributions. To
make sure your compiler really uses the required version of gas make sure your compiler really uses the required version of gas
after a binutils upgrade, run: after a binutils upgrade, run:
@ -777,7 +777,7 @@ to configure.
@subsection BSD @subsection BSD
BSD make will not build FFmpeg, you need to install and use GNU Make BSD make will not build Libav, you need to install and use GNU Make
(@file{gmake}). (@file{gmake}).
@subsubsection FreeBSD @subsubsection FreeBSD
@ -790,7 +790,7 @@ getting the system headers fixed.
@subsection (Open)Solaris @subsection (Open)Solaris
GNU Make is required to build FFmpeg, so you have to invoke (@file{gmake}), GNU Make is required to build Libav, so you have to invoke (@file{gmake}),
standard Solaris Make will not work. When building with a non-c99 front-end standard Solaris Make will not work. When building with a non-c99 front-end
(gcc, generic suncc) add either @code{--extra-libs=/usr/lib/values-xpg6.o} (gcc, generic suncc) add either @code{--extra-libs=/usr/lib/values-xpg6.o}
or @code{--extra-libs=/usr/lib/64/values-xpg6.o} to the configure options or @code{--extra-libs=/usr/lib/64/values-xpg6.o} to the configure options
@ -808,22 +808,22 @@ bash ./configure
MacOS X on PowerPC or ARM (iPhone) requires a preprocessor from MacOS X on PowerPC or ARM (iPhone) requires a preprocessor from
@url{http://github.com/yuvi/gas-preprocessor} to build the optimized @url{http://github.com/yuvi/gas-preprocessor} to build the optimized
assembler functions. Just download the Perl script and put it somewhere assembler functions. Just download the Perl script and put it somewhere
in your PATH, FFmpeg's configure will pick it up automatically. in your PATH, Libav's configure will pick it up automatically.
@section Windows @section Windows
To get help and instructions for building FFmpeg under Windows, check out To get help and instructions for building Libav under Windows, check out
the FFmpeg Windows Help Forum at the FFmpeg Windows Help Forum at
@url{http://ffmpeg.arrozcru.org/}. @url{http://ffmpeg.arrozcru.org/}.
@subsection Native Windows compilation @subsection Native Windows compilation
FFmpeg can be built to run natively on Windows using the MinGW tools. Install Libav can be built to run natively on Windows using the MinGW tools. Install
the latest versions of MSYS and MinGW from @url{http://www.mingw.org/}. the latest versions of MSYS and MinGW from @url{http://www.mingw.org/}.
You can find detailed installation You can find detailed installation
instructions in the download section and the FAQ. instructions in the download section and the FAQ.
FFmpeg does not build out-of-the-box with the packages the automated MinGW Libav does not build out-of-the-box with the packages the automated MinGW
installer provides. It also requires coreutils to be installed and many other installer provides. It also requires coreutils to be installed and many other
packages updated to the latest version. The minimum version for some packages packages updated to the latest version. The minimum version for some packages
are listed below: are listed below:
@ -835,7 +835,7 @@ are listed below:
@item mingw-runtime 3.15 @item mingw-runtime 3.15
@end itemize @end itemize
FFmpeg automatically passes @code{-fno-common} to the compiler to work around Libav automatically passes @code{-fno-common} to the compiler to work around
a GCC bug (see @url{http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37216}). a GCC bug (see @url{http://gcc.gnu.org/bugzilla/show_bug.cgi?id=37216}).
Within the MSYS shell, configure and make with: Within the MSYS shell, configure and make with:
@ -866,14 +866,14 @@ Edit the @file{bin/sdl-config} script so that it points to the correct prefix
where SDL was installed. Verify that @file{sdl-config} can be launched from where SDL was installed. Verify that @file{sdl-config} can be launched from
the MSYS command line. the MSYS command line.
@item By using @code{./configure --enable-shared} when configuring FFmpeg, @item By using @code{./configure --enable-shared} when configuring Libav,
you can build libavutil, libavcodec and libavformat as DLLs. you can build libavutil, libavcodec and libavformat as DLLs.
@end itemize @end itemize
@subsection Microsoft Visual C++ compatibility @subsection Microsoft Visual C++ compatibility
As stated in the FAQ, FFmpeg will not compile under MSVC++. However, if you As stated in the FAQ, Libav will not compile under MSVC++. However, if you
want to use the libav* libraries in your own applications, you can still want to use the libav* libraries in your own applications, you can still
compile those applications using MSVC++. But the libav* libraries you link compile those applications using MSVC++. But the libav* libraries you link
to @emph{must} be built with MinGW. However, you will not be able to debug to @emph{must} be built with MinGW. However, you will not be able to debug
@ -881,13 +881,13 @@ inside the libav* libraries, since MSVC++ does not recognize the debug
symbols generated by GCC. symbols generated by GCC.
We strongly recommend you to move over from MSVC++ to MinGW tools. We strongly recommend you to move over from MSVC++ to MinGW tools.
This description of how to use the FFmpeg libraries with MSVC++ is based on This description of how to use the Libav libraries with MSVC++ is based on
Microsoft Visual C++ 2005 Express Edition. If you have a different version, Microsoft Visual C++ 2005 Express Edition. If you have a different version,
you might have to modify the procedures slightly. you might have to modify the procedures slightly.
@subsubsection Using static libraries @subsubsection Using static libraries
Assuming you have just built and installed FFmpeg in @file{/usr/local}. Assuming you have just built and installed Libav in @file{/usr/local}.
@enumerate @enumerate
@ -898,13 +898,13 @@ Application Wizard, uncheck the "Precompiled headers" option.
@item Write the source code for your application, or, for testing, just @item Write the source code for your application, or, for testing, just
copy the code from an existing sample application into the source file copy the code from an existing sample application into the source file
that MSVC++ has already created for you. For example, you can copy that MSVC++ has already created for you. For example, you can copy
@file{libavformat/output-example.c} from the FFmpeg distribution. @file{libavformat/output-example.c} from the Libav distribution.
@item Open the "Project / Properties" dialog box. In the "Configuration" @item Open the "Project / Properties" dialog box. In the "Configuration"
combo box, select "All Configurations" so that the changes you make will combo box, select "All Configurations" so that the changes you make will
affect both debug and release builds. In the tree view on the left hand affect both debug and release builds. In the tree view on the left hand
side, select "C/C++ / General", then edit the "Additional Include side, select "C/C++ / General", then edit the "Additional Include
Directories" setting to contain the path where the FFmpeg includes were Directories" setting to contain the path where the Libav includes were
installed (i.e. @file{c:\msys\1.0\local\include}). installed (i.e. @file{c:\msys\1.0\local\include}).
Do not add MinGW's include directory here, or the include files will Do not add MinGW's include directory here, or the include files will
conflict with MSVC's. conflict with MSVC's.
@ -912,7 +912,7 @@ conflict with MSVC's.
@item Still in the "Project / Properties" dialog box, select @item Still in the "Project / Properties" dialog box, select
"Linker / General" from the tree view and edit the "Linker / General" from the tree view and edit the
"Additional Library Directories" setting to contain the @file{lib} "Additional Library Directories" setting to contain the @file{lib}
directory where FFmpeg was installed (i.e. @file{c:\msys\1.0\local\lib}), directory where Libav was installed (i.e. @file{c:\msys\1.0\local\lib}),
the directory where MinGW libs are installed (i.e. @file{c:\mingw\lib}), the directory where MinGW libs are installed (i.e. @file{c:\mingw\lib}),
and the directory where MinGW's GCC libs are installed and the directory where MinGW's GCC libs are installed
(i.e. @file{C:\mingw\lib\gcc\mingw32\4.2.1-sjlj}). Then select (i.e. @file{C:\mingw\lib\gcc\mingw32\4.2.1-sjlj}). Then select
@ -929,13 +929,13 @@ set to "Multi-threaded DLL".
@item Click "OK" to close the "Project / Properties" dialog box. @item Click "OK" to close the "Project / Properties" dialog box.
@item MSVC++ lacks some C99 header files that are fundamental for FFmpeg. @item MSVC++ lacks some C99 header files that are fundamental for Libav.
Get msinttypes from @url{http://code.google.com/p/msinttypes/downloads/list} Get msinttypes from @url{http://code.google.com/p/msinttypes/downloads/list}
and install it in MSVC++'s include directory and install it in MSVC++'s include directory
(i.e. @file{C:\Program Files\Microsoft Visual Studio 8\VC\include}). (i.e. @file{C:\Program Files\Microsoft Visual Studio 8\VC\include}).
@item MSVC++ also does not understand the @code{inline} keyword used by @item MSVC++ also does not understand the @code{inline} keyword used by
FFmpeg, so you must add this line before @code{#include}ing libav*: Libav, so you must add this line before @code{#include}ing libav*:
@example @example
#define inline _inline #define inline _inline
@end example @end example
@ -968,10 +968,10 @@ and run @file{c:\msys\1.0\msys.bat} from there.
@item Within the MSYS shell, run @code{lib.exe}. If you get a help message @item Within the MSYS shell, run @code{lib.exe}. If you get a help message
from @file{Microsoft (R) Library Manager}, this means your environment from @file{Microsoft (R) Library Manager}, this means your environment
variables are set up correctly, the @file{Microsoft (R) Library Manager} variables are set up correctly, the @file{Microsoft (R) Library Manager}
is on the path and will be used by FFmpeg to create is on the path and will be used by Libav to create
MSVC++-compatible import libraries. MSVC++-compatible import libraries.
@item Build FFmpeg with @item Build Libav with
@example @example
./configure --enable-shared --enable-memalign-hack ./configure --enable-shared --enable-memalign-hack
@ -1000,7 +1000,7 @@ of DLL files, but the ones that are actually used to run your application
are the ones with a major version number in their filenames are the ones with a major version number in their filenames
(i.e. @file{avcodec-51.dll}). (i.e. @file{avcodec-51.dll}).
FFmpeg headers do not declare global data for Windows DLLs through the usual Libav headers do not declare global data for Windows DLLs through the usual
dllexport/dllimport interface. Such data will be exported properly while dllexport/dllimport interface. Such data will be exported properly while
building, but to use them in your MSVC++ code you will have to edit the building, but to use them in your MSVC++ code you will have to edit the
appropriate headers and mark the data as dllimport. For example, in appropriate headers and mark the data as dllimport. For example, in
@ -1014,14 +1014,14 @@ extern __declspec(dllimport) const AVPixFmtDescriptor av_pix_fmt_descriptors[];
You must use the MinGW cross compilation tools available at You must use the MinGW cross compilation tools available at
@url{http://www.mingw.org/}. @url{http://www.mingw.org/}.
Then configure FFmpeg with the following options: Then configure Libav with the following options:
@example @example
./configure --target-os=mingw32 --cross-prefix=i386-mingw32msvc- ./configure --target-os=mingw32 --cross-prefix=i386-mingw32msvc-
@end example @end example
(you can change the cross-prefix according to the prefix chosen for the (you can change the cross-prefix according to the prefix chosen for the
MinGW tools). MinGW tools).
Then you can easily test FFmpeg with Wine Then you can easily test Libav with Wine
(@url{http://www.winehq.com/}). (@url{http://www.winehq.com/}).
@subsection Compilation under Cygwin @subsection Compilation under Cygwin
@ -1055,7 +1055,7 @@ shared libraries:
./configure --enable-shared --disable-static --extra-cflags=-fno-reorder-functions ./configure --enable-shared --disable-static --extra-cflags=-fno-reorder-functions
@end example @end example
If you want to build FFmpeg with additional libraries, download Cygwin If you want to build Libav with additional libraries, download Cygwin
"Devel" packages for Ogg and Vorbis from any Cygwin packages repository: "Devel" packages for Ogg and Vorbis from any Cygwin packages repository:
@example @example
libogg-devel, libvorbis-devel libogg-devel, libvorbis-devel

@ -28,9 +28,9 @@ Consult these resources whenever you have problems, they are quite exhaustive.
You do not need a special username or password. You do not need a special username or password.
All you need is to provide a ssh public key to the Git server admin. All you need is to provide a ssh public key to the Git server admin.
What follows now is a basic introduction to Git and some FFmpeg-specific What follows now is a basic introduction to Git and some Libav-specific
guidelines. Read it at least once, if you are granted commit privileges to the guidelines. Read it at least once, if you are granted commit privileges to the
FFmpeg project you are expected to be familiar with these rules. Libav project you are expected to be familiar with these rules.
@ -46,11 +46,11 @@ I. BASICS:
git clone git://git.libav.org/libav.git <target> git clone git://git.libav.org/libav.git <target>
This will put the FFmpeg sources into the directory <target>. This will put the Libav sources into the directory <target>.
git clone git@git.libav.org:libav.git <target> git clone git@git.libav.org:libav.git <target>
This will put the FFmpeg sources into the directory <target> and let This will put the Libav sources into the directory <target> and let
you push back your changes to the remote repository. you push back your changes to the remote repository.
@ -72,7 +72,7 @@ I. BASICS:
fetches the changes from the main repository and replays your local commits fetches the changes from the main repository and replays your local commits
over it. This is required to keep all your local changes at the top of over it. This is required to keep all your local changes at the top of
FFmpeg's master tree. The master tree will reject pushes with merge commits. Libav's master tree. The master tree will reject pushes with merge commits.
3. Adding/removing files/directories: 3. Adding/removing files/directories:

@ -1,10 +1,10 @@
@chapter Input Devices @chapter Input Devices
@c man begin INPUT DEVICES @c man begin INPUT DEVICES
Input devices are configured elements in FFmpeg which allow to access Input devices are configured elements in Libav which allow to access
the data coming from a multimedia device attached to your system. the data coming from a multimedia device attached to your system.
When you configure your FFmpeg build, all the supported input devices When you configure your Libav build, all the supported input devices
are enabled by default. You can list all available ones using the are enabled by default. You can list all available ones using the
configure option "--list-indevs". configure option "--list-indevs".
@ -70,7 +70,7 @@ A JACK input device creates one or more JACK writable clients, one for
each audio channel, with name @var{client_name}:input_@var{N}, where each audio channel, with name @var{client_name}:input_@var{N}, where
@var{client_name} is the name provided by the application, and @var{N} @var{client_name} is the name provided by the application, and @var{N}
is a number which identifies the channel. is a number which identifies the channel.
Each writable client will send the acquired data to the FFmpeg input Each writable client will send the acquired data to the Libav input
device. device.
Once you have created one or more JACK readable clients, you need to Once you have created one or more JACK readable clients, you need to

@ -1,11 +1,11 @@
FFmpeg's bug/patch/feature request tracker manual Libav's bug/patch/feature request tracker manual
================================================= ================================================
NOTE: This is a draft. NOTE: This is a draft.
Overview: Overview:
--------- ---------
FFmpeg uses Roundup for tracking issues, new issues and changes to Libav uses Roundup for tracking issues, new issues and changes to
existing issues can be done through a web interface and through email. existing issues can be done through a web interface and through email.
It is possible to subscribe to individual issues by adding yourself to the It is possible to subscribe to individual issues by adding yourself to the
nosy list or to subscribe to the ffmpeg-issues mailing list which receives nosy list or to subscribe to the ffmpeg-issues mailing list which receives
@ -60,7 +60,7 @@ critical
No feature request can be critical. No feature request can be critical.
important important
Bugs which make FFmpeg unusable for a significant number of users, and Bugs which make Libav unusable for a significant number of users, and
patches fixing them. patches fixing them.
Examples here might be completely broken MPEG-4 decoding or a build issue Examples here might be completely broken MPEG-4 decoding or a build issue
on Linux. on Linux.
@ -81,7 +81,7 @@ minor
wish wish
Something that is desirable to have but that there is no urgency at Something that is desirable to have but that there is no urgency at
all to implement, e.g. something completely cosmetic like a website all to implement, e.g. something completely cosmetic like a website
restyle or a personalized doxy template or the FFmpeg logo. restyle or a personalized doxy template or the Libav logo.
This priority is not valid for bugs. This priority is not valid for bugs.

@ -11,10 +11,10 @@
@chapter Introduction @chapter Introduction
Libavfilter is the filtering API of FFmpeg. It is the substitute of the Libavfilter is the filtering API of Libav. It is the substitute of the
now deprecated 'vhooks' and started as a Google Summer of Code project. now deprecated 'vhooks' and started as a Google Summer of Code project.
Integrating libavfilter into the main FFmpeg repository is a work in Integrating libavfilter into the main Libav repository is a work in
progress. If you wish to try the unfinished development code of progress. If you wish to try the unfinished development code of
libavfilter then check it out from the libavfilter repository into libavfilter then check it out from the libavfilter repository into
some directory of your choice by: some directory of your choice by:
@ -74,7 +74,7 @@ not have video output.
@chapter graph2dot @chapter graph2dot
The @file{graph2dot} program included in the FFmpeg @file{tools} The @file{graph2dot} program included in the Libav @file{tools}
directory can be used to parse a filter graph description and issue a directory can be used to parse a filter graph description and issue a
corresponding textual representation in the dot language. corresponding textual representation in the dot language.

@ -1,7 +1,7 @@
@chapter Metadata @chapter Metadata
@c man begin METADATA @c man begin METADATA
FFmpeg is able to dump metadata from media files into a simple UTF-8-encoded Libav is able to dump metadata from media files into a simple UTF-8-encoded
INI-like text file and then load it back using the metadata muxer/demuxer. INI-like text file and then load it back using the metadata muxer/demuxer.
The file format is as follows: The file format is as follows:
@ -53,7 +53,7 @@ A ffmetadata file might look like this:
;FFMETADATA1 ;FFMETADATA1
title=bike\\shed title=bike\\shed
;this is a comment ;this is a comment
artist=FFmpeg troll team artist=Libav troll team
[CHAPTER] [CHAPTER]
TIMEBASE=1/1000 TIMEBASE=1/1000

@ -1,7 +1,7 @@
FFmpeg multithreading methods Libav multithreading methods
============================================== ==============================================
FFmpeg provides two methods for multithreading codecs. Libav provides two methods for multithreading codecs.
Slice threading decodes multiple parts of a frame at the same time, using Slice threading decodes multiple parts of a frame at the same time, using
AVCodecContext execute() and execute2(). AVCodecContext execute() and execute2().

@ -1,10 +1,10 @@
@chapter Muxers @chapter Muxers
@c man begin MUXERS @c man begin MUXERS
Muxers are configured elements in FFmpeg which allow writing Muxers are configured elements in Libav which allow writing
multimedia streams to a particular type of file. multimedia streams to a particular type of file.
When you configure your FFmpeg build, all the supported muxers When you configure your Libav build, all the supported muxers
are enabled by default. You can list all available muxers using the are enabled by default. You can list all available muxers using the
configure option @code{--list-muxers}. configure option @code{--list-muxers}.

@ -17,7 +17,7 @@ Understanding these overoptimized functions:
As many functions tend to be a bit difficult to understand because As many functions tend to be a bit difficult to understand because
of optimizations, it can be hard to optimize them further, or write of optimizations, it can be hard to optimize them further, or write
architecture-specific versions. It is recommended to look at older architecture-specific versions. It is recommended to look at older
revisions of the interesting files (web frontends for the various FFmpeg revisions of the interesting files (web frontends for the various Libav
branches are listed at http://libav.org/download.html). branches are listed at http://libav.org/download.html).
Alternatively, look into the other architecture-specific versions in Alternatively, look into the other architecture-specific versions in
the x86/, ppc/, alpha/ subdirectories. Even if you don't exactly the x86/, ppc/, alpha/ subdirectories. Even if you don't exactly
@ -201,7 +201,7 @@ Inline asm vs. external asm
--------------------------- ---------------------------
Both inline asm (__asm__("..") in a .c file, handled by a compiler such as gcc) Both inline asm (__asm__("..") in a .c file, handled by a compiler such as gcc)
and external asm (.s or .asm files, handled by an assembler such as yasm/nasm) and external asm (.s or .asm files, handled by an assembler such as yasm/nasm)
are accepted in FFmpeg. Which one to use differs per specific case. are accepted in Libav. Which one to use differs per specific case.
- if your code is intended to be inlined in a C function, inline asm is always - if your code is intended to be inlined in a C function, inline asm is always
better, because external asm cannot be inlined better, because external asm cannot be inlined

@ -1,10 +1,10 @@
@chapter Output Devices @chapter Output Devices
@c man begin OUTPUT DEVICES @c man begin OUTPUT DEVICES
Output devices are configured elements in FFmpeg which allow to write Output devices are configured elements in Libav which allow to write
multimedia data to an output device attached to your system. multimedia data to an output device attached to your system.
When you configure your FFmpeg build, all the supported output devices When you configure your Libav build, all the supported output devices
are enabled by default. You can list all available ones using the are enabled by default. You can list all available ones using the
configure option "--list-outdevs". configure option "--list-outdevs".

@ -1,10 +1,10 @@
@chapter Protocols @chapter Protocols
@c man begin PROTOCOLS @c man begin PROTOCOLS
Protocols are configured elements in FFmpeg which allow to access Protocols are configured elements in Libav which allow to access
resources which require the use of a particular protocol. resources which require the use of a particular protocol.
When you configure your FFmpeg build, all the supported protocols are When you configure your Libav build, all the supported protocols are
enabled by default. You can list all available ones using the enabled by default. You can list all available ones using the
configure option "--list-protocols". configure option "--list-protocols".

@ -8,9 +8,9 @@ it's a little late for this year's soc (2006).
The Goal: The Goal:
Our goal in respect to soc is and must be of course exactly one thing and Our goal in respect to soc is and must be of course exactly one thing and
that is to improve FFmpeg, to reach this goal, code must that is to improve Libav, to reach this goal, code must
* conform to the development policy and patch submission guidelines * conform to the development policy and patch submission guidelines
* must improve FFmpeg somehow (faster, smaller, "better", * must improve Libav somehow (faster, smaller, "better",
more codecs supported, fewer bugs, cleaner, ...) more codecs supported, fewer bugs, cleaner, ...)
for mentors and other developers to help students to reach that goal it is for mentors and other developers to help students to reach that goal it is
@ -20,5 +20,5 @@ easy reviewable that again leads us to:
* separation of cosmetic from non-cosmetic changes (this is almost entirely * separation of cosmetic from non-cosmetic changes (this is almost entirely
ignored by mentors and students in soc 2006 which might lead to a suprise ignored by mentors and students in soc 2006 which might lead to a suprise
when the code will be reviewed at the end before a possible inclusion in when the code will be reviewed at the end before a possible inclusion in
FFmpeg, individual changes were generally not reviewable due to cosmetics). Libav, individual changes were generally not reviewable due to cosmetics).
* frequent commits, so that comments can be provided early * frequent commits, so that comments can be provided early

Loading…
Cancel
Save