[FFmpeg-devel] [libav-devel] [PATCH 5/6] Postpone API-incompatible changes until the next bump

Andreas Cadhalpun andreas.cadhalpun at googlemail.com
Sun Aug 16 22:12:23 CEST 2015


Hi,

On 16.08.2015 19:27, Ronald S. Bultje wrote:
> On Sat, Aug 8, 2015 at 7:37 AM, Andreas Cadhalpun <
> andreas.cadhalpun at googlemail.com> wrote:
> 
>> +#define FF_API_VOXWARE           (LIBAVCODEC_VERSION_MAJOR < 58)
>> +#define FF_API_AC_VLC            (LIBAVCODEC_VERSION_MAJOR < 58)
>> +#define FF_API_OLD_MSMPEG4       (LIBAVCODEC_VERSION_MAJOR < 58)
>> +#define FF_API_ARCH_ALPHA        (LIBAVCODEC_VERSION_MAJOR < 58)
>> +#define FF_API_NEG_LINESIZES     (LIBAVCODEC_VERSION_MAJOR < 58)
>> +#define FF_API_ARCH_SH4          (LIBAVCODEC_VERSION_MAJOR < 58)
>> +#define FF_API_ARCH_SPARC        (LIBAVCODEC_VERSION_MAJOR < 58)
>> +#define FF_API_IDCT_XVIDMMX      (LIBAVCODEC_VERSION_MAJOR < 58)
>> +#define FF_API_AVFILTER_OPEN                (LIBAVFILTER_VERSION_MAJOR < 7)
>> +#define FF_API_AVFILTER_INIT_FILTER         (LIBAVFILTER_VERSION_MAJOR < 7)
>> +#define FF_API_NOCONST_GET_NAME             (LIBAVFILTER_VERSION_MAJOR < 7)
>> +#define FF_API_OPT_TYPE_METADATA        (LIBAVUTIL_VERSION_MAJOR < 56)

Removing these now is probably OK, because they seem to be relatively
unused.

>> +#define FF_API_BUFS_VDPAU        (LIBAVCODEC_VERSION_MAJOR < 58)
>> +#define FF_API_SET_DIMENSIONS    (LIBAVCODEC_VERSION_MAJOR < 58)
>> +#define FF_API_ASPECT_EXTENDED   (LIBAVCODEC_VERSION_MAJOR < 58)
>> +#define FF_API_ERROR_RATE        (LIBAVCODEC_VERSION_MAJOR < 58)
>> +#define FF_API_MB_TYPE           (LIBAVCODEC_VERSION_MAJOR < 58)
>> +#define FF_API_MAX_BFRAMES       (LIBAVCODEC_VERSION_MAJOR < 58)
>> +#define FF_API_INPUT_PRESERVED   (LIBAVCODEC_VERSION_MAJOR < 58)
>> +#define FF_API_NORMALIZE_AQP     (LIBAVCODEC_VERSION_MAJOR < 58)
>> +#define FF_API_GMC               (LIBAVCODEC_VERSION_MAJOR < 58)
>> +#define FF_API_MV0               (LIBAVCODEC_VERSION_MAJOR < 58)
>> +#define FF_API_CODEC_NAME        (LIBAVCODEC_VERSION_MAJOR < 58)
>> +#define FF_API_AFD               (LIBAVCODEC_VERSION_MAJOR < 58)
>> +#define FF_API_OLD_FILTER_OPTS              (LIBAVFILTER_VERSION_MAJOR < 7)
>> +#define FF_API_OLD_FILTER_REGISTER          (LIBAVFILTER_VERSION_MAJOR < 7)
>> +#define FF_API_LAVF_BITEXACT            (LIBAVFORMAT_VERSION_MAJOR < 58)
>> +#define FF_API_LAVF_CODEC_TB            (LIBAVFORMAT_VERSION_MAJOR < 58)

These seem to be still somewhat used, so it would at least need good
documentation how to deal with the removals.

>> +#define FF_API_XVMC              (LIBAVCODEC_VERSION_MAJOR < 58)
>> +#define FF_API_XVMC                     (LIBAVUTIL_VERSION_MAJOR < 56)

Why are there two defines with the same name?
And what about mpeg1_xvmc/mpeg2_xvmc?

>> +#define FF_API_LOWRES            (LIBAVCODEC_VERSION_MAJOR < 58)
>> +#define FF_API_CAP_VDPAU         (LIBAVCODEC_VERSION_MAJOR < 58)
>> +#define FF_API_DEBUG_MV          (LIBAVCODEC_VERSION_MAJOR < 58)
>> +#define FF_API_QSCALE_TYPE       (LIBAVCODEC_VERSION_MAJOR < 58)
>> +#define FF_API_EMU_EDGE          (LIBAVCODEC_VERSION_MAJOR < 58)
>> +#define FF_API_UNUSED_MEMBERS    (LIBAVCODEC_VERSION_MAJOR < 58)
>> +#define FF_API_OLD_AVOPTIONS            (LIBAVUTIL_VERSION_MAJOR < 56)
>> +#define FF_API_VDPAU                    (LIBAVUTIL_VERSION_MAJOR < 56)
>> +#define FF_API_DLOG                     (LIBAVUTIL_VERSION_MAJOR < 56)
>> +#define FF_API_LAVF_FRAC                (LIBAVFORMAT_VERSION_MAJOR < 58)

With any of those disabled FFmpeg doesn't compile.
Someone needs to fix that before these can be removed.

> For each of them, I don't understand why. Particularly for things like
> xvmc, I think we just want to kill it. I'm sure stuff stops working after
> that, _that is the whole point_. We're killing dead weight. It's normal for
> stuff to break after that.

How to deal with things like the xvmc removal seems to be particularly
undocumented.

> I want to reiterate my intention here to break stuff. It is fully
> intentional for some stuff to break as part of API bumps. I want you to
> think of this as gtk2-gtk3 moves. Gtk2 works just fine and is parallel
> installable. However, it's gone in gtk3.

Comparing with gtk (or qt or python) is not actually useful, because
these have far more users.
If you do that I would suggest to compare with libc, which doesn't
do any API breaks anymore, because it would be far too much pain.

> Every single delay of the bump needs to be explicitly justified.

On that we can agree.

Best regards,
Andreas


More information about the ffmpeg-devel mailing list