[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.
See 
http://git.videolan.org/?p=ffmpeg.git;a=blob;f=libavcodec/avcodec.h;h=00f9c82afc81a07eb2aaf346bb4c75d162e8760e;hb=HEAD#l3748

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