[FFmpeg-devel] ABI break between 3.0 and 3.3 without symvers/SONAME changes

Timo Rothenpieler timo at rothenpieler.org
Sat Jun 3 15:27:25 EEST 2017

Am 03.06.2017 um 14:19 schrieb Jan Engelhardt:
> On Saturday 2017-06-03 14:11, wm4 wrote:
>>> The layout of struct AVCodec changed. Four function pointers were
>>> inserted in the middle, shifting void (*flush) to a new address. The
>>> size of AVCodec also changed, which would have required a full MAJOR
>>> bump.
>> Those aren't even public fields.
> Fair enough, seems documented after more looking around.
>> Anyway, in general, I recommend not pretending that FFmpeg has ABI
>> compatibility. Especially not across major releases
> That would be fine with me - could ffmpeg then ensure that the
> major is in fact bumped on major releases? In distro context,
> a bump is easier to swallow than a non-bump..

It is made sure that the public ABI does not break between major 
releases, this the major version is not bumped.
The problem in practice is that _a lot_ of downstream library users 
misuse the API, using non-public fields and what not, and still end up 
breaking, most commonly at ffmpeg major releases.

More information about the ffmpeg-devel mailing list