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

Jan Engelhardt jengelh at inai.de
Sat Jun 3 16:23:00 EEST 2017


On Saturday 2017-06-03 14:27, Timo Rothenpieler wrote:
>
> 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.

I am of thinking of doing this: After the distribution build scripts have
called `make install` for ffmpeg, to then strip all the private fields from
/usr/include/*av*/*.h, so that programs which access these private fields stop
building.

I find that there is already a "#ifndef FF_INTERNAL_FIELDS" block, though it
only spans a few fields. I would be adding another "#ifndef STRIP_ME" block
around _all_ private fields and then remove then with something like
/usr/bin/unifdef after `make install`.

Does that sound like a plan?
Would this unifdeffing be something ffmpeg upstream might consider? (As an
alternative to that AVcontext/AVcontext_base struct game)


More information about the ffmpeg-devel mailing list