FFmpeg
|
本文档描述了 FFmpeg 提供的不同库的用法。
每个 FFmpeg 库都包含一个 version.h 标头,它使用LIBRARYNAME_VERSION_{MAJOR,MINOR,MICRO}宏定义主版本号、次版本号和微版本号。主版本号随着向后不兼容的更改而递增 - 例如,删除部分公共 API、重新排序公共结构成员等。次要版本号随着向后兼容的 API 更改或主要新功能而递增 - 例如添加新的公共函数或新的解码器。对于调用程序可能仍想要检查的较小更改,微版本号会递增 - 例如,在先前未指定的情况下更改行为。
FFmpeg 保证每个库的向后 API 和 ABI 兼容性,只要其主版本号不变。这意味着不会删除或重命名任何公共符号。公共结构成员的类型和名称以及公共宏和枚举的值将保持不变(除非它们被明确声明为不属于公共 API 的一部分)。记录的行为不会改变。
换句话说,任何适用于给定 FFmpeg 快照的正确程序都应该能够与具有相同主要版本的任何更高版本的快照一样工作,而无需进行任何更改。这适用于根据新的 FFmpeg 版本重建程序或替换程序链接的动态 FFmpeg 库。
但是,可以添加新的公共符号,并且可以将新成员附加到其大小不属于公共 ABI 的公共结构(FFmpeg 中的大多数公共结构)。可以添加新的宏和枚举值。在未记录的情况下的行为可能会略有变化(并记录在案)。所有这些都伴随着 doc/APIchanges 中的条目并递增次要版本号或微版本号。