[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