[FFmpeg-devel] ABI (in)stability of FFmpeg (was: Re: [PATCH 1/4] swr: convert resample_common/linear_int16_mmx2/sse2 to yasm.)

Andreas Cadhalpun andreas.cadhalpun at googlemail.com
Fri Jul 25 15:55:51 CEST 2014


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...

Best regards,
Andreas


More information about the ffmpeg-devel mailing list