From patchwork Wed Jun 22 01:43:50 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 36374 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:1a22:b0:84:42e0:ad30 with SMTP id cj34csp2555248pzb; Tue, 21 Jun 2022 18:44:13 -0700 (PDT) X-Google-Smtp-Source: AGRyM1vCgzQPcMTWOnnfMippjOmy75xBanuBY/2J+mCg4CG07YzaMF67lp4yB7/JGu/4fgnqZijy X-Received: by 2002:aa7:d6c9:0:b0:435:6698:589a with SMTP id x9-20020aa7d6c9000000b004356698589amr1252650edr.59.1655862253286; Tue, 21 Jun 2022 18:44:13 -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 o1-20020aa7c7c1000000b0042de68c0303si16864837eds.628.2022.06.21.18.44.13; Tue, 21 Jun 2022 18:44:13 -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=qlN2pyMy; 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 115B368B6BE; Wed, 22 Jun 2022 04:44:11 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-VI1-obe.outbound.protection.outlook.com (mail-vi1eur05olkn2048.outbound.protection.outlook.com [40.92.90.48]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2321E68B5B0 for ; Wed, 22 Jun 2022 04:44:04 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=XEkT0vmbcMbO9GhZYDMk0SMZsSwd3wC3k3zx0RIO3l50Vymp+xpDXw2DX1jUkxoENZSZWfc+NXrFD3FNflmwd6vnP9X//IS4fiFH0VAy22Nc5kBcIOYLkocLCJyph77hV1pvz6SDDlh5I+4w7XqwyAJvfeTOnLqf5uMpuBwkqQB+YOG2bWdj8oIDp0vM4HjoW4lQJlMsv3YBG3hyPkmq2bgEsTYs7RHHcpsIX36/LYA6hAEQ3Yq/URVL/8WjtktYCjw34oDH7FEOk4VhBovWa0a22SV9PEwQylVLAEeifJNg2cFWfc23dT+pca+qiOgx1DtAxlMexLplAAj9FY2LOA== 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=NRg6//DDZAYGyNaer8kMtIODtG+RWmavyWW2mSlXMp0=; b=PgKQ/8HJbFoAFPtnPax1ZQ5JfjIvWJcAjhabU3qXFufVnx72ueJBmyhxP6074vRwc1zAS3vaB3x5Ueq0YtyjIIlYnm+/EkFdwZ50sYHeoFFDOjjr7rcRXZxTlsVwQpzufKjVS4OYzY++hYaCA3XjpSDK7/3ngdcuqwP5GcZjJCH1jnDgfHevpBgWB6HoTLarlqsB7PaZEOQNrzxPnW/dUbNyQ1X8WKTCBuOmlQGvvlbrUWj9Gma1+LoER1RUEA08sC6oAofwOe+ZlFG71Q0bzt9/ZMH4ahSJWxoKwRGmOUgZq0iT9WqHPGS7Ti9FnVHfuxJQLr/1istWLdW1zEmRLA== 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=NRg6//DDZAYGyNaer8kMtIODtG+RWmavyWW2mSlXMp0=; b=qlN2pyMyXLoaMUqJ1uP+uxTelLhwXJWoq+UHG2HjAgkhdUtymtXXIGwZKHwF7nCK+8WzP/HqzM4MjBBQL5JGetOwkW37BcOt4XMOD1fRvICRFAMvxUaaFvGfpPD/+kwQcheO+BnS9PAszFKF4E/o4TVFAcbVeNVbDhgKkSei0i9g7enoFNed2FD2Ak7+Ziv0v20EeSLYvUNiGGEnZnHzlPHE+tMjTgRR4q5LhbPkPfrt7y+sYKoPizPr02HcIveI0Vk4qDM/SKDe7xFNFScn7VNwKEnpBEsJM5fgrn+E30VXox++5FMrJhmL32uut4GSumuSRYCkvylwkZjN3fmtLA== Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) by VI1PR01MB3935.eurprd01.prod.exchangelabs.com (2603:10a6:802:62::27) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.5353.20; Wed, 22 Jun 2022 01:44:00 +0000 Received: from DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c]) by DB6PR0101MB2214.eurprd01.prod.exchangelabs.com ([fe80::60b9:9f29:40cc:f01c%10]) with mapi id 15.20.5353.022; Wed, 22 Jun 2022 01:44:00 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Wed, 22 Jun 2022 03:43:50 +0200 Message-ID: X-Mailer: git-send-email 2.34.1 In-Reply-To: References: X-TMN: [3NXPWzjNXSxgXowNLlMNJ0uA86gYKy9f] X-ClientProxiedBy: ZR0P278CA0176.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:45::21) To DB6PR0101MB2214.eurprd01.prod.exchangelabs.com (2603:10a6:4:42::27) X-Microsoft-Original-Message-ID: <20220622014351.431154-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: 39c989f1-322e-4383-ab2f-08da53f0adb9 X-MS-Exchange-SLBlob-MailProps: S/btQ8cKWiQkYSKJ5lHLQLvaaI2Z1oWruYauWI6Z5kHKlwLSUsev99IZlR/itGYIwzOHab2f+A/i0YSEGqNH9EsexaGarCghe7DFfXwTFP09DDP4pWzvhxcmCLI7df7tUFf/m8wOm+L9G7G/kl8EkxIMQim8eo/A7RSpAsRJlKCLHPalmP2bvNkB0yzNsUoQlSJeYJ/eoKEqm9vfGn0EvbbeeugRO+ctdNlpDemnYf7IRowjfVV0ZYvZ3/kSpDzuMtYuFmfa50zXVj80+gAHVuyJQF2DjsSMsgrTSFTykdH//2rUfmpN6xziTZgsWk5IpBczu3aQzgFZZ50Ksh6LR3zZmgDRpvFrb9v/kzNojE8tWPKkuw0Hp9BaH/BptvRY4nMJeheroyVk83TLQ6m48JeEBgbf0jK+zwHuJ1qHV0CrPlKHXBp/sEvFidzD4i+L8H6pmB/B4n1HTHBYQVflIxSKEIzO0CwXN7M2sRYJHQWTGLziV5v+tDaK5fUnIRtRyAUqrkyMayDnwzZNwiICBBdOjiT0J8noSLwnm7YF6yi8ITsYvvHC9YCru/QwOMNNPnB7u4NSuAYV2bAgjcBrVcIvv0FxMjV3n1oJA6IwMDj1xVPq/cY7sOi3T0JPbpjBLbrStCagnOB4h7EvnOeU8C/xkuDsY0IpKkOiTzZqih33RTC+WbmY5oAWLRT5g+I6IREwFNzSj2xU+IcPQnhg1j2wJ8bDHrvW7SmomIW7HtWN1oKqwrLYOnv2ggtd92fQRl6s8MS9/UU= X-MS-TrafficTypeDiagnostic: VI1PR01MB3935:EE_ X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: acmvD3Nu1nZXtZwglpEg6jLyfIwVSlrvDVjLz1GqiiaVqPmwQUzGMTJ7q04xoMX1ZOe0HHzoIdvmymH5cCWwdfTZnVE7vhIQK3jaLxZRcsAJVMMIoRAcEHyHlTNm7WKE4OuZrEocjRz/+8xFituaP1GpV9MrTGtyIKUcpeoe6efJhBD+ylkOJvpc2gw4tT2uMhR08RQ0f3hna+i83oxbWqy0py2NmGAvCWXQoPENCoTjCT8Fbby+zT/rVYO2a0iQMR6nEdPaBYyu/5+4JgVYfUzeUmdBrRzHvUDqxqckE4C2UnfjP6Oi33MgVW7IgQj/sqXyi9R3oSKLk/N1g+1NGgsq2cQQmkh9sCBAQKLCdkLyzKRRKmM92xK7zkpfrUuhauIjNMecEkQ1Hk4Pf5CAO+joP5jl11N/5adpB1Z5WfKhz8jElm1LzgFnB5mALyfSU21KqvqwD7Zc3oPGbl/6F3H/fvlSYSHGUbHdNdf8ItVHVf/FHdLGXHy7BOLQQG9aal6Xbc71Uc+h6i8UQCKYSHRRVRR3q+GGqe1/pMQ7mH+ilsO2fTeUaWdbeqAR2NhXIXFBUJQ0lZYoy7CK63ZPCg== X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: rRev3iSMG5sDZa0VTqAb/u5A80g/b02alzYzl0gM+uvWA1jiWg9brW/iBKbyjeOgp0RdXoJBfK45VFAFGmbtry/O9N0jD1xSI7pMDEyZuJ+nEAJMAo2dgBzPXWoS6fzBBWAb3O6ES5SSyc6lLKv3ZoBAsB1nNgEP8N4D7m475mAIIet7slI/MRSVNK7wbMVG7lWKwXka4uwZlxEAoqWM0b4xoYLUUwgTcmFuxkSaNxZEyCZ4NUEHPagOr7A4/VmdgBOkmpGhgz/tXJ4FhwBDxnYuSWaSW+oRhZm2o2DaMiV10gqmraMu52NrJ7nsiFBbdoh8WcQkDCC5IkjBFhfpP8bJvaKA1mkp7rRXJCJJ83s5AULbHzoPP60KkmCsT4/RWo/f90d32Q0+jMZqiTHuzWqcAkNjHrblqHwrkjPKYZZ45/TIZJUhHjdbZAIo4CW24LOPLZOISfi97fgPlymdVasq1t8CUoN/OfynWdT9DMKtwtH+TeCC0YyaXPC9bkKgJfEeDQzRnAuwsfWYbROiYWm9I1lfRF5sElR4P1McykZS3d8vxvnpuPFaHHEo3zxADGS/q3HdqW/saQEu9LX9jEVhKC4/VDzteWltPaaeT0hG9i1EGVS3n9QwpV/G4bF0QrtM/Lt9KmnEeKXV/nWpB667V95TA+1rIxKdgvwoXnAtsEA1XYDrA9XUcyWxgzy+wfIaTEU8DlZd+EHc0B2jpunLdjXfyTM2j9ruaATEd+RIRO1zoUjI4twSFDlMTzBWzQcVw+ru9xO/Jn63oqYScOiKa9VXGnKkqU/1dlQ0SmjlbbrTYXPrX94+6w4sekckWwrmsHT8BdyTWjFk3l4GW+6Ix8tZk2HRWJUBMJiiOAP19XEtaag5WjH/1RpwXh0C6FCUqKN/4h4JBGMuekmRahf09W131i9WjyuA+tiYNEj/ni5YHFJxqW9K2jvboKAd8pwJhfqldf6TAVAzt3JpH44gPhg3OeRFmq24c2RzHLjtTkzzcXPO9+KORyJS0qeC7QKWO5Cd7vZuvt6ofgXV1QnlR9WQ+yVwSSuZJzMXbV7hx8XMiYSKZNfk8NZnkett8zDjvV4VHf6pqMNxuUKZT28tC3G4OdtDx0LOGy10pW6Jn2qPmdgYYL6gkPcd5zsp3fsE4HFBAUx29SAiirvRkPSF1Ec+7N8k8eT+sOYmtRSS4YAKJKUSfkbOrW2KDOXKOLVCwmwz9AjivNhawV9hnUx4gkm3IdDGXwJanJfESaKAtZw1M/NlvYUA7nGcRu3NzJ9vpSqlxfz89fKppM2J6gKsUchWujUUXuxHGbvGXVeMFtjYEi1E0hoBsHTJnOBeToXWrOaih/NYHy9tdg1xKSVP6r/L0AQQHadmOy0po1jcGwnaXU7/m+HllWbtvb4ATgr1gaKFtHOw5DA60DXKTr0Cw5y3Spc8rJnsTt4qO/6oYZPBUH3Xbu4AWpPX8KEJmcKCQcIJlBY6TSLYjhhxAw== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 39c989f1-322e-4383-ab2f-08da53f0adb9 X-MS-Exchange-CrossTenant-AuthSource: DB6PR0101MB2214.eurprd01.prod.exchangelabs.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 22 Jun 2022 01:44:00.1041 (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: VI1PR01MB3935 Subject: [FFmpeg-devel] [PATCH 2/3] avcodec/hcadec: Move transient GetBitContext to stack 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: pyiF9vCYV/wG This avoids keeping pointers to no longer valid data in the context. Signed-off-by: Andreas Rheinhardt --- libavcodec/hcadec.c | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/libavcodec/hcadec.c b/libavcodec/hcadec.c index 73ff62139d..7054575872 100644 --- a/libavcodec/hcadec.c +++ b/libavcodec/hcadec.c @@ -43,8 +43,6 @@ typedef struct ChannelContext { } ChannelContext; typedef struct HCAContext { - GetBitContext gb; - const AVCRC *crc_table; ChannelContext ch[16]; @@ -299,10 +297,9 @@ static void reconstruct_hfr(HCAContext *s, ChannelContext *ch, ch->imdct_in[127] = 0; } -static void dequantize_coefficients(HCAContext *c, ChannelContext *ch) +static void dequantize_coefficients(HCAContext *c, ChannelContext *ch, + GetBitContext *gb) { - GetBitContext *gb = &c->gb; - for (int i = 0; i < ch->count; i++) { unsigned scale = ch->scale[i]; int nb_bits = max_bits_table[scale]; @@ -326,11 +323,11 @@ static void dequantize_coefficients(HCAContext *c, ChannelContext *ch) } static void unpack(HCAContext *c, ChannelContext *ch, + GetBitContext *gb, unsigned hfr_group_count, int packed_noise_level, const uint8_t *ath) { - GetBitContext *gb = &c->gb; int delta_bits = get_bits(gb, 3); if (delta_bits > 5) { @@ -390,7 +387,7 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *frame, { HCAContext *c = avctx->priv_data; int ch, ret, packed_noise_level; - GetBitContext *gb = &c->gb; + GetBitContext gb0, *const gb = &gb0; float **samples; if (avctx->err_recognition & AV_EF_CRCCHECK) { @@ -412,11 +409,11 @@ static int decode_frame(AVCodecContext *avctx, AVFrame *frame, packed_noise_level = (get_bits(gb, 9) << 8) - get_bits(gb, 7); for (ch = 0; ch < avctx->ch_layout.nb_channels; ch++) - unpack(c, &c->ch[ch], c->hfr_group_count, packed_noise_level, c->ath); + unpack(c, &c->ch[ch], gb, c->hfr_group_count, packed_noise_level, c->ath); for (int i = 0; i < 8; i++) { for (ch = 0; ch < avctx->ch_layout.nb_channels; ch++) - dequantize_coefficients(c, &c->ch[ch]); + dequantize_coefficients(c, &c->ch[ch], gb); for (ch = 0; ch < avctx->ch_layout.nb_channels; ch++) reconstruct_hfr(c, &c->ch[ch], c->hfr_group_count, c->bands_per_hfr_group, c->stereo_band_count + c->base_band_count, c->total_band_count);