From patchwork Sun Apr 14 18:30:02 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 48053 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a21:670b:b0:1a9:af23:56c1 with SMTP id wh11csp1407375pzb; Sun, 14 Apr 2024 11:30:41 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUe2ZxKmDFUH7CmmxWMZN+GqiPjAyQezsi7l8GLGjPbsXLIBaeFp6LHadLSPiRQWqVMtYkbcDFH6QFSLKo+Z8OcQRablVBeN9uiNg== X-Google-Smtp-Source: AGHT+IEvFDR+XaHZUg84WSxbXmYtSHPlQrUveDm5keVHFwth8QJ9Q46zSdbAB0ZtqiqeB/C/eBDD X-Received: by 2002:a50:cddc:0:b0:56d:c73f:98ab with SMTP id h28-20020a50cddc000000b0056dc73f98abmr7701239edj.19.1713119440637; Sun, 14 Apr 2024 11:30:40 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id w8-20020a056402268800b00570241f6321si552043edd.611.2024.04.14.11.30.40; Sun, 14 Apr 2024 11:30:40 -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=@outlook.com header.s=selector1 header.b="T/7Aw42p"; 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 EA14168D3A4; Sun, 14 Apr 2024 21:30:37 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02olkn2085.outbound.protection.outlook.com [40.92.50.85]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C467868D32E for ; Sun, 14 Apr 2024 21:30:30 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=TWX9NBeeuPz+b31tr/aEkHx0WZBBGnyaRjOgbXESdB+yQZKgf0G++zEvVW5yymGaMIS7bbikmLkcKeV+3iWSPZxwSr2l+iSGM+owVGNtDrgngagC0RX3jrpAb1a8Afj5Zxc2f17hrUEcB6yyPMfHN4Uqe9559a1ceS0jKQzTcX4JGxj7odyq55qKn8M/grOlgI8UAPPv7ECxJcq2UPv7ec4/jt9cTDvUGJ8a7Gev5VqPyrmduiiUBKzbcaY9gHw4FShXrCzzOunVKg0V6JNiCwtHU/mt1IW8Y2WAeMFz2aY9w8l355hTImAw3pk6nM7w2lyTH79k4zFJIz8W9CORsw== 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=S0k56OADrV72b3mMi9T5ltKZ+M/JV7o8ZUZutY8kbDs=; b=EGlUpqgl+XvX3fLv/ZdSNcVEdZ4JUC6dV5noQTuFjNrg6Z4kWFR0pThm1UveUHXbg48cuwXNMfWjU97HvZD5LS5ip4zWOcgEMFvHpx2bl7z4US0T0gq9rpXrpx0twl1zHvoueXbl9YTFxoRWC0M9cGynQMXwAy60rFzRoHSGhdg4XfYAG9Km2ucTZ/gjnIDwj3u0zXNjEkfxoamThyEoUH9odGqW3mwSeOCvEBSkgvshwxh8Cz48HhEpmuokc6fjVKG9f+mOLc7EM8c+lIXS2A2BYPV7NW35t8zYMOO9TIV7QgS19YdRJmu5zo7/OMxF5uHtxFSUw89NgqcfhJoNxw== 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=S0k56OADrV72b3mMi9T5ltKZ+M/JV7o8ZUZutY8kbDs=; b=T/7Aw42peuiTzIayJmcyxyj2aJcKhGHGtzZIvKP5qVQTv8IwZ9x7TrWg2mtpDjHjWhT9Pw94rJkIZU1pa0UzoqrbdcXJhvMzV7i+H8/oJPocHjcBTDt7OvZtBmkGcHmE5ij3uYDBt1u5/8i7xPK5PTv6lEXiQ57b8OQLEn6PjurlINdHqAKegJC0Et/J8UlGol+25qTjuwyMqwHycjK7ACUaqCugpvP7t95TPGexnLjpX5ZgoILCrXwrrdGxP7LdVlqTmik0dhgWFgk1lPPQOMW5QzdJM9q0XLfImqvg2263SzXxlEIcWWR/cC4ML4wevy5Nx4/EGAeYyaHyqdUf/g== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by PR3P250MB0305.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:17c::13) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7409.55; Sun, 14 Apr 2024 18:30:29 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::1f29:8206:b8c3:45bb]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::1f29:8206:b8c3:45bb%3]) with mapi id 15.20.7409.042; Sun, 14 Apr 2024 18:30:29 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Sun, 14 Apr 2024 20:30:02 +0200 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [3VuscOpd++/3Pg/Klj5bJ7d7/C1nzVMPrD4/6SgZJlo=] X-ClientProxiedBy: LO2P265CA0374.GBRP265.PROD.OUTLOOK.COM (2603:10a6:600:a3::26) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240414183005.3201646-2-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|PR3P250MB0305:EE_ X-MS-Office365-Filtering-Correlation-Id: 6c067200-9934-4562-80aa-08dc5cb0f5ec X-MS-Exchange-SLBlob-MailProps: 9IecXKUgicBjqiCWzr+pRkDdXxvh1/bA1HHL1eIJ/Oc/gfEKX+MmRzYo/9Os0vQ1r+6DQQ5IRmBVixVuMgACvopFfk3oeTIWiHHuCv0Cb1PXMWJxDg4ptQlMUgONd8s6+PoUSCM4lZWTD0KpcAlAizVu9Mj07goVeLBFRKTzo30a1263jAV7zud07j41mrOCHmLeKZxif1WxcMrLb0k8w/VLfsjgMw9DwP1zG962HIIL8/X6LImDFxvE/4UT7fpJTNHKVSiEvywczCwV6fJCLooakWrde0EZTe8aWDqvz5zoJrx6iq8f9DPESALmuy7SSvEJmpEANT0je711nkJ1453C7ak2hGYxjztbG0XpG1mXKTpxbVx9czQOmUZoQZW0zwN/WpeToZsUn9kimcX+C/MUDH5dVxa2gzZ0m2ro0OYcMqv/Hks0c0ZF37Tcn9q4rxNDGDvHdbg5ca3ZIIxDFAl6hpk93BTzQ2ZHNGSGO227P4iCpt2cZbm9/yIfteaAMBNZU9yqjoYtgj09Q2sMCgkLlbup021mm6+ouFIXHWx3spnwyCo/32GAZYJ5enYBf2tSUmJSQjEMIEhJoOWzgQ1RKA8ULTeLWUVZ85KmSiprJNtXIxkhgCYHx13ux3zMuytpl0b1bsFBGAXP9uljeLA1ujCPqdk6354pBnIVo1EMf1174FuzYPTxJAmWdpOjfDAsf1sgCZq5FMVA9FxXdnuMufCqk9D00z38gznYa5Z4EiU0bJN9VQ== X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: 2kajiS5zGAJxtGRSL6DnElYFSkCQ/2OC2DZ9fkihjVPpqlo3PC9YUHE2Mxf/gZKimjbpvNp8psnHahYNVR764uqS+eOBbE3fJdTadCLaSUe1hBx5giSvzZ81Y5WeNVBGAxpt9+9P2C0ptIQ0HBFCKBuTWhDgM+hnIlCuMIFojpdafoNDZPIk11LqmP+UhOIwUzCiN/8D7qlXVhmy0Bd+lv8ME/pQTcANOTbLR0Fb2b/6OhSHcPwGEgWrde7oPJ+3n1hNrORm1sXgfuOXgVZPtl8z5OXKqL28llnUQWRtbbJij9ZtaFWsVQlSoTJAyjnZv/5vdNfpKGEMzH6ETB36OPmw23IdEVh0GY9r2Y0aa+62FzDhSFm7ywYOJIa1l4nfFI4hq4nSNP691YqxgQPXsjcNqjCXQ/vqm3wajR0yQGX+YPnCYbr/eDcHuH7Uy/p1M5D071evfNKslV5atiJtGJ1UTMS2RfuPu5+hk+mhMKd03DmP80P2wu2HUZBNwcwmCI2+4rucFUxF+/lTx/wEoD8Td9fIGym0Cy93Mx7aSKi6U5NyVqserCw2IKrlpadnPw4GE+4NL/bCF6L1jJphBitJeInc8Rcb6PPCTsqXCHOBt0t6v5XErzyJwUImlUQB X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: UUprW+3eOM4/dd2Gn5JbhHMK/ki9XsAmcTRorAcnzvgjWfFDUtYgOTcKGOxQ6P9nUY0NcLVnxvbZSmsInE0Zk7GWJaJhZteSfWnRWtdQd0JID5qEJTzj8ZgiVD6wBU34noGjJoM6Nx8LmBNguBmde/JW1mH5/CUcSe4CpflyuUTvRPquOWAbxAX1mApx4W7gApTeXJBwD0EIUt783LMuk1ilFdPLyMO6TX0PY3xEdGd+Zx/Ky+3yGqeqOz7my0hMbrkfV4WYSLYVxVaBQAW4DyP7kvvQJqVH/MDrkZIW6BY21y2uJBSKU2hjms0qMYszi8jVF5VFi27J+WLDC84nPjmljThwRn+b1v7X6bTlVGevpDWKCMIbRKeYw6blw74Nz0GxuXD+UMR27u4HOtQlODwygo3Ue2/LSsAf6Lh6NmPxvF7CmLWlPXlrl76IB1eGkghko8Md5pgxrJ/6FRDA6L91RP0+G+6W7+WQVOVVa06hSYTeq9UupHvrfX/voP/GJSguFuCY1sPNTx3sD5UP9eDgNIUDLY2czD/7BdBP+S22sSeWS4Gp3nMum2+0jM/TNqFIiuwQd7QzTraa27tz+/y7MwW6UGNOd2ZJAF6B67b1/uh7vcDMa4Q4ftkE8qQK540zK73i1T8iQiSLwkTat20pY2GMnVQFLvlNcDCWiuf2TspoJ8WLfPcdvh/sz4vBPXLj7XY71j6GtafVsC6q/YPZpqH/f0FVA5u1j5WtFthJ25tx+jqWUmS9Vxem10akoFOtPOffTolgFuddaydDvbEDES7DrGaHihoxz+2J40It423GanSC32yBJvD3IOEEJd5a4RjqLLbE/h8hXoF9YWipT8AFBbx/hVqR70RZEB4sbDRqk0dmJMQqVP250Tse5n6DNsdqvnPeu15WLX7K1Eid8qLu0bkg3WJAUPyDYc24V7puGqAWMQeIya5B2wm1Uzodj6fQQx28qKf9jhKFSijCAwFnFBK3+Qu3j18IXgUYpcNNFG9jwqkA515JP16a++CQ5RrIwJ35B0AUXI+X9BEu3F5pVEc0HV5IYwBMsSXGQN5NV5e5AXmdXWbgdyd6KkiG8oIhrxHb4VGgmv0xET4KiY6nJB03G9RjpLFbvzQjVmB70tskpe1DrseHBwYFLB/RN+VD3pYqDc0Q9DCyLqe8ZIzOiRkjiG7/GBfZaI5eAVt6vQmB+YkACcsY9RQdr8a18REBvjnukxZ2QxJXQUJfag5V7CE/A9NRk7d1/iGe8t8Fu/f7A2WZltlMpYB71M0yYEFxuJYy0Gibd3FqtA== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 6c067200-9934-4562-80aa-08dc5cb0f5ec X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 14 Apr 2024 18:30:29.1521 (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: PR3P250MB0305 Subject: [FFmpeg-devel] [PATCH 3/6] avcodec/ac3enc: Avoid indirections, allocations of small arrays 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: pm1X5lkoptnC Signed-off-by: Andreas Rheinhardt --- libavcodec/ac3enc.c | 44 ++++---------------------------------------- libavcodec/ac3enc.h | 22 +++++++++++----------- 2 files changed, 15 insertions(+), 51 deletions(-) diff --git a/libavcodec/ac3enc.c b/libavcodec/ac3enc.c index a3a05b3ac8..1ef670622a 100644 --- a/libavcodec/ac3enc.c +++ b/libavcodec/ac3enc.c @@ -2180,13 +2180,10 @@ static void dprint_options(AC3EncodeContext *s) */ av_cold int ff_ac3_encode_close(AVCodecContext *avctx) { - int blk, ch; AC3EncodeContext *s = avctx->priv_data; - if (s->planar_samples) - for (ch = 0; ch < s->channels; ch++) - av_freep(&s->planar_samples[ch]); - av_freep(&s->planar_samples); + for (int ch = 0; ch < s->channels; ch++) + av_freep(&s->planar_samples[ch]); av_freep(&s->bap_buffer); av_freep(&s->bap1_buffer); av_freep(&s->mdct_coef_buffer); @@ -2200,19 +2197,6 @@ av_cold int ff_ac3_encode_close(AVCodecContext *avctx) av_freep(&s->cpl_coord_exp_buffer); av_freep(&s->cpl_coord_mant_buffer); av_freep(&s->fdsp); - for (blk = 0; blk < s->num_blocks; blk++) { - AC3Block *block = &s->blocks[blk]; - av_freep(&block->mdct_coef); - av_freep(&block->fixed_coef); - av_freep(&block->exp); - av_freep(&block->grouped_exp); - av_freep(&block->psd); - av_freep(&block->band_psd); - av_freep(&block->mask); - av_freep(&block->qmant); - av_freep(&block->cpl_coord_exp); - av_freep(&block->cpl_coord_mant); - } av_tx_uninit(&s->tx); @@ -2457,9 +2441,6 @@ static av_cold int allocate_buffers(AC3EncodeContext *s) int total_coefs = AC3_MAX_COEFS * channel_blocks; const unsigned sampletype_size = SAMPLETYPE_SIZE(s); - if (!FF_ALLOCZ_TYPED_ARRAY(s->planar_samples, s->channels)) - return AVERROR(ENOMEM); - for (int ch = 0; ch < s->channels; ch++) { s->planar_samples[ch] = av_mallocz((AC3_FRAME_SIZE + AC3_BLOCK_SIZE) * sampletype_size); @@ -2486,21 +2467,6 @@ static av_cold int allocate_buffers(AC3EncodeContext *s) for (blk = 0; blk < s->num_blocks; blk++) { AC3Block *block = &s->blocks[blk]; - if (!FF_ALLOCZ_TYPED_ARRAY(block->mdct_coef, channels) || - !FF_ALLOCZ_TYPED_ARRAY(block->exp, channels) || - !FF_ALLOCZ_TYPED_ARRAY(block->grouped_exp, channels) || - !FF_ALLOCZ_TYPED_ARRAY(block->psd, channels) || - !FF_ALLOCZ_TYPED_ARRAY(block->band_psd, channels) || - !FF_ALLOCZ_TYPED_ARRAY(block->mask, channels) || - !FF_ALLOCZ_TYPED_ARRAY(block->qmant, channels)) - return AVERROR(ENOMEM); - - if (s->cpl_enabled) { - if (!FF_ALLOCZ_TYPED_ARRAY(block->cpl_coord_exp, channels) || - !FF_ALLOCZ_TYPED_ARRAY(block->cpl_coord_mant, channels)) - return AVERROR(ENOMEM); - } - for (ch = 0; ch < channels; ch++) { /* arrangement: block, channel, coeff */ block->grouped_exp[ch] = &s->grouped_exp_buffer[128 * (blk * channels + ch)]; @@ -2524,16 +2490,14 @@ static av_cold int allocate_buffers(AC3EncodeContext *s) return AVERROR(ENOMEM); for (blk = 0; blk < s->num_blocks; blk++) { AC3Block *block = &s->blocks[blk]; - if (!FF_ALLOCZ_TYPED_ARRAY(block->fixed_coef, channels)) - return AVERROR(ENOMEM); + for (ch = 0; ch < channels; ch++) block->fixed_coef[ch] = &s->fixed_coef_buffer[AC3_MAX_COEFS * (s->num_blocks * ch + blk)]; } } else { for (blk = 0; blk < s->num_blocks; blk++) { AC3Block *block = &s->blocks[blk]; - if (!FF_ALLOCZ_TYPED_ARRAY(block->fixed_coef, channels)) - return AVERROR(ENOMEM); + for (ch = 0; ch < channels; ch++) block->fixed_coef[ch] = (int32_t *)block->mdct_coef[ch]; } diff --git a/libavcodec/ac3enc.h b/libavcodec/ac3enc.h index 41b9a3a20b..54e14d43d9 100644 --- a/libavcodec/ac3enc.h +++ b/libavcodec/ac3enc.h @@ -127,16 +127,16 @@ typedef struct AC3EncOptions { * Data for a single audio block. */ typedef struct AC3Block { - CoefType **mdct_coef; ///< MDCT coefficients - int32_t **fixed_coef; ///< fixed-point MDCT coefficients - uint8_t **exp; ///< original exponents - uint8_t **grouped_exp; ///< grouped exponents - int16_t **psd; ///< psd per frequency bin - int16_t **band_psd; ///< psd per critical band - int16_t **mask; ///< masking curve - uint16_t **qmant; ///< quantized mantissas - uint8_t **cpl_coord_exp; ///< coupling coord exponents (cplcoexp) - uint8_t **cpl_coord_mant; ///< coupling coord mantissas (cplcomant) + CoefType *mdct_coef[AC3_MAX_CHANNELS]; ///< MDCT coefficients + int32_t *fixed_coef[AC3_MAX_CHANNELS]; ///< fixed-point MDCT coefficients + uint8_t *exp[AC3_MAX_CHANNELS]; ///< original exponents + uint8_t *grouped_exp[AC3_MAX_CHANNELS]; ///< grouped exponents + int16_t *psd[AC3_MAX_CHANNELS]; ///< psd per frequency bin + int16_t *band_psd[AC3_MAX_CHANNELS]; ///< psd per critical band + int16_t *mask[AC3_MAX_CHANNELS]; ///< masking curve + uint16_t *qmant[AC3_MAX_CHANNELS]; ///< quantized mantissas + uint8_t *cpl_coord_exp[AC3_MAX_CHANNELS]; ///< coupling coord exponents (cplcoexp) + uint8_t *cpl_coord_mant[AC3_MAX_CHANNELS]; ///< coupling coord mantissas (cplcomant) uint8_t new_rematrixing_strategy; ///< send new rematrixing flags in this block int num_rematrixing_bands; ///< number of rematrixing bands uint8_t rematrixing_flags[4]; ///< rematrixing flags @@ -232,7 +232,7 @@ typedef struct AC3EncodeContext { int frame_bits; ///< all frame bits except exponents and mantissas int exponent_bits; ///< number of bits used for exponents - uint8_t **planar_samples; + uint8_t *planar_samples[AC3_MAX_CHANNELS - 1]; uint8_t *bap_buffer; uint8_t *bap1_buffer; CoefType *mdct_coef_buffer;