From patchwork Mon Jan 16 13:38:14 2023 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 34878 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1d43:b0:b8:6755:f97e with SMTP id cs3csp1036951pzb; Mon, 16 Jan 2023 05:39:21 -0800 (PST) X-Google-Smtp-Source: AMrXdXtBctv5nExkpTJPdXmTcQMYNR50/jMpMb9k0dzcMiREv8mHC7tzqkVfv4y8Ka9VJ+cMAA1t X-Received: by 2002:a50:a401:0:b0:46d:53d7:d21e with SMTP id u1-20020a50a401000000b0046d53d7d21emr84077322edb.27.1673876361001; Mon, 16 Jan 2023 05:39:21 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1673876360; cv=none; d=google.com; s=arc-20160816; b=YnEmX8pnBY45OJTd/2Y8iVvAY/qwep3wb/Fy+DPuwLsVPY1HjSECIf47f/8BswoL+R uf+V9oKPaHARNIpHz+U8Qg4zb7yPM0PannAvBKe5pccEt7CTXVEa5jOXHUd+nY1sf9So WwYZWEzfnF0BqdUd57ONChYpWuY9IZVJ/pNpJaUjyi/I3X52y1qGReVmdQBCFAcolGbb YhCU3HB88E8hGLMmyDwsE6bEvWq63Gp7Obw5rHh8JLG5qCccsLEJ7WT9fnOSBRlan6uY vV1FVINYjb7Qth+8P6swX0jAvhYL4/0jzg25GV5+b8sX0Vq2+uQDEitWBJN1AN2riMfI 6Z2w== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:reply-to:list-subscribe :list-help:list-post:list-archive:list-unsubscribe:list-id :precedence:subject:mime-version:message-id:date:to:from :dkim-signature:delivered-to; bh=nEsqzlcgBc1jlL7PtY6lOKHTu+5Rh/vsmf2Gf3lldtU=; b=xyPaeCfYv+YHFjGHA3GAi1fQgH769pVlcxBLGEkiUZWNeiHfw52V1vKoer5vwkvvY/ 3NZQUsAZWxAtGsChYA8UYi6dnmwEFdrDvWN6a1tfwD3r385JwbjziwPxNg36GYkAedDI qG+LXGaRo4ziB2pO/Qe3aX5ResQBsUenQBGsv6TUH8wXrwysBwsnoC1vyt91e5DecdiT 4MplYa6FNK1aTN5wQabopLiauN5UfefgcaBSfSeEgEvpMP4xSH+iXU58/bmXKBY4gTE3 Z0YiNsmggA1zLEWfKYcIIcjTeLKwZ+9PMj4l/407Wss3Jxzk2KFwITyCCj5tDBpQWNYz Fm6A== ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b="bDK/BaxO"; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id j8-20020aa7c0c8000000b0046c38a4d141si25847449edp.100.2023.01.16.05.39.19; Mon, 16 Jan 2023 05:39:20 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com header.s=20210112 header.b="bDK/BaxO"; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 6FC0568BD98; Mon, 16 Jan 2023 15:39:16 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ot1-f52.google.com (mail-ot1-f52.google.com [209.85.210.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4BB8068BD85 for ; Mon, 16 Jan 2023 15:39:09 +0200 (EET) Received: by mail-ot1-f52.google.com with SMTP id j16-20020a056830271000b0067202045ee9so16104162otu.7 for ; Mon, 16 Jan 2023 05:39:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:from:to:cc:subject:date:message-id:reply-to; bh=q7kmHmXP0nbKSxVMBQE6CfiT4EiNPR/F/A3sn8o0doo=; b=bDK/BaxO/b8qsPGqaieSDPU0F9Mh4MGrzvZjE4ueudhDFbThCgOLNsco24vkLuY2N5 yeHJGLiewW6T5NLS92l8mxnE95v4hiU190YJMqyEPGUUvnt1bxxVWvYrvpaoMD0tBmNp m5+gLlwokVk4GOBdYGUT8jDdseX2dpYRjUJOVSSjXoApSeqRKvNyRxlfVAHnKpoN0har 4uXllXl+Vtw5x0ldkojIEj8XyytNUTw4EatQfWGHfYrrFt+3H2ttGye+y4pd5mjoXVay ARcSS8HtWa3/w24IHphK6s5Yo9QfFGcb0GWnyK7iCfCSsVlzpIuj5zwBSAL1q39wSOYk QIzA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=content-transfer-encoding:mime-version:message-id:date:subject:to :from:x-gm-message-state:from:to:cc:subject:date:message-id:reply-to; bh=q7kmHmXP0nbKSxVMBQE6CfiT4EiNPR/F/A3sn8o0doo=; b=7QSZwXfPXkAIbIJU4rhOMXBot7/my0nLSRGcw65OryvPV/T3M63azTnHqQannXz6XD JHON2ReBgvQjRTLVqAFO+g6NsQsp0Be2j4zsLCTEqB6QJAqexVbvjSnqWdKOk3vgaNWE jTxuSTLUViR1XW8pi8dAZHqS7n7Sj+207h3EtB6v7PvtDZ6fONriS4mPtyKid8uT+XaO FLXVbWCiWBRRdTphIbuYToXSkNFe5E+4ELWOTlFZxHY17NxJ6lWh7uyHPNc+XgozC2pX PqEFjJlRojkGxLEcW0rDosm7rnSf87rlefCLEz/HttuFCH0oHajUZPRv/OfcDaSWbBjA sQ7Q== X-Gm-Message-State: AFqh2kp6hJY6NXqUKWzdzm6HX6JbAGpFTxrT7BzotcjmutNe97JpYmnh 7maO6Ys2fvoNBzHmhQ2ZN/RlHi12cLo= X-Received: by 2002:a9d:6a4b:0:b0:684:db9d:24c3 with SMTP id h11-20020a9d6a4b000000b00684db9d24c3mr4777421otn.7.1673876346853; Mon, 16 Jan 2023 05:39:06 -0800 (PST) Received: from localhost.localdomain (host197.190-225-105.telecom.net.ar. [190.225.105.197]) by smtp.gmail.com with ESMTPSA id 3-20020a9d0303000000b0066ca9001e68sm388524otv.5.2023.01.16.05.39.05 for (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Mon, 16 Jan 2023 05:39:06 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Mon, 16 Jan 2023 10:38:14 -0300 Message-Id: <20230116133840.512-1-jamrial@gmail.com> X-Mailer: git-send-email 2.39.0 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 00/26] Major library version bump X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: lShd/fYp23rM 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