From patchwork Fri Apr 5 18:57:13 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Niklas Haas X-Patchwork-Id: 47862 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:24a8:b0:1a3:b6bb:3029 with SMTP id m40csp1157706pzd; Fri, 5 Apr 2024 11:57:57 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCVqr/bMkBszoNtpbMBXC+yTM/DJ9sTWtBOKffbS6LOiRS/tbZLIt+HLda2qJ7zlMZgYpQ6q5na+y7jUBX1cuUvJxK1TPPANDbuaZw== X-Google-Smtp-Source: AGHT+IGkwqkK7JHW51HWxR+ZN6XnPOTMyXY4DUPMnPjvDAsDcc2YcJuiMVbz2AsLz7/Vkb8akSwT X-Received: by 2002:a05:6402:26d4:b0:56e:4069:9ae2 with SMTP id x20-20020a05640226d400b0056e40699ae2mr145253edd.3.1712343477530; Fri, 05 Apr 2024 11:57:57 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1712343477; cv=none; d=google.com; s=arc-20160816; b=YV9+WrQtifv7foTocF0+oepyXAtMvWZpxMyHcj9DsootKLn0h6DUqLrDpht6l3EW+q NYPaGbS0RM8+5sENO7tjxoEJZHHUTw4KMJbSnHP5jNLc+8kpM+gIZoPFRigpIcbuHkA5 7hZxynbawYe/I2QGg1Jl+ZAcEP+cpXYHgC9s/VXvyynJZGMamS2GW/1AifMDWSVfcnP2 eBo1kH4EAX13IGjuEndGlE1wkeyNwzTRa/imbse/R/bqGMB/kpsDP36Ams3jrl6M47DX llgSdGXG3SJyrALylHZIFwxx4VjlTKXTxRNu+ktddLF0/BPtjwo/MC11V/U+pUAnS/jy Pg+g== 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=0yN1xtbuTENoGOF/z3unaW2vj0okjuGjJ+dMF6N6tpchWjgoC0LqPEsWfnL6Mpj5Ug kgHiODyxlzoH3U45lW16Grc6EDvtxKa22hq9amhO7RhsGiRcCUR2I8gCv0cHV/ye5QbK U6y+yleTrCM2OOJ/YxIov7P586EBnB/cherIt8Y1Dyh8hGQ5Jc/sCgoLzeokyHvisKXR 49x3I2LKBFJi2o+VU2fVTAIwNc7KTGnZani7jnfYyoHD4WK6oX2bGrAaUYOLlW1p+7SX XBfSq7icyUJvzXLHaqS06lSaxFj6mQGn051lOLe9bJEnrZEndhwj3sRk+AOUdvv6cGhS bIpQ==; 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=bHuwwC9Q; 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 j1-20020a50d001000000b0056e07a2e666si960322edf.193.2024.04.05.11.57.57; Fri, 05 Apr 2024 11:57:57 -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=bHuwwC9Q; 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 98B0468D18A; Fri, 5 Apr 2024 21:57:35 +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 920DF68D095 for ; Fri, 5 Apr 2024 21:57:26 +0300 (EEST) DKIM-Signature: v=1; a=rsa-sha256; c=simple/simple; d=haasn.xyz; s=mail; t=1712343446; bh=0waB0ZRpG4JRcU/69Vg8TSniLYKB5lbR7owghTOYBJo=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=bHuwwC9QQsBg65hwv9BnhIAviqFds4FY0/whFxgr2hvakg1IhjENP8nV8DbgbDxac GYBvzbYtPzqC6Ycrne0150gLHjzrOOMEFRieXHEbzYWrie2aLhQdJHV1Q1AihW+4mb UTOM+fF8roTGAtM1Z2owEwoGCdayD9FispJcF4o4= Received: from haasn.dev (unknown [10.30.0.2]) by haasn.dev (Postfix) with ESMTP id 5142042835; Fri, 5 Apr 2024 20:57:26 +0200 (CEST) From: Niklas Haas To: ffmpeg-devel@ffmpeg.org Date: Fri, 5 Apr 2024 20:57:13 +0200 Message-ID: <20240405185721.111072-3-ffmpeg@haasn.xyz> X-Mailer: git-send-email 2.44.0 In-Reply-To: <20240405185721.111072-1-ffmpeg@haasn.xyz> References: <20240405185721.111072-1-ffmpeg@haasn.xyz> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 03/11] 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: EH6HOUOGGey7 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 } }