From patchwork Fri Aug 30 10:15:27 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Niklas Haas X-Patchwork-Id: 51235 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:612c:4027:b0:48e:c0f8:d0de with SMTP id ky39csp299942vqb; Fri, 30 Aug 2024 03:25:04 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVnfYrlRRIjZm810LWim6MYvVjetbQMN+r2QdTeb5/Reuim16d0gkCqyPmi3fGcrS00sAkxclbKzjTyN3HlPT1S@gmail.com X-Google-Smtp-Source: AGHT+IEs3Ggq33nUdZ7v7n8f+7D6L5BUFCGRehlJTmwNxuWtX4C7h73aUQy1wd/+lbJ4e2vOMx+r X-Received: by 2002:a2e:a983:0:b0:2ef:80:a68c with SMTP id 38308e7fff4ca-2f61e0c610bmr6414041fa.8.1725013503984; Fri, 30 Aug 2024 03:25:03 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1725013503; cv=none; d=google.com; s=arc-20240605; b=Dq4DJkyCHCuzO8OwD6JF0yXUm/YbqBfYlrYdblD+dNnRNFqbxTFkBqqjhHKRP/BYTd 02YhE5UmScYWQLwiDnLB0hEOiBkSKyBGuV0NtzqaF8X3aejx0aaWtnv8MIigS1tdNlHg 1g1TyGGHjZng9BMkLpKM9gjQgJ9jj54D3xNISF9jMyRHanI3mUeA1nVfYlSe9IT6anAT CsXRM2PR3tWqOW3lqQe7S5dPDdHc0YHxf79Snxpf4stZ87u5BYcX84d5F45q9bt/Vuh4 49SUowbH9OTQfYDSE7Z8NVx0dAfX01XAdn5MrCp6jbB0xtu3hrre5pTPp2nFko+fe0QL iVlg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20240605; 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=Vhw4tE1VxZHOXf3rjrZQgGxDQNJdCGzQEZgVcPTIzu4=; fh=xmAeKtysnShNOmkhiJmYkS30uw4Fu2hvBJ7qlIwukxQ=; b=TGZTx1v2kYtpoXm2FxY/EQtrtgLVNMYX7QDHqFp1pTkRS1JdgzYdY1m+HsXQZkhZjH G2FOmFa5AX8AQ5tC3qSO+YUfGvoUFzGOXKReF6sFBFCDpDhzqSoPXuge4DT8iifxDrVt 916/cPAiahhlgoPHgviDBKiP8/ncSblCIXFuzCQMt6GJOowotOfgDLMpx/WDRjqpD46T +1Mn1pXb8l6uUb6AXdCw596KDw03Bj/sDUwBtIZywUp58DvHbFmC1CR2zNhp4P/2yl/5 Npsw+w/p77IPWnt23+PXBrMhZ+Yjrl00ZojxfumkW3SGA/nYOmQ0H4KQ2aYDlj/RVowl EGcQ==; 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="jvL2/5FI"; 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 4fb4d7f45d1cf-5c226c72533si2701308a12.39.2024.08.30.03.25.03; Fri, 30 Aug 2024 03:25:03 -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="jvL2/5FI"; 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 7D25468DBC2; Fri, 30 Aug 2024 13:24:20 +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 1625F68DB63 for ; Fri, 30 Aug 2024 13:24:09 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=haasn.xyz; s=mail; t=1725013448; bh=otADzWjHmd0MuzFh6Vgaw1WIdaXk1HlZs5XbSVeJgDU=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=jvL2/5FIY8dklRINPO2HDkqRfAYOg0fOpa633BDNOq2nUzlH9Id5lZs+LF/k0HzQt kceiNj1n/+3Og2MA9119S0F3AdvK9VW3Rke2tLRwg9Pw0xFCvELyoT4/3yo8RDDsi7 75WgSiH/vLChNn0WzH6h+ywUTWB1FlBPwrM0/Hhk= Received: from haasn.dev (unknown [10.30.0.2]) by haasn.dev (Postfix) with ESMTP id C7E8842B25; Fri, 30 Aug 2024 12:24:08 +0200 (CEST) From: Niklas Haas To: ffmpeg-devel@ffmpeg.org Date: Fri, 30 Aug 2024 12:15:27 +0200 Message-ID: <20240830102402.18149-5-ffmpeg@haasn.xyz> X-Mailer: git-send-email 2.46.0 In-Reply-To: <20240830102402.18149-1-ffmpeg@haasn.xyz> References: <20240830102402.18149-1-ffmpeg@haasn.xyz> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH v3 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: KT8mx2U+YLxO 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 | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/libavcodec/allcodecs.c b/libavcodec/allcodecs.c index 09385be4ee..60b1278830 100644 --- a/libavcodec/allcodecs.c +++ b/libavcodec/allcodecs.c @@ -910,8 +910,45 @@ 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, NULL); + codec->get_supported_config(NULL, &codec->p, + AV_CODEC_CONFIG_FRAME_RATE, 0, + (const void **) &codec->p.supported_framerates, + NULL); + break; + case AVMEDIA_TYPE_AUDIO: + codec->get_supported_config(NULL, &codec->p, + AV_CODEC_CONFIG_SAMPLE_FORMAT, 0, + (const void **) &codec->p.sample_fmts, + NULL); + codec->get_supported_config(NULL, &codec->p, + AV_CODEC_CONFIG_SAMPLE_RATE, 0, + (const void **) &codec->p.supported_samplerates, + NULL); + codec->get_supported_config(NULL, &codec->p, + AV_CODEC_CONFIG_CHANNEL_LAYOUT, 0, + (const void **) &codec->p.ch_layouts, + NULL); + break; + default: + break; + } +FF_ENABLE_DEPRECATION_WARNINGS } }