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

Timo Rothenpieler timo at rothenpieler.org
Sat Jun 3 15:13:36 EEST 2017

> Size changes are breakers in both directions.

The size of the structs are not part of the public API/ABI.
Only the location of public fields in them is.

> You claim your ABI is stable in one direction, which means that a
> program built with 3.0 headers should work with a 3.3 library on a
> separate system. However, a 3.0 program which invokes
> someAVcontext->flush(...) would, under 3.3, invoke someAVc->send_frame
> because of the changed layout. So it's not ABI compatible in that one
> direction that ffmpeg is supposed to be compile, either.

Those are private fields.

An application using those fields is misusing the API and can explode at 
every single change without further notice.

More information about the ffmpeg-devel mailing list