[FFmpeg-devel] [PATCH 00/26] Major library version bump

James Almer jamrial at gmail.com
Mon Jan 16 15:38:14 EET 2023


It's been a while since the last bump, so it's time to do some cleaning and
remove deprecated APIs. This will also give us an "Open ABI season" in which we
can do breaking changes (like changing public struct offsets, public enum
values, adding fields to structs that have their size tied to the ABI, etc) for
a few weeks.

I'm also taking this opportunity to suggest a change in our deprecation period
policy. Until now it's been a generic two years period, with no concrete reason
for it other than giving library users "time" to migrate. What we have seen
however is that users migrate in two cases: As soon as things are deprecated
when they use git head to get rid of deprecation warnings, or when they have no
choice (aka, when they want to move their project to a new ffmpeg version that
no longer has the symbols they depended on).
In the latter case, any arbitrary amount of time will make no difference
whatsoever. Projects could right now still be using ffmpeg 4.3 (since that's
what Debian stable ships) and would not consider moving to 5.1 or any future
version for the foreseeable future. So the suggestion is to change to a release
based scheme, which will in some form be time based anyway. Namely, every three
releases we do a major bump, which will be a good year or so in real world
terms, in which all API deprecated during that period, as long as it's present
in a release, is removed. This would also go with the idea of a recurrent LTS
release, so if we do three releases per major version, it could be x.0 (initial
release) x.1 (LTS), and x.2 (last release made pre bump).

If we go the above route, we could also remove API like the old lavu FIFO stuff,
a deprecation that's slightly less than a year old but effectively present in
v5.1.
We'd also need to add all this in writing, because this kind of policy can't
just be "oh yeah, we do it that way" in random emails.

James Almer (26):
  avcodec: remove FF_API_OPENH264_SLICE_MODE
  avcodec: remove FF_API_OPENH264_CABAC
  avcodec: remove FF_API_UNUSED_CODEC_CAPS
  avcodec: remove FF_API_THREAD_SAFE_CALLBACKS
  avcodec: remove FF_API_DEBUG_MV
  avcodec: remove FF_API_GET_FRAME_CLASS
  avcodec: remove FF_API_AUTO_THREADS
  avcodec: remove FF_API_AVCTX_TIMEBASE
  avcodec: remove FF_API_FLAG_TRUNCATED
  avcodec: remove FF_API_SUB_TEXT_FORMAT
  avformat: remove FF_API_LAVF_PRIV_OPT
  avformat: remove FF_API_AVIOCONTEXT_WRITTEN
  avformat: remove FF_HLS_TS_OPTIONS
  avformat: remove FF_API_AVSTREAM_CLASS
  avfilter: remove FF_API_SWS_PARAM_OPTION
  avfilter: remove FF_API_BUFFERSINK_ALLOC
  avfilter: remove FF_API_PAD_COUNT
  avdevice: remove FF_API_DEVICE_CAPABILITIES
  avutil: remove FF_API_D2STR
  avutil: remove FF_API_DECLARE_ALIGNED
  avutil: remove FF_API_COLORSPACE_NAME
  avutil: remove FF_API_AV_MALLOCZ_ARRAY
  avutil/version: postpone the remaining API deprecations
  avcodec/version: postpone the remaining API deprecations
  avformat/version: postpone the remaining API deprecations
  Bump major versions of all libraries

 doc/APIchanges                    |  16 +-
 fftools/ffmpeg.c                  |   5 -
 fftools/ffmpeg_mux_init.c         |  11 --
 fftools/ffprobe.c                 |   2 +-
 libavcodec/av1_parser.c           |   3 -
 libavcodec/avcodec.c              |   5 -
 libavcodec/avcodec.h              |  61 +-------
 libavcodec/avs2_parser.c          |   4 +-
 libavcodec/avs3_parser.c          |   4 +-
 libavcodec/codec.h                |  20 ---
 libavcodec/cpia.c                 |   8 -
 libavcodec/decode.c               |  22 ---
 libavcodec/encode.c               |   7 +-
 libavcodec/frame_thread_encoder.c |  20 ---
 libavcodec/h263_parser.c          |  11 --
 libavcodec/h263_parser.h          |  29 ----
 libavcodec/h263dec.c              |  42 ------
 libavcodec/h264_parser.c          |   7 +-
 libavcodec/h264dec.c              |   6 -
 libavcodec/libopenh264enc.c       |  22 ---
 libavcodec/mjpegdec.c             |   2 +-
 libavcodec/mpeg12.c               |  66 ---------
 libavcodec/mpeg12.h               |   9 --
 libavcodec/mpeg12dec.c            |  31 ----
 libavcodec/mpeg4video_parser.c    |  16 +-
 libavcodec/mpeg4video_parser.h    |  34 -----
 libavcodec/mpeg4videodec.c        |   6 -
 libavcodec/mpegvideo.c            |   9 --
 libavcodec/mpegvideo.h            |   7 -
 libavcodec/mpegvideo_dec.c        |   8 -
 libavcodec/mpegvideo_parser.c     |  12 +-
 libavcodec/options.c              |  33 -----
 libavcodec/options_table.h        |   7 -
 libavcodec/pthread.c              |   3 -
 libavcodec/pthread_frame.c        | 237 +-----------------------------
 libavcodec/qdmc.c                 |   1 +
 libavcodec/thread.h               |  12 --
 libavcodec/vc1_parser.c           |   2 -
 libavcodec/version.h              |   2 +-
 libavcodec/version_major.h        |  24 +--
 libavdevice/avdevice.c            |  19 ---
 libavdevice/avdevice.h            | 130 ----------------
 libavdevice/version.h             |   4 +-
 libavdevice/version_major.h       |   3 +-
 libavfilter/avfilter.c            |  21 ---
 libavfilter/avfilter.h            |  10 --
 libavfilter/buffersink.c          |  22 ---
 libavfilter/buffersink.h          |  36 -----
 libavfilter/buffersrc.c           |  11 --
 libavfilter/version.h             |   2 +-
 libavfilter/version_major.h       |   6 +-
 libavformat/avformat.c            |  33 +++--
 libavformat/avformat.h            |   5 -
 libavformat/avio.h                |  10 --
 libavformat/aviobuf.c             |  10 --
 libavformat/demux.c               |  41 +++---
 libavformat/hlsenc.c              |   3 -
 libavformat/options.c             |   3 -
 libavformat/version.h             |   2 +-
 libavformat/version_major.h       |  12 +-
 libavutil/avstring.c              |  10 --
 libavutil/avstring.h              |   9 --
 libavutil/frame.c                 |  17 ---
 libavutil/frame.h                 |   9 --
 libavutil/mem.c                   |  10 --
 libavutil/mem.h                   |  88 -----------
 libavutil/mem_internal.h          |   2 -
 libavutil/tests/avstring.c        |  16 --
 libavutil/version.h               |  20 +--
 libpostproc/version.h             |   2 +-
 libpostproc/version_major.h       |   2 +-
 libswscale/version.h              |   4 +-
 libswscale/version_major.h        |   2 +-
 73 files changed, 103 insertions(+), 1297 deletions(-)
 delete mode 100644 libavcodec/h263_parser.h
 delete mode 100644 libavcodec/mpeg4video_parser.h

-- 
2.39.0



More information about the ffmpeg-devel mailing list