On Sun, 16 Aug 2015 22:12:23 +0200
Andreas Cadhalpun <[email protected]> wrote:

> Hi,
> 
> On 16.08.2015 19:27, Ronald S. Bultje wrote:
> > On Sat, Aug 8, 2015 at 7:37 AM, Andreas Cadhalpun <
> > [email protected]> 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.

What does "somewhat used" even mean?

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

Patches welcome. Also, nice that you point out how much of an ifdef
mess this is. We should get rid of it rather sooner than later.

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

In Libav, it's to be removed without replacement. There's not a single
reason to use XvMC. It's _partial_ hwaccel for mpeg2, which can be
decoded in realtime by absolutely any desktop CPU. And even if not,
newer APIs support XvMC too.

Please explain to me why we need XvMC. Except to keep those dead
projects packaged by Debian compiling.

FFmpeg has a XvMC hwaccel API, which is a bit better because at leats
it fits into the rest of the API. It was probably used in MPlayer.
Look there.

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

That's a really strange argument. Because they have more users it's ok?

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

The C standard made some things which were required optional in a
newer standard revision. Valid C programs could not compile anymore
with a compiler conforming to the new C standard. Also, even C managed
to deprecate gets(). Next argument please.

> > Every single delay of the bump needs to be explicitly justified.
> 
> On that we can agree.

So far I see not much justification. Again, use an older libav/ffmpeg
release for programs whose authors are MIA or refuse to fix their code.

_______________________________________________
libav-devel mailing list
[email protected]
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to