From patchwork Mon Apr 8 12:57:08 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Niklas Haas X-Patchwork-Id: 47916 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:24a8:b0:1a3:b6bb:3029 with SMTP id m40csp2455567pzd; Mon, 8 Apr 2024 06:00:50 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUy8RHMcwMHJtXxd/DYCcYw07ZOKffpIVRMNlQPppO1rd2Jeq001q8T+r7g34AqT2DAx+wAYu1+HyLlmKC/7cicFVRUaP8Nq6Tqhw== X-Google-Smtp-Source: AGHT+IFsXEuV60/WJZ8unEN/LelTTrToRFDuWGt92yUbdm8lI4AmYL1mwsuyLSRRpwlPNj/Wz42q X-Received: by 2002:a17:907:9410:b0:a51:c84b:f17b with SMTP id dk16-20020a170907941000b00a51c84bf17bmr3648297ejc.69.1712581249995; Mon, 08 Apr 2024 06:00:49 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1712581249; cv=none; d=google.com; s=arc-20160816; b=syj2GsmPW/Py7dESEkr+wvzBSX8cMShAmlmIUDAyxFNxFbrPCVbt6mFo8CVN63E5lg Z1qqICHGjkpleMiWtN7AYUN5AqlxAgyRJ57LaUciCxaKTIMOccr0hopUmJYXPCEJ/bug aWfXoLR/xeeEF2hPgpqQ/6XvRsa9HvzsTdsSMN+/xmTZdF23NnuPmRbaMNQdzzZPrAO/ zN8bsrn6NTETFbQSKbxJFhl1DksnGfyMV0ifu/58cN+ZXEctikp64NHF9dpZU4E7xArm cSNuOrfhNLX6fUyg27UjI8l/76pp5COuUpCrNQ72IPIxInXXzpzOMk1RE8lxrJsGWTi1 w2yQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=sender:errors-to:content-transfer-encoding:cc:reply-to :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:from:dkim-signature:delivered-to; bh=Iq8fU6LZBphVtmOD1rMJ2i0kQtCR03CeT9mK52K/cz0=; fh=xmAeKtysnShNOmkhiJmYkS30uw4Fu2hvBJ7qlIwukxQ=; b=XVPWGjSaRprJLY9/6sQnJn7ji8sm7CrHfPMzBn5Ub0aRNkrQbieELsJdDyggYdU75j rr1ZNJMhqj5ZB9KrkxvNPqaZY1ZnMdw0pzkm/j+5WM0XFhQ50Ls/ydkJWztVgWl0A6LF BIPSkAHc4kPGmdGMKOnI85M62wXsfu0FmAoi5g6jRczAIbodZUzu4bvkdCmCLNbDAc8M GYXGEIXXwn05LZYcgAs6723Utt7WF07xhlCGS/J5biybDzgPmO4wF9VTBYP8zowvomHk mzLE/w7O+scLPgy4mcJoj22tA4ofoJNhosNmhPoziBHj7WUifaWKGFknZ02pRWw+AmB4 I4Og==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; dkim=neutral (body hash did not verify) header.i=@haasn.xyz header.s=mail header.b=GL2pCrb4; 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 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id do5-20020a170906c10500b00a51e43bcb38si69386ejc.509.2024.04.08.06.00.49; Mon, 08 Apr 2024 06:00:49 -0700 (PDT) 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=@haasn.xyz header.s=mail header.b=GL2pCrb4; 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 Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 89C9268D26C; Mon, 8 Apr 2024 16:00:04 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from haasn.dev (haasn.dev [78.46.187.166]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9192068D16F for ; Mon, 8 Apr 2024 15:59:53 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=haasn.xyz; s=mail; t=1712581193; bh=0waB0ZRpG4JRcU/69Vg8TSniLYKB5lbR7owghTOYBJo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=GL2pCrb4XfZRNdfgHYU704LnqE7adx0vgLZI5G9w9dPyaDp0FsQcQJxSyebe+cqq7 Uzwg/pMxBR9vBD2DxA3xREYKm1/+oOQKh78sxl3SrkCyjOm64mqYiswUtTu0avmhsq SQ2d4Mxad8+Cm5hgzh19c1PRiEX9biVkxmLDYFLI= Received: from haasn.dev (unknown [10.30.0.2]) by haasn.dev (Postfix) with ESMTP id 51E5B4301F; Mon, 8 Apr 2024 14:59:53 +0200 (CEST) From: Niklas Haas To: ffmpeg-devel@ffmpeg.org Date: Mon, 8 Apr 2024 14:57:08 +0200 Message-ID: <20240408125950.53472-5-ffmpeg@haasn.xyz> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240408125950.53472-1-ffmpeg@haasn.xyz> References: <20240408125950.53472-1-ffmpeg@haasn.xyz> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v2 04/17] avcodec/allcodecs: add backcompat for new config API 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 Cc: Niklas Haas Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: rw5BNSdzubmz From: Niklas Haas In order to avoid breaking older clients not yet using the new API, we need to add backwards compatibility for codecs which have switched from init_static() to get_supported_config(). This function can be removed entirely once the deprecated static fields are removed. --- libavcodec/allcodecs.c | 37 +++++++++++++++++++++++++++++++++++-- 1 file changed, 35 insertions(+), 2 deletions(-) diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c index f4705651fb8..a9f1797930a 100644 --- a/libavcodec/allcodecs.c +++ b/libavcodec/allcodecs.c @@ -916,8 +916,41 @@ static AVOnce av_codec_static_init = AV_ONCE_INIT; static void av_codec_init_static(void) { for (int i = 0; codec_list[i]; i++) { - if (codec_list[i]->init_static_data) - codec_list[i]->init_static_data((FFCodec*)codec_list[i]); + const FFCodec *codec = codec_list[i]; + if (codec->init_static_data) { + codec->init_static_data((FFCodec*) codec); + continue; + } + + /* Backward compatibility with deprecated public fields */ + if (!codec->get_supported_config) + continue; + +FF_DISABLE_DEPRECATION_WARNINGS + switch (codec->p.type) { + case AVMEDIA_TYPE_VIDEO: + codec->get_supported_config(NULL, &codec->p, + AV_CODEC_CONFIG_PIX_FORMAT, 0, + (const void **) &codec->p.pix_fmts); + codec->get_supported_config(NULL, &codec->p, + AV_CODEC_CONFIG_FRAME_RATE, 0, + (const void **) &codec->p.supported_framerates); + break; + case AVMEDIA_TYPE_AUDIO: + codec->get_supported_config(NULL, &codec->p, + AV_CODEC_CONFIG_SAMPLE_FORMAT, 0, + (const void **) &codec->p.sample_fmts); + codec->get_supported_config(NULL, &codec->p, + AV_CODEC_CONFIG_SAMPLE_RATE, 0, + (const void **) &codec->p.supported_samplerates); + codec->get_supported_config(NULL, &codec->p, + AV_CODEC_CONFIG_CHANNEL_LAYOUT, 0, + (const void **) &codec->p.ch_layouts); + break; + default: + break; + } +FF_ENABLE_DEPRECATION_WARNINGS } }