From patchwork Sat Feb 17 20:05:03 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 46313 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:dda5:b0:19e:cdac:8cce with SMTP id kw37csp458997pzb; Sat, 17 Feb 2024 12:03:41 -0800 (PST) X-Forwarded-Encrypted: i=2; AJvYcCUtxnErvpvrEGxK1TZowJ+XUrwDUcWvd3NaY7degjLTBDvFmJqcUph+iPekhmLejNVTQhMI/f/4JrleDXz4MJs93kWTjixSWWns6w== X-Google-Smtp-Source: AGHT+IEaINuQAb60OHJUx12bcFh3dMtTkukvOaNRWe36FIGmNRcSgHRVs8R6PV6147icVOVLvDMy X-Received: by 2002:a17:906:578e:b0:a3e:3a7f:670c with SMTP id k14-20020a170906578e00b00a3e3a7f670cmr1021795ejq.14.1708200220867; Sat, 17 Feb 2024 12:03:40 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id l20-20020a17090612d400b00a3d7973f695si1058380ejb.934.2024.02.17.12.03.40; Sat, 17 Feb 2024 12:03:40 -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=@outlook.com header.s=selector1 header.b=l3yq6atn; arc=fail (body hash mismatch); 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=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id B362A68D2FB; Sat, 17 Feb 2024 22:03:31 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR03-AM7-obe.outbound.protection.outlook.com (mail-am7eur03olkn2089.outbound.protection.outlook.com [40.92.59.89]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 65BAA68D2F0 for ; Sat, 17 Feb 2024 22:03:25 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=MRUNLeq2eIg5MhmtazDuZKrMTvHXr3ay/sNdGWxGP2dNCUJA3hPSxD8lUfH/BwoABN3GQf0LxaMY8cL7GV94EogG91QcsKzT693jbUgfMWLQ4N1EFF8CtR2EfEo9x092xRy8u4uB5qdMkQsN6c/8l0/bwf24XdbiCPperto1+OeQa3GjRl382q2s6BWo89sZ32VblOkX2Rpjvmor8hkyT6rGAQxBVzYmNuwtjUtmoR4Q+7HRiM69TxUZ9P8Pd8v9jatXGEt0lH/QIKKGneMOwSBsiobBu6IQiXXnJHYudCWcYjDhXL8NG2l/z8vtifK8AYSkHHSZ2PGjShwZjK9JDQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=O0DcTaQl8BwkmvzXpUW0DgJi/kRjWUTHTTAuyeyxUno=; b=IxmTyoO8IiqyvaaVDT50Wp6+nsdniFUVLNADfbHSaguQQ4bIFzOo9IwE91mzriEAGyJYVPtmGZQdS5L09urwnxDdBoolCETrd/YQKzQYWuwnPZ5NI/ODw4SotCXIuTcFXUk7AEYczrY0pb60QwWpzowyQLsDiggOqKOOW5kuccSZ+1aVRLXCrdr54lwXIPYR19/YJgvk/9RIyj6iSbgtCa34r7w3llxp0wiTSQH37hTocYo2y8Mbiv446OMRa/E/5YmTPK11kdgatlJa+mUmlMBLCz2Z11ZGJq/jhFct+ZimxMCSeFmITC6WK7JsqUmXbUK0kSGqCxjheQCsKnOfpw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=O0DcTaQl8BwkmvzXpUW0DgJi/kRjWUTHTTAuyeyxUno=; b=l3yq6atn1+4AU1C3uW5il1Xs2aeQMeMe/2iCOVvgP7ukG1i8jPHlsW7+7sMCwDAZ2G0G+6L2i6WKJRjDfnoheHGkF51wkDFYxYpheV0dsL0Q2AgF3UBVcVlvMgzuD4zsmNIdQ25zRrgtmyjtuQmogC13FDtIr0FQuicANiYxAdQXaToBctLd3/gj+ymk10E7im8NJIQbawfBSZFP/CGwjKCXJTlGR0lM18YtWmmbwOnVbdTN+b78eii8BYsBsSyydOk1UAftV0Bj2hTxc9q3ZW0n0m9VhA7IgdXAz+ajpw/rIniBvfmsGgJX6EOdc96jqGxCXsSxwxU8DX8ziqSmMA== Received: from GV1SPRMB0063.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:109::7) by DU2P250MB0397.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:27c::16) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7292.31; Sat, 17 Feb 2024 20:03:18 +0000 Received: from GV1SPRMB0063.EURP250.PROD.OUTLOOK.COM ([fe80::ffe3:46c:6214:2504]) by GV1SPRMB0063.EURP250.PROD.OUTLOOK.COM ([fe80::ffe3:46c:6214:2504%6]) with mapi id 15.20.7292.026; Sat, 17 Feb 2024 20:03:18 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sat, 17 Feb 2024 21:05:03 +0100 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [F78kFqq3CDA53qx/NcLEbUQXR7+r7FN9vKbujyMtPds=] X-ClientProxiedBy: FR0P281CA0233.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:b2::6) To GV1SPRMB0063.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:109::7) X-Microsoft-Original-Message-ID: <20240217200503.2524467-3-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1SPRMB0063:EE_|DU2P250MB0397:EE_ X-MS-Office365-Filtering-Correlation-Id: ef68d916-116d-4d8c-bb41-08dc2ff37bea X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: WCh9GgfCtkAH+9Tb3DsTx/NxenUDas3yKDY7dShcxLRiNoS/hmSBPmVqfOZqUVYkDCKZfd1eDltrwDL/E7vXX6DxAqKsgS2xxI0ouSyyLYzzlfu21/O+wF4Ch+orGgMQVAUnU9MMEv0AQtkHSLsC5CCWHYD8qLSvhyOKz94LVzVrR/ZGTUj/YOXosw+oOLfDOtacVpIWb6bVFhfVx5H9UKesSSxop5uWYdmNEK/VafPOD4aRoQ8woVxNkQaHRnPWw2elFfd19DINSJcE3l59egktyo4FjziHk4pebOG7TA70Ldn5W9ukpf/+ve15HIk3RTYKyUzfuuRcc5/4/7APpAnVqayNZRK8amFoPo68bhbOAoNrQ4nXxpMuwsV3D8fQ/CiGN/IYqznwPGkQiTXBIEUGu5wXmfXxAYNyqk32n07V9fARsIiMYemAmCBhsOWDsu5AxG0Rgi+MBa2VdbXtvAhtEVisKs7SpbD7vk9bnnmDSXBEGYeiqI0sQVyixzQ6k0BBRl+4BmQZXCfMiJczwkwO2HbpYSDlHEoO5lorX61w/SmsMQWx5BrMZI2EJErJzmzg5zt2HzV6PScDzZxZng8nB7Ge8lLReYx4SciyH23wzWN5pOnYRfOU3/g1NuZO X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: Rf5Bf8uweNhtuNQz1a9DA3MpryFizOb8AqWq1eD5uvSCoQ5ByJvD1JGWYMs0CW/q4uvPipTZDvBtSb5BogHbhJ4/EZOrSsQh/SGUjwSks8VR7K2Wdt1gQrX1dhzqAa1uFLxL2AD7b8wfn9cueH65aohwzc0f3GwRlfOTl2aSJb08yuOvY2HnHBZT70dTKZTh6ReBp8dBvPzReh4gWkn70PjAMVzUpvvTJygsVNGtkFI3ynFbUA3J3y+81dgM7OpDG8gaUsdUxpkfumm95YxxsChQWHP0Hv4PCxBNpBi5VMeIart9fTMyFn7tDgvW5n2BxNeota0qQ8gNMNym7KMHAekzLCgNWMoOnD+eF7dyxyO5hVJQxUgG8oN+2dYdK2zOALbtJB4jvrb6hRUJ14+h7hF6UHL+GwyVxA9fe3MSodNto+T1Yry7UFZQLGJoa27gdCz+rfXSfYvm3V7r3iO+zJEUZiBKhzWEGtmHkw/nZtM1uiAbaJIKb6/JA/94uDyXlFudYIZpKOfpeU8hWkVmLyamEklAu3MGbl6QO+Gof0aIptzUGhzI62cHfD7oAA7x9EWQqBaEM429GaUXxA+xWT30NsZwyx7jIcsCzwu6kpiCZIVIgDfjYcen6bMnx8dhs2FMrFFzKtTZMptaua962jF7rqbN2TdrVg6+jZ9ceoX+pq1HXv2X+4zvrDMTa/QSAAzUlqjJOf3uVZBJ9i0bWa9PocN2AZTPz/jAuGneOpINcCArh3IyfQeQzMrL23yjh7W7PSy7SN92raITlaXX+kYFivfAk0wJ023TprdelfHHmTjUBvUZtMO4M0PJnjP8rIso7sQOotulWniAR7pUbo6TaaHgFCVz33XhXkPx9E3xsp5twe++bwBKsNmz7cAuGOBx/iJTAP7foiPS6uMN7Oh0uIZ/yXyjQRY71UZfhmcwLNdaN7c47rPbESxLN9fraiuMDgwxMDREH/j5J8JAF2cbYFszCXzapaRJtwRKKX6dQr69lekGa7IosCrVCs698Fdbb2kyitp+rrRfQjS51Ng/W9kIjwRMYjdRiTxdyeJVgr1C/HPrseS4EMpWU+hS7OrWxFoK09RnEP3COqNaTLUNG5yqEBVIh0vnTcqSdBdALvd0uIo98cGrQ+Tv7xxOZTzniaT6oHAN69lwkRJjNkByv4jAbxuXX5jf2zs8bfo2oEQC6a0x5/NgAGMvxRSEF/iQcj3BXrl2OFnDxZmCFYuXm+AB8ergyI76aXON9RwsbnXo2wMIQeWURrytobXW/LvItNtQgDjOnq72n6xvPA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: ef68d916-116d-4d8c-bb41-08dc2ff37bea X-MS-Exchange-CrossTenant-AuthSource: GV1SPRMB0063.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 17 Feb 2024 20:03:18.3608 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DU2P250MB0397 Subject: [FFmpeg-devel] [PATCH 4/4] avcodec/internal: Move ff_exp2fi() to aacsbr.c 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: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: CtQtyU81niKl Only used there. Signed-off-by: Andreas Rheinhardt --- libavcodec/aacsbr.c | 39 +++++++++++++++++++++++++++++---------- libavcodec/internal.h | 22 ---------------------- 2 files changed, 29 insertions(+), 32 deletions(-) diff --git a/libavcodec/aacsbr.c b/libavcodec/aacsbr.c index 683c079b91..da9e160a57 100644 --- a/libavcodec/aacsbr.c +++ b/libavcodec/aacsbr.c @@ -31,10 +31,10 @@ #include "sbr.h" #include "aacsbr.h" #include "aacsbrdata.h" -#include "internal.h" #include "aacps.h" #include "sbrdsp.h" #include "libavutil/internal.h" +#include "libavutil/intfloat.h" #include "libavutil/libm.h" #include "libavutil/avassert.h" #include "libavutil/mem_internal.h" @@ -47,6 +47,25 @@ #include "mips/aacsbr_mips.h" #endif /* ARCH_MIPS */ +/** + * 2^(x) for integer x + * @return correctly rounded float + */ +static av_always_inline float exp2fi(int x) { + /* Normal range */ + if (-126 <= x && x <= 128) + return av_int2float((x+127) << 23); + /* Too large */ + else if (x > 128) + return INFINITY; + /* Subnormal numbers */ + else if (x > -150) + return av_int2float(1 << (x+149)); + /* Negligibly small */ + else + return 0; +} + static void aacsbr_func_ptr_init(AACSBRContext *c); static void make_bands(int16_t* bands, int start, int stop, int num_bands) @@ -79,13 +98,13 @@ static void sbr_dequant(SpectralBandReplication *sbr, int id_aac) for (k = 0; k < sbr->n[sbr->data[0].bs_freq_res[e]]; k++) { float temp1, temp2, fac; if (sbr->data[0].bs_amp_res) { - temp1 = ff_exp2fi(sbr->data[0].env_facs_q[e][k] + 7); - temp2 = ff_exp2fi(pan_offset - sbr->data[1].env_facs_q[e][k]); + temp1 = exp2fi(sbr->data[0].env_facs_q[e][k] + 7); + temp2 = exp2fi(pan_offset - sbr->data[1].env_facs_q[e][k]); } else { - temp1 = ff_exp2fi((sbr->data[0].env_facs_q[e][k]>>1) + 7) * + temp1 = exp2fi((sbr->data[0].env_facs_q[e][k]>>1) + 7) * exp2_tab[sbr->data[0].env_facs_q[e][k] & 1]; - temp2 = ff_exp2fi((pan_offset - sbr->data[1].env_facs_q[e][k])>>1) * + temp2 = exp2fi((pan_offset - sbr->data[1].env_facs_q[e][k])>>1) * exp2_tab[(pan_offset - sbr->data[1].env_facs_q[e][k]) & 1]; } if (temp1 > 1E20) { @@ -99,8 +118,8 @@ static void sbr_dequant(SpectralBandReplication *sbr, int id_aac) } for (e = 1; e <= sbr->data[0].bs_num_noise; e++) { for (k = 0; k < sbr->n_q; k++) { - float temp1 = ff_exp2fi(NOISE_FLOOR_OFFSET - sbr->data[0].noise_facs_q[e][k] + 1); - float temp2 = ff_exp2fi(12 - sbr->data[1].noise_facs_q[e][k]); + float temp1 = exp2fi(NOISE_FLOOR_OFFSET - sbr->data[0].noise_facs_q[e][k] + 1); + float temp2 = exp2fi(12 - sbr->data[1].noise_facs_q[e][k]); float fac; av_assert0(temp1 <= 1E20); fac = temp1 / (1.0f + temp2); @@ -113,9 +132,9 @@ static void sbr_dequant(SpectralBandReplication *sbr, int id_aac) for (e = 1; e <= sbr->data[ch].bs_num_env; e++) for (k = 0; k < sbr->n[sbr->data[ch].bs_freq_res[e]]; k++){ if (sbr->data[ch].bs_amp_res) - sbr->data[ch].env_facs[e][k] = ff_exp2fi(sbr->data[ch].env_facs_q[e][k] + 6); + sbr->data[ch].env_facs[e][k] = exp2fi(sbr->data[ch].env_facs_q[e][k] + 6); else - sbr->data[ch].env_facs[e][k] = ff_exp2fi((sbr->data[ch].env_facs_q[e][k]>>1) + 6) + sbr->data[ch].env_facs[e][k] = exp2fi((sbr->data[ch].env_facs_q[e][k]>>1) + 6) * exp2_tab[sbr->data[ch].env_facs_q[e][k] & 1]; if (sbr->data[ch].env_facs[e][k] > 1E20) { av_log(NULL, AV_LOG_ERROR, "envelope scalefactor overflow in dequant\n"); @@ -126,7 +145,7 @@ static void sbr_dequant(SpectralBandReplication *sbr, int id_aac) for (e = 1; e <= sbr->data[ch].bs_num_noise; e++) for (k = 0; k < sbr->n_q; k++) sbr->data[ch].noise_facs[e][k] = - ff_exp2fi(NOISE_FLOOR_OFFSET - sbr->data[ch].noise_facs_q[e][k]); + exp2fi(NOISE_FLOOR_OFFSET - sbr->data[ch].noise_facs_q[e][k]); } } } diff --git a/libavcodec/internal.h b/libavcodec/internal.h index eb9e0d707c..04f7cebdcb 100644 --- a/libavcodec/internal.h +++ b/libavcodec/internal.h @@ -26,10 +26,7 @@ #include -#include "libavutil/buffer.h" #include "libavutil/channel_layout.h" -#include "libavutil/mathematics.h" -#include "libavutil/pixfmt.h" #include "avcodec.h" #include "config.h" @@ -157,25 +154,6 @@ int ff_match_2uint16(const uint16_t (*tab)[2], int size, int a, int b); unsigned int ff_toupper4(unsigned int x); -/** - * 2^(x) for integer x - * @return correctly rounded float - */ -static av_always_inline float ff_exp2fi(int x) { - /* Normal range */ - if (-126 <= x && x <= 128) - return av_int2float((x+127) << 23); - /* Too large */ - else if (x > 128) - return INFINITY; - /* Subnormal numbers */ - else if (x > -150) - return av_int2float(1 << (x+149)); - /* Negligibly small */ - else - return 0; -} - int avpriv_h264_has_num_reorder_frames(AVCodecContext *avctx); int avpriv_codec_get_cap_skip_frame_fill_param(const AVCodec *codec);