From patchwork Wed Dec 30 23:31:28 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24693 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 3FE5C44A7BE for ; Thu, 31 Dec 2020 01:32:25 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1661D68A3E0; Thu, 31 Dec 2020 01:32:25 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ed1-f53.google.com (mail-ed1-f53.google.com [209.85.208.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A7C59680972 for ; Thu, 31 Dec 2020 01:32:18 +0200 (EET) Received: by mail-ed1-f53.google.com with SMTP id p22so16793679edu.11 for ; Wed, 30 Dec 2020 15:32:18 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:reply-to:mime-version :content-transfer-encoding; bh=ZxSylVUHPXSm/Dfu0vWP+0DYQ825wkcCMA4uQ8F6ajs=; b=lXwxQHMmQNip12a+IKu+Pg128ZBR/KbEGtR34aesZKnyTP5jE59Hk3ON+90HCdsNLR cm/Yt2cKK90kE/UyBPj5ebKGJcuy7PxIKkwTzwdiHyjqBhqrCHXtvD6SZV6xvUaN6E+0 sfqKFGGkp9VwTVKZa6/vldPOsdwqHXcJy9+cxZ8ZXPJYFA58RbOqL0XvM12Z35q75Htn aHYEcpLgUzmjOQoppSTaxLUlQK80uR9bem8hD7LUO9ITWSZGtT7Zgc3UDc8Ss7N63zWw LacJiW3olPyQxlQ9JYbXNLYbVrDsmf/RlJR+Qo3fDKlnQheGLCqe8ck7J+Zz/OovUtgs prDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:reply-to :mime-version:content-transfer-encoding; bh=ZxSylVUHPXSm/Dfu0vWP+0DYQ825wkcCMA4uQ8F6ajs=; b=CTsTo0xaXd0YA1SoPYDz5rRsBFrP3IrjW3kN4VNDcink5/usJYZjcZjQhJ7RYIqDyL wctel3AB21X+R298PaQbq1HsNUcEiR2Uk7c0Yx2JhxGa5PaQGG8PMQrxG1HCcDWH+5o9 ABJwJPbzn4J8bGgFZUxsx9IZgEta1yIEzmU2P5xAALSXOLTufL1q14qCj1APpsRp4Pb6 odYUXPlsi0jRpJqO+Ex6tIWpBXMdi/tSR4hFz3Hmhg+LQ3f7vYLlFed1YHfaggELKPOr 6SYX8WLl0BG85AYkevBEaOr0TxPxnCjfj6qJNvo5KifUCpil91MaMN7cYc4ymMDAlt9P trMg== X-Gm-Message-State: AOAM5336bfXNAI0THmGVhcyKPgYYVq5SBX8Tx1Uk2WBg+uKHNo4Dclzm FiTkkzD0Pbfr6d9RMvuzrI0ADR4//WY= X-Google-Smtp-Source: ABdhPJy2aHcbLJXe7RsXm9Zfcul+JyAqN5NBjRFN9bDd9IKsT5cKTmSUcW0FgVyRff53MVJ3vJrCiA== X-Received: by 2002:a50:fc83:: with SMTP id f3mr53285375edq.219.1609371137923; Wed, 30 Dec 2020 15:32:17 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id u19sm19630409ejg.16.2020.12.30.15.32.16 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Dec 2020 15:32:17 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 31 Dec 2020 00:31:28 +0100 Message-Id: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 01/30] avcodec/opustab: Make array static X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" Signed-off-by: Andreas Rheinhardt --- libavcodec/opustab.c | 12 ++++++------ libavcodec/opustab.h | 1 - 2 files changed, 6 insertions(+), 7 deletions(-) diff --git a/libavcodec/opustab.c b/libavcodec/opustab.c index 64070f8299..7276dad793 100644 --- a/libavcodec/opustab.c +++ b/libavcodec/opustab.c @@ -950,7 +950,7 @@ const uint16_t ff_celt_qn_exp2[] = { 16384, 17866, 19483, 21247, 23170, 25267, 27554, 30048 }; -const uint32_t ff_celt_pvq_u[1272] = { +static const uint32_t celt_pvq_u[1272] = { /* N = 0, K = 0...176 */ 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, @@ -1153,9 +1153,9 @@ const float ff_celt_window2[120] = { }; const uint32_t * const ff_celt_pvq_u_row[15] = { - ff_celt_pvq_u + 0, ff_celt_pvq_u + 176, ff_celt_pvq_u + 351, - ff_celt_pvq_u + 525, ff_celt_pvq_u + 698, ff_celt_pvq_u + 870, - ff_celt_pvq_u + 1041, ff_celt_pvq_u + 1131, ff_celt_pvq_u + 1178, - ff_celt_pvq_u + 1207, ff_celt_pvq_u + 1226, ff_celt_pvq_u + 1240, - ff_celt_pvq_u + 1248, ff_celt_pvq_u + 1254, ff_celt_pvq_u + 1257 + celt_pvq_u + 0, celt_pvq_u + 176, celt_pvq_u + 351, + celt_pvq_u + 525, celt_pvq_u + 698, celt_pvq_u + 870, + celt_pvq_u + 1041, celt_pvq_u + 1131, celt_pvq_u + 1178, + celt_pvq_u + 1207, celt_pvq_u + 1226, celt_pvq_u + 1240, + celt_pvq_u + 1248, celt_pvq_u + 1254, celt_pvq_u + 1257 }; diff --git a/libavcodec/opustab.h b/libavcodec/opustab.h index 892126bb23..cdd0456e3c 100644 --- a/libavcodec/opustab.h +++ b/libavcodec/opustab.h @@ -152,7 +152,6 @@ extern const uint8_t ff_celt_bit_deinterleave[]; extern const uint8_t ff_celt_hadamard_order[]; extern const uint16_t ff_celt_qn_exp2[]; -extern const uint32_t ff_celt_pvq_u[1272]; extern const float ff_celt_postfilter_taps[3][3]; From patchwork Wed Dec 30 23:31:29 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24694 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 769D844A7BE for ; Thu, 31 Dec 2020 01:32:43 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 615FD68A758; Thu, 31 Dec 2020 01:32:43 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ed1-f43.google.com (mail-ed1-f43.google.com [209.85.208.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5FCA768A5D3 for ; Thu, 31 Dec 2020 01:32:36 +0200 (EET) Received: by mail-ed1-f43.google.com with SMTP id j16so16838087edr.0 for ; Wed, 30 Dec 2020 15:32:36 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=9VsheJnAfdpWJ/eQWo2DC3T+QlEfeeAymkmfQywy8nk=; b=n4NuH7TW5IRa0oOFcgFVozBx0bDeUymEtI+szK0vhQs4JUGB5bgBvxwgn/pxt1xFPI 6E8vUHXCsAB8xgSi/gCJ0eANGoqSG1f1dq4XVBG7CC02grc7fB0YXNFd9qC/DhHcm4VD xcg1KBAYwfTjvy7pG1YwaBFYpxiUjmgNizxyryNeIJzVW3S98cPBiFeixqIPD834QrJc fyfotB8GtGhTwYRkxmrIu3JFRv9ZFoZR1Vp7G1xq6Iyp4/3qtnas0wj1YwDXv1a7jC3M jAfxBcbr/ANoyAuRsnfuQrsxVovtkVitKe+NGx4S1yXQndd/REcVOTAQ+p9InXVR0oXZ NY6A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=9VsheJnAfdpWJ/eQWo2DC3T+QlEfeeAymkmfQywy8nk=; b=g4FK3LEhqGqnrsRhZJMq3xnRtnG5n4f8slKLFBXPUXTDQ79/RvG3qisCBm+eUALCQG sLpwN18CMy2TrNhywpsgueUCN+vmcOFo/8+Jlsfi9Be9lEQYmpY7mcPpxxFR/nzunwyo CWO+OEbVNQEQLaqzN0g0SsjF+by+SvJuSNcr6UZJmyCyXBbTaDsC4uaOAmwt4dE0WB36 8woZRHu5WzGNoqKC5LVnT7/k+sniW9QiLeTFF8giZ4xxl9V5VnbYeMBzSMBA0kz/gjpG xc3WgL/3OxTleFxA7Xxb1HnKNDMX6xhdz9eGihGAvyAF5/367aRKLt+xc3j4mjR+8lNU 2zRw== X-Gm-Message-State: AOAM532oEpCjgcnBpwd5hGcICBkRs+5WxJJ2dqtANh2NKns29R0MGq/s 4LZaDRZ3ia03tPYm1FOWkBYPq4x8eaA= X-Google-Smtp-Source: ABdhPJy3riDGml8Abj4kpIvAGKfc5lVSduIqx3ILxCRKODgDI/GTRwoONYW5yTsLhnueTgFmsN7RZg== X-Received: by 2002:a50:b5c5:: with SMTP id a63mr52306767ede.227.1609371155689; Wed, 30 Dec 2020 15:32:35 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id u19sm19630409ejg.16.2020.12.30.15.32.34 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Dec 2020 15:32:35 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 31 Dec 2020 00:31:29 +0100 Message-Id: <20201230233157.1055287-2-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> References: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 02/30] avfilter/vf_addroi: Use chars instead of strings for one-char strings X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" Signed-off-by: Andreas Rheinhardt --- libavfilter/vf_addroi.c | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/libavfilter/vf_addroi.c b/libavfilter/vf_addroi.c index 489998ce73..d6b83ee854 100644 --- a/libavfilter/vf_addroi.c +++ b/libavfilter/vf_addroi.c @@ -26,8 +26,8 @@ enum { X, Y, W, H, NB_PARAMS, }; -static const char *addroi_param_names[] = { - "x", "y", "w", "h", +static const char addroi_param_names[] = { + 'x', 'y', 'w', 'h', }; enum { @@ -74,12 +74,12 @@ static int addroi_config_input(AVFilterLink *inlink) val = av_expr_eval(ctx->region_expr[i], vars, NULL); if (val < 0.0) { - av_log(avctx, AV_LOG_WARNING, "Calculated value %g for %s is " + av_log(avctx, AV_LOG_WARNING, "Calculated value %g for %c is " "less than zero - using zero instead.\n", val, addroi_param_names[i]); val = 0.0; } else if (val > max_value) { - av_log(avctx, AV_LOG_WARNING, "Calculated value %g for %s is " + av_log(avctx, AV_LOG_WARNING, "Calculated value %g for %c is " "greater than maximum allowed value %d - " "using %d instead.\n", val, addroi_param_names[i], max_value, max_value); @@ -194,7 +194,7 @@ static av_cold int addroi_init(AVFilterContext *avctx) 0, avctx); if (err < 0) { av_log(ctx, AV_LOG_ERROR, - "Error parsing %s expression '%s'.\n", + "Error parsing %c expression '%s'.\n", addroi_param_names[i], ctx->region_str[i]); return err; } From patchwork Wed Dec 30 23:31:30 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24695 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id B0F3444A7BE for ; Thu, 31 Dec 2020 01:32:44 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 8877968A76C; Thu, 31 Dec 2020 01:32:44 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2E43868A148 for ; Thu, 31 Dec 2020 01:32:37 +0200 (EET) Received: by mail-ej1-f41.google.com with SMTP id lt17so23690600ejb.3 for ; Wed, 30 Dec 2020 15:32:37 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=zwuP3KvmxEsuOWJ24EgdE+2JOuepzD2ui9x6l/lJSMU=; b=cNARBTIX3g2R1D3dguV1nsmO96P00dmBYiAmwn7BVps5ufY9jJ/HCrdK7iWc9ziy0t fJvZel2pSpkVHVsnCf2hommqEiQiSDUKOaqPeCWxKaSuGCklxuSgK/HIBDYgDsRKpdCM H6jaACmtuH8HpoDxt6O3X1lMb9Rd8nkYW85W961r/U2cH/0eeHGA4nX7ozlguAeEpsBM MZuxRb+xN+kwFvAaHMxPYfW37/+stk7pJCWnRMwM4L7nQOQF2eUhbmRNYMItib1+2m8h nGMLimWXuuwbs6n4ZzS1jRJ2fTqeVDOML3TyF2yTvWQkp0NmpeScfDMiZuiSLKCd3XsT 2G/Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=zwuP3KvmxEsuOWJ24EgdE+2JOuepzD2ui9x6l/lJSMU=; b=lzaei6pd9JZv6t6jiR9sgSEHChYYO6XsvE5kEJc6kVC7EHVmXwk+RrNwfanhBW4wcp WzNpeStBb8moWfyk0P3zUaNacuABPGS4C69JKUBIXp6yXawDMQ3NCWZrLmhF5bLkOto5 40i2xcCNaCaXOTM/WZHfygvnF6MffVwts3+JhF+YaFxSbr7NZwPZiCXEufPmb7glfw+4 G5gbLQxcEdfcrcZvwW6i2qKXURoNvrsLs0xo2xs8zausiumirYxAgl5vw4YfBuuX+xTV +pzxxapz9eFgoQXDFoxSENtbEDymoYAf3kfqGIGx5HKoOZTXPOBUzkS4k8sXS5IF4TXz Lhtw== X-Gm-Message-State: AOAM530bTVlFs1TmAOqmLEUHeliMl7dhYfjjb1SkpY0LvFaHyQQx9pR8 SzR15h1oaOvS0D5UKRPN9KVjRkVgG7E= X-Google-Smtp-Source: ABdhPJw4t9B5l2C3I3kXNI6nTdXoH8KUOu41iF0N+R4mvIq92EHkrjQwbUcHotgN5uxzIfsEon3I7A== X-Received: by 2002:a17:906:440e:: with SMTP id x14mr12385689ejo.77.1609371156588; Wed, 30 Dec 2020 15:32:36 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id u19sm19630409ejg.16.2020.12.30.15.32.35 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Dec 2020 15:32:36 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 31 Dec 2020 00:31:30 +0100 Message-Id: <20201230233157.1055287-3-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> References: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 03/30] avcodec/opusdec: Remove always-true check X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" The celt_delay AVAudioFifo is always allocated during init, so checking for its existence in .flush is unnecessary. Signed-off-by: Andreas Rheinhardt --- libavcodec/opusdec.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/libavcodec/opusdec.c b/libavcodec/opusdec.c index a08758d25d..86a3181e9d 100644 --- a/libavcodec/opusdec.c +++ b/libavcodec/opusdec.c @@ -576,8 +576,7 @@ static av_cold void opus_decode_flush(AVCodecContext *ctx) memset(&s->packet, 0, sizeof(s->packet)); s->delayed_samples = 0; - if (s->celt_delay) - av_audio_fifo_drain(s->celt_delay, av_audio_fifo_size(s->celt_delay)); + av_audio_fifo_drain(s->celt_delay, av_audio_fifo_size(s->celt_delay)); swr_close(s->swr); av_audio_fifo_drain(c->sync_buffers[i], av_audio_fifo_size(c->sync_buffers[i])); From patchwork Wed Dec 30 23:31:31 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24697 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 39DEA44A7BE for ; Thu, 31 Dec 2020 01:32:48 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 22D5368A84E; Thu, 31 Dec 2020 01:32:48 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f45.google.com (mail-ej1-f45.google.com [209.85.218.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 3593568A6B6 for ; Thu, 31 Dec 2020 01:32:38 +0200 (EET) Received: by mail-ej1-f45.google.com with SMTP id ce23so23672594ejb.8 for ; Wed, 30 Dec 2020 15:32:38 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=cN73UNNfBx0N+odfT8rDmAxyjTELaLRX/gW7AGEnXQA=; b=nu7WNjMFQHT7ZHgmfoW+fBuTYTL5fglMo3gCMBlJ4B1u9sWNrmK/ckwq4NrvRElJ7C b50PXHwI1Fyr/bGRKsE8cXbdfr8hejq6w2zqt/z+lZ5+11aC7zFhXC4Zl84DwXRvZUhm Txx9wtBaaUPaAdwwlXA2KyI28pKX/Hw6i887TG0UmGk+C7Z8jelh/xCCW+DrnO4bQK6V DhdGruQDhXoKYnfD23N367jYK30/5sPnb38V0MAgT6dZ4/Qh2JgDm5pp6JQK2O1DIDPQ pyDbJw6oVqfrNwaSaBskrwpfZlU73MPt/eCr4jfgsT6I2EdPhGpbxEkXRZ15BrqmPLCK WFFw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=cN73UNNfBx0N+odfT8rDmAxyjTELaLRX/gW7AGEnXQA=; b=GYoj5VZ8EymYGWo3gKSqaobf43hff+BMvZaDjUyNmKfUgMZEXDl1yeyfPOeKtESSiK +LidWZBjDYuFkuuLTyPbDAVdu1hJcb1JZsPIyOEqUDEK7wZ3JgLWq4eId10XMqzc23UE 39YkarkikerWY/HcfmmOrjQske/MZRnCWNz03BZPMkM9DxEJeCFUQcgtE1/y1DG97qch JFuFXFzEA4Bm25oQbc/JHBbnWAwIEIKQnROtICoBz7J6lSfSg0sHBEPLekHdedZuXRfl e3lwNofJz6Twm/M3IOu2un3cqjgNAEbdfBmhg3nvn+LnKapoIOUMkt6eriZcrmPNiXXB GZFQ== X-Gm-Message-State: AOAM532go1lPhg6THyOQK2olLqynMPOnp1+6BU4ZK/8vz/LEJPNkhhEr r5w0fP4EHifYf+2wLohtfG2h9dIDIR0= X-Google-Smtp-Source: ABdhPJzg9Cx+4YQolO2E+MQqX6UOTEMHmAYilw6CAdz1zJ8pSCOg4V2bYLmZv8PVoWoLnqZD7MrLcA== X-Received: by 2002:a17:906:578e:: with SMTP id k14mr10120728ejq.90.1609371157464; Wed, 30 Dec 2020 15:32:37 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id u19sm19630409ejg.16.2020.12.30.15.32.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Dec 2020 15:32:36 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 31 Dec 2020 00:31:31 +0100 Message-Id: <20201230233157.1055287-4-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> References: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 04/30] avcodec/mlpenc: Simplify finding best codebook X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" Finding the best codebook involves comparing different paths, where each path is a sequence of several decisions (namely which codebook to use). Up until now, these sequence was encoded in a NUL-terminated string and the actual decisions were encoded as ’\0'..'\3' (which encoded 0..3). This commit modifies this to actually encode it via 0..3 by switching away from a C-string to a simple array with an explicit length field. Signed-off-by: Andreas Rheinhardt --- libavcodec/mlpenc.c | 34 ++++++++++------------------------ 1 file changed, 10 insertions(+), 24 deletions(-) diff --git a/libavcodec/mlpenc.c b/libavcodec/mlpenc.c index f6159d39c8..9782cb8261 100644 --- a/libavcodec/mlpenc.c +++ b/libavcodec/mlpenc.c @@ -1947,24 +1947,16 @@ static void rematrix_channels(MLPEncodeContext *ctx) ****************************************************************************/ typedef struct { - char path[MAJOR_HEADER_INTERVAL + 3]; + char path[MAJOR_HEADER_INTERVAL + 2]; + int cur_idx; int bitcount; } PathCounter; -static const char *path_counter_codebook[] = { "0", "1", "2", "3", }; - -#define ZERO_PATH '0' #define CODEBOOK_CHANGE_BITS 21 static void clear_path_counter(PathCounter *path_counter) { - unsigned int i; - - for (i = 0; i < NUM_CODEBOOKS + 1; i++) { - path_counter[i].path[0] = ZERO_PATH; - path_counter[i].path[1] = 0x00; - path_counter[i].bitcount = 0; - } + memset(path_counter, 0, (NUM_CODEBOOKS + 1) * sizeof(*path_counter)); } static int compare_best_offset(BestOffset *prev, BestOffset *cur) @@ -1978,18 +1970,11 @@ static int compare_best_offset(BestOffset *prev, BestOffset *cur) static int best_codebook_path_cost(MLPEncodeContext *ctx, unsigned int channel, PathCounter *src, int cur_codebook) { - BestOffset *cur_bo, *prev_bo = restart_best_offset; + int idx = src->cur_idx; + BestOffset *cur_bo = ctx->best_offset[idx][channel], + *prev_bo = idx ? ctx->best_offset[idx - 1][channel] : restart_best_offset; int bitcount = src->bitcount; - char *path = src->path + 1; - int prev_codebook; - int i; - - for (i = 0; path[i]; i++) - prev_bo = ctx->best_offset[i][channel]; - - prev_codebook = path[i - 1] - ZERO_PATH; - - cur_bo = ctx->best_offset[i][channel]; + int prev_codebook = src->path[idx]; bitcount += cur_bo[cur_codebook].bitcount; @@ -2052,7 +2037,8 @@ static void set_best_codebook(MLPEncodeContext *ctx) prev_best_bitcount = temp_bitcount; if (src_path != dst_path) memcpy(dst_path, src_path, sizeof(PathCounter)); - av_strlcat(dst_path->path, path_counter_codebook[codebook], sizeof(dst_path->path)); + if (dst_path->cur_idx < FF_ARRAY_ELEMS(dst_path->path) - 1) + dst_path->path[++dst_path->cur_idx] = codebook; dst_path->bitcount = temp_bitcount; } } @@ -2069,7 +2055,7 @@ static void set_best_codebook(MLPEncodeContext *ctx) for (index = 0; index < ctx->number_of_subblocks; index++) { ChannelParams *cp = ctx->seq_channel_params + index*(ctx->avctx->channels) + channel; - best_codebook = *best_path++ - ZERO_PATH; + best_codebook = *best_path++; cur_bo = &ctx->best_offset[index][channel][best_codebook]; cp->huff_offset = cur_bo->offset; From patchwork Wed Dec 30 23:31:32 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24699 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id BDBD744A7BE for ; Thu, 31 Dec 2020 01:32:50 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id A735068A7ED; Thu, 31 Dec 2020 01:32:50 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f52.google.com (mail-ej1-f52.google.com [209.85.218.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 532C968A76A for ; Thu, 31 Dec 2020 01:32:39 +0200 (EET) Received: by mail-ej1-f52.google.com with SMTP id g20so23726346ejb.1 for ; Wed, 30 Dec 2020 15:32:39 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=FlsNwfmOz9q1BmNCPGjjK464tqj3ycOBkNZXYtVGxW8=; b=B6Ezc4h6eBqZUgKYFxjas0j6Wplnryovf+IZccBwHmk+3q/dtvr9/SFdyy9e3dIMc6 QRgNpo8aPPB0yNTITE/mNaANHUnCJ0AS+9D4QgKdMjemEHvbASxm/kkNIEP3N77FibyS HYjTQ6Qsj0Jdu0J5PNkwtN1/txzRLjnw6hBP/4o6KKK7NLHBT6tEwcQBgrCyjlTSnWHl RpffVAaOaVKdS+FbaT6A0diwzVA0xtGJskKNl714bTgUWxoFIxyyFJBs/i3HRj2QvCS1 8BuC43bZbxNZOdNtEJVKR/NGkvE6EmongJnzxzS/xEbodcz14NOOEUxdvSeUeg1CxYuz pHxA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=FlsNwfmOz9q1BmNCPGjjK464tqj3ycOBkNZXYtVGxW8=; b=hIqWBIbV/yBy9UZuk6u+UfX12dfFGoWb2kxDAfdDQZRz6IAt2v6kG0TBgcK7533EwP x4VTRNK0T5/gncfvKz3rqC6JvxtLTwvKPTAa1yIsZRLTJ+NEcxOpUCtCcXLY/v9U1ME0 1DXJDlfbM9bMPHFWNS36tgexACG5X4BaArt7jUZuvW5pRPyULhe1ts5L6ArkLt0rkUq2 aEwNDZLSd9sDSMYRY291EHPGg1iwB2mNF0CmT4ah2QU6JdUhMskvSUCxCpRfm/zL7aIy NiVpKtYJhjFT+z9sD26Vi4tE4xQpztxiagSXhvZ8iFWSZiq/KXmTRdjUg6Ii4kYqXnjq Ld/A== X-Gm-Message-State: AOAM530mEbusU+kEhCvslsGIX4w3CpU95JlVJ/XeiPmgp5Obs/HupZ77 Ui1AdpIdo/9t1samkiSJZi86Vhz2pEc= X-Google-Smtp-Source: ABdhPJzDrDW806vLf4K6rgg4JZ2gCVs+/gMY09c8lQebLJKG7E9Y45gXko/S12SOIWn2qz1pMriQIA== X-Received: by 2002:a17:906:9888:: with SMTP id zc8mr50164640ejb.42.1609371158618; Wed, 30 Dec 2020 15:32:38 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id u19sm19630409ejg.16.2020.12.30.15.32.37 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Dec 2020 15:32:38 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 31 Dec 2020 00:31:32 +0100 Message-Id: <20201230233157.1055287-5-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> References: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 05/30] Replace arrays of pointers to strings by arrays of strings X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" When the difference of the longest size and the average size of collection of strings is smaller than the size of a pointer, it makes sense to store the strings directly in an array instead of using an array of pointers to strings (unless doing so precludes deduplicating strings); doing so also avoids relocations. This requirement is fulfilled for several arrays of pointers to strings that are changed in this commit. Signed-off-by: Andreas Rheinhardt --- 1. The changes to ccaption_dec (which provide the largest savings of this patchset) require \u to yield UTF-8; I hope this is ok. Notice that if it were otherwise we would already output non UTF-8. 2. Whether it is worthwhile to replace arrays of pointers to strings by arrays of strings depends of course upon the size of pointers. Do I need to take 32bit systems into account for further patches like this here? 3. On 64bit Elf systems every one of these relocations takes 24bytes; it is less on Windows. Here is more about this: https://chromium.googlesource.com/chromium/src/+/master/docs/native_relocations.md libavcodec/ccaption_dec.c | 4 ++-- libavcodec/vaapi_encode.c | 2 +- libavfilter/af_hdcd.c | 2 +- libavfilter/f_perms.c | 2 +- libavformat/iff.c | 4 ++-- libavformat/matroskadec.c | 2 +- libavformat/sdp.c | 2 +- libavutil/parseutils.c | 2 +- 8 files changed, 10 insertions(+), 10 deletions(-) diff --git a/libavcodec/ccaption_dec.c b/libavcodec/ccaption_dec.c index a208e19b95..c864416241 100644 --- a/libavcodec/ccaption_dec.c +++ b/libavcodec/ccaption_dec.c @@ -66,7 +66,7 @@ enum cc_charset { CCSET_EXTENDED_PORTUGUESE_GERMAN_DANISH, }; -static const char *charset_overrides[4][128] = +static const char charset_overrides[4][128][4] = { [CCSET_BASIC_AMERICAN] = { [0x27] = "\u2019", @@ -575,7 +575,7 @@ static int capture_screen(CCaptionSubContext *ctx) prev_color = color[j]; prev_bg_color = bg[j]; override = charset_overrides[(int)charset[j]][(int)row[j]]; - if (override) { + if (override[0]) { av_bprintf(&ctx->buffer[bidx], "%s%s%s%s%s", e_tag, s_tag, c_tag, b_tag, override); seen_char = 1; } else if (row[j] == ' ' && !seen_char) { diff --git a/libavcodec/vaapi_encode.c b/libavcodec/vaapi_encode.c index 518e5b2c00..a47facc46d 100644 --- a/libavcodec/vaapi_encode.c +++ b/libavcodec/vaapi_encode.c @@ -33,7 +33,7 @@ const AVCodecHWConfigInternal *const ff_vaapi_encode_hw_configs[] = { NULL, }; -static const char * const picture_type_name[] = { "IDR", "I", "P", "B" }; +static const char picture_type_name[][4] = { "IDR", "I", "P", "B" }; static int vaapi_encode_make_packed_header(AVCodecContext *avctx, VAAPIEncodePicture *pic, diff --git a/libavfilter/af_hdcd.c b/libavfilter/af_hdcd.c index 251d03229a..7000ea81de 100644 --- a/libavfilter/af_hdcd.c +++ b/libavfilter/af_hdcd.c @@ -900,7 +900,7 @@ typedef enum { HDCD_PVER_MIX = 3, /**< Packets of type A and B discovered, most likely an encoding error */ } hdcd_pf; -static const char * const pf_str[] = { +static const char pf_str[][4] = { "?", "A", "B", "A+B" }; diff --git a/libavfilter/f_perms.c b/libavfilter/f_perms.c index d984e5b150..ad52a4ed6e 100644 --- a/libavfilter/f_perms.c +++ b/libavfilter/f_perms.c @@ -72,7 +72,7 @@ static av_cold int init(AVFilterContext *ctx) } enum perm { RO, RW }; -static const char * const perm_str[2] = { "RO", "RW" }; +static const char perm_str[2][4] = { "RO", "RW" }; static int filter_frame(AVFilterLink *inlink, AVFrame *frame) { diff --git a/libavformat/iff.c b/libavformat/iff.c index 2dba121f6f..53abd6d168 100644 --- a/libavformat/iff.c +++ b/libavformat/iff.c @@ -199,13 +199,13 @@ static const uint64_t dsd_loudspeaker_config[] = { AV_CH_LAYOUT_5POINT0, AV_CH_LAYOUT_5POINT1, }; -static const char * dsd_source_comment[] = { +static const char dsd_source_comment[][24] = { "dsd_source_comment", "analogue_source_comment", "pcm_source_comment", }; -static const char * dsd_history_comment[] = { +static const char dsd_history_comment[][17] = { "general_remark", "operator_name", "creating_machine", diff --git a/libavformat/matroskadec.c b/libavformat/matroskadec.c index 374831baa3..300ccae0ad 100644 --- a/libavformat/matroskadec.c +++ b/libavformat/matroskadec.c @@ -1946,7 +1946,7 @@ static void matroska_parse_cues(MatroskaDemuxContext *matroska) { static int matroska_aac_profile(char *codec_id) { - static const char *const aac_profiles[] = { "MAIN", "LC", "SSR" }; + static const char aac_profiles[][5] = { "MAIN", "LC", "SSR" }; int profile; for (profile = 0; profile < FF_ARRAY_ELEMS(aac_profiles); profile++) diff --git a/libavformat/sdp.c b/libavformat/sdp.c index 95f3fbb876..5a0e1695c9 100644 --- a/libavformat/sdp.c +++ b/libavformat/sdp.c @@ -230,7 +230,7 @@ static char *extradata2psets_hevc(AVCodecParameters *par) int extradata_size = par->extradata_size; uint8_t *tmpbuf = NULL; int ps_pos[3] = { 0 }; - static const char * const ps_names[3] = { "vps", "sps", "pps" }; + static const char ps_names[3][4] = { "vps", "sps", "pps" }; int num_arrays, num_nalus; int pos, i, j; diff --git a/libavutil/parseutils.c b/libavutil/parseutils.c index 167e822648..fffe338f56 100644 --- a/libavutil/parseutils.c +++ b/libavutil/parseutils.c @@ -140,7 +140,7 @@ static const VideoRateAbbr video_rate_abbrs[]= { { "ntsc-film", { 24000, 1001 } }, }; -static const char *months[12] = { +static const char months[12][10] = { "january", "february", "march", "april", "may", "june", "july", "august", "september", "october", "november", "december" }; From patchwork Wed Dec 30 23:31:33 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24701 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id C284844A7BE for ; Thu, 31 Dec 2020 01:32:52 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id AC17768A8BD; Thu, 31 Dec 2020 01:32:52 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f43.google.com (mail-ej1-f43.google.com [209.85.218.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6BCDF68A77B for ; Thu, 31 Dec 2020 01:32:40 +0200 (EET) Received: by mail-ej1-f43.google.com with SMTP id g20so23726373ejb.1 for ; Wed, 30 Dec 2020 15:32:40 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=NP44ibxvz27Pn6gJiLfLtcKrX7GGlQhn6JJxbiATuI0=; b=TgRJEIMikjKzxMaPyGZfruUcutk69MZJ9WZK0UBMoBU0IloCxeNOT/ekdQkczE2zGX 8hOeHsoV6t8snaNn9f5YcAcx/2CeA0fKlVvtC3Z3OS2z9fGK03Kt39oNsCk7MsEiXdGI YZGkoiz5CuyWY8twqLnszrpwH5T0g62pHrU8oSxZePPn1XT54U/Gkz7XYLKFh8pLM8po xRU0q6puSB5LSocqtzuOND4sz/tHL5Ae7v3oGHkfjCvgrtIXF2GQtRkVvZcJhJ37BJjv EhlX8k+fWYtA8/RZsFfD8ppROQdOtIHvJIwzaT0xneF050dAE4Ypcp6iIaGZ5tG94IuN 8ReQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=NP44ibxvz27Pn6gJiLfLtcKrX7GGlQhn6JJxbiATuI0=; b=oJwfYDBdnyIox2bvMKJBZ1wBSd0fFjZ8ieTMSX9qVKPNPzr9uLwYddl3NLJhZxtrhd P0XgJskCKe/I38XlVKAcV+BRAR++8MihRgufH1a+iVMZ1nGQJwQmpE85FY551lEJASXV LYDqerykHouNvMQN9EWmm0QeokIrf2E25dI35YBmujSHuDSJRfNvPKHKhN3A1ZtyduLs 6+QR7WkZn+ci1eFUv+AjuUfayBIyt46XtdG+cSDy98ptzFBzi9x55sosyqxQB2iZPxwX 7028ogcnxLeb+gq4+rHK0/MtpzVvuZEgLWwUEowN3HcWVJsYjuy+d1uce3t0DL1DGH/J 6BJA== X-Gm-Message-State: AOAM533o1QFCGy3NgL7g2aNU7mWC05zGlablNg74QXXfnvzzoz0k4qcd lS/ZDZa5DSPKr8J1QGaRbskjQMerlkA= X-Google-Smtp-Source: ABdhPJynbTnTunAa8c/5K4zOPXAIpcwNonNehYVdNtABDOzE/u9zK3C06OKtyvVVHavPyEcIw3v4Nw== X-Received: by 2002:a17:906:934c:: with SMTP id p12mr52322966ejw.361.1609371159505; Wed, 30 Dec 2020 15:32:39 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id u19sm19630409ejg.16.2020.12.30.15.32.38 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Dec 2020 15:32:39 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 31 Dec 2020 00:31:33 +0100 Message-Id: <20201230233157.1055287-6-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> References: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 06/30] Mark some pointers as const X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" Signed-off-by: Andreas Rheinhardt --- fftools/ffmpeg_opt.c | 86 ++++++++++++++++----------------- libavcodec/aacenctab.c | 4 +- libavcodec/aacenctab.h | 4 +- libavcodec/cbs.c | 2 +- libavcodec/h2645_parse.c | 4 +- libavcodec/opustab.c | 2 +- libavcodec/opustab.h | 2 +- libavfilter/af_aiir.c | 2 +- libavfilter/vf_qp.c | 4 +- libavfilter/vf_selectivecolor.c | 2 +- libavfilter/vf_tonemap_opencl.c | 6 +-- libavformat/utils.c | 2 +- libavutil/spherical.c | 2 +- 13 files changed, 61 insertions(+), 61 deletions(-) diff --git a/fftools/ffmpeg_opt.c b/fftools/ffmpeg_opt.c index 242468fc64..c295514401 100644 --- a/fftools/ffmpeg_opt.c +++ b/fftools/ffmpeg_opt.c @@ -51,49 +51,49 @@ #define SPECIFIER_OPT_FMT_f "%f" #define SPECIFIER_OPT_FMT_dbl "%lf" -static const char *opt_name_codec_names[] = {"c", "codec", "acodec", "vcodec", "scodec", "dcodec", NULL}; -static const char *opt_name_audio_channels[] = {"ac", NULL}; -static const char *opt_name_audio_sample_rate[] = {"ar", NULL}; -static const char *opt_name_frame_rates[] = {"r", NULL}; -static const char *opt_name_frame_sizes[] = {"s", NULL}; -static const char *opt_name_frame_pix_fmts[] = {"pix_fmt", NULL}; -static const char *opt_name_ts_scale[] = {"itsscale", NULL}; -static const char *opt_name_hwaccels[] = {"hwaccel", NULL}; -static const char *opt_name_hwaccel_devices[] = {"hwaccel_device", NULL}; -static const char *opt_name_hwaccel_output_formats[] = {"hwaccel_output_format", NULL}; -static const char *opt_name_autorotate[] = {"autorotate", NULL}; -static const char *opt_name_autoscale[] = {"autoscale", NULL}; -static const char *opt_name_max_frames[] = {"frames", "aframes", "vframes", "dframes", NULL}; -static const char *opt_name_bitstream_filters[] = {"bsf", "absf", "vbsf", NULL}; -static const char *opt_name_codec_tags[] = {"tag", "atag", "vtag", "stag", NULL}; -static const char *opt_name_sample_fmts[] = {"sample_fmt", NULL}; -static const char *opt_name_qscale[] = {"q", "qscale", NULL}; -static const char *opt_name_forced_key_frames[] = {"forced_key_frames", NULL}; -static const char *opt_name_force_fps[] = {"force_fps", NULL}; -static const char *opt_name_frame_aspect_ratios[] = {"aspect", NULL}; -static const char *opt_name_rc_overrides[] = {"rc_override", NULL}; -static const char *opt_name_intra_matrices[] = {"intra_matrix", NULL}; -static const char *opt_name_inter_matrices[] = {"inter_matrix", NULL}; -static const char *opt_name_chroma_intra_matrices[] = {"chroma_intra_matrix", NULL}; -static const char *opt_name_top_field_first[] = {"top", NULL}; -static const char *opt_name_presets[] = {"pre", "apre", "vpre", "spre", NULL}; -static const char *opt_name_copy_initial_nonkeyframes[] = {"copyinkfr", NULL}; -static const char *opt_name_copy_prior_start[] = {"copypriorss", NULL}; -static const char *opt_name_filters[] = {"filter", "af", "vf", NULL}; -static const char *opt_name_filter_scripts[] = {"filter_script", NULL}; -static const char *opt_name_reinit_filters[] = {"reinit_filter", NULL}; -static const char *opt_name_fix_sub_duration[] = {"fix_sub_duration", NULL}; -static const char *opt_name_canvas_sizes[] = {"canvas_size", NULL}; -static const char *opt_name_pass[] = {"pass", NULL}; -static const char *opt_name_passlogfiles[] = {"passlogfile", NULL}; -static const char *opt_name_max_muxing_queue_size[] = {"max_muxing_queue_size", NULL}; -static const char *opt_name_muxing_queue_data_threshold[] = {"muxing_queue_data_threshold", NULL}; -static const char *opt_name_guess_layout_max[] = {"guess_layout_max", NULL}; -static const char *opt_name_apad[] = {"apad", NULL}; -static const char *opt_name_discard[] = {"discard", NULL}; -static const char *opt_name_disposition[] = {"disposition", NULL}; -static const char *opt_name_time_bases[] = {"time_base", NULL}; -static const char *opt_name_enc_time_bases[] = {"enc_time_base", NULL}; +static const char *const opt_name_codec_names[] = {"c", "codec", "acodec", "vcodec", "scodec", "dcodec", NULL}; +static const char *const opt_name_audio_channels[] = {"ac", NULL}; +static const char *const opt_name_audio_sample_rate[] = {"ar", NULL}; +static const char *const opt_name_frame_rates[] = {"r", NULL}; +static const char *const opt_name_frame_sizes[] = {"s", NULL}; +static const char *const opt_name_frame_pix_fmts[] = {"pix_fmt", NULL}; +static const char *const opt_name_ts_scale[] = {"itsscale", NULL}; +static const char *const opt_name_hwaccels[] = {"hwaccel", NULL}; +static const char *const opt_name_hwaccel_devices[] = {"hwaccel_device", NULL}; +static const char *const opt_name_hwaccel_output_formats[] = {"hwaccel_output_format", NULL}; +static const char *const opt_name_autorotate[] = {"autorotate", NULL}; +static const char *const opt_name_autoscale[] = {"autoscale", NULL}; +static const char *const opt_name_max_frames[] = {"frames", "aframes", "vframes", "dframes", NULL}; +static const char *const opt_name_bitstream_filters[] = {"bsf", "absf", "vbsf", NULL}; +static const char *const opt_name_codec_tags[] = {"tag", "atag", "vtag", "stag", NULL}; +static const char *const opt_name_sample_fmts[] = {"sample_fmt", NULL}; +static const char *const opt_name_qscale[] = {"q", "qscale", NULL}; +static const char *const opt_name_forced_key_frames[] = {"forced_key_frames", NULL}; +static const char *const opt_name_force_fps[] = {"force_fps", NULL}; +static const char *const opt_name_frame_aspect_ratios[] = {"aspect", NULL}; +static const char *const opt_name_rc_overrides[] = {"rc_override", NULL}; +static const char *const opt_name_intra_matrices[] = {"intra_matrix", NULL}; +static const char *const opt_name_inter_matrices[] = {"inter_matrix", NULL}; +static const char *const opt_name_chroma_intra_matrices[] = {"chroma_intra_matrix", NULL}; +static const char *const opt_name_top_field_first[] = {"top", NULL}; +static const char *const opt_name_presets[] = {"pre", "apre", "vpre", "spre", NULL}; +static const char *const opt_name_copy_initial_nonkeyframes[] = {"copyinkfr", NULL}; +static const char *const opt_name_copy_prior_start[] = {"copypriorss", NULL}; +static const char *const opt_name_filters[] = {"filter", "af", "vf", NULL}; +static const char *const opt_name_filter_scripts[] = {"filter_script", NULL}; +static const char *const opt_name_reinit_filters[] = {"reinit_filter", NULL}; +static const char *const opt_name_fix_sub_duration[] = {"fix_sub_duration", NULL}; +static const char *const opt_name_canvas_sizes[] = {"canvas_size", NULL}; +static const char *const opt_name_pass[] = {"pass", NULL}; +static const char *const opt_name_passlogfiles[] = {"passlogfile", NULL}; +static const char *const opt_name_max_muxing_queue_size[] = {"max_muxing_queue_size", NULL}; +static const char *const opt_name_muxing_queue_data_threshold[] = {"muxing_queue_data_threshold", NULL}; +static const char *const opt_name_guess_layout_max[] = {"guess_layout_max", NULL}; +static const char *const opt_name_apad[] = {"apad", NULL}; +static const char *const opt_name_discard[] = {"discard", NULL}; +static const char *const opt_name_disposition[] = {"disposition", NULL}; +static const char *const opt_name_time_bases[] = {"time_base", NULL}; +static const char *const opt_name_enc_time_bases[] = {"enc_time_base", NULL}; #define WARN_MULTIPLE_OPT_USAGE(name, type, so, st)\ {\ diff --git a/libavcodec/aacenctab.c b/libavcodec/aacenctab.c index f3d70fbe31..874365a593 100644 --- a/libavcodec/aacenctab.c +++ b/libavcodec/aacenctab.c @@ -88,7 +88,7 @@ static const uint8_t swb_size_1024_8[] = { 32, 36, 36, 40, 44, 48, 52, 56, 60, 64, 80 }; -const uint8_t *ff_aac_swb_size_128[] = { +const uint8_t *const ff_aac_swb_size_128[] = { swb_size_128_96, swb_size_128_96, swb_size_128_64, swb_size_128_48, swb_size_128_48, swb_size_128_48, swb_size_128_24, swb_size_128_24, swb_size_128_16, @@ -96,7 +96,7 @@ const uint8_t *ff_aac_swb_size_128[] = { swb_size_128_8 }; -const uint8_t *ff_aac_swb_size_1024[] = { +const uint8_t *const ff_aac_swb_size_1024[] = { swb_size_1024_96, swb_size_1024_96, swb_size_1024_64, swb_size_1024_48, swb_size_1024_48, swb_size_1024_32, swb_size_1024_24, swb_size_1024_24, swb_size_1024_16, diff --git a/libavcodec/aacenctab.h b/libavcodec/aacenctab.h index 64932d709f..dbbdf61dfd 100644 --- a/libavcodec/aacenctab.h +++ b/libavcodec/aacenctab.h @@ -38,9 +38,9 @@ #define AAC_MAX_CHANNELS 16 -extern const uint8_t *ff_aac_swb_size_1024[]; +extern const uint8_t *const ff_aac_swb_size_1024[]; extern const int ff_aac_swb_size_1024_len; -extern const uint8_t *ff_aac_swb_size_128[]; +extern const uint8_t *const ff_aac_swb_size_128[]; extern const int ff_aac_swb_size_128_len; /* Supported layouts without using a PCE */ diff --git a/libavcodec/cbs.c b/libavcodec/cbs.c index f98531e131..e7025cce07 100644 --- a/libavcodec/cbs.c +++ b/libavcodec/cbs.c @@ -28,7 +28,7 @@ #include "cbs_internal.h" -static const CodedBitstreamType *cbs_type_table[] = { +static const CodedBitstreamType *const cbs_type_table[] = { #if CONFIG_CBS_AV1 &ff_cbs_type_av1, #endif diff --git a/libavcodec/h2645_parse.c b/libavcodec/h2645_parse.c index 0f98b49fbe..a36ef4f5a0 100644 --- a/libavcodec/h2645_parse.c +++ b/libavcodec/h2645_parse.c @@ -146,7 +146,7 @@ nsc: return si; } -static const char *hevc_nal_type_name[64] = { +static const char *const hevc_nal_type_name[64] = { "TRAIL_N", // HEVC_NAL_TRAIL_N "TRAIL_R", // HEVC_NAL_TRAIL_R "TSA_N", // HEVC_NAL_TSA_N @@ -219,7 +219,7 @@ static const char *hevc_nal_unit_name(int nal_type) return hevc_nal_type_name[nal_type]; } -static const char *h264_nal_type_name[32] = { +static const char *const h264_nal_type_name[32] = { "Unspecified 0", //H264_NAL_UNSPECIFIED "Coded slice of a non-IDR picture", // H264_NAL_SLICE "Coded slice data partition A", // H264_NAL_DPA diff --git a/libavcodec/opustab.c b/libavcodec/opustab.c index 7276dad793..8a08a26a57 100644 --- a/libavcodec/opustab.c +++ b/libavcodec/opustab.c @@ -1130,7 +1130,7 @@ DECLARE_ALIGNED(32, static const float, ff_celt_window_padded)[136] = { 1.00000000f, 1.00000000f, 1.00000000f, }; -const float *ff_celt_window = &ff_celt_window_padded[8]; +const float *const ff_celt_window = &ff_celt_window_padded[8]; /* square of the window, used for the postfilter */ const float ff_celt_window2[120] = { diff --git a/libavcodec/opustab.h b/libavcodec/opustab.h index cdd0456e3c..4525837942 100644 --- a/libavcodec/opustab.h +++ b/libavcodec/opustab.h @@ -156,7 +156,7 @@ extern const uint16_t ff_celt_qn_exp2[]; extern const float ff_celt_postfilter_taps[3][3]; extern const float ff_celt_window2[120]; -extern const float *ff_celt_window; +extern const float *const ff_celt_window; extern const uint32_t * const ff_celt_pvq_u_row[15]; diff --git a/libavfilter/af_aiir.c b/libavfilter/af_aiir.c index 59d2232ac9..f2e9d8e4e2 100644 --- a/libavfilter/af_aiir.c +++ b/libavfilter/af_aiir.c @@ -453,7 +453,7 @@ static int read_zp_coefficients(AVFilterContext *ctx, char *item_str, int nb_ite return 0; } -static const char *format[] = { "%lf", "%lf %lfi", "%lf %lfr", "%lf %lfd", "%lf %lfi" }; +static const char *const format[] = { "%lf", "%lf %lfi", "%lf %lfr", "%lf %lfd", "%lf %lfi" }; static int read_channels(AVFilterContext *ctx, int channels, uint8_t *item_str, int ab) { diff --git a/libavfilter/vf_qp.c b/libavfilter/vf_qp.c index 33d39493bc..4626198d15 100644 --- a/libavfilter/vf_qp.c +++ b/libavfilter/vf_qp.c @@ -53,7 +53,7 @@ static int config_input(AVFilterLink *inlink) int i; int ret; AVExpr *e = NULL; - static const char *var_names[] = { "known", "qp", "x", "y", "w", "h", NULL }; + static const char *const var_names[] = { "known", "qp", "x", "y", "w", "h", NULL }; if (!s->qp_expr_str) return 0; @@ -121,7 +121,7 @@ static int filter_frame(AVFilterLink *inlink, AVFrame *in) for (x = 0; x < s->qstride; x++) { int qp = in_qp_table ? in_qp_table[x + stride * y] : NAN; double var_values[] = { !!in_qp_table, qp, x, y, s->qstride, s->h, 0}; - static const char *var_names[] = { "known", "qp", "x", "y", "w", "h", NULL }; + static const char *const var_names[] = { "known", "qp", "x", "y", "w", "h", NULL }; double temp_val; ret = av_expr_parse_and_eval(&temp_val, s->qp_expr_str, diff --git a/libavfilter/vf_selectivecolor.c b/libavfilter/vf_selectivecolor.c index d8f339d540..9bd79a3e60 100644 --- a/libavfilter/vf_selectivecolor.c +++ b/libavfilter/vf_selectivecolor.c @@ -61,7 +61,7 @@ enum correction_method { NB_CORRECTION_METHODS, }; -static const char *color_names[NB_RANGES] = { +static const char *const color_names[NB_RANGES] = { "red", "yellow", "green", "cyan", "blue", "magenta", "white", "neutral", "black" }; diff --git a/libavfilter/vf_tonemap_opencl.c b/libavfilter/vf_tonemap_opencl.c index b880228727..2681ebd1b5 100644 --- a/libavfilter/vf_tonemap_opencl.c +++ b/libavfilter/vf_tonemap_opencl.c @@ -71,12 +71,12 @@ typedef struct TonemapOpenCLContext { cl_mem util_mem; } TonemapOpenCLContext; -static const char *linearize_funcs[AVCOL_TRC_NB] = { +static const char *const linearize_funcs[AVCOL_TRC_NB] = { [AVCOL_TRC_SMPTE2084] = "eotf_st2084", [AVCOL_TRC_ARIB_STD_B67] = "inverse_oetf_hlg", }; -static const char *delinearize_funcs[AVCOL_TRC_NB] = { +static const char *const delinearize_funcs[AVCOL_TRC_NB] = { [AVCOL_TRC_BT709] = "inverse_eotf_bt1886", [AVCOL_TRC_BT2020_10] = "inverse_eotf_bt1886", }; @@ -91,7 +91,7 @@ static const struct WhitepointCoefficients whitepoint_table[AVCOL_PRI_NB] = { [AVCOL_PRI_BT2020] = { 0.3127, 0.3290 }, }; -static const char *tonemap_func[TONEMAP_MAX] = { +static const char *const tonemap_func[TONEMAP_MAX] = { [TONEMAP_NONE] = "direct", [TONEMAP_LINEAR] = "linear", [TONEMAP_GAMMA] = "gamma", diff --git a/libavformat/utils.c b/libavformat/utils.c index 1a87d9422a..f63ff3074a 100644 --- a/libavformat/utils.c +++ b/libavformat/utils.c @@ -2874,7 +2874,7 @@ skip_duration_calc: } /* 1:1 map to AVDurationEstimationMethod */ -static const char *duration_name[] = { +static const char *const duration_name[] = { [AVFMT_DURATION_FROM_PTS] = "pts", [AVFMT_DURATION_FROM_STREAM] = "stream", [AVFMT_DURATION_FROM_BITRATE] = "bit rate", diff --git a/libavutil/spherical.c b/libavutil/spherical.c index 4be55f36cf..4a7f3e49ca 100644 --- a/libavutil/spherical.c +++ b/libavutil/spherical.c @@ -51,7 +51,7 @@ void av_spherical_tile_bounds(const AVSphericalMapping *map, *bottom = orig_height - height - *top; } -static const char *spherical_projection_names[] = { +static const char *const spherical_projection_names[] = { [AV_SPHERICAL_EQUIRECTANGULAR] = "equirectangular", [AV_SPHERICAL_CUBEMAP] = "cubemap", [AV_SPHERICAL_EQUIRECTANGULAR_TILE] = "tiled equirectangular", From patchwork Wed Dec 30 23:31:34 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24703 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 3665B44A7BE for ; Thu, 31 Dec 2020 01:32:55 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 1835168A9BB; Thu, 31 Dec 2020 01:32:55 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f50.google.com (mail-ej1-f50.google.com [209.85.218.50]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1AE5668A5D7 for ; Thu, 31 Dec 2020 01:32:41 +0200 (EET) Received: by mail-ej1-f50.google.com with SMTP id d17so23634346ejy.9 for ; Wed, 30 Dec 2020 15:32:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=S5lr5fx/evVZnj2A93vERr6s9PkYhCdgP4yX3FMgVzM=; b=iI/6WlUsYqGjVqrRXIR6IQWXfOq5mxpL7inksJx0k5WNcFeMnyH6t9Itf0iXEEBzT7 Feh5SzZH7oMhaVp++TcRNpQe9x7KAJJ7KiekAKWQozKj3chMKxgijRI2Jg4x36u85ra5 pV7dQiwFwuH3MOEZ9/I+M9ldmvCCi6+w+P6KSxnPwBJw3AsMahMFZIpV/NYrP2UOFhCC h0PCZ9IJ8CET1K7NtpEdrdj6dHFE0OG770wlErYZlia1hUp+KbLgrBUFRIT+++MrHuna mn96ag7K6eTbr3QwP7fQywlIBJGlTdEId3Ab71I5AZ0NGJnJDu4ej4vtnYXJvS83GdWt G8fw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=S5lr5fx/evVZnj2A93vERr6s9PkYhCdgP4yX3FMgVzM=; b=abJR/PRGS4cNZkqUgCsGemJNvcC4v1YwCLphZ9fzqNo+eW5epHFHrdNp6vSdXZv640 dou+TPuBA7OMLN/nOaMBuBAL+AcKGv8dj6XbtBo2i04ovprzMrRk95o4DqZeC54Q6h5A 90FW2dm2qk1AhWbkRko3svfopec0nCRYZXuTnqkw/pIR0lcIMOfamb54iRrO/EDlgUI8 EnKXsC3/b/TRogfohQgi8U6lDY4FOTP8M65T8cVL0NE4UWh70JjIC/cOTVLarHldyXb1 bcq2ctHqc03gn05Zo6mw/A2xHQTqhqPfv3qAvM7K08MX9UcXTQqExhN689RR1Yu6Nu4w QmfQ== X-Gm-Message-State: AOAM530Papt9IlGIzsy5RHHrVqwicxJqMsOrRmhyDdNa7vFudhGxQAUp OygJ0xktg9mUE3LS+jEW10Rv8JdS2yg= X-Google-Smtp-Source: ABdhPJzMHKshZkZbHkc2HtOfTQ665k/N408VLAdWMjdrvfxKUG5HMKCZmJlXPav0ePgqQTDekZsAAg== X-Received: by 2002:a17:906:b2d1:: with SMTP id cf17mr52265404ejb.281.1609371160431; Wed, 30 Dec 2020 15:32:40 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id u19sm19630409ejg.16.2020.12.30.15.32.39 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Dec 2020 15:32:39 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 31 Dec 2020 00:31:34 +0100 Message-Id: <20201230233157.1055287-7-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> References: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 07/30] avcodec/truemotion1data: Avoid indirection for delta-table init X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" Up until arrays of pointers to other arrays have been used, yet these other arrays all have the same number of elements and the same underlying type, so one can use an array of arrays. This also avoids relocations. Signed-off-by: Andreas Rheinhardt --- On 64bit systems it would also make sense to transform the fat tables. libavcodec/truemotion1data.h | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/libavcodec/truemotion1data.h b/libavcodec/truemotion1data.h index 3e581434e4..f432d87d08 100644 --- a/libavcodec/truemotion1data.h +++ b/libavcodec/truemotion1data.h @@ -29,25 +29,28 @@ #include /* Y delta tables, skinny and fat */ -static const int16_t ydt1[8] = { 0, -2, 2, -6, 6, -12, 12, -12 }; -static const int16_t ydt2[8] = { 0, -2, 4, -6, 8, -12, 12, -12 }; -static const int16_t ydt3[8] = { 4, -6, 20, -20, 46, -46, 94, -94 }; +static const int16_t ydts[][8] = { + { 0, -2, 2, -6, 6, -12, 12, -12 }, + { 0, -2, 4, -6, 8, -12, 12, -12 }, + { 4, -6, 20, -20, 46, -46, 94, -94 }, + { 0, -4, 4, -16, 16, -36, 36, -80 }, +}; static const int16_t fat_ydt3[8] = { 0, -15, 50, -50, 115, -115, 235, -235 }; -static const int16_t ydt4[8] = { 0, -4, 4, -16, 16, -36, 36, -80 }; /* NOTE: This table breaks the [+,-] pattern that the rest of the * tables maintain. Is this intentional? */ static const int16_t fat_ydt4[8] = { 0, 40, 80, -76, 160, -154, 236, -236 }; /* C delta tables, skinny and fat */ -static const int16_t cdt1[8] = { 0, -1, 1, -2, 3, -4, 5, -4 }; -static const int16_t cdt2[8] = { 0, -4, 3, -16, 20, -32, 36, -32 }; +static const int16_t cdts[][8] = { + { 0, -1, 1, -2, 3, -4, 5, -4 }, + { 0, -1, 1, -2, 3, -4, 5, -4 }, // Same as above + { 0, -4, 3, -16, 20, -32, 36, -32 }, + { 0, -2, 2, -8, 8, -18, 18, -40 }, +}; static const int16_t fat_cdt2[8] = { 0, -20, 15, -80, 100, -160, 180, -160 }; -static const int16_t cdt3[8] = { 0, -2, 2, -8, 8, -18, 18, -40 }; -/* all the delta tables to choose from, at all 4 delta levels */ -static const int16_t * const ydts[] = { ydt1, ydt2, ydt3, ydt4, NULL }; +/* Fat delta tables to choose from, at all 4 delta levels */ static const int16_t * const fat_ydts[] = { fat_ydt3, fat_ydt3, fat_ydt3, fat_ydt4, NULL }; -static const int16_t * const cdts[] = { cdt1, cdt1, cdt2, cdt3, NULL }; static const int16_t * const fat_cdts[] = { fat_cdt2, fat_cdt2, fat_cdt2, fat_ydt4, NULL }; static const uint8_t pc_tbl2[] = { From patchwork Wed Dec 30 23:31:35 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24704 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 16E5D44A7BE for ; Thu, 31 Dec 2020 01:32:57 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id EFB4868A83C; Thu, 31 Dec 2020 01:32:56 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f42.google.com (mail-ej1-f42.google.com [209.85.218.42]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id DDBBF68A82B for ; Thu, 31 Dec 2020 01:32:41 +0200 (EET) Received: by mail-ej1-f42.google.com with SMTP id b9so23748791ejy.0 for ; Wed, 30 Dec 2020 15:32:41 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=N2FYFjufUs1CcePmB28IIe5D8xE9qqtLAjdrGZBAr8U=; b=MNMDUv+q82S6/0Ud5tTvQbfMtYLza6lAWk6HtJHYh9APVm8k/CMN4cAnyzEsEmBfwU XVdtz0ScITrFzy0bagU91htNTd5o+3m2kfiMUtRMV+Rn0l1oEZZvoYR664f9mybRlHXQ RqPFLSrBaQrgiWxtiWWgcvOrvfm+OrBkYTdu1/8pt49Hy8CvoO+mWnLf+4oG6ATeHvwT xspykyn0izMLY+g3a4zjngptfQC8sgoy8ibBRuO/7s1J/avh7MKCYknwBJn0epVjR+Q9 hfwtF3mCKSrcigyznW/OxKQrgQSU+8EKVZBx2fs5X/lYHno3zniwTxBYxbYs+lZpz0eu PnaQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=N2FYFjufUs1CcePmB28IIe5D8xE9qqtLAjdrGZBAr8U=; b=ketBVCKPsGZph+lrNUp7supH0gQ3ltZS7fC2R22xKJs/KRknl+RjkyNvY5eHW6wylL iS/KOjhUFnyB4If+h0RXDt2tXg1mo8R74ST3l5NZkfsr5okoCjcXb7laQ0DA7S7YCRK9 o8wmkEj93uXYv+jPjiFTCS8h7F0N82AEjTGWzyIqez8yXUr+OAfQU08M3Tw2RJByR5UQ Pvb/diQ+6YKHS4olCd73HRGKM8dcUinNyL39s6WPPIyQb9cjBQ6h8uDCYGJXhNLwve0s i9IRSzDiwbJMw6396PFBTTKq29UUoGkLyiUtYuQUOxr94YW9S/qi7DgaCNs2xWNG2Evu T9TQ== X-Gm-Message-State: AOAM530lDChDNT+Gv5aENewDyJGrhwHW5hakzKuIqDpy3Upm0O8nBGbc uFEhz8RHJ/Vl+AtN5hfCroDjj9Dd/P4= X-Google-Smtp-Source: ABdhPJyV1aV3HGLEHTvJyMscxLINFGXDrcz8+AdmerVKuHecnhEIBvWJa6iOMPHqbJijOWDSVxv3IA== X-Received: by 2002:a17:906:d146:: with SMTP id br6mr50852715ejb.331.1609371161241; Wed, 30 Dec 2020 15:32:41 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id u19sm19630409ejg.16.2020.12.30.15.32.40 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Dec 2020 15:32:40 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 31 Dec 2020 00:31:35 +0100 Message-Id: <20201230233157.1055287-8-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> References: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 08/30] avcodec/truespeech: Avoid indirection for truespeech codebooks X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" Signed-off-by: Andreas Rheinhardt --- libavcodec/truespeech.c | 16 ++++++++-------- libavcodec/truespeech_data.h | 4 ---- 2 files changed, 8 insertions(+), 12 deletions(-) diff --git a/libavcodec/truespeech.c b/libavcodec/truespeech.c index 3cdae8c556..d28779a610 100644 --- a/libavcodec/truespeech.c +++ b/libavcodec/truespeech.c @@ -82,14 +82,14 @@ static void truespeech_read_frame(TSContext *dec, const uint8_t *input) dec->bdsp.bswap_buf((uint32_t *) dec->buffer, (const uint32_t *) input, 8); init_get_bits(&gb, dec->buffer, 32 * 8); - dec->vector[7] = ts_codebook[7][get_bits(&gb, 3)]; - dec->vector[6] = ts_codebook[6][get_bits(&gb, 3)]; - dec->vector[5] = ts_codebook[5][get_bits(&gb, 3)]; - dec->vector[4] = ts_codebook[4][get_bits(&gb, 4)]; - dec->vector[3] = ts_codebook[3][get_bits(&gb, 4)]; - dec->vector[2] = ts_codebook[2][get_bits(&gb, 4)]; - dec->vector[1] = ts_codebook[1][get_bits(&gb, 5)]; - dec->vector[0] = ts_codebook[0][get_bits(&gb, 5)]; + dec->vector[7] = ts_cb_7[get_bits(&gb, 3)]; + dec->vector[6] = ts_cb_6[get_bits(&gb, 3)]; + dec->vector[5] = ts_cb_5[get_bits(&gb, 3)]; + dec->vector[4] = ts_cb_4[get_bits(&gb, 4)]; + dec->vector[3] = ts_cb_3[get_bits(&gb, 4)]; + dec->vector[2] = ts_cb_2[get_bits(&gb, 4)]; + dec->vector[1] = ts_cb_1[get_bits(&gb, 5)]; + dec->vector[0] = ts_cb_0[get_bits(&gb, 5)]; dec->flag = get_bits1(&gb); dec->offset1[0] = get_bits(&gb, 4) << 4; diff --git a/libavcodec/truespeech_data.h b/libavcodec/truespeech_data.h index 73ebda5e85..85a9bafce3 100644 --- a/libavcodec/truespeech_data.h +++ b/libavcodec/truespeech_data.h @@ -66,10 +66,6 @@ static const int16_t ts_cb_7[8] = { 0xCEF0, 0xE4F9, 0xF6BB, 0x0646, 0x14F5, 0x23FF, 0x356F, 0x4A8D, }; -static const int16_t * const ts_codebook[8] = { - ts_cb_0, ts_cb_1, ts_cb_2, ts_cb_3, ts_cb_4, ts_cb_5, ts_cb_6, ts_cb_7 -}; - /* table used for decoding pulse positions */ static const int16_t ts_pulse_values[120] = { 0x0E46, 0x0CCC, 0x0B6D, 0x0A28, 0x08FC, 0x07E8, 0x06EB, 0x0604, From patchwork Wed Dec 30 23:31:36 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24696 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 0407A44A7BE for ; Thu, 31 Dec 2020 01:32:47 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D88C968A817; Thu, 31 Dec 2020 01:32:46 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f50.google.com (mail-ej1-f50.google.com [209.85.218.50]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id B1CE368A717 for ; Thu, 31 Dec 2020 01:32:42 +0200 (EET) Received: by mail-ej1-f50.google.com with SMTP id g20so23726425ejb.1 for ; Wed, 30 Dec 2020 15:32:42 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=O0YVW8AKzS9Gqip5pVhKWNLoHl2XbQKiKeI1y5PIZKs=; b=tzsV60gTkJGJKkuWO/bDnisnfbBMBQ6FfPHIoEOHFqIliAUj54NNBE8zMGWqw/xlVo 03ldbqPaE9+mW82c7VQQpNBlrgOASyRJoMfn56xj6j4HRWWp4h9SsJiuLEB7EpGSouyf HyOXJfGPpsEbB5Z/BwWYMA+IK2s12+81Y5QeSKgTMp3+INtu0gepic8/58bVWappISEn CP6RFsqTYquNhlfXTOh0K/QFhJsGKkp5vz35CA78ATPP4AzwLbz2qrB5Y33lmWapqIcU kXzkBsdcpd2Fq8N+cl5ornTL0CD5T7RY+z+hqTjU4GEaoKz3p1Fd5HdFVgZh8F6Kf4Xa moag== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=O0YVW8AKzS9Gqip5pVhKWNLoHl2XbQKiKeI1y5PIZKs=; b=mDF55WzSIZC7SbTOYyr4c8g7N/HdH991ahWxMECb8GP2HUIxicUdw1PrnXTH+vM8Zx ATgwwDcJmXjY7LGFS0lmi5AioMU2SOXkXcMhe6q6izIs/SQnZiUAilI9fyoqH3hq+T6I fy2CtcaSsBoLhQQcMLdgAEEEA6z7x9qSIGNJEzxHbEoTQtH43WNLD0waJHb32u29sgxk rJMMA+TWkzmT8XHxsMRTo7qNoapnCKKnDJwg/SteSQ+6qw15910wjHY87mO1pLriGPno B4bXFoGAOJbyDkUhg5930niNuOQ332CvCyIt+7hOpH9PLGswUCSUhemcUV4tEGgSYc8T JOkA== X-Gm-Message-State: AOAM533VJph4TkgsRaXF3/gCbS5DE1ECb+jqpRgryq2eJhFvV8NRiMmn Rtp38gYtdkSdxdPBq48BEVRSGJXsgaQ= X-Google-Smtp-Source: ABdhPJy4jCp3dcta6FgnCn3SzytAZNiYgcEFE6MUK8xsGkMA5rjTD0aW4z9ovlQZqOQgQ2FmxN/Wyg== X-Received: by 2002:a17:906:ae43:: with SMTP id lf3mr47885981ejb.130.1609371162109; Wed, 30 Dec 2020 15:32:42 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id u19sm19630409ejg.16.2020.12.30.15.32.41 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Dec 2020 15:32:41 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 31 Dec 2020 00:31:36 +0100 Message-Id: <20201230233157.1055287-9-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> References: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 09/30] avcodec/atrac3plus_data: Mark array as const X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" Forgotten in a7dbeb77c3c30ac4904928978938b209ff6e1ab1. Signed-off-by: Andreas Rheinhardt --- libavcodec/atrac3plus_data.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/atrac3plus_data.h b/libavcodec/atrac3plus_data.h index 7039936ba3..b0b85c4368 100644 --- a/libavcodec/atrac3plus_data.h +++ b/libavcodec/atrac3plus_data.h @@ -393,7 +393,7 @@ static const uint8_t atrac3p_ct_restricted_to_full[2][7][4] = { /* If the first entry of a subtable is negative, it means * that another VLC is to be reused. */ -static int8_t atrac3p_spectra_cbs[][12] = { +static const int8_t atrac3p_spectra_cbs[][12] = { { 1, 0, 0, 1, 7, 0, 19, 5, 13, 21, 6, 8 }, { 0, 1, 0, 4, 11, 0, 1, 29, 6, 20, 7, 2 }, { 0, 0, 1, 8, 0, 13, 18, 7, 2, 0, 0, 0 }, From patchwork Wed Dec 30 23:31:37 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24698 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 4E9D144A7BE for ; Thu, 31 Dec 2020 01:32:49 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 3716668A7D8; Thu, 31 Dec 2020 01:32:49 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f43.google.com (mail-ej1-f43.google.com [209.85.218.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 381AC68A767 for ; Thu, 31 Dec 2020 01:32:44 +0200 (EET) Received: by mail-ej1-f43.google.com with SMTP id w1so23638137ejf.11 for ; Wed, 30 Dec 2020 15:32:44 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=4Vzbo/8Nur291tTEi+eH9lkbjry/jtJVa0C/VAhTRtc=; b=tTXTy8X0qKC1WLdKdcqJiYNYvw7nS7qaflF4BdcCa3U6tMR0I4bu+pHGtZOSlzpUyX 8sgsdxbIyjx1LPGoHtBanV78lTzTMoGSaZeqJjY7uHhY7OmbQP1Sw9HnYHEMkF0wZ6Af Qn1gKKMWl7RopDnMulIjst2n96yvDOSbOFt1pqVrd5PuvtK8gPUxJI++kb0LH2iSR49z q2uUS2124gyt+3QpaXF5XMeb+zFcjm6J2E3tVPDcHxTGOK/s3AW+pTRt4DedU6i6NbS0 75nd6XAKrvH2h1T/dagC6ywOMLJ8zKcR/75+oLQYRLQnYKTZLpx2Mpkmt+1qgYJ4QNME quDg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=4Vzbo/8Nur291tTEi+eH9lkbjry/jtJVa0C/VAhTRtc=; b=HQNpd5Kj70ipSBPl0HsmB+c9oMDKlWjLMGFXI5tAiLGTJjLF55tcP80swVhVjtRjFW sRPMsmFhDp/kkM/P9Fvi+SWWHfAsI2s2T9jFLjAGgywl+AqBm93wbk8rmoY402GaIRmE W7yTe0VbIGU2QUqlmIt5n9aKYh/2pN/+yNHPqu5VgoPnV326I527dIw1YPilb0Hb27xA iuBAnRk5O0fegQaQvKVhNBx2A3ixW/n83EWqY9ZLTnYEnjCvd+PRfN9tv1Eoj44+VJPx QA+q9uiIYO2A+lBwtiNj5Sc7+YIvpVjzu0v+hvyTrlnxXSR2M0XIjXRa7pik59GMYW+G rTCw== X-Gm-Message-State: AOAM532vtH6r3LLwiKALXZ8ipBsvcquk63SJKumnS138QdnTgyfY1xMU Mz1a5JmlIMr8CIHZ7g4fSFg/rfl5muw= X-Google-Smtp-Source: ABdhPJywgr0054V8HvT3Wd2kWIkjOb6t1GodUGUWOh3fjHqYcvy8mr9gB9FzyEUzWQ1qioRGrKD/Qw== X-Received: by 2002:a17:906:b002:: with SMTP id v2mr51849273ejy.531.1609371163039; Wed, 30 Dec 2020 15:32:43 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id u19sm19630409ejg.16.2020.12.30.15.32.42 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Dec 2020 15:32:42 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 31 Dec 2020 00:31:37 +0100 Message-Id: <20201230233157.1055287-10-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> References: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 10/30] avcodec/aacsbr: Remove remnants of tablegen X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" These tables are always initialized at runtime since commit cb93df0dcbd34107c64ec053504fa294b728a9c9. Signed-off-by: Andreas Rheinhardt --- libavcodec/aacsbr.c | 1 - libavcodec/aacsbr_fixed.c | 1 - libavcodec/aacsbr_fixed_tablegen.h | 28 ------- libavcodec/aacsbr_tablegen.h | 28 ------- libavcodec/aacsbr_tablegen_common.h | 114 ---------------------------- libavcodec/aacsbrdata.h | 86 +++++++++++++++++++++ 6 files changed, 86 insertions(+), 172 deletions(-) delete mode 100644 libavcodec/aacsbr_fixed_tablegen.h delete mode 100644 libavcodec/aacsbr_tablegen.h delete mode 100644 libavcodec/aacsbr_tablegen_common.h diff --git a/libavcodec/aacsbr.c b/libavcodec/aacsbr.c index 1d2a8d472d..ca4e83ed64 100644 --- a/libavcodec/aacsbr.c +++ b/libavcodec/aacsbr.c @@ -31,7 +31,6 @@ #include "sbr.h" #include "aacsbr.h" #include "aacsbrdata.h" -#include "aacsbr_tablegen.h" #include "fft.h" #include "internal.h" #include "aacps.h" diff --git a/libavcodec/aacsbr_fixed.c b/libavcodec/aacsbr_fixed.c index 59cbba10ff..ffa63f2647 100644 --- a/libavcodec/aacsbr_fixed.c +++ b/libavcodec/aacsbr_fixed.c @@ -60,7 +60,6 @@ #include "sbr.h" #include "aacsbr.h" #include "aacsbrdata.h" -#include "aacsbr_fixed_tablegen.h" #include "fft.h" #include "aacps.h" #include "sbrdsp.h" diff --git a/libavcodec/aacsbr_fixed_tablegen.h b/libavcodec/aacsbr_fixed_tablegen.h deleted file mode 100644 index 3fcf0204c3..0000000000 --- a/libavcodec/aacsbr_fixed_tablegen.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Header file for hardcoded AAC SBR windows - * - * Copyright (c) 2014 Reimar Döffinger - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_AACSBR_FIXED_TABLEGEN_H -#define AVCODEC_AACSBR_FIXED_TABLEGEN_H - -#include "aacsbr_tablegen_common.h" - -#endif /* AVCODEC_AACSBR_FIXED_TABLEGEN_H */ diff --git a/libavcodec/aacsbr_tablegen.h b/libavcodec/aacsbr_tablegen.h deleted file mode 100644 index 242a963557..0000000000 --- a/libavcodec/aacsbr_tablegen.h +++ /dev/null @@ -1,28 +0,0 @@ -/* - * Header file for hardcoded AAC SBR windows - * - * Copyright (c) 2014 Reimar Döffinger - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_AACSBR_TABLEGEN_H -#define AVCODEC_AACSBR_TABLEGEN_H - -#include "aacsbr_tablegen_common.h" - -#endif /* AVCODEC_AACSBR_TABLEGEN_H */ diff --git a/libavcodec/aacsbr_tablegen_common.h b/libavcodec/aacsbr_tablegen_common.h deleted file mode 100644 index 8e0dd9e1fd..0000000000 --- a/libavcodec/aacsbr_tablegen_common.h +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Header file for hardcoded AAC SBR windows - * - * Copyright (c) 2014 Reimar Döffinger - * - * This file is part of FFmpeg. - * - * FFmpeg is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - * - * FFmpeg is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with FFmpeg; if not, write to the Free Software - * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA - */ - -#ifndef AVCODEC_AACSBR_TABLEGEN_COMMON_H -#define AVCODEC_AACSBR_TABLEGEN_COMMON_H -#include "aac_defines.h" -#include "libavutil/mem.h" - -///< window coefficients for analysis/synthesis QMF banks -static DECLARE_ALIGNED(32, INTFLOAT, sbr_qmf_window_ds)[320]; -static DECLARE_ALIGNED(32, INTFLOAT, sbr_qmf_window_us)[640] = { - Q31( 0.0000000000f), Q31(-0.0005525286f), Q31(-0.0005617692f), Q31(-0.0004947518f), - Q31(-0.0004875227f), Q31(-0.0004893791f), Q31(-0.0005040714f), Q31(-0.0005226564f), - Q31(-0.0005466565f), Q31(-0.0005677802f), Q31(-0.0005870930f), Q31(-0.0006132747f), - Q31(-0.0006312493f), Q31(-0.0006540333f), Q31(-0.0006777690f), Q31(-0.0006941614f), - Q31(-0.0007157736f), Q31(-0.0007255043f), Q31(-0.0007440941f), Q31(-0.0007490598f), - Q31(-0.0007681371f), Q31(-0.0007724848f), Q31(-0.0007834332f), Q31(-0.0007779869f), - Q31(-0.0007803664f), Q31(-0.0007801449f), Q31(-0.0007757977f), Q31(-0.0007630793f), - Q31(-0.0007530001f), Q31(-0.0007319357f), Q31(-0.0007215391f), Q31(-0.0006917937f), - Q31(-0.0006650415f), Q31(-0.0006341594f), Q31(-0.0005946118f), Q31(-0.0005564576f), - Q31(-0.0005145572f), Q31(-0.0004606325f), Q31(-0.0004095121f), Q31(-0.0003501175f), - Q31(-0.0002896981f), Q31(-0.0002098337f), Q31(-0.0001446380f), Q31(-0.0000617334f), - Q31( 0.0000134949f), Q31( 0.0001094383f), Q31( 0.0002043017f), Q31( 0.0002949531f), - Q31( 0.0004026540f), Q31( 0.0005107388f), Q31( 0.0006239376f), Q31( 0.0007458025f), - Q31( 0.0008608443f), Q31( 0.0009885988f), Q31( 0.0011250155f), Q31( 0.0012577884f), - Q31( 0.0013902494f), Q31( 0.0015443219f), Q31( 0.0016868083f), Q31( 0.0018348265f), - Q31( 0.0019841140f), Q31( 0.0021461583f), Q31( 0.0023017254f), Q31( 0.0024625616f), - Q31( 0.0026201758f), Q31( 0.0027870464f), Q31( 0.0029469447f), Q31( 0.0031125420f), - Q31( 0.0032739613f), Q31( 0.0034418874f), Q31( 0.0036008268f), Q31( 0.0037603922f), - Q31( 0.0039207432f), Q31( 0.0040819753f), Q31( 0.0042264269f), Q31( 0.0043730719f), - Q31( 0.0045209852f), Q31( 0.0046606460f), Q31( 0.0047932560f), Q31( 0.0049137603f), - Q31( 0.0050393022f), Q31( 0.0051407353f), Q31( 0.0052461166f), Q31( 0.0053471681f), - Q31( 0.0054196775f), Q31( 0.0054876040f), Q31( 0.0055475714f), Q31( 0.0055938023f), - Q31( 0.0056220643f), Q31( 0.0056455196f), Q31( 0.0056389199f), Q31( 0.0056266114f), - Q31( 0.0055917128f), Q31( 0.0055404363f), Q31( 0.0054753783f), Q31( 0.0053838975f), - Q31( 0.0052715758f), Q31( 0.0051382275f), Q31( 0.0049839687f), Q31( 0.0048109469f), - Q31( 0.0046039530f), Q31( 0.0043801861f), Q31( 0.0041251642f), Q31( 0.0038456408f), - Q31( 0.0035401246f), Q31( 0.0032091885f), Q31( 0.0028446757f), Q31( 0.0024508540f), - Q31( 0.0020274176f), Q31( 0.0015784682f), Q31( 0.0010902329f), Q31( 0.0005832264f), - Q31( 0.0000276045f), Q31(-0.0005464280f), Q31(-0.0011568135f), Q31(-0.0018039472f), - Q31(-0.0024826723f), Q31(-0.0031933778f), Q31(-0.0039401124f), Q31(-0.0047222596f), - Q31(-0.0055337211f), Q31(-0.0063792293f), Q31(-0.0072615816f), Q31(-0.0081798233f), - Q31(-0.0091325329f), Q31(-0.0101150215f), Q31(-0.0111315548f), Q31(-0.0121849995f), - Q31( 0.0132718220f), Q31( 0.0143904666f), Q31( 0.0155405553f), Q31( 0.0167324712f), - Q31( 0.0179433381f), Q31( 0.0191872431f), Q31( 0.0204531793f), Q31( 0.0217467550f), - Q31( 0.0230680169f), Q31( 0.0244160992f), Q31( 0.0257875847f), Q31( 0.0271859429f), - Q31( 0.0286072173f), Q31( 0.0300502657f), Q31( 0.0315017608f), Q31( 0.0329754081f), - Q31( 0.0344620948f), Q31( 0.0359697560f), Q31( 0.0374812850f), Q31( 0.0390053679f), - Q31( 0.0405349170f), Q31( 0.0420649094f), Q31( 0.0436097542f), Q31( 0.0451488405f), - Q31( 0.0466843027f), Q31( 0.0482165720f), Q31( 0.0497385755f), Q31( 0.0512556155f), - Q31( 0.0527630746f), Q31( 0.0542452768f), Q31( 0.0557173648f), Q31( 0.0571616450f), - Q31( 0.0585915683f), Q31( 0.0599837480f), Q31( 0.0613455171f), Q31( 0.0626857808f), - Q31( 0.0639715898f), Q31( 0.0652247106f), Q31( 0.0664367512f), Q31( 0.0676075985f), - Q31( 0.0687043828f), Q31( 0.0697630244f), Q31( 0.0707628710f), Q31( 0.0717002673f), - Q31( 0.0725682583f), Q31( 0.0733620255f), Q31( 0.0741003642f), Q31( 0.0747452558f), - Q31( 0.0753137336f), Q31( 0.0758008358f), Q31( 0.0761992479f), Q31( 0.0764992170f), - Q31( 0.0767093490f), Q31( 0.0768173975f), Q31( 0.0768230011f), Q31( 0.0767204924f), - Q31( 0.0765050718f), Q31( 0.0761748321f), Q31( 0.0757305756f), Q31( 0.0751576255f), - Q31( 0.0744664394f), Q31( 0.0736406005f), Q31( 0.0726774642f), Q31( 0.0715826364f), - Q31( 0.0703533073f), Q31( 0.0689664013f), Q31( 0.0674525021f), Q31( 0.0657690668f), - Q31( 0.0639444805f), Q31( 0.0619602779f), Q31( 0.0598166570f), Q31( 0.0575152691f), - Q31( 0.0550460034f), Q31( 0.0524093821f), Q31( 0.0495978676f), Q31( 0.0466303305f), - Q31( 0.0434768782f), Q31( 0.0401458278f), Q31( 0.0366418116f), Q31( 0.0329583930f), - Q31( 0.0290824006f), Q31( 0.0250307561f), Q31( 0.0207997072f), Q31( 0.0163701258f), - Q31( 0.0117623832f), Q31( 0.0069636862f), Q31( 0.0019765601f), Q31(-0.0032086896f), - Q31(-0.0085711749f), Q31(-0.0141288827f), Q31(-0.0198834129f), Q31(-0.0258227288f), - Q31(-0.0319531274f), Q31(-0.0382776572f), Q31(-0.0447806821f), Q31(-0.0514804176f), - Q31(-0.0583705326f), Q31(-0.0654409853f), Q31(-0.0726943300f), Q31(-0.0801372934f), - Q31(-0.0877547536f), Q31(-0.0955533352f), Q31(-0.1035329531f), Q31(-0.1116826931f), - Q31(-0.1200077984f), Q31(-0.1285002850f), Q31(-0.1371551761f), Q31(-0.1459766491f), - Q31(-0.1549607071f), Q31(-0.1640958855f), Q31(-0.1733808172f), Q31(-0.1828172548f), - Q31(-0.1923966745f), Q31(-0.2021250176f), Q31(-0.2119735853f), Q31(-0.2219652696f), - Q31(-0.2320690870f), Q31(-0.2423016884f), Q31(-0.2526480309f), Q31(-0.2631053299f), - Q31(-0.2736634040f), Q31(-0.2843214189f), Q31(-0.2950716717f), Q31(-0.3059098575f), - Q31(-0.3168278913f), Q31(-0.3278113727f), Q31(-0.3388722693f), Q31(-0.3499914122f), - Q31( 0.3611589903f), Q31( 0.3723795546f), Q31( 0.3836350013f), Q31( 0.3949211761f), - Q31( 0.4062317676f), Q31( 0.4175696896f), Q31( 0.4289119920f), Q31( 0.4402553754f), - Q31( 0.4515996535f), Q31( 0.4629308085f), Q31( 0.4742453214f), Q31( 0.4855253091f), - Q31( 0.4967708254f), Q31( 0.5079817500f), Q31( 0.5191234970f), Q31( 0.5302240895f), - Q31( 0.5412553448f), Q31( 0.5522051258f), Q31( 0.5630789140f), Q31( 0.5738524131f), - Q31( 0.5845403235f), Q31( 0.5951123086f), Q31( 0.6055783538f), Q31( 0.6159109932f), - Q31( 0.6261242695f), Q31( 0.6361980107f), Q31( 0.6461269695f), Q31( 0.6559016302f), - Q31( 0.6655139880f), Q31( 0.6749663190f), Q31( 0.6842353293f), Q31( 0.6933282376f), - Q31( 0.7022388719f), Q31( 0.7109410426f), Q31( 0.7194462634f), Q31( 0.7277448900f), - Q31( 0.7358211758f), Q31( 0.7436827863f), Q31( 0.7513137456f), Q31( 0.7587080760f), - Q31( 0.7658674865f), Q31( 0.7727780881f), Q31( 0.7794287519f), Q31( 0.7858353120f), - Q31( 0.7919735841f), Q31( 0.7978466413f), Q31( 0.8034485751f), Q31( 0.8087695004f), - Q31( 0.8138191270f), Q31( 0.8185776004f), Q31( 0.8230419890f), Q31( 0.8272275347f), - Q31( 0.8311038457f), Q31( 0.8346937361f), Q31( 0.8379717337f), Q31( 0.8409541392f), - Q31( 0.8436238281f), Q31( 0.8459818469f), Q31( 0.8480315777f), Q31( 0.8497805198f), - Q31( 0.8511971524f), Q31( 0.8523047035f), Q31( 0.8531020949f), Q31( 0.8535720573f), - Q31( 0.8537385600f), -}; - -#endif /* AVCODEC_AACSBR_TABLEGEN_COMMON_H */ diff --git a/libavcodec/aacsbrdata.h b/libavcodec/aacsbrdata.h index 4ff8fae913..45eb927b39 100644 --- a/libavcodec/aacsbrdata.h +++ b/libavcodec/aacsbrdata.h @@ -532,4 +532,90 @@ const DECLARE_ALIGNED(16, INTFLOAT, AAC_RENAME(ff_sbr_noise_table))[][2] = { {Q31(-0.01053049862020f), Q31(-0.66959058036166f)}, {Q31(-0.91266367957293f), Q31(-0.11522938140034f)}, }; +///< window coefficients for analysis/synthesis QMF banks +static DECLARE_ALIGNED(32, INTFLOAT, sbr_qmf_window_ds)[320]; +static DECLARE_ALIGNED(32, INTFLOAT, sbr_qmf_window_us)[640] = { + Q31( 0.0000000000f), Q31(-0.0005525286f), Q31(-0.0005617692f), Q31(-0.0004947518f), + Q31(-0.0004875227f), Q31(-0.0004893791f), Q31(-0.0005040714f), Q31(-0.0005226564f), + Q31(-0.0005466565f), Q31(-0.0005677802f), Q31(-0.0005870930f), Q31(-0.0006132747f), + Q31(-0.0006312493f), Q31(-0.0006540333f), Q31(-0.0006777690f), Q31(-0.0006941614f), + Q31(-0.0007157736f), Q31(-0.0007255043f), Q31(-0.0007440941f), Q31(-0.0007490598f), + Q31(-0.0007681371f), Q31(-0.0007724848f), Q31(-0.0007834332f), Q31(-0.0007779869f), + Q31(-0.0007803664f), Q31(-0.0007801449f), Q31(-0.0007757977f), Q31(-0.0007630793f), + Q31(-0.0007530001f), Q31(-0.0007319357f), Q31(-0.0007215391f), Q31(-0.0006917937f), + Q31(-0.0006650415f), Q31(-0.0006341594f), Q31(-0.0005946118f), Q31(-0.0005564576f), + Q31(-0.0005145572f), Q31(-0.0004606325f), Q31(-0.0004095121f), Q31(-0.0003501175f), + Q31(-0.0002896981f), Q31(-0.0002098337f), Q31(-0.0001446380f), Q31(-0.0000617334f), + Q31( 0.0000134949f), Q31( 0.0001094383f), Q31( 0.0002043017f), Q31( 0.0002949531f), + Q31( 0.0004026540f), Q31( 0.0005107388f), Q31( 0.0006239376f), Q31( 0.0007458025f), + Q31( 0.0008608443f), Q31( 0.0009885988f), Q31( 0.0011250155f), Q31( 0.0012577884f), + Q31( 0.0013902494f), Q31( 0.0015443219f), Q31( 0.0016868083f), Q31( 0.0018348265f), + Q31( 0.0019841140f), Q31( 0.0021461583f), Q31( 0.0023017254f), Q31( 0.0024625616f), + Q31( 0.0026201758f), Q31( 0.0027870464f), Q31( 0.0029469447f), Q31( 0.0031125420f), + Q31( 0.0032739613f), Q31( 0.0034418874f), Q31( 0.0036008268f), Q31( 0.0037603922f), + Q31( 0.0039207432f), Q31( 0.0040819753f), Q31( 0.0042264269f), Q31( 0.0043730719f), + Q31( 0.0045209852f), Q31( 0.0046606460f), Q31( 0.0047932560f), Q31( 0.0049137603f), + Q31( 0.0050393022f), Q31( 0.0051407353f), Q31( 0.0052461166f), Q31( 0.0053471681f), + Q31( 0.0054196775f), Q31( 0.0054876040f), Q31( 0.0055475714f), Q31( 0.0055938023f), + Q31( 0.0056220643f), Q31( 0.0056455196f), Q31( 0.0056389199f), Q31( 0.0056266114f), + Q31( 0.0055917128f), Q31( 0.0055404363f), Q31( 0.0054753783f), Q31( 0.0053838975f), + Q31( 0.0052715758f), Q31( 0.0051382275f), Q31( 0.0049839687f), Q31( 0.0048109469f), + Q31( 0.0046039530f), Q31( 0.0043801861f), Q31( 0.0041251642f), Q31( 0.0038456408f), + Q31( 0.0035401246f), Q31( 0.0032091885f), Q31( 0.0028446757f), Q31( 0.0024508540f), + Q31( 0.0020274176f), Q31( 0.0015784682f), Q31( 0.0010902329f), Q31( 0.0005832264f), + Q31( 0.0000276045f), Q31(-0.0005464280f), Q31(-0.0011568135f), Q31(-0.0018039472f), + Q31(-0.0024826723f), Q31(-0.0031933778f), Q31(-0.0039401124f), Q31(-0.0047222596f), + Q31(-0.0055337211f), Q31(-0.0063792293f), Q31(-0.0072615816f), Q31(-0.0081798233f), + Q31(-0.0091325329f), Q31(-0.0101150215f), Q31(-0.0111315548f), Q31(-0.0121849995f), + Q31( 0.0132718220f), Q31( 0.0143904666f), Q31( 0.0155405553f), Q31( 0.0167324712f), + Q31( 0.0179433381f), Q31( 0.0191872431f), Q31( 0.0204531793f), Q31( 0.0217467550f), + Q31( 0.0230680169f), Q31( 0.0244160992f), Q31( 0.0257875847f), Q31( 0.0271859429f), + Q31( 0.0286072173f), Q31( 0.0300502657f), Q31( 0.0315017608f), Q31( 0.0329754081f), + Q31( 0.0344620948f), Q31( 0.0359697560f), Q31( 0.0374812850f), Q31( 0.0390053679f), + Q31( 0.0405349170f), Q31( 0.0420649094f), Q31( 0.0436097542f), Q31( 0.0451488405f), + Q31( 0.0466843027f), Q31( 0.0482165720f), Q31( 0.0497385755f), Q31( 0.0512556155f), + Q31( 0.0527630746f), Q31( 0.0542452768f), Q31( 0.0557173648f), Q31( 0.0571616450f), + Q31( 0.0585915683f), Q31( 0.0599837480f), Q31( 0.0613455171f), Q31( 0.0626857808f), + Q31( 0.0639715898f), Q31( 0.0652247106f), Q31( 0.0664367512f), Q31( 0.0676075985f), + Q31( 0.0687043828f), Q31( 0.0697630244f), Q31( 0.0707628710f), Q31( 0.0717002673f), + Q31( 0.0725682583f), Q31( 0.0733620255f), Q31( 0.0741003642f), Q31( 0.0747452558f), + Q31( 0.0753137336f), Q31( 0.0758008358f), Q31( 0.0761992479f), Q31( 0.0764992170f), + Q31( 0.0767093490f), Q31( 0.0768173975f), Q31( 0.0768230011f), Q31( 0.0767204924f), + Q31( 0.0765050718f), Q31( 0.0761748321f), Q31( 0.0757305756f), Q31( 0.0751576255f), + Q31( 0.0744664394f), Q31( 0.0736406005f), Q31( 0.0726774642f), Q31( 0.0715826364f), + Q31( 0.0703533073f), Q31( 0.0689664013f), Q31( 0.0674525021f), Q31( 0.0657690668f), + Q31( 0.0639444805f), Q31( 0.0619602779f), Q31( 0.0598166570f), Q31( 0.0575152691f), + Q31( 0.0550460034f), Q31( 0.0524093821f), Q31( 0.0495978676f), Q31( 0.0466303305f), + Q31( 0.0434768782f), Q31( 0.0401458278f), Q31( 0.0366418116f), Q31( 0.0329583930f), + Q31( 0.0290824006f), Q31( 0.0250307561f), Q31( 0.0207997072f), Q31( 0.0163701258f), + Q31( 0.0117623832f), Q31( 0.0069636862f), Q31( 0.0019765601f), Q31(-0.0032086896f), + Q31(-0.0085711749f), Q31(-0.0141288827f), Q31(-0.0198834129f), Q31(-0.0258227288f), + Q31(-0.0319531274f), Q31(-0.0382776572f), Q31(-0.0447806821f), Q31(-0.0514804176f), + Q31(-0.0583705326f), Q31(-0.0654409853f), Q31(-0.0726943300f), Q31(-0.0801372934f), + Q31(-0.0877547536f), Q31(-0.0955533352f), Q31(-0.1035329531f), Q31(-0.1116826931f), + Q31(-0.1200077984f), Q31(-0.1285002850f), Q31(-0.1371551761f), Q31(-0.1459766491f), + Q31(-0.1549607071f), Q31(-0.1640958855f), Q31(-0.1733808172f), Q31(-0.1828172548f), + Q31(-0.1923966745f), Q31(-0.2021250176f), Q31(-0.2119735853f), Q31(-0.2219652696f), + Q31(-0.2320690870f), Q31(-0.2423016884f), Q31(-0.2526480309f), Q31(-0.2631053299f), + Q31(-0.2736634040f), Q31(-0.2843214189f), Q31(-0.2950716717f), Q31(-0.3059098575f), + Q31(-0.3168278913f), Q31(-0.3278113727f), Q31(-0.3388722693f), Q31(-0.3499914122f), + Q31( 0.3611589903f), Q31( 0.3723795546f), Q31( 0.3836350013f), Q31( 0.3949211761f), + Q31( 0.4062317676f), Q31( 0.4175696896f), Q31( 0.4289119920f), Q31( 0.4402553754f), + Q31( 0.4515996535f), Q31( 0.4629308085f), Q31( 0.4742453214f), Q31( 0.4855253091f), + Q31( 0.4967708254f), Q31( 0.5079817500f), Q31( 0.5191234970f), Q31( 0.5302240895f), + Q31( 0.5412553448f), Q31( 0.5522051258f), Q31( 0.5630789140f), Q31( 0.5738524131f), + Q31( 0.5845403235f), Q31( 0.5951123086f), Q31( 0.6055783538f), Q31( 0.6159109932f), + Q31( 0.6261242695f), Q31( 0.6361980107f), Q31( 0.6461269695f), Q31( 0.6559016302f), + Q31( 0.6655139880f), Q31( 0.6749663190f), Q31( 0.6842353293f), Q31( 0.6933282376f), + Q31( 0.7022388719f), Q31( 0.7109410426f), Q31( 0.7194462634f), Q31( 0.7277448900f), + Q31( 0.7358211758f), Q31( 0.7436827863f), Q31( 0.7513137456f), Q31( 0.7587080760f), + Q31( 0.7658674865f), Q31( 0.7727780881f), Q31( 0.7794287519f), Q31( 0.7858353120f), + Q31( 0.7919735841f), Q31( 0.7978466413f), Q31( 0.8034485751f), Q31( 0.8087695004f), + Q31( 0.8138191270f), Q31( 0.8185776004f), Q31( 0.8230419890f), Q31( 0.8272275347f), + Q31( 0.8311038457f), Q31( 0.8346937361f), Q31( 0.8379717337f), Q31( 0.8409541392f), + Q31( 0.8436238281f), Q31( 0.8459818469f), Q31( 0.8480315777f), Q31( 0.8497805198f), + Q31( 0.8511971524f), Q31( 0.8523047035f), Q31( 0.8531020949f), Q31( 0.8535720573f), + Q31( 0.8537385600f), +}; + #endif /* AVCODEC_AACSBRDATA_H */ From patchwork Wed Dec 30 23:31:38 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24700 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id D893D44A7BE for ; Thu, 31 Dec 2020 01:32:51 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BA1FF68A886; Thu, 31 Dec 2020 01:32:51 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 5E23268A717 for ; Thu, 31 Dec 2020 01:32:45 +0200 (EET) Received: by mail-ej1-f54.google.com with SMTP id ga15so23691845ejb.4 for ; Wed, 30 Dec 2020 15:32:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=vcfeUBynC5rHSs2DOyVVDV1VdVa1/5ioiLaBWL1y6EM=; b=mQNJNXFxooD1PZxOGFLzW4SmoUgyRl2WQdgKyZ4NUKQ7hz/qmRa3InEwBr3n2mQ5pj t0VZ9iiLw6KIy6WhIo0reqcOljRNn8uaDQ3YCMWNKGXbdIMlpK1biR0BwxpPhq18KDsI MdwupNyDWW3QTvPmy1abuO6WqCl7Fv1qItSx40CVmddMAbsL38Wg/6f4AwocdpJvoBfc xI/WxJm7ApormhTUBi5iM8fsrJYtmloxHgcq+eg/4np4d4uJzPB+0Q4bgB4BKvkwHhKd +qAf2m+J8cDn5DE8Yd7lvcmeoxZYcQBdbJR+MgXg8ZHK1bxBxdqLEEKui0C00UOCSdmI Ezug== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=vcfeUBynC5rHSs2DOyVVDV1VdVa1/5ioiLaBWL1y6EM=; b=Lb0nGCe4/+Zu6kRM7OicHGYwlCDCqhbNYeM+TeklyVDmWLRDpSbv/A6aWjuqVLALmF J6ablHbyym68s6T0CBcPPy9EVSTbomMzx++uriqk6LMIrg3wTnTyQgaxZI0eSe13/Go9 fH/n41qdbWgrvSYSWQVqpg/3V7VKnrNFtcPaifqyN8v7BctCz77VOYmEGk2Xm4mGCFow 2Iwy6sbH9rysA7LQ3W2DKqh9ERjgynveZ2abD55FU9PDcSVjSRTxe+uRZuYp3Ed4jNX5 hfsKRboVDLINL8eKOEGHHhagUq17KOn4T/EEqCqhsPQhUQaYho6JtGLyaFjky2YWaXwf vPbg== X-Gm-Message-State: AOAM5326vW6OxX8ocAcaCnqEJdiaX/O9th/BWRRS5rmN2FxtUxzfzRgC MS/IbDGExB2633Kz2GFWIzz9i07Jxyg= X-Google-Smtp-Source: ABdhPJxuyBWvlFWb2M32PemImjZnsJ9HfAFRb0DeJyoCSR+cvyWweSDNcunSqILIVqhaFcbseWmPrg== X-Received: by 2002:a17:906:ec9:: with SMTP id u9mr52378595eji.400.1609371164338; Wed, 30 Dec 2020 15:32:44 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id u19sm19630409ejg.16.2020.12.30.15.32.43 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Dec 2020 15:32:43 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 31 Dec 2020 00:31:38 +0100 Message-Id: <20201230233157.1055287-11-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> References: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 11/30] avcodec/aacsbr_template: Remove pointless runtime initialization X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" The sbr_qmf_window_us array is basically symmetric around its middle element and therefore the latter half is currently initialized from the first half at runtime. Yet because the first half is initialized, the array can't be placed in .bss at all, so that one gains nothing from not already initializing the whole array statically. Therefore this commit does exactly this. (There are two exceptions to the symmetry: Elements 384 and 512 are the negations of their mirror element; for the fixed-point decoder, Q31(-x) does not equal -Q31(x). In order to keep the array exactly the same, the latter form has been used for these two elements.) Signed-off-by: Andreas Rheinhardt --- libavcodec/aacsbr_template.c | 4 -- libavcodec/aacsbrdata.h | 85 +++++++++++++++++++++++++++++++++++- 2 files changed, 83 insertions(+), 6 deletions(-) diff --git a/libavcodec/aacsbr_template.c b/libavcodec/aacsbr_template.c index 821615f2ab..48d91650f7 100644 --- a/libavcodec/aacsbr_template.c +++ b/libavcodec/aacsbr_template.c @@ -37,10 +37,6 @@ static av_cold void aacsbr_tableinit(void) { int n; - for (n = 1; n < 320; n++) - sbr_qmf_window_us[320 + n] = sbr_qmf_window_us[320 - n]; - sbr_qmf_window_us[384] = -sbr_qmf_window_us[384]; - sbr_qmf_window_us[512] = -sbr_qmf_window_us[512]; for (n = 0; n < 320; n++) sbr_qmf_window_ds[n] = sbr_qmf_window_us[2*n]; diff --git a/libavcodec/aacsbrdata.h b/libavcodec/aacsbrdata.h index 45eb927b39..1b6a3a3367 100644 --- a/libavcodec/aacsbrdata.h +++ b/libavcodec/aacsbrdata.h @@ -534,7 +534,9 @@ const DECLARE_ALIGNED(16, INTFLOAT, AAC_RENAME(ff_sbr_noise_table))[][2] = { ///< window coefficients for analysis/synthesis QMF banks static DECLARE_ALIGNED(32, INTFLOAT, sbr_qmf_window_ds)[320]; -static DECLARE_ALIGNED(32, INTFLOAT, sbr_qmf_window_us)[640] = { +/* This table contains redundancy: It is symmetric about the entry #320 + * with the exception of entries 384 and 512 which are negated. */ +static const DECLARE_ALIGNED(32, INTFLOAT, sbr_qmf_window_us)[640] = { Q31( 0.0000000000f), Q31(-0.0005525286f), Q31(-0.0005617692f), Q31(-0.0004947518f), Q31(-0.0004875227f), Q31(-0.0004893791f), Q31(-0.0005040714f), Q31(-0.0005226564f), Q31(-0.0005466565f), Q31(-0.0005677802f), Q31(-0.0005870930f), Q31(-0.0006132747f), @@ -615,7 +617,86 @@ static DECLARE_ALIGNED(32, INTFLOAT, sbr_qmf_window_us)[640] = { Q31( 0.8311038457f), Q31( 0.8346937361f), Q31( 0.8379717337f), Q31( 0.8409541392f), Q31( 0.8436238281f), Q31( 0.8459818469f), Q31( 0.8480315777f), Q31( 0.8497805198f), Q31( 0.8511971524f), Q31( 0.8523047035f), Q31( 0.8531020949f), Q31( 0.8535720573f), - Q31( 0.8537385600f), + Q31( 0.8537385600f), Q31( 0.8535720573f), Q31( 0.8531020949f), Q31( 0.8523047035f), + Q31( 0.8511971524f), Q31( 0.8497805198f), Q31( 0.8480315777f), Q31( 0.8459818469f), + Q31( 0.8436238281f), Q31( 0.8409541392f), Q31( 0.8379717337f), Q31( 0.8346937361f), + Q31( 0.8311038457f), Q31( 0.8272275347f), Q31( 0.8230419890f), Q31( 0.8185776004f), + Q31( 0.8138191270f), Q31( 0.8087695004f), Q31( 0.8034485751f), Q31( 0.7978466413f), + Q31( 0.7919735841f), Q31( 0.7858353120f), Q31( 0.7794287519f), Q31( 0.7727780881f), + Q31( 0.7658674865f), Q31( 0.7587080760f), Q31( 0.7513137456f), Q31( 0.7436827863f), + Q31( 0.7358211758f), Q31( 0.7277448900f), Q31( 0.7194462634f), Q31( 0.7109410426f), + Q31( 0.7022388719f), Q31( 0.6933282376f), Q31( 0.6842353293f), Q31( 0.6749663190f), + Q31( 0.6655139880f), Q31( 0.6559016302f), Q31( 0.6461269695f), Q31( 0.6361980107f), + Q31( 0.6261242695f), Q31( 0.6159109932f), Q31( 0.6055783538f), Q31( 0.5951123086f), + Q31( 0.5845403235f), Q31( 0.5738524131f), Q31( 0.5630789140f), Q31( 0.5522051258f), + Q31( 0.5412553448f), Q31( 0.5302240895f), Q31( 0.5191234970f), Q31( 0.5079817500f), + Q31( 0.4967708254f), Q31( 0.4855253091f), Q31( 0.4742453214f), Q31( 0.4629308085f), + Q31( 0.4515996535f), Q31( 0.4402553754f), Q31( 0.4289119920f), Q31( 0.4175696896f), + Q31( 0.4062317676f), Q31( 0.3949211761f), Q31( 0.3836350013f), Q31( 0.3723795546f), + -Q31(0.3611589903f), Q31(-0.3499914122f), Q31(-0.3388722693f), Q31(-0.3278113727f), + Q31(-0.3168278913f), Q31(-0.3059098575f), Q31(-0.2950716717f), Q31(-0.2843214189f), + Q31(-0.2736634040f), Q31(-0.2631053299f), Q31(-0.2526480309f), Q31(-0.2423016884f), + Q31(-0.2320690870f), Q31(-0.2219652696f), Q31(-0.2119735853f), Q31(-0.2021250176f), + Q31(-0.1923966745f), Q31(-0.1828172548f), Q31(-0.1733808172f), Q31(-0.1640958855f), + Q31(-0.1549607071f), Q31(-0.1459766491f), Q31(-0.1371551761f), Q31(-0.1285002850f), + Q31(-0.1200077984f), Q31(-0.1116826931f), Q31(-0.1035329531f), Q31(-0.0955533352f), + Q31(-0.0877547536f), Q31(-0.0801372934f), Q31(-0.0726943300f), Q31(-0.0654409853f), + Q31(-0.0583705326f), Q31(-0.0514804176f), Q31(-0.0447806821f), Q31(-0.0382776572f), + Q31(-0.0319531274f), Q31(-0.0258227288f), Q31(-0.0198834129f), Q31(-0.0141288827f), + Q31(-0.0085711749f), Q31(-0.0032086896f), Q31( 0.0019765601f), Q31( 0.0069636862f), + Q31( 0.0117623832f), Q31( 0.0163701258f), Q31( 0.0207997072f), Q31( 0.0250307561f), + Q31( 0.0290824006f), Q31( 0.0329583930f), Q31( 0.0366418116f), Q31( 0.0401458278f), + Q31( 0.0434768782f), Q31( 0.0466303305f), Q31( 0.0495978676f), Q31( 0.0524093821f), + Q31( 0.0550460034f), Q31( 0.0575152691f), Q31( 0.0598166570f), Q31( 0.0619602779f), + Q31( 0.0639444805f), Q31( 0.0657690668f), Q31( 0.0674525021f), Q31( 0.0689664013f), + Q31( 0.0703533073f), Q31( 0.0715826364f), Q31( 0.0726774642f), Q31( 0.0736406005f), + Q31( 0.0744664394f), Q31( 0.0751576255f), Q31( 0.0757305756f), Q31( 0.0761748321f), + Q31( 0.0765050718f), Q31( 0.0767204924f), Q31( 0.0768230011f), Q31( 0.0768173975f), + Q31( 0.0767093490f), Q31( 0.0764992170f), Q31( 0.0761992479f), Q31( 0.0758008358f), + Q31( 0.0753137336f), Q31( 0.0747452558f), Q31( 0.0741003642f), Q31( 0.0733620255f), + Q31( 0.0725682583f), Q31( 0.0717002673f), Q31( 0.0707628710f), Q31( 0.0697630244f), + Q31( 0.0687043828f), Q31( 0.0676075985f), Q31( 0.0664367512f), Q31( 0.0652247106f), + Q31( 0.0639715898f), Q31( 0.0626857808f), Q31( 0.0613455171f), Q31( 0.0599837480f), + Q31( 0.0585915683f), Q31( 0.0571616450f), Q31( 0.0557173648f), Q31( 0.0542452768f), + Q31( 0.0527630746f), Q31( 0.0512556155f), Q31( 0.0497385755f), Q31( 0.0482165720f), + Q31( 0.0466843027f), Q31( 0.0451488405f), Q31( 0.0436097542f), Q31( 0.0420649094f), + Q31( 0.0405349170f), Q31( 0.0390053679f), Q31( 0.0374812850f), Q31( 0.0359697560f), + Q31( 0.0344620948f), Q31( 0.0329754081f), Q31( 0.0315017608f), Q31( 0.0300502657f), + Q31( 0.0286072173f), Q31( 0.0271859429f), Q31( 0.0257875847f), Q31( 0.0244160992f), + Q31( 0.0230680169f), Q31( 0.0217467550f), Q31( 0.0204531793f), Q31( 0.0191872431f), + Q31( 0.0179433381f), Q31( 0.0167324712f), Q31( 0.0155405553f), Q31( 0.0143904666f), + -Q31(0.0132718220f), Q31(-0.0121849995f), Q31(-0.0111315548f), Q31(-0.0101150215f), + Q31(-0.0091325329f), Q31(-0.0081798233f), Q31(-0.0072615816f), Q31(-0.0063792293f), + Q31(-0.0055337211f), Q31(-0.0047222596f), Q31(-0.0039401124f), Q31(-0.0031933778f), + Q31(-0.0024826723f), Q31(-0.0018039472f), Q31(-0.0011568135f), Q31(-0.0005464280f), + Q31( 0.0000276045f), Q31( 0.0005832264f), Q31( 0.0010902329f), Q31( 0.0015784682f), + Q31( 0.0020274176f), Q31( 0.0024508540f), Q31( 0.0028446757f), Q31( 0.0032091885f), + Q31( 0.0035401246f), Q31( 0.0038456408f), Q31( 0.0041251642f), Q31( 0.0043801861f), + Q31( 0.0046039530f), Q31( 0.0048109469f), Q31( 0.0049839687f), Q31( 0.0051382275f), + Q31( 0.0052715758f), Q31( 0.0053838975f), Q31( 0.0054753783f), Q31( 0.0055404363f), + Q31( 0.0055917128f), Q31( 0.0056266114f), Q31( 0.0056389199f), Q31( 0.0056455196f), + Q31( 0.0056220643f), Q31( 0.0055938023f), Q31( 0.0055475714f), Q31( 0.0054876040f), + Q31( 0.0054196775f), Q31( 0.0053471681f), Q31( 0.0052461166f), Q31( 0.0051407353f), + Q31( 0.0050393022f), Q31( 0.0049137603f), Q31( 0.0047932560f), Q31( 0.0046606460f), + Q31( 0.0045209852f), Q31( 0.0043730719f), Q31( 0.0042264269f), Q31( 0.0040819753f), + Q31( 0.0039207432f), Q31( 0.0037603922f), Q31( 0.0036008268f), Q31( 0.0034418874f), + Q31( 0.0032739613f), Q31( 0.0031125420f), Q31( 0.0029469447f), Q31( 0.0027870464f), + Q31( 0.0026201758f), Q31( 0.0024625616f), Q31( 0.0023017254f), Q31( 0.0021461583f), + Q31( 0.0019841140f), Q31( 0.0018348265f), Q31( 0.0016868083f), Q31( 0.0015443219f), + Q31( 0.0013902494f), Q31( 0.0012577884f), Q31( 0.0011250155f), Q31( 0.0009885988f), + Q31( 0.0008608443f), Q31( 0.0007458025f), Q31( 0.0006239376f), Q31( 0.0005107388f), + Q31( 0.0004026540f), Q31( 0.0002949531f), Q31( 0.0002043017f), Q31( 0.0001094383f), + Q31( 0.0000134949f), Q31(-0.0000617334f), Q31(-0.0001446380f), Q31(-0.0002098337f), + Q31(-0.0002896981f), Q31(-0.0003501175f), Q31(-0.0004095121f), Q31(-0.0004606325f), + Q31(-0.0005145572f), Q31(-0.0005564576f), Q31(-0.0005946118f), Q31(-0.0006341594f), + Q31(-0.0006650415f), Q31(-0.0006917937f), Q31(-0.0007215391f), Q31(-0.0007319357f), + Q31(-0.0007530001f), Q31(-0.0007630793f), Q31(-0.0007757977f), Q31(-0.0007801449f), + Q31(-0.0007803664f), Q31(-0.0007779869f), Q31(-0.0007834332f), Q31(-0.0007724848f), + Q31(-0.0007681371f), Q31(-0.0007490598f), Q31(-0.0007440941f), Q31(-0.0007255043f), + Q31(-0.0007157736f), Q31(-0.0006941614f), Q31(-0.0006777690f), Q31(-0.0006540333f), + Q31(-0.0006312493f), Q31(-0.0006132747f), Q31(-0.0005870930f), Q31(-0.0005677802f), + Q31(-0.0005466565f), Q31(-0.0005226564f), Q31(-0.0005040714f), Q31(-0.0004893791f), + Q31(-0.0004875227f), Q31(-0.0004947518f), Q31(-0.0005617692f), Q31(-0.0005525286f), }; #endif /* AVCODEC_AACSBRDATA_H */ From patchwork Wed Dec 30 23:31:39 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24702 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id EDD3A44A7BE for ; Thu, 31 Dec 2020 01:32:53 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CB7A668A98A; Thu, 31 Dec 2020 01:32:53 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0277E68A760 for ; Thu, 31 Dec 2020 01:32:45 +0200 (EET) Received: by mail-ej1-f44.google.com with SMTP id x16so23699544ejj.7 for ; Wed, 30 Dec 2020 15:32:45 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=GJ+4F7GhhgTliHZFO3D3PVQGAgpZCX4RzaB9PcXJJFs=; b=J4HMlX+HQMQAVulTE4B7NFhmyPvSlkTC2EYtDu4W3B9arQjfUdAiLff45Bm/NtCWJl JTxxEVtPFw8p/TWeNUFy1O4Dk20EwL5ridp/rZBHaLVrVCRatCM5kkhRml+IlfnXISWT 90Pq47hQd2+F178pKBhX/KrrP0lVOXxp1mtk+llAPKsRa9WNdEfMAqfgrR9UIybv9OYM N8VhB+AZ57WaA+xK5DDI9/EeZFeU2PdYs4nBIYWp4v+mi5xu4dL+zsSd7toOM5MLKGEQ LnCkpOmwmJhCGts71+15fZEWyHS7nDQPEpIW5Yo8XEs/KwNsFQs730bEOkXM+b6H0XT2 Eyyw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=GJ+4F7GhhgTliHZFO3D3PVQGAgpZCX4RzaB9PcXJJFs=; b=MA7/gddOTOD7LMSqsruZSWTrv2Q4rDrLc2pU4zS/xmiuvfsluWwVGva62pucIokif3 ycitrKs0c/pcy9TlwG7EKzT/4SF/yEe94bVU4xBOFO+QKiHcLg3Ab1SfkNvvXZdOXl5G LnTaz+R2DwCxXASDjyDCX/ck4C4DdyUrZgwSpPTINbnaQa+o2OU8vFuhSIE307CjFWvU evVfyMXSCIzyjlLWXlt4KKh4xzkM4tcPF90WOMLyvRCp51EAnETeV+xL2zDqTdIdxWzV p2RFkyUqVvK0nVc81pS1lQohUAG/sMbdkUVjELCDtPyLKjRs3056CHj+f30JIgRa/DwB iwow== X-Gm-Message-State: AOAM532wnZt9YhNkpdlFwX134qtDiR4o3NYx5FT07ex2uiJiIuZpfyNq 7ddfXYTsoZgm6bRsYs9Vbl5sMrEdb9s= X-Google-Smtp-Source: ABdhPJxr/R0op1TFCjHJc19q7OHhcAkYkkqpeNIG667U6ntyUqh7UB85X5tqbs8PMcftNdTor7asYQ== X-Received: by 2002:a17:906:2f8b:: with SMTP id w11mr44903742eji.246.1609371165273; Wed, 30 Dec 2020 15:32:45 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id u19sm19630409ejg.16.2020.12.30.15.32.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Dec 2020 15:32:44 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 31 Dec 2020 00:31:39 +0100 Message-Id: <20201230233157.1055287-12-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> References: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 12/30] avcodec/mpegvideo: Don't zero-initialize unnecessarily X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" mbintra_table will be memset to 1 a few lines after its allocation. Signed-off-by: Andreas Rheinhardt --- libavcodec/mpegvideo.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/mpegvideo.c b/libavcodec/mpegvideo.c index c28d1adef7..f487864de6 100644 --- a/libavcodec/mpegvideo.c +++ b/libavcodec/mpegvideo.c @@ -790,7 +790,7 @@ static int init_context_frame(MpegEncContext *s) } /* which mb is an intra block, init macroblock skip table */ - if (!FF_ALLOCZ_TYPED_ARRAY(s->mbintra_table, mb_array_size) || + if (!FF_ALLOC_TYPED_ARRAY(s->mbintra_table, mb_array_size) || // Note the + 1 is for a quicker MPEG-4 slice_end detection !FF_ALLOCZ_TYPED_ARRAY(s->mbskip_table, mb_array_size + 2)) return AVERROR(ENOMEM); From patchwork Wed Dec 30 23:31:40 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24705 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id F216B44A7BE for ; Thu, 31 Dec 2020 01:32:57 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DC07A68A7E5; Thu, 31 Dec 2020 01:32:57 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ed1-f51.google.com (mail-ed1-f51.google.com [209.85.208.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EB36268A830 for ; Thu, 31 Dec 2020 01:32:46 +0200 (EET) Received: by mail-ed1-f51.google.com with SMTP id b2so16858419edm.3 for ; Wed, 30 Dec 2020 15:32:46 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=/3Fj/K6I+L8208RUIB26+B7iN/OP2N8ZKQJU9JNLd88=; b=YwXcOpWEHqhh9xV84K9/0RBm+t+2djXw79wpoNC9BliAFrqNoksCCOt6xQgWUeM7Jd K8AdHWRUzOrPBVmFGurDuBwTnLIA6AvKpZSngjEEHocS7PfcJzDH/9p1piZ5dY89ycot q/T+egMZHOy4v3tLlphidfzVjG0yqVqBx0hM/2LDpGWb1V9b7umBHlkhE/QcqcZsPXkp dNJQMKQgZlWeiRL1BVuuGu20K2XkJLqCo4sHQKGSkzggTWiZGczWKNNzxrzVjbKW2nQ9 3rAaAL7as9pNDaRWX29zP4WKsBaiceCPdJmY8tckimn9/1rzUmMyvG2juYPdRRX/CmOP vigQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=/3Fj/K6I+L8208RUIB26+B7iN/OP2N8ZKQJU9JNLd88=; b=Vy2gXfJwbzWEhLQYw4uQJfZho8yFXL0TG++FnuBQfJ0AhpF4P4bzU8zjRmAEPyQhMm c8OYrE+J9bYIlzWFCWe/6CiJZ1mfpeV0V5EuiI9tZdMTFdXeZYm0OwSkOUzl9w23/t+R 4sDq0rRaWxddh7kLTOTPZHpEYXw8HQPgrEpg6hWnQ1TfYmKNrn1F7hTdWL61QDa3CFPa cljxvYbueB+f/cv3gxw3n1azlIHCB28b2kUNXtT+GdwilnPRzpAx5PybMfxZCAJGntle E5VCDcm9xFArIA5fvCROVmIrgVNNIpUFXTD988B053TAa3hWZQNdhrMtIboZpI+HJzMJ ZFUA== X-Gm-Message-State: AOAM530hvXS6kZ6QCZ+R0shsTKInzSzYwsyxOIZgRWQ/E2ojdRwkN2/2 v6bzudVmBwis61yREakBor08WWq6+os= X-Google-Smtp-Source: ABdhPJw9XptFohMlvWWLB0DcR19rxB0tcEvPsVjCRo0yrlTsOhNoeyhknEFopsDuxVbIEkgFAb5prQ== X-Received: by 2002:a05:6402:1d24:: with SMTP id dh4mr51727633edb.161.1609371166133; Wed, 30 Dec 2020 15:32:46 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id u19sm19630409ejg.16.2020.12.30.15.32.45 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Dec 2020 15:32:45 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 31 Dec 2020 00:31:40 +0100 Message-Id: <20201230233157.1055287-13-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> References: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 13/30] avformat/rtpdec: Remove next pointer from Protocol Handlers X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" Forgotten in 61974537610d82bd35b6e3ac91ccd270c6bdc711 (notice that RTPDynamicProtocolHandler is not a public struct, so one can remove the linked-list pointer immediately (unlike in most other patches of this kind)). Signed-off-by: Andreas Rheinhardt --- libavformat/rtpdec.h | 2 -- 1 file changed, 2 deletions(-) diff --git a/libavformat/rtpdec.h b/libavformat/rtpdec.h index 9144edbe8b..701ce072b6 100644 --- a/libavformat/rtpdec.h +++ b/libavformat/rtpdec.h @@ -134,8 +134,6 @@ struct RTPDynamicProtocolHandler { /** Parse handler for this dynamic packet */ DynamicPayloadPacketHandlerProc parse_packet; int (*need_keyframe)(PayloadContext *context); - - struct RTPDynamicProtocolHandler *next; }; typedef struct RTPPacket { From patchwork Wed Dec 30 23:31:41 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24706 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id E04DB44A7BE for ; Thu, 31 Dec 2020 01:32:58 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id C6F3D68A912; Thu, 31 Dec 2020 01:32:58 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A658068A81D for ; Thu, 31 Dec 2020 01:32:47 +0200 (EET) Received: by mail-ej1-f41.google.com with SMTP id g20so23726584ejb.1 for ; Wed, 30 Dec 2020 15:32:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=PTENOAimCQduSifvSiicNSaCvGOx5MFVMLhbODDy4q0=; b=rE/pnJVwtQa5xgWa9Uar1vNxt+4oU/YsHs/3o4pF5WM6EETLb5vjsn3yIhvifLxE8i iU/6X/zsq47YdiRUWXbOa8C3flLgx+QT6obwGuR9Htz+HX1gnMidbnGyYMAGyXtbBk5f t7yJp1AIzdrlm7N00JES8UCUhHJxMlAZZGc7WUGcsfxwzsljdhv265UYCxku4Pp/o9lJ el9yYFN6Iw+kPBc5XvcbrnjyAVqVcsDYJTWFOD+tqKN7ZYCLhTZdiR5/lie5fpKKqtng pzKAvOiahc4ToCldLYqohAVEt2FkTak2mADkG8TwhY6w9xq+dLxuw6h3yM4DFR2xL3Qt G7Bw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=PTENOAimCQduSifvSiicNSaCvGOx5MFVMLhbODDy4q0=; b=j+I9E4rPRJnQPNAFhhlWCtdOCZ6SjGXpNu656lNXTaI9+//j35NazcnGgzi8d1hoeX TXIsUjMQPpyXJ6Id8ygHVm1gsLZoMV5l5PV/ra7ZaYMENJYv4N9/7Fca6tqn2RohIHm7 oMLU6mJEQz3igAdTlLdLDkMtlQcrTIoIfcprqrqfs5H8AtuKa7D5BaxO5dgr/G4M7tb0 KuewEKcn/pz72drB5ur6AbZ7zT4QfrtLa4H+msfmh1PCc9uMnhppceI1GJnVQ9spX8ls BhBeR/puXfpaN98MOE/OqC71LGZpt1y5dBYcRwJiuxzIriCRPzqKIKqDNwOMSzu4wuDE H75Q== X-Gm-Message-State: AOAM533imNfbLnHCrQIv73Wzw56f5QrO0d1vQNOLvQU4+lSk9JPu34qW L83MtSQbtTBQsNZ3IqiIHDSUL02U+Hg= X-Google-Smtp-Source: ABdhPJztkYgFHo8XrUUC+pJ67Bsm1Kcis/PQLGdAiEXF81lQM4lEMl+pqGFq8rQMBodyi0rMoRYYKg== X-Received: by 2002:a17:906:378f:: with SMTP id n15mr50388535ejc.263.1609371167046; Wed, 30 Dec 2020 15:32:47 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id u19sm19630409ejg.16.2020.12.30.15.32.46 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Dec 2020 15:32:46 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 31 Dec 2020 00:31:41 +0100 Message-Id: <20201230233157.1055287-14-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> References: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 14/30] avcodec/rtpdec: Constify RTPDynamicProtocolHandlers X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" Also constify the list of pointers to said RTPDynamicProtocolHandlers. Signed-off-by: Andreas Rheinhardt --- libavformat/rdt.c | 2 +- libavformat/rtpdec.c | 22 +++++++++++----------- libavformat/rtpdec_qt.c | 2 +- 3 files changed, 13 insertions(+), 13 deletions(-) diff --git a/libavformat/rdt.c b/libavformat/rdt.c index 60c36f09e6..e5824f6a48 100644 --- a/libavformat/rdt.c +++ b/libavformat/rdt.c @@ -554,7 +554,7 @@ rdt_close_context (PayloadContext *rdt) } #define RDT_HANDLER(n, s, t) \ -RTPDynamicProtocolHandler ff_rdt_ ## n ## _handler = { \ +const RTPDynamicProtocolHandler ff_rdt_ ## n ## _handler = { \ .enc_name = s, \ .codec_type = t, \ .codec_id = AV_CODEC_ID_NONE, \ diff --git a/libavformat/rtpdec.c b/libavformat/rtpdec.c index 3d5b200099..dfecb722d5 100644 --- a/libavformat/rtpdec.c +++ b/libavformat/rtpdec.c @@ -33,48 +33,48 @@ #define MIN_FEEDBACK_INTERVAL 200000 /* 200 ms in us */ -static RTPDynamicProtocolHandler l24_dynamic_handler = { +static const RTPDynamicProtocolHandler l24_dynamic_handler = { .enc_name = "L24", .codec_type = AVMEDIA_TYPE_AUDIO, .codec_id = AV_CODEC_ID_PCM_S24BE, }; -static RTPDynamicProtocolHandler gsm_dynamic_handler = { +static const RTPDynamicProtocolHandler gsm_dynamic_handler = { .enc_name = "GSM", .codec_type = AVMEDIA_TYPE_AUDIO, .codec_id = AV_CODEC_ID_GSM, }; -static RTPDynamicProtocolHandler realmedia_mp3_dynamic_handler = { +static const RTPDynamicProtocolHandler realmedia_mp3_dynamic_handler = { .enc_name = "X-MP3-draft-00", .codec_type = AVMEDIA_TYPE_AUDIO, .codec_id = AV_CODEC_ID_MP3ADU, }; -static RTPDynamicProtocolHandler speex_dynamic_handler = { +static const RTPDynamicProtocolHandler speex_dynamic_handler = { .enc_name = "speex", .codec_type = AVMEDIA_TYPE_AUDIO, .codec_id = AV_CODEC_ID_SPEEX, }; -static RTPDynamicProtocolHandler opus_dynamic_handler = { +static const RTPDynamicProtocolHandler opus_dynamic_handler = { .enc_name = "opus", .codec_type = AVMEDIA_TYPE_AUDIO, .codec_id = AV_CODEC_ID_OPUS, }; -static RTPDynamicProtocolHandler t140_dynamic_handler = { /* RFC 4103 */ +static const RTPDynamicProtocolHandler t140_dynamic_handler = { /* RFC 4103 */ .enc_name = "t140", .codec_type = AVMEDIA_TYPE_SUBTITLE, .codec_id = AV_CODEC_ID_TEXT, }; -extern RTPDynamicProtocolHandler ff_rdt_video_handler; -extern RTPDynamicProtocolHandler ff_rdt_audio_handler; -extern RTPDynamicProtocolHandler ff_rdt_live_video_handler; -extern RTPDynamicProtocolHandler ff_rdt_live_audio_handler; +extern const RTPDynamicProtocolHandler ff_rdt_video_handler; +extern const RTPDynamicProtocolHandler ff_rdt_audio_handler; +extern const RTPDynamicProtocolHandler ff_rdt_live_video_handler; +extern const RTPDynamicProtocolHandler ff_rdt_live_audio_handler; -static const RTPDynamicProtocolHandler *rtp_dynamic_protocol_handler_list[] = { +static const RTPDynamicProtocolHandler *const rtp_dynamic_protocol_handler_list[] = { /* rtp */ &ff_ac3_dynamic_handler, &ff_amr_nb_dynamic_handler, diff --git a/libavformat/rtpdec_qt.c b/libavformat/rtpdec_qt.c index 740c382d07..93bf31746b 100644 --- a/libavformat/rtpdec_qt.c +++ b/libavformat/rtpdec_qt.c @@ -241,7 +241,7 @@ static void qt_rtp_close(PayloadContext *qt) } #define RTP_QT_HANDLER(m, n, s, t) \ -RTPDynamicProtocolHandler ff_ ## m ## _rtp_ ## n ## _handler = { \ +const RTPDynamicProtocolHandler ff_ ## m ## _rtp_ ## n ## _handler = { \ .enc_name = s, \ .codec_type = t, \ .codec_id = AV_CODEC_ID_NONE, \ From patchwork Wed Dec 30 23:31:42 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24707 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id D4FF644A7BE for ; Thu, 31 Dec 2020 01:32:59 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id BD77A68A9C9; Thu, 31 Dec 2020 01:32:59 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f45.google.com (mail-ej1-f45.google.com [209.85.218.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 721DA68A874 for ; Thu, 31 Dec 2020 01:32:49 +0200 (EET) Received: by mail-ej1-f45.google.com with SMTP id x16so23699652ejj.7 for ; Wed, 30 Dec 2020 15:32:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=h5w8mtTvsrgrOMXjlVeQqBwgYJGWnAndaEEf7dI9rg4=; b=ZgUaTg/COSXl1pZw4/j8cYCdtXyGtAnDLUkx4Y5Ed8mbcY3LzPLvaOJOrFvLeh983+ 97recqnf2XHZcRj8BAr0qObQV3ioM7/LN2MY9cV3qHKJmmNv2Tnfrnx55v1WAe0AutkN fc2ZqFpDt9uWyA12XZNKqaoo4Ir4NFDKeFjBzd/PpKdZzpH9ocAo0ZyVGMxuidASaAVl 5ZFolz8R3OgdEzds4UzWYHah/wJ+jupJsihwu689VM6yN3oOIfcW9d7qjW72C5cFKC2z XtrswmA9Y4K22JfAPBIFluS8Hdba7KoshWu4eRrMf+NG8CHDHVxvwtoDuMMkYYrrDbJ8 GKKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=h5w8mtTvsrgrOMXjlVeQqBwgYJGWnAndaEEf7dI9rg4=; b=C25I1yFg9DNfm41zkAChdqk28WGIKRFiZGz0PozbBtec6odcV4UJmjdeGBQavHs9d1 OlHo9gl2G9VFll1UgUXzvlFgSRg37KMnUeiq8SKnc+WRtQIKNEcw0vBStauIRti9iQev GskXLdLsh/YKR1v2SCACd+OlmEkBGqVW9/qgSy8gJipAkvb9HLObPv1FpGEtIdehGF3S laQqGOWc5Y+MeNhQ74HJiONPxVAUDZC4idqXi5AP/vL1x/Vj+0MIdAz9BFnLlvIFO9nq 2K44EMB0nhqGn1LmmWQgzAO4kVF9U4TY6XZr5uJk0eRkIwNiydVkCKPD9wVO+7DaXDFp scGA== X-Gm-Message-State: AOAM533vQTLgBiVAsYMV4u9+q2tfKDcEapBNXM3hhxSmjmhYLXVq2vlC a8+IwH6egU9/2acTcPTiLw2nTWFn9VI= X-Google-Smtp-Source: ABdhPJy8d/E87fI1hJiVYwu5OubWJFfVp0OfQE1h3ZbnlAltH3nJ20qucm90Lkage9nUr6XufcAyFA== X-Received: by 2002:a17:906:cd14:: with SMTP id oz20mr47714404ejb.99.1609371168216; Wed, 30 Dec 2020 15:32:48 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id u19sm19630409ejg.16.2020.12.30.15.32.47 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Dec 2020 15:32:47 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 31 Dec 2020 00:31:42 +0100 Message-Id: <20201230233157.1055287-15-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> References: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 15/30] avcodec/aacps: Factor out code shared by float and fixed point decoder X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" Saves about 7KiB. Signed-off-by: Andreas Rheinhardt --- libavcodec/Makefile | 4 +- libavcodec/aacps.c | 383 ++++------------------------------- libavcodec/aacps.h | 18 +- libavcodec/aacps_common.c | 336 ++++++++++++++++++++++++++++++ libavcodec/aacpsdata.c | 9 +- libavcodec/aacsbr_template.c | 4 +- 6 files changed, 400 insertions(+), 354 deletions(-) create mode 100644 libavcodec/aacps_common.c diff --git a/libavcodec/Makefile b/libavcodec/Makefile index 450781886d..fea37ef3c9 100644 --- a/libavcodec/Makefile +++ b/libavcodec/Makefile @@ -162,10 +162,10 @@ OBJS-$(CONFIG_WMV2DSP) += wmv2dsp.o OBJS-$(CONFIG_ZERO12V_DECODER) += 012v.o OBJS-$(CONFIG_A64MULTI_ENCODER) += a64multienc.o elbg.o OBJS-$(CONFIG_A64MULTI5_ENCODER) += a64multienc.o elbg.o -OBJS-$(CONFIG_AAC_DECODER) += aacdec.o aactab.o aacsbr.o aacps_float.o \ +OBJS-$(CONFIG_AAC_DECODER) += aacdec.o aactab.o aacsbr.o aacps_common.o aacps_float.o \ mpeg4audio.o kbdwin.o \ sbrdsp.o aacpsdsp_float.o cbrt_data.o -OBJS-$(CONFIG_AAC_FIXED_DECODER) += aacdec_fixed.o aactab.o aacsbr_fixed.o aacps_fixed.o \ +OBJS-$(CONFIG_AAC_FIXED_DECODER) += aacdec_fixed.o aactab.o aacsbr_fixed.o aacps_common.o aacps_fixed.o \ mpeg4audio.o kbdwin.o \ sbrdsp_fixed.o aacpsdsp_fixed.o cbrt_data_fixed.o OBJS-$(CONFIG_AAC_ENCODER) += aacenc.o aaccoder.o aacenctab.o \ diff --git a/libavcodec/aacps.c b/libavcodec/aacps.c index 22df160fe7..05a6b5afb8 100644 --- a/libavcodec/aacps.c +++ b/libavcodec/aacps.c @@ -26,7 +26,6 @@ #include "libavutil/common.h" #include "libavutil/mathematics.h" #include "avcodec.h" -#include "get_bits.h" #include "aacps.h" #if USE_FIXED #include "aacps_fixed_tablegen.h" @@ -34,118 +33,12 @@ #include "libavutil/internal.h" #include "aacps_tablegen.h" #endif /* USE_FIXED */ -#include "aacpsdata.c" -#define PS_BASELINE 0 ///< Operate in Baseline PS mode - ///< Baseline implies 10 or 20 stereo bands, - ///< mixing mode A, and no ipd/opd - -#define numQMFSlots 32 //numTimeSlots * RATE - -static const int8_t num_env_tab[2][4] = { - { 0, 1, 2, 4, }, - { 1, 2, 3, 4, }, +static const INTFLOAT g1_Q2[] = { + Q31(0.0f), Q31(0.01899487526049f), Q31(0.0f), Q31(-0.07293139167538f), + Q31(0.0f), Q31(0.30596630545168f), Q31(0.5f) }; -static const int8_t nr_iidicc_par_tab[] = { - 10, 20, 34, 10, 20, 34, -}; - -static const int8_t nr_iidopd_par_tab[] = { - 5, 11, 17, 5, 11, 17, -}; - -enum { - huff_iid_df1, - huff_iid_dt1, - huff_iid_df0, - huff_iid_dt0, - huff_icc_df, - huff_icc_dt, - huff_ipd_df, - huff_ipd_dt, - huff_opd_df, - huff_opd_dt, -}; - -static const int huff_iid[] = { - huff_iid_df0, - huff_iid_df1, - huff_iid_dt0, - huff_iid_dt1, -}; - -static VLC vlc_ps[10]; - -#define READ_PAR_DATA(PAR, OFFSET, MASK, ERR_CONDITION) \ -/** \ - * Read Inter-channel Intensity Difference/Inter-Channel Coherence/ \ - * Inter-channel Phase Difference/Overall Phase Difference parameters from the \ - * bitstream. \ - * \ - * @param avctx contains the current codec context \ - * @param gb pointer to the input bitstream \ - * @param ps pointer to the Parametric Stereo context \ - * @param PAR pointer to the parameter to be read \ - * @param e envelope to decode \ - * @param dt 1: time delta-coded, 0: frequency delta-coded \ - */ \ -static int read_ ## PAR ## _data(AVCodecContext *avctx, GetBitContext *gb, PSContext *ps, \ - int8_t (*PAR)[PS_MAX_NR_IIDICC], int table_idx, int e, int dt) \ -{ \ - int b, num = ps->nr_ ## PAR ## _par; \ - VLC_TYPE (*vlc_table)[2] = vlc_ps[table_idx].table; \ - if (dt) { \ - int e_prev = e ? e - 1 : ps->num_env_old - 1; \ - e_prev = FFMAX(e_prev, 0); \ - for (b = 0; b < num; b++) { \ - int val = PAR[e_prev][b] + get_vlc2(gb, vlc_table, 9, 3) - OFFSET; \ - if (MASK) val &= MASK; \ - PAR[e][b] = val; \ - if (ERR_CONDITION) \ - goto err; \ - } \ - } else { \ - int val = 0; \ - for (b = 0; b < num; b++) { \ - val += get_vlc2(gb, vlc_table, 9, 3) - OFFSET; \ - if (MASK) val &= MASK; \ - PAR[e][b] = val; \ - if (ERR_CONDITION) \ - goto err; \ - } \ - } \ - return 0; \ -err: \ - av_log(avctx, AV_LOG_ERROR, "illegal "#PAR"\n"); \ - return AVERROR_INVALIDDATA; \ -} - -READ_PAR_DATA(iid, huff_offset[table_idx], 0, FFABS(ps->iid_par[e][b]) > 7 + 8 * ps->iid_quant) -READ_PAR_DATA(icc, huff_offset[table_idx], 0, ps->icc_par[e][b] > 7U) -READ_PAR_DATA(ipdopd, 0, 0x07, 0) - -static int ps_read_extension_data(GetBitContext *gb, PSContext *ps, int ps_extension_id) -{ - int e; - int count = get_bits_count(gb); - - if (ps_extension_id) - return 0; - - ps->enable_ipdopd = get_bits1(gb); - if (ps->enable_ipdopd) { - for (e = 0; e < ps->num_env; e++) { - int dt = get_bits1(gb); - read_ipdopd_data(NULL, gb, ps, ps->ipd_par, dt ? huff_ipd_dt : huff_ipd_df, e, dt); - dt = get_bits1(gb); - read_ipdopd_data(NULL, gb, ps, ps->opd_par, dt ? huff_opd_dt : huff_opd_df, e, dt); - } - } - skip_bits1(gb); //reserved_ps - return get_bits_count(gb) - count; -} - static void ipdopd_reset(int8_t *ipd_hist, int8_t *opd_hist) { int i; @@ -155,163 +48,6 @@ static void ipdopd_reset(int8_t *ipd_hist, int8_t *opd_hist) } } -int AAC_RENAME(ff_ps_read_data)(AVCodecContext *avctx, GetBitContext *gb_host, PSContext *ps, int bits_left) -{ - int e; - int bit_count_start = get_bits_count(gb_host); - int header; - int bits_consumed; - GetBitContext gbc = *gb_host, *gb = &gbc; - - header = get_bits1(gb); - if (header) { //enable_ps_header - ps->enable_iid = get_bits1(gb); - if (ps->enable_iid) { - int iid_mode = get_bits(gb, 3); - if (iid_mode > 5) { - av_log(avctx, AV_LOG_ERROR, "iid_mode %d is reserved.\n", - iid_mode); - goto err; - } - ps->nr_iid_par = nr_iidicc_par_tab[iid_mode]; - ps->iid_quant = iid_mode > 2; - ps->nr_ipdopd_par = nr_iidopd_par_tab[iid_mode]; - } - ps->enable_icc = get_bits1(gb); - if (ps->enable_icc) { - ps->icc_mode = get_bits(gb, 3); - if (ps->icc_mode > 5) { - av_log(avctx, AV_LOG_ERROR, "icc_mode %d is reserved.\n", - ps->icc_mode); - goto err; - } - ps->nr_icc_par = nr_iidicc_par_tab[ps->icc_mode]; - } - ps->enable_ext = get_bits1(gb); - } - - ps->frame_class = get_bits1(gb); - ps->num_env_old = ps->num_env; - ps->num_env = num_env_tab[ps->frame_class][get_bits(gb, 2)]; - - ps->border_position[0] = -1; - if (ps->frame_class) { - for (e = 1; e <= ps->num_env; e++) { - ps->border_position[e] = get_bits(gb, 5); - if (ps->border_position[e] < ps->border_position[e-1]) { - av_log(avctx, AV_LOG_ERROR, "border_position non monotone.\n"); - goto err; - } - } - } else - for (e = 1; e <= ps->num_env; e++) - ps->border_position[e] = (e * numQMFSlots >> ff_log2_tab[ps->num_env]) - 1; - - if (ps->enable_iid) { - for (e = 0; e < ps->num_env; e++) { - int dt = get_bits1(gb); - if (read_iid_data(avctx, gb, ps, ps->iid_par, huff_iid[2*dt+ps->iid_quant], e, dt)) - goto err; - } - } else - memset(ps->iid_par, 0, sizeof(ps->iid_par)); - - if (ps->enable_icc) - for (e = 0; e < ps->num_env; e++) { - int dt = get_bits1(gb); - if (read_icc_data(avctx, gb, ps, ps->icc_par, dt ? huff_icc_dt : huff_icc_df, e, dt)) - goto err; - } - else - memset(ps->icc_par, 0, sizeof(ps->icc_par)); - - if (ps->enable_ext) { - int cnt = get_bits(gb, 4); - if (cnt == 15) { - cnt += get_bits(gb, 8); - } - cnt *= 8; - while (cnt > 7) { - int ps_extension_id = get_bits(gb, 2); - cnt -= 2 + ps_read_extension_data(gb, ps, ps_extension_id); - } - if (cnt < 0) { - av_log(avctx, AV_LOG_ERROR, "ps extension overflow %d\n", cnt); - goto err; - } - skip_bits(gb, cnt); - } - - ps->enable_ipdopd &= !PS_BASELINE; - - //Fix up envelopes - if (!ps->num_env || ps->border_position[ps->num_env] < numQMFSlots - 1) { - //Create a fake envelope - int source = ps->num_env ? ps->num_env - 1 : ps->num_env_old - 1; - int b; - if (source >= 0 && source != ps->num_env) { - if (ps->enable_iid) { - memcpy(ps->iid_par+ps->num_env, ps->iid_par+source, sizeof(ps->iid_par[0])); - } - if (ps->enable_icc) { - memcpy(ps->icc_par+ps->num_env, ps->icc_par+source, sizeof(ps->icc_par[0])); - } - if (ps->enable_ipdopd) { - memcpy(ps->ipd_par+ps->num_env, ps->ipd_par+source, sizeof(ps->ipd_par[0])); - memcpy(ps->opd_par+ps->num_env, ps->opd_par+source, sizeof(ps->opd_par[0])); - } - } - if (ps->enable_iid){ - for (b = 0; b < ps->nr_iid_par; b++) { - if (FFABS(ps->iid_par[ps->num_env][b]) > 7 + 8 * ps->iid_quant) { - av_log(avctx, AV_LOG_ERROR, "iid_par invalid\n"); - goto err; - } - } - } - if (ps->enable_icc){ - for (b = 0; b < ps->nr_iid_par; b++) { - if (ps->icc_par[ps->num_env][b] > 7U) { - av_log(avctx, AV_LOG_ERROR, "icc_par invalid\n"); - goto err; - } - } - } - ps->num_env++; - ps->border_position[ps->num_env] = numQMFSlots - 1; - } - - - ps->is34bands_old = ps->is34bands; - if (!PS_BASELINE && (ps->enable_iid || ps->enable_icc)) - ps->is34bands = (ps->enable_iid && ps->nr_iid_par == 34) || - (ps->enable_icc && ps->nr_icc_par == 34); - - //Baseline - if (!ps->enable_ipdopd) { - memset(ps->ipd_par, 0, sizeof(ps->ipd_par)); - memset(ps->opd_par, 0, sizeof(ps->opd_par)); - } - - if (header) - ps->start = 1; - - bits_consumed = get_bits_count(gb) - bit_count_start; - if (bits_consumed <= bits_left) { - skip_bits_long(gb_host, bits_consumed); - return bits_consumed; - } - av_log(avctx, AV_LOG_ERROR, "Expected to read %d PS bits actually read %d.\n", bits_left, bits_consumed); -err: - ps->start = 0; - skip_bits_long(gb_host, bits_left); - memset(ps->iid_par, 0, sizeof(ps->iid_par)); - memset(ps->icc_par, 0, sizeof(ps->icc_par)); - memset(ps->ipd_par, 0, sizeof(ps->ipd_par)); - memset(ps->opd_par, 0, sizeof(ps->opd_par)); - return bits_left; -} - /** Split one subband into 2 subsubbands with a symmetric real filter. * The filter must have its non-center even coefficients equal to zero. */ static void hybrid2_re(INTFLOAT (*in)[2], INTFLOAT (*out)[32][2], const INTFLOAT filter[8], int len, int reverse) @@ -672,14 +408,14 @@ static void decorrelation(PSContext *ps, INTFLOAT (*out)[32][2], const INTFLOAT const float transient_impact = 1.5f; const float a_smooth = 0.25f; ///< Smoothing coefficient #endif /* USE_FIXED */ - const int8_t *k_to_i = is34 ? k_to_i_34 : k_to_i_20; + const int8_t *const k_to_i = is34 ? ff_k_to_i_34 : ff_k_to_i_20; int i, k, m, n; int n0 = 0, nL = 32; const INTFLOAT peak_decay_factor = Q31(0.76592833836465f); memset(power, 0, 34 * sizeof(*power)); - if (is34 != ps->is34bands_old) { + if (is34 != ps->common.is34bands_old) { memset(ps->peak_decay_nrg, 0, sizeof(ps->peak_decay_nrg)); memset(ps->power_smooth, 0, sizeof(ps->power_smooth)); memset(ps->peak_decay_diff_smooth, 0, sizeof(ps->peak_decay_diff_smooth)); @@ -821,6 +557,7 @@ static void stereo_processing(PSContext *ps, INTFLOAT (*l)[32][2], INTFLOAT (*r) { int e, b, k; + PSCommonContext *const ps2 = &ps->common; INTFLOAT (*H11)[PS_MAX_NUM_ENV+1][PS_MAX_NR_IIDICC] = ps->H11; INTFLOAT (*H12)[PS_MAX_NUM_ENV+1][PS_MAX_NR_IIDICC] = ps->H12; INTFLOAT (*H21)[PS_MAX_NUM_ENV+1][PS_MAX_NR_IIDICC] = ps->H21; @@ -835,29 +572,29 @@ static void stereo_processing(PSContext *ps, INTFLOAT (*l)[32][2], INTFLOAT (*r) int8_t (*icc_mapped)[PS_MAX_NR_IIDICC] = icc_mapped_buf; int8_t (*ipd_mapped)[PS_MAX_NR_IIDICC] = ipd_mapped_buf; int8_t (*opd_mapped)[PS_MAX_NR_IIDICC] = opd_mapped_buf; - const int8_t *k_to_i = is34 ? k_to_i_34 : k_to_i_20; - TABLE_CONST INTFLOAT (*H_LUT)[8][4] = (PS_BASELINE || ps->icc_mode < 3) ? HA : HB; + const int8_t *const k_to_i = is34 ? ff_k_to_i_34 : ff_k_to_i_20; + TABLE_CONST INTFLOAT (*H_LUT)[8][4] = (PS_BASELINE || ps2->icc_mode < 3) ? HA : HB; //Remapping - if (ps->num_env_old) { - memcpy(H11[0][0], H11[0][ps->num_env_old], PS_MAX_NR_IIDICC*sizeof(H11[0][0][0])); - memcpy(H11[1][0], H11[1][ps->num_env_old], PS_MAX_NR_IIDICC*sizeof(H11[1][0][0])); - memcpy(H12[0][0], H12[0][ps->num_env_old], PS_MAX_NR_IIDICC*sizeof(H12[0][0][0])); - memcpy(H12[1][0], H12[1][ps->num_env_old], PS_MAX_NR_IIDICC*sizeof(H12[1][0][0])); - memcpy(H21[0][0], H21[0][ps->num_env_old], PS_MAX_NR_IIDICC*sizeof(H21[0][0][0])); - memcpy(H21[1][0], H21[1][ps->num_env_old], PS_MAX_NR_IIDICC*sizeof(H21[1][0][0])); - memcpy(H22[0][0], H22[0][ps->num_env_old], PS_MAX_NR_IIDICC*sizeof(H22[0][0][0])); - memcpy(H22[1][0], H22[1][ps->num_env_old], PS_MAX_NR_IIDICC*sizeof(H22[1][0][0])); + if (ps2->num_env_old) { + memcpy(H11[0][0], H11[0][ps2->num_env_old], sizeof(H11[0][0])); + memcpy(H11[1][0], H11[1][ps2->num_env_old], sizeof(H11[1][0])); + memcpy(H12[0][0], H12[0][ps2->num_env_old], sizeof(H12[0][0])); + memcpy(H12[1][0], H12[1][ps2->num_env_old], sizeof(H12[1][0])); + memcpy(H21[0][0], H21[0][ps2->num_env_old], sizeof(H21[0][0])); + memcpy(H21[1][0], H21[1][ps2->num_env_old], sizeof(H21[1][0])); + memcpy(H22[0][0], H22[0][ps2->num_env_old], sizeof(H22[0][0])); + memcpy(H22[1][0], H22[1][ps2->num_env_old], sizeof(H22[1][0])); } if (is34) { - remap34(&iid_mapped, ps->iid_par, ps->nr_iid_par, ps->num_env, 1); - remap34(&icc_mapped, ps->icc_par, ps->nr_icc_par, ps->num_env, 1); - if (ps->enable_ipdopd) { - remap34(&ipd_mapped, ps->ipd_par, ps->nr_ipdopd_par, ps->num_env, 0); - remap34(&opd_mapped, ps->opd_par, ps->nr_ipdopd_par, ps->num_env, 0); + remap34(&iid_mapped, ps2->iid_par, ps2->nr_iid_par, ps2->num_env, 1); + remap34(&icc_mapped, ps2->icc_par, ps2->nr_icc_par, ps2->num_env, 1); + if (ps2->enable_ipdopd) { + remap34(&ipd_mapped, ps2->ipd_par, ps2->nr_ipdopd_par, ps2->num_env, 0); + remap34(&opd_mapped, ps2->opd_par, ps2->nr_ipdopd_par, ps2->num_env, 0); } - if (!ps->is34bands_old) { + if (!ps2->is34bands_old) { map_val_20_to_34(H11[0][0]); map_val_20_to_34(H11[1][0]); map_val_20_to_34(H12[0][0]); @@ -869,13 +606,13 @@ static void stereo_processing(PSContext *ps, INTFLOAT (*l)[32][2], INTFLOAT (*r) ipdopd_reset(ipd_hist, opd_hist); } } else { - remap20(&iid_mapped, ps->iid_par, ps->nr_iid_par, ps->num_env, 1); - remap20(&icc_mapped, ps->icc_par, ps->nr_icc_par, ps->num_env, 1); - if (ps->enable_ipdopd) { - remap20(&ipd_mapped, ps->ipd_par, ps->nr_ipdopd_par, ps->num_env, 0); - remap20(&opd_mapped, ps->opd_par, ps->nr_ipdopd_par, ps->num_env, 0); + remap20(&iid_mapped, ps2->iid_par, ps2->nr_iid_par, ps2->num_env, 1); + remap20(&icc_mapped, ps2->icc_par, ps2->nr_icc_par, ps2->num_env, 1); + if (ps2->enable_ipdopd) { + remap20(&ipd_mapped, ps2->ipd_par, ps2->nr_ipdopd_par, ps2->num_env, 0); + remap20(&opd_mapped, ps2->opd_par, ps2->nr_ipdopd_par, ps2->num_env, 0); } - if (ps->is34bands_old) { + if (ps2->is34bands_old) { map_val_34_to_20(H11[0][0]); map_val_34_to_20(H11[1][0]); map_val_34_to_20(H12[0][0]); @@ -889,15 +626,15 @@ static void stereo_processing(PSContext *ps, INTFLOAT (*l)[32][2], INTFLOAT (*r) } //Mixing - for (e = 0; e < ps->num_env; e++) { + for (e = 0; e < ps2->num_env; e++) { for (b = 0; b < NR_PAR_BANDS[is34]; b++) { INTFLOAT h11, h12, h21, h22; - h11 = H_LUT[iid_mapped[e][b] + 7 + 23 * ps->iid_quant][icc_mapped[e][b]][0]; - h12 = H_LUT[iid_mapped[e][b] + 7 + 23 * ps->iid_quant][icc_mapped[e][b]][1]; - h21 = H_LUT[iid_mapped[e][b] + 7 + 23 * ps->iid_quant][icc_mapped[e][b]][2]; - h22 = H_LUT[iid_mapped[e][b] + 7 + 23 * ps->iid_quant][icc_mapped[e][b]][3]; + h11 = H_LUT[iid_mapped[e][b] + 7 + 23 * ps2->iid_quant][icc_mapped[e][b]][0]; + h12 = H_LUT[iid_mapped[e][b] + 7 + 23 * ps2->iid_quant][icc_mapped[e][b]][1]; + h21 = H_LUT[iid_mapped[e][b] + 7 + 23 * ps2->iid_quant][icc_mapped[e][b]][2]; + h22 = H_LUT[iid_mapped[e][b] + 7 + 23 * ps2->iid_quant][icc_mapped[e][b]][3]; - if (!PS_BASELINE && ps->enable_ipdopd && b < NR_IPDOPD_BANDS[is34]) { + if (!PS_BASELINE && ps2->enable_ipdopd && b < NR_IPDOPD_BANDS[is34]) { //The spec say says to only run this smoother when enable_ipdopd //is set but the reference decoder appears to run it constantly INTFLOAT h11i, h12i, h21i, h22i; @@ -934,8 +671,8 @@ static void stereo_processing(PSContext *ps, INTFLOAT (*l)[32][2], INTFLOAT (*r) for (k = 0; k < NR_BANDS[is34]; k++) { LOCAL_ALIGNED_16(INTFLOAT, h, [2], [4]); LOCAL_ALIGNED_16(INTFLOAT, h_step, [2], [4]); - int start = ps->border_position[e]; - int stop = ps->border_position[e+1]; + int start = ps2->border_position[e]; + int stop = ps2->border_position[e+1]; INTFLOAT width = Q30(1.f) / ((stop - start) ? (stop - start) : 1); #if USE_FIXED width = FFMIN(2U*width, INT_MAX); @@ -945,7 +682,7 @@ static void stereo_processing(PSContext *ps, INTFLOAT (*l)[32][2], INTFLOAT (*r) h[0][1] = H12[0][e][b]; h[0][2] = H21[0][e][b]; h[0][3] = H22[0][e][b]; - if (!PS_BASELINE && ps->enable_ipdopd) { + if (!PS_BASELINE && ps2->enable_ipdopd) { //Is this necessary? ps_04_new seems unchanged if ((is34 && k <= 13 && k >= 9) || (!is34 && k <= 1)) { h[1][0] = -H11[1][e][b]; @@ -964,14 +701,14 @@ static void stereo_processing(PSContext *ps, INTFLOAT (*l)[32][2], INTFLOAT (*r) h_step[0][1] = AAC_MSUB31_V3(H12[0][e+1][b], h[0][1], width); h_step[0][2] = AAC_MSUB31_V3(H21[0][e+1][b], h[0][2], width); h_step[0][3] = AAC_MSUB31_V3(H22[0][e+1][b], h[0][3], width); - if (!PS_BASELINE && ps->enable_ipdopd) { + if (!PS_BASELINE && ps2->enable_ipdopd) { h_step[1][0] = AAC_MSUB31_V3(H11[1][e+1][b], h[1][0], width); h_step[1][1] = AAC_MSUB31_V3(H12[1][e+1][b], h[1][1], width); h_step[1][2] = AAC_MSUB31_V3(H21[1][e+1][b], h[1][2], width); h_step[1][3] = AAC_MSUB31_V3(H22[1][e+1][b], h[1][3], width); } if (stop - start) - ps->dsp.stereo_interpolate[!PS_BASELINE && ps->enable_ipdopd]( + ps->dsp.stereo_interpolate[!PS_BASELINE && ps2->enable_ipdopd]( l[k] + 1 + start, r[k] + 1 + start, h, h_step, stop - start); } @@ -983,7 +720,7 @@ int AAC_RENAME(ff_ps_apply)(AVCodecContext *avctx, PSContext *ps, INTFLOAT L[2][ INTFLOAT (*Lbuf)[32][2] = ps->Lbuf; INTFLOAT (*Rbuf)[32][2] = ps->Rbuf; const int len = 32; - int is34 = ps->is34bands; + int is34 = ps->common.is34bands; top += NR_BANDS[is34] - 64; memset(ps->delay+top, 0, (NR_BANDS[is34] - top)*sizeof(ps->delay[0])); @@ -999,45 +736,9 @@ int AAC_RENAME(ff_ps_apply)(AVCodecContext *avctx, PSContext *ps, INTFLOAT L[2][ return 0; } -#define PS_INIT_VLC_STATIC(num, size) \ - INIT_VLC_STATIC(&vlc_ps[num], 9, ps_tmp[num].table_size / ps_tmp[num].elem_size, \ - ps_tmp[num].ps_bits, 1, 1, \ - ps_tmp[num].ps_codes, ps_tmp[num].elem_size, ps_tmp[num].elem_size, \ - size); - -#define PS_VLC_ROW(name) \ - { name ## _codes, name ## _bits, sizeof(name ## _codes), sizeof(name ## _codes[0]) } - av_cold void AAC_RENAME(ff_ps_init)(void) { - // Syntax initialization - static const struct { - const void *ps_codes, *ps_bits; - const unsigned int table_size, elem_size; - } ps_tmp[] = { - PS_VLC_ROW(huff_iid_df1), - PS_VLC_ROW(huff_iid_dt1), - PS_VLC_ROW(huff_iid_df0), - PS_VLC_ROW(huff_iid_dt0), - PS_VLC_ROW(huff_icc_df), - PS_VLC_ROW(huff_icc_dt), - PS_VLC_ROW(huff_ipd_df), - PS_VLC_ROW(huff_ipd_dt), - PS_VLC_ROW(huff_opd_df), - PS_VLC_ROW(huff_opd_dt), - }; - - PS_INIT_VLC_STATIC(0, 1544); - PS_INIT_VLC_STATIC(1, 832); - PS_INIT_VLC_STATIC(2, 1024); - PS_INIT_VLC_STATIC(3, 1036); - PS_INIT_VLC_STATIC(4, 544); - PS_INIT_VLC_STATIC(5, 544); - PS_INIT_VLC_STATIC(6, 512); - PS_INIT_VLC_STATIC(7, 512); - PS_INIT_VLC_STATIC(8, 512); - PS_INIT_VLC_STATIC(9, 512); - ps_tableinit(); + ff_ps_init_common(); } av_cold void AAC_RENAME(ff_ps_ctx_init)(PSContext *ps) diff --git a/libavcodec/aacps.h b/libavcodec/aacps.h index 61edce3549..4f6d2ad7dd 100644 --- a/libavcodec/aacps.h +++ b/libavcodec/aacps.h @@ -37,8 +37,13 @@ #define PS_MAX_DELAY 14 #define PS_AP_LINKS 3 #define PS_MAX_AP_DELAY 5 +#define PS_BASELINE 0 ///< Operate in Baseline PS mode + ///< Baseline implies 10 or 20 stereo bands, + ///< mixing mode A, and no ipd/opd -typedef struct PSContext { +#define numQMFSlots 32 //numTimeSlots * RATE + +typedef struct PSCommonContext { int start; int enable_iid; int iid_quant; @@ -60,6 +65,10 @@ typedef struct PSContext { int8_t opd_par[PS_MAX_NUM_ENV][PS_MAX_NR_IIDICC]; ///< Overall Phase Difference Parameters int is34bands; int is34bands_old; +} PSCommonContext; + +typedef struct PSContext { + PSCommonContext common; DECLARE_ALIGNED(16, INTFLOAT, in_buf)[5][44][2]; DECLARE_ALIGNED(16, INTFLOAT, delay)[PS_MAX_SSB][PS_QMF_TIME_SLOTS + PS_MAX_DELAY][2]; @@ -78,9 +87,14 @@ typedef struct PSContext { PSDSPContext dsp; } PSContext; +extern const int8_t ff_k_to_i_20[]; +extern const int8_t ff_k_to_i_34[]; + +void ff_ps_init_common(void); void AAC_RENAME(ff_ps_init)(void); void AAC_RENAME(ff_ps_ctx_init)(PSContext *ps); -int AAC_RENAME(ff_ps_read_data)(AVCodecContext *avctx, GetBitContext *gb, PSContext *ps, int bits_left); +int ff_ps_read_data(AVCodecContext *avctx, GetBitContext *gb, + PSCommonContext *ps, int bits_left); int AAC_RENAME(ff_ps_apply)(AVCodecContext *avctx, PSContext *ps, INTFLOAT L[2][38][64], INTFLOAT R[2][38][64], int top); #endif /* AVCODEC_AACPS_H */ diff --git a/libavcodec/aacps_common.c b/libavcodec/aacps_common.c new file mode 100644 index 0000000000..ecc220f94b --- /dev/null +++ b/libavcodec/aacps_common.c @@ -0,0 +1,336 @@ +/* + * Functions common to fixed/float MPEG-4 Parametric Stereo decoding + * Copyright (c) 2010 Alex Converse + * + * This file is part of FFmpeg. + * + * FFmpeg is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2.1 of the License, or (at your option) any later version. + * + * FFmpeg is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with FFmpeg; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include +#include "libavutil/common.h" +#include "libavutil/thread.h" +#include "aacps.h" +#include "get_bits.h" +#include "aacpsdata.c" + +static const int8_t num_env_tab[2][4] = { + { 0, 1, 2, 4, }, + { 1, 2, 3, 4, }, +}; + +static const int8_t nr_iidicc_par_tab[] = { + 10, 20, 34, 10, 20, 34, +}; + +static const int8_t nr_iidopd_par_tab[] = { + 5, 11, 17, 5, 11, 17, +}; + +enum { + huff_iid_df1, + huff_iid_dt1, + huff_iid_df0, + huff_iid_dt0, + huff_icc_df, + huff_icc_dt, + huff_ipd_df, + huff_ipd_dt, + huff_opd_df, + huff_opd_dt, +}; + +static const int huff_iid[] = { + huff_iid_df0, + huff_iid_df1, + huff_iid_dt0, + huff_iid_dt1, +}; + +static VLC vlc_ps[10]; + +#define READ_PAR_DATA(PAR, OFFSET, MASK, ERR_CONDITION) \ +/** \ + * Read Inter-channel Intensity Difference/Inter-Channel Coherence/ \ + * Inter-channel Phase Difference/Overall Phase Difference parameters from the \ + * bitstream. \ + * \ + * @param avctx contains the current codec context \ + * @param gb pointer to the input bitstream \ + * @param ps pointer to the Parametric Stereo context \ + * @param PAR pointer to the parameter to be read \ + * @param e envelope to decode \ + * @param dt 1: time delta-coded, 0: frequency delta-coded \ + */ \ +static int read_ ## PAR ## _data(AVCodecContext *avctx, GetBitContext *gb, PSCommonContext *ps, \ + int8_t (*PAR)[PS_MAX_NR_IIDICC], int table_idx, int e, int dt) \ +{ \ + int b, num = ps->nr_ ## PAR ## _par; \ + VLC_TYPE (*vlc_table)[2] = vlc_ps[table_idx].table; \ + if (dt) { \ + int e_prev = e ? e - 1 : ps->num_env_old - 1; \ + e_prev = FFMAX(e_prev, 0); \ + for (b = 0; b < num; b++) { \ + int val = PAR[e_prev][b] + get_vlc2(gb, vlc_table, 9, 3) - OFFSET; \ + if (MASK) val &= MASK; \ + PAR[e][b] = val; \ + if (ERR_CONDITION) \ + goto err; \ + } \ + } else { \ + int val = 0; \ + for (b = 0; b < num; b++) { \ + val += get_vlc2(gb, vlc_table, 9, 3) - OFFSET; \ + if (MASK) val &= MASK; \ + PAR[e][b] = val; \ + if (ERR_CONDITION) \ + goto err; \ + } \ + } \ + return 0; \ +err: \ + av_log(avctx, AV_LOG_ERROR, "illegal "#PAR"\n"); \ + return AVERROR_INVALIDDATA; \ +} + +READ_PAR_DATA(iid, huff_offset[table_idx], 0, FFABS(ps->iid_par[e][b]) > 7 + 8 * ps->iid_quant) +READ_PAR_DATA(icc, huff_offset[table_idx], 0, ps->icc_par[e][b] > 7U) +READ_PAR_DATA(ipdopd, 0, 0x07, 0) + +static int ps_read_extension_data(GetBitContext *gb, PSCommonContext *ps, + int ps_extension_id) +{ + int e; + int count = get_bits_count(gb); + + if (ps_extension_id) + return 0; + + ps->enable_ipdopd = get_bits1(gb); + if (ps->enable_ipdopd) { + for (e = 0; e < ps->num_env; e++) { + int dt = get_bits1(gb); + read_ipdopd_data(NULL, gb, ps, ps->ipd_par, dt ? huff_ipd_dt : huff_ipd_df, e, dt); + dt = get_bits1(gb); + read_ipdopd_data(NULL, gb, ps, ps->opd_par, dt ? huff_opd_dt : huff_opd_df, e, dt); + } + } + skip_bits1(gb); //reserved_ps + return get_bits_count(gb) - count; +} + +int ff_ps_read_data(AVCodecContext *avctx, GetBitContext *gb_host, + PSCommonContext *ps, int bits_left) +{ + int e; + int bit_count_start = get_bits_count(gb_host); + int header; + int bits_consumed; + GetBitContext gbc = *gb_host, *gb = &gbc; + + header = get_bits1(gb); + if (header) { //enable_ps_header + ps->enable_iid = get_bits1(gb); + if (ps->enable_iid) { + int iid_mode = get_bits(gb, 3); + if (iid_mode > 5) { + av_log(avctx, AV_LOG_ERROR, "iid_mode %d is reserved.\n", + iid_mode); + goto err; + } + ps->nr_iid_par = nr_iidicc_par_tab[iid_mode]; + ps->iid_quant = iid_mode > 2; + ps->nr_ipdopd_par = nr_iidopd_par_tab[iid_mode]; + } + ps->enable_icc = get_bits1(gb); + if (ps->enable_icc) { + ps->icc_mode = get_bits(gb, 3); + if (ps->icc_mode > 5) { + av_log(avctx, AV_LOG_ERROR, "icc_mode %d is reserved.\n", + ps->icc_mode); + goto err; + } + ps->nr_icc_par = nr_iidicc_par_tab[ps->icc_mode]; + } + ps->enable_ext = get_bits1(gb); + } + + ps->frame_class = get_bits1(gb); + ps->num_env_old = ps->num_env; + ps->num_env = num_env_tab[ps->frame_class][get_bits(gb, 2)]; + + ps->border_position[0] = -1; + if (ps->frame_class) { + for (e = 1; e <= ps->num_env; e++) { + ps->border_position[e] = get_bits(gb, 5); + if (ps->border_position[e] < ps->border_position[e-1]) { + av_log(avctx, AV_LOG_ERROR, "border_position non monotone.\n"); + goto err; + } + } + } else + for (e = 1; e <= ps->num_env; e++) + ps->border_position[e] = (e * numQMFSlots >> ff_log2_tab[ps->num_env]) - 1; + + if (ps->enable_iid) { + for (e = 0; e < ps->num_env; e++) { + int dt = get_bits1(gb); + if (read_iid_data(avctx, gb, ps, ps->iid_par, huff_iid[2*dt+ps->iid_quant], e, dt)) + goto err; + } + } else + memset(ps->iid_par, 0, sizeof(ps->iid_par)); + + if (ps->enable_icc) + for (e = 0; e < ps->num_env; e++) { + int dt = get_bits1(gb); + if (read_icc_data(avctx, gb, ps, ps->icc_par, dt ? huff_icc_dt : huff_icc_df, e, dt)) + goto err; + } + else + memset(ps->icc_par, 0, sizeof(ps->icc_par)); + + if (ps->enable_ext) { + int cnt = get_bits(gb, 4); + if (cnt == 15) { + cnt += get_bits(gb, 8); + } + cnt *= 8; + while (cnt > 7) { + int ps_extension_id = get_bits(gb, 2); + cnt -= 2 + ps_read_extension_data(gb, ps, ps_extension_id); + } + if (cnt < 0) { + av_log(avctx, AV_LOG_ERROR, "ps extension overflow %d\n", cnt); + goto err; + } + skip_bits(gb, cnt); + } + + ps->enable_ipdopd &= !PS_BASELINE; + + //Fix up envelopes + if (!ps->num_env || ps->border_position[ps->num_env] < numQMFSlots - 1) { + //Create a fake envelope + int source = ps->num_env ? ps->num_env - 1 : ps->num_env_old - 1; + int b; + if (source >= 0 && source != ps->num_env) { + if (ps->enable_iid) { + memcpy(ps->iid_par+ps->num_env, ps->iid_par+source, sizeof(ps->iid_par[0])); + } + if (ps->enable_icc) { + memcpy(ps->icc_par+ps->num_env, ps->icc_par+source, sizeof(ps->icc_par[0])); + } + if (ps->enable_ipdopd) { + memcpy(ps->ipd_par+ps->num_env, ps->ipd_par+source, sizeof(ps->ipd_par[0])); + memcpy(ps->opd_par+ps->num_env, ps->opd_par+source, sizeof(ps->opd_par[0])); + } + } + if (ps->enable_iid){ + for (b = 0; b < ps->nr_iid_par; b++) { + if (FFABS(ps->iid_par[ps->num_env][b]) > 7 + 8 * ps->iid_quant) { + av_log(avctx, AV_LOG_ERROR, "iid_par invalid\n"); + goto err; + } + } + } + if (ps->enable_icc){ + for (b = 0; b < ps->nr_iid_par; b++) { + if (ps->icc_par[ps->num_env][b] > 7U) { + av_log(avctx, AV_LOG_ERROR, "icc_par invalid\n"); + goto err; + } + } + } + ps->num_env++; + ps->border_position[ps->num_env] = numQMFSlots - 1; + } + + + ps->is34bands_old = ps->is34bands; + if (!PS_BASELINE && (ps->enable_iid || ps->enable_icc)) + ps->is34bands = (ps->enable_iid && ps->nr_iid_par == 34) || + (ps->enable_icc && ps->nr_icc_par == 34); + + //Baseline + if (!ps->enable_ipdopd) { + memset(ps->ipd_par, 0, sizeof(ps->ipd_par)); + memset(ps->opd_par, 0, sizeof(ps->opd_par)); + } + + if (header) + ps->start = 1; + + bits_consumed = get_bits_count(gb) - bit_count_start; + if (bits_consumed <= bits_left) { + skip_bits_long(gb_host, bits_consumed); + return bits_consumed; + } + av_log(avctx, AV_LOG_ERROR, "Expected to read %d PS bits actually read %d.\n", bits_left, bits_consumed); +err: + ps->start = 0; + skip_bits_long(gb_host, bits_left); + memset(ps->iid_par, 0, sizeof(ps->iid_par)); + memset(ps->icc_par, 0, sizeof(ps->icc_par)); + memset(ps->ipd_par, 0, sizeof(ps->ipd_par)); + memset(ps->opd_par, 0, sizeof(ps->opd_par)); + return bits_left; +} + +#define PS_INIT_VLC_STATIC(num, size) \ + INIT_VLC_STATIC(&vlc_ps[num], 9, ps_tmp[num].table_size / ps_tmp[num].elem_size, \ + ps_tmp[num].ps_bits, 1, 1, \ + ps_tmp[num].ps_codes, ps_tmp[num].elem_size, ps_tmp[num].elem_size, \ + size); + +#define PS_VLC_ROW(name) \ + { name ## _codes, name ## _bits, sizeof(name ## _codes), sizeof(name ## _codes[0]) } + +static av_cold void ps_init_common(void) +{ + // Syntax initialization + static const struct { + const void *ps_codes, *ps_bits; + const unsigned int table_size, elem_size; + } ps_tmp[] = { + PS_VLC_ROW(huff_iid_df1), + PS_VLC_ROW(huff_iid_dt1), + PS_VLC_ROW(huff_iid_df0), + PS_VLC_ROW(huff_iid_dt0), + PS_VLC_ROW(huff_icc_df), + PS_VLC_ROW(huff_icc_dt), + PS_VLC_ROW(huff_ipd_df), + PS_VLC_ROW(huff_ipd_dt), + PS_VLC_ROW(huff_opd_df), + PS_VLC_ROW(huff_opd_dt), + }; + + PS_INIT_VLC_STATIC(0, 1544); + PS_INIT_VLC_STATIC(1, 832); + PS_INIT_VLC_STATIC(2, 1024); + PS_INIT_VLC_STATIC(3, 1036); + PS_INIT_VLC_STATIC(4, 544); + PS_INIT_VLC_STATIC(5, 544); + PS_INIT_VLC_STATIC(6, 512); + PS_INIT_VLC_STATIC(7, 512); + PS_INIT_VLC_STATIC(8, 512); + PS_INIT_VLC_STATIC(9, 512); +} + +av_cold void ff_ps_init_common(void) +{ + static AVOnce init_static_once = AV_ONCE_INIT; + ff_thread_once(&init_static_once, ps_init_common); +} diff --git a/libavcodec/aacpsdata.c b/libavcodec/aacpsdata.c index 5c1a1b0f88..7a1f490060 100644 --- a/libavcodec/aacpsdata.c +++ b/libavcodec/aacpsdata.c @@ -142,22 +142,17 @@ static const int8_t huff_offset[] = { }; ///Table 8.48 -static const int8_t k_to_i_20[] = { +const int8_t ff_k_to_i_20[] = { 1, 0, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 14, 15, 15, 15, 16, 16, 16, 16, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19, 19 }; ///Table 8.49 -static const int8_t k_to_i_34[] = { +const int8_t ff_k_to_i_34[] = { 0, 1, 2, 3, 4, 5, 6, 6, 7, 2, 1, 0, 10, 10, 4, 5, 6, 7, 8, 9, 10, 11, 12, 9, 14, 11, 12, 13, 14, 15, 16, 13, 16, 17, 18, 19, 20, 21, 22, 22, 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, 27, 28, 28, 28, 29, 29, 29, 30, 30, 30, 31, 31, 31, 31, 32, 32, 32, 32, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33, 33 }; - -static const INTFLOAT g1_Q2[] = { - Q31(0.0f), Q31(0.01899487526049f), Q31(0.0f), Q31(-0.07293139167538f), - Q31(0.0f), Q31(0.30596630545168f), Q31(0.5f) -}; diff --git a/libavcodec/aacsbr_template.c b/libavcodec/aacsbr_template.c index 48d91650f7..774f12e77a 100644 --- a/libavcodec/aacsbr_template.c +++ b/libavcodec/aacsbr_template.c @@ -953,7 +953,7 @@ static void read_sbr_extension(AACContext *ac, SpectralBandReplication *sbr, skip_bits_long(gb, *num_bits_left); // bs_fill_bits *num_bits_left = 0; } else { - *num_bits_left -= AAC_RENAME(ff_ps_read_data)(ac->avctx, gb, &sbr->ps, *num_bits_left); + *num_bits_left -= ff_ps_read_data(ac->avctx, gb, &sbr->ps.common, *num_bits_left); ac->avctx->profile = FF_PROFILE_AAC_HE_V2; } break; @@ -1544,7 +1544,7 @@ void AAC_RENAME(ff_sbr_apply)(AACContext *ac, SpectralBandReplication *sbr, int } if (ac->oc[1].m4ac.ps == 1) { - if (sbr->ps.start) { + if (sbr->ps.common.start) { AAC_RENAME(ff_ps_apply)(ac->avctx, &sbr->ps, sbr->X[0], sbr->X[1], sbr->kx[1] + sbr->m[1]); } else { memcpy(sbr->X[1], sbr->X[0], sizeof(sbr->X[0])); From patchwork Wed Dec 30 23:31:43 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24708 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 6843A44B882 for ; Thu, 31 Dec 2020 01:35:03 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id AD3CA68AA1F; Thu, 31 Dec 2020 01:33:00 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f54.google.com (mail-ej1-f54.google.com [209.85.218.54]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E83C968A86F for ; Thu, 31 Dec 2020 01:32:49 +0200 (EET) Received: by mail-ej1-f54.google.com with SMTP id g20so23726651ejb.1 for ; Wed, 30 Dec 2020 15:32:49 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=xz/2ejXqPXqMFGEKZ+m+Coo2Ni5CWV1tiD4+7XVVVV4=; b=rNS88UvRKi9BFvfmPR9ztES6fWyRcgar9fOZeAau2TJuza172gKIFRaJwIlxpHMBAH DP3++yCcVFgXL/t0nAD4Eucpb+dbtKcftbnTG+HiznLv1Ngxw8JMlAfnARiSOsyapqqC 8zuKHAfgUiHiSB5+j6d7h9wxILXcq3pjqwdqnaAZy7K7Yk0JPQEK4W9UStT8NnEJkGi+ hkNjOTBHT0fBotNj3SNfqLkmaxrCO3mFIY7qqUMVN4I3YdLBD+ZVi6Fmgfzuj7H2vjJj 7G//t/XgsX/E9XFEHSQLyDVaqaMGReqP0B3bYCjDIlrE0IBrDkNweAqeUwG46BPw8OLp n9Ig== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=xz/2ejXqPXqMFGEKZ+m+Coo2Ni5CWV1tiD4+7XVVVV4=; b=nvaCXGq4Cdb2LmqTdwUMAu1+bjRC+NkJr8rXN91j4JfVkiy7BoRKGYRMFLMIZ2Qmh1 UhmG3D0JVs3SiAG9cygSeiwvvtM7/rP89gEQYeQlGb9bfa6ZFwBj3JU2rhkqpxpkamHL BnTvivWuEvcq+CFCD8ONfgr7wmRuq/i0BM5g3hXDSVm2pe+jkW6hx6kecwk5q8Xg8OsT ehrfoffU1UE24mTm3J0U7LInYJIgMZjnenBKOMxpDyMS1g4ksa1T5GMkCbhYpVZtukkk wfwddSCNo75pUs/ROluJETda9WexWFZM1ijCoqGYjixjmEu/X/iagnUv/Fmn+RE8CWSz AVXA== X-Gm-Message-State: AOAM533UJuIVrzj9DR/woRrSAnXJEHXzKxXAedhKiPZEMJtGq7fB//yT ZrxYdKVMRJVKvpMvnJvjP4Cd70txd3o= X-Google-Smtp-Source: ABdhPJzkme8Zdd8eOlIV+nM3Fw9RqEvRV3V+gz6VetIGFWszZalrf/GwsSdsrZZUUydgSTgHvAcRGw== X-Received: by 2002:a17:906:1291:: with SMTP id k17mr51821085ejb.288.1609371169259; Wed, 30 Dec 2020 15:32:49 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id u19sm19630409ejg.16.2020.12.30.15.32.48 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Dec 2020 15:32:48 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 31 Dec 2020 00:31:43 +0100 Message-Id: <20201230233157.1055287-16-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> References: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 16/30] avcodec/aacps_common: Use minimal VLC nb_bits/max_depth X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" Signed-off-by: Andreas Rheinhardt --- libavcodec/aacps_common.c | 36 ++++++++++++++++++------------------ 1 file changed, 18 insertions(+), 18 deletions(-) diff --git a/libavcodec/aacps_common.c b/libavcodec/aacps_common.c index ecc220f94b..8653b871ca 100644 --- a/libavcodec/aacps_common.c +++ b/libavcodec/aacps_common.c @@ -61,7 +61,7 @@ static const int huff_iid[] = { static VLC vlc_ps[10]; -#define READ_PAR_DATA(PAR, OFFSET, MASK, ERR_CONDITION) \ +#define READ_PAR_DATA(PAR, OFFSET, MASK, ERR_CONDITION, NB_BITS, MAX_DEPTH) \ /** \ * Read Inter-channel Intensity Difference/Inter-Channel Coherence/ \ * Inter-channel Phase Difference/Overall Phase Difference parameters from the \ @@ -83,7 +83,7 @@ static int read_ ## PAR ## _data(AVCodecContext *avctx, GetBitContext *gb, PSCom int e_prev = e ? e - 1 : ps->num_env_old - 1; \ e_prev = FFMAX(e_prev, 0); \ for (b = 0; b < num; b++) { \ - int val = PAR[e_prev][b] + get_vlc2(gb, vlc_table, 9, 3) - OFFSET; \ + int val = PAR[e_prev][b] + get_vlc2(gb, vlc_table, NB_BITS, MAX_DEPTH) - OFFSET; \ if (MASK) val &= MASK; \ PAR[e][b] = val; \ if (ERR_CONDITION) \ @@ -92,7 +92,7 @@ static int read_ ## PAR ## _data(AVCodecContext *avctx, GetBitContext *gb, PSCom } else { \ int val = 0; \ for (b = 0; b < num; b++) { \ - val += get_vlc2(gb, vlc_table, 9, 3) - OFFSET; \ + val += get_vlc2(gb, vlc_table, NB_BITS, MAX_DEPTH) - OFFSET; \ if (MASK) val &= MASK; \ PAR[e][b] = val; \ if (ERR_CONDITION) \ @@ -105,9 +105,9 @@ err: \ return AVERROR_INVALIDDATA; \ } -READ_PAR_DATA(iid, huff_offset[table_idx], 0, FFABS(ps->iid_par[e][b]) > 7 + 8 * ps->iid_quant) -READ_PAR_DATA(icc, huff_offset[table_idx], 0, ps->icc_par[e][b] > 7U) -READ_PAR_DATA(ipdopd, 0, 0x07, 0) +READ_PAR_DATA(iid, huff_offset[table_idx], 0, FFABS(ps->iid_par[e][b]) > 7 + 8 * ps->iid_quant, 9, 3) +READ_PAR_DATA(icc, huff_offset[table_idx], 0, ps->icc_par[e][b] > 7U, 9, 2) +READ_PAR_DATA(ipdopd, 0, 0x07, 0, 5, 1) static int ps_read_extension_data(GetBitContext *gb, PSCommonContext *ps, int ps_extension_id) @@ -289,8 +289,8 @@ err: return bits_left; } -#define PS_INIT_VLC_STATIC(num, size) \ - INIT_VLC_STATIC(&vlc_ps[num], 9, ps_tmp[num].table_size / ps_tmp[num].elem_size, \ +#define PS_INIT_VLC_STATIC(num, nb_bits, size) \ + INIT_VLC_STATIC(&vlc_ps[num], nb_bits, ps_tmp[num].table_size / ps_tmp[num].elem_size, \ ps_tmp[num].ps_bits, 1, 1, \ ps_tmp[num].ps_codes, ps_tmp[num].elem_size, ps_tmp[num].elem_size, \ size); @@ -317,16 +317,16 @@ static av_cold void ps_init_common(void) PS_VLC_ROW(huff_opd_dt), }; - PS_INIT_VLC_STATIC(0, 1544); - PS_INIT_VLC_STATIC(1, 832); - PS_INIT_VLC_STATIC(2, 1024); - PS_INIT_VLC_STATIC(3, 1036); - PS_INIT_VLC_STATIC(4, 544); - PS_INIT_VLC_STATIC(5, 544); - PS_INIT_VLC_STATIC(6, 512); - PS_INIT_VLC_STATIC(7, 512); - PS_INIT_VLC_STATIC(8, 512); - PS_INIT_VLC_STATIC(9, 512); + PS_INIT_VLC_STATIC(0, 9, 1544); + PS_INIT_VLC_STATIC(1, 9, 832); + PS_INIT_VLC_STATIC(2, 9, 1024); + PS_INIT_VLC_STATIC(3, 9, 1036); + PS_INIT_VLC_STATIC(4, 9, 544); + PS_INIT_VLC_STATIC(5, 9, 544); + PS_INIT_VLC_STATIC(6, 5, 32); + PS_INIT_VLC_STATIC(7, 5, 32); + PS_INIT_VLC_STATIC(8, 5, 32); + PS_INIT_VLC_STATIC(9, 5, 32); } av_cold void ff_ps_init_common(void) From patchwork Wed Dec 30 23:31:44 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24709 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id E5C0D44B882 for ; Thu, 31 Dec 2020 01:35:12 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 9CA3968AA64; Thu, 31 Dec 2020 01:33:01 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f51.google.com (mail-ej1-f51.google.com [209.85.218.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id EA2DC68A77B for ; Thu, 31 Dec 2020 01:32:50 +0200 (EET) Received: by mail-ej1-f51.google.com with SMTP id qw4so23657530ejb.12 for ; Wed, 30 Dec 2020 15:32:50 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=yJX69Si4KeZNSECMz3OCzeUYpFjHJAtTb6BEXoCGgog=; b=opF/ZayL5z78S0fXZ4pACid8YpbdyG0Rwp0rlS97Sy921+aP/ybz3HPFAvOZIWAC7T 5tkjNDCqMHqdbbusi3AUGPdw6vHGRGXAfgehXaMcJfZ8qTk5p4Of9ZTsEf7N2AMdvj7B 41qxYioLdC2R+4x/zKGHoQIp1sns97WndKJHAvu1dfKDj37dfbcZH1zwrxozny+lR8xT OGNtiujvy2m+iDpMkgW1Op9o/mYkFzQHi/R1YNBgqrvzSbaDgUpax8gmxTgFnLt48UDr G45apzZHuypqA0pAnGBSvtPWmNixD/KfFQfpzbubYj3cGf1ojwm98mAQpl/LEuAAkWPq mB/g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=yJX69Si4KeZNSECMz3OCzeUYpFjHJAtTb6BEXoCGgog=; b=q4U4W6g8a0gqLGtqhFnC7Us2/IaxjTk4OXwmEnRZKH+Tcd6m3+iCLc7FwgOxyMplFu G7GhVXBui/Ree/oUyEODAS+C4TXMz+LHNuqV+aq+tEDr6icLevmMpWkxguiGVIzBXVyY 9XPLxu4ZkxCRyQJGtxLMxbz2TDukuRl4jz/gXuDTd+i9GHUl/jkIqr1Ee4owBRlSuu55 Hsm4kP36kSu9yiiLEkQzp4FkI3xUk9tEDLz4VzHWmLvY5O4mFqdJZYaKAZpARDaItvXs iVdASdBi4t3ebx01XRbH1zYnY9wBjgcHt6x3IVeZYw70pLQvre0fcGLvnYsT6RiCZxKU Uunw== X-Gm-Message-State: AOAM533i7DB4wDJNlHV8pVUbedDVgtOxs3FGJ5DB7KT+nYvCycwuOSSu X//YORkvq+FbQ9boQGEJhjA0J1tATEU= X-Google-Smtp-Source: ABdhPJw+ibsZPnTz2ctBbVuD4AR1cIyEkMmagb45Nv7LpyTOIwTnwP4ckqnLG6FKDOcqzUfKxzLzGg== X-Received: by 2002:a17:906:fa8b:: with SMTP id lt11mr51197889ejb.94.1609371170149; Wed, 30 Dec 2020 15:32:50 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id u19sm19630409ejg.16.2020.12.30.15.32.49 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Dec 2020 15:32:49 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 31 Dec 2020 00:31:44 +0100 Message-Id: <20201230233157.1055287-17-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> References: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 17/30] avcodec/opusdec: Return error upon error X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" The Opus decoder forgot to return an error when allocating an SwrContext fails. Signed-off-by: Andreas Rheinhardt --- libavcodec/opusdec.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/libavcodec/opusdec.c b/libavcodec/opusdec.c index 86a3181e9d..462d70b3bf 100644 --- a/libavcodec/opusdec.c +++ b/libavcodec/opusdec.c @@ -671,8 +671,10 @@ static av_cold int opus_decode_init(AVCodecContext *avctx) s->fdsp = c->fdsp; s->swr =swr_alloc(); - if (!s->swr) + if (!s->swr) { + ret = AVERROR(ENOMEM); goto fail; + } layout = (s->output_channels == 1) ? AV_CH_LAYOUT_MONO : AV_CH_LAYOUT_STEREO; av_opt_set_int(s->swr, "in_sample_fmt", avctx->sample_fmt, 0); From patchwork Wed Dec 30 23:31:45 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24710 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 449E444B882 for ; Thu, 31 Dec 2020 01:35:22 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0E34668AA85; Thu, 31 Dec 2020 01:33:03 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f50.google.com (mail-ej1-f50.google.com [209.85.218.50]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E77FA68A874 for ; Thu, 31 Dec 2020 01:32:51 +0200 (EET) Received: by mail-ej1-f50.google.com with SMTP id b9so23749118ejy.0 for ; Wed, 30 Dec 2020 15:32:51 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=OYIoLvtzxlwSX/CgVYNvNlv3Zcda+rlYoPtEnIa1FXg=; b=PfJ4FulYJWK0WaDZvQr4rFd3lFE010D5oDyt3WC8P+sswtJf83Zv7XNIKLQvyWNNJW s1uSOYlOmFoySIA4keUylqw4Pr0zqQcueA8Xt3ozHTGl6eDXqWky/X1stqDCVQcxfuYc wYF549kV1jmu+1wiIFSUGi8mH732HcOk+ax7FD4eWlaTswXjiMUFDcjRF3KhEWL46/ql FUYzsABgChN2G9rmNqDluCwaZSualNJNwmS9PAKplGd2pdCbdoAF6jwW4Bw2btMs6SWT sZUy2xuw6WOw/Rn0ThHxur1kfn8fLODkfcSDr1iSTE1T5snrV8pwTbpqryaeiZXDndub NgEg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=OYIoLvtzxlwSX/CgVYNvNlv3Zcda+rlYoPtEnIa1FXg=; b=bIuzWQ01ZFCWc+oGYFrOu8aMU/9q+Qyb1PYnw6+msKeQZaFnrmY319p9YvqugckN+y iWRODD7Ns8rD8kvqZEK3aEcCTKgDpM2ZToxn4WrE7JqlVRvdvuTH2y4FgoN8tKdOkD/C qTov2yVzAEMINrT5uxcYrRbPokD2Egrw+Rjjn04Dk+jZ2OlxtVn1CGJnlDFFoXm8V1Zu dbd4aKFmSxtzxW6gBgbI03ciip8m1pcBLTexgSv5t+LjqMf9dwlTaxcArpsiry9OJPoy 33eYN6/sF9X8GPANdSUo1C9dYAbEm4MKtEYKs4DNySsJ74YFuoR+8frKq152UIprqDPz 0Mjw== X-Gm-Message-State: AOAM531gIJmYqzHv3wIKEk7FsyPtA+F0ZUSzQ1LvrsVWd4yiuBTUGqqH P+LhXGLhKkZmnvxYClCmwYA8rgB6SNY= X-Google-Smtp-Source: ABdhPJz8LMF1Z6aXc2IzEe07zE0PFZWAn88ux1MVqzfMfAYbSo4j6hBy2vBuARpCE5cd1d/W96DNLA== X-Received: by 2002:a17:906:8354:: with SMTP id b20mr51368628ejy.397.1609371171106; Wed, 30 Dec 2020 15:32:51 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id u19sm19630409ejg.16.2020.12.30.15.32.50 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Dec 2020 15:32:50 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 31 Dec 2020 00:31:45 +0100 Message-Id: <20201230233157.1055287-18-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> References: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 18/30] avcodec/opusdec: Move per-stream fields to OpusStreamContext X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" Besides being more natural it also avoids allocations for separate arrays of decoded samples/output buffers/.... Signed-off-by: Andreas Rheinhardt --- libavcodec/opus.h | 24 +++++----- libavcodec/opusdec.c | 111 +++++++++++++++++++------------------------ 2 files changed, 62 insertions(+), 73 deletions(-) diff --git a/libavcodec/opus.h b/libavcodec/opus.h index 63ecd0aff7..fa63353e9b 100644 --- a/libavcodec/opus.h +++ b/libavcodec/opus.h @@ -101,6 +101,15 @@ typedef struct OpusStreamContext { AVCodecContext *avctx; int output_channels; + /* number of decoded samples for this stream */ + int decoded_samples; + /* current output buffers for this stream */ + float *out[2]; + int out_size; + /* Buffer with samples from this stream for synchronizing + * the streams when they have different resampling delays */ + AVAudioFifo *sync_buffer; + OpusRangeCoder rc; OpusRangeCoder redundancy_rc; SilkContext *silk; @@ -115,9 +124,9 @@ typedef struct OpusStreamContext { DECLARE_ALIGNED(32, float, redundancy_buf)[2][960]; float *redundancy_output[2]; - /* data buffers for the final output data */ - float *out[2]; - int out_size; + /* buffers for the next samples to be decoded */ + float *cur_out[2]; + int remaining_out_size; float *out_dummy; int out_dummy_allocated_size; @@ -154,15 +163,6 @@ typedef struct OpusContext { OpusStreamContext *streams; int apply_phase_inv; - /* current output buffers for each streams */ - float **out; - int *out_size; - /* Buffers for synchronizing the streams when they have different - * resampling delays */ - AVAudioFifo **sync_buffers; - /* number of decoded samples for each stream */ - int *decoded_samples; - int nb_streams; int nb_stereo_streams; diff --git a/libavcodec/opusdec.c b/libavcodec/opusdec.c index 462d70b3bf..b09a542c86 100644 --- a/libavcodec/opusdec.c +++ b/libavcodec/opusdec.c @@ -87,7 +87,7 @@ static int opus_flush_resample(OpusStreamContext *s, int nb_samples) int celt_size = av_audio_fifo_size(s->celt_delay); int ret, i; ret = swr_convert(s->swr, - (uint8_t**)s->out, nb_samples, + (uint8_t**)s->cur_out, nb_samples, NULL, 0); if (ret < 0) return ret; @@ -104,7 +104,7 @@ static int opus_flush_resample(OpusStreamContext *s, int nb_samples) } av_audio_fifo_read(s->celt_delay, (void**)s->celt_output, nb_samples); for (i = 0; i < s->output_channels; i++) { - s->fdsp->vector_fmac_scalar(s->out[i], + s->fdsp->vector_fmac_scalar(s->cur_out[i], s->celt_output[i], 1.0, nb_samples); } @@ -112,15 +112,15 @@ static int opus_flush_resample(OpusStreamContext *s, int nb_samples) if (s->redundancy_idx) { for (i = 0; i < s->output_channels; i++) - opus_fade(s->out[i], s->out[i], + opus_fade(s->cur_out[i], s->cur_out[i], s->redundancy_output[i] + 120 + s->redundancy_idx, ff_celt_window2 + s->redundancy_idx, 120 - s->redundancy_idx); s->redundancy_idx = 0; } - s->out[0] += nb_samples; - s->out[1] += nb_samples; - s->out_size -= nb_samples * sizeof(float); + s->cur_out[0] += nb_samples; + s->cur_out[1] += nb_samples; + s->remaining_out_size -= nb_samples * sizeof(float); return 0; } @@ -199,7 +199,7 @@ static int opus_decode_frame(OpusStreamContext *s, const uint8_t *data, int size return samples; } samples = swr_convert(s->swr, - (uint8_t**)s->out, s->packet.frame_duration, + (uint8_t**)s->cur_out, s->packet.frame_duration, (const uint8_t**)s->silk_output, samples); if (samples < 0) { av_log(s->avctx, AV_LOG_ERROR, "Error resampling SILK data.\n"); @@ -240,7 +240,7 @@ static int opus_decode_frame(OpusStreamContext *s, const uint8_t *data, int size /* decode the CELT frame */ if (s->packet.mode == OPUS_MODE_CELT || s->packet.mode == OPUS_MODE_HYBRID) { - float *out_tmp[2] = { s->out[0], s->out[1] }; + float *out_tmp[2] = { s->cur_out[0], s->cur_out[1] }; float **dst = (s->packet.mode == OPUS_MODE_CELT) ? out_tmp : s->celt_output; int celt_output_samples = samples; @@ -295,7 +295,7 @@ static int opus_decode_frame(OpusStreamContext *s, const uint8_t *data, int size if (s->redundancy_idx) { for (i = 0; i < s->output_channels; i++) - opus_fade(s->out[i], s->out[i], + opus_fade(s->cur_out[i], s->cur_out[i], s->redundancy_output[i] + 120 + s->redundancy_idx, ff_celt_window2 + s->redundancy_idx, 120 - s->redundancy_idx); s->redundancy_idx = 0; @@ -308,8 +308,8 @@ static int opus_decode_frame(OpusStreamContext *s, const uint8_t *data, int size return ret; for (i = 0; i < s->output_channels; i++) { - opus_fade(s->out[i] + samples - 120 + delayed_samples, - s->out[i] + samples - 120 + delayed_samples, + opus_fade(s->cur_out[i] + samples - 120 + delayed_samples, + s->cur_out[i] + samples - 120 + delayed_samples, s->redundancy_output[i] + 120, ff_celt_window2, 120 - delayed_samples); if (delayed_samples) @@ -317,10 +317,10 @@ static int opus_decode_frame(OpusStreamContext *s, const uint8_t *data, int size } } else { for (i = 0; i < s->output_channels; i++) { - memcpy(s->out[i] + delayed_samples, s->redundancy_output[i], 120 * sizeof(float)); - opus_fade(s->out[i] + 120 + delayed_samples, + memcpy(s->cur_out[i] + delayed_samples, s->redundancy_output[i], 120 * sizeof(float)); + opus_fade(s->cur_out[i] + 120 + delayed_samples, s->redundancy_output[i] + 120, - s->out[i] + 120 + delayed_samples, + s->cur_out[i] + 120 + delayed_samples, ff_celt_window2, 120); } } @@ -331,16 +331,15 @@ static int opus_decode_frame(OpusStreamContext *s, const uint8_t *data, int size static int opus_decode_subpacket(OpusStreamContext *s, const uint8_t *buf, int buf_size, - float **out, int out_size, int nb_samples) { int output_samples = 0; int flush_needed = 0; int i, j, ret; - s->out[0] = out[0]; - s->out[1] = out[1]; - s->out_size = out_size; + s->cur_out[0] = s->out[0]; + s->cur_out[1] = s->out[1]; + s->remaining_out_size = s->out_size; /* check if we need to flush the resampler */ if (swr_is_initialized(s->swr)) { @@ -357,15 +356,16 @@ static int opus_decode_subpacket(OpusStreamContext *s, return 0; /* use dummy output buffers if the channel is not mapped to anything */ - if (!s->out[0] || - (s->output_channels == 2 && !s->out[1])) { - av_fast_malloc(&s->out_dummy, &s->out_dummy_allocated_size, s->out_size); + if (!s->cur_out[0] || + (s->output_channels == 2 && !s->cur_out[1])) { + av_fast_malloc(&s->out_dummy, &s->out_dummy_allocated_size, + s->remaining_out_size); if (!s->out_dummy) return AVERROR(ENOMEM); - if (!s->out[0]) - s->out[0] = s->out_dummy; - if (!s->out[1]) - s->out[1] = s->out_dummy; + if (!s->cur_out[0]) + s->cur_out[0] = s->out_dummy; + if (!s->cur_out[1]) + s->cur_out[1] = s->out_dummy; } /* flush the resampler if necessary */ @@ -394,19 +394,19 @@ static int opus_decode_subpacket(OpusStreamContext *s, return samples; for (j = 0; j < s->output_channels; j++) - memset(s->out[j], 0, s->packet.frame_duration * sizeof(float)); + memset(s->cur_out[j], 0, s->packet.frame_duration * sizeof(float)); samples = s->packet.frame_duration; } output_samples += samples; for (j = 0; j < s->output_channels; j++) - s->out[j] += samples; - s->out_size -= samples * sizeof(float); + s->cur_out[j] += samples; + s->remaining_out_size -= samples * sizeof(float); } finish: - s->out[0] = s->out[1] = NULL; - s->out_size = 0; + s->cur_out[0] = s->cur_out[1] = NULL; + s->remaining_out_size = 0; return output_samples; } @@ -429,7 +429,7 @@ static int opus_decode_packet(AVCodecContext *avctx, void *data, s->out[0] = s->out[1] = NULL; delayed_samples = FFMAX(delayed_samples, - s->delayed_samples + av_audio_fifo_size(c->sync_buffers[i])); + s->delayed_samples + av_audio_fifo_size(s->sync_buffer)); } /* decode the header of the first sub-packet to find out the sample count */ @@ -458,17 +458,17 @@ static int opus_decode_packet(AVCodecContext *avctx, void *data, return ret; frame->nb_samples = 0; - memset(c->out, 0, c->nb_streams * 2 * sizeof(*c->out)); for (i = 0; i < avctx->channels; i++) { ChannelMap *map = &c->channel_maps[i]; if (!map->copy) - c->out[2 * map->stream_idx + map->channel_idx] = (float*)frame->extended_data[i]; + c->streams[map->stream_idx].out[map->channel_idx] = (float*)frame->extended_data[i]; } /* read the data from the sync buffers */ for (i = 0; i < c->nb_streams; i++) { - float **out = c->out + 2 * i; - int sync_size = av_audio_fifo_size(c->sync_buffers[i]); + OpusStreamContext *s = &c->streams[i]; + float **out = s->out; + int sync_size = av_audio_fifo_size(s->sync_buffer); float sync_dummy[32]; int out_dummy = (!out[0]) | ((!out[1]) << 1); @@ -480,7 +480,7 @@ static int opus_decode_packet(AVCodecContext *avctx, void *data, if (out_dummy && sync_size > FF_ARRAY_ELEMS(sync_dummy)) return AVERROR_BUG; - ret = av_audio_fifo_read(c->sync_buffers[i], (void**)out, sync_size); + ret = av_audio_fifo_read(s->sync_buffer, (void**)out, sync_size); if (ret < 0) return ret; @@ -493,7 +493,7 @@ static int opus_decode_packet(AVCodecContext *avctx, void *data, else out[1] += ret; - c->out_size[i] = frame->linesize[0] - ret * sizeof(float); + s->out_size = frame->linesize[0] - ret * sizeof(float); } /* decode each sub-packet */ @@ -516,10 +516,10 @@ static int opus_decode_packet(AVCodecContext *avctx, void *data, } ret = opus_decode_subpacket(&c->streams[i], buf, s->packet.data_size, - c->out + 2 * i, c->out_size[i], coded_samples); + coded_samples); if (ret < 0) return ret; - c->decoded_samples[i] = ret; + s->decoded_samples = ret; decoded_samples = FFMIN(decoded_samples, ret); buf += s->packet.packet_size; @@ -528,13 +528,14 @@ static int opus_decode_packet(AVCodecContext *avctx, void *data, /* buffer the extra samples */ for (i = 0; i < c->nb_streams; i++) { - int buffer_samples = c->decoded_samples[i] - decoded_samples; + OpusStreamContext *s = &c->streams[i]; + int buffer_samples = s->decoded_samples - decoded_samples; if (buffer_samples) { - float *buf[2] = { c->out[2 * i + 0] ? c->out[2 * i + 0] : (float*)frame->extended_data[0], - c->out[2 * i + 1] ? c->out[2 * i + 1] : (float*)frame->extended_data[0] }; + float *buf[2] = { s->out[0] ? s->out[0] : (float*)frame->extended_data[0], + s->out[1] ? s->out[1] : (float*)frame->extended_data[0] }; buf[0] += decoded_samples; buf[1] += decoded_samples; - ret = av_audio_fifo_write(c->sync_buffers[i], (void**)buf, buffer_samples); + ret = av_audio_fifo_write(s->sync_buffer, (void**)buf, buffer_samples); if (ret < 0) return ret; } @@ -579,7 +580,7 @@ static av_cold void opus_decode_flush(AVCodecContext *ctx) av_audio_fifo_drain(s->celt_delay, av_audio_fifo_size(s->celt_delay)); swr_close(s->swr); - av_audio_fifo_drain(c->sync_buffers[i], av_audio_fifo_size(c->sync_buffers[i])); + av_audio_fifo_drain(s->sync_buffer, av_audio_fifo_size(s->sync_buffer)); ff_silk_flush(s->silk); ff_celt_flush(s->celt); @@ -600,21 +601,13 @@ static av_cold int opus_decode_close(AVCodecContext *avctx) av_freep(&s->out_dummy); s->out_dummy_allocated_size = 0; + av_audio_fifo_free(s->sync_buffer); av_audio_fifo_free(s->celt_delay); swr_free(&s->swr); } av_freep(&c->streams); - if (c->sync_buffers) { - for (i = 0; i < c->nb_streams; i++) - av_audio_fifo_free(c->sync_buffers[i]); - } - av_freep(&c->sync_buffers); - av_freep(&c->decoded_samples); - av_freep(&c->out); - av_freep(&c->out_size); - c->nb_streams = 0; av_freep(&c->channel_maps); @@ -644,11 +637,7 @@ static av_cold int opus_decode_init(AVCodecContext *avctx) /* allocate and init each independent decoder */ c->streams = av_mallocz_array(c->nb_streams, sizeof(*c->streams)); - c->out = av_mallocz_array(c->nb_streams, 2 * sizeof(*c->out)); - c->out_size = av_mallocz_array(c->nb_streams, sizeof(*c->out_size)); - c->sync_buffers = av_mallocz_array(c->nb_streams, sizeof(*c->sync_buffers)); - c->decoded_samples = av_mallocz_array(c->nb_streams, sizeof(*c->decoded_samples)); - if (!c->streams || !c->sync_buffers || !c->decoded_samples || !c->out || !c->out_size) { + if (!c->streams) { c->nb_streams = 0; ret = AVERROR(ENOMEM); goto fail; @@ -699,9 +688,9 @@ static av_cold int opus_decode_init(AVCodecContext *avctx) goto fail; } - c->sync_buffers[i] = av_audio_fifo_alloc(avctx->sample_fmt, - s->output_channels, 32); - if (!c->sync_buffers[i]) { + s->sync_buffer = av_audio_fifo_alloc(avctx->sample_fmt, + s->output_channels, 32); + if (!s->sync_buffer) { ret = AVERROR(ENOMEM); goto fail; } From patchwork Wed Dec 30 23:31:46 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24711 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id ED17D44B882 for ; Thu, 31 Dec 2020 01:35:32 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 17E5E68A92E; Thu, 31 Dec 2020 01:33:04 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f50.google.com (mail-ej1-f50.google.com [209.85.218.50]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D8AED68A912 for ; Thu, 31 Dec 2020 01:32:52 +0200 (EET) Received: by mail-ej1-f50.google.com with SMTP id d17so23634724ejy.9 for ; Wed, 30 Dec 2020 15:32:52 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=V+uNbwkjySmDzy206uGlUtz3QIMYS27EBEEtOjZVU68=; b=XEYpx3r4kBObU8cktYE4FlDqZDEzuWN8hB2U3fLTk3QMKTakTAWNqEyZu7WYRsZ/TW +CumzzOUACXJBHWoJfAjPJQyeQYIdQHjYphNp2ljAXcYpGgcScoL0Qp7rs2Kw4v6kcXC W/C1tX7VQezFXzUiYf4WQuwdo3BKMpn/JiacgmdVs/g6vi1ntjYuCImhyy4UL7wH1fV8 yqWhMHrvyT2bug/bgnrCAZF3eciqEpTTLKLbInWYWOdFKJo9zLPH8R7fHwMh46VsirNy mWLcyDKj1/1neB9pnqd0V/Qh55dXSOfXIGM+aSF3QZeT9Hkt5X72bQSLt7BOdzBLAuJC Rs7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=V+uNbwkjySmDzy206uGlUtz3QIMYS27EBEEtOjZVU68=; b=iG7m0wL788MpnNHhkm5oXGnjOxSvKyUi8gJBPAVBvjzGK2eMMLPifSYnckSSeKlCzC drPBCgqiwlwaARl1Rk6unc0PyHpMrXspgdS3Mwpg7W8n2k5oATjnhpZvn1UWSqJ4+Fwr cWfnkDQvf0p5q1taCz6Ak748piGGK1NKL3NM+Qn38QtJqAObHTVpSo88pb2FShcOguYH nPPlBSwIqWL0Il+OmYy/XVzkZuq3lPgrz0zgfow0rZ9knnMwKSzffPu5e58aJW97Sy34 AFVraF34CIMyla8yxpeVnn5nRzHWXYuB9WMA25XutodFCyNsmdpTZrwrY+c7/pno5ATC NgJQ== X-Gm-Message-State: AOAM533nmBKopR26MdNzzx4Ot2CUj6UL/xRyHqu3hDLo2tTPYJQ77Kad dV4oDBlGf8Js+fmydDS5QKZX89YJKm0= X-Google-Smtp-Source: ABdhPJxaxsp+PK0+/arYfXqWLXia24DcUq7HXLvkUbGDvQKduECoRBE7Y5MU+5h07wtPrbzUodYdDw== X-Received: by 2002:a17:906:c414:: with SMTP id u20mr50347048ejz.511.1609371172156; Wed, 30 Dec 2020 15:32:52 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id u19sm19630409ejg.16.2020.12.30.15.32.51 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Dec 2020 15:32:51 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 31 Dec 2020 00:31:46 +0100 Message-Id: <20201230233157.1055287-19-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> References: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 19/30] avcodec/opusdec: Cleanup generically in init failure X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" Signed-off-by: Andreas Rheinhardt --- libavcodec/opusdec.c | 33 +++++++++++---------------------- 1 file changed, 11 insertions(+), 22 deletions(-) diff --git a/libavcodec/opusdec.c b/libavcodec/opusdec.c index b09a542c86..24e90a3761 100644 --- a/libavcodec/opusdec.c +++ b/libavcodec/opusdec.c @@ -630,17 +630,14 @@ static av_cold int opus_decode_init(AVCodecContext *avctx) /* find out the channel configuration */ ret = ff_opus_parse_extradata(avctx, c); - if (ret < 0) { - av_freep(&c->fdsp); + if (ret < 0) return ret; - } /* allocate and init each independent decoder */ c->streams = av_mallocz_array(c->nb_streams, sizeof(*c->streams)); if (!c->streams) { c->nb_streams = 0; - ret = AVERROR(ENOMEM); - goto fail; + return AVERROR(ENOMEM); } for (i = 0; i < c->nb_streams; i++) { @@ -660,10 +657,8 @@ static av_cold int opus_decode_init(AVCodecContext *avctx) s->fdsp = c->fdsp; s->swr =swr_alloc(); - if (!s->swr) { - ret = AVERROR(ENOMEM); - goto fail; - } + if (!s->swr) + return AVERROR(ENOMEM); layout = (s->output_channels == 1) ? AV_CH_LAYOUT_MONO : AV_CH_LAYOUT_STEREO; av_opt_set_int(s->swr, "in_sample_fmt", avctx->sample_fmt, 0); @@ -675,31 +670,24 @@ static av_cold int opus_decode_init(AVCodecContext *avctx) ret = ff_silk_init(avctx, &s->silk, s->output_channels); if (ret < 0) - goto fail; + return ret; ret = ff_celt_init(avctx, &s->celt, s->output_channels, c->apply_phase_inv); if (ret < 0) - goto fail; + return ret; s->celt_delay = av_audio_fifo_alloc(avctx->sample_fmt, s->output_channels, 1024); - if (!s->celt_delay) { - ret = AVERROR(ENOMEM); - goto fail; - } + if (!s->celt_delay) + return AVERROR(ENOMEM); s->sync_buffer = av_audio_fifo_alloc(avctx->sample_fmt, s->output_channels, 32); - if (!s->sync_buffer) { - ret = AVERROR(ENOMEM); - goto fail; - } + if (!s->sync_buffer) + return AVERROR(ENOMEM); } return 0; -fail: - opus_decode_close(avctx); - return ret; } #define OFFSET(x) offsetof(OpusContext, x) @@ -728,4 +716,5 @@ AVCodec ff_opus_decoder = { .decode = opus_decode_packet, .flush = opus_decode_flush, .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY | AV_CODEC_CAP_CHANNEL_CONF, + .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, }; From patchwork Wed Dec 30 23:31:47 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24712 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 3FFDB44B882 for ; Thu, 31 Dec 2020 01:35:42 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E7D7B68AA7E; Thu, 31 Dec 2020 01:33:04 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f53.google.com (mail-ej1-f53.google.com [209.85.218.53]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id C332F68A717 for ; Thu, 31 Dec 2020 01:32:53 +0200 (EET) Received: by mail-ej1-f53.google.com with SMTP id x16so23699793ejj.7 for ; Wed, 30 Dec 2020 15:32:53 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=Hj0DxBF8c+uTOaAFtM9oesUFZBQf1Wlop6QjFqqj7Xc=; b=tr3zjg6vA4m3vFSpYif7bu9cW1t2WUg1JHNv4sU57P/uhNWgWwuGiU1aFJXFshXpgB 7Uio4Roq2XnHtdjP7Rtjlma3+9pUvd1JPDZYeARaIKQt55sJSsTlPzB7XQiwo02Ma1v7 EDImBblRHD9bvugU6IeAhZ91f5GCPaC94zVbqpqeMCFWtdGfxFYdshmEmvXDel1FI5vL Qf7UqNKXUldYLq8jXyo+9LJArb9ihPQCICK3I69bNgWzU323Q8Yq7pivFSBhsaUfp5pl uSJ/zI29ZPFIKWpRfhR5FhHensHKFrVs7xPZhIz7ewlg36i4oVDxDmkRuOsL2lTroWFn JR7Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=Hj0DxBF8c+uTOaAFtM9oesUFZBQf1Wlop6QjFqqj7Xc=; b=R0qWMs0QJOwspFBvmoo4nKDJvsqwQx6P3f5yRvx7grDYVqH8ZyoXL2ankE+++RFzaL aYPhCbknMaU743N2xgAoqsFK429fBLKJuHCFz0McKph4dKLJUYE3xGuRDlg9fQI0iaMT 4umVxOKtPCQ/pkQ8A8Ipjfg2dum2sPFMpJm0hTpuY+O+Xzx6oIA9EvrC3+x+HWn8iPgE dDkZKiHNGhpkQ15UjuiJo2kbRYE9uFCpRyAceLCrdmSHYmG3e++2LSVcbZ5rvTwf6DcR buQcS23uUX9HL4gU/1LysJx3uR21UTxKUX+GdUVkO6WXyeZmRmGx98aW7nT/A9Tgow+K BuTg== X-Gm-Message-State: AOAM531J5e6SSiPQGky0l9e5B+n+8jem2PpHkJyL4h92rBITPnTnPr8A JOHnkCo9lmYPe9QUldvvgcllV3NhnG8= X-Google-Smtp-Source: ABdhPJwEFlPDtcLhTweHIToQmQ+86+BMy7KK2faBHrm/Me37/NzGEP7UX4YlPRBH6uuzKgfs3koF8Q== X-Received: by 2002:a17:906:1f8e:: with SMTP id t14mr51897233ejr.350.1609371172972; Wed, 30 Dec 2020 15:32:52 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id u19sm19630409ejg.16.2020.12.30.15.32.52 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Dec 2020 15:32:52 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 31 Dec 2020 00:31:47 +0100 Message-Id: <20201230233157.1055287-20-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> References: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 20/30] avcodec/opusdec: Mark decoder as init-threadsafe X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" Signed-off-by: Andreas Rheinhardt --- libavcodec/opusdec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/opusdec.c b/libavcodec/opusdec.c index 24e90a3761..f0d7ed62a1 100644 --- a/libavcodec/opusdec.c +++ b/libavcodec/opusdec.c @@ -716,5 +716,5 @@ AVCodec ff_opus_decoder = { .decode = opus_decode_packet, .flush = opus_decode_flush, .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY | AV_CODEC_CAP_CHANNEL_CONF, - .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, }; From patchwork Wed Dec 30 23:31:48 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24713 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 60D0944B882 for ; Thu, 31 Dec 2020 01:35:51 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id CCA6068AA16; Thu, 31 Dec 2020 01:33:05 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f47.google.com (mail-ej1-f47.google.com [209.85.218.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id BA6E668A987 for ; Thu, 31 Dec 2020 01:32:54 +0200 (EET) Received: by mail-ej1-f47.google.com with SMTP id j22so23636471eja.13 for ; Wed, 30 Dec 2020 15:32:54 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=jP7syGGCwoUaO9dZxGNpYz+ehk+MaqZDuEcu0sBJyyE=; b=QNXJoZpooa1o8k7Xnc61/iBdkEl+ZfIhXWE2UfHl0UhPst9ofxxP+aHVGn5Pae+cjF 724sd/fMMYRC3r0/hddsK1bsoTAHSrQW32/+4qtKFWFWAnFOgl6ii0+GC5W4f6dd+/15 fvl0jSLO2z8v9sjux/1r6hAe60Wl/HVA+fd+aZr9Kz/nXwE5bt+QB1hDGhyx+8MXnSvb YJna2l/MVnu5lz2Y5sM+LFkkCxxB2wIGM+aA92LTRSbbZKgZjRxkdGJu+nHyGq+Uk96C pgSvTkvA6mvtktrogarVtedYE4OGRBs67cKOO+hrldrcONxwFi22zA9DUNBvENm311c4 ktXQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=jP7syGGCwoUaO9dZxGNpYz+ehk+MaqZDuEcu0sBJyyE=; b=Y4d6+xToyEvV4pjpEEX8s+rAU1QEwP1VI5nMWuucprn/a/aop5IdR9J9I7ulx22AOF N0/f/0zpk9WGq2Y+0wjc437LsV65kEaG33UEN8+qcuaXieDf0UYgXsnlSveefmLXNUPZ EaD6ILJzcIJX7x0YMrCa/CECfc3VKBYw9NmXfs2Zt6bPSq8Pq7VOAbR12jjP7Y+DStpQ HQA2zwbiAV+dJt/x0QYuvL8nZBwbvwaOa/xJyonrOyQh8m24cgE8oB60HYSzBu5ghQn+ AnzutaFRuyfIz9otBuFBClsIh5liHwKG4kcPfawahfHXQv3bYyZvdiIdURN9B4NPWmNB 4FuA== X-Gm-Message-State: AOAM53179jLMBm4cBjy7ry9E1jVggxolMDAyD5waSmNFjUVJeLYDH0Cg WE/zY5sNEIASAUN4yeSsyk/qSzEYJVs= X-Google-Smtp-Source: ABdhPJws9wvDo7AZ+OxDFbl6Cy0dhQFsWz1rwDkH7PxUBNkDPVBzC7VoW33N7qqTNR9xYYDxJK/sPA== X-Received: by 2002:a17:906:d152:: with SMTP id br18mr47814390ejb.297.1609371173926; Wed, 30 Dec 2020 15:32:53 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id u19sm19630409ejg.16.2020.12.30.15.32.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Dec 2020 15:32:53 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 31 Dec 2020 00:31:48 +0100 Message-Id: <20201230233157.1055287-21-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> References: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 21/30] avcodec/qcelpdec: Mark decoder as init-threadsafe X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" Signed-off-by: Andreas Rheinhardt --- libavcodec/qcelpdec.c | 1 + 1 file changed, 1 insertion(+) diff --git a/libavcodec/qcelpdec.c b/libavcodec/qcelpdec.c index 4878af5a2c..823205bf55 100644 --- a/libavcodec/qcelpdec.c +++ b/libavcodec/qcelpdec.c @@ -799,4 +799,5 @@ AVCodec ff_qcelp_decoder = { .decode = qcelp_decode_frame, .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_CHANNEL_CONF, .priv_data_size = sizeof(QCELPContext), + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, }; From patchwork Wed Dec 30 23:31:49 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24714 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id BBA8C44B882 for ; Thu, 31 Dec 2020 01:36:00 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id F153C68AA87; Thu, 31 Dec 2020 01:33:06 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f41.google.com (mail-ej1-f41.google.com [209.85.218.41]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 6FD2168A7DE for ; Thu, 31 Dec 2020 01:32:55 +0200 (EET) Received: by mail-ej1-f41.google.com with SMTP id ga15so23692170ejb.4 for ; Wed, 30 Dec 2020 15:32:55 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=l6YSCl2+v4ZBzwzEinGnAfe7wuLPA+3MzzooUqaTl/E=; b=SBHa4oOarGWBlojRxY+N6tI0ZY5RoG0jj/XrjjviECMbu2pxr2O2L1OYnyrgQrEzpr a8WOBlr9MM4rY+syWsce8VXfzr0IEitFI/7ZJFUBkECCiTfgoPcA547HXDMqCV9OjmiL ZqFOEZeqQBrMKZjhAVwzNXykqRayXP6CtzWI9f/pYamdDavIOZ0tinIrMtnVwTiuOfoJ nRXbO9lXNkXfTKUniOzALfEqfWiWyB9ljNMLcnVGJ/Y0DMjwVRKyyS23RJko10xlJVDp HnCQ6l+Jz/WK69tPdoZTmqk2kjfzBC6SeenaESEYT8i+bPm3IVdNpNJl3Tlr0CZSVdnB GOoQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=l6YSCl2+v4ZBzwzEinGnAfe7wuLPA+3MzzooUqaTl/E=; b=qCImvfTmxkbmZCTL7+2uLJJzOtAxEy2cw2M+hJR5nkiwiNz6m9KbHTDL62ChabR4tL 5FafNnogMkti0dUS1VcndpG3Ug7FVogqHStSEhQ/6MHZn5x455YHvsI7Nb4MM7dFkGpT hyn1U0vJytZmr+VLSWfJd6twERR9xtm5H7hpLu3lABnNnBq8ZvAsAwwasSBp6dJ3bHm9 WUTtG/4iWDPbgNnXLGIDss21iI4J0p1Ub99ImhZsws/02vEHmCcZjpZMOwCaCyBmBsyE 2+5a3IY88HoHlhqzkCcU8lubMBamzBTh3jvvQz56XRqaWTOAt6Bkl86nLlGSKLDIoY4m PpDA== X-Gm-Message-State: AOAM532PgLV8w20KqZIOnLiX2/uokCyy0vIL/MkUPVWkcUBVCETUknO3 NJxrhU5diN25KkkU37I1Oja8lK2vOoE= X-Google-Smtp-Source: ABdhPJwBcSMAtwMOTTP3F5EfDR+M2Sk0iFJmDN7m4KQ4EcB6OZ9H3Szo9ysTCS4Q32joZNElnV/+3w== X-Received: by 2002:a17:906:d81:: with SMTP id m1mr51285937eji.550.1609371174795; Wed, 30 Dec 2020 15:32:54 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id u19sm19630409ejg.16.2020.12.30.15.32.54 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Dec 2020 15:32:54 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 31 Dec 2020 00:31:49 +0100 Message-Id: <20201230233157.1055287-22-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> References: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 22/30] avcodec/wmavoice: Mark decoder as init-threadsafe X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" It is init-threadsafe since b9c1ab89078d862e0146c9d7ed277addd770e3a3 and except on MIPS even before that due to its use of ff_thread_once() for static initialization. Signed-off-by: Andreas Rheinhardt --- libavcodec/wmavoice.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/wmavoice.c b/libavcodec/wmavoice.c index a588bb6c84..dfe4975277 100644 --- a/libavcodec/wmavoice.c +++ b/libavcodec/wmavoice.c @@ -2006,6 +2006,6 @@ AVCodec ff_wmavoice_decoder = { .close = wmavoice_decode_end, .decode = wmavoice_decode_packet, .capabilities = AV_CODEC_CAP_SUBFRAMES | AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY, - .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, .flush = wmavoice_flush, }; From patchwork Wed Dec 30 23:31:50 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24715 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 4CF5B44B882 for ; Thu, 31 Dec 2020 01:36:10 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2EBC068A7C9; Thu, 31 Dec 2020 01:33:08 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ed1-f49.google.com (mail-ed1-f49.google.com [209.85.208.49]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 8AE0568A8F3 for ; Thu, 31 Dec 2020 01:32:56 +0200 (EET) Received: by mail-ed1-f49.google.com with SMTP id g24so16801861edw.9 for ; Wed, 30 Dec 2020 15:32:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=eX55hwzP3tf0zkFnqOjaiMF6FdCuDk7WAPJSA58cPDs=; b=rmruMUhP08eOH5apnK3wexgaQs/hvZ61PDmwzaUPVpWCJsaF+zQ3vmZKvv+3HuhO+k 0hM9+6idqCJ3u85wWv7oprE35U/YLS9zVF08IymtHq6Cyn2CHOFTPd+8A5kIdJk1VaDu 577wQgV56OjrBj9StIhpZ0VVA/BsrAuTcLGi+R+Dgj6J5CoBrDU/QUgmAqR1jgr+6hUF 46pHFj7T0LO10htR4Tucd7jXolIRctPPErHO1XwvZkCZshjqDl3q9BNu90PRMUdtJ2ap hVBGUQ+k+wg8r7j94PolYVbdPdLVGKA0qWUEoCo0BhNeopP6DunOn9evHjF3wrf0kcQ3 wUVw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=eX55hwzP3tf0zkFnqOjaiMF6FdCuDk7WAPJSA58cPDs=; b=oOj0A9rzRsswKpk8yjywRtOLfUaGyMn2U2ucUHn60tCujv1mm1E1xIelV+ZUIJAns8 56+IrdnRg1SzZcgxWI4/OgbaugnYajpBKZ/6Wxmp7+TfiYNmtDjuhguDA5BjrVbdKdoh 7f1hP1TYFHWVkdk3svFIkoJ3I7wsO3Xoc7PXqkZr27Vm9enFUW9DUjB3sM+g7o9RoBtu H+JmTVDeyJzOMzSeMoqlWVGCW7evhqhL3Ap4lirFpYNDuQXcpAqs6J6hh4odsB289A/T OZsoCHA8puDVHSZix1jNEJnOcfn4pNX242kOaPAoZRRGrtaf/+e/GkOQhIGz8gC0yRCA FFHw== X-Gm-Message-State: AOAM533NFG7+vhN4/D6tcJjqJgsrsY+Mmoe+KimOE3MyKVUz0nuy9IKJ 00BWyNI6MC6k5TbeaUe8rfTAyftWkIw= X-Google-Smtp-Source: ABdhPJz434w1bymcNLK05Z985BY0a2+I/yo/yA6aZgozYfz/X5w207uHEqd2BC//iY9tdDYDNlSMWg== X-Received: by 2002:a50:fe0e:: with SMTP id f14mr53552744edt.159.1609371175867; Wed, 30 Dec 2020 15:32:55 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id u19sm19630409ejg.16.2020.12.30.15.32.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Dec 2020 15:32:55 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 31 Dec 2020 00:31:50 +0100 Message-Id: <20201230233157.1055287-23-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> References: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 23/30] avcodec/qdmc: Mark decoder as init-threadsafe X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" It already uses ff_thread_once() to initialize its static data. Signed-off-by: Andreas Rheinhardt --- libavcodec/qdmc.c | 1 + 1 file changed, 1 insertion(+) diff --git a/libavcodec/qdmc.c b/libavcodec/qdmc.c index 94681a0b6b..a8c930f0e7 100644 --- a/libavcodec/qdmc.c +++ b/libavcodec/qdmc.c @@ -736,4 +736,5 @@ AVCodec ff_qdmc_decoder = { .decode = qdmc_decode_frame, .flush = qdmc_flush, .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_CHANNEL_CONF, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, }; From patchwork Wed Dec 30 23:31:51 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24716 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id E791744BA0E for ; Thu, 31 Dec 2020 01:36:19 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 33B9468AA4D; Thu, 31 Dec 2020 01:33:09 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f47.google.com (mail-ej1-f47.google.com [209.85.218.47]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 4F18B68A822 for ; Thu, 31 Dec 2020 01:32:57 +0200 (EET) Received: by mail-ej1-f47.google.com with SMTP id j22so23636555eja.13 for ; Wed, 30 Dec 2020 15:32:57 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=VePMwIypStPf1qQ6NXu3M2iRGZsp0i2Ahq1Fqq3mqOw=; b=NXX7ctLLfV0wPH1Bm8osSo3aRWuqbdFUsxicL4+W6OWaMFeAQYpx3ZK9+EaNkDrdf2 gGIcHhNVoFa9ZpEFS33KjWYmtPCWKtrYdwylFYvT0K30LdRUY2QTp92AFYmhgegAe2vJ RMu6tG2xKrFcI7ZB/Nk25bIF/j0ufcD1FcuWgUC4Zt2u+Jcm6argetOkQR+n2omIcZb/ f0dr7kfiLP+//rYfKIR7MgCvGiPld/1xGqxCODveJ2Hk6EW2Sy/BCbM0EISg6/20V1Ha IMcKAi6iXZN1XwyVuyUIB+NiPkrgTQYTxYejXgKtgQ7BdqyZFknLxYtXfgdQ3LMMHKTt VZRg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=VePMwIypStPf1qQ6NXu3M2iRGZsp0i2Ahq1Fqq3mqOw=; b=Iheo60hq2OrnhaGeIFxY202Zri4XysAeim0Id6wBB9kvkzMMWPbLgs8rtiYBB6KGZ6 n1jLRcYPkGHSrY/jGWG4fe73MBJLaG0exYb/XB7S3ST/ZVtaNvz9jVfeGn48pVMCBfWh mvTVTQGKKqxqVJ2ipAPufRuNYOHk9b2qLjw1zLY2lykaFMDCnPCjqBKseebRR62E9uD3 4XbN4MkO5nlpnDaFo/VCW0lYYxeTxIoyMGDrxy5/i77HepXdg2+vkF5h58HdlINgd8oR ykvVjHno18Ispn7Jnn2GRv5NQ2+xIjHzyccWbvAuDlepQhCQ9JmQ0f/iNR7RJ5LdnH71 c4+g== X-Gm-Message-State: AOAM532FsM73ShM6sRyZZ2ALTKTDLU8Y2ZxymR2CKWPQOlI9YQpCtq1W aO7c4W+VGjpM6it7q+EOj/tHS3r8hBM= X-Google-Smtp-Source: ABdhPJxz1gyPP7eWL2Ng5URKglUYPLg+6hnfeZ7lFjug1Ojb41qSrXJpQPv1tOfquQ7yN6IxY7Bxjg== X-Received: by 2002:a17:906:3593:: with SMTP id o19mr50538396ejb.377.1609371176662; Wed, 30 Dec 2020 15:32:56 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id u19sm19630409ejg.16.2020.12.30.15.32.55 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Dec 2020 15:32:56 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 31 Dec 2020 00:31:51 +0100 Message-Id: <20201230233157.1055287-24-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> References: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 24/30] avcodec/wmalosslessdec: Mark decoder as init-threadsafe X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" Signed-off-by: Andreas Rheinhardt --- libavcodec/wmalosslessdec.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/libavcodec/wmalosslessdec.c b/libavcodec/wmalosslessdec.c index a8fd99774e..15ceb74f67 100644 --- a/libavcodec/wmalosslessdec.c +++ b/libavcodec/wmalosslessdec.c @@ -1333,7 +1333,7 @@ AVCodec ff_wmalossless_decoder = { .decode = decode_packet, .flush = flush, .capabilities = AV_CODEC_CAP_SUBFRAMES | AV_CODEC_CAP_DR1 | AV_CODEC_CAP_DELAY, - .caps_internal = FF_CODEC_CAP_INIT_CLEANUP, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE | FF_CODEC_CAP_INIT_CLEANUP, .sample_fmts = (const enum AVSampleFormat[]) { AV_SAMPLE_FMT_S16P, AV_SAMPLE_FMT_S32P, AV_SAMPLE_FMT_NONE }, From patchwork Wed Dec 30 23:31:52 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24717 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 926C244BA0E for ; Thu, 31 Dec 2020 01:36:29 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 137F268AA47; Thu, 31 Dec 2020 01:33:10 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f43.google.com (mail-ej1-f43.google.com [209.85.218.43]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E9EE568A987 for ; Thu, 31 Dec 2020 01:32:58 +0200 (EET) Received: by mail-ej1-f43.google.com with SMTP id jx16so23638388ejb.10 for ; Wed, 30 Dec 2020 15:32:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=mML2mI3DpkdlxnxL56UbXUAh0/kYEdV6+XNYm0fsaaE=; b=gTcqTIsCDhsdjDPQHr8lV6FIi3AzPH4n+2LL6qSVWRI+N+8tFzo0Aivo5+KqiXnmLQ 7Agbo2ut+wapt8b3UhcnjNVBWdOfN9NNdg5oF24nS09Cm2dlqYm5qAwoP7HQKo6v/EwI ZCDEoB97cXCvsA6Ms+Dm0Y27o8ZA3NHC4RzjwuCxgFhRIuAUYAn1SCIhL5fkyrhVapma 7sfprOwysLnuP3T3JW/PTmRD1NlcWdzVjgSbNa7ttqUPPtZOQ5ZlSTAVIybYU1eaoThE U+jf0ke7hYwFFJrRajIscRsrHtxY9vpY6pNyHboakXmSlBvG0fCt4XdbNNNN2U+L7nZE p+ng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=mML2mI3DpkdlxnxL56UbXUAh0/kYEdV6+XNYm0fsaaE=; b=U5N5EUQzLlHNTnKvrqoJmSSwD2SJxoefYJ9//qOCQEh+5rLl8Zs1e4HX2McvpjWyrG k1LcMAJAhP4VkQ1HdiS/tl6Top9NsOW8bYEHDIpfcLDGu8BEeE2P/qfUalxJaEA56bfk iPRrG8D0pJ2WvLfZP0u3c4ZwpyFtiDO9RU3DgrWU5HX8hvDShWWoaFTMbcihG5JTBoQW J12asYp8Hu5b+LcMjuKkzfRBGKtf/RugNp19h/tueotOIcBGk5H/6ZGfrfs1Pu5vnQrQ X1Fe4jXDiGWQoN5zShAyJ2E3SfFv+Ftv0qvPE6JBtqDDnW5DTASipW5NyG0U5a6yKfxj lbcQ== X-Gm-Message-State: AOAM53062e888k8LX5jtMfsK3T6pwF01W1l/XWMb4DybmBHsYlW9Med0 UHFTkBiXDvKSjP6wAtyqCnG1NjZpJFU= X-Google-Smtp-Source: ABdhPJxrq19u3u3+8Yi0B4yBQfG3X/c3X2/CcRFujcIIAvcxCH8Ra46qB332gx1+Q0GMz4zjdztwgw== X-Received: by 2002:a17:906:d28f:: with SMTP id ay15mr49540020ejb.327.1609371177529; Wed, 30 Dec 2020 15:32:57 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id u19sm19630409ejg.16.2020.12.30.15.32.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Dec 2020 15:32:57 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 31 Dec 2020 00:31:52 +0100 Message-Id: <20201230233157.1055287-25-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> References: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 25/30] avcodec/dirac_arith: Make table only used here static X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" Signed-off-by: Andreas Rheinhardt --- libavcodec/dirac_arith.c | 6 +++--- libavcodec/dirac_arith.h | 1 - 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/libavcodec/dirac_arith.c b/libavcodec/dirac_arith.c index 36142fe198..69b6280230 100644 --- a/libavcodec/dirac_arith.c +++ b/libavcodec/dirac_arith.c @@ -28,7 +28,7 @@ #include "dirac_arith.h" -const uint16_t ff_dirac_prob[256] = { +static const uint16_t dirac_prob[256] = { 0, 2, 5, 8, 11, 15, 20, 24, 29, 35, 41, 47, 53, 60, 67, 74, 82, 89, 97, 106, 114, 123, 132, 141, @@ -88,8 +88,8 @@ av_cold void ff_dirac_init_arith_tables(void) int i; for (i = 0; i < 256; i++) { - ff_dirac_prob_branchless[i][0] = ff_dirac_prob[255-i]; - ff_dirac_prob_branchless[i][1] = -ff_dirac_prob[i]; + ff_dirac_prob_branchless[i][0] = dirac_prob[255-i]; + ff_dirac_prob_branchless[i][1] = -dirac_prob[i]; } } diff --git a/libavcodec/dirac_arith.h b/libavcodec/dirac_arith.h index 79526a7ca3..350a58fca6 100644 --- a/libavcodec/dirac_arith.h +++ b/libavcodec/dirac_arith.h @@ -86,7 +86,6 @@ typedef struct { } DiracArith; extern const uint8_t ff_dirac_next_ctx[DIRAC_CTX_COUNT]; -extern const uint16_t ff_dirac_prob[256]; extern int16_t ff_dirac_prob_branchless[256][2]; static inline void renorm(DiracArith *c) From patchwork Wed Dec 30 23:31:53 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24718 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 624E044BA0E for ; Thu, 31 Dec 2020 01:36:39 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id DCA1C68AAFB; Thu, 31 Dec 2020 01:33:10 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ed1-f50.google.com (mail-ed1-f50.google.com [209.85.208.50]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 1973768A99E for ; Thu, 31 Dec 2020 01:32:58 +0200 (EET) Received: by mail-ed1-f50.google.com with SMTP id c7so16828171edv.6 for ; Wed, 30 Dec 2020 15:32:58 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=V9Vj4LlzGebGkSreVVc/TH/p/jkUAj7/HGhvqTX3csk=; b=H6qOlbZJl5lIPsqSNxe8vRcxSvgSftQ2DevaMUV9n64tHhkBIEUGFjqg6pzteZELJr Y5dRyXRH4+Gt6k4/RhYRfAXTlme3m0/rhdMHV39X/PrA7sRLXMmpRGdexl3YYBcxnbfx oTOtSIalw1+8rPh2OCLB3MoVlfGXP0GHsRybjccun2hy+SMGPkEYyID5xRnNoj9J4qtT aWmAT8DtKEtDfKbKSUgs0naxfCcV8Ax3JL0Z8nJSHKiWbwv8JH9+qCQEvnD/7P766uQK zoOJsU+bO84o+N0EndjfmL3xU1uekFISP8jLcgU9yZnEkkhhUfkFnaTPQ264oHZVMw/r BmGg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=V9Vj4LlzGebGkSreVVc/TH/p/jkUAj7/HGhvqTX3csk=; b=anuM978RhPoBbeSpGbV9e6cMPS92wHz8Xg6DDg6g6yz442VnVtA+8Szw50zsZTiPUV IsMviEYaqF3TvgO/sNKKxg1BUicuE7BvrD0Hd8xd30VYNGFQidI/O/LW14ln7oc7ivsc OQ4N/bDxm1al5c7J00wNhMXsGm3VfZ6sbCPbC33SnYf0Y4WTIwogclcZig2RGuv/GsYH 95Sic6XbKrgEaXXpqcAjE+iD2kCRAI8zbSw3gb+eL+8Sl/vtMjaQp9IR2BU7O24+DyNs HCL1AsMVJOR3SzyBg+Syr3/45vMUaJ9ebItyoqcTmGv56ae1Aumg1FMqda7IzxSQV+Wx roKA== X-Gm-Message-State: AOAM533sBNZdAbZoukbSyEL4dVKY5UEMUVw9+bO0qtBgxMzaHWqYLWGs wyQNKlNjL9+yeeI+wUZbkK1UwC3m7H8= X-Google-Smtp-Source: ABdhPJzZ3NOPkz2cfIpg0Jah7v9v5GIbRlwWSuaZNPeFqA2H3e2HArtImSRAgKJ/QIKk+80+8Et5Nw== X-Received: by 2002:a50:fb1a:: with SMTP id d26mr52562090edq.101.1609371178383; Wed, 30 Dec 2020 15:32:58 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id u19sm19630409ejg.16.2020.12.30.15.32.57 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Dec 2020 15:32:57 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 31 Dec 2020 00:31:53 +0100 Message-Id: <20201230233157.1055287-26-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> References: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 26/30] avcodec/dv: Don't pretend VLC allocation can't fail X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" It can and therefore we switch from a heap allocated VLC table to a VLC initialized via the mechanism for static VLCs, but without an actual static VLC. Signed-off-by: Andreas Rheinhardt --- libavcodec/dv.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libavcodec/dv.c b/libavcodec/dv.c index 9c75cfd877..7c1ec6e0b2 100644 --- a/libavcodec/dv.c +++ b/libavcodec/dv.c @@ -202,7 +202,8 @@ av_cold int ff_dvvideo_init(AVCodecContext *avctx) int i, j; if (!done) { - VLC dv_vlc; + VLC_TYPE vlc_buf[FF_ARRAY_ELEMS(ff_dv_rl_vlc)][2] = { 0 }; + VLC dv_vlc = { .table = vlc_buf, .table_allocated = FF_ARRAY_ELEMS(vlc_buf) }; uint16_t new_dv_vlc_bits[NB_DV_VLC * 2]; uint8_t new_dv_vlc_len[NB_DV_VLC * 2]; uint8_t new_dv_vlc_run[NB_DV_VLC * 2]; @@ -232,7 +233,7 @@ av_cold int ff_dvvideo_init(AVCodecContext *avctx) /* NOTE: as a trick, we use the fact the no codes are unused * to accelerate the parsing of partial codes */ init_vlc(&dv_vlc, TEX_VLC_BITS, j, new_dv_vlc_len, - 1, 1, new_dv_vlc_bits, 2, 2, 0); + 1, 1, new_dv_vlc_bits, 2, 2, INIT_VLC_USE_NEW_STATIC); av_assert1(dv_vlc.table_size == 1664); for (i = 0; i < dv_vlc.table_size; i++) { @@ -251,7 +252,6 @@ av_cold int ff_dvvideo_init(AVCodecContext *avctx) ff_dv_rl_vlc[i].level = level; ff_dv_rl_vlc[i].run = run; } - ff_free_vlc(&dv_vlc); } s->avctx = avctx; From patchwork Wed Dec 30 23:31:54 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24719 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id 3D15144BA0E for ; Thu, 31 Dec 2020 01:36:48 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id D4AC068AA68; Thu, 31 Dec 2020 01:33:11 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f46.google.com (mail-ej1-f46.google.com [209.85.218.46]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 2695668AA07 for ; Thu, 31 Dec 2020 01:33:00 +0200 (EET) Received: by mail-ej1-f46.google.com with SMTP id g20so23726967ejb.1 for ; Wed, 30 Dec 2020 15:32:59 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=RR258NAwtT0V4/Hn1kFffv+uV4vYR/aI9XKrTn6MP74=; b=WUYYF8ggjxSbw++LHcLKhBF0Xu5WZbvi5VbLv9SLSAEsLCRoePi74bIG7IZbQxR0f8 Kbotf6J4Nz41MDY5Qamo5FgQ7RuRwxxhcfnCq4zTTlvKCwWOsosSBxhjwo7Kjl3IE0Id BLqYEn8poXUdzodDeMddRkHiXRfSYAgpG0o+nyBlfVqr0fYVwxjZq8qMsyehpO552sJZ 22TFTi+NTX1Ts8hqUPXiJNYrqTv0YT2QNUb2plsMchi+Z6aMIznBwJntA4kyqhsIRGSe j79YZpfUiw9yaF98OwFplF/qCF0wJ2IRBBaJgpqJWZxXWfMFhnz4/BL09VaN/V+pDOR5 0FkQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=RR258NAwtT0V4/Hn1kFffv+uV4vYR/aI9XKrTn6MP74=; b=LljHLFNoxomNrojm7kIZ5iq965t9m8TTPJxPXdXsu2SWSY1uFze9nRxxQ9p6/UcPKM RFHoIiQTtnm2kk07/MUITsVDkWFzMeK875H+25qnNuH/YFPbH/GG+jgjAtMK0qj6bdLF i5u8fP9EjONVJCR1GzhkOdUGoIrNkw3vGgTE9bRN8qXSbeTasZ7GnmonTT2PyDFjtBcp Nq1hclWXMGJrPsITCjzj/D/KTe6Yis/z+N2IOATCJadeIRQmFaDxE8JE7lhvV80RfJuX BH6Ieuq6EnYqukLzwEJCwYDCiiESq/HXII9FbmcWs/efEXWDaH6qpt6nzu0s4uavdb4b dFxQ== X-Gm-Message-State: AOAM533R4jVVe2J+6X2VxR/hLhNmgrIL5AqT1GyKyvm5HrRohyPcAvmX BcBhEj80fbu6/RzEq0OWTGg/fWYCtms= X-Google-Smtp-Source: ABdhPJwCKrcaTKLhyXrWT9z+AcKQVY/1+rypUgDB8VTqMQaxIElUTvXX2fsWIZP7y3Q+gWukhgYhDg== X-Received: by 2002:a17:906:eb5b:: with SMTP id mc27mr50725348ejb.163.1609371179253; Wed, 30 Dec 2020 15:32:59 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id u19sm19630409ejg.16.2020.12.30.15.32.58 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Dec 2020 15:32:58 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 31 Dec 2020 00:31:54 +0100 Message-Id: <20201230233157.1055287-27-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> References: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 27/30] avcodec/dv: Don't initialize RL VLC for encoder X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" Said RL VLC is only used by the decoder, ergo don't initialize it for the encoder and move the whole code and the RL VLC table itself to dvdec.c. Signed-off-by: Andreas Rheinhardt --- libavcodec/dv.c | 59 ------------------------------------ libavcodec/dv.h | 4 --- libavcodec/dvdec.c | 74 +++++++++++++++++++++++++++++++++++++++++++--- 3 files changed, 70 insertions(+), 67 deletions(-) diff --git a/libavcodec/dv.c b/libavcodec/dv.c index 7c1ec6e0b2..8a4cac859e 100644 --- a/libavcodec/dv.c +++ b/libavcodec/dv.c @@ -48,9 +48,6 @@ #include "put_bits.h" #include "simple_idct.h" -/* XXX: also include quantization */ -RL_VLC_ELEM ff_dv_rl_vlc[1664]; - static inline void dv_calc_mb_coordinates(const AVDVProfile *d, int chan, int seq, int slot, uint16_t *tbl) { @@ -198,65 +195,9 @@ int ff_dv_init_dynamic_tables(DVVideoContext *ctx, const AVDVProfile *d) av_cold int ff_dvvideo_init(AVCodecContext *avctx) { DVVideoContext *s = avctx->priv_data; - static int done = 0; - int i, j; - - if (!done) { - VLC_TYPE vlc_buf[FF_ARRAY_ELEMS(ff_dv_rl_vlc)][2] = { 0 }; - VLC dv_vlc = { .table = vlc_buf, .table_allocated = FF_ARRAY_ELEMS(vlc_buf) }; - uint16_t new_dv_vlc_bits[NB_DV_VLC * 2]; - uint8_t new_dv_vlc_len[NB_DV_VLC * 2]; - uint8_t new_dv_vlc_run[NB_DV_VLC * 2]; - int16_t new_dv_vlc_level[NB_DV_VLC * 2]; - - done = 1; - - /* it's faster to include sign bit in a generic VLC parsing scheme */ - for (i = 0, j = 0; i < NB_DV_VLC; i++, j++) { - new_dv_vlc_bits[j] = ff_dv_vlc_bits[i]; - new_dv_vlc_len[j] = ff_dv_vlc_len[i]; - new_dv_vlc_run[j] = ff_dv_vlc_run[i]; - new_dv_vlc_level[j] = ff_dv_vlc_level[i]; - - if (ff_dv_vlc_level[i]) { - new_dv_vlc_bits[j] <<= 1; - new_dv_vlc_len[j]++; - - j++; - new_dv_vlc_bits[j] = (ff_dv_vlc_bits[i] << 1) | 1; - new_dv_vlc_len[j] = ff_dv_vlc_len[i] + 1; - new_dv_vlc_run[j] = ff_dv_vlc_run[i]; - new_dv_vlc_level[j] = -ff_dv_vlc_level[i]; - } - } - - /* NOTE: as a trick, we use the fact the no codes are unused - * to accelerate the parsing of partial codes */ - init_vlc(&dv_vlc, TEX_VLC_BITS, j, new_dv_vlc_len, - 1, 1, new_dv_vlc_bits, 2, 2, INIT_VLC_USE_NEW_STATIC); - av_assert1(dv_vlc.table_size == 1664); - - for (i = 0; i < dv_vlc.table_size; i++) { - int code = dv_vlc.table[i][0]; - int len = dv_vlc.table[i][1]; - int level, run; - - if (len < 0) { // more bits needed - run = 0; - level = code; - } else { - run = new_dv_vlc_run[code] + 1; - level = new_dv_vlc_level[code]; - } - ff_dv_rl_vlc[i].len = len; - ff_dv_rl_vlc[i].level = level; - ff_dv_rl_vlc[i].run = run; - } - } s->avctx = avctx; avctx->chroma_sample_location = AVCHROMA_LOC_TOPLEFT; return 0; } - diff --git a/libavcodec/dv.h b/libavcodec/dv.h index 0205d72347..19290aa382 100644 --- a/libavcodec/dv.h +++ b/libavcodec/dv.h @@ -96,10 +96,6 @@ enum dv_pack_type { */ #define DV_MAX_BPM 8 -#define TEX_VLC_BITS 10 - -extern RL_VLC_ELEM ff_dv_rl_vlc[1664]; - int ff_dv_init_dynamic_tables(DVVideoContext *s, const AVDVProfile *d); int ff_dvvideo_init(AVCodecContext *avctx); diff --git a/libavcodec/dvdec.c b/libavcodec/dvdec.c index c526091eb4..85619a42a8 100644 --- a/libavcodec/dvdec.c +++ b/libavcodec/dvdec.c @@ -127,6 +127,70 @@ static const uint16_t dv_iweight_720_c[64] = { 394, 406, 418, 438, 418, 464, 464, 492, }; +#define TEX_VLC_BITS 10 + +/* XXX: also include quantization */ +static RL_VLC_ELEM dv_rl_vlc[1664]; + +static void dv_init_static(void) +{ + VLC_TYPE vlc_buf[FF_ARRAY_ELEMS(dv_rl_vlc)][2] = { 0 }; + VLC dv_vlc = { .table = vlc_buf, .table_allocated = FF_ARRAY_ELEMS(vlc_buf) }; + uint16_t new_dv_vlc_bits[NB_DV_VLC * 2]; + uint8_t new_dv_vlc_len[NB_DV_VLC * 2]; + uint8_t new_dv_vlc_run[NB_DV_VLC * 2]; + int16_t new_dv_vlc_level[NB_DV_VLC * 2]; + int i, j; + static int done = 0; + + if (done) + return; + + done = 1; + + /* it's faster to include sign bit in a generic VLC parsing scheme */ + for (i = 0, j = 0; i < NB_DV_VLC; i++, j++) { + new_dv_vlc_bits[j] = ff_dv_vlc_bits[i]; + new_dv_vlc_len[j] = ff_dv_vlc_len[i]; + new_dv_vlc_run[j] = ff_dv_vlc_run[i]; + new_dv_vlc_level[j] = ff_dv_vlc_level[i]; + + if (ff_dv_vlc_level[i]) { + new_dv_vlc_bits[j] <<= 1; + new_dv_vlc_len[j]++; + + j++; + new_dv_vlc_bits[j] = (ff_dv_vlc_bits[i] << 1) | 1; + new_dv_vlc_len[j] = ff_dv_vlc_len[i] + 1; + new_dv_vlc_run[j] = ff_dv_vlc_run[i]; + new_dv_vlc_level[j] = -ff_dv_vlc_level[i]; + } + } + + /* NOTE: as a trick, we use the fact the no codes are unused + * to accelerate the parsing of partial codes */ + init_vlc(&dv_vlc, TEX_VLC_BITS, j, new_dv_vlc_len, + 1, 1, new_dv_vlc_bits, 2, 2, INIT_VLC_USE_NEW_STATIC); + av_assert1(dv_vlc.table_size == 1664); + + for (int i = 0; i < dv_vlc.table_size; i++) { + int code = dv_vlc.table[i][0]; + int len = dv_vlc.table[i][1]; + int level, run; + + if (len < 0) { // more bits needed + run = 0; + level = code; + } else { + run = new_dv_vlc_run[code] + 1; + level = new_dv_vlc_level[code]; + } + dv_rl_vlc[i].len = len; + dv_rl_vlc[i].level = level; + dv_rl_vlc[i].run = run; + } +} + static void dv_init_weight_tables(DVVideoContext *ctx, const AVDVProfile *d) { int j, i, c, s; @@ -194,6 +258,8 @@ static av_cold int dvvideo_decode_init(AVCodecContext *avctx) s->idct_put[0] = s->idsp.idct_put; s->idct_put[1] = ff_simple_idct248_put; + dv_init_static(); + return ff_dvvideo_init(avctx); } @@ -224,14 +290,14 @@ static void dv_decode_ac(GetBitContext *gb, BlockInfo *mb, int16_t *block) pos, SHOW_UBITS(re, gb, 16), re_index); /* our own optimized GET_RL_VLC */ index = NEG_USR32(re_cache, TEX_VLC_BITS); - vlc_len = ff_dv_rl_vlc[index].len; + vlc_len = dv_rl_vlc[index].len; if (vlc_len < 0) { index = NEG_USR32((unsigned) re_cache << TEX_VLC_BITS, -vlc_len) + - ff_dv_rl_vlc[index].level; + dv_rl_vlc[index].level; vlc_len = TEX_VLC_BITS - vlc_len; } - level = ff_dv_rl_vlc[index].level; - run = ff_dv_rl_vlc[index].run; + level = dv_rl_vlc[index].level; + run = dv_rl_vlc[index].run; /* gotta check if we're still within gb boundaries */ if (re_index + vlc_len > last_index) { From patchwork Wed Dec 30 23:31:55 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24720 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id B521A44BA0E for ; Thu, 31 Dec 2020 01:36:57 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 0956768AA2F; Thu, 31 Dec 2020 01:33:13 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f52.google.com (mail-ej1-f52.google.com [209.85.218.52]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id E899A68AA42 for ; Thu, 31 Dec 2020 01:33:00 +0200 (EET) Received: by mail-ej1-f52.google.com with SMTP id ce23so23673381ejb.8 for ; Wed, 30 Dec 2020 15:33:00 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=K4UqQUQWDIIZrMcTX5R+tLHSTm+C1uZeZ3TrW64TEW8=; b=o2cngrW41eeRDXSQmrofzJiL2jgdycxQgNRNNOdrNeJu2XLJ4aRdr8Vapm55sdnaxx wDYSN07NVZAoJ7dkg2HXbjq0JMWmDM+uCcPR5TDn5maR3tQfJa2L6zgZk5ep1o7AJfw+ tePj0EPpBM3mp41zrWEk0LvjRcoPCPFzi2D231CoR3K+2qZ65DNhCeolfdvngawVnsP2 Zgql5+RKVtvHh0ohTtQ8yK/uqpiGooxbBWkb7vKMmcSzpnTVW8ZRiwgn5LuAzjpmD3d3 +2nUEN9lMPvzIu7pUK0LuhH9LRdXl6Uy/kO1sSZf4QJs8U0yI1rpiwZb+aay6DqiFFPt Jn5Q== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=K4UqQUQWDIIZrMcTX5R+tLHSTm+C1uZeZ3TrW64TEW8=; b=TVgWdjmF7quwd1JbHpPlsmobec9ljyAb7NbAK2y/PB4Svji0XkZXnZjoSvpKFzINqA iHOSrWEA6csko8kvtCJnwLd0A/JcQ+DjE92NydOPiRn8ktuYZlABkWh0KTGrgrM2/3r5 DfPK0mPgaOACkeOgnEjMFFpOPvDqgza3Bycj5UJKAyg9X1kLBp8/hqtxrNba4nsuHahI JJwOrfXJ0146bGHD2oZqcxyMFsDcyrzqgoPtzBxB9YZxfeJq0dxzJYHjNtYqybunm/Pf 2rK7X0d9jjaGmuZsO50NQ118KAw8YfhmkpiUnEIhRFa8Z5Ecm5xr8jyst9xVPkdrY7iK 58ew== X-Gm-Message-State: AOAM531pAaFgwrwstlEB5+8Y4dm2q6Rqq3zxKF46K/CRRJQgUUUcqYlW ACU/s2YXxG9pm+slhXTdEqohYXVC5b4= X-Google-Smtp-Source: ABdhPJw7vCMIE4eSE50Uiupi7NZvuXxenVq+Au7FrBy8cMEh4NL9QTUqfA6TCdeW28nsnGcQbBLrOg== X-Received: by 2002:a17:907:20cc:: with SMTP id qq12mr53651050ejb.316.1609371180331; Wed, 30 Dec 2020 15:33:00 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id u19sm19630409ejg.16.2020.12.30.15.32.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Dec 2020 15:32:59 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 31 Dec 2020 00:31:55 +0100 Message-Id: <20201230233157.1055287-28-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> References: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 28/30] avcodec/dvdec: Make decoder init-threadsafe X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" Signed-off-by: Andreas Rheinhardt --- libavcodec/dvdec.c | 11 ++++------- 1 file changed, 4 insertions(+), 7 deletions(-) diff --git a/libavcodec/dvdec.c b/libavcodec/dvdec.c index 85619a42a8..e36df10d1b 100644 --- a/libavcodec/dvdec.c +++ b/libavcodec/dvdec.c @@ -39,6 +39,7 @@ #include "libavutil/imgutils.h" #include "libavutil/internal.h" #include "libavutil/pixdesc.h" +#include "libavutil/thread.h" #include "avcodec.h" #include "dv.h" @@ -141,12 +142,6 @@ static void dv_init_static(void) uint8_t new_dv_vlc_run[NB_DV_VLC * 2]; int16_t new_dv_vlc_level[NB_DV_VLC * 2]; int i, j; - static int done = 0; - - if (done) - return; - - done = 1; /* it's faster to include sign bit in a generic VLC parsing scheme */ for (i = 0, j = 0; i < NB_DV_VLC; i++, j++) { @@ -239,6 +234,7 @@ static void dv_init_weight_tables(DVVideoContext *ctx, const AVDVProfile *d) static av_cold int dvvideo_decode_init(AVCodecContext *avctx) { + static AVOnce init_static_once = AV_ONCE_INIT; DVVideoContext *s = avctx->priv_data; int i; @@ -258,7 +254,7 @@ static av_cold int dvvideo_decode_init(AVCodecContext *avctx) s->idct_put[0] = s->idsp.idct_put; s->idct_put[1] = ff_simple_idct248_put; - dv_init_static(); + ff_thread_once(&init_static_once, dv_init_static); return ff_dvvideo_init(avctx); } @@ -694,4 +690,5 @@ AVCodec ff_dvvideo_decoder = { .decode = dvvideo_decode_frame, .capabilities = AV_CODEC_CAP_DR1 | AV_CODEC_CAP_FRAME_THREADS | AV_CODEC_CAP_SLICE_THREADS, .max_lowres = 3, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, }; From patchwork Wed Dec 30 23:31:56 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24721 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id CDE4D44BA0E for ; Thu, 31 Dec 2020 01:37:06 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 2738A68AA25; Thu, 31 Dec 2020 01:33:14 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f45.google.com (mail-ej1-f45.google.com [209.85.218.45]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id D9B1F68AA7B for ; Thu, 31 Dec 2020 01:33:01 +0200 (EET) Received: by mail-ej1-f45.google.com with SMTP id b9so23749435ejy.0 for ; Wed, 30 Dec 2020 15:33:01 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=S0uujJkqm2dmmNgXvZj9ryUqHgNVv06Dv5I7MTl7M/c=; b=XmoQZPlTnmcmLrpayz1MfN8+6pElD86KNG0fkpNJJEsCaC9pFQD9mxyQohfvCtFr+m iOT3/f8n9SR0w5Fck72ytqlBiPxNxo4IJzV7j7YpzPMNJOUr+CJZb0JdnMUorILu1o8y VnlJNtOjul1Oo1Qkg2DXuVuTOgT65zdVs1MRHSSN363E4MumLBN9Cqn57XgRP5h4as77 vLK9nPmPoetpgUZRphJWuNI5LL1w6fban4qWrNtHolGJLi5A9HqI4yHQWOe8MB8m2Fyz wGUvokPktUzde61XGww8wUjeBo1+orDSYjCXMfnG7qrCTTUiE3whTDnPfUSuCLk7ZWG2 Z7Ng== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=S0uujJkqm2dmmNgXvZj9ryUqHgNVv06Dv5I7MTl7M/c=; b=Sl1RYGvNECxRLjW1PnAQ94v5vZoEt/6iUvgWszJ/JSqwVReF9xG/w8BWuBjjoSW/Ta e/x9VWQpX+WcE+hGFAGL3McOgzmpeh7MrSe09FGZa2aKONb57ffBKVDI/142bQXVJIka Fns5tBDetwKapKam+U3QY4v0IPQYbfgb8I/0E7nZidKhlgiHixfBcWU2tO7j62AY+SvD ebC06HGissMMt6w/nALkcJC5u/o63pmWkW3FSAG/aObNQnqJJah47FC/WT0SgUQejccA KkHgzLI7LokBVETeGXNfg5ssGwPjkAikzjL9WKvX3ukTxwhmou0pIeO9xTcWlt2gVrkJ N4rQ== X-Gm-Message-State: AOAM530eqtECa4FWtJOOsvDLIkSSnYbeNFQAGCRmmIJNXERYOezhSc// 7KyHv+cio/ir2MO8AwLywnhxZkdvmJ0= X-Google-Smtp-Source: ABdhPJwUkzKGyjXsal7zJ9g1Bi5ZpeVvPdxyKZA8CptClymQt+xTYBCCg8v0Ewds5S1/5rqV9ThlVw== X-Received: by 2002:a17:906:1a4e:: with SMTP id j14mr50913461ejf.507.1609371181181; Wed, 30 Dec 2020 15:33:01 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id u19sm19630409ejg.16.2020.12.30.15.33.00 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Dec 2020 15:33:00 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 31 Dec 2020 00:31:56 +0100 Message-Id: <20201230233157.1055287-29-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> References: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 29/30] avcodec/svq1dec: Increment nb_bits of VLC to read it in one go X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" Signed-off-by: Andreas Rheinhardt --- libavcodec/svq1dec.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libavcodec/svq1dec.c b/libavcodec/svq1dec.c index 7aea138060..e9c068de19 100644 --- a/libavcodec/svq1dec.c +++ b/libavcodec/svq1dec.c @@ -456,7 +456,7 @@ static int svq1_decode_delta_block(AVCodecContext *avctx, HpelDSPContext *hdsp, int result = 0; /* get block type */ - block_type = get_vlc2(bitbuf, svq1_block_type.table, 2, 2); + block_type = get_vlc2(bitbuf, svq1_block_type.table, 3, 1); /* reset motion vectors */ if (block_type == SVQ1_BLOCK_SKIP || block_type == SVQ1_BLOCK_INTRA) { @@ -765,9 +765,9 @@ err: static av_cold void svq1_static_init(void) { - INIT_VLC_STATIC(&svq1_block_type, 2, 4, + INIT_VLC_STATIC(&svq1_block_type, 3, 4, &ff_svq1_block_type_vlc[0][1], 2, 1, - &ff_svq1_block_type_vlc[0][0], 2, 1, 6); + &ff_svq1_block_type_vlc[0][0], 2, 1, 8); INIT_VLC_STATIC(&svq1_motion_component, 7, 33, &ff_mvtab[0][1], 2, 1, From patchwork Wed Dec 30 23:31:57 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 24722 Return-Path: X-Original-To: patchwork@ffaux-bg.ffmpeg.org Delivered-To: patchwork@ffaux-bg.ffmpeg.org Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by ffaux.localdomain (Postfix) with ESMTP id CD2D844BAAA for ; Thu, 31 Dec 2020 01:37:15 +0200 (EET) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 16C2E68A8F5; Thu, 31 Dec 2020 01:33:15 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-ej1-f44.google.com (mail-ej1-f44.google.com [209.85.218.44]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id AF0F768A807 for ; Thu, 31 Dec 2020 01:33:02 +0200 (EET) Received: by mail-ej1-f44.google.com with SMTP id b9so23749460ejy.0 for ; Wed, 30 Dec 2020 15:33:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:cc:subject:date:message-id:in-reply-to:references:reply-to :mime-version:content-transfer-encoding; bh=1KLuii1QVLUFHjGyEkjmYy+nmO4cAHzVauILrSFCYuY=; b=dw7hiEhB+fTVdSGGWcMPG7eEtNCpOSXcfvtswysCB+Iw6EMgXW3QRk23eQ0tHrV91S CsO8ZextcNz0USyZafp99uUhib2hxlJVcnaTkNvE/ZEiR6J5oKXUBm9f4rqb46OP/RYI 5t7tDOrAh3SBIwxIuoAQz/mWi9Da46OMQZIvdiU4QbQXBIprxfcHXRLRVMFO3tY07uty pJArZEr0cL2gzM1rluFmQqcq3sjONwVGAIsTkGbIz58QPf4lTf2/3brMLTpfDzHcPioB xK43B2Bu6eEbsBSSbM1iROJapYB8eXAtmrL1NfllscJiU7eY3y7yvnSWh+rISuXWg9VO RSqg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:reply-to:mime-version:content-transfer-encoding; bh=1KLuii1QVLUFHjGyEkjmYy+nmO4cAHzVauILrSFCYuY=; b=nNfQfrmscEp6UxvSt3/6TdWPqsq8RRYLwa5CviuJIrmq6ogwsj2CqCSaw4Ukbv3/n1 tI+78aQpxjVBbcsnUhnunW6wvtTksyGKzF6wg03V4bbXnQTIEyMHNCf09+XRBgKOVXxV cw/B9dX/2ZKzy7T5pVRnYiEALm4BD6+qXMGPaoXm6c1KSuWMHPpxCN+s0/rud5NYI3Yz 5dRV9qVZ8yqM6LglOPvuk2TFrkh4G6gs4/+CXPHDW2oF8j/YIJuhIyDXxXuI3BGO3M02 Jn8/xXwcqwcpUVcAaccVeyi9GIHKPLtYhabVP12IyJVNXk5OW5SzmD82ksM+b3v4xzs9 MLRg== X-Gm-Message-State: AOAM531XE5ZKdFh+cUypvfKZprORM91fuvf0PG5b02/1fGY91o4h1vQh ucF/iRCUepPQEam20DI/MmgR88Zruh4= X-Google-Smtp-Source: ABdhPJxXzG3tkaC6QhGZ53KasTFDzpSdHhxX6U2YjPh/CdJ6iq7ao8ktC7ZDwH6Vt2z6Gj3vTumWJQ== X-Received: by 2002:a17:906:578e:: with SMTP id k14mr10121646ejq.90.1609371182102; Wed, 30 Dec 2020 15:33:02 -0800 (PST) Received: from sblaptop.fritz.box (ipbcc1aa4b.dynamic.kabel-deutschland.de. [188.193.170.75]) by smtp.gmail.com with ESMTPSA id u19sm19630409ejg.16.2020.12.30.15.33.01 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 30 Dec 2020 15:33:01 -0800 (PST) From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Thu, 31 Dec 2020 00:31:57 +0100 Message-Id: <20201230233157.1055287-30-andreas.rheinhardt@gmail.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> References: <20201230233157.1055287-1-andreas.rheinhardt@gmail.com> MIME-Version: 1.0 Subject: [FFmpeg-devel] [PATCH 30/30] avcodec/dvenc: Make encoder init-threadsafe X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 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" Signed-off-by: Andreas Rheinhardt --- The above depends upon ff_check_alignment() being removed first. libavcodec/dvenc.c | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/libavcodec/dvenc.c b/libavcodec/dvenc.c index 21a8b841f6..35b6f71e46 100644 --- a/libavcodec/dvenc.c +++ b/libavcodec/dvenc.c @@ -32,6 +32,7 @@ #include "libavutil/internal.h" #include "libavutil/opt.h" #include "libavutil/pixdesc.h" +#include "libavutil/thread.h" #include "avcodec.h" #include "dv.h" @@ -67,8 +68,6 @@ static av_cold int dvvideo_encode_init(AVCodecContext *avctx) return ret; } - dv_vlc_map_tableinit(); - memset(&fdsp,0, sizeof(fdsp)); memset(&mecc,0, sizeof(mecc)); memset(&pdsp,0, sizeof(pdsp)); @@ -83,6 +82,13 @@ static av_cold int dvvideo_encode_init(AVCodecContext *avctx) s->fdct[0] = fdsp.fdct; s->fdct[1] = fdsp.fdct248; +#if !CONFIG_HARDCODED_TABLES + { + static AVOnce init_static_once = AV_ONCE_INIT; + ff_thread_once(&init_static_once, dv_vlc_map_tableinit); + } +#endif + return ff_dvvideo_init(avctx); } @@ -1226,4 +1232,5 @@ AVCodec ff_dvvideo_encoder = { AV_PIX_FMT_YUV420P, AV_PIX_FMT_NONE }, .priv_class = &dvvideo_encode_class, + .caps_internal = FF_CODEC_CAP_INIT_THREADSAFE, };