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.
_______________________________________________
ffmpeg-devel mailing list
ffmpeg-devel@ffmpeg.org
http://ffmpeg.org/mailman/listinfo/ffmpeg-devel