From patchwork Thu Jun 6 05:12:32 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lynne X-Patchwork-Id: 49613 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:c209:0:b0:460:55fa:d5ed with SMTP id d9csp142880vqo; Wed, 5 Jun 2024 22:13:00 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCXMaMVP3172jeYYVwSn8gz2fMU3o5YyXxKqwCEGMsOFHJ+FCo4MRb6BQe3x2ln+CUlW30b8t5z893IjIZykEE45HhpPBIDOyecp0A== X-Google-Smtp-Source: AGHT+IF0vI6JHJZ+GPuWogfyp2ySlhZfU5LxSgmqJnrCDpUfeTYRpkU+udab8NDwztynFEkykaw6 X-Received: by 2002:a17:906:a885:b0:a68:e21b:35f0 with SMTP id a640c23a62f3a-a699f681ac0mr285671766b.38.1717650779824; Wed, 05 Jun 2024 22:12:59 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1717650779; cv=none; d=google.com; s=arc-20160816; b=Vik5cc9DQOr9s3+xMkweMcnCExuRYr0cheRqPJHaoht35Vo+ZEOr31NzPaJ1piOm9G Ya08vKQQ/EHcVxlEsoEBQMELKkl8QQbE5+evX0rO0QdjuG/AXNgoY4ByvAQor5fB1lxT Md7MtYggLIVVbE5/5nwdQRxwG/4rJjYiDy5x4Ga0v4uMlFVaEVoIY6m7lkYFRNNbDmpo W9kfH4ghvzgBARBHhclMeaFqf5Nur+4Vmo6Q8dqJib/0Izp6XHtsCpwqET256UD+G2+/ VyUmYb/JiVgAUAa2xCJUhUTO0X0t/0LHO6zUieEKw5PBpApm7lpHNgoMbshKYz7eRxyx 1iHA== 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:from :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:message-id:date:to :delivered-to; bh=Za6eIkEKYlmNSGYohTJy3ASxkPPXvtum5LSXE22yYnc=; fh=nenT92/WZoU6unXd3J6UhGUdod4piddKfVtctNBOh6k=; b=vk9jT8o0WPhtqZGLaI3faKlz/LlPcqSAl9l4Yq6eE4g/UpBsd2MQu+czKa9EVdfiIC +WKjK4j0aTDXSuZkeYWjtkLQVz0ff9AMloHUzJDpbgf5vguqzVa2PYz2BQYIeimiz1vI jq8A2LabcPMbOU6WwpwXZ2bQ4kcJGeZOdqjaIaBhTXzCAJL+2El/TgZ9aTw6zhE21vCc HwYSwGLer1aZ1hwEIlOw784VJCgvr4ZdUi8fRAXvOrhwI+3qhZT6dUedPICym1LcOpsZ OFo2NxzATEctlb9OZTnbiMLUHd5jl/MtOm6whhzQsMOIeGq/QnvUFv/gEAbXKtHzE4zl uPmg==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; 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 a640c23a62f3a-a6c80581250si28716666b.22.2024.06.05.22.12.58; Wed, 05 Jun 2024 22:12:59 -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; 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 08B6568D504; Thu, 6 Jun 2024 08:12:55 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from vidala.lynne.ee (vidala.pars.ee [116.203.72.101]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E17CB68D499 for ; Thu, 6 Jun 2024 08:12:47 +0300 (EEST) To: ffmpeg-devel@ffmpeg.org Date: Thu, 6 Jun 2024 07:12:32 +0200 Message-ID: <20240606051243.3177266-1-dev@lynne.ee> X-Mailer: git-send-email 2.43.0.381.gb435a96ce8 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 1/4] aacdec_usac: respect tns_on_lr flag 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: , X-Patchwork-Original-From: Lynne via ffmpeg-devel From: Lynne Reply-To: FFmpeg development discussions and patches Cc: Lynne Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: iC6yKr4nDWGz This was left out, and due to av_unused, forgotten about. --- libavcodec/aac/aacdec.h | 1 + libavcodec/aac/aacdec_usac.c | 16 ++++++++++++---- 2 files changed, 13 insertions(+), 4 deletions(-) diff --git a/libavcodec/aac/aacdec.h b/libavcodec/aac/aacdec.h index ee21a94007..f0a33e7ac3 100644 --- a/libavcodec/aac/aacdec.h +++ b/libavcodec/aac/aacdec.h @@ -230,6 +230,7 @@ typedef struct SingleChannelElement { typedef struct AACUsacStereo { uint8_t common_window; uint8_t common_tw; + uint8_t tns_on_lr; ///< Apply TNS before M/S and stereo prediction uint8_t ms_mask_mode; uint8_t config_idx; diff --git a/libavcodec/aac/aacdec_usac.c b/libavcodec/aac/aacdec_usac.c index 561734f930..3b4e980df4 100644 --- a/libavcodec/aac/aacdec_usac.c +++ b/libavcodec/aac/aacdec_usac.c @@ -876,14 +876,14 @@ static int decode_usac_stereo_info(AACDecContext *ac, AACUSACConfig *usac, return AVERROR_PATCHWELCOME; } + us->tns_on_lr = 0; sce1->tns.present = sce2->tns.present = 0; if (tns_active) { - av_unused int tns_on_lr; int common_tns = 0; if (us->common_window) common_tns = get_bits1(gb); - tns_on_lr = get_bits1(gb); + us->tns_on_lr = get_bits1(gb); if (common_tns) { ret = ff_aac_decode_tns(ac, &sce1->tns, gb, ics1); if (ret < 0) @@ -1214,6 +1214,14 @@ static void spectrum_decode(AACDecContext *ac, AACUSACConfig *usac, } if (nb_channels > 1 && us->common_window) { + for (int ch = 0; ch < nb_channels; ch++) { + SingleChannelElement *sce = &cpe->ch[ch]; + + /* Apply TNS, if the tns_on_lr bit is not set. */ + if (sce->tns.present && !us->tns_on_lr) + ac->dsp.apply_tns(sce->coeffs, &sce->tns, &sce->ics, 1); + } + if (us->ms_mask_mode == 3) { const float *filt; complex_stereo_downmix_cur(ac, cpe, us->dmix_re); @@ -1248,8 +1256,8 @@ static void spectrum_decode(AACDecContext *ac, AACUSACConfig *usac, for (int ch = 0; ch < nb_channels; ch++) { SingleChannelElement *sce = &cpe->ch[ch]; - /* Apply TNS */ - if (sce->tns.present) + /* Apply TNS, if it hasn't been applied yet. */ + if (sce->tns.present && ((nb_channels == 1) || (us->tns_on_lr))) ac->dsp.apply_tns(sce->coeffs, &sce->tns, &sce->ics, 1); ac->oc[1].m4ac.frame_length_short ? ac->dsp.imdct_and_windowing_768(ac, sce) : From patchwork Thu Jun 6 05:12:33 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lynne X-Patchwork-Id: 49614 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:c209:0:b0:460:55fa:d5ed with SMTP id d9csp142940vqo; Wed, 5 Jun 2024 22:13:11 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWL3wY2nl7ZADclvSEy67W0zEWT7SUXAuqCEpPpqNjsBoZalyagg/qWqUtb3vVKhli/udBmSJgDKDQCuMaM4MgZzKnhTmZQY2mTrQ== X-Google-Smtp-Source: AGHT+IEUJK5xvx2zLYjRDPJeVtM8mv+qZu7Pg1iBMORyxrcGDPQpXIUfKKiiG8GzhY7Q5S/QQHPf X-Received: by 2002:a17:906:d10c:b0:a59:a356:3f6d with SMTP id a640c23a62f3a-a69a024d5b7mr263116966b.54.1717650790713; Wed, 05 Jun 2024 22:13:10 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1717650790; cv=none; d=google.com; s=arc-20160816; b=oZ95Z2L0R0ZPBACyaSvUherwYAYvFpRuFpIC6maS7OrxQuF7xw2HQoN21qGwoDEl+3 l4TAfpz4iPrITIVNFVBwuqnZ7a2lNI9LI7avjcqTFYaRG4tJHhdzf/eaOqCHUACLkh0b lUwXSfCXzvyoBp6KgW69qu0CMw3S+HXLZ/51qc8+Tr2UsoDp0TMoi96cSdFvYznkHo+x 6cV2boCcCKPEFcq0zSSXhP/8MIOTMQ78+6uNfu4MXFmkuJgmUxhiMefKK3dL/npvlbw3 W4yDyfQIYzJOzXDRSPhmYPeMjl/TZ38HCjFY+ivgX01JfSOfQ40D7j4xJO3fTG3uWu0U ZFGg== 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:from :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:delivered-to; bh=dp8k4l3EQ37o8iVmZlsRExYUcoaRrz9d+t6wbO62HYc=; fh=nenT92/WZoU6unXd3J6UhGUdod4piddKfVtctNBOh6k=; b=fJ01NTkko+1X7K/wnk1sQzN3BIcH8Q2ofoidfPHu9/XOhwyugYolpl+Xezo47W8clM ypgGDH1ZU6nCfK6a0RyaYbVgqMB0HMb00M3oxTeDguQ57qxqtifQbpfE4fKAesHLgDfI Lts5oa3RZxLQ6lX4t3sng+ddZue6nizXo9eR1TjwXErvSeSKiVbvpgC5hOAunaEp6y99 UBaOzSPyjVqpr56xDt1B1LKJJ/th+qiq7bZDPDoX2dSAaYHcdi2qZ29nIU+/Te4TGEYm BWX7jjypcgoKOufKnqcxyyzEFomrkM0R+kLBpz4X40o82LzalqwTUXb8Slh4xFkacrHo 77xA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; 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 a640c23a62f3a-a6c80706fe7si28106166b.654.2024.06.05.22.13.10; Wed, 05 Jun 2024 22:13:10 -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; 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 23E7968D53F; Thu, 6 Jun 2024 08:12:56 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from vidala.lynne.ee (vidala.pars.ee [116.203.72.101]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E51B368D4F4 for ; Thu, 6 Jun 2024 08:12:47 +0300 (EEST) To: ffmpeg-devel@ffmpeg.org Date: Thu, 6 Jun 2024 07:12:33 +0200 Message-ID: <20240606051243.3177266-2-dev@lynne.ee> X-Mailer: git-send-email 2.43.0.381.gb435a96ce8 In-Reply-To: <20240606051243.3177266-1-dev@lynne.ee> References: <20240606051243.3177266-1-dev@lynne.ee> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 2/4] aacdec_usac: do not continue parsing bitstream on core_mode == 1 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: , X-Patchwork-Original-From: Lynne via ffmpeg-devel From: Lynne Reply-To: FFmpeg development discussions and patches Cc: Lynne Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: QU1CtyyCmbEM Although LPD is not functional yet, the bitstream ends at that point. --- libavcodec/aac/aacdec_usac.c | 1 + 1 file changed, 1 insertion(+) diff --git a/libavcodec/aac/aacdec_usac.c b/libavcodec/aac/aacdec_usac.c index 3b4e980df4..9b28a9e90b 100644 --- a/libavcodec/aac/aacdec_usac.c +++ b/libavcodec/aac/aacdec_usac.c @@ -1301,6 +1301,7 @@ static int decode_usac_core_coder(AACDecContext *ac, AACUSACConfig *usac, ret = ff_aac_ldp_parse_channel_stream(ac, usac, ue, gb); if (ret < 0) return ret; + continue; } if ((nb_channels == 1) || From patchwork Thu Jun 6 05:12:34 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lynne X-Patchwork-Id: 49615 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:c209:0:b0:460:55fa:d5ed with SMTP id d9csp142986vqo; Wed, 5 Jun 2024 22:13:19 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCW5nFN+grHw3LYnVoY6ed00EIfP8g/61fUGuyw+eUhDm40N1/RhyigectJZxSxsOeavNDGEmkp6PxIrRNCnrVBykPjKvo8blln42A== X-Google-Smtp-Source: AGHT+IFY2TBanByCl/CqeKwjY/a1kGjXnW7bv5qE4sVJuwUxqv5SSJT3OCLcu4gWD4hoIIfM8pdS X-Received: by 2002:a05:6512:12ca:b0:52b:86cf:91b2 with SMTP id 2adb3069b0e04-52bab4f6fbbmr2782781e87.46.1717650799080; Wed, 05 Jun 2024 22:13:19 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1717650799; cv=none; d=google.com; s=arc-20160816; b=v0Q3ZOR6E6R6VpXq/qd9uCIpBn0us75HVxjUODLGR3X6FP1fr07VPPtF07v90fnd8D gWBfdsQJYbTL9CmKleQAw3l94AWDlQndTJcqUvUrtXggN9lFK5oY9Davtdx6ST+rrebB /prOUa/oDs3CVmi3Hd7uiy2FkMjR8ADqmJsoKZxB57+zO8reGHCWRcUg8z/0ud+2D3Xp /p6NFmdNA+q6sg2/SHnmx5qqEdVimS5aO913j05ySxAs9TkqKSMzyNrBr7ggLVWOnQa1 GgxwFZLFz7gBkvj6GW7GnHWepXY7isZi9vLQ98D9cXS5VzGykejUvT6FwxcTDkHPLu7E hIgA== 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:from :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:delivered-to; bh=mJjkF15Rl4rp6wApGCr0K1YxAV4LdpZaGxd3/f/ENJg=; fh=nenT92/WZoU6unXd3J6UhGUdod4piddKfVtctNBOh6k=; b=prC2a+SyeJBq/YgxYyVKHz5SROrJQqhl8H+AT4Fcyt1EBepxUZkqXiExac5MT6kh3M b8QZHHLfe4z4N9rOf7thxy/nw4TT8r31px9Hmg8SYqjhNOu6CRUo9k+41qWksQAgegxW neBs3lKA4b5PdDQUNscS+MzGSGTE+12i8pkr4co9USvZWknBOuuJKqaA9hDWDgfi0hvT ksFGTJPZs/YqFNbLx564qJwhq7zAV/cwMlCzkHZLDOt7YMplU7rZ/hFGfFTwR5NzHHsZ xFBijnWtwoFB6SZLq+1BE6jcX6Y/zPlY2yhvKKANpouBqy79vtUgXscxvq0mB1OtgBFe 7JeA==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; 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 a640c23a62f3a-a6c806dad83si27591366b.383.2024.06.05.22.13.18; Wed, 05 Jun 2024 22:13:19 -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; 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 5001568D6AC; Thu, 6 Jun 2024 08:12:57 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from vidala.lynne.ee (vidala.pars.ee [116.203.72.101]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E81A468D504 for ; Thu, 6 Jun 2024 08:12:47 +0300 (EEST) To: ffmpeg-devel@ffmpeg.org Date: Thu, 6 Jun 2024 07:12:34 +0200 Message-ID: <20240606051243.3177266-3-dev@lynne.ee> X-Mailer: git-send-email 2.43.0.381.gb435a96ce8 In-Reply-To: <20240606051243.3177266-1-dev@lynne.ee> References: <20240606051243.3177266-1-dev@lynne.ee> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 3/4] aacdec_usac: decouple TNS active from TNS data present flag 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: , X-Patchwork-Original-From: Lynne via ffmpeg-devel From: Lynne Reply-To: FFmpeg development discussions and patches Cc: Lynne Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: IPtXXjUcioUQ The issue was that in case of common TNS parameters, TNS was entirely skipped, as tns.present was set to 0. --- libavcodec/aac/aacdec.h | 1 + libavcodec/aac/aacdec_usac.c | 25 +++++++++++++++---------- 2 files changed, 16 insertions(+), 10 deletions(-) diff --git a/libavcodec/aac/aacdec.h b/libavcodec/aac/aacdec.h index f0a33e7ac3..a2ef4a82e8 100644 --- a/libavcodec/aac/aacdec.h +++ b/libavcodec/aac/aacdec.h @@ -125,6 +125,7 @@ typedef struct LongTermPrediction { typedef struct AACUsacElemData { uint8_t core_mode; uint8_t scale_factor_grouping; + uint8_t tns_data_present; /* Timewarping ratio */ #define NUM_TW_NODES 16 diff --git a/libavcodec/aac/aacdec_usac.c b/libavcodec/aac/aacdec_usac.c index 9b28a9e90b..97655787ee 100644 --- a/libavcodec/aac/aacdec_usac.c +++ b/libavcodec/aac/aacdec_usac.c @@ -877,7 +877,7 @@ static int decode_usac_stereo_info(AACDecContext *ac, AACUSACConfig *usac, } us->tns_on_lr = 0; - sce1->tns.present = sce2->tns.present = 0; + ue1->tns_data_present = ue2->tns_data_present = 0; if (tns_active) { int common_tns = 0; if (us->common_window) @@ -889,15 +889,17 @@ static int decode_usac_stereo_info(AACDecContext *ac, AACUSACConfig *usac, if (ret < 0) return ret; memcpy(&sce2->tns, &sce1->tns, sizeof(sce1->tns)); - sce2->tns.present = 0; - sce1->tns.present = 0; + sce2->tns.present = 1; + sce1->tns.present = 1; + ue1->tns_data_present = 0; + ue2->tns_data_present = 0; } else { if (get_bits1(gb)) { - sce2->tns.present = 1; - sce1->tns.present = 1; + ue1->tns_data_present = 1; + ue2->tns_data_present = 1; } else { - sce2->tns.present = get_bits1(gb); - sce1->tns.present = !sce2->tns.present; + ue2->tns_data_present = get_bits1(gb); + ue1->tns_data_present = !ue2->tns_data_present; } } } @@ -1277,12 +1279,14 @@ static int decode_usac_core_coder(AACDecContext *ac, AACUSACConfig *usac, uint8_t global_gain; us->common_window = 0; - che->ch[0].tns.present = che->ch[1].tns.present = 0; for (int ch = 0; ch < nb_channels; ch++) { SingleChannelElement *sce = &che->ch[ch]; AACUsacElemData *ue = &sce->ue; + sce->tns.present = 0; + ue->tns_data_present = 0; + ue->core_mode = get_bits1(gb); } @@ -1306,7 +1310,7 @@ static int decode_usac_core_coder(AACDecContext *ac, AACUSACConfig *usac, if ((nb_channels == 1) || (che->ch[0].ue.core_mode != che->ch[1].ue.core_mode)) - sce->tns.present = get_bits1(gb); + ue->tns_data_present = get_bits1(gb); /* fd_channel_stream */ global_gain = get_bits(gb, 8); @@ -1351,7 +1355,8 @@ static int decode_usac_core_coder(AACDecContext *ac, AACUSACConfig *usac, ac->dsp.dequant_scalefactors(sce); - if (sce->tns.present) { + if (ue->tns_data_present) { + sce->tns.present = 1; ret = ff_aac_decode_tns(ac, &sce->tns, gb, ics); if (ret < 0) return ret; From patchwork Thu Jun 6 05:12:35 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Lynne X-Patchwork-Id: 49616 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a59:c209:0:b0:460:55fa:d5ed with SMTP id d9csp143029vqo; Wed, 5 Jun 2024 22:13:28 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCWbHkLbKp8iVewhit05w8UmgbyZA4SYacNcXrv758hoOTcG1Juz/jOFKKGakyzUX4N03GOltxjqYfkdaJ/+umjWVmRK82i9iPvLow== X-Google-Smtp-Source: AGHT+IEf1VL0ugOKYoPbolm6zY1kVl1usrVV5RHB4sGRcHrpb3zhKgyekr21RIwQ6b1PYDMg+4Hp X-Received: by 2002:a05:6512:4028:b0:529:ed2a:5d04 with SMTP id 2adb3069b0e04-52bab4d818dmr2759887e87.2.1717650808290; Wed, 05 Jun 2024 22:13:28 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1717650808; cv=none; d=google.com; s=arc-20160816; b=HCkV2XR1d1vyL4G/8zlf5BcEdKGPY8aQrkdh+tuFS7K9/v9BQVJozvtpHxyzP61rHi iZ50o0edL+8FuFNqMq4fFgzXHTVlltcgqTSjTCXt0HWl4jixNCzkyREdiuInCkV2zPD4 cmCFVq0J4dxMcuEHJoo6k5d5ZLVKyuxz0pWzNz8F2uyrKeqPj0holb456erSLsbR7Wo1 UySWbWMWZytExhHG2zxVhzOmlNwKeGovKnPrVN3oP/9jjOTWBDBDU6QVCmRnvFo0Dg8y AJc0XCFeo+kklciKuFblmrx9PoDQnkQnVCAmFJMcbzvtNwIr2Ruy4IV/F7pBOuYXO1PF /1+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:from :list-subscribe:list-help:list-post:list-archive:list-unsubscribe :list-id:precedence:subject:mime-version:references:in-reply-to :message-id:date:to:delivered-to; bh=JqRovK7Iypeyj3idTMEhbcc807/2UXp1R3OdVs8MqwA=; fh=nenT92/WZoU6unXd3J6UhGUdod4piddKfVtctNBOh6k=; b=pXIOmDtc5mgE23/JellKqTjrVHb7Hu+dkJgT/vTQaecDvNOuqLBZUmOkEVhaCQtxG/ Vye0Ch0Spf1tVhlkOOmuHJRVsc0K3Cro8TzuOmf0Yw8E/pseTPtrT1FKgXtfxxx5ghyW xWH/wVgAyFbdg/C/q6bRzUNP6MQc+25yinu4lIUP6WYdn8Cb7p0Sffk8wLBWYWoNmK4A 8AOYaemKXOVoBEHXnd2yWOk1EgLUaStxZ8Y/VulT1+T7+iaBliCuGX+yxJic2EQYWLjI U3AATGUQmh1geIfpIujphO1uZCFGMGpmqHSPXS+LrDt0c3oYQwj1zfGyGUrW3b9cByJh G84A==; dara=google.com ARC-Authentication-Results: i=1; mx.google.com; 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 2adb3069b0e04-52bb4129d3esi178594e87.82.2024.06.05.22.13.27; Wed, 05 Jun 2024 22:13:28 -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; 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 B3C5068D6E4; Thu, 6 Jun 2024 08:12:58 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from vidala.lynne.ee (vidala.pars.ee [116.203.72.101]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0D10F68D516 for ; Thu, 6 Jun 2024 08:12:48 +0300 (EEST) To: ffmpeg-devel@ffmpeg.org Date: Thu, 6 Jun 2024 07:12:35 +0200 Message-ID: <20240606051243.3177266-4-dev@lynne.ee> X-Mailer: git-send-email 2.43.0.381.gb435a96ce8 In-Reply-To: <20240606051243.3177266-1-dev@lynne.ee> References: <20240606051243.3177266-1-dev@lynne.ee> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 4/4] aacdec_usac: skip coeff decoding if the number to be decoded is 0 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: , X-Patchwork-Original-From: Lynne via ffmpeg-devel From: Lynne Reply-To: FFmpeg development discussions and patches Cc: Lynne Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: bozI7gvJL8LL Yet another thing not mentioned in the spec. --- libavcodec/aac/aacdec_usac.c | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/libavcodec/aac/aacdec_usac.c b/libavcodec/aac/aacdec_usac.c index 97655787ee..5dd489a43b 100644 --- a/libavcodec/aac/aacdec_usac.c +++ b/libavcodec/aac/aacdec_usac.c @@ -572,9 +572,15 @@ static int decode_spectrum_and_dequant_ac(AACDecContext *s, float coef[1024], int gb_count; GetBitContext gb2; - ff_aac_ac_init(&ac, gb); c = ff_aac_ac_map_process(state, reset, N); + if (!len) { + ff_aac_ac_finish(state, 0, N); + return 0; + } + + ff_aac_ac_init(&ac, gb); + /* Backup reader for rolling back by 14 bits at the end */ gb2 = *gb; gb_count = get_bits_count(&gb2);