[FFmpeg-devel] ABI (in)stability of FFmpeg

Andreas Cadhalpun andreas.cadhalpun at googlemail.com
Fri Jul 25 22:53:48 CEST 2014

On 25.07.2014 22:06, Michael Niedermayer wrote:
> On Fri, Jul 25, 2014 at 03:55:51PM +0200, Andreas Cadhalpun wrote:
>> Hi,
>> On 12.07.2014 20:34, Timothy Gu wrote:
>>> So, ff_ = can only be used within this library (in theory) and can be
>>> removed without major bump. It should not be exported or be used by users.
>>> avpriv_ = can only be used by FFmpeg libraries and cannot be removed
>>> without major bump. It should be exported, but should not be used by users.
>>> Other av* = can be used by everyone, and are exported and have proper
>>> prototypes or declarations in headers.
>>> Right now, some libraries export some ff_ symbols as hacks and should be
>>> fixed by either converting them to avpriv_ or av_. libavutil exports all
>>> ff_ symbols until the next bump.
>> That's how the theory goes...
>> ...would be nice if it worked that way in practice.
>> I'm talking about commit 3a2d1465c88625774530399b06dc4d48b24bb51f:
>> Merge commit '2d60444331fca1910510038dd3817bea885c2367'
>> * commit '2d60444331fca1910510038dd3817bea885c2367':
>>    dsputil: Split motion estimation compare bits off into their own context
>> Libav renamed ff_dsputil_init to ff_me_cmp_init. That's fine there,
>> because they don't export the symbol.
>> The problem is that FFmpeg did, and also the aliases dsputil_init
>> and avpriv_dsputil_init, because some filters included
>> libavcodec/dsputil.h. Now they include libavcodec/me_cmp.h and
>> libavcodec exports ff_me_cmp_init.
>> According to above theory such a change requires a soversion bump...
> patch posted which reintroduces avpriv_dsputil_init() and should thus
> fix this


ff_dsputil_init and dsputil_init still don't get exported anymore, but 
as they haven't been used recently outside of libavcodec I'd say: good 

Best regards,

More information about the ffmpeg-devel mailing list