[FFmpeg-devel] [PATCH] avcodec: Add padding after the remaining AVFrames

wm4 nfxjfg at googlemail.com
Tue Mar 18 14:18:40 CET 2014

On Tue, 18 Mar 2014 14:06:50 +0100
Michael Niedermayer <michaelni at gmx.at> wrote:

> On Tue, Mar 18, 2014 at 01:25:26PM +0100, wm4 wrote:
> > On Tue, 18 Mar 2014 00:48:41 +0100
> > Michael Niedermayer <michaelni at gmx.at> wrote:
> > 
> > > This limits ABI issues in case libavcodec is linked to a libavutil with larger AVFrame
> > > Which can happen if they are shiped in seperate binary packages and libavutil is upgraded
> > > 
> > > A cleaner alternative would be to replace them by pointers but this would likely cause
> > > a small speedloss
> > 
> > Better idea: call abort() if the libavutil linked version doesn't match
> > the compiled version.
> That would badly break distro packages and is near certain to get
> ffmpeg kicked out of distros and i actually agree that a lib
> calling abort() when one of its dependancies has a different minor
> version but same soname ... is just broken.

Better than silently triggering undefined behavior or other bugs.

> > When will people (including distro maintainers
> > and ffmpeg developers) realize that mismatching different libav*
> > versions is just broken?
> There are just 2 options really
> First, each lib has its own ABI, API and version (this is what we
> have now)
> or
> Second, libs have the same ABI, API and version, possibly linked into
> the same .so file
> So far noone has sent a patch to add optional support for the 2nd
> case to our build system. And this isnt the first time this has
> come up ...

Yes, this isn't the first time. It appears mismatching the
sub-libraries just doesn't work and causes too much work for everyone,
just so that distro maintainers can pretend... something. What is even
the advantage of this? So that an update requires a 1 MB download
instead of 2 MB? Or something similarly negligible.

Adding optional support for the 2nd case you mentioned won't work,
because you still have to make the 1st case work.

So, what should happen is that the 2nd option is made the default.
FFmpeg would have a single library version. Maybe Libav can be
convinced to introduce this change, after Libav 10 is released.

More information about the ffmpeg-devel mailing list