From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org [79.124.17.100]) by master.gitmailbox.com (Postfix) with ESMTP id EA28C466FA for ; Fri, 1 Mar 2024 03:06:56 +0000 (UTC) Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 67C2C68D251; Fri, 1 Mar 2024 05:06:53 +0200 (EET) Received: from EUR02-DB5-obe.outbound.protection.outlook.com (mail-db5eur02olkn2051.outbound.protection.outlook.com [40.92.50.51]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id 7085B68D15D for ; Fri, 1 Mar 2024 05:06:47 +0200 (EET) ARC-Seal: i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none; b=ocUgQVSLSEOmWv83IJLteEdIm9s+6V19VMOuqNVLp/YBaHOZan+ptbdTck5jxwzr6pL1RCboNdEAbnD+YkIKsD5nkw8cMygm43ZocFjP29IA/UowuNnXOYu/KY/m21k2/EOVPkDrojkjrs82aqtzzC48e3Av9O5xF14zFx+ZnqpRdOJFhNrdZsrklqvB6aZNnuuOgpruOx3YhU/nDKV/tdrp7nYN0iEw9XewdMg8aALv4hZPfiGj6xUEZgAy8FM7+EIg1thYtYNPpI9kYT9jWlNyGcCUg8k6oihZi1L+fu1N0/JZ4zpxJGfg8M1hdZlb1WUKptM+Tv5P8SJ2VOLXGg== 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=1nALX64P+1fmuvYJ7JczEGURRbDB5BbN0xxq6HNYN5M=; b=ZYt2t2b4/M317k5lQyEeeybNRwJaWAfOCv8wyR2faRvzYAUfL2TZQC7UmhRDMEy2ga4cs37U+K6zauhkjGWmWD3GAyDIe4MMIDmubgd5FMHblRdbcXA6pm4hLDudhQdy3jhPaWE4sWqG8fTgv2K7Md9wReNUIWYNE1XZKzPKMI/ncIUzLaxXCLPOPa/Pvhl743aQfs6QHAZpj2Lk+0TSv9s2HU1e0n8TMYqUovRbEEuWNn0OZo/kJj14oghUzCgAz6XYT27nuTWDqqZaU2Ts1phUUFlsbXlYDFQPLoYYqgA/TY4qJ2Qnz39vs2puk4e+Ss90JGzf2bLs9o7bcFyCsQ== 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=1nALX64P+1fmuvYJ7JczEGURRbDB5BbN0xxq6HNYN5M=; b=mjzbPM8nn0uY5IkIcJkoh8BtiSfq83G7+sLOvgokpaq89b1MNlZwMT5D43LxsrcGsSFTaWiYdpBmBWJ0R9hQzpeSYVuSL3JIFh774sVwxuY2FvNqK7s9miEj3KmOF0gyzVJZ5M3z8wKph9IWzJrrnhCQu/U9HOE4MIVpWFRs/vHHGAwvc+8/hwWe9fjaBNL7hONmhZZD4559g1xzYsqp9kboINaPfW+TkKibrYBe/3A7cjjL8iWIIpZ3yyTE71/EF7oMHIrjMT+4sWgtvQwXsZ46+4UiOcMt6fmvOW+354LhH1NntVItyTwpdmK/TCtBek9zDF5WRbkCLVOBWfgfrA== Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) by PR3P250MB0150.EURP250.PROD.OUTLOOK.COM (2603:10a6:102:175::7) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.7316.39; Fri, 1 Mar 2024 03:06:45 +0000 Received: from AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d]) by AS8P250MB0744.EURP250.PROD.OUTLOOK.COM ([fe80::65aa:deb0:a18e:d48d%5]) with mapi id 15.20.7316.023; Fri, 1 Mar 2024 03:06:45 +0000 From: Andreas Rheinhardt To: ffmpeg-devel@ffmpeg.org Date: Fri, 1 Mar 2024 04:08:33 +0100 Message-ID: X-Mailer: git-send-email 2.40.1 In-Reply-To: References: X-TMN: [6TrusxU/Q3LlZE/eqZVgRBVcnDcyUF7P2FloJ5JpzWM=] X-ClientProxiedBy: FR0P281CA0108.DEUP281.PROD.OUTLOOK.COM (2603:10a6:d10:a8::8) To AS8P250MB0744.EURP250.PROD.OUTLOOK.COM (2603:10a6:20b:541::14) X-Microsoft-Original-Message-ID: <20240301030835.3006751-1-andreas.rheinhardt@outlook.com> MIME-Version: 1.0 X-MS-Exchange-MessageSentRepresentingType: 1 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: AS8P250MB0744:EE_|PR3P250MB0150:EE_ X-MS-Office365-Filtering-Correlation-Id: 3aefbfa6-acda-492f-7b95-08dc399ca0c1 X-Microsoft-Antispam: BCL:0; X-Microsoft-Antispam-Message-Info: u6aiVKMQHoNiW0v9VtHmSQDpJ7kaC8T+XY2pHZYlB4YkJ2e0FjRO0AFdWGnNsz8Jal/akD9qr6cRxxeMqCGlcO6aKJeZHVHq29GJfBKcbhDy7MUaMYoNDWfuNx+usUFAVeSekTHU4dNjKvoRlDRckiJctPsg25UhuVIVl5VHsTxVlXOP16LEnKxPsJ3FJ32PYqTSFOCK7MdzmsmunBZjuunilHltPQ5YEDvSho3tEa74QuELqaBi4DNJqyEqq2pVMN8jLIAz/xEdhy65m2z3aoYOQbKUjYMc8tF/7DVV5wS9UsjKBs00XV8uCKX7ZjgSJt6wKnLSVv1LxMGMEk3PExCOYFXK2Vls9z19u4TmgNi/CDgf7HQ//csn4LFR7RiQ6pm99XIUGuavFNM+zYC89A9PWnrt/fBnXcNuwTY9bKwTNU7OK0ezmliE4qnUoecsrGm2iy6JerkN5xhtNatSSmB36Dj+9tkfCCsnYpgfN9083kBGKCX9S/qsoxkLXIYpFSS15u/oZduWNT++BHU2X2wm6w1q/9oIa1HmdPPIbCWEo+ACNrBI24BE9E4g85KUP1DiH4xtE8c9GeMrQaW7vCpaumMAst06bL7I1Bv70jJyZ9S6joN5tOQNEja55R9E X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: =?us-ascii?Q?oiHC+zh65ZXBhntsUNjle7Jntz3x+7WDIX56LrV7HT7WHOnw/BiRjZMWekVD?= =?us-ascii?Q?ffe1Fnvf1PdDAhL+1lQEnI2QYiqKhFHLrlUre0eXfJnkKSFvwyT93g1hpZuz?= =?us-ascii?Q?iCUc+m3XRSnIkkgVqpxcxU+C2lZ4V2CLHKa9lr6ZlM6ptNAPFlCvj9jBHw6a?= =?us-ascii?Q?mJlvXNJAPSlsZykw8Qtxkg/e66EYCsxwre+V4ur9i2rG8mwgK9SLufLPhVr1?= =?us-ascii?Q?FRpDmHMC6tbINSSFz5yUN0DLmOLfUkRTCoolJ/GaaUL2MlBSedLXHPKsMUjd?= =?us-ascii?Q?x0y32OfMcXt4/QO8AIEMFDT+fAJSU5TLbFieUDm8EAh0cJmOn/N6aXYBmAFr?= =?us-ascii?Q?R4zQTuC3Gj6UFMhbsp66hSjFGWaw9qJ7lsNLFpfeNzZk9qNV3JxZHtz+MJHl?= =?us-ascii?Q?FeRiOXUlhTnD+2EN+SEVFjpC0+U/F6ZsP3CgJiJCx3yFLJYP4A3kI7gJAHkW?= =?us-ascii?Q?VIAanbq5GapHYkTV3qmUmkUQHzvqxhfBX1FOMv36VgQMlzyTFN2/LzX67JUv?= =?us-ascii?Q?rLrDEnf/Ep6B0g4uE6hJ5xXT0Gpz5MlQnc9vgyoNSOlpBx0Rxbtb5jOUo6kM?= =?us-ascii?Q?JV9xQEYgnnWyh8VStdazTuW5u+uxXtCJaFxoGs+p1anFogDUrdsP2e3t9o5k?= =?us-ascii?Q?7TtwFfuYv8LYgtKBMtZDEo2lFuW8/gug3N5h3xqsgEg2zCRd4F9u8BGwy+XG?= =?us-ascii?Q?QuKnasUQZ2o/uHeN3TyRb64z56pRYAqw0877Rflak73UAU9li8gEtwKUvjCe?= =?us-ascii?Q?NHqqpJoW8AMBkljdh/UCMNp7a64Vipc+ikzpFXlr0NZGi2AJNaSIRTJ5idFF?= =?us-ascii?Q?eLsAWU7eFyKGDj4Woj2vx2kQi8oH6VCWZ2Xs4ZeCacEngrAGajMnvf19ZDZ5?= =?us-ascii?Q?kW3qnNN7Bj6WE8xirQ7/fD9s4qC+tdUFLxw/1wGK0aMZcSI9eDC01cYzTnKZ?= =?us-ascii?Q?AtZNfgjbGD6AzQtEL2GRF820gF41M3dm8kqAVDjqRRlU490kzIpO6hfEqAlR?= =?us-ascii?Q?+sgY2H+b74BXaxwCtqaBdQKNpyy9CUAalAw3xy0r3RvjAaW3p26xCCaBL/Ar?= =?us-ascii?Q?8BUeJeAJyL8zkquvAkVJlsTQqd0kmnS8itmvV7FcUCKrYJEjUYkyET382Yey?= =?us-ascii?Q?ntYFMtNzgONtvhHe+S9cmmNBUmmIU5JpZ07b5rQ4iwdjVvkIMbgzJD9/9oQ4?= =?us-ascii?Q?NorxL5W3trKOxy6mS0k5zsH4bFaUwo3ZrTNbE1lL8LeqsVNac4sp9RfGjfUA?= =?us-ascii?Q?vm/tMbnFO70vldsEqisbbFatamzO1v5IDLMemIUlog=3D=3D?= X-OriginatorOrg: outlook.com X-MS-Exchange-CrossTenant-Network-Message-Id: 3aefbfa6-acda-492f-7b95-08dc399ca0c1 X-MS-Exchange-CrossTenant-AuthSource: AS8P250MB0744.EURP250.PROD.OUTLOOK.COM X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 01 Mar 2024 03:06:45.6230 (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: PR3P250MB0150 Subject: [FFmpeg-devel] [PATCH 2/4] avcodec/lpc: Split inline functions into a header of their own 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 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" Archived-At: List-Archive: List-Post: And move compute_ref_coefs() to its only user: lpc.c There is no overlap between the users of compute_lpc_coefs() and lpc proper. Signed-off-by: Andreas Rheinhardt --- libavcodec/aac_defines.h | 2 +- libavcodec/aacdec.c | 1 - libavcodec/aacdec_fixed.c | 1 - libavcodec/aacdec_template.c | 1 + libavcodec/aacenc_tns.c | 1 + libavcodec/cngenc.c | 1 + libavcodec/lpc.c | 31 ++++++++++ libavcodec/lpc.h | 106 ----------------------------------- libavcodec/lpc_functions.h | 100 +++++++++++++++++++++++++++++++++ libavcodec/ra288.c | 2 +- 10 files changed, 136 insertions(+), 110 deletions(-) create mode 100644 libavcodec/lpc_functions.h diff --git a/libavcodec/aac_defines.h b/libavcodec/aac_defines.h index 8765939731..a0c23c33ff 100644 --- a/libavcodec/aac_defines.h +++ b/libavcodec/aac_defines.h @@ -73,7 +73,7 @@ typedef int AAC_SIGNE; #define AAC_HALF_SUM(x, y) (((x) >> 1) + ((y) >> 1)) #ifdef LPC_USE_FIXED -#error aac_defines.h must be included before lpc.h for fixed point decoder +#error aac_defines.h must be included before lpc_functions.h for fixed point decoder #endif #define LPC_USE_FIXED 1 diff --git a/libavcodec/aacdec.c b/libavcodec/aacdec.c index b1bce7542b..fa2187b61a 100644 --- a/libavcodec/aacdec.c +++ b/libavcodec/aacdec.c @@ -40,7 +40,6 @@ #include "avcodec.h" #include "codec_internal.h" #include "get_bits.h" -#include "lpc.h" #include "kbdwin.h" #include "sinewin.h" diff --git a/libavcodec/aacdec_fixed.c b/libavcodec/aacdec_fixed.c index 08343bf157..2abe6acb6b 100644 --- a/libavcodec/aacdec_fixed.c +++ b/libavcodec/aacdec_fixed.c @@ -75,7 +75,6 @@ #include "aacdectab.h" #include "adts_header.h" #include "cbrt_data.h" -#include "lpc.h" #include "sbr.h" #include "aacsbr.h" #include "mpeg4audio.h" diff --git a/libavcodec/aacdec_template.c b/libavcodec/aacdec_template.c index fb3a954aad..6561abb14e 100644 --- a/libavcodec/aacdec_template.c +++ b/libavcodec/aacdec_template.c @@ -93,6 +93,7 @@ #include "libavutil/thread.h" #include "decode.h" #include "internal.h" +#include "lpc_functions.h" static int output_configure(AACDecContext *ac, uint8_t layout_map[MAX_ELEM_ID*4][3], int tags, diff --git a/libavcodec/aacenc_tns.c b/libavcodec/aacenc_tns.c index 8dc6dfcf62..b2418a0236 100644 --- a/libavcodec/aacenc_tns.c +++ b/libavcodec/aacenc_tns.c @@ -30,6 +30,7 @@ #include "aacenc_tns.h" #include "aactab.h" #include "aacenc_utils.h" +#include "lpc_functions.h" /* Could be set to 3 to save an additional bit at the cost of little quality */ #define TNS_Q_BITS 4 diff --git a/libavcodec/cngenc.c b/libavcodec/cngenc.c index 596d6f8c2a..15a410ea50 100644 --- a/libavcodec/cngenc.c +++ b/libavcodec/cngenc.c @@ -21,6 +21,7 @@ #include +#include "libavutil/avassert.h" #include "libavutil/common.h" #include "avcodec.h" #include "codec_internal.h" diff --git a/libavcodec/lpc.c b/libavcodec/lpc.c index 9e2fd0f128..53f5c3d379 100644 --- a/libavcodec/lpc.c +++ b/libavcodec/lpc.c @@ -25,8 +25,39 @@ #define LPC_USE_DOUBLE #include "lpc.h" +#include "lpc_functions.h" #include "libavutil/avassert.h" +/** + * Schur recursion. + * Produces reflection coefficients from autocorrelation data. + */ +static inline void compute_ref_coefs(const LPC_TYPE *autoc, int max_order, + LPC_TYPE *ref, LPC_TYPE *error) +{ + LPC_TYPE err; + LPC_TYPE gen0[MAX_LPC_ORDER], gen1[MAX_LPC_ORDER]; + + for (int i = 0; i < max_order; i++) + gen0[i] = gen1[i] = autoc[i + 1]; + + err = autoc[0]; + ref[0] = -gen1[0] / ((LPC_USE_FIXED || err) ? err : 1); + err += gen1[0] * ref[0]; + if (error) + error[0] = err; + for (int i = 1; i < max_order; i++) { + for (int j = 0; j < max_order - i; j++) { + gen1[j] = gen1[j + 1] + ref[i - 1] * gen0[j]; + gen0[j] = gen1[j + 1] * ref[i - 1] + gen0[j]; + } + ref[i] = -gen1[0] / ((LPC_USE_FIXED || err) ? err : 1); + err += gen1[0] * ref[i]; + if (error) + error[i] = err; + } +} + /** * Apply Welch window function to audio block diff --git a/libavcodec/lpc.h b/libavcodec/lpc.h index 907fab7508..6d62707a59 100644 --- a/libavcodec/lpc.h +++ b/libavcodec/lpc.h @@ -24,7 +24,6 @@ #include #include -#include "libavutil/avassert.h" #include "libavutil/lls.h" #define ORDER_METHOD_EST 0 @@ -116,109 +115,4 @@ void ff_lpc_init_x86(LPCContext *s); */ void ff_lpc_end(LPCContext *s); -#ifndef LPC_USE_FIXED -#define LPC_USE_FIXED 0 -#endif - -#if LPC_USE_FIXED -typedef int LPC_TYPE; -typedef unsigned LPC_TYPE_U; -#else -#ifndef LPC_SRA_R -#define LPC_SRA_R(x, y) (x) -#define LPC_MUL26(x, y) ((x) * (y)) -#define LPC_FIXR(x) ((float)(x)) -#endif - -#ifdef LPC_USE_DOUBLE -typedef double LPC_TYPE; -typedef double LPC_TYPE_U; -#else -typedef float LPC_TYPE; -typedef float LPC_TYPE_U; -#endif -#endif // USE_FIXED - -/** - * Schur recursion. - * Produces reflection coefficients from autocorrelation data. - */ -static inline void compute_ref_coefs(const LPC_TYPE *autoc, int max_order, - LPC_TYPE *ref, LPC_TYPE *error) -{ - int i, j; - LPC_TYPE err; - LPC_TYPE gen0[MAX_LPC_ORDER], gen1[MAX_LPC_ORDER]; - - for (i = 0; i < max_order; i++) - gen0[i] = gen1[i] = autoc[i + 1]; - - err = autoc[0]; - ref[0] = -gen1[0] / ((LPC_USE_FIXED || err) ? err : 1); - err += gen1[0] * ref[0]; - if (error) - error[0] = err; - for (i = 1; i < max_order; i++) { - for (j = 0; j < max_order - i; j++) { - gen1[j] = gen1[j + 1] + ref[i - 1] * gen0[j]; - gen0[j] = gen1[j + 1] * ref[i - 1] + gen0[j]; - } - ref[i] = -gen1[0] / ((LPC_USE_FIXED || err) ? err : 1); - err += gen1[0] * ref[i]; - if (error) - error[i] = err; - } -} - -/** - * Levinson-Durbin recursion. - * Produce LPC coefficients from autocorrelation data. - */ -static inline int compute_lpc_coefs(const LPC_TYPE *autoc, int max_order, - LPC_TYPE *lpc, int lpc_stride, int fail, - int normalize) -{ - int i, j; - LPC_TYPE err = 0; - LPC_TYPE *lpc_last = lpc; - - av_assert2(normalize || !fail); - - if (normalize) - err = *autoc++; - - if (fail && (autoc[max_order - 1] == 0 || err <= 0)) - return -1; - - for(i=0; i>1; j++) { - LPC_TYPE f = lpc_last[ j]; - LPC_TYPE b = lpc_last[i-1-j]; - lpc[ j] = f + (LPC_TYPE_U)LPC_MUL26(r, b); - lpc[i-1-j] = b + (LPC_TYPE_U)LPC_MUL26(r, f); - } - - if (fail && err < 0) - return -1; - - lpc_last = lpc; - lpc += lpc_stride; - } - - return 0; -} - #endif /* AVCODEC_LPC_H */ diff --git a/libavcodec/lpc_functions.h b/libavcodec/lpc_functions.h new file mode 100644 index 0000000000..57bcfab900 --- /dev/null +++ b/libavcodec/lpc_functions.h @@ -0,0 +1,100 @@ +/* + * LPC utility functions + * Copyright (c) 2006 Justin Ruggles + * + * 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_LPC_FUNCTIONS_H +#define AVCODEC_LPC_FUNCTIONS_H + +#include "libavutil/avassert.h" + +#ifndef LPC_USE_FIXED +#define LPC_USE_FIXED 0 +#endif + +#if LPC_USE_FIXED +typedef int LPC_TYPE; +typedef unsigned LPC_TYPE_U; +#else +#ifndef LPC_SRA_R +#define LPC_SRA_R(x, y) (x) +#define LPC_MUL26(x, y) ((x) * (y)) +#define LPC_FIXR(x) ((float)(x)) +#endif + +#ifdef LPC_USE_DOUBLE +typedef double LPC_TYPE; +typedef double LPC_TYPE_U; +#else +typedef float LPC_TYPE; +typedef float LPC_TYPE_U; +#endif +#endif // USE_FIXED + +/** + * Levinson-Durbin recursion. + * Produce LPC coefficients from autocorrelation data. + */ +static inline int compute_lpc_coefs(const LPC_TYPE *autoc, int max_order, + LPC_TYPE *lpc, int lpc_stride, int fail, + int normalize) +{ + LPC_TYPE err = 0; + LPC_TYPE *lpc_last = lpc; + + av_assert2(normalize || !fail); + + if (normalize) + err = *autoc++; + + if (fail && (autoc[max_order - 1] == 0 || err <= 0)) + return -1; + + for(int i = 0; i < max_order; i++) { + LPC_TYPE r = LPC_SRA_R(-autoc[i], 5); + + if (normalize) { + for(int j = 0; j < i; j++) + r -= lpc_last[j] * autoc[i-j-1]; + + if (err) + r /= err; + err *= LPC_FIXR(1.0) - (r * r); + } + + lpc[i] = r; + + for(int j = 0; j < (i + 1) >> 1; j++) { + LPC_TYPE f = lpc_last[ j]; + LPC_TYPE b = lpc_last[i-1-j]; + lpc[ j] = f + (LPC_TYPE_U)LPC_MUL26(r, b); + lpc[i-1-j] = b + (LPC_TYPE_U)LPC_MUL26(r, f); + } + + if (fail && err < 0) + return -1; + + lpc_last = lpc; + lpc += lpc_stride; + } + + return 0; +} + +#endif /* AVCODEC_LPC_FUNCTIONS_H */ diff --git a/libavcodec/ra288.c b/libavcodec/ra288.c index c8c20e4884..e4b14ef2a2 100644 --- a/libavcodec/ra288.c +++ b/libavcodec/ra288.c @@ -30,7 +30,7 @@ #include "codec_internal.h" #include "decode.h" #include "get_bits.h" -#include "lpc.h" +#include "lpc_functions.h" #include "ra288.h" #define MAX_BACKWARD_FILTER_ORDER 36 -- 2.40.1 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe".