[FFmpeg-devel] ABI break in 4.3

Jan Engelhardt jengelh at inai.de
Sun Jul 5 18:46:52 EEST 2020


On Sunday 2020-07-05 16:43, Timo Rothenpieler wrote:
>> LIBAVCODEC_58 {
>>    global:
>>    av_foo;
>>    av_bar;
>>    av_whatever_else_there_is;...
>>    local:
>>    *;
>> };
>> LIBAVCODEC_58.91 {
>>    global:
>>    avpriv_mpeg4audio_get_config2;
>> } LIBAVCODEC_58;
>> LIBAVCODEC_58.123 { /* future example */
>>    global:
>>    avblahblah;
>> } LIBAVCODEC_58.91;
>
> Won't that break the entire ABI of anything currently linked, and thus would
> require a major bump?

Since 4.3 was sort of a break over 4.2.3 already, the situation is that:

 * $nextrelease can be compatible with 4.2.3's idea of the ABI, in which case
   avpriv_mpeg4audio_get_config2 should be placed inside LIBAVCODEC_58.91, or

 * $nextrelease can be compatible with 4.3's idea of the ABI, in which case
   avpriv_mpeg4audio_get_config2 should be placed inside LIBAVCODEC_58.

Each of the two prior options is equally non-compelling. "58" is tarnished
already. What software generally does at this point — ffmpeg is not the first
project to have these issues — is to bump and start fresh.


> Generally, this seems incredibly hard to maintain and will very likely cause
> confusion every time someone adds stuff in the future.

How often do exported functions get added? Between 4.2.3 and 4.3,
that was _just one_, and that one was even an avpriv_* (which
probably shouldn't have been exported given its "priv" nature?!).


More information about the ffmpeg-devel mailing list