From patchwork Mon May 6 12:14:33 2024 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Andreas Rheinhardt X-Patchwork-Id: 48583 Delivered-To: ffmpegpatchwork2@gmail.com Received: by 2002:a05:6a20:e68f:b0:1af:836d:81b3 with SMTP id mz15csp1335233pzb; Mon, 6 May 2024 05:16:11 -0700 (PDT) X-Forwarded-Encrypted: i=2; AJvYcCUy7kPu/0s3nT1vBzWLomPRel/WIRWO+WSr0WHnWnwUjEtyCHs4r/H6qCQMNZkDg6LmNrAPWZ7Du7+yDF3V4lFPjS0Z97CWJVoyFA== X-Google-Smtp-Source: AGHT+IGwH/oVLI73c188upoKRmvpR71NgEG8Sbnko+x6A+h2kwkjLcfOZZJxEjmvoQnWmjCCdTQs X-Received: by 2002:a17:907:da9:b0:a59:c944:de4 with SMTP id go41-20020a1709070da900b00a59c9440de4mr2842135ejc.2.1714997771427; Mon, 06 May 2024 05:16:11 -0700 (PDT) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id jx12-20020a170906ca4c00b00a59c33db750si1805259ejb.99.2024.05.06.05.16.10; Mon, 06 May 2024 05:16:11 -0700 (PDT) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@outlook.com header.s=selector1 header.b=CIObOsnU; arc=fail (body hash mismatch); spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=QUARANTINE dis=NONE) header.from=outlook.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id E899068D646; Mon, 6 May 2024 15:15:27 +0300 (EEST) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from EUR05-DB8-obe.outbound.protection.outlook.com (mail-db8eur05olkn2013.outbound.protection.outlook.com [40.92.89.13]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 0E5AF68D61B for ; Mon, 6 May 2024 15:15:25 +0300 (EEST) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=e3aSOmuP/zFkgb9lDBdrjmOMQxTCcM6lt+mNWTcQDD8ThUrnt2bXe/y77N2XXaCHh0RgIbhg4TWMDPX+MDPzsVQZl3UQUYJqgg5fj/r7VAOFfCSlOd/e477aAe7yreWIruT2qQLjRPpUoyPeYTeFWZiOFOaUPZohp64zPsLNos2cUgKzGBRO05VUDOfueE7CZHdeIHwGnuRdkdc/d7TaiAOdTaDpidpbzMQZC3b7NdiClHLT82Tz5LEsbMQWA/24M9bY5o1mLv+jdN618JuP+ZJljUK9dG64wyw41tN6Nt1f4l0402Ve5/jEvMiwWJZaTuwaUN9JV17aku4yejSmtw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector9901; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=sQd+rfftcdkq8K2kawP6EuY5C/sbLOX1gfNEGHCLKTM=; b=iaEL0tTPf0cH/pIhx3kMJpaBs0Us5sfWc6hQkcN30Py2YjNde7knvW0wp3EA/tzyunscr/5cNozNbNPAIuURWzU9vVCWQ1x34lqXEgBEuUJcF5osGHz1BB2ZOQGisCb+UthAsCTjK+koT26b8TLL239PxQkkS+WMZtionkRb5Elv4Y3adPN/DSHU2gMVW7t/Q9YrEIJ/WxC3gtHr50kMKZoXPQIfo3XHUtDCWJkb8sZKpLNL31Yx1JG44NME53pQf0s3JjpFtJT0Hnh5UAlMq9gtJK1DXZHjCAXCA4TgogUVEbtyHMI2dnCSy/Pv0XgRFhqsX9JKJTgP7JCFfbqyQA== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=none; dmarc=none; dkim=none; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=outlook.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=sQd+rfftcdkq8K2kawP6EuY5C/sbLOX1gfNEGHCLKTM=; b=CIObOsnU9ewc2div5McEXS5IGkhSF/rrJmTuJnLmitm3BLSb5lVH4vtN3ngwm58EdDR0QpSDAaxtbC4OUBGS9mSZvb/8/ChbxOHWRPEi/eEaaGcv61QFPAYeGRw4pYbePRLlSJyTrznShprsYPjhevfecvx+WvytME13qoKc1KO9kT6RgUYqEp+oTNoN5DuQMu2ks5GOfqcnZAr0W/fFFW3B77Fg5PkDg03SwP7wE6hnlKdD6ajAiNBt9uATQr3n9syUz/PbNR6xgJWLKfCK7TZnJxWfFf8dr4HTEOz44KciYQsfFhwQLf4Bo9xbqLjwERZoj1ybWGz8kONuANjPcg== Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) by DB9P250MB0497.EURP250.PROD.OUTLOOK.COM (2603:10a6:10:33d::12) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7544.39; Mon, 6 May 2024 12:15:22 +0000 Received: from GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614]) by GV1P250MB0737.EURP250.PROD.OUTLOOK.COM ([fe80::d6a1:e3af:a5f1:b614%7]) with mapi id 15.20.7544.029; Mon, 6 May 2024 12:15:22 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Mon, 6 May 2024 14:14:33 +0200 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [QgU4KrUO+KdOqPaOPcD76qNtakTPeuwRqxNScRpgWtY=] X-ClientProxiedBy: ZR2P278CA0069.CHEP278.PROD.OUTLOOK.COM (2603:10a6:910:52::15) To GV1P250MB0737.EURP250.PROD.OUTLOOK.COM (2603:10a6:150:8e::17) X-Microsoft-Original-Message-ID: <20240506121434.225228-8-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: GV1P250MB0737:EE_|DB9P250MB0497:EE_ X-MS-Office365-Filtering-Correlation-Id: 22c34d88-713d-45a4-dc13-08dc6dc633b6 X-Microsoft-Antispam: BCL:0; ARA:14566002|461199019|440099019|3412199016|1710799017; X-Microsoft-Antispam-Message-Info: lF6+qAPRepqjE9YydYJ7AGcAbJEAPO+IWZqCJoPXBDoGyA2KhZNjQGXvmxzdK6mzn9hzpZGeyqrvwzFzUsHJ83Pi0MgA4yMF5hEvnBuNJ3ZZgbs2lEjBy+dhAq6ye+x9zsyLQvteAS9rB2Y7yuibGIOi70Qcj/gTQx8nqp6PS73DukiHzP8vp7xtjoiXO4AuaQpKVDUvLou2Isb8FEMUa/SmswkNrTY6Ep5OowJy5gQ12Lu58KXpeb8vpy+GI5kMUFxYJmUcN3yZsCsZYcjKUuC53LnU33iOsStT25PFCqEtPYLT75ygD6ZEc3PGon18o+DmfrQePqwxCTqXWHSmFxd86WJU+lw7GDfMd1Qe3pRjo9PT6T5aOkqsuxXNcHqViHg6KPQarzbkp33+gQKtaM26j8qhqGp613tc39cnGo8gurfccTMgE/rRILCUClW64JkR0k94XhzeqOxyGa0zzMZvahlMNquGvmkpOpB954jsysvqdjmpRHDWaWbaW4++drOGRer3wR8O5paSaE8jWKFhyo4tOueRM0K7yU7kyPRa3VmWQj+TYO/okk+hL4ZeA461LjO6OhsfyBQSgd4L8YqbjtostKZ3xgG3WXt1SioKIwnVWKS8BOQFtkl1BT3r X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: edFsaM/kHVv3hAIZVNuq7r0CFNYkwVIYcMTLqXJS80XseV1xqME9iYDzfIChq0/9EKC2dLHfppiOmEkxfA3xQDWrLpUrX6TU3yqO31Wh5kLi8jQCWPJtU+SkaMWwNkuI9VpHIyRAXXbm3xjXzAq0v4+asFoNJ9heTENFDcRyQ8MVd2u9SZ+PUiDzlMo6zh5vernKL9uHxH0JzaYy6F+hhxV6Se54JcAL6+jcoY2s6wh64GD65a63P0OC8Vw9FQ7lWrqNt3UIk5g6pYNA3cZF9lIuei8yhjZ8Zi4ElwnhEt1Dy9+OhZ4LDap5aqgo575xCtjFKlWQ1UeCpcdZDEnRnCOoKPBXT7xlnu5gzdiah3fM7dI+vxUwoo3/MAk3rm9kjtsKjDL44T7FjI6k/vRmzyLdcqnEu5HKUd8ECKKvAw9j2SYOy59i83dNkjFyWZli3QIpb30wMnmY5hBWpqHCy4ANvNFFDXGL/3w0A5NE87WdTI1gCFeJThSZE+6hAeU2b5sZ5tkfbt6C0TZKKqokIs2SS21OBUdmdSFsxUglfEJtbWd1J4T9k5gLxQMbe0eDHLJ33kf688AC2SlRArw3tnHkgQHGVJ8qMvIEcbpOngiiTmgMsTpvBQvD5hWWP/7DA8EIeJslL/ZgQzdbXuDp/tujDL4qsMEBCon+vLOBs3Ir1MQC/Yuwc9fz6rbiSG0YttHx8XBS+iDQWCgf1Wzuso/xrekz0CCJVnXYeLy8Un2PojxqdQhWxWAt5fv2C2uCczgw6hzPFdeVIrpmy33jO274+nzVUJaWaaJI3CoHk8ZWk6xeiapUwrh//qQxh24ec69CfSa6GiihHaCGFrSDxfYVxpGLcuSIM13NrKsXuMIqDG5rwNIeE5UDxbkflWxGFnJEClyDva8/lrnvJHqM2c2pZz68/d9x1ftLynCE5ESo/dSnVwNuuHLpVgfbRQtgMrGMklEg3LS1tUjCbHtzsyKnuoMH1iTxGM3OSKalyHWNItl2CoMj1JKUh1H3/WoJomfsaRtSSSyFmGBZ+aUO8PRGUgNMje/CwPIi5VgXbkVbIgXiQ3JwrpbzWJVKHurhgD/uHspiGUyNqIL/5ZQGrBpyHgUa0dqG2IZYe/f1X4aOTqMYfFLOjEeTb9TwwFriOmkEOW97l/0NN/l1uu5JCFcD3my/IUgBU/CTrwBGuWHAzTEZPd9zkdFsSej5VoSN/61yDnbMC+MU4TN0TK6JyyAJ0RV6J+NoZ0IQ6+dBK1+1LZCfURTdBVNITLw56m6mjGBX5OA7OiEBG4PY4pvyGQ== X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 22c34d88-713d-45a4-dc13-08dc6dc633b6 X-MS-Exchange-CrossTenant-AuthSource: GV1P250MB0737.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 06 May 2024 12:15:22.1419 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 84df9e7f-e9f6-40af-b435-aaaaaaaaaaaa X-MS-Exchange-CrossTenant-RMS-PersistedConsumerOrg: 00000000-0000-0000-0000-000000000000 X-MS-Exchange-Transport-CrossTenantHeadersStamped: DB9P250MB0497 Subject: [FFmpeg-devel] [PATCH 11/12] avcodec/aac/aacdec: Move init functions to aacdec_fixed/float X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches Cc: Andreas Rheinhardt Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" X-TUID: MLcyaA4PjSXX This allows to merge it with AACDecDSP.init and remove the latter (it is called only once anyway); it also allows to make the fixed/float AACDecDSP and AACDecProc implementations internal to aacdec_fixed/float.c (which also fixes a violation of our naming conventions). And it avoids a -Wunused-function warning when either decoder is disabled. Signed-off-by: Andreas Rheinhardt --- One could also move the FFCodecs, too. This would necessitate using external linkage for several decode_frame-related functions as well as flush and close; but it would allow to make the fixed/float init function static. libavcodec/aac/aacdec.c | 31 ++++---------------------- libavcodec/aac/aacdec.h | 11 +++------ libavcodec/aac/aacdec_dsp_template.c | 4 +--- libavcodec/aac/aacdec_fixed.c | 32 +++++++++++++++++---------- libavcodec/aac/aacdec_float.c | 32 +++++++++++++++++---------- libavcodec/aac/aacdec_latm.h | 2 +- libavcodec/aac/aacdec_proc_template.c | 2 +- 7 files changed, 50 insertions(+), 64 deletions(-) diff --git a/libavcodec/aac/aacdec.c b/libavcodec/aac/aacdec.c index cd80dd1d7a..dc81df174c 100644 --- a/libavcodec/aac/aacdec.c +++ b/libavcodec/aac/aacdec.c @@ -1181,13 +1181,10 @@ static av_cold int init_dsp(AVCodecContext *avctx) if (ret < 0) return ret; - ac->dsp = FIXED_OR_FLOAT(is_fixed, aac_dsp, ); - ac->proc = FIXED_OR_FLOAT(is_fixed, aac_proc, ); - - return ac->dsp.init(ac); + return 0; } -static av_cold int aac_decode_init_internal(AVCodecContext *avctx) +av_cold int ff_aac_decode_init(AVCodecContext *avctx) { AACDecContext *ac = avctx->priv_data; int ret; @@ -1246,26 +1243,6 @@ static av_cold int aac_decode_init_internal(AVCodecContext *avctx) return init_dsp(avctx); } -static av_cold int aac_decode_init(AVCodecContext *avctx) -{ - AACDecContext *ac = avctx->priv_data; - - ac->is_fixed = 0; - avctx->sample_fmt = AV_SAMPLE_FMT_FLTP; - - return aac_decode_init_internal(avctx); -} - -static av_cold int aac_decode_init_fixed(AVCodecContext *avctx) -{ - AACDecContext *ac = avctx->priv_data; - - ac->is_fixed = 1; - avctx->sample_fmt = AV_SAMPLE_FMT_S32P; - - return aac_decode_init_internal(avctx); -} - /** * Skip data_stream_element; reference: table 4.10. */ @@ -2555,7 +2532,7 @@ const FFCodec ff_aac_decoder = { .p.id = AV_CODEC_ID_AAC, .p.priv_class = &decoder_class, .priv_data_size = sizeof(AACDecContext), - .init = aac_decode_init, + .init = ff_aac_decode_init_float, .close = decode_close, FF_CODEC_DECODE_CB(aac_decode_frame), .p.sample_fmts = (const enum AVSampleFormat[]) { @@ -2577,7 +2554,7 @@ const FFCodec ff_aac_fixed_decoder = { .p.id = AV_CODEC_ID_AAC, .p.priv_class = &decoder_class, .priv_data_size = sizeof(AACDecContext), - .init = aac_decode_init_fixed, + .init = ff_aac_decode_init_fixed, .close = decode_close, FF_CODEC_DECODE_CB(aac_decode_frame), .p.sample_fmts = (const enum AVSampleFormat[]) { diff --git a/libavcodec/aac/aacdec.h b/libavcodec/aac/aacdec.h index 4cf764e2e9..775c007aeb 100644 --- a/libavcodec/aac/aacdec.h +++ b/libavcodec/aac/aacdec.h @@ -216,8 +216,6 @@ typedef struct AACDecProc { * DSP-specific primitives */ typedef struct AACDecDSP { - int (*init)(AACDecContext *ac); - void (*dequant_scalefactors)(SingleChannelElement *sce); void (*apply_mid_side_stereo)(AACDecContext *ac, ChannelElement *cpe); @@ -339,12 +337,9 @@ struct AACDecContext { #define fdsp RENAME_FIXED(fdsp) #endif -extern const AACDecDSP aac_dsp; -extern const AACDecDSP aac_dsp_fixed; - -extern const AACDecProc aac_proc; -extern const AACDecProc aac_proc_fixed; - +int ff_aac_decode_init(struct AVCodecContext *avctx); +int ff_aac_decode_init_float(struct AVCodecContext *avctx); +int ff_aac_decode_init_fixed(struct AVCodecContext *avctx); int ff_aac_decode_ics(AACDecContext *ac, SingleChannelElement *sce, GetBitContext *gb, int common_window, int scale_flag); diff --git a/libavcodec/aac/aacdec_dsp_template.c b/libavcodec/aac/aacdec_dsp_template.c index a42b40f674..70f0a3cce6 100644 --- a/libavcodec/aac/aacdec_dsp_template.c +++ b/libavcodec/aac/aacdec_dsp_template.c @@ -615,9 +615,7 @@ static void AAC_RENAME(apply_prediction)(AACDecContext *ac, SingleChannelElement reset_all_predictors(sce->AAC_RENAME(predictor_state)); } -const AACDecDSP AAC_RENAME(aac_dsp) = { - .init = &AAC_RENAME(init), - +static const AACDecDSP AAC_RENAME(aac_dsp) = { .dequant_scalefactors = &AAC_RENAME(dequant_scalefactors), .apply_mid_side_stereo = &AAC_RENAME(apply_mid_side_stereo), .apply_intensity_stereo = &AAC_RENAME(apply_intensity_stereo), diff --git a/libavcodec/aac/aacdec_fixed.c b/libavcodec/aac/aacdec_fixed.c index 083f3b073e..79d35e05fb 100644 --- a/libavcodec/aac/aacdec_fixed.c +++ b/libavcodec/aac/aacdec_fixed.c @@ -63,18 +63,6 @@ static void init_tables_fixed_fn(void) init_sine_windows_fixed(); } -static int init_fixed(AACDecContext *ac) -{ - static AVOnce init_fixed_once = AV_ONCE_INIT; - ff_thread_once(&init_fixed_once, init_tables_fixed_fn); - - ac->fdsp = avpriv_alloc_fixed_dsp(ac->avctx->flags & AV_CODEC_FLAG_BITEXACT); - if (!ac->fdsp) - return AVERROR(ENOMEM); - - return 0; -} - static const int cce_scale_fixed[8] = { Q30(1.0), //2^(0/8) Q30(1.0905077327), //2^(1/8) @@ -93,3 +81,23 @@ static const int cce_scale_fixed[8] = { #include "aacdec_fixed_prediction.h" #include "aacdec_dsp_template.c" #include "aacdec_proc_template.c" + +av_cold int ff_aac_decode_init_fixed(AVCodecContext *avctx) +{ + static AVOnce init_fixed_once = AV_ONCE_INIT; + AACDecContext *ac = avctx->priv_data; + + ac->is_fixed = 1; + avctx->sample_fmt = AV_SAMPLE_FMT_S32P; + + ac->dsp = aac_dsp_fixed; + ac->proc = aac_proc_fixed; + + ac->fdsp = avpriv_alloc_fixed_dsp(avctx->flags & AV_CODEC_FLAG_BITEXACT); + if (!ac->fdsp) + return AVERROR(ENOMEM); + + ff_thread_once(&init_fixed_once, init_tables_fixed_fn); + + return ff_aac_decode_init(avctx); +} diff --git a/libavcodec/aac/aacdec_float.c b/libavcodec/aac/aacdec_float.c index 5efc0c1e54..d48a21eef2 100644 --- a/libavcodec/aac/aacdec_float.c +++ b/libavcodec/aac/aacdec_float.c @@ -68,18 +68,6 @@ static void init_tables_float_fn(void) ff_aac_float_common_init(); } -static int init(AACDecContext *ac) -{ - static AVOnce init_float_once = AV_ONCE_INIT; - ff_thread_once(&init_float_once, init_tables_float_fn); - - ac->fdsp = avpriv_float_dsp_alloc(ac->avctx->flags & AV_CODEC_FLAG_BITEXACT); - if (!ac->fdsp) - return AVERROR(ENOMEM); - - return 0; -} - static const float cce_scale[] = { 1.09050773266525765921, //2^(1/8) 1.18920711500272106672, //2^(1/4) @@ -163,3 +151,23 @@ static inline float *VMUL4S(float *dst, const float *v, unsigned idx, #include "aacdec_float_prediction.h" #include "aacdec_dsp_template.c" #include "aacdec_proc_template.c" + +av_cold int ff_aac_decode_init_float(AVCodecContext *avctx) +{ + static AVOnce init_float_once = AV_ONCE_INIT; + AACDecContext *ac = avctx->priv_data; + + ac->is_fixed = 0; + avctx->sample_fmt = AV_SAMPLE_FMT_FLTP; + + ac->dsp = aac_dsp; + ac->proc = aac_proc; + + ac->fdsp = avpriv_float_dsp_alloc(avctx->flags & AV_CODEC_FLAG_BITEXACT); + if (!ac->fdsp) + return AVERROR(ENOMEM); + + ff_thread_once(&init_float_once, init_tables_float_fn); + + return ff_aac_decode_init(avctx); +} diff --git a/libavcodec/aac/aacdec_latm.h b/libavcodec/aac/aacdec_latm.h index 22153dec83..e40a2fe1a7 100644 --- a/libavcodec/aac/aacdec_latm.h +++ b/libavcodec/aac/aacdec_latm.h @@ -315,7 +315,7 @@ static int latm_decode_frame(AVCodecContext *avctx, AVFrame *out, static av_cold int latm_decode_init(AVCodecContext *avctx) { struct LATMContext *latmctx = avctx->priv_data; - int ret = aac_decode_init(avctx); + int ret = ff_aac_decode_init_float(avctx); if (avctx->extradata_size > 0) latmctx->initialized = !ret; diff --git a/libavcodec/aac/aacdec_proc_template.c b/libavcodec/aac/aacdec_proc_template.c index 319bf61993..1ffea2f93b 100644 --- a/libavcodec/aac/aacdec_proc_template.c +++ b/libavcodec/aac/aacdec_proc_template.c @@ -433,7 +433,7 @@ static int AAC_RENAME(decode_cce)(AACDecContext *ac, GetBitContext *gb, ChannelE return 0; } -const AACDecProc AAC_RENAME(aac_proc) = { +static const AACDecProc AAC_RENAME(aac_proc) = { .decode_spectrum_and_dequant = AAC_RENAME(decode_spectrum_and_dequant), .decode_cce = AAC_RENAME(decode_cce), };