|
@@ -42,6 +42,39 @@
|
|
|
* @li @ref lswr "libswresample" audio resampling, format conversion and mixing
|
|
|
* @li @ref lpp "libpostproc" post processing library
|
|
|
* @li @ref lsws "libswscale" color conversion and scaling library
|
|
|
+ *
|
|
|
+ * @section ffmpeg_versioning Versioning and compatibility
|
|
|
+ *
|
|
|
+ * Each of the FFmpeg libraries contains a version.h header, which defines a
|
|
|
+ * major, minor and micro version number with the
|
|
|
+ * <em>LIBRARYNAME_VERSION_{MAJOR,MINOR,MICRO}</em> macros. The major version
|
|
|
+ * number is incremented with backward incompatible changes - e.g. removing
|
|
|
+ * parts of the public API, reordering public struct members, etc. The minor
|
|
|
+ * version number is incremented for backward compatible API changes or major
|
|
|
+ * new features - e.g. adding a new public function or a new decoder. The micro
|
|
|
+ * version number is incremented for smaller changes that a calling program
|
|
|
+ * might still want to check for - e.g. changing behavior in a previously
|
|
|
+ * unspecified situation.
|
|
|
+ *
|
|
|
+ * FFmpeg guarantees backward API and ABI compatibility for each library as long
|
|
|
+ * as its major version number is unchanged. This means that no public symbols
|
|
|
+ * will be removed or renamed. Types and names of the public struct members and
|
|
|
+ * values of public macros and enums will remain the same (unless they were
|
|
|
+ * explicitly declared as not part of the public API). Documented behavior will
|
|
|
+ * not change.
|
|
|
+ *
|
|
|
+ * In other words, any correct program that works with a given FFmpeg snapshot
|
|
|
+ * should work just as well without any changes with any later snapshot with the
|
|
|
+ * same major versions. This applies to both rebuilding the program against new
|
|
|
+ * FFmpeg versions or to replacing the dynamic FFmpeg libraries that a program
|
|
|
+ * links against.
|
|
|
+ *
|
|
|
+ * However, new public symbols may be added and new members may be appended to
|
|
|
+ * public structs whose size is not part of public ABI (most public structs in
|
|
|
+ * FFmpeg). New macros and enum values may be added. Behavior in undocumented
|
|
|
+ * situations may change slightly (and be documented). All those are accompanied
|
|
|
+ * by an entry in doc/APIchanges and incrementing either the minor or micro
|
|
|
+ * version number.
|
|
|
*/
|
|
|
|
|
|
/**
|